- چگونه یک ارتباط TCP برقرار میشود که بگوییم فلان پورت باز
است یا نه؟
برای اینکه تعیین کنیم که یک پورت روی یک سرور باز است یا
نه، معمولا باید یک TCP connect scan انجام دهیم. اول این را بگم که Port Scanning
انواع مختلف دارد که فعلا ما نوع TCP connect را مدنظر داریم. این نوع اسکن سه
مرحله دارد که به آن TCP"s 3-way handshakeمیگویند:
۱- اول کامپیوتر ما به سمت
سرور یک SYN packet میفرستد که به معنی درخواست اتصال است.
۲- اگر سرور این
درخواست را قبول کند، در مرحله دوم سرور به سمت ما یک SYN/ACK packet
میفرستد.
۳- در مرحله آخر کامپیوتر ما یک ACK packet به سمت سرور
میفرستد.
نوع دیگری از پورت اسکن TCP SYN scan نام دارد. با توجه به اینکه
معمولا اگر پورت اسکن به روش بالا (TCP connect scan) انجام دهیم، معمولا در سرور
این اتصال ذخیره خواهد شد و بعدا میتواند ما را ردیابی کنند، به جای آن میتوان از
TCP SYN scan استفاده کرد. در این نوع اسکن، مراحل ۱ و ۲ از بالا انجام میشود ولی
مرحله ۳ نه! اگر در مرحله ۲ به ما یک SYN/ACK برسد، آن پورت باز است و اگر یک
RST/ACK برسد، یعنی بسته است.
انواع دیگری از پورت اسکنینگ هم وجود دارد مثل
UDP scan, TCP Window scan, TCP ACK scan, TCP Null, TCP Xmas Tree, TCP FIN
Scan
- چگونه میتوان عمل Port scanning را انجام
داد؟
در تمام مطالبی که تا این مرحله گفتهام سعی کردهام که فقط از
ابزارهای موجود در ویندوز استفاده کنم و هیچ ابزار دیگری بهکار نبرم، اما در مبحث
پورت اسکنینگ چون هیچ ابزاری در ویندوز برای این کار نیست، بهناچار باید یک سری
برنامه را از اینترنت داونلود کنید. (توجه داشته باشید که فعلا حرفی از لینوکس
نزدهام و سعی میکنم فعلا هیچ بحثی را در مورد آن مطرح نکنم)
برای Port
Scanning میتوان از ابزارهای مختلفی استفاده کرد که اکثرا برای لینوکس طراحی
شدهاند، اما مهمترین پورت اسکنرها برای ویندوز عبارتند از:
۱- نرمافزار
NMapWin v1.3.0 :
نسخه گرافیکی و مخصوص ویندوز برای nmap است (nmap در لینوکس
استفاده میشود). nmap از کاملترین ابزارهایی است که هکرها استفاده میکنند که
علاوه بر توانایی انواع پورت اسکنینگها، میتواند کارهای بسیاری چون تشخیص
سیستمعامل سرور و ... را انجام دهد. این ابزار را بعدا توضیح خواهم داد ولی فعلا
برای کار ما بیش از حد کامله ;-)
۲- NetScanTools Pro 2000 :
این هم از
بهترینهاست ولی چون پولی است به جای داونلود باید در CD هایی که در بازار هست
پیدایش کنید.
۳- WinScan :
برای اسکن کردن TCP (ونه UDP) میتوانید از آن
استفاده کنید. من زیاد ازش خوشم نیومد.
۴- ipEye v1.2 :
من در این درس از
این نرمافزار استفاده خواهم کرد، برای داونلود آن میتوانید به سایت http://www.ntsecurity.nu/ مراجعه کنید. لازم است بگویم که این نرمافزار فقط در ویندوز ۲۰۰۰
و xp کار میکند و نیز در یک بار اجرا فقط یک ip را میتواند تست کند. ضمنا فقط TCP
را تست میکند.
- چگونه از ipEye برای پورت اسکنینگ
استفاده کنیم؟
با تایپ ipEye در command prompt این نتایج ظاهر
میشود:
ipEye 1.2 - (c) 2000-2001, Arne Vidstrom (arne.vidstrom@ntsecurity.nu)
- http://ntsecurity.nu/toolbox/ipeye/
Error: Too few parameters.
Usage:
ipEye <target IP> <scantype> -p <port> [optional parameters]
ipEye <target IP> <scantype> -p <from port> <to port>
[optional parameters]
<scantype> is one of the following:
-syn = SYN scan
-fin = FIN scan
-null = Null scan
-xmas = Xmas scan>br>
(note: FIN, Null and Xmas scans don"t work against Windows systems.
[optional parameters] are selected from the following:
-sip <source IP> = source IP for the scan
-sp <source port> = source port for the scan
-d <delay in ms> = delay between scanned ports in milliseconds
(default set to 750 ms)
ipeye 63.148.227.65 -syn -p 1 200دقت کنید که 63.148.227.65 عدد ip سازین، syn- یعنی SYN SCAN و p 1 200- یعنی تست از پورت ۱ تا ۲۰۰ باشد. البته پارامترهای دیگری را هم میشود ست کرد که فعلا به درد ما نمیخورد. با اجرای این دستور به نتایج زیر میرسیم:
ipEye 1.2 - (c) 2000-2001, Arne Vidstrom (arne.vidstrom@ntsecurity.nu)Closed یعنی کامپیوتر در آن طرف هست ولی به پورت گوش نمیدهد، Reject یعنی اینکه یک firewall هست که اجازه اتصال به آن پورت را نمیدهد، Drop یعنی اینکه یک firewall همهچیز را پس میزند و یا اصلا کامپیوتری اونور نیست، Open هم که یعنی باز.
- http://ntsecurity.nu/toolbox/ipeye/
1-20 [drop]
21 [open]
22 [closed or reject]
23-24 [drop]
25 [open]
26-52 [drop]
53 [open]
54-79 [drop]
80 [open]
81-109 [drop]
110 [open]
111-142 [drop]
143 [open]
144-200 [drop]
201-65535 [not scanned]
netstat -anفرق این دو دستور در این است که اولی پورتها را به صورت عددی و دومی به صورت معادل اسمی آن پورت مینویسد. مثلا معادل اسمی پورت 7 ، echo است.
netstat -a
Active Connectionsمن دستور را موقعی اجرا کردم که به اینترنت متصل نبودم. اگر همین کار را در زمان اتصال به اینترنت انجام میدادم، یک سری سطرهای جدید هم اضافه میشد که مربوط به آن اتصال میشد. و نیز دقت کنید که من سویچ an- را استفاده کردم و پورتها به صورت عددی نمایش داده شده است که همین الان - الساعه - براتون توضیح میدم:
Proto Local Address Foreign Address State
TCP 0.0.0.0:7 0.0.0.0:0 LISTENING
TCP 0.0.0.0:9 0.0.0.0:0 LISTENING
TCP 0.0.0.0:13 0.0.0.0:0 LISTENING
TCP 0.0.0.0:17 0.0.0.0:0 LISTENING
TCP 0.0.0.0:19 0.0.0.0:0 LISTENING
TCP 0.0.0.0:21 0.0.0.0:0 LISTENING
TCP 0.0.0.0:25 0.0.0.0:0 LISTENING
TCP 0.0.0.0:53 0.0.0.0:0 LISTENING
TCP 0.0.0.0:80 0.0.0.0:0 LISTENING
TCP 0.0.0.0:119 0.0.0.0:0 LISTENING
TCP 0.0.0.0:135 0.0.0.0:0 LISTENING
TCP 0.0.0.0:143 0.0.0.0:0 LISTENING
TCP 0.0.0.0:443 0.0.0.0:0 LISTENING
TCP 0.0.0.0:445 0.0.0.0:0 LISTENING
TCP 0.0.0.0:515 0.0.0.0:0 LISTENING
TCP 0.0.0.0:563 0.0.0.0:0 LISTENING
TCP 0.0.0.0:1025 0.0.0.0:0 LISTENING
TCP 0.0.0.0:1026 0.0.0.0:0 LISTENING
TCP 0.0.0.0:1033 0.0.0.0:0 LISTENING
TCP 0.0.0.0:1037 0.0.0.0:0 LISTENING
TCP 0.0.0.0:1040 0.0.0.0:0 LISTENING
TCP 0.0.0.0:1041 0.0.0.0:0 LISTENING
TCP 0.0.0.0:1043 0.0.0.0:0 LISTENING
TCP 0.0.0.0:1755 0.0.0.0:0 LISTENING
TCP 0.0.0.0:1801 0.0.0.0:0 LISTENING
TCP 0.0.0.0:3372 0.0.0.0:0 LISTENING
TCP 0.0.0.0:3389 0.0.0.0:0 LISTENING
TCP 0.0.0.0:6034 0.0.0.0:0 LISTENING
TCP 0.0.0.0:6666 0.0.0.0:0 LISTENING
TCP 0.0.0.0:7007 0.0.0.0:0 LISTENING
TCP 0.0.0.0:7778 0.0.0.0:0 LISTENING
TCP 0.0.0.0:8181 0.0.0.0:0 LISTENING
TCP 127.0.0.1:1039 0.0.0.0:0 LISTENING
TCP 127.0.0.1:1433 0.0.0.0:0 LISTENING
TCP 127.0.0.1:2103 0.0.0.0:0 LISTENING
TCP 127.0.0.1:2105 0.0.0.0:0 LISTENING
TCP 127.0.0.1:2107 0.0.0.0:0 LISTENING
UDP 0.0.0.0:7 *:*
UDP 0.0.0.0:9 *:*
UDP 0.0.0.0:13 *:*
UDP 0.0.0.0:17 *:*
UDP 0.0.0.0:19 *:*
UDP 0.0.0.0:68 *:*
UDP 0.0.0.0:135 *:*
UDP 0.0.0.0:161 *:*
UDP 0.0.0.0:445 *:*
UDP 0.0.0.0:1030 *:*
UDP 0.0.0.0:1036 *:*
UDP 0.0.0.0:1038 *:*
UDP 0.0.0.0:1042 *:*
UDP 0.0.0.0:1075 *:*
UDP 0.0.0.0:1434 *:*
UDP 0.0.0.0:1645 *:*
UDP 0.0.0.0:1646 *:*
UDP 0.0.0.0:1755 *:*
UDP 0.0.0.0:1812 *:*
UDP 0.0.0.0:1813 *:*
UDP 0.0.0.0:3456 *:*
UDP 0.0.0.0:3527 *:*
UDP 127.0.0.1:53 *:*
UDP 127.0.0.1:1028 *:*
UDP 127.0.0.1:1029 *:*
UDP 127.0.0.1:1035 *:*
UDP 127.0.0.1:1044 *:*
UDP 127.0.0.1:1045 *:*
UDP 127.0.0.1:1100 *:*
Proto Local Address Foreign Address State- Proto : یعنی پروتکل، که میتواند TCP یا UDP باشد.