پورت

تازه ها

پورت

نظرات ()

 

- چگونه یک ارتباط 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   -p  [optional parameters]
  ipEye   -p 
 [optional parameters]
 
   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 for the scan
     -sp  = source port for the scan
     -d   = delay between scanned ports in milliseconds
                         (default set to 750 ms)


فرض کنید که می‌خواهیم سایت سازین را از نظر پورت‌ها از پورت ۱ تا ۲۰۰ تست کنیم. اول باید ip آن را به دست بیاوریم که می‌شود، 63.148.227.65 و حالا به کمک دستور زیر آن را بررسی می‌کنیم:

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)
          - 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]

Closed یعنی کامپیوتر در آن طرف هست ولی به پورت گوش نمی‌دهد، Reject یعنی اینکه یک firewall هست که اجازه اتصال به آن پورت را نمی‌دهد، Drop یعنی اینکه یک firewall همه‌چیز را پس‌ می‌زند و یا اصلا کامپیوتری اونور نیست، Open هم که یعنی باز.
در مورد سازین می‌بینید که از بین پورت‌های ۱ تا ۲۰۰ ، پورت‌های ۲۱، ۲۵، ۵۳، ۸۰، ۱۱۰، ۱۴۳ باز است و می‌توان به‌ آنها telnet کرد. دقت کنید که تا تمام پورت‌هایی که مشخص شده، تست نشده است، هیچ نتیجه‌ای نشان داده نمی‌شود و یه‌کم صبر می‌خواد.


- تعیین پورت‌های باز کامپیوتر خودتان

می‌خواهیم درباره کامپیوتر خودمان این اطلاعات را پیدا کنیم. برای این کار یکی از دستورات زیر را به کار می‌بریم:

netstat -an
netstat -a

فرق این دو دستور در این است که اولی پورت‌ها را به صورت عددی و دومی به صورت معادل اسمی آن پورت می‌نویسد. مثلا معادل اسمی پورت 7 ، echo است.

مثلا اگه netstat -an را تایپ کنم، به اطلاعات زیر می‌رسم:

Active Connections
 
  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         *:*

من دستور را موقعی اجرا کردم که به اینترنت متصل نبودم. اگر همین کار را در زمان اتصال به اینترنت انجام می‌دادم، یک سری سطرهای جدید هم اضافه می‌شد که مربوط به آن اتصال می‌شد. و نیز دقت کنید که من سویچ an- را استفاده کردم و پورت‌ها به صورت عددی نمایش داده شده است که همین الان - الساعه - براتون توضیح می‌دم:

اولین نکته‌ای که به نظر می‌رسد، نامی است که برای هر ستون نوشته شده است:

  Proto      Local Address       Foreign Address       State

- Proto : یعنی پروتکل، که می‌تواند TCP یا UDP باشد.
- Local Address : نشان‌دهنده ip کامپیوتر خودمان و شماره پورت‌هاست. مثلا سطر اول می‌گوید که ip من 0.0.0.0 است (دقت کنید که من به اینترنت متصل نیستم) و اولین پورت باز (از نوع TCP با توجه به اول سطر) عدد ۷ است زیرا این به صورت 0.0.0.0:7 نوشته شده است که قسمت قبل از کاراکتر : ، ip است و بعد از کاراکتر :، پورت است.
- Foreign Address : چون در این مثال از سویچ a- یا an- استفاده کرده‌ایم، کاربردی ندارد. ولی بعدا خواهید دید که اگر از یک سویچ دیگر استفاده کنیم، می‌تواند مهم باشد.
- State : وضعیت اتصال را نشان می‌دهد


حالا اگه پورت‌ها را یکی یکی بررسی کنید، می‌بینید که در پروتکل TCP ، پورت‌های ۷، ۹، ۱۳، ۱۷، ۱۹، ۲۱ و... باز است و در پروتکل UDP ، پورت‌های ۷، ۹، ۱۳، ۱۷، ۱۹، ۶۸ و ... باز است.

حالا ممکن است بپرسید که این اطلاعات به چه دردی می‌خورد؟
جواب این است که دانستن این اطلاعات برای محافظت از خودتان در برابر همکارانتان (هکرها) است. مثلا اگر یک تروجان روی کامپیوتر شما نصب شده باشد، با این دستور می‌توان آن را کشف کرد.