Port Scan چیست؟ چند نوع پورت اسکن وجود دارد؟ چه ابزارهایی برای پورت اسکن وجود دارند؟ اگر بخواهیم بصورت خیلی عامیانه و کلی تعریفی داشته باشیم، باید بگوییم که Port Scanning فرآیند بررسی پورت های باز TCP یا UDP بر روی یک سیستم ریموت است. بخاطر داشته باشید که Port scanning در بسیاری از کشورها یک فرآیند غیر قانونی است و نباید در خارج از محیط آزمایشگاهی انجام شود. از جمله اخیر میتوان نتیجه گرفت که الان زمان انتقال فعالیت هایمان از فاز پسیو به اکتیو است که شامل فعالیت های مستقیم بیشتری بر روی سرورهای هدف میشود. قبل از شروع کار بسیار مهم است که چگونگی انجام port Scanning را درک کرده باشیم.
ساده ترین تکنیک اسکن کردن پورت های TCP، به connect scanning معروف است که برپایه مکانیسم three-way handshaking کار میکند. بر طبق این مکانیسم، دو طرف ارتباط میتوانند قبل از انتقال دیتا، با یکدیگر مذاکره کنند. در Connect port scanning بر روی پورت خاصی از سیستم هدف، تلاش برای اجرای فرآیند کامل three-way handshaking صورت میپذیرد. اگر فرآیند مذکور بطور کامل اجرا شود، میتوان نتیجه گرفت که پورت مورد نظر باز میباشد.
root@kali:~# nc –nvv –w 1 –z 10.0.0.19 3388-3390 (unknown) [10.0.0.19] 3390 (?) : connection refused (unknown) [10.0.0.19] 3389 (?) open (unknown) [10.0.0.19] 3388 (?) : connection refused Sent 0, rcvd 0
مثال زیر نمونه ای کپچر شده از یک TCP Netcat port scan را بر روی پورت های 3388 تا 3390 نشان میدهد:
فرآیند SYN Scanning یک روش اسکن پورت های TCP است که شامل ارسال پکت های SYN به پورت های مختلف سیستم هدف بدون الزام به تکمیل مکانیسم 3-way handshaking است. اگر یک پورت TCP باز باشد، سیستم هدف باید یک SYN-ACK را به مبداء ارسال کند که به ما این اطلاع را میدهد که پورت باز است؛ بنابراین دیگر نیازی به ارسال ACK نهایی به سمت سیستم هدف نمیباشد.
از آنجایی که نوع وضعیت ترافیک در UDP مشخص نیست و شامل فرآیند three-way handshaking نمیشود، مکانیسم پس زمینه در UDP Port Scanning میتواند متفاوت باشد. سعی کنید با استفاده از وایرشارک و توسط netcat فرایند UDP Scanning را بر روی یک سیستم ( سیستم تست) اجرا کنید تا نحوه کارکرد UDP Port Scan را بهتر متوجه شوید. تصویر زیر کپچری از وایرشارک را نشان میدهد که در آن با استفاده از netcat بر روی پورت های 160 تا 162 عمل UDP Port Scan را انجام دادهایم:
root@kali:~# nc –nv –u –z –w 1 10.0.0.19 160-162 (unknown) [10.0.0.19] 161 (snmp) open
Nmap یکی از نرم افزارهای اسکنر محبوب، همه کاره و قدرتمند در دنیای امروز است. این نرم افزار بیش از یک دهه است که از توسعه آن میگذرد و خصوصیات متعددی را در پشت ظاهر ساده خود دارد. در ادامه قصد داریم تا در این رابطه چند مثال را بیان کنیم تا پس آن در کار کردن با این نرم افزار احساس راحتی کنید!
اسکن پورت های TCP در Nmap، حدود 1000 پورت معروف را در سیستم مورد نظر شناسایی و اسکن میکند. قبل از آن که اقدام به اجرای اسکن کنیم، میخواهیم مقدار ترافیک ارسالی ناشی از یک اسکن ساده را مشاهده کنیم. برای این کار یکی از سیستم های لوکال را اسکن کرده و میزان ترافیک ارسالی به سیستم مورد نظر را با استفاده از "iptables" مانیتور خواهیم کرد.نکته:iptables یک برنامه در فضای خط فرمان (command line) است که در ساختاربندی و کانفیگ مجموعه قوانین فیلترینگ پکت در لینوکس 2.4.x و بعد از آن استفاده میشود. این برنامه جهت استفاده مدیران طرح ریزی شده است.
root@kali:~# iptables -I INPUT 1 –s 10.0.0.19 –j ACCEPT root@kali:~# iptables –I OUTPUT 1 –d 10.0.0.19 –j ACCEPT root@kali:~# iptables –Z root@kali:~# nmap –sT 10.0.0.19 Starting Nmap 6.25 (http://nmap.org) at 2015-05-20 06:36 EDT Nmap scan report for 10.0.0.19 Host is up (0.00048 s latency). Not shown: 986 closed ports PORT STATE SERVICE 21/tcp open ftp 23/tcp open telnet 25/tcp open smtp 135/tcp open msrpc 1*39/tcp open netbios-ssn 445/tcp open Microsoft-ds 515/tcp open printer 3389/tcp open ms-wbt-server 49152/tcp open unknown 49153/tcp open unknown 49154/tcp open unknown 49155/tcp open unknown 49156/tcp open unknown 49157/tcp open unknown MAC Address: 00:C:29:3B:C8:DE (VMware) Nmap done: 1 IP address (1 host up) scanned in 1.91 seconds root@kali:~# iptables -vn –L chain INPUT (policy ACCEPT 10 packets, 464 bytes) pkts bytes target prot opt in out source destination 1002 40400 ACCEPT all -- * * 10.0.0.19 0.0.0.0/0 0 0 ACCEPT all -- * * 10.0.0.19 0.0.0.0/0 Chain OUTPUT (policy ACCEPT 4 packets, 1052 bytes) Pkts bytes target prot opt in out source destination 1201 71796 ACCEPT all -- * * 0.0.0.0/0 10.0.0.19 root@kali:~#
این اسکن 1000 پورت فقط در قالب 72 کیلوبایت ترافیک انجام شده است. این در حالی است که یک پورت اسکن ساده تمام 65535 پورت موجود را جستحو و اسکن کرده و چیزی در حدود 4.5 مگابایت ترافیک تولید میکند. علاوه بر این با انجام این اسکن کامل دو پورت جدید از TCP را در نتایج مشاهده خواهیم کرد که در اسکن پیش فرض پورت های TCP به آن اشاره اغی نشده بود:
root@kali:~# iptables –Z root@kali:~# nmap –sT –p 1-65535 10.0.0.19 Starting Nmap 6.25 (http://nmap.org) at 2015-05-20 06:19 EDT Nmap scan report for 10.0.0.19 Host is up (0.00067 s latency). Not shown: 65519 closed ports PORT STATE SERVICE 21/tcp open ftp 23/tcp open telnet 25/tcp open smtp 135/tcp open msrpc 139/tcp open netbios-ssn 180/tcp open ris 445/tcp open Microsoft-ds 515/tcp open printer 3389/tcp open ms-wbt-server 25017/tcp open unknown 49152/tcp open unknown 49153/tcp open unknown 49154/tcp open unknown 49155/tcp open unknown 49156/tcp open unknown 49157/tcp open unknown MAC Address: 00:0C:29:3B:C8:DE (VMware) Nmap done: 1 IP address (1 Host up) scanned in 80.42 seconds root@kali:~# iptables -vn –L chain INPUT (policy ACCEPT 54 packets, 2412 bytes) pkts bytes target prot opt in out source destination 65540 2622K ACCEPT all -- * * 10.0.0.19 0.0.0.0/0 0 0 ACCEPT all -- * * 10.0.0.19 0.0.0.0/0 Chain OUTPUT (policy ACCEPT 12 packets, 3120 bytes) pkts bytes target prot opt in out source destination 76206 4572K ACCEPT all -- * * 0.0.0.0/0 10.0.0.19 root@kali:~#
نتایج بالا این مفهوم را میرسانند که یک اسکن کامل Nmap از یک شبکه کلاس C با 254 هاست، میتواند در نتیجه ارسال 1000 مگابایت ترافیک در شبکه است. در بهترین وضعیت، یک اسکن کامل از پورت های TCP و UDP از یک سیستم تنها میتواند اطلاعات تقریبا دقیقی از سرویس های شبکه ای در معرض خطر بما بدهد.
مثال بالا این ایده را نیز بما میدهد که اگر میخواهیم پورت ها و سرویس های باز بیشتری را با استفاده از یک اسکن کامل تر، جستجو کنیم، نیاز داریم تا با متعادل سازی عوامل محدود کننده انتقال ترافیک (مانند یک Uplink کند)، شرایط را برای نیل به این هدف هموار سازیم. این موضوع مخصوصا برای شبکه های بزرگتر مانند شبکه های کلاس B بیشتر خود را نشان خواهد داد. اما اگر در موقعیتی هستیم که امکان اجرای یک پورت اسکن کامل را بر روی شبکه نداریم، چکار میتوانیم انجام دهیم؟
از تصویر بالا میتوان متوجه شد که اسکن های UDP کاملا نسبت به اسکن های TCP متفاوت عمل میکنند. یک پکت خالی UDP به پورت خاصی میشود. اگر پورت UDP باز باشد، هیچ جوابیه ای از طرف سیستم هدف به مبداء ارسال نخواهد شد. در مقابل اگر پورت UDP بسته باشد، یک پکت ICMP با مضمون "port unreachable" از طرف شسشتم مقصد به سیستم مبداء ارسال خواهد شد.
کارشناس امنیت اطلاعات و ارتباطات
احسان امجدی ، مشاور امنیت اطلاعات و ارتباطات و تست نفوذ سنجی ، هکر کلاه سفید ، مدرس دوره های تخصصی امنیت اطلاعات و شبکه ، تخصص در حوزه های سرویس های مایکروسافت ، Routing و Switching ، مجازی سازی ، امنیت اطلاعات و تست نفوذ ، کشف جرائم رایانه ای و سیستم عامل لینوکس ، متخصص در حوزه SOC و ...
09 مرداد 1394 این مطلب را ارسال کرده