مدل TCP/IP که برای ارتباط اينترنتی بهکار میرود، میتوان به لايههای مختلفی تقسيمبندی کرد که بعدا بيشتر توضيح میدم، اما يکی از اين لايهها، لايه ارتباط host2host است که خود شامل دو پروتکل است به نامهای TCP و UDP :
۱- (TCP (Transmission Control Protocol :
اين پروتکل قویتر و قابل اعتمادتر است و اصولا پروتکل مهمتری نسبت به UDP محسوب میشود. اين پروتکل توانايی بازبينی بستههاو کنترل خطا را هم دارد.
۲- (UDP (User Datagram Protocol :
اين پروتکل برای کاهش overflow طراحی شده است و در خيلی از موارد وابسته به TCP است.
نکته مهم اين است که وقتی با يک پورت خاص روی يک کامپيوتر ديگر ارتباط برقرار میکنيم، اين ارتباط میتواند از نوع TCP يا UDP باشد. بنابراين وقتی میخواهيم يک کامپيوتر خاصی را از نظر پورتها بررسی کنيم، هردو بايد بررسی شود.
- تقسيمبندی پورتها از روی شماره آنها
۱- پورتهای 0 تا 1023 :
مشهورترين پورتها هستند و معمولا هرکدام برای يک سرويس خاص استفاده میشود. با تعدادی از اين پورتها در جلسات قبل آشنا شدهايد.
۲- پورتهای 1024 تا 49151 :
اين سری از پورتها مشخصا با هيچيک از سرويسهای اينترنتی مرتبط نيستند بلکه وقتی که با يک ابزار شبکه مانند مرورگر اينترنت(مثل Internet Explore يا Netscape Navigator )، نرمافزار ارسال و دريافت E-mail (مثل Outlook يا Edura )، نرمافزارهای FTP (مثل WS-FTP يا Cute-FTP ) کار میکنيد، يکی از اين پورتها به صورت random باز شده و يک ارتباط با سرور (با توجه بهنوع سرويس اينترنتی که میدهد که يکی از پورتهای 0 تا 1023 است) برقرار شده و دادهها ارسال و دريافت میشوند. يعنی پورت شما يکی از پورتهای اين قسمت است و پورت سرور يکی از پورتهای بالايی.اين سری پورتها را پورتهای register شده هم میگويند.
۳- پورتهای 49152 تا 65535 :
اين سری از پورتها بهندرت استفاده میشوند. کاربرد اساسی آنها برای يک سری سرويسهای خاص اينترنتی است و يا توسط trojanها (که برای Hack کردن کامپيوتر است) است. البته خيلی از trojanهای معروف از پورتهای رديف ۲ هم استفاده میکنند و اين تقسيمبندیها هميشه برقرار نيست و بههمين علت است که گاهی پورتها را به دودسته زير 1024 و بالای 1024 تقسيم میکنند.
- تکميل ليست پورتها
در جلسه دوم در مورد مهمترين پورتها صحبت کردم. حالا يک ليست کاملتر را در اين درس میگم. اگر میخواهيد يک مرجع نسبتا کامل برای مراجعه داشته باشيد، [. برای
مشاهده لینکها در سایت عضو شوید] را کليک کنيد. دقت کنيد درس امروز و نيز لينک بالا هيچ بحثی در مورد تروجانها نمیکند زيرا تروجانهای شناخته شده هم يک سری پورت پيشفرض دارند که در جای خود بحث خواهد شد.Ports TCP/UDP Service or Application
------ ------- ----------------------------------------
7 tcp echo
11 tcp systat
19 tcp chargen
21 tcp ftp-data
22 tcp ssh
23 tcp telnet
25 tcp smtp
42 tcp nameserver
43 tcp whois
49 udp tacacs
53 udp dns-lookup
53 tcp dns-zone
66 tcp oracle-sqlnet
69 udp tftp
79 tcp finger
80 tcp http
81 tcp alternative for http
88 tcp kerberos or alternative for http
109 tcp pop2
110 tcp pop3
111 tcp sunrpc
118 tcp sqlserv
119 tcp nntp
135 tcp ntrpc-or-dec
139 tcp netbios
143 tcp imap
161 udp snmp
162 udp snmp-trap
179 tcp bgp
256 tcp snmp-checkpoint
389 tcp ldap
396 tcp netware-ip
407 tcp timbuktu
443 tcp https/ssl
445 tcp ms-smb-alternate
445 udp ms-smb-alternate
500 udp ipsec-internet-key-exchange (ike)
513 tcp rlogin
513 udp rwho
514 tcp rshell
514 udp syslog
515 tcp printer
515 udp printer
520 udp router
524 tcp netware-ncp
799 tcp remotely possible
1080 tcp socks
1313 tcp bmc-patrol-db
1352 tcp notes
1433 tcp ms-sql
1494 tcp citrix
1498 tcp sybase-sql-anywhere
1524 tcp ingres-lock
1525 tcp oracle-srv
1527 tcp oracle-tli
1723 tcp pptp
1745 tcp winsock-*****
2000 tcp remotely-anywhere
2001 tcp cisco-mgmt
2049 tcp nfs
2301 tcp compaq-web
2447 tcp openview
2998 tcp realsecure
3268 tcp ms-active-dir-global-catalog
3268 udp ms-active-dir-global-catalog
3300 tcp bmc-patrol-agent
3306 tcp mysql
3351 tcp ssql
3389 tcp ms-termserv
4001 tcp cisco-mgmt
4045 tcp nfs-lockd
5631 tcp pcanywhere
5800 tcp vnc
6000 tcp xwindows
6001 tcp cisco-mgmt
6549 tcp apc
6667 tcp irc
8000 tcp web
8001 tcp web
8002 tcp web
8080 tcp web
9001 tcp cisco-xremote
12345 tcp netbus
26000 tcp quake
31337 udp backorifice
32771 tcp rpc-solaris
32780 udp snmp-solaris
43188 tcp reachout
65301 tcp pcanywhere-def
- چگونه به يک پورت Telnet کنيم؟
برای اينکه عملکرد يک پورت برای شما روشن شود، بايد به آن پورت Telnet کنيد. (البته معمولا تعدادی از پورتهايی را که ممکن است اطلاعاتی مهم را در اختيار هکرها قرار دهند مثل پورت ۷۹ معمولا بسته است و ارتباط با آنها شايد برقرار نشود.) برای telnet کردن در command prompt دستور زير را تايپ کنيد: telnethostname portnum در اين دستور بهجای hostname شماره ip و يا نام سايت را وارد میکنيد و بهجای portnum شماره پورت و يا معادل آن از جدول. مثلا برای تلنت کردن به پورت ۱۳ که ساعت و تاريخ را بهدست میدهد در کامپيوتری به اسم [. برای
مشاهده لینکها در سایت عضو شوید] مينويسيد: telnet iums.ac.ir 13
telnet iums.ac.ir daytime
۱- Port Scanning :
در اين حالت ما IP يا IPهای مورد نظر را انتخاب کردهايم و حالا میخواهيم بدانيم که کدام پورتها روی آن کامپيوترها باز است.
۲- IP Scanning :
در اين اسکنينگ میخواهيم بدانيم که از بين يک مجموعه ip ، کدامها up و کدامها down هستند. يعنی کدام ip ها الان قابل دسترسی هستند (يعنی به يه کامپيوتر در اينترنت نسبت داده شده است! ) فرض کنيد که شما يک سری IP مربوط به يک ISP خاص را داريد و میخواهيد بدانيد که در اين لحظه کدامها فعال (up) هستند تا فقط آنها را بررسی کنيد و نه همه را
- چگونه يک ارتباط 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 :
من در این درس از اين نرمافزار استفاده خواهم کرد، برای داونلود آن میتوانيد به سايت [. برای
مشاهده لینکها در سایت عضو شوید] مراجعه کنيد يا مستقيما با [. برای
مشاهده لینکها در سایت عضو شوید] آن را داونلود کنيد. لازم است بگويم که اين نرمافزار فقط در ويندوز ۲۰۰۰ و xp کار میکند و نيز در يک بار اجرا فقط يک ip را میتواند تست کند. ضمنا فقط TCP را تست میکند.
- چگونه از ipEye برای پورت اسکنينگ استفاده کنيم؟
با تايپ ipEye در command prompt اين نتايج ظاهر میشود:
ipEye 1.2 - (c) 2000-2001, Arne Vidstrom (arne.vidstrom@ntsecurity.nu)
- [. برای
مشاهده لینکها در سایت عضو شوید]
<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)
فرض کنيد که میخواهيم سايت سازين را از نظر پورتها از پورت ۱ تا ۲۰۰ تست کنيم. اول بايد 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)
- [. برای
مشاهده لینکها در سایت عضو شوید]
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 ، پورتهای ۷، ۹، ۱۳، ۱۷، ۱۹، ۶۸ و ... باز است.
کاربرد نرمافزار nmap
بحث اين جلسه درباره اين نرمافزار است. برای داونلود اين نرمافزار[. برای
مشاهده لینکها در سایت عضو شوید] اندازه برنامه 6.18 مگابايت است و اگر اتصالتان dial-up است، کمی طول خواهد کشيد. ضمنا توجه کنيد که اين برنامه مخصوص ويندوز ۲۰۰۰ و xp است.
اين نرمافزار مجموعه ابزارهای footprinting مثل پورت اسکن، آیپی اسکن، تشخيص سيستمعامل کامپيوتر مورد نظر (OS detection) و … را گرد هم آورده است. شکل ظاهری برنامه را در زير میبينيد:
۱- Network Section :
بالاترين قسمت پنجره برنامه است که محلی برای ورود ip يا ip ها دارد به نام Host. بعد از وارد کردن ip و تنظيم کردن پارامترها، دکمه Scan را کليک میکنيم تا کار اسکن شروع شود.
اگر قرار باشد بيش از يک ip وارد شود، اين کار را میتوان به صورتهای مختلف انجام داد. مثلا: *.*.192.130 يعنی تمام ip هايی که با 192.130 شروع میشوند ولی دو عدد بعدی هرچيزی میتواند باشد. و نوشتن به صورت 15-192.130.120.12 يعنی عدد آخری میتواند از ۱۲ تا ۱۵ باشد.
۲- Option Folder :
اين قسمت در واقع محل تنظيمات است و به کمک آن مشخص میکنيم که از برنامه میخواهيم که چهکاری انجام دهد که مفصلا در موردش صحبت خواهم کرد. در اين قسمت، برگههايی با نامهای Option , Discover , Scan , ... وجود دارد.
۳- Log Output :
محل ظاهر شدن نتايج است. در حالتی که اسکن شروع نشده باشد، خالی است.
۴- Status bar :
پايينترين بخش پنجره برنامه است و دو بخش مهم دارد:
قسمت سمت چپ نشان میدهد که اگر بخواهيم در nmap همين کار رو انجام بديم، چه سويچهايی را بايد بکار بريم ( دقت کنيد که nmap برخلاف NMapWin گرافيکی نيست ). هر تغييری که در قسمت Option Folder اعمال کنيم، در اين قسمت تغييری را مشاهده میکنيم و توصيه میکنم که حتما به اين قسمت توجه ويژهای داشته باشيد.
اما در سمت راست آن، يک مربع کوچک مشاهده میشود که میتواند به رنگهای سبز يا قرمز باشد. سبز يعنی اينکه برنامه آماده برای اجرای دستورات شماست و قرمز يعنی در حال انجام دستورات وارد شده است و فعلا دستور جديد نمیپذيرد.
- شروع کار با NMapWin
فرض کنيد که میخواهم سايت far30.com رو میخواهم مورد بررسی قرار دهم. برای اينکار ابتدا ip رو بدست آورده (63.148.227.65) و در قسمت Host تايپ میکنيم. حالا فعلا بدون اعمال تغييری در قسمت Option Folder ، دکمه Scan رو کليک میکنيم. اسکن شروع میشود و بعد از چند دقيقه، نتايج زير در قسمت Log Output ظاهر میشود:Starting nmap V. 3.00 ( [. برای
مشاهده لینکها در سایت عضو شوید] )
Interesting ports on (63.148.227.65):
(The 1583 ports scanned but not shown below are in state: closed)
Port State Service
21/tcp open ftp
25/tcp open smtp
31/tcp open msg-auth
53/tcp open domain
80/tcp open http
110/tcp open pop-3
135/tcp open loc-srv
143/tcp open imap2
443/tcp open https
445/tcp open microsoft-ds
1025/tcp open NFS-or-IIS
1026/tcp open LSA-or-nterm
1050/tcp open java-or-OTGfileshare
1433/tcp open ms-sql-s
3372/tcp open msdtc
3389/tcp open ms-term-serv
6666/tcp open irc-serv
7007/tcp open afs3-bos
Remote operating system guess: Windows 2000/XP/ME
Nmap .... -- 1 IP address (1 host up) scanned in 156 secondsدر همينجا سه نوع اطلاعات قابل دسترسی است:
۱- ليست پورتهای باز روی کامپيوتر سرور و کاربرد آن پورتها
۲- تشخيص سيستم عامل که Windows 2000/XP/ME حدس زده شده است (سطر ماقبل آخر)
۳- و سطر آخر میگويد که اين ip روشن (up) است.
- بررسی برگه Scan از قسمت Option Folder
اين برگه خود ۲ بخش دارد:
+> بخش Mode :
در درسهای قبلی گفتم که اسکنينگ انواع مختلفی داره، و اينجا جايی است که نوع اسکنينگ رو مشخص میکنيم:
- Connect : اسکن از نوع TCP connect scan است که قبلا در درس هفتم دربارهاش بحث کردهام.
- SYN Stealth : در درس هفتم درباره اين هم گفتهام. - پيشفرض هم همين است
- Null Scan , Xmas tree , FIN Stealth : برای سرورهای غير از ويندوز کار میکنند.
- UDP Scan : برای اسکن کردن پورتهای udp است.
- Ping Sweep : برای عمل ip scanning است که بدانيم که از بين يک سری ip کدامها فعال هستند.
- List Scan : همان Ping Sweep است ولی به طوری که ip مان لو نرود.
- ACK Scan : معمولا برای تشخيص فايروالها کاربرد دارد.
- Window Scan : همان ACK Scan است ولی کاملتر
- RCP Scan : جزو کاملترين حالتهای اسکنينگ است با اطلاعات فراوان.
+> بخش Scan Options :
اين قسمت شش گزينه دارد که فقط يکیشان به درد میخوره:
- Port Range : مشخص میکند که چه پورتهايی بايد اسکن شود: اگر خالی بماند، يعنی همه پورتها ، اگر يک عدد نوشته شود يعنی فقط آن پورت و اگر بهصورت n-m نوشته شود (که n و m عدد هستند) يعنی از پورت n تا پورت m اسکن شود.
- بررسی برگه Discover از قسمت Option Folder
اين برگه دارای چهار گزينه است:
- TCP Ping : برای بررسی فعال بودن کامپيوتر مورد نظر میتواند بهکار رود.
- ICMP Ping : پينگ فقط از نوع ICMP باشد.
- TCP+ICMP : برای بررسی فايروالها مناسب است (پيشفرض)
- Don"t Ping : پينگ نکند.
- بررسی برگه Options از قسمت Option Folder
اين برگه خود ۲ بخش دارد:
+> بخش Options :
- Fragmentation : اگر بخواهيم در اسکنينگهايی از نوع Null, Xmas, FIN, SYN تا حدودی تغييرات اعمال کنيم تا حداقل خطر را برای ما داشته باشند، میتوان اين گزينه را انتخاب کرد. ولی بايد توجه داشت که گاهی با انتخاب اين گزينه اسکنينگ موفقيت آميز نخواهد بود.
- Get Idented Info : اگر بخواهيم اسکنينگ از نوع connect صورت دهيم، با انتخاب اين گزينه گاه اطلاعات ذیقيمتی برای ما به ارمغان میآورد.
- Resolve All : در حالت پيشفرض، اين نرمافزار روی ip هايی که up هستند، عمل Reverse Whois را انجام میدهد (يعنی از روی ip، به دنبال اسم DNS مربوطه میگردد). اگر Resolve All را انتخاب کرده باشيم، روی همه ip ها، چه up و چه down عمل Reverse Whois انجام خواهد شد.
- Don"t Resolve : هرگز Reverse Whois نخواهد کرد.
- OS Detection : از جمله مهمترين گزينههای اين نرمافزار است که اگر انتخابشده باشد، برنامه سعی میکند که سيستمعامل کامپيوتر مقابل را حدس بزند.
- Random Host : به صورت تصادفی ip هايی را تست میکند، و هرگز هم به پايان نمیرسد.
+> بخش Debug :
- Debug : اگر مارک شده باشد، نتايج ديباگ مرحله به مرحله در خروجی نشان داده میشود.
- Verbose : اگر انتخابشده باشد، پيشرفت کار را نشان میدهد.
- Very Verbose : پيشرفت کار را با نهايت جزئيات نشان میدهد.
- بررسی برگه Timing از قسمت Option Folder
اين برگه خود ۲ بخش دارد:
+> بخش Throttle :
در اين بخش هرچه گزينههای بالاتر را انتخاب کنيد، کار کندتر و دقيقتر است و احتمال detection (لو رفتن) شما کمتر است و هرچه پايين تر برعکس. به نظر میرسد، Normal بهترين انتخاب باشد.
+> بخش Timeouts :
- Host Timeout : حداکثر زمانی را مشخص میکند که برای يک ip میتواند صرف شود.
- Max RTT : حداکثر زمانی را مشخص میکند که برای يک probe میتواند صرف شود. پيشفرض، 9000 است (يعنی ۹ ثانيه)
- Min RTT : برای هر probe حداقل به اين اندازه صبر میکند.
- Initial RTT : اين گزينه خصوصا در ip هايی که فايروال دارند، مفيد است.
- Parallelism : اگر در مورد acw_spscan دقت کرده باشيد، اين برنامه هر بار فقط يک پورت را پروب میکند و نه بيشتر ( به همين خاطر است که اول اسم آن simple دارد ). ولی محصولات واقعی بايد همزمان تعدادی پورت را تست کنند. در اين قسمت میتوان حداکثر تعداد پورتهايی که میتواند همزمان پروب شوند را مشخص میکنيم.
- Scan Delay : بين هر اسکن، حداقل به اين ميزان صبر میکند.
- بررسی برگه Files از قسمت Option Folder
اين برگه خود ۲ بخش دارد:
+> بخش Input :
برای اينکه روند کارها را سريعتر کنيم، میتوان از اين بخش استفاده کرد. در اين حالت ورودی از يک فايل خوانده میشود.
+> بخش Output :
اين قسمت برای آن است که نتايج را در يک فايل ذخيره کنيم. اين فايل میتواند بهصورت Normal (متنی معمولی)، Grep (که الان ديگه بهکار نميره)، XML و يا All (هر سه مورد) باشد.
- بررسی برگه Service از قسمت Option Folder
فرض کنيد میخواهيد اول هر هفته فلان ip رو تست کنيد و کارهايی از ايندست... اين برگه برای همينجور کارهاست (ميشه گفت يک نوع اتوماسيون)
- بررسی برگه Win32 از قسمت Option Folder
اين برگه دو بخش دارد به نامهای Options , Commands که فقط Options رو بررسی میکنم:
- No Pcap : وقتی که NMapWin را نصب میکنيم، Pcap هم نصب میشود ( که فقط روی سيستمهای ويندوز ۲۰۰۰ و xp میتواند نصب شود) و کارها را برعهده میگيرد. اگر بخواهيم که از آن استفاده نشود و بهجای آن از Raw Socket استفاده شود، اين گزينه را مارک میکنيم.
- No IP HLP Api : مثل بالايی فقط اينکه بين ارسال هر پکت، ۱۵ ثانيه منتظر میماند.
- No Raw Sockets : با انتخاب آن Raw Socket بهکار نمیرود.
- Force Raw Socket : باعث میشود که فقط Raw Socket بهکار رود.
- Win Trace : برای سيستمهای Win32 کمی اطلاعات بيشتری بهدست میدهد.
- استفاده از NMapWin برای تعيين نوع سيستم عامل
اگر مهمترين کاربردهای nmap را بخواهيم بدانيم، يکی port scanning و ديگری OS detection (تشخيص سيستمعامل مقابل) است که ويژگی دوم به قدری مهم است که گاه nmap را با همين ويژگی میشناسند. برای اينکه نوع سيستمعامل را تعيين کنيم، بايد در برگه Options از NMapWin، گزينه OS detection انتخاب شده باشد.
حالا چند مثال را بررسی میکنيم (شما خودتان اين ip ها و ip های ديگر را تست و تمرين کنيد) :
194.225.184.15
Remote operating system guess: Windows 2000 server SP2
195.219.176.5
Remote operating system guess: Linux Kernel 2.4.0 - 2.5.20
206.104.238.208
Remote operating system guess: Linux 2.1.19 - 2.2.20
217.66.199.6
(Remote operating system guess: Cisco router running IOS 12.1.5-12.2(6a
63.148.227.65
Remote operating system guess: Windows 2000/XP/ME
194.225.184.2 No exact OS matches for host (If you know what OS is running on it, see [. برای
مشاهده لینکها در سایت عضو شوید].
در اين مورد میبينيد که nmap موفق به تعيين نوع سيستمعامل نشده است. ممکن است دليلش اين باشد که ip در آن لحظه up نبوده است.
نکتهای که بايد در نظر داشت اين است که گاه بايد از يک سری اطلاعات فنی هم استفاده کرد تا به جواب قطعی رسيد :
- مثلا ip ماقبل آخر که نتيجه آن به صورت Windows 2000/XP/ME ظاهر شده است، متعلق به sazin.com است که چون يک سايت است و بايد در يک سرور باشد و هيچ سروری نمیتواند ME يا XP باشد، پس سيستمعامل آن Win 2000 خواهد بود.
- يا يک حالت ديگر موردی است که ببينيد صفحات يک وب سايت با asp يا asp.net درست شده است (مثلا اسم صفحه به صورت zzzzzz.asp يا zzzzzz.aspx باشد، که نمونه آن سايت far30.com است که اسم همين صفحه default.asp است). در اين حالت سرور آن حتما سروری از محصولات مايکروسافت است مثل Win NT و يا Win 2000 و نمیتواند Linux يا Unix يا Sun Solaris و... باشد.
- چگونه از nmap استفاده کنيم؟
قبلا با نرمافزار NMapWin آشنا شديد که نسخه گرافيکی nmap برای ويندوز بود. nmap در واقع نرمافزار اصلی است که هم برای يونيکس (لينوکس) و هم برای ويندوز نسخههايی را دارد. nmap برخلاف NMapWin، حالت خط فرمانی (command prompt) دارد. در اين قسمت میخواهيم با nmap مخصوص ويندوز آشنا شويم. برای داونلود اين نرمافزار [. برای
مشاهده لینکها در سایت عضو شوید] را کليک کنيد. (اگر قبلا NMapWin را نصب نکردهايد، بايد از يک نسخه ديگر از nmap که اصطلاحا nmap installer نام دارد، استفاده کنيد. اين نسخه nmap را میتوانيد از [. برای
مشاهده لینکها در سایت عضو شوید] داونلود کنيد. )
همانطور که میدانيد، در نرمافزارهای خط فرمانی، بايد از پارامترها استفاده کنيم. با توجه به اينکه پارامترهای nmap بسيار زياد و يادگيری آنها مشکل است، ما برای پيدا کردن پارامترهای درست برای يک عمل خاص ( که معمولا ip scanning يا port scanning است) از NMapWin استفاده میکنيم. به اين ترتيب که در NMapWin تنظيمات را انجام میدهيم و بعد در پايين پنجره آن مشاهده میکنيد که در قسمت :CMD ليست پارامترها را به دست میآوريم. اين مراحل را با دو مثال شرح میدم:
۱- میخواهيم برای پورتهای ۱ تا ۲۰۰ در کامپيوتری که ip آن 63.148.227.65 است، يک پورت اسکننيگ انجام دهيم. برای اينکار در NMapWin، برگه Scan را درحالت SYN Stealth تنظيم میکنيم و Port Range را مینويسيم: 200-1 و بعد برگه Discover بايد در حالت TCP+ICMP باشد و اگر بخواهيم نوع سيستمعامل را هم مشخص کنيم، در برگه Options، گزينه OS detection را در حالت انتخاب شده قرار میدهيم. ip را هم در بالای پنجره، 63.148.227.65 مینويسيم. حالا آماده اسکن هستيم ولی ما میخواهيم اين کار را با nmap انجام دهيم، پس فقط بايد قسمت CMD را از پايين پنجره ببينيد، ملاحظه میکنيد که نوشته شده:CMD: -sS -PT -PI -p 1-200 -O -T 3 63.148.227.65با حذف کلمه :CMD به عبارت زير میرسيم:-sS -PT -PI -p 1-200 -O -T 3 63.148.227.65اينها پارامترهايی است که بايد در nmap استفاده کنيد. به اين صورت که مینويسيد:nmap -sS -PT -PI -p 1-200 -O -T 3 63.148.227.65و بعد از اجرای دستور و صبر کردن برای چند دقيقه، نتايج را میبينيم.
بعد از مدتی که با nmap کار کنيد، اين پارامترها را میآموزيد و ديگه نيازی به NMapWin نخواهيد داشت. مثلا همين O- يعنی OS detection، و 200-p 1 يعنی پورتهای ۱ تا ۲۰۰ میباشد. بعدها خودتان میبينيد که کار کردن با nmap بسيار دلچسبتر از NMapWin است.
۲- میخواهيم يک ip scanning انجام دهيم برای 195.219.176.0 تا 195.219.176.10 . برای اينکار در NMapWin، در برگه Mode، گزينه Ping Sweep را انتخاب میکنيم. در برگه Discovery، گزينه ICMP Ping را انتخاب کرده و در برگه Options، گزينه OS detection را در حالت انتخاب نشده قرار میدهيم. برای نوشتن ip ملاحظه میفرماييد که 195.219.176 در هر دو مشترک است، پس مینويسيم: 10-195.219.176.0 .حالا میبينيم که پارامترها به صورت زير است:-sP -PI -T 3 195.219.176.0-10پس ما مینويسيم:nmap -sP -PI -T 3 195.219.176.0-10
۱- در سادهترين نوع آن، يک پکت از نوع ICMP ECHO به يک ip خاص میفرستيم و اگر يک ICMP ECHO REPLAY به سمت ما برگشت، در اين صورت آن ip بهاصطلاح up است. برای اينکار میتوان از ابزارهای زير استفاده کرد:
الف) استفاده از ping موجود در سيستمعاملهای ويندوز و يونيکس (لينوکس). به صورت زير:pingxxx.xxx.xxx.xxxمثلا برای 63.148.227.65 مینويسيمing 63.148.227.65اگر در ويندوز اين دستور را تايپ کنيد و به جواب زير برسيد، يعنی آن ip فعال است:Reply from 63.148.227.65: bytes=32 time=1402ms TTL=105
Reply from 63.148.227.65: bytes=32 time=941ms TTL=105
Reply from 63.148.227.65: bytes=32 time=1402ms TTL=105
Reply from 63.148.227.65: bytes=32 time=941ms TTL=105و اگه به پيغام زير رسيديد، يعنی فعال نيست:Request timed out.
Request timed out.
Request timed out.
Request timed out.همان طور که میبينيد با اين دستور در يک لحظه فقط میشود، يک ip را تست کرد و اين کار ما را کند میکند.
ب) در سيستمعامل لينوکس میشود از gping استفاده کرد که يک مجموعه ip را به سرعت تست کرد.
ج) در سيستم عامل ويندوز میشود از Pinger استفاده کرد. برای داونلود اين نرمافزار [. برای
مشاهده لینکها در سایت عضو شوید]. Pinger يک نرمافزار گرافيکی است و کار ping کردن به يک مجموعه ip را ساده میکند.
[IMG]file:///D:/hack/araz/hack/10_files/n13811025.gif[/IMG]
در قسمت From و To مشخص میکنيم که از کدام ip تا کدام ip را میخواهيم ping کنيم. با فشار دکمه Ping ليست ip هايی که up هستند، نمايش داده میشود. فرض کنيد که ip فعلی شما 195.219.176.88 باشد و بخواهيم بدانيم در کلاس C مربوط به ما چه ip های ديگری up هستند. در اين حالت بايد 195.219.176.1 تا 195.219.176.254 را ping کنيم.
د) حالا میخواهيم همين کار را با NMapWin انجام دهيم. برای اينکار بايد در برگه Scan، قسمت Mode را در حالت Ping Sweep قرار دهيد. برگه Discover بايد درحالت ICMP Ping باشد و در قسمت Options بايد گزينه OS Detection را از حالت انتخاب شده خارج کنيد. بعد بايد ليست ip ها را تنظيم کنيم، برای اينکار بايد در قسمت Host ، ليست ip ها را وارد میکنيم. مثلا اگر بخواهيم 195.219.176.1 تا 195.219.176.254 را تست کنيم بايد بنويسيم: 24/195.219.176.0 که اين 24/ يعنی کلاس C که از ۱ تا ۲۵۵ است. و بعد دکمه Scan را فشار دهيم.
Host (195.219.176.0) seems to be a subnet broadcast address ...
RTTVAR has grown to over 2.3 seconds, decreasing to 2.0
Host (195.219.176.1) appears to be up.
Host (195.219.176.3) appears to be up.
Host (195.219.176.5) appears to be up.
Host (195.219.176.7) appears to be up.
Host (195.219.176.9) appears to be up.
Host (195.219.176.11) appears to be up.
Host (195.219.176.12) appears to be up.
Host (195.219.176.13) appears to be up.
Host (195.219.176.14) appears to be up.
Host H-GVSVY95KXINRJ (195.219.176.15) appears to be up.
Host (195.219.176.16) appears to be up.
Host (195.219.176.17) appears to be up.
Host (195.219.176.18) appears to be up.
Host (195.219.176.19) appears to be up.
Host KERYASBA (195.219.176.20) appears to be up.
Host MARYAM (195.219.176.22) appears to be up.
Host (195.219.176.23) appears to be up.
Host (195.219.176.24) appears to be up.
Host FFX-L2XA0ZM87Q3 (195.219.176.25) appears to be up.
Host (195.219.176.26) appears to be up.
Host (195.219.176.27) appears to be up.
Host (195.219.176.28) appears to be up.
,...ملاحظه میفرماييد که در بعضی موارد اسم کامپيوتر مربوط به ip هم ذکر شده است.
۲- در تمام روشهای بالا، از پکتهای ICMP برای پينگ استفاده کرديم. در بعضی کامپيوترها ممکن است پکتهای ICMP توسط فايروال يا روتر بلاک شوند. در اين حالت بايد از پورت اسکنينگ برای IP اسکنينگ استفاده کرد! برای اينکار میتوان از ابزارهای زير استفاده کرد:
الف) در سيستم عامل يونيکس (لينوکس) میتوان از ابزارهايی مثل hping و icmpenum و ... استفاده کرد. که فعلا بحث ما نيستند.
ب) در سيستمعامل ويندوز، بازهم از NMapWin استفاده میکنيم. ولی طوری Port Scanning میکنيم که نياز ما را برای IP Scanning جواب دهد. اينکار توسط يک سری پورتهای عمومی صورت میگيرد که در اکثر کامپيوترها باز هستند مثل ۸۰ ، ۲۵ و...
برای اينکار در برگه Scan ، قسمت Mode را در حالت Connect تنظيم میکنيم و در قسمت Scan Options ، گزينه Port Range را مثلا برای عدد 80 تنظيم میکنيم. Discover را در حالت TCP Ping قرار میدهيم. و در برگه Option ، گزينه OS Detection را از حالت انتخاب شده خارج میکنيم. ليست ip ها را ست کرده و اسکن را شروع میکنيم.
ping دستوری است که مشخص میکند که آيا يک کامپيوتر خاص که ما ip يا domain آن را میدانيم، روشن و فعال (Active) هست يا نه. و اينکه اگر فعال باشد مدت زمان رسيدن بستههای tcp/ip از آن کامپيوتر به کامپيوتر ما چقدر است.
کاربرد اين دستور به صورت زير است:pingip-or-domainکه به جای ip-or-domain بايد شماره ip و يا domain آن(اگر داشته باشد) را میگذاريم.
مثلا ping sazin.com را در command prompt تايپ کردم و به نتايج زير رسيدم :Pinging sazin.com [63.148.227.65] with 32 bytes of data:
Reply from 63.148.227.65: bytes=32 time=1402ms TTL=105
Reply from 63.148.227.65: bytes=32 time=941ms TTL=105
Reply from 63.148.227.65: bytes=32 time=981ms TTL=105
Reply from 63.148.227.65: bytes=32 time=851ms TTL=105
Ping statistics for 63.148.227.65:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 851ms, Maximum = 1402ms, Average = 1043msاين نتايج نشان میدهد که sazin.com فعال است.
حالا به کامپيوتری با ip شماره 63.148.227.65 (که همان sazin.com است)، ping میکنم. نتايج همان است فقط با تغييراتی در سطر اول. (البته time که معنای مدت زمان رسيدن پکت را میدهد، با توجه به ترافيک شبکه، کم و زياد خواهد شد). برای ping کردن به اين ip ، دستور 63.148.227.65 ping را صادر میکنم :Pinging 63.148.227.65 with 32 bytes of data:
Reply from 63.148.227.65: bytes=32 time=861ms TTL=105
Reply from 63.148.227.65: bytes=32 time=852ms TTL=105
Reply from 63.148.227.65: bytes=32 time=851ms TTL=105
Reply from 63.148.227.65: bytes=32 time=881ms TTL=105
Ping statistics for 63.148.227.65:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 851ms, Maximum = 881ms, Average = 861msفرض کنيد که به يک ip که فعال نيست، ping کنيم:Pinging 217.66.196.1 with 32 bytes of data:
Ping statistics for 217.66.196.1:
Packets: Sent = 4, Received = 0, Lost = 4 (100% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0msکه نشان میدهد که آن ip در آن لحظه فعال نيست.
البته تمام مطالبی که در بالا ذکر شد، در حالتی است که مستقيما به اينترنت وصل شدهايد و يا اگر از طريق شبکه محلی به اينترنت وصل هستيد، شبکه شما به درستی پيکربندی شده باشد. اصولا ping يکی از بهترين دستورات برای پيدا کردن ايراد در شبکه است.
- tracert چيست ؟
tracert ( در يونيکس میشود traceroute ) ابزاری است که نشان میدهد که يک packet اطلاعاتی از کامپيوتر شما چه مسيری را طی میکند و از چه کامپيوترهايی میگذرد تا به يک مقصد خاص برسد. مقصد را ما مشخص میکنيم و معمولا همان کامپيوتری است که داريم footprinting میکنيم.
کاربرد اين دستور به صورت زير است:tracertip-or-domainمثلا میخواهم ببينم که از چه کامپيوترهايی بايد رد شويم تا به sazin.com برسيم. برای اينکار میتوان از يکی از دستورهای زير استفاده کرد:tracert sazin.com
tracert 63.148.227.65به نتيجه زير رسيدم:Tracing route to sazin.com [63.148.227.65]
over a maximum of 30 hops:
1 160 ms 160 ms 160 ms 217.218.84.3
2 381 ms 691 ms 1772 ms 217.218.84.5
3 * * 2324 ms 217.218.77.1
4 201 ms 1101 ms 180 ms 217.218.0.252
5 341 ms 220 ms 180 ms 217.218.0.2
6 1993 ms 180 ms 181 ms 217.218.158.41
7 180 ms 160 ms 160 ms 195.146.63.101
8 2824 ms * * 195.146.32.134
9 1472 ms 1463 ms 871 ms 195.146.33.73
10 791 ms 841 ms 811 ms if-1....eglobe.net [207.45.218.161]
11 1692 ms * 2654 ms if-4-....eglobe.net [207.45.222.77]
12 1282 ms 891 ms 1052 ms if-1-....globe.net [207.45.220.245]
13 902 ms 931 ms 881 ms if-15.....globe.net [66.110.8.134]
14 931 ms 861 ms 871 ms if-8-....leglobe.net [64.86.83.174]
15 901 ms 841 ms 852 ms if-5-.....globe.net [207.45.223.62]
16 841 ms 862 ms 851 ms pos6-.....vel3.net [209.0.227.33]
17 841 ms 842 ms 941 ms so-4-1.....vel3.net [209.247.10.205]
18 882 ms 931 ms 851 ms so-0-1....vel3.net [209.247.11.197]
19 871 ms 891 ms 951 ms gige9....vel3.net [209.247.11.210]
20 1011 ms 851 ms 902 ms unknown.Level3.net [63.208.0.94]
21 852 ms * 882 ms 64.156.25.74
22 961 ms 942 ms 841 ms 63.148.227.65
Trace complete.اين نتايج نشان میدهد که بايد از ۲۲ کامپيوتر بگذرم تا به sazin.com برسم. اين اطلاعات همانطور که بعدا خواهيد ديد، حاوی اطلاعات زيادی برای پيدا کردن فايروالها و ... است. (بعضی سطرها رو کوتاه کردم و بهجاش .... گذاشتم)
tracert دارای تعدادی switch است که دوتاش رو توضيح میدم:
d- ==>
با استفاده از اين سويچ در نتايج حاصله فقط ip ها نمايش داده میشود.
مثلا مینويسيم: tracert sazin.com -d
h max-hops- ==>
حداکثر تعداد گامها را تعيين میکند. حالت پيشفرض ۳۰ است.
مثلا مینويسيم: tracert sazin.com -h 50
از اين دستور بعدا بسيار استفاده خواهيم کرد.
- ادامه بحث telnet
telnet هم جزو مواردی است که در footprinting مورد استفاده قرار میگيرد. کاربرد آن در حالتيست که بخواهيم بدانيم که روی فلان پورت چه برنامهای فالگوشه و version آن چنده. به اين صورت که به يک پورت خاص (که ميدانيم روی آن سرور باز است) تلنت میکنيم و بعد میبينيم که نتايجی ظاهر میشود که نشاندهنده اطلاعاتی است که بهکار میرود. گاهی با مکثی طولانی مواجه میشويم و هيچ چيزی نمايش داده نمیشود، در اين حالت يکی دوبار , Ctrl+Z , Ctrl+D , Ctrl+C , Ctrl+break را میزنيم و خارج میشويم. در مثال پايين جمعبندی مواردی که تا حالا از footprinting گفتهام را میآورم.
- جمعبندی مطالب گفته شده و بررسی يک سايت
فرض کنيد میخواهيم در مورد [. برای
مشاهده لینکها در سایت عضو شوید] اطلاعاتی کسب کنيم :
◊ اول به سايت پينگ میکنم و ip آن را بهدست میآورم: 194.225.184.15
◊ به کمک ip که بهدست آورديم، به کمک يک پورت اسکنر پورتها را بررسی میکنيم و میبينيم که پورتهايی مثل ۲۱، ۲۵، ۴۲، ۵۳، ۸۰، ۱۱۰، ۱۱۹، ۱۳۹، ۱۴۳ و ... باز است.
◊ چون domain به ir ختم میشود، برای whois کردن از whois.nic.ir استفاده میکنم و Name Server آن را به دست میآورم که 194.225.184.20 است.
◊ به کمک اين Name Server ، يک nslookup میکنم و به نتايج زير میرسم: iums.ac.ir. SOA sina.i........0 345600)
iums.ac.ir. NS sina.iums.ac.ir
iums.ac.ir. NS ns1.nic.ir
iums.ac.ir. MX 10 sina.iums.ac.ir
smtp.iums.ac.ir. A 195.146.34.181
sina.iums.ac.ir. HINFO Sun-SuperSPARC5/75 UNIX-Solaris-2.6
sina.iums.ac.ir. MX 10 sina.iums.ac.ir
sina.iums.ac.ir. A 194.225.184.20
sina.iums.ac.ir. A 195.146.34.181
sun.iums.ac.ir. CNAME sina.iums.ac.ir
cisco.iums.ac.ir. CNAME router.iums.ac.ir
webmail.iums.ac.ir. A 195.146.34.181
linux.iums.ac.ir. A 194.225.184.19
linux.iums.ac.ir. HINFO Intel-Xeon/800 RedHat-Linux-7.2
mta.iums.ac.ir. A 195.146.34.181
pop3.iums.ac.ir. CNAME sina.iums.ac.ir
localhost.iums.ac.ir. A 127.0.0.1
*****.iums.ac.ir. CNAME arvand.iums.ac.ir [. برای
مشاهده لینکها در سایت عضو شوید]. A 195.146.34.180
atrak.iums.ac.ir. A 194.225.184.14
ns1.iums.ac.ir. CNAME sina.iums.ac.ir
arvand.iums.ac.ir. A 194.225.184.13
router.iums.ac.ir. A 194.225.184.1
router.iums.ac.ir. HINFO Cisco3640/Access-Server IOS-IP-12.0
iums.ac.ir. SOA sina.iu.......3456000 345600)تک تک سطرهای اين نتايج کاربرد دارد که خواهيم رسيد. الان فقط در مورد HIFNO صحبت میکنم که برای مشخص تر بودن در بالا به صورت کمی فرورفتهتر نوشتم. مثلا:sina.iums.ac.ir. HINFO Sun-SuperSPARC5/75 UNIX-Solaris-2.6 HIFNO برای تعيين نوع کامپيوتر و سيستمعامل سرور اهميت دارد. در اين سطر مشخص است که sina.iums.ac.ir از Sun-SuperSPARC5/75 UNIX-Solaris-2.6 استفاده میکند.
◊ چون پورتهای باز را هم توسط پورت اسکنر به دست آوردهام به آنها تلنت میکنم با دستور: telnet [. برای
مشاهده لینکها در سایت عضو شوید]portnum
نتايج حاصل از بعضی را میبينيد:
25 :
... master.iums.ac.ir Microsoft ESMTP MAIL Service, Version: 5.0.2195.4905 ready at 220
پس پورت ۲۵ (smtp) در آن کامپيوتر از Microsoft ESMTP MAIL Service, Version: 5.0.2195.4905 استفاده میکند.
110 :
.OK Microsoft Exchange 2000 POP3 server version 6.0.5762.3 (master.iums.ac.ir) ready+
پس پورت ۱۱۰ (pop3) در آن کامپيوتر از Microsoft Exchange 2000 POP3 server version 6.0.5762.3 استفاده میکند.
119 :
NNTP Service 5.00.0984 Version: 5.0.2195.2966 Posting Allowed
الان به جايی رسيدهايم که میتوانيم بحث پورتها را شروع کنيم. اولين نکتهای که بايد بگم اين است که ابزاری که به کمک آن با پورتها صحبت میکنيم در همه پورتها يکی است ولی هر پورتی زبان مخصوص خود دارد (درست مثل زبانهای مختلف در جهان که همشون از طريق زبان و دهان ادا میشن ولی هر کدام روش خاصی برای ارتباط برقرار کردن دارند). پس ما برای کار با پورتها بايد زبان هرکدام را ياد بگيريم.
بحث بعدی اين است که وقتی میگيم يه پورت بازه بايد توجه کنيد که برنامهای روی آن کامپيوتر نصب شده و اون پورت را باز کرده است (پورتها خود به خود باز نمیشوند). يک سری پورتها توسط خود سيستمعامل باز میشوند (يعنی به محض نصب سيستمعامل که خودش هم درواقع يه نرمافزاره) و نيازی نيست که برنامه ديگری برايش نصب کنيم. در مقابل، بعضی پورتهای ديگر توسط برنامههای جانبی باز میشوند.
به عنوان مثال وقتی میگم که پورت ۲۵ روی يک ip باز است، اين معنی را دارد که برنامهای روی اون کامپيوتر خاص وجود دارد که پورت ۲۵ را باز کرده و من وقتی از طريق کامپيوتر خودم با آن پورت کار میکنم در واقع دارم با آن برنامه خاص (که اون پورت را باز کرده) صحبت میکنم.
حالا يه سوال پيش میآد که چرا اصلا يه نرمافزار بايد پورت باز کنه و اينکه کدام نرمافزارها بايد پورت باز کنند؟
جواب اين است که هر برنامهای که بخواهد از طريق شبکه (يعنی از راه دور اصطلاحا remote) قابل دسترس باشه بايد يه پورت باز کنه. پس يک برنامهای که نيازی به برقراری ارتباط شبکهای ندارد (مثلا يه نرمافزار گرافيکی) نبايد و نشايد که پورت باز کند.
بايد ببينيم که از طريق چه برنامهای میتوان با پورتها صحبت کرد ( البته با هرکدام به روش خودشان )؟
برای اينکار از دو نرمافزار به نامهای telnet و nc استفاده میکنيم. telnet که در خود سيستمعامل وجود دارد و nc را هم که جلسه قبل داونلود کرديم.
حالا چگونه از اين دو نرمافزارها میتوان استفاده کنيم؟ ۱- استفاده از telnet :
اگر بخواهيم با ip ای به شماره 194.225.184.13 از طريق پورت 25 صحبت کنيم بايد بنويسيم:
telnet 194.225.184.13 25و بعد اينکه ارتباط برقرار شد بايد شروع کنيم و از طريق زبان پورت ۲۵ با آن صحبت کنيم. ۲- استفاده از nc :
اگر بخواهيم همان کار را با netcat انجام دهيم، بايد بنويسيم:
nc -v 194.225.184.13 25و بعد از برقراری ارتباط شروع به صحبت کنيم.
- با پورت ۱۳ صحبت کنيم
نام ديگر اون daytime است و کارش هم اينه که زمان و تاريخ رو در اون کامپيوتر به ما میده. اين پورت اصولا خيلی سر راسته. فقط کافيه که بهش وصل شيم تا اطلاعاتشون بيرون بريزه. البته اين پورت رو خيلی از کامپيوترها بسته است. (يادتون باشه که وقتی میتوان با يه پورت کار کرد که باز باشد).
حالا میخوايم با پورت ۱۳ از ip شماره 194.225.184.13 صحبت کنم. يکی از اين دو دستور را مینويسم:
telnet 194.225.184.13 13
nc -v 194.225.184.13 13البته در آن دستورات به جای عدد ۱۳ میتوان معادلش را نوشت که daytime است.
و جواب میشنوم:
1133 AM 10/5/2002بله، با اين پورت ارتباط برقرار کرديم و اطلاعاتش رو دريافت کرديم. اين اطلاعات معمولا به درد اين میخورد که مکان جغرافيايی اون کامپيوتر را حدس بزنيم (البته اگر زمان اون کامپيوتر صحيح باشد). به عنوان مثال اين کامپيوتر خاص در ايران است چون ساعتش همزمان با ايران است.
- با پورت ۷ صحبت کنيم
اسم اين پورت echo است. من اين پورت رو پورت ميمون میگم چون هرچی که شما براش بنويسيد را تقليد میکنه و همانها را براتون پس میفرستد. مثلا من به پورت ۷ کامپيوتری با ip شماره 194.225.184.13 تلنت يا nc میکنم.
telnet 194.225.184.13 7
nc -v 194.225.184.13 7بعد از برقراری ارتباط، هر چی من بنويسم، اون برام پس میفرسته. مثلا اگه تايپ کنم Ali1000 و Enter بزنيم، جواب میشنوم، Ali1000 ... خودتون امتحان کنيد تا ببينيد. برای تمام شدن کار بايد دکمه Ctrl+C را فشار دهيم تا اين ميمون بازی تموم بشه.
پس کار کردن با اين پورت هم زياد سخت نيست.
- پورت ۷۹ چيست؟
پورت ۷۹ را پورت finger ميگويند. کاربرد اين پورت به اوايل ايجاد اينترنت برميگرده و کاربردش مخصوص سيستمعامل يونيکس بودهاست (الان هم تقريبا فقط در خانواده سيستمهای يونيکس اين پورت قابل استفاده است).
وقتي اين پورت روی سيستمعامل يونيکس باز باشه، ميشه با يک request ساده فهميد که از بين کساني که در آن سيستم account دارند، کدامها on هستند (يعني کدامها به سيستم login شدهاند). برنامهاي که پورت ۷۹ رو در يک سيستم باز ميکنه، finger server ميگن و چون مختص سيستمعامل يونيکس است، ميتونين از عبارت Finger Deamon استفاده کنين. حالا که پورت ۷۹ روي سيستم باز شد، شما ميتونين با اون ارتباط برقرار کنين.
- با پورت ۷۹ صحبت کنيم
همانطور که ميدانيد، براي صحبت کردن با پورتها از دو برنامه telnet و nc ميشه استفاده کرد. در مورد پورت ۷۹ يه نرمافزار ديگر به نام finger در تمام سيستمعاملهای يونيکس و برخي سيستمعاملهاي ويندوز وجود دارد که علاوه بر دو برنامه قبلي، اونم ميشه به کار برد.
فرض کنيد که ميخوام با پورت ۷۹ در کامپيوتری به اسم router2.iums.ac.ir ارتباط برقرا کنم. برای اين کار يکي از سه دستور زير را استفاده ميکنم:
telnet router2.iums.ac.ir 79nc -v router2.iums.ac.ir 79finger .@router2.iums.ac.irدقت کنيد که در دو دستور اول شماره پورت مشخص شده ولي دستور آخري نه، چون دستور finger فقط براي همينکار استفاده ميشه و نميتوان باهاش با پورت ديگهای ارتباط برقرار کرد. ضمنا به ساختار دستور آخر توجه کنيد. بعد از اجرای دستور، جواب ميشنوم:
Line User Host(s) Idle Location 33 tty 33 whgh Async interface 0 34 tty 34 najahan Async interface 0 35 tty 35 sadf Async interface 0 36 tty 36 abokho Async interface 0 38 tty 38 whgh Async interface 0 39 tty 39 bzamani Async interface 0 40 tty 40 saeedmah Async interface 0 41 tty 41 mfaizi Async interface 0 42 tty 42 gourabi Async interface 0 43 tty 43 farhadz Async interface 0 44 tty 44 arbks Async interface 0 45 tty 45 mhalavi Async interface 0 46 tty 46 farhood Async interface 0 47 tty 47 staavoni Async interface 0 48 tty 48 whgh Async interface 0* 66 vty 0 idle 0 217.218.84.58 Interface User Mode Idle Peer Addressنکته مهم اين است که اطلاعاتي که به کمک پورت ۷۹ به دست ميآد، خيلي بستگي به سروري داره که اين اطلاعات رو ميفرسته. بعضي از سيستمها علاوه بر نام افراد (username) که در اين مثال ديده ميشه، نام و نام خانوادگي افراد، ساعت و محل login کردن و ... را نمايش ميدهند. اما چيزي که هميشه وجود دارد و مشترک است، username هاست که از نقطه نظر يک هکر بسيار ارزشمند است. در اين مثال ما اکانتهايي به اسم najahan ،whgh و ... در اين سرور وجود دارد و افراد مربوطه در حال حاضر login کردهاند. اگر اکانتي موجود باشد ولي فرد مورد نظر در حال حاضر از آن اکانت وارد نشده باشد، نمايش داده نميشود. اين ليست فقط براي اکانتهای فعال است. پس نتايجي که شما در ارتباط با اين سرور کسب ميکنيد، با نتايجي که من نوشتم متفاوت خواهد بود.
- پورت ۸۰ چيست؟
پورت ۸۰ يکی از مهمترين پورتهاست. دنيای وب (صفحات اينترنتی) بر اساس همين پورت کار میکنه. توضيح اينکه وقتی به يه سايت وصل میشيم و صفحه وب را درخواست میکنيم، در واقع مرورگر اينترنتی به پورت ۸۰ اون کامپيوتر وصل میشه و اطلاعات رو میگيره (البته بعد از گرفتن اطلاعات اون رو تفسير میکنه و به صورت يه صفحه نشون میده - دقت کنيد که اطلاعات در واقع به صورت يک سری تگ HTML است ).
- با پورت ۸۰ صحبت کنيم
حالا ما میخواهيم با پورت ۸۰ يک کامپيوتر صحبت کنيم ولی به کمک telnet و nc.
اول بايد يه connection (اتصال) با پورت ۸۰ برقرار کنيم (مثلا برای سايت hotmail.com بايد بنويسم):
telnet [. برای
مشاهده لینکها در سایت عضو شوید] 80
nc -v [. برای
مشاهده لینکها در سایت عضو شوید] 80پس اول بايد يکی از دستورات بالا را استفاده کنيم. من هميشه توصيهام استفاده از nc بوده و خواهد بود.
حالا بايد شروع به صحبت با پورت ۸۰ کنيم. من فعلا دو تا جمله براتون میگم و بقيهاش بمونه واسه بعد. دقت کنيد که موقع کار با پورت ۸۰ با تلنت (نه nc) دستوراتی که ما مینويسيم، نمايش داده نمیشود ولی کار میکنه.
۱- اولين جمله اينه: GET / HTTP/1.0 و بعدش دوتا Enter
به فاصلهها دقت کنيد. دو طرف / ی که بعد از GET است، فاصله وجود دارد. اين جمله به پورت ۸۰ میگه که هرچی در header داره، نشون بده. و جواب میشنوم:
HTTP/1.0 302 Moved Temporarily
Server: Microsoft-IIS/5.0
Date: Thu, 05 Dec 2002 12:02:51 GMT
Location: [. برای
مشاهده لینکها در سایت عضو شوید]
X-Cache: MISS from cache5.neda.net.ir
Connection: close
۲- دومين جمله اينه: GET / what/ever و بعدش دوتا Enter
به فاصلهها دقت کنيد. اين دستور باعث ميشه که هر چی داره، رو کنه.
البته توجه کنيد که ما مسير را مشخص نکرديم. اين حالت که بدون مسير است خيلی وقتها کار نمیکنه (مثل همين مثال !!)
گاهی پيش میآد که يک سری دستورات خاص را هميشه بايد پشت سرهم به يه پورت خاص بفرستيم و بخواهيم در وقت صرفهجويی کنيم. مثلا همين جمله GET / HTTP/1.0 و دو Enter پشت سرهم که هميشه استفاده میکنيم. در اين موارد میتوان اين دستورات را در يک فايل تايپ کرد (همراه با Enter ها که بايد موقع نوشتن حتما بزنيد) و بعد مثلا با نام ali.txt ذخيره کنيد و بعد يکی از دستورات زير را بنويسيم:
nc -v [. برای
مشاهده لینکها در سایت عضو شوید] 80 < ali.txt
type ali.txt | nc -v [. برای
مشاهده لینکها در سایت عضو شوید] 80که همان کارهای بالايی را انجام ميده.
- حالا ميخوام مسير رو مشخص کنم
مثلا فرض کنيد که ميخوام فايلي به اسم index.html را از مسير startup در سايتي به اسم [. برای
مشاهده لینکها در سایت عضو شوید] داونلود کنيم. اول يه nc ميکنيم به سايت. بعد مينويسيم:
GET /startup/index.html HTTP/1.0بعد دو تا Enter ميزنيم.
اين مثال نشون ميده که چطوري مسير رو ميشه مشخص کرد. همين کار رو ميتونيم براي فايلهايي مثل فايلهاي گرافيکي و ... انجام بديم و حتي ميتونيد اطلاعاتي که ميرسه رو در يک فايل ذخيره کنيد. براي اينکار مينويسيد:
nc -v [. برای
مشاهده لینکها در سایت عضو شوید] 80 > index.html(اين کاري که کرديم با موردي که در بالا نوشتيم فرق ميکنه! در بالا دستورات GET رو تو يه فايل مينوشتيم و ميفرستاديم که اجرا بشه ولي الان داريم نتايجي که بر ميگرده رو در يک فايل ذخيره ميکنيم!) ميشه اين دوتا رو ترکيب کرد مثلا نوشت:
nc -v [. برای
مشاهده لینکها در سایت عضو شوید] 80 < dastoorat.txt > index.html
- پورت ۱۱۰ چيست؟
پورت ۱۱۰ براي پروتکل POP3 استفاده ميشود. عبارت POP3 مخفف Post Office Protocol Version 3 است که اين پروتکل براي خواندن E-mail استفاده ميشود. براي کار با اين پروتکل بايد آدرس POP Server مربوط به E-mail خود را بدانيد. براي اينکار ميتوان از nslookup استفاده کرد و سطري که عبارت MX دارد را خواند (قبلا چگونگي کار را گفتم و الان ديگه توضيح نميدم). دقت کنيد که در مورد سايتهاي کوچک، آدرس POP Server همان آدرس SMTP Server است ولي در سايتهاي بزرگ (مثل ياهو ) سرورهاي مربوطه جداست ( يعني دو اسم مختلف دارد ). در مورد سايت ياهو POP Server در آدرس pop.mail.yahoo.com قرار دارد. ( من جديدا اين سرور رو تست نکردم، خودتون تست کنيد و مطمئن بشيد ). من امروز ميخوام از E-mail هاي سايت noavar.com استفاده کنم که هم خيلي عاليه و هم ايرانيه! POP Server اين سايت در آدرس mail.noavar.com قرار دارد.
- با پورت ۱۱۰ صحبت کنيم
فرض کنيد که من در سرور mail.noavar.com يک اکانت به اسم araztest و پسورد mypass دارم. (شما هم اگه ميخواهيد تست کنيد، يک اکانت براي خودتون در اين سايت باز کنيد). حالا ميخوام با پورت ۱۱۰ صحبت کنم، بنابراين از يکي از دو دستور زير استفاده ميکنم: telnet mail.noavar.com 110nc -v mail.noavar.com 110و جواب ميشنوم:
+OK POP3 server [. برای
مشاهده لینکها در سایت عضو شوید] readyدقت کنيد که اگه از تلنت استفاده کنيد،چيزهايي که شما تايپ ميکنيد، ديده نميشود و نميتونيد از دکمه Backspace استفاده کنيد. حالا ميخوام بگم که اسم اکانت من araztest است، پس مينويسم: user araztestو جواب ميشنوم:
+OK Please enter password for araztestحالا ميخوام پسوردم رو بگم که اجازه صادر بشه! مينويسم: pass mypassو جواب ميشنوم:
+OK password for user araztest Acceptedحالا ميخوام بدونم که جمعا چندتا mail رسيده است و حجم کل چقدر است. مينويسم: statو جواب ميشنوم:
+OK 2 25924يعني براي من ۲ تا پيغام رسيده و حجم کل پيامهاي رسيده، ۲۵۹۲۴ بايت است. حالا ميخوام ليست پيامها رو داشته باشم، مينويسم: listو جواب ميشنوم:
+OK1 702 24923.اين يعني پيغام شماره يک (پيغام جديدتر) حجم ۷۰ بايت دارد و پيغام شماره دو حجم ۲۴۹۲۳ بايت دارد. حالا ميخوام پيغام شماره ۱ را بخونم. مينويسم: retr 1و جواب ميشنوم:
+OK 70 octetsMessage-ID: <875808060@www.noavar.com>From: "ali" X-Mailer: NoavarTo: [. برای
مشاهده لینکها در سایت عضو شوید]IME-Version: 1.0Subject: salamDate: Thu, 13 Feb 2003 20:05:56salam, chetori�.حالا ميخواهم اين پيغام ( شماره يک ) رو پاک کنم، مينويسم: dele 1و جواب ميشنوم:
+OK Message 1 Marked for removal[ دقت کنيد که اين پيغام هنوز پاک نشده است و فقط علامت خورده که موقع خروج، پاک بشه. حالا ممکنه چندتا پيغام را مارک کنيد که حذف بشه ولي بعد بيخيال! ميشين. براي اينکه اين علامتها را حذف کنيد که موقع خروج ديگه پاک نشوند، ميتونيد بنويسيد: rsetو جواب ميشنوم:
+OK 1 70]
حالا اگه بخواهم خارج بشم (و علامتخوردهها پاک بشن)، مينويسم: quitو جواب ميشنوم:
+OK [. برای
مشاهده لینکها در سایت عضو شوید] signing off
- NetBIOS چيست؟
NetBIOS مخفف عبارت Network Basic Input/Output System است. NetBIOS ابزاري است که اجازه به اشتراک گذاشتن منابع رو به ما ميده. ما برای به اشتراک گذاشتن فايلها و يا پرينتر ميتونيم از اين پروتکل استفاده کنيم. نکته مهم اين است که NetBIOS فقط در سيستمعامل ويندوز معني داره (اگرچه ابزارهايي مثل Samba در لينوکس ميتونن اونو شبيه سازي کنن ولي بحث ما خود پروتکل NetBIOS است). وقتي NetBIOS در ويندوز فعال باشد، بلافاصله سه تا پورت براي استفاده باز ميشوند. پورت مهم و اصلي پورت ۱۳۹ در tcp است که NetBIOS را هم با اين پورت ميشناسن. دو پورت ديگر، از نوع udp هستند و عبارتند از پورت ۱۳۷ براي name service و پورت ۱۳۹ براي Datagram service . وقتي قرار باشه که يک سيستمعامل ويندوز هک بشه ( خصوصا اگه کلاينت باشه ) يکي از اولين مواردي که به ذهن ميرسه، استفاده از NetBIOS ه.
حالا ببينيم منظور از به اشتراک گذاشتن (Sharing) در مورد فايلها و پرينترها چيست؟
به اشتراک گذاشتن در مورد فايلها يعني قرار دادن تعدادي فايل در يک کامپيوتر خاص به طوريکه توسط ساير کامپيوترها قابل دسترسي و استفاده باشه. در مورد پرينتر به اشتراک گذاشتن يعني طوري چاپگر متصل به يک کامپيوتر را تنظيم کنيم که توسط ساير کامپيوترها هم قابل استفاده باشه. با توجه به اينکه در سيستمعاملهاي ويندوز به صورت پيشفرض NetBIOS فعال است، پس ميتوان به تعدادي از فايلها و فولدرهاي تعدادي از کامپيوترهاي روي شبکه دسترسي داشت و فايلها را خواند و حتي کپي يا پاک کرد.
- چگونه با پورت ۱۳۹ صحبت کنيم؟
۱- اولين کاري که ميکنيم اين است که براي پورت ۱۳۹ پورت اسکن ميکنيم تا ip هايي را که پورت ۱۳۹ در آنها باز است، پيدا کنيم. من اين کار را با nmap انجام ميدم. فرض کنيد که يک ip به شماره 217.218.84.29 را تست کرده و به نتيجه زير برسم:
Interesting ports on HOME-TU6U0AV86Y (217.218.84.29):Port State Service139/tcp open netbios-ssn Remote operating system guess: Windows Millenn... (Me), Win 2000, or WinXPاين خروجي اعلام ميکند که پورت ۱۳۹ باز است. پس ميشود از اين ip استفاده کرد.
۲- حالا ميخوام با اين پورت ارتباط برقرار کنم. اصولا بايد مثل سابق از telnet يا nc استفاده کنم ولي در مورد پورت ۱۳۹ روش ارتباطي فرق ميکند. کامنت پرامت را باز کرده و دستور زير را مينويسم: nbtstat -A 217.218.84.29دستور nbtstat يک ابزار خاص براي کار با NetBIOS است. دقت کنيد که از پارامتر A- با ip مربوطه استفاده کردم. (دستور nbtstat داراي پارامترهاي بسياري است که اگه ميخواين همه رو ببينين، بنويسين nbtstat و enter را بزنيد.)
حالا بحث اينه که اين دستور چه کاري ميکنه و خروجي به چه صورتي است:
اين دستور به ip مورد نظر وصل ميشه و از اون ميخواد ليست منابعي رو که به اشتراک گذاشته رو ليست کنه. در اين حالت ۲ حالت ممکنه اتفاق بيوفته:
الف) مواجه با پيغام Host not found بشم. اين يعني اينکه نميتونه ليست منابع را از اون کامپيوتر بگيره (يعني NetBIOS غير فعاله). يعني اگرچه پورت ۱۳۹ بازه ولي قابل استفاده نيست.
ب) ارتباط برقرار بشه و ليست منابع اشتراکي ليست بشه:
NetBIOS Remote Machine Name Table Name Type Status --------------------------------------------- HOME-TU6U0AV86Y<00> UNIQUE Registered MSHOME <00> GROUP Registered HOME-TU6U0AV86Y<20> UNIQUE Registered MSHOME <1E> GROUP Registered MAC Address = 00-53-45-00-00-00
۳- در اين نتايج چيزي که به درد ميخوره، سطري است که <20> دارد. اگه <20> نباشد، يعني نميتونين از اشتراک گذاري فايل استفاده کنيد ( به عبارت ساده تر بيخيال شو اين کامپيوتر رو ! ). در اين مثال ما اين سطر را داشتيم پس ادامه ميدهيم. حالا مينويسم: net view \\217.218.84.29حالا اگه گفتين چي ميشه؟ درسته! دو حالت ممکنه اتفاق بيوفته:
الف) پيغام بياد
System error 5 has occurred.Access is denied.اين يعني نميتونين ادامه بدين. به عبارت ديگه ايست! ولي يه کاري ميتونيد بکنيد و اون اينه که يه null session برقرار کنيد با اون کامپيوتر. اين حالت در مورد ويندوزهاي سري NT جواب ميده. مينويسيد: net use \\217.218.84.29\IPC$ "" /user:""حالا چرا ميگن null session ؟ دليلش اينه که يک ارتباط برقرار کردم با اون ip بدون username و بدون password . حالا اگه اين دستور جواب داد ميتونم دوباره دستور net view \\217.218.84.29 را تکرار کنم.
ب) ممکنه دستور ذکر شده جواب بده و مثلا جواب بده:
Shared resources at \\217.218.84.29Share name Type Used as Comment------------------------------------------------Printer Print Acrobat PDFWriterPrinter2 Print Acrobat DistillerSharedDocs DiskThe command completed successfully.عاليه. دقت کنيد که در اين کامپيوتر يک فايل (Disk) به اسم ShareDocs به اشتراک گذاشته شده (دو تاي باقي براي پرينتر است). حالا که رسيدم به اين اسم ديگه آخرين دستور را مينويسم.
۴- حالا وقتشه که واقعا عمل به اشتراک گذاشتن رو انجام بديم. براي اينکار بايد يک درايو انتخاب کنيد. حتما ميدونيد که درايو چيه. وقتي شما My Computer را دابل کليک کرده و باز ميکنيد، يک سري آيکون ميبينيد که هر کدام اسمي دارند. مثلا :A براي فلاپي و و و تا ميرسيد به cdrom که آخرين حرف را دارد. مثلا فرض کنيد که :K باشه. حالا بايد اسم درايو رو براي اشتراک گذاشتن انتخاب کنيد. براي اينکار حرف بعدي در زبان انگليسي رو به کار ببريد. چون در کامپيوتر من :K آخرين بود، من حرف بعدي يعني :L را انتخاب ميکنم و دستور زير را مينويسم: net use L: \\217.218.84.29\SharedDocsبه اسم درايو، ip و نام مربوطه که ShareDocs دقت کنيد. چون من اصطلاحا به صورت null session دارم ارتباط ميگيرم، ممکنه کار نکنه ولي اگه درست کار کنه جواب ميشنوم:
The command completed successfully.معرکه است!!! حالا My Computer رو باز کنيد و ببينيد که درايو جديد به ليست درايوها اضافه شده که ميتونين مثل درايوهاي معمولي با اون کار کنيد و فايل کپي کنيد و ...
۵- وقتي کار تموم شد ميتونيد درايو رو حذف کنيد. براي اينکار ميتونين روي درايو رايتکليک کنيد و Disconnect را انتخاب کنيد. و يا اينکه از دستور net use /delete L:استفاده کنيد.
- نکته نکته نکته
۱- يه روش جالب به جاي مرحله ۴ در بالا اينه که مثلا در مرورگر يا در run بنويسيد 217.218.84.29\\ که ip داراي اشتراک است و يا اينکه تايپ کنيد SharedDocsت\217.218.84.29\\ که اصولا بايد جواب بده ( ولي من خودم تست نکردم اينو ).
۲- من دارم به صورت استاندارد کار ميکنم. بعدا خواهم گفت که چطوري ميتونيم وقتي تو بعضي از مراحل متوقف ميشيم، اونو دور بزنيم.
۳- NetBIOS فقط براي کلاينتها نيست. من خودم يکبار سايت دانشگاه رو با اون هک کردم. البته با exploit کردن که بعدا خواهم گفت.
۴- اگه داريد يک کلاينت رو هک ميکنيد، بايد سريع عمل کنيد تا قبل از اينکه طرف disconnect کنه کار شما تموم شده باشه.
۵- روشهاي ديگري هم براي کار با NetBIOS هست که يکي از اون روشها استفاده از يک سري نرمافزارهاي خاص است که تو درس بعدي توضيح ميدم و نيز يک روش ديگه اعمال تغييرات در فايلهاي HOST و LMHOST و استفاده از find در سيستمعامل ويندوز است. ولي چون اين روش دنگ و فنگش زياده، جالب نيست.
۶- براي اينکه بتونيم با NetBIOS کار کنيم، علاوه بر اينکه در کامپيوتر طرف مقابل بايد فعال باشه، روي کامپيوتر خودمون هم فعال باشه. چون در حالت پيشفرض در کامپيوتر فعال است، معمولا مشکلي نيست.
- چگونه NetBIOS را روي کامپيوتر خودمان فعال يا غير فعال کنيم؟
براي غيرفعال کردن NetBIOS در ويندوز با توجه به نوع آن ويندوز روشهاي مختلفي هست. جدول پاييني براي همين موضوع طراحي شده است:
Win 2000Win XP HomeWin XP ProfessionalStart > Programs > Administrative Tools > Local Security Settings > Local Policies > Security Options > Additional restrictions of anonymous connections > Local policy setting > "No access without explicit anonymous permissions" > Ok Start > Programs > Administrative Tools > Local Security Settings > Local Policies > 1) Network Access: Do not allow anonymous enumeration of SAM accounts: Enabled 2) Network Access: Do not allow anonymous enumeration of SAM accounts and shares: Enabled Start > Run > regedit > HKEY_LOCAL_MACHINE > HKEY_LOCAL_MACHINE > SYSTEM > CurrentControlSet > Control > LSA > RestrictAnonymous=2ميتونيد به کمک فايروال يا روتر پورتهاي زير را ببنديد:
135 TCP DCE/RPC Portmapper137 TCP/UDP NetBIOS Name Service138 TCP/UDP NetBIOS Datagram Service139 TCP NetBIOS Session Service445 TCP Microsoft-DS (Windows 2000 CIFS/SMB)
۱- وقتي پورت ۱۳۹ رو ميبنديد، ديگه نميتونيد از NetBIOS استفاده کنيد ( مگر اينکه دوباره پورت رو به صورت فعال در آوريد). پس وقتي که کسي رو ميخواهيد هک کنيد، نياز داريد که براي مدت کوتاهي دوباره پورت رو فعال کنيد.
۲- ميبينيد که مثلا براي ويندوز ۲۰۰۰ به سه روش کار کنيد، در اين جدول فقط کافي است يکي رو اعمال کنيد.
۳- اگه بعد از غير فعال کردن، دوباره بخواهيد فعال کنيد، در مرحله آخر هر يک از روشهاي بالا، گزينهاي که مخالف گزينه ذکر شده در جدول است رو انتخاب کنيد، مثلا اگه در جدول Enabled را نوشتهايم، شما Disable را انتخاب کنيد.
- پورت ۲۱ چيست؟
پورت ۲۱ رو پورت ftp ميگن. ftp مخفف عبارت file transfer protocol است يعني پروتکل انتقال فايل. کاربرد اين پروتکل و اين پورت از زماني وجود داره که حتي وب (پورت ۸۰ ) هم چندان عمومي نشده بود. پس ميتونم بگم که يه پروتکل باستاني هستش. وقتي ميخواهيد با يک سرور از طريق اين پروتکل صحبت کنيد، بايد مطمئن بشين که سرويس مربوط به ftp روي اون کامپيوتر فعال باشه. به عبارت ديگه بايد يک ftp server روي اون کامپيوتر در حال اجرا باشه. حالا شما با اون کامپيوتر ميخواين ارتباط برقرار کنين، پس شما بايد از يک ftp client استفاده کنيد. پس شما کلاينت هستيد و دستگاه مقابل سرور!
حالا شايد بپرسين که کار ftp چيست؟
ftp براي انتقال فايل به کار ميره و اين انتقال فايل در دو جهت ممکنه که upload و download گفته ميشه. براي اينکه اينها رو قاطي نکنيد با هم فرض کنيد که کامپيوتر سرور بالای سر شما قرار گرفته، پس وقتي فايل رو از اون ميگيريد، فايل به سمت پايين ميآد (download) و وقتي فايل رو براي سرور ميفرستيد، حالت برعکس ميباشد و بهش ميگيم، upload کردن. و هر دو عبارت نوعي انتقال فايل محسوب ميشه. دقت کنيد که انتقال فايل از طريق پروتکلهاي ديگهاي هم امکانپذيره مثل web و ... ولي ما بحثمون همين پروتکل ftp است.
عبارت ديگهاي که راجع به اين پورت بايد ياد بگيريد، عبارت anonymous است. براي توضيح اين عبارت اول بايد بگم که وقتي شما ميخواهيد با سرور ارتباط برقرار کنيد، همينطوري کشکي که نيس! براي ارتباط با سرور از شما username و password پرسيده ميشه و اگه درست باشه ميتونين فايلها رو upload و download کنيد و تغيير بديد ( پس ميبينيد که اين پروتکل پروتکل حساسي است و اگه هک بشه خيلي کارها ميشه باهاش کرد). اين حالت که گفتم در حالتي ممکنه که شما username و password داشته باشيد. اما گاهي پيش ميآد که username و password نداريم و ميخوايم با پورت ftp يک سرور يا سايت ارتباط برقرار کنيم. در اين حالت معمولا فقط اجازه download به ما داده ميشه و اجازه upload و يا اعمال تغييرات در فايلها رو نداريم و اونو حالت anonymous يا ناشناس ميگن. در اين حالت وقتي از ما username خواسته ميشه، عبارت anonymous را تايپ ميکنيم و بعد که پسورد پرسيده ميشه، شما بايد E-mail تون رو وارد کنيد، ولي من ميگم که به جاي E-mail واقعي تون يه E-mail الکي بنويسين مثلا [. برای
مشاهده لینکها در سایت عضو شوید] !!
آدرسي که براي ftp با يه سرور استفاده ميکنيم به چه شکلي است؟
آدرسي که استفاده ميکنيم بستگي به سرور داره ولي معمولا ساختار ثابتي داره. ( اگه يادتون باشه واسه web مثلا مينوشتيم، [. برای
مشاهده لینکها در سایت عضو شوید] ) حالا براي ftp مينويسيم، ftp.far30.com پس مثلا براي سايت sazin.com مينويسيم، ftp.sazin.com که آدرس ftp سايت ميشه.
- چطوري يه سرور پيدا کنم که سرويس ftp روي اون فعال باشه؟
اين سوال دو حالت داره:
۱- ميخواهيد به صورت anonymous وارد بشين يعني username و password ندارين. براي اين حالت ميتونين از خيلي از سايتها استفاده کنيد. مثلا ميتونين از ftp.microsoft.com استفاده کنيد يا سايتهاي ديگه.
۲- اگه ميخوايد به صورت غير anonymous کار کنيد، حيطه عملتون محدود به سايتهايي ميشه که username و password واسه اون دارين. مثلا اگه شما سايتي روي اينترنت داشته باشيد ( چه سايت پولي و چه سايت مجاني مثلا در netfirms و geocities و ... ) به شما يک آدرس ftp و يک username و password تعلق ميگيره که از طريق اون کار ميکنيد. اگه سايت نداريد، ميتونيد يک سايت مجاني درست کنيد. مثلا ميتونيد از سايت geocities.com که متعلق به ياهو است استفاده کنيد. يا از سايتهای netfirms.com يا freeservers.com و... ولي بههر حال در يکي از اينها ثبتنام کنيد و username و password بگيريد. آدرسهاي ftp آنها هم که بهصورت ftp.geocities.com يا ftp.netfirms.com و... خواهد بود. (از من نخواين که طريقه ثبتنام در اين سايتها رو هم به شما ياد بدم! کار خيلي راحتيه.)
- با پورت ۲۱ صحبت کنيم
فرض کنيد من از يک سايت فرضي استفاده ميکنم که آدرس ftp اون باشه: ftp.somesite.com و username من باشه ali1000 و پسوردم هم يه چيزه ديگه باشه. حالا ميخوام از طريق پورت ۲۱ با اين سايت ارتباط برقرار کنم. در مورد اين پورت ديگه از nc و telnet استفاده نميکنم، بلکه از برنامهاي که در تمام ويندوزها هست، به اسم ftp کمک ميگيرم. در command prompt مينويسم: ftp ftp.somesite.comو جواب ميشنوم:
Connected to somesite.com.220 somesite Microsoft FTP Service (Version 5.0).User (somesite.comnone)): دقت کنيد که اين سايت ftp server اش از نوع Microsoft است، پس اين سرور از سيستمعامل ويندوز استفاده ميکنه ( دونستن اين نکات لازم نيست، ولي من توصيه ميکنم که هميشه به جزئيات توجه کنيد) دقت کنيد که از من username رو ميخواد، پس مينويسم: ali1000 و Enter رو فشار ميدم. جواب ميآد:
331 Password required for ali1000.Password:حالا ازم پسورد ميخواد و پسورد رو تايپ ميکنم. جواب ميشنوم:
230 User ali1000 logged in.ftp>اين نشون ميده که تونستم با پورت ۲۱ کامپيوتر مقابل ارتباط برقرار کرده و اصطلاحا يک session يا نشست! باهاش داشته باشم. اگه username يا password اشتباه بود، اون موقع ميگفت:
530 User ali1000 cannot log in.Login failed.ftp>من فرض ميکنم که session با موفقيت برقرار شده، حالا تايپ ميکنم:
ftp> helpو جواب ميشنوم:
Commands may be abbreviated. Commands are:! delete literal prompt send� debug lsput statusappend dir mdelete pwd traceasciidisconnect mdir quit typebell getmget quote userbinary glob mkdir recv verbosebye hash mls remotehelpcdhelpmputrenamecloselcd open rmdirاينها ليست دستوراتي است که ميتونيد استفاده کنيد. من فقط اونهايي که به صورت bold مشخص کردم رو توضيح خواهم داد. بقيه دستورات کمتر به کار ميرن.
- دستورات پايه براي اين پورت کدامند؟
+ دستور help و �
دستور help رو همين الان استفاده کرديم. دستور � هم معادل اونه.
+ دستور dir و ls
اين دو دستور نشون ميدن که در محل فعلي در سرور چه فايلها و فولدر (دايرکتوری) هايي وجود دارد. فرقشون اينه که وقتي از dir استفاده ميکنيد، اطلاعات بيشتري علاوه بر نام فايلها و فولدرها به ما ميده. من نوشتم dir و جواب شنيدم:
200 PORT command successful.150 Opening ASCII mode data connection for /bin/ls.12-28-02 02:18AM < DIR> db12-28-02 02:19AM < DIR> Special03-08-03 03:18AM < DIR> www226 Transfer complete.ftp: 135 bytes received in 0.02Seconds 6.75Kbytes/sec.ملاحظه ميفرماييد که سه تا فولدر (دايرکتوري) اينجا هست. (اگه با دستور dir آشنا نيستيد، يک کتاب داس بخونيد). اينها فولدر هستند چون عبارت < DIR> جلوي اونها نوشته شده است. نام اين فولدرها عبارتند از db و special و www
+ دستورات مرتبط با کار روي فولدرهايي که روي سرور (نه روي کامپيوتر خودمون) هستند، عبارنتد از: cd يا chdir ==> اين دستور براي وارد شدن داخل يک فولدر به کار ميره. mkdir ==> اين دستور براي ساختن يک فولدر جديد به کار ميره. rmdir ==> اين دستور براي پاک کردن يک فولدر موجود به کار ميره (به شرطي که آن فولدر خالي باشد)
براي کار با هر کدوم از اين دستورات کافي است، دستور مورد نظر را نوشته و بعد از يک کاراکتر فاصله، نام فولدر را بنويسيد، مثلا اگه بخوام وارد فولدر www بشم، مينويسم: cd wwwو جواب ميشنوم:
250 CWD command successful.ftp>اين جواب به آن معني است که وارد فولدر (دايرکتوري) www شدهام. حالا دوباره دستور dir را استفاده ميکنم و جواب ميگيرم:
200 PORT command successful.150 Opening ASCII mode data connection for /bin/ls.12-28-02 02:18AM < DIR> _private02-17-03 04:15PM 61982 1.jpg12-28-02 02:19AM < DIR> aspnet_client12-28-02 02:19AM < DIR> cgi-bin12-29-02 06:27PM 11285 default.asp12-28-02 02:19AM < DIR> images12-28-02 02:18AM 2494 postinfo.html226 Transfer complete.ftp: 1438 bytes received in 0.28Seconds 5.12Kbytes/sec.ftp>ملاحظه ميکنيد که سه تا فايل و سه تا دايرکتوري داريم. اونهايي که جلوشون نوشته < DIR> دايرکتوري هستند و اونايي که اين عبارت رو ندارند و جلوشون يه عدد نوشته شده ( که بيانگر حجم هر کدومشون هست ) فايل ميباشند.
در مورد دستور cd اگه بنويسم .. cd به فولدر قبلي بر ميگرديم، مثلا الان که تو فولدر www هستيم اگه .. cd رو بنويسم، يک فولدر به عقب برميگردم ( به حالت قبل از ورود به www )
يه دستور ديگه هم راجع به فولدرها هست و اونم دستور pwd است. اين دستور نشون ميده که ما الان تو کدوم فولدر از فولدرهاي سرور هستيم.
+ دستورات مرتبط با فايلها عبارنتد از: delete يا dele ==> اين دستور براي پاک کردن يک فايل به کار ميره. rename ==> اين دستور براي عوض کردن نام يک فايل به کار ميره.
مثلا اگه بخوام فايل default.asp رو پاک کنم، مينويسم delete default.asp
اگه بخوام فايل default.asp رو به index.htm تغيير نام بدم، مينويسم rename default.asp index.htm
+ دستورات مرتبط با فولدرهاي کامپيوتر خودمان:
اول دقت کنيد که در مورد پورت ۲۱ وقتي ميگوييم در کدام فولدر قرار داريم، اين مسئله دو معني داره. حالت اول محل فعلي ما روی سرور است. يعني کجاي سرور هستيم. تمام دستوراتي که راجع به فولدرها گفتم براي کار روي فولدرهاي سرور است. حالت دوم محل فعلي ما در کامپيوتر خودمون است. فرض کنيد که وارد فولدري در کامپيوتر سرور شدهايم والان ميخوايم فايل را داونلود کنيم به کامپيوتر خودمون. براي اينکه فايل به فولدر درستي در کامپيوتر خودمون منتقل بشه، بايد وارد يک فولدر خاص در کامپيوترمان بشيم. دستور مرتبط با اون دستور lcdاست. مثلا اگه بخوام وارد فولدر araz از درايو :C بشم، مينويسم: lcd c:/araz
- دستورات اصلي (upload و download فايل) کدامند؟
قبل از اينکه اين دستورات رو بگم، انواع فايل رو بگم:
==> فايلهاي ascii : فايلهايي که حالت متني دارند، مثل فايلهاي txt و html و asp و php و rtf و ...
==> فايلهاي binary : فايلهايي که متني نيستند، مثل فايلهاي گرافيکي، مولتيمديا، database ، doc و ...
وقتي ميخواهيم فايل رو داونلود يا upload کنيم، بايد قبل از انتقال فايل نوع اون رو تنظيم کنيم. دو تا دستور براي اينکار داريم:
+ دستور ascii يا asc : يعني ميخواهيم به صورت اسکي عمل انتقال انجام شود.
+ دستور binary يا bin : يعني ميخواهيم به صورت باينري عمل انتقال انجام شود.
+دستور prompt: وقتي تعداد زيادي فايل رو قرار باشه منتقل کنيم، و از دستور مربوط به upload يا download استفاده ميکنيم، هر بار که فايلي ميخواهد منتقل شود، از ما سوال ميکند که آيا ميخواهيد اين فايل منتقل شود يا نه. فرض کنيد که ميخواهيد مثلا ۱۰۰ فايل رو منتقل کنيد، در اين موارد ۱۰۰ بار از شما اين سوال پرسيده ميشود. براي اينکه اين حالت رو غير فعال کنيم، مينويسيم prompt تا غيرفعال شود، اگه يه بار ديگه همين دستور رو بنويسيم، دوباره فعال ميشه و قسعليهذا !
+ دستورهاي مربوط به upload فايل:
دستور put: اين دستور يک فايل رو از کامپيوتر ما به سرور منتقل ميکنه (از فولدر فعلي کامپيوتر ما به فولدر فعلي کامپيوتر سرور). مثلا اگه بخوام فايلي به اسم ali.jpg رو upload کنم، اگه در حالت ascii باشم، اول بايد به حالت binary تغيير حالت بدم و بعد بنويسم: put ali.jpgو جواب ميشنوم:
200 PORT command successful.150 Opening BINARY mode data connection for ali.jpg.226 Transfer complete.ftp: 21010 bytes sent in 0.02Seconds 1050.50Kbytes/sec.ftp>دستور mput: اين دستور چند فايل رو upload ميکند، مثلا اگه بخوام همه فايلهاي htm که اسمشون با کاراکتر s شروع ميشه رو منتقل کنم، ميتويسم (البته بايد قبلش به حالت ascii تغيير حالت داده باشم): mput s*.htm+ دستورهاي مربوط به download فايل:
دستور get: اين دستور يک فايل رو از سرور به کامپيوتر ما منتقل ميکنه (از فولدر فعلي سرور ما به فولدر فعلي کامپيوتر ما). مثلا اگه بخوام فايلي به اسم default.asp رو download کنم، مينويسم: get default.aspدستور mget: اين دستور چند فايل رو download ميکند، مثلا اگه بخوام همه فايلهاي htm که اسمشون با کاراکتر s شروع ميشه رو منتقل کنم، ميتويسم: mget s*.htm
- چگونه کار را خاتمه دهيم؟
+ اول بايد session را خاتمه دهيم. براي اينکار ميتونيد از يکي از دو دستور close يا disconnect استفاده کنيم.
+ بعد، براي خروج از ftp بايد از يکي از دو دستور quit يا bye استفاده کنيم.
- حالت anonymous چه فرقي با حالت بالا دارد؟
هيچ فرقي در روش کانکت شدن، ندارد. تنها فرق در username و password است که به ترتيب، anonymous و e-mail رو استفاده ميکنيم. و نيز همونطور که قبلا گقتم بعد از کانکشن به صورت anonymous اجازه upload يا اعمال تغييرات روي server رو نداريم.
- چه نرمافزارهاي گرافيکي براي کار کار با ftp وجود دارد؟
نرمافزارهاي گرافيکي زيادي براي اينکار وجود دارند، مثل fetch براي کامپيوترهاي Macintosh و نرمافزارهاي WS_FTP و CuteFtp و WinFTP و... براي ويندوز که هيچکدوم مفت نميارزند!!
- راحتترين روش کار با اين پورت به نظر شما چيست؟
راحتترين روش ممکن، استفاده از web browser کامپيوترتون مثل internet explorer است! در اين حالت دقيقا مثل اين است که داريد با فولدرهاي کامپيوتر خودتون کار مي کنيد. ميتونيد براي download فايل رو فايل مورد نظر دابلکليک کنيد و براي upload ميتونيد فايل رو از بيرون به مرورگر drag & drop يا copy & paste کنيد!
+ اگه بخواين به صورت anonymous مثلا به سايت microsoft وارد شويد، کافي است در مرورگر بنويسيد: ftp://ftp.microsoft.com و Enter را فشار دهيد.
+ اگه بخواين به صورت غير anonymous مثلا به سايت ftp.somesite.com که username شما براي آن سايت ali1000 است وارد شويد، در مرورگر مينويسيد: ftp://ali1000@ftp.microsoft.com و Enter را فشار ميدهيد. در اين حالت، پنجرهاي باز شده و از شما پسورد ميخواهد و شما پسورد را نوشته و بعد از تاييد، وارد پورت ۲۱ اون کامپيوتر ميشين.
الان به جايی رسيدهايم که میتوانيم بحث پورتها را شروع کنيم. اولين نکتهای که بايد بگم اين است که ابزاری که به کمک آن با پورتها صحبت میکنيم در همه پورتها يکی است ولی هر پورتی زبان مخصوص خود دارد (درست مثل زبانهای مختلف در جهان که همشون از طريق زبان و دهان ادا میشن ولی هر کدام روش خاصی برای ارتباط برقرار کردن دارند). پس ما برای کار با پورتها بايد زبان هرکدام را ياد بگيريم.
بحث بعدی اين است که وقتی میگيم يه پورت بازه بايد توجه کنيد که برنامهای روی آن کامپيوتر نصب شده و اون پورت را باز کرده است (پورتها خود به خود باز نمیشوند). يک سری پورتها توسط خود سيستمعامل باز میشوند (يعنی به محض نصب سيستمعامل که خودش هم درواقع يه نرمافزاره) و نيازی نيست که برنامه ديگری برايش نصب کنيم. در مقابل، بعضی پورتهای ديگر توسط برنامههای جانبی باز میشوند.
به عنوان مثال وقتی میگم که پورت ۲۵ روی يک ip باز است، اين معنی را دارد که برنامهای روی اون کامپيوتر خاص وجود دارد که پورت ۲۵ را باز کرده و من وقتی از طريق کامپيوتر خودم با آن پورت کار میکنم در واقع دارم با آن برنامه خاص (که اون پورت را باز کرده) صحبت میکنم.
حالا يه سوال پيش میآد که چرا اصلا يه نرمافزار بايد پورت باز کنه و اينکه کدام نرمافزارها بايد پورت باز کنند؟
جواب اين است که هر برنامهای که بخواهد از طريق شبکه (يعنی از راه دور اصطلاحا remote) قابل دسترس باشه بايد يه پورت باز کنه. پس يک برنامهای که نيازی به برقراری ارتباط شبکهای ندارد (مثلا يه نرمافزار گرافيکی) نبايد و نشايد که پورت باز کند.
بايد ببينيم که از طريق چه برنامهای میتوان با پورتها صحبت کرد ( البته با هرکدام به روش خودشان )؟
برای اينکار از دو نرمافزار به نامهای telnet و nc استفاده میکنيم. telnet که در خود سيستمعامل وجود دارد و nc را هم که جلسه قبل داونلود کرديم.
حالا چگونه از اين دو نرمافزارها میتوان استفاده کنيم؟ ۱- استفاده از telnet :
اگر بخواهيم با ip ای به شماره 194.225.184.13 از طريق پورت 25 صحبت کنيم بايد بنويسيم:
telnet 194.225.184.13 25و بعد اينکه ارتباط برقرار شد بايد شروع کنيم و از طريق زبان پورت ۲۵ با آن صحبت کنيم. ۲- استفاده از nc :
اگر بخواهيم همان کار را با netcat انجام دهيم، بايد بنويسيم:
nc -v 194.225.184.13 25و بعد از برقراری ارتباط شروع به صحبت کنيم.
- با پورت ۱۳ صحبت کنيم
نام ديگر اون daytime است و کارش هم اينه که زمان و تاريخ رو در اون کامپيوتر به ما میده. اين پورت اصولا خيلی سر راسته. فقط کافيه که بهش وصل شيم تا اطلاعاتشون بيرون بريزه. البته اين پورت رو خيلی از کامپيوترها بسته است. (يادتون باشه که وقتی میتوان با يه پورت کار کرد که باز باشد).
حالا میخوايم با پورت ۱۳ از ip شماره 194.225.184.13 صحبت کنم. يکی از اين دو دستور را مینويسم:
telnet 194.225.184.13 13
nc -v 194.225.184.13 13البته در آن دستورات به جای عدد ۱۳ میتوان معادلش را نوشت که daytime است.
و جواب میشنوم:
1133 AM 10/5/2002
بله، با اين پورت ارتباط برقرار کرديم و اطلاعاتش رو دريافت کرديم. اين اطلاعات معمولا به درد اين میخورد که مکان جغرافيايی اون کامپيوتر را حدس بزنيم (البته اگر زمان اون کامپيوتر صحيح باشد). به عنوان مثال اين کامپيوتر خاص در ايران است چون ساعتش همزمان با ايران است.
- با پورت ۷ صحبت کنيم
اسم اين پورت echo است. من اين پورت رو پورت ميمون میگم چون هرچی که شما براش بنويسيد را تقليد میکنه و همانها را براتون پس میفرستد. مثلا من به پورت ۷ کامپيوتری با ip شماره 194.225.184.13 تلنت يا nc میکنم.
telnet 194.225.184.13 7
nc -v 194.225.184.13 7بعد از برقراری ارتباط، هر چی من بنويسم، اون برام پس میفرسته. مثلا اگه تايپ کنم Ali1000 و Enter بزنيم، جواب میشنوم، Ali1000 ... خودتون امتحان کنيد تا ببينيد. برای تمام شدن کار بايد دکمه Ctrl+C را فشار دهيم تا اين ميمون بازی تموم بشه.
پس کار کردن با اين پورت هم زياد سخت نيست.
- پورت ۷۹ چيست؟
پورت ۷۹ را پورت finger ميگويند. کاربرد اين پورت به اوايل ايجاد اينترنت برميگرده و کاربردش مخصوص سيستمعامل يونيکس بودهاست (الان هم تقريبا فقط در خانواده سيستمهای يونيکس اين پورت قابل استفاده است).
وقتي اين پورت روی سيستمعامل يونيکس باز باشه، ميشه با يک request ساده فهميد که از بين کساني که در آن سيستم account دارند، کدامها on هستند (يعني کدامها به سيستم login شدهاند). برنامهاي که پورت ۷۹ رو در يک سيستم باز ميکنه، finger server ميگن و چون مختص سيستمعامل يونيکس است، ميتونين از عبارت Finger Deamon استفاده کنين. حالا که پورت ۷۹ روي سيستم باز شد، شما ميتونين با اون ارتباط برقرار کنين.
- با پورت ۷۹ صحبت کنيم
همانطور که ميدانيد، براي صحبت کردن با پورتها از دو برنامه telnet و nc ميشه استفاده کرد. در مورد پورت ۷۹ يه نرمافزار ديگر به نام finger در تمام سيستمعاملهای يونيکس و برخي سيستمعاملهاي ويندوز وجود دارد که علاوه بر دو برنامه قبلي، اونم ميشه به کار برد.
فرض کنيد که ميخوام با پورت ۷۹ در کامپيوتری به اسم router2.iums.ac.ir ارتباط برقرا کنم. برای اين کار يکي از سه دستور زير را استفاده ميکنم:
telnet router2.iums.ac.ir 79nc -v router2.iums.ac.ir 79finger .@router2.iums.ac.irدقت کنيد که در دو دستور اول شماره پورت مشخص شده ولي دستور آخري نه، چون دستور finger فقط براي همينکار استفاده ميشه و نميتوان باهاش با پورت ديگهای ارتباط برقرار کرد. ضمنا به ساختار دستور آخر توجه کنيد. بعد از اجرای دستور، جواب ميشنوم:
Line User Host(s) Idle Location 33 tty 33 whgh Async interface 0 34 tty 34 najahan Async interface 0 35 tty 35 sadf Async interface 0 36 tty 36 abokho Async interface 0 38 tty 38 whgh Async interface 0 39 tty 39 bzamani Async interface 0 40 tty 40 saeedmah Async interface 0 41 tty 41 mfaizi Async interface 0 42 tty 42 gourabi Async interface 0 43 tty 43 farhadz Async interface 0 44 tty 44 arbks Async interface 0 45 tty 45 mhalavi Async interface 0 46 tty 46 farhood Async interface 0 47 tty 47 staavoni Async interface 0 48 tty 48 whgh Async interface 0* 66 vty 0 idle 0 217.218.84.58 Interface User Mode Idle Peer Addressنکته مهم اين است که اطلاعاتي که به کمک پورت ۷۹ به دست ميآد، خيلي بستگي به سروري داره که اين اطلاعات رو ميفرسته. بعضي از سيستمها علاوه بر نام افراد (username) که در اين مثال ديده ميشه، نام و نام خانوادگي افراد، ساعت و محل login کردن و ... را نمايش ميدهند. اما چيزي که هميشه وجود دارد و مشترک است، username هاست که از نقطه نظر يک هکر بسيار ارزشمند است. در اين مثال ما اکانتهايي به اسم najahan ،whgh و ... در اين سرور وجود دارد و افراد مربوطه در حال حاضر login کردهاند. اگر اکانتي موجود باشد ولي فرد مورد نظر در حال حاضر از آن اکانت وارد نشده باشد، نمايش داده نميشود. اين ليست فقط براي اکانتهای فعال است. پس نتايجي که شما در ارتباط با اين سرور کسب ميکنيد، با نتايجي که من نوشتم متفاوت خواهد بود.
- پورت ۸۰ چيست؟
پورت ۸۰ يکی از مهمترين پورتهاست. دنيای وب (صفحات اينترنتی) بر اساس همين پورت کار میکنه. توضيح اينکه وقتی به يه سايت وصل میشيم و صفحه وب را درخواست میکنيم، در واقع مرورگر اينترنتی به پورت ۸۰ اون کامپيوتر وصل میشه و اطلاعات رو میگيره (البته بعد از گرفتن اطلاعات اون رو تفسير میکنه و به صورت يه صفحه نشون میده - دقت کنيد که اطلاعات در واقع به صورت يک سری تگ HTML است ).
- با پورت ۸۰ صحبت کنيم
حالا ما میخواهيم با پورت ۸۰ يک کامپيوتر صحبت کنيم ولی به کمک telnet و nc.
اول بايد يه connection (اتصال) با پورت ۸۰ برقرار کنيم (مثلا برای سايت hotmail.com بايد بنويسم):
telnet [. برای
مشاهده لینکها در سایت عضو شوید] 80
nc -v [. برای
مشاهده لینکها در سایت عضو شوید] 80پس اول بايد يکی از دستورات بالا را استفاده کنيم. من هميشه توصيهام استفاده از nc بوده و خواهد بود.
حالا بايد شروع به صحبت با پورت ۸۰ کنيم. من فعلا دو تا جمله براتون میگم و بقيهاش بمونه واسه بعد. دقت کنيد که موقع کار با پورت ۸۰ با تلنت (نه nc) دستوراتی که ما مینويسيم، نمايش داده نمیشود ولی کار میکنه.
۱- اولين جمله اينه: GET / HTTP/1.0 و بعدش دوتا Enter
به فاصلهها دقت کنيد. دو طرف / ی که بعد از GET است، فاصله وجود دارد. اين جمله به پورت ۸۰ میگه که هرچی در header داره، نشون بده. و جواب میشنوم:
HTTP/1.0 302 Moved Temporarily
Server: Microsoft-IIS/5.0
Date: Thu, 05 Dec 2002 12:02:51 GMT
Location: [. برای
مشاهده لینکها در سایت عضو شوید]
X-Cache: MISS from cache5.neda.net.ir
Connection: close
۲- دومين جمله اينه: GET / what/ever و بعدش دوتا Enter
به فاصلهها دقت کنيد. اين دستور باعث ميشه که هر چی داره، رو کنه.
البته توجه کنيد که ما مسير را مشخص نکرديم. اين حالت که بدون مسير است خيلی وقتها کار نمیکنه (مثل همين مثال !!)
گاهی پيش میآد که يک سری دستورات خاص را هميشه بايد پشت سرهم به يه پورت خاص بفرستيم و بخواهيم در وقت صرفهجويی کنيم. مثلا همين جمله GET / HTTP/1.0 و دو Enter پشت سرهم که هميشه استفاده میکنيم. در اين موارد میتوان اين دستورات را در يک فايل تايپ کرد (همراه با Enter ها که بايد موقع نوشتن حتما بزنيد) و بعد مثلا با نام ali.txt ذخيره کنيد و بعد يکی از دستورات زير را بنويسيم:
nc -v [. برای
مشاهده لینکها در سایت عضو شوید] 80 < ali.txt
type ali.txt | nc -v [. برای
مشاهده لینکها در سایت عضو شوید] 80که همان کارهای بالايی را انجام ميده.
- حالا ميخوام مسير رو مشخص کنم
مثلا فرض کنيد که ميخوام فايلي به اسم index.html را از مسير startup در سايتي به اسم [. برای
مشاهده لینکها در سایت عضو شوید] داونلود کنيم. اول يه nc ميکنيم به سايت. بعد مينويسيم:
GET /startup/index.html HTTP/1.0بعد دو تا Enter ميزنيم.
اين مثال نشون ميده که چطوري مسير رو ميشه مشخص کرد. همين کار رو ميتونيم براي فايلهايي مثل فايلهاي گرافيکي و ... انجام بديم و حتي ميتونيد اطلاعاتي که ميرسه رو در يک فايل ذخيره کنيد. براي اينکار مينويسيد:
nc -v [. برای
مشاهده لینکها در سایت عضو شوید] 80 > index.html(اين کاري که کرديم با موردي که در بالا نوشتيم فرق ميکنه! در بالا دستورات GET رو تو يه فايل مينوشتيم و ميفرستاديم که اجرا بشه ولي الان داريم نتايجي که بر ميگرده رو در يک فايل ذخيره ميکنيم!) ميشه اين دوتا رو ترکيب کرد مثلا نوشت:
nc -v [. برای
مشاهده لینکها در سایت عضو شوید] 80 < dastoorat.txt > index.html
- پورت ۱۱۰ چيست؟
پورت ۱۱۰ براي پروتکل POP3 استفاده ميشود. عبارت POP3 مخفف Post Office Protocol Version 3 است که اين پروتکل براي خواندن E-mail استفاده ميشود. براي کار با اين پروتکل بايد آدرس POP Server مربوط به E-mail خود را بدانيد. براي اينکار ميتوان از nslookup استفاده کرد و سطري که عبارت MX دارد را خواند (قبلا چگونگي کار را گفتم و الان ديگه توضيح نميدم). دقت کنيد که در مورد سايتهاي کوچک، آدرس POP Server همان آدرس SMTP Server است ولي در سايتهاي بزرگ (مثل ياهو ) سرورهاي مربوطه جداست ( يعني دو اسم مختلف دارد ). در مورد سايت ياهو POP Server در آدرس pop.mail.yahoo.com قرار دارد. ( من جديدا اين سرور رو تست نکردم، خودتون تست کنيد و مطمئن بشيد ). من امروز ميخوام از E-mail هاي سايت noavar.com استفاده کنم که هم خيلي عاليه و هم ايرانيه! POP Server اين سايت در آدرس mail.noavar.com قرار دارد.
- با پورت ۱۱۰ صحبت کنيم
فرض کنيد که من در سرور mail.noavar.com يک اکانت به اسم araztest و پسورد mypass دارم. (شما هم اگه ميخواهيد تست کنيد، يک اکانت براي خودتون در اين سايت باز کنيد). حالا ميخوام با پورت ۱۱۰ صحبت کنم، بنابراين از يکي از دو دستور زير استفاده ميکنم: telnet mail.noavar.com 110nc -v mail.noavar.com 110و جواب ميشنوم:
+OK POP3 server [. برای
مشاهده لینکها در سایت عضو شوید] readyدقت کنيد که اگه از تلنت استفاده کنيد،چيزهايي که شما تايپ ميکنيد، ديده نميشود و نميتونيد از دکمه Backspace استفاده کنيد. حالا ميخوام بگم که اسم اکانت من araztest است، پس مينويسم: user araztestو جواب ميشنوم:
+OK Please enter password for araztestحالا ميخوام پسوردم رو بگم که اجازه صادر بشه! مينويسم: pass mypassو جواب ميشنوم:
+OK password for user araztest Acceptedحالا ميخوام بدونم که جمعا چندتا mail رسيده است و حجم کل چقدر است. مينويسم: statو جواب ميشنوم:
+OK 2 25924يعني براي من ۲ تا پيغام رسيده و حجم کل پيامهاي رسيده، ۲۵۹۲۴ بايت است. حالا ميخوام ليست پيامها رو داشته باشم، مينويسم: listو جواب ميشنوم:
+OK1 702 24923.اين يعني پيغام شماره يک (پيغام جديدتر) حجم ۷۰ بايت دارد و پيغام شماره دو حجم ۲۴۹۲۳ بايت دارد. حالا ميخوام پيغام شماره ۱ را بخونم. مينويسم: retr 1و جواب ميشنوم:
+OK 70 octetsMessage-ID: <875808060@www.noavar.com>From: "ali" X-Mailer: NoavarTo: [. برای
مشاهده لینکها در سایت عضو شوید]IME-Version: 1.0Subject: salamDate: Thu, 13 Feb 2003 20:05:56salam, chetori�.حالا ميخواهم اين پيغام ( شماره يک ) رو پاک کنم، مينويسم: dele 1و جواب ميشنوم:
+OK Message 1 Marked for removal[ دقت کنيد که اين پيغام هنوز پاک نشده است و فقط علامت خورده که موقع خروج، پاک بشه. حالا ممکنه چندتا پيغام را مارک کنيد که حذف بشه ولي بعد بيخيال! ميشين. براي اينکه اين علامتها را حذف کنيد که موقع خروج ديگه پاک نشوند، ميتونيد بنويسيد: rsetو جواب ميشنوم:
+OK 1 70]
حالا اگه بخواهم خارج بشم (و علامتخوردهها پاک بشن)، مينويسم: quitو جواب ميشنوم:
+OK [. برای
مشاهده لینکها در سایت عضو شوید] signing off
- NetBIOS چيست؟
NetBIOS مخفف عبارت Network Basic Input/Output System است. NetBIOS ابزاري است که اجازه به اشتراک گذاشتن منابع رو به ما ميده. ما برای به اشتراک گذاشتن فايلها و يا پرينتر ميتونيم از اين پروتکل استفاده کنيم. نکته مهم اين است که NetBIOS فقط در سيستمعامل ويندوز معني داره (اگرچه ابزارهايي مثل Samba در لينوکس ميتونن اونو شبيه سازي کنن ولي بحث ما خود پروتکل NetBIOS است). وقتي NetBIOS در ويندوز فعال باشد، بلافاصله سه تا پورت براي استفاده باز ميشوند. پورت مهم و اصلي پورت ۱۳۹ در tcp است که NetBIOS را هم با اين پورت ميشناسن. دو پورت ديگر، از نوع udp هستند و عبارتند از پورت ۱۳۷ براي name service و پورت ۱۳۹ براي Datagram service . وقتي قرار باشه که يک سيستمعامل ويندوز هک بشه ( خصوصا اگه کلاينت باشه ) يکي از اولين مواردي که به ذهن ميرسه، استفاده از NetBIOS ه.
حالا ببينيم منظور از به اشتراک گذاشتن (Sharing) در مورد فايلها و پرينترها چيست؟
به اشتراک گذاشتن در مورد فايلها يعني قرار دادن تعدادي فايل در يک کامپيوتر خاص به طوريکه توسط ساير کامپيوترها قابل دسترسي و استفاده باشه. در مورد پرينتر به اشتراک گذاشتن يعني طوري چاپگر متصل به يک کامپيوتر را تنظيم کنيم که توسط ساير کامپيوترها هم قابل استفاده باشه. با توجه به اينکه در سيستمعاملهاي ويندوز به صورت پيشفرض NetBIOS فعال است، پس ميتوان به تعدادي از فايلها و فولدرهاي تعدادي از کامپيوترهاي روي شبکه دسترسي داشت و فايلها را خواند و حتي کپي يا پاک کرد.
- چگونه با پورت ۱۳۹ صحبت کنيم؟
۱- اولين کاري که ميکنيم اين است که براي پورت ۱۳۹ پورت اسکن ميکنيم تا ip هايي را که پورت ۱۳۹ در آنها باز است، پيدا کنيم. من اين کار را با nmap انجام ميدم. فرض کنيد که يک ip به شماره 217.218.84.29 را تست کرده و به نتيجه زير برسم:
Interesting ports on HOME-TU6U0AV86Y (217.218.84.29):Port State Service139/tcp open netbios-ssn Remote operating system guess: Windows Millenn... (Me), Win 2000, or WinXPاين خروجي اعلام ميکند که پورت ۱۳۹ باز است. پس ميشود از اين ip استفاده کرد.
۲- حالا ميخوام با اين پورت ارتباط برقرار کنم. اصولا بايد مثل سابق از telnet يا nc استفاده کنم ولي در مورد پورت ۱۳۹ روش ارتباطي فرق ميکند. کامنت پرامت را باز کرده و دستور زير را مينويسم: nbtstat -A 217.218.84.29دستور nbtstat يک ابزار خاص براي کار با NetBIOS است. دقت کنيد که از پارامتر A- با ip مربوطه استفاده کردم. (دستور nbtstat داراي پارامترهاي بسياري است که اگه ميخواين همه رو ببينين، بنويسين nbtstat و enter را بزنيد.)
حالا بحث اينه که اين دستور چه کاري ميکنه و خروجي به چه صورتي است:
اين دستور به ip مورد نظر وصل ميشه و از اون ميخواد ليست منابعي رو که به اشتراک گذاشته رو ليست کنه. در اين حالت ۲ حالت ممکنه اتفاق بيوفته:
الف) مواجه با پيغام Host not found بشم. اين يعني اينکه نميتونه ليست منابع را از اون کامپيوتر بگيره (يعني NetBIOS غير فعاله). يعني اگرچه پورت ۱۳۹ بازه ولي قابل استفاده نيست.
ب) ارتباط برقرار بشه و ليست منابع اشتراکي ليست بشه:
NetBIOS Remote Machine Name Table Name Type Status --------------------------------------------- HOME-TU6U0AV86Y<00> UNIQUE Registered MSHOME <00> GROUP Registered HOME-TU6U0AV86Y<20> UNIQUE Registered MSHOME <1E> GROUP Registered MAC Address = 00-53-45-00-00-00
۳- در اين نتايج چيزي که به درد ميخوره، سطري است که <20> دارد. اگه <20> نباشد، يعني نميتونين از اشتراک گذاري فايل استفاده کنيد ( به عبارت ساده تر بيخيال شو اين کامپيوتر رو ! ). در اين مثال ما اين سطر را داشتيم پس ادامه ميدهيم. حالا مينويسم: net view \\217.218.84.29حالا اگه گفتين چي ميشه؟ درسته! دو حالت ممکنه اتفاق بيوفته:
الف) پيغام بياد
System error 5 has occurred.Access is denied.اين يعني نميتونين ادامه بدين. به عبارت ديگه ايست! ولي يه کاري ميتونيد بکنيد و اون اينه که يه null session برقرار کنيد با اون کامپيوتر. اين حالت در مورد ويندوزهاي سري NT جواب ميده. مينويسيد: net use \\217.218.84.29\IPC$ "" /user:""حالا چرا ميگن null session ؟ دليلش اينه که يک ارتباط برقرار کردم با اون ip بدون username و بدون password . حالا اگه اين دستور جواب داد ميتونم دوباره دستور net view \\217.218.84.29 را تکرار کنم.
ب) ممکنه دستور ذکر شده جواب بده و مثلا جواب بده:
Shared resources at \\217.218.84.29Share name Type Used as Comment------------------------------------------------Printer Print Acrobat PDFWriterPrinter2 Print Acrobat DistillerSharedDocs DiskThe command completed successfully.عاليه. دقت کنيد که در اين کامپيوتر يک فايل (Disk) به اسم ShareDocs به اشتراک گذاشته شده (دو تاي باقي براي پرينتر است). حالا که رسيدم به اين اسم ديگه آخرين دستور را مينويسم.
۴- حالا وقتشه که واقعا عمل به اشتراک گذاشتن رو انجام بديم. براي اينکار بايد يک درايو انتخاب کنيد. حتما ميدونيد که درايو چيه. وقتي شما My Computer را دابل کليک کرده و باز ميکنيد، يک سري آيکون ميبينيد که هر کدام اسمي دارند. مثلا :A براي فلاپي و و و تا ميرسيد به cdrom که آخرين حرف را دارد. مثلا فرض کنيد که :K باشه. حالا بايد اسم درايو رو براي اشتراک گذاشتن انتخاب کنيد. براي اينکار حرف بعدي در زبان انگليسي رو به کار ببريد. چون در کامپيوتر من :K آخرين بود، من حرف بعدي يعني :L را انتخاب ميکنم و دستور زير را مينويسم: net use L: \\217.218.84.29\SharedDocsبه اسم درايو، ip و نام مربوطه که ShareDocs دقت کنيد. چون من اصطلاحا به صورت null session دارم ارتباط ميگيرم، ممکنه کار نکنه ولي اگه درست کار کنه جواب ميشنوم:
The command completed successfully.معرکه است!!! حالا My Computer رو باز کنيد و ببينيد که درايو جديد به ليست درايوها اضافه شده که ميتونين مثل درايوهاي معمولي با اون کار کنيد و فايل کپي کنيد و ...
۵- وقتي کار تموم شد ميتونيد درايو رو حذف کنيد. براي اينکار ميتونين روي درايو رايتکليک کنيد و Disconnect را انتخاب کنيد. و يا اينکه از دستور net use /delete L:استفاده کنيد.
- نکته نکته نکته
۱- يه روش جالب به جاي مرحله ۴ در بالا اينه که مثلا در مرورگر يا در run بنويسيد 217.218.84.29\\ که ip داراي اشتراک است و يا اينکه تايپ کنيد SharedDocsت\217.218.84.29\\ که اصولا بايد جواب بده ( ولي من خودم تست نکردم اينو ).
۲- من دارم به صورت استاندارد کار ميکنم. بعدا خواهم گفت که چطوري ميتونيم وقتي تو بعضي از مراحل متوقف ميشيم، اونو دور بزنيم.
۳- NetBIOS فقط براي کلاينتها نيست. من خودم يکبار سايت دانشگاه رو با اون هک کردم. البته با exploit کردن که بعدا خواهم گفت.
۴- اگه داريد يک کلاينت رو هک ميکنيد، بايد سريع عمل کنيد تا قبل از اينکه طرف disconnect کنه کار شما تموم شده باشه.
۵- روشهاي ديگري هم براي کار با NetBIOS هست که يکي از اون روشها استفاده از يک سري نرمافزارهاي خاص است که تو درس بعدي توضيح ميدم و نيز يک روش ديگه اعمال تغييرات در فايلهاي HOST و LMHOST و استفاده از find در سيستمعامل ويندوز است. ولي چون اين روش دنگ و فنگش زياده، جالب نيست.
۶- براي اينکه بتونيم با NetBIOS کار کنيم، علاوه بر اينکه در کامپيوتر طرف مقابل بايد فعال باشه، روي کامپيوتر خودمون هم فعال باشه. چون در حالت پيشفرض در کامپيوتر فعال است، معمولا مشکلي نيست.
- چگونه NetBIOS را روي کامپيوتر خودمان فعال يا غير فعال کنيم؟
براي غيرفعال کردن NetBIOS در ويندوز با توجه به نوع آن ويندوز روشهاي مختلفي هست. جدول پاييني براي همين موضوع طراحي شده است:
Win 2000Win XP HomeWin XP ProfessionalStart > Programs > Administrative Tools > Local Security Settings > Local Policies > Security Options > Additional restrictions of anonymous connections > Local policy setting > "No access without explicit anonymous permissions" > Ok Start > Programs > Administrative Tools > Local Security Settings > Local Policies > 1) Network Access: Do not allow anonymous enumeration of SAM accounts: Enabled 2) Network Access: Do not allow anonymous enumeration of SAM accounts and shares: Enabled Start > Run > regedit > HKEY_LOCAL_MACHINE > HKEY_LOCAL_MACHINE > SYSTEM > CurrentControlSet > Control > LSA > RestrictAnonymous=2ميتونيد به کمک فايروال يا روتر پورتهاي زير را ببنديد:
135 TCP DCE/RPC Portmapper137 TCP/UDP NetBIOS Name Service138 TCP/UDP NetBIOS Datagram Service139 TCP NetBIOS Session Service445 TCP Microsoft-DS (Windows 2000 CIFS/SMB)
۱- وقتي پورت ۱۳۹ رو ميبنديد، ديگه نميتونيد از NetBIOS استفاده کنيد ( مگر اينکه دوباره پورت رو به صورت فعال در آوريد). پس وقتي که کسي رو ميخواهيد هک کنيد، نياز داريد که براي مدت کوتاهي دوباره پورت رو فعال کنيد.
۲- ميبينيد که مثلا براي ويندوز ۲۰۰۰ به سه روش کار کنيد، در اين جدول فقط کافي است يکي رو اعمال کنيد.
۳- اگه بعد از غير فعال کردن، دوباره بخواهيد فعال کنيد، در مرحله آخر هر يک از روشهاي بالا، گزينهاي که مخالف گزينه ذکر شده در جدول است رو انتخاب کنيد، مثلا اگه در جدول Enabled را نوشتهايم، شما Disable را انتخاب کنيد.
- پورت ۲۱ چيست؟
پورت ۲۱ رو پورت ftp ميگن. ftp مخفف عبارت file transfer protocol است يعني پروتکل انتقال فايل. کاربرد اين پروتکل و اين پورت از زماني وجود داره که حتي وب (پورت ۸۰ ) هم چندان عمومي نشده بود. پس ميتونم بگم که يه پروتکل باستاني هستش. وقتي ميخواهيد با يک سرور از طريق اين پروتکل صحبت کنيد، بايد مطمئن بشين که سرويس مربوط به ftp روي اون کامپيوتر فعال باشه. به عبارت ديگه بايد يک ftp server روي اون کامپيوتر در حال اجرا باشه. حالا شما با اون کامپيوتر ميخواين ارتباط برقرار کنين، پس شما بايد از يک ftp client استفاده کنيد. پس شما کلاينت هستيد و دستگاه مقابل سرور!
حالا شايد بپرسين که کار ftp چيست؟
ftp براي انتقال فايل به کار ميره و اين انتقال فايل در دو جهت ممکنه که upload و download گفته ميشه. براي اينکه اينها رو قاطي نکنيد با هم فرض کنيد که کامپيوتر سرور بالای سر شما قرار گرفته، پس وقتي فايل رو از اون ميگيريد، فايل به سمت پايين ميآد (download) و وقتي فايل رو براي سرور ميفرستيد، حالت برعکس ميباشد و بهش ميگيم، upload کردن. و هر دو عبارت نوعي انتقال فايل محسوب ميشه. دقت کنيد که انتقال فايل از طريق پروتکلهاي ديگهاي هم امکانپذيره مثل web و ... ولي ما بحثمون همين پروتکل ftp است.
عبارت ديگهاي که راجع به اين پورت بايد ياد بگيريد، عبارت anonymous است. براي توضيح اين عبارت اول بايد بگم که وقتي شما ميخواهيد با سرور ارتباط برقرار کنيد، همينطوري کشکي که نيس! براي ارتباط با سرور از شما username و password پرسيده ميشه و اگه درست باشه ميتونين فايلها رو upload و download کنيد و تغيير بديد ( پس ميبينيد که اين پروتکل پروتکل حساسي است و اگه هک بشه خيلي کارها ميشه باهاش کرد). اين حالت که گفتم در حالتي ممکنه که شما username و password داشته باشيد. اما گاهي پيش ميآد که username و password نداريم و ميخوايم با پورت ftp يک سرور يا سايت ارتباط برقرار کنيم. در اين حالت معمولا فقط اجازه download به ما داده ميشه و اجازه upload و يا اعمال تغييرات در فايلها رو نداريم و اونو حالت anonymous يا ناشناس ميگن. در اين حالت وقتي از ما username خواسته ميشه، عبارت anonymous را تايپ ميکنيم و بعد که پسورد پرسيده ميشه، شما بايد E-mail تون رو وارد کنيد، ولي من ميگم که به جاي E-mail واقعي تون يه E-mail الکي بنويسين مثلا [. برای
مشاهده لینکها در سایت عضو شوید] !!
آدرسي که براي ftp با يه سرور استفاده ميکنيم به چه شکلي است؟
آدرسي که استفاده ميکنيم بستگي به سرور داره ولي معمولا ساختار ثابتي داره. ( اگه يادتون باشه واسه web مثلا مينوشتيم، [. برای
مشاهده لینکها در سایت عضو شوید] ) حالا براي ftp مينويسيم، ftp.far30.com پس مثلا براي سايت sazin.com مينويسيم، ftp.sazin.com که آدرس ftp سايت ميشه.
- چطوري يه سرور پيدا کنم که سرويس ftp روي اون فعال باشه؟
اين سوال دو حالت داره:
۱- ميخواهيد به صورت anonymous وارد بشين يعني username و password ندارين. براي اين حالت ميتونين از خيلي از سايتها استفاده کنيد. مثلا ميتونين از ftp.microsoft.com استفاده کنيد يا سايتهاي ديگه.
۲- اگه ميخوايد به صورت غير anonymous کار کنيد، حيطه عملتون محدود به سايتهايي ميشه که username و password واسه اون دارين. مثلا اگه شما سايتي روي اينترنت داشته باشيد ( چه سايت پولي و چه سايت مجاني مثلا در netfirms و geocities و ... ) به شما يک آدرس ftp و يک username و password تعلق ميگيره که از طريق اون کار ميکنيد. اگه سايت نداريد، ميتونيد يک سايت مجاني درست کنيد. مثلا ميتونيد از سايت geocities.com که متعلق به ياهو است استفاده کنيد. يا از سايتهای netfirms.com يا freeservers.com و... ولي بههر حال در يکي از اينها ثبتنام کنيد و username و password بگيريد. آدرسهاي ftp آنها هم که بهصورت ftp.geocities.com يا ftp.netfirms.com و... خواهد بود. (از من نخواين که طريقه ثبتنام در اين سايتها رو هم به شما ياد بدم! کار خيلي راحتيه.)
- با پورت ۲۱ صحبت کنيم
فرض کنيد من از يک سايت فرضي استفاده ميکنم که آدرس ftp اون باشه: ftp.somesite.com و username من باشه ali1000 و پسوردم هم يه چيزه ديگه باشه. حالا ميخوام از طريق پورت ۲۱ با اين سايت ارتباط برقرار کنم. در مورد اين پورت ديگه از nc و telnet استفاده نميکنم، بلکه از برنامهاي که در تمام ويندوزها هست، به اسم ftp کمک ميگيرم. در command prompt مينويسم: ftp ftp.somesite.comو جواب ميشنوم:
Connected to somesite.com.220 somesite Microsoft FTP Service (Version 5.0).User (somesite.comnone)): دقت کنيد که اين سايت ftp server اش از نوع Microsoft است، پس اين سرور از سيستمعامل ويندوز استفاده ميکنه ( دونستن اين نکات لازم نيست، ولي من توصيه ميکنم که هميشه به جزئيات توجه کنيد) دقت کنيد که از من username رو ميخواد، پس مينويسم: ali1000 و Enter رو فشار ميدم. جواب ميآد:
331 Password required for ali1000.Password:حالا ازم پسورد ميخواد و پسورد رو تايپ ميکنم. جواب ميشنوم:
230 User ali1000 logged in.ftp>اين نشون ميده که تونستم با پورت ۲۱ کامپيوتر مقابل ارتباط برقرار کرده و اصطلاحا يک session يا نشست! باهاش داشته باشم. اگه username يا password اشتباه بود، اون موقع ميگفت:
530 User ali1000 cannot log in.Login failed.ftp>من فرض ميکنم که session با موفقيت برقرار شده، حالا تايپ ميکنم:
ftp> helpو جواب ميشنوم:
Commands may be abbreviated. Commands are:! delete literal prompt send� debug lsput statusappend dir mdelete pwd traceasciidisconnect mdir quit typebell getmget quote userbinary glob mkdir recv verbosebye hash mls remotehelpcdhelpmputrenamecloselcd open rmdirاينها ليست دستوراتي است که ميتونيد استفاده کنيد. من فقط اونهايي که به صورت bold مشخص کردم رو توضيح خواهم داد. بقيه دستورات کمتر به کار ميرن.
- دستورات پايه براي اين پورت کدامند؟
+ دستور help و �
دستور help رو همين الان استفاده کرديم. دستور � هم معادل اونه.
+ دستور dir و ls
اين دو دستور نشون ميدن که در محل فعلي در سرور چه فايلها و فولدر (دايرکتوری) هايي وجود دارد. فرقشون اينه که وقتي از dir استفاده ميکنيد، اطلاعات بيشتري علاوه بر نام فايلها و فولدرها به ما ميده. من نوشتم dir و جواب شنيدم:
200 PORT command successful.150 Opening ASCII mode data connection for /bin/ls.12-28-02 02:18AM < DIR> db12-28-02 02:19AM < DIR> Special03-08-03 03:18AM < DIR> www226 Transfer complete.ftp: 135 bytes received in 0.02Seconds 6.75Kbytes/sec.ملاحظه ميفرماييد که سه تا فولدر (دايرکتوري) اينجا هست. (اگه با دستور dir آشنا نيستيد، يک کتاب داس بخونيد). اينها فولدر هستند چون عبارت < DIR> جلوي اونها نوشته شده است. نام اين فولدرها عبارتند از db و special و www
+ دستورات مرتبط با کار روي فولدرهايي که روي سرور (نه روي کامپيوتر خودمون) هستند، عبارنتد از: cd يا chdir ==> اين دستور براي وارد شدن داخل يک فولدر به کار ميره. mkdir ==> اين دستور براي ساختن يک فولدر جديد به کار ميره. rmdir ==> اين دستور براي پاک کردن يک فولدر موجود به کار ميره (به شرطي که آن فولدر خالي باشد)
براي کار با هر کدوم از اين دستورات کافي است، دستور مورد نظر را نوشته و بعد از يک کاراکتر فاصله، نام فولدر را بنويسيد، مثلا اگه بخوام وارد فولدر www بشم، مينويسم: cd wwwو جواب ميشنوم:
250 CWD command successful.ftp>اين جواب به آن معني است که وارد فولدر (دايرکتوري) www شدهام. حالا دوباره دستور dir را استفاده ميکنم و جواب ميگيرم:
200 PORT command successful.150 Opening ASCII mode data connection for /bin/ls.12-28-02 02:18AM < DIR> _private02-17-03 04:15PM 61982 1.jpg12-28-02 02:19AM < DIR> aspnet_client12-28-02 02:19AM < DIR> cgi-bin12-29-02 06:27PM 11285 default.asp12-28-02 02:19AM < DIR> images12-28-02 02:18AM 2494 postinfo.html226 Transfer complete.ftp: 1438 bytes received in 0.28Seconds 5.12Kbytes/sec.ftp>ملاحظه ميکنيد که سه تا فايل و سه تا دايرکتوري داريم. اونهايي که جلوشون نوشته < DIR> دايرکتوري هستند و اونايي که اين عبارت رو ندارند و جلوشون يه عدد نوشته شده ( که بيانگر حجم هر کدومشون هست ) فايل ميباشند.
در مورد دستور cd اگه بنويسم .. cd به فولدر قبلي بر ميگرديم، مثلا الان که تو فولدر www هستيم اگه .. cd رو بنويسم، يک فولدر به عقب برميگردم ( به حالت قبل از ورود به www )
يه دستور ديگه هم راجع به فولدرها هست و اونم دستور pwd است. اين دستور نشون ميده که ما الان تو کدوم فولدر از فولدرهاي سرور هستيم.
+ دستورات مرتبط با فايلها عبارنتد از: delete يا dele ==> اين دستور براي پاک کردن يک فايل به کار ميره. rename ==> اين دستور براي عوض کردن نام يک فايل به کار ميره.
مثلا اگه بخوام فايل default.asp رو پاک کنم، مينويسم delete default.asp
اگه بخوام فايل default.asp رو به index.htm تغيير نام بدم، مينويسم rename default.asp index.htm
+ دستورات مرتبط با فولدرهاي کامپيوتر خودمان:
اول دقت کنيد که در مورد پورت ۲۱ وقتي ميگوييم در کدام فولدر قرار داريم، اين مسئله دو معني داره. حالت اول محل فعلي ما روی سرور است. يعني کجاي سرور هستيم. تمام دستوراتي که راجع به فولدرها گفتم براي کار روي فولدرهاي سرور است. حالت دوم محل فعلي ما در کامپيوتر خودمون است. فرض کنيد که وارد فولدري در کامپيوتر سرور شدهايم والان ميخوايم فايل را داونلود کنيم به کامپيوتر خودمون. براي اينکه فايل به فولدر درستي در کامپيوتر خودمون منتقل بشه، بايد وارد يک فولدر خاص در کامپيوترمان بشيم. دستور مرتبط با اون دستور lcdاست. مثلا اگه بخوام وارد فولدر araz از درايو :C بشم، مينويسم: lcd c:/araz
- دستورات اصلي (upload و download فايل) کدامند؟
قبل از اينکه اين دستورات رو بگم، انواع فايل رو بگم:
==> فايلهاي ascii : فايلهايي که حالت متني دارند، مثل فايلهاي txt و html و asp و php و rtf و ...
==> فايلهاي binary : فايلهايي که متني نيستند، مثل فايلهاي گرافيکي، مولتيمديا، database ، doc و ...
وقتي ميخواهيم فايل رو داونلود يا upload کنيم، بايد قبل از انتقال فايل نوع اون رو تنظيم کنيم. دو تا دستور براي اينکار داريم:
+ دستور ascii يا asc : يعني ميخواهيم به صورت اسکي عمل انتقال انجام شود.
+ دستور binary يا bin : يعني ميخواهيم به صورت باينري عمل انتقال انجام شود.
+دستور prompt: وقتي تعداد زيادي فايل رو قرار باشه منتقل کنيم، و از دستور مربوط به upload يا download استفاده ميکنيم، هر بار که فايلي ميخواهد منتقل شود، از ما سوال ميکند که آيا ميخواهيد اين فايل منتقل شود يا نه. فرض کنيد که ميخواهيد مثلا ۱۰۰ فايل رو منتقل کنيد، در اين موارد ۱۰۰ بار از شما اين سوال پرسيده ميشود. براي اينکه اين حالت رو غير فعال کنيم، مينويسيم prompt تا غيرفعال شود، اگه يه بار ديگه همين دستور رو بنويسيم، دوباره فعال ميشه و قسعليهذا !
+ دستورهاي مربوط به upload فايل:
دستور put: اين دستور يک فايل رو از کامپيوتر ما به سرور منتقل ميکنه (از فولدر فعلي کامپيوتر ما به فولدر فعلي کامپيوتر سرور). مثلا اگه بخوام فايلي به اسم ali.jpg رو upload کنم، اگه در حالت ascii باشم، اول بايد به حالت binary تغيير حالت بدم و بعد بنويسم: put ali.jpgو جواب ميشنوم:
200 PORT command successful.150 Opening BINARY mode data connection for ali.jpg.226 Transfer complete.ftp: 21010 bytes sent in 0.02Seconds 1050.50Kbytes/sec.ftp>دستور mput: اين دستور چند فايل رو upload ميکند، مثلا اگه بخوام همه فايلهاي htm که اسمشون با کاراکتر s شروع ميشه رو منتقل کنم، ميتويسم (البته بايد قبلش به حالت ascii تغيير حالت داده باشم): mput s*.htm+ دستورهاي مربوط به download فايل:
دستور get: اين دستور يک فايل رو از سرور به کامپيوتر ما منتقل ميکنه (از فولدر فعلي سرور ما به فولدر فعلي کامپيوتر ما). مثلا اگه بخوام فايلي به اسم default.asp رو download کنم، مينويسم: get default.aspدستور mget: اين دستور چند فايل رو download ميکند، مثلا اگه بخوام همه فايلهاي htm که اسمشون با کاراکتر s شروع ميشه رو منتقل کنم، ميتويسم: mget s*.htm
- چگونه کار را خاتمه دهيم؟
+ اول بايد session را خاتمه دهيم. براي اينکار ميتونيد از يکي از دو دستور close يا disconnect استفاده کنيم.
+ بعد، براي خروج از ftp بايد از يکي از دو دستور quit يا bye استفاده کنيم.
- حالت anonymous چه فرقي با حالت بالا دارد؟
هيچ فرقي در روش کانکت شدن، ندارد. تنها فرق در username و password است که به ترتيب، anonymous و e-mail رو استفاده ميکنيم. و نيز همونطور که قبلا گقتم بعد از کانکشن به صورت anonymous اجازه upload يا اعمال تغييرات روي server رو نداريم.
- چه نرمافزارهاي گرافيکي براي کار کار با ftp وجود دارد؟
نرمافزارهاي گرافيکي زيادي براي اينکار وجود دارند، مثل fetch براي کامپيوترهاي Macintosh و نرمافزارهاي WS_FTP و CuteFtp و WinFTP و... براي ويندوز که هيچکدوم مفت نميارزند!!
- راحتترين روش کار با اين پورت به نظر شما چيست؟
راحتترين روش ممکن، استفاده از web browser کامپيوترتون مثل internet explorer است! در اين حالت دقيقا مثل اين است که داريد با فولدرهاي کامپيوتر خودتون کار مي کنيد. ميتونيد براي download فايل رو فايل مورد نظر دابلکليک کنيد و براي upload ميتونيد فايل رو از بيرون به مرورگر drag & drop يا copy & paste کنيد!
+ اگه بخواين به صورت anonymous مثلا به سايت microsoft وارد شويد، کافي است در مرورگر بنويسيد: ftp://ftp.microsoft.com و Enter را فشار دهيد.
+ اگه بخواين به صورت غير anonymous مثلا به سايت ftp.somesite.com که username شما براي آن سايت ali1000 است وارد شويد، در مرورگر مينويسيد: ftp://ali1000@ftp.microsoft.com و Enter را فشار ميدهيد. در اين حالت، پنجرهاي باز شده و از شما پسورد ميخواهد و شما پسورد را نوشته و بعد از تاييد، وارد پورت ۲۱ اون کامپيوتر ميشين.
احتمالا ميدونيد که Netbios پرتکل معروف مايکروسافت براي ارتباط ويندوز ها با هم و احتمالا Share کردن پرينتر يا فايله. همچنين وقتي که بحث نفوذ به Client و بر بعضي مواقع Server ها پيش مياد، Netbios يکي از اولين انتخاب هاست. ما در اين مقاله سعي ميکنيم از اين ضعف سيستم عاملهاي مايکروسافت سوءاستفاده کنيم.
سيستم عاملهاي بر پاييه يونيکس مثل لينوکس براي Share کردن فايلها و پرينتر ها از طريق Netbios از پرتکل Smb/Cifs که توسط برنامه Samba باز ميشه استفاده ميکنن و از اين طريق لينوکس ميتونه Share هاي کامپيوتر هاي ويندوز رو Mount کنه. (اگه کاربر لينوکس هستيد، نميتونيد روشهايي که در درس قبلي براي ويندوز ذکر شده استفاده کنيد، بلکه بايد از Samba بهره گيريد. اما طرف مقابل که قرار است هک بشه، سيستمعاملش رو فرض ميکنيم که ويندوزه. پس ما ميخوايم با لينوکس يک سيستمعامل ويندوز را که ۱۳۹ باز داره، هک کنيم) بي شک Netbios عمومي ترين مشکل امنيتي ويندوزه که استفاده ازش چندان مشکل نيست.
خب ! همون طور که گفتم ما براي اين کار از Samba استفاده ميکنيم. من اينجا چيزي در مورد Samba نمينويسم و بنا کار رو بر اين ميگذارم که تا حدودي ميتونيد با Samba کار کنيد . اگر احتمالا مشکلي داريد ميتونيد به Samba.org سر بزنيد و در Documention ها دنبال راهنما باشيد به طور کل اگر نميدونيد چطور از Samba استفاده کنيد بهتره که کاري با کامپيوتر هاي مردم نداشته باشيد !
- چگونه با پورت ۱۳۹ صحبت کنيم؟
۱- اولين قدم پيدا کردن کامپيوتريه که پرت 139 و 137 که پرت Netbios هست رو باز کرده باشه. براي اينکار از Nmap استفاده ميکنيم. Nmap معمولا رو همه Description هاي فعلي پيدا ميشه. ميخوام به کمک Nmap تست کنم که از ip شماره 192.168.3.50 تا 192.168.3.1 کدامها پورت ۱۳۹ باز دارند. براي اين کار مينويسم: # nmap -sS -O 192.168.3.1-50 -p 139و جواب ميشنوم:
st 1 open and 1 closed TCP portInteresting ports on (192.168.3.2):Port State Service139/tcp open netbios-ssnRemote OS guesses: Windows Millennium Edition (Me), Win 2000,
or WinXP, MS Windows2000 Professional RC1/W2K Advance Server Beta3بايد اينو بهتون بگم که من دارم اين کار رو روي Lan انجام ميدم و همه Ip ها Static هستند. ولي خب کار رو جوري در نظر ميگيرم که گويا نميدونم چه Host هاي اينجا وجود دارن 192.168.3.1 يک SuSE 8 هست که کار رو از طريقش انجام ميديم و 192.168.3.2 يک win2kpro sp2 هست که قربانيه و البته FireWall نداره من اينجا از آيپي هاي کلاس C استفاده ميکنم ممکنه وضع شما تو اينترنت فرق کنه، ولي خب نحوه کار تغيير نميکنه. حالا هدف رو پيدا کرديم، هدف ما 192.168.3.2 هست .
۲- قدم دوم گرفتن NetbiosName هاي هدفه. بدون اين اسمها ما نميتونيم هيچ جور اطلاعاتي از هدف بگيريم. از اونجايي که مايکروسافت سعي کرده همه کارها رو ساده کنه، ويندوز هاي رو شبکه Netbios به جاي Ip Address از اسم استفاده ميکنن!! خب اينجا لازمه از يه Netbios Scanner يا Share Scanner استفاده کنيم. معمولا رو هر Description يي دستور nmblookup پيدا ميشه - که خيلي شبيه nbtstat ويندوزه - رو لينوکس کار ميکنه. من شخصا خيلي از nmblookup خوشم نمياد چون Share Scanner هاي بسيار بهتري هستن ! به هر صورت من اينجا از nmblookup استفاده ميکنم . شکل کلي دستور اينه : nmblookup –A . اين flag ه A باعث ميشه که nmblookup بتونه Query بهتري انجام بده . حالا رو هدفهوم امتحان ميکنيم : # nmblookup –A 192.168.3.2و جواب ميگيرم:
Looking up status of 192.168.3.2 ARMINLAPTOP <00> - B < ACTIVE> WORKGROUP <00> - < GROUP> B < ACTIVE> ARMINLAPTOP <03> - B < ACTIVE> ARMINLAPTOP <20> - B < ACTIVE> WORKGROUP <1e> - < GROUP> B < ACTIVE> ADMINISTRATOR <03> - B < ACTIVE> WORKGROUP <1d> - B < ACTIVE> ..__MSBROWSE__. <01> - < GROUP> B < ACTIVE>همه چيز مشخصه نه ؟ اسم کامپيوتر ARMINLAPTOP , گروه کامپيوتر WORKGROUP و کاربر فعال Administrator هست
۳- بگذارين قبل از قسمت سوم کار يکمي در مورد ويندوز ها صحبت کنيم. Netbios به طور کلي روي همه ويندوز ها به نوعي خطر ايجاد ميکنه. رو ويندوز هاي سري 2000 به بالا همه پارتيشن هاي سيستم Share شده اند و با پسوردي که Administrator دارد، باز ميشن. خيلي از کاربران تازه کار هم پسورد Administrator رو خالي ميگذارن. به نظر من اين سري ويندوز ها بيشتر در خطر هستند. رو ويندوز هاي 9x هيچ فايلي به طور Default Share نشده، ولي خوب اگر بشه ممکنه بتونيم از طريقش بدون پسورد وارد فايل سيستم بشيم حتي اگر پسورد Administrator رو هم نداشته باشيم Anonymous Login ميتونه اطلاعات خيلي مفيدي بهموم بده حالا ميخواهيم ليست Share ها رو بدست بياوريم . ( در درس قبلي براي ويندوز از دستور net view براي همينکار استفاده کرديم) توجه کنيد که کرنل بايد Network File System و Samba File System رو ساپرت کرده باشه : در اين مثال در نظر گرفتم که پسورد Administrator خاليه ! مينويسم: # smbclient –Uadministrator –LARMINLAPTOP –I 192.168.3.2نتيجه دستور به صورت زير است:
added interface ip=192.168.3.1 bcast=192.168.3.255 nmask=255.255.255.0Passwordomain=[WORKGROUP] OS=[Windows 5.0] Server=[Windows 2000 LAN Manager] Sharename Type Comment --------- ---- ------- IPC$ IPC Remote IPC D$ Disk Default share ADMIN$ Disk Remote Admin C$ Disk Default share Armin Disk Server Comment --------- ------- ARMINDESKTOP Samba 2.2.3a ARMINLAPTOP Workgroup Master --------- ------- WORKGROUP ARMINLAPTOPخب ميبينيد ؟ هر دو پارتيشن ARMINLAPTOP در اختيار شماست ! همچنين کامپيوتر هايي که باهاش در ارتباط هستند رو هم ميبينيم. در اين مثال ملاحظه ميفرماييد که Armin به عنوان Disk بهاشتراک گذاشته شده. خب قبل از اينکه بريم سراغ بقيه کار يک بار هم Anonymous رو امتحان ميکنيم ( يه چيزي مثل Null Session ): # smbclient -LARMINLAPTOP -I 192.168.3.2و جواب:
added interface ip=192.168.3.1 bcast=192.168.3.255 nmask=255.255.255.0Password:Anonymous login successfulDomain=[WORKGROUP] OS=[Windows 5.0] Server=[Windows 2000 LAN Manager] Sharename Type Comment --------- ---- -------Error returning browse list: NT_STATUS_ACCESS_DENIED Server Comment --------- ------- ARMINDESKTOP Samba 2.2.3a ARMINLAPTOP Workgroup Master --------- ------- WORKGROUP ARMINLAPTOPخب باز هم يه اطلاعاتي پيدا ميکنيم ! با اينکه فايلهاي Share شده رو نميبينيم، به هر صورت از هيچي بهتره ! شايد يه جاي ديگه به درد بخوره !
۴- خب حالا سعي ميکنيم که اين Share هارو Mount کنيم. مينويسيم: # smbclient //ARMINLAPTOP/Armin -I 192.168.3.2و جواب ميشنوم:
added interface ip=192.168.3.1 bcast=192.168.3.255 nmask=255.255.255.0Password:session setup failed: NT_STATUS_LOGON_FAILUREخب ! Share توسط Password محافظت ميشه ! کار زيادي نميتونيم انجام بديم. مثلا ميتونيم همين Null پسورد رو امتحان کنم، ولي خب اگر با Win9x طرف باشيم کاري نميشه کرد . حالا رو ويندوز 2000 به بالا کار ميکنيم. روي اينکه کاربر ناشي باشه و پسورد Administrator رو خالي گذاشته باشه خيلي حساب کرديم : # smbclient //ARMINLAPTOP/Armin -I 192.168.3.2 -Uadministratorو جواب ميشنوم:
added interface ip=192.168.3.1 bcast=192.168.3.255 nmask=255.255.255.0Passwordomain=[WORKGROUP] OS=[Windows 5.0] Server=[Windows 2000 LAN Manager]smb: \> اين </: smb مثل خط فرمان ميمونه و ميتونين دستورات رو تايپ کنيد براش. کار تمومه! هر کاري که دوست داشته باشين ميتونين با اين راه رو هر Share اي انجام بديد مثلا مينويسم:
smb: \> lsو جواب ميشنوم:
. DA 0 Sat Feb 8 0511 2003 .. DA 0 Sat Feb 8 0511 2003 Blcorp D 0 Sat Feb 8 03:05:51 2003 47943 blocks of size 65536. 8261 blocks availableو ادامه ميدم به صورت زير:
smb: \> cd Blcorpsmb: \Blcorp\> ls . D 0 Sat Feb 8 03:05:51 2003 .. D 0 Sat Feb 8 03:05:51 2003 WLTrial.exe A 2321412 Mon Apr 29 1458 2002 47943 blocks of size 65536. 8261 blocks availablesmb: \Blcorp\> get WLTrial.exegetting file WLTrial.exe of size 2321412 as WLTrial.exe (892.2 kb/s) ...smb: \Blcorp\>شما ميتونيد از دستور Pull براي فرستادن فايل و get براي گرفتن فايل استفاده کنيد فايلها گرفته شده در دايرکتوري فعلي شما ذخيره ميشوند . قسمت اميدوار کننده کار اينه که خيلي از مردم از ويندوز استفاده ميکنن و اکثرشون حتي نميدونن که همه فايل سيستم هاشون بدون پسورد به راحتي قابل دسترسه. خب ما هم اينهارو ياد نميگيريم که دور دنيا بچرخيم و فايلهاي مردم رو پاک کنيم !
- FAQ
- آيا Samba به نا امني Netbios ويندوز است ؟
نه اصلا ! Samba يک برنامه پرقدرته , اگر خوب Config شه احتمال هک شدنش بسيار پايينه ! فرض کنيد از طريق سيستمعامل ويندوز ميخوام اين کامپيوتري که Samba داره رو هک کنم. دستور تايپ شده و جواب بدست اومده بيانگر امنيت Samba ست:
C:\>nbtstat -A 192.168.3.1Local Area Connection 2:Node IpAddress: [192.168.3.2] Scope Id: [] Host not found
شروع بحث Vulnerability و exploit کردن
- Vulnerability چيست؟
Vulnerability يا بهصورت مختصر vul را در فارسي حفره يا سوراخ امنيتي ميگيم. اين عبارت رو بايد يه کم توضيح بدم. فرض کنيد که يه نرمافزار داريم که يه پورتي رو باز ميکنه. وقتي اين نرمافزار قرار هست که منتشر بشه، شرکت سازنده يه سري تست رو نرمافزار انجام ميده که مشکلي نداشته باشه. بعد که اطمينان نسبي خاصل شد، نرمافزار ارائه ميشود و سرورها و کلاينتها از اون نرمافزار و از اون ورژن خاص شروع به استفاده ميکنن. بعد از اينکه نرمافزار منتشر شد، گروههاي مختلفي که در سراسر جهان هستند و کارشان تست امنيتي اين نرمافزارهاست شروع به فعاليت ميکنند. اين گروهها هر چند وقت يک بار موفق به يافتن نقاط ضعفي در اين برنامهها ميشوند و اونو گزارش ميکنن. سايتهايي هستند که کارشون بهطور عمده گزارش جديدترين vul هاي کشف شده است. مثلا ممکنه در سايتهايي مثل securitytracker.com يا securityfocus.com و ... به عبارتي مثل : A vulnerability was reported in ... برخورد کرده باشيد. اين بيان ميکنه که يه vul جديد کشف شده است. دقت کنيد که اين vul از وقتي نرمافزار طراحي شده با اون بوده ولي کسي از اون خبر نداشته تا وقتي که اين گزارش منتشر بشه! پس اين گروهها کارشون کشف باگ هستش نه اختراع باگ!
همچين نرمافزاريي رو vulnerable ميگن. يعني قابل نفوذ.
اين vul ها انواع مختلفي دارند و ميشه اونا رو catagorize (طبقهبندي) کرد. اين بحث رو بعدا بهطور کامل مطرح ميکنم. عجالتا بهتره کمي هم راجع به exploit صحبت کنم:
- exploit چيست؟
فرض کنيد که يکي مياد و يه باگ رو کشف ميکنه. اين کشف vul معمولا فقط در حد يک گزارش ميمونه تا اينکه يکي همت کنه و روشي براي exploit کردن اون vul درست کنه. پس vul جنبه تئوري قضيه است و exploit قسمت عملي اون. exploit ميتونه يه کد (معمولا به زبانهاي سي و پرل ) يا يه دستورالعمل يا يه url و ... باشه. وقتي شما مطمئن ميشين که فلان سرور از فلان ورژن فلان نرمافزار استفاده ميکنه که اون نرمافزار فلان vul رو داره، يا بايد exploit بسازيد و يا اينکه يه exploit واسه اون از اينترنت پيدا کنيد.
نتيجه اينه که ممکنه يه vul کشف شده باشه ولي exploit واسه اون نباشه. حتي من ديدم که سايتهاي مطرحي مثل Cert ميان و قلم فرسايي ميکنن که فلان vul قابل exploit کردن نيست ولي بعد exploit نوشته ميشه و اينا ضايع ميشن!! البته بگذريم که نمونههايي از vul ها رو داريم که هرگز براش exploit نوشته نشده باشه.
- vul ها رو چگونه نامگذاري ميکنند؟
اولين نکتهاي که بايد بگم، اينه که براي هر Vulnerability يک شماره يا يک نام نسبت ميدن. اين شماره يا نام در واقع يک استانداردي است که به هکرها و متخصصين امنيت شبکه اجازه ميده که حرف همديگرو بفهمن! مثلا ممکنه جايي ببينيد که راجع به NT IIS Unicode Vulnerability صحبت ميکنند يا راجع به CVE شماره CVE-2000-0884 يا BID شماره 1806 بحث ميکنند. دقت کنيد که همه اينها معادل هم هستند. پس براي يک vul خاص ممکن است شمارهها يا عبارتهاي معادلي باشد.
۱- CVE اولين جايي است که بايد ببينيد:
فرض کنيد که شما متوجه شدهايد که سروري داراي يک vul به شماره CVE-2000-0508 داشته باشد (اينکه چطوري ميشه فهميد يه سرور چه vul هايي داره بعدا بحث خواهم کرد). براي CVE از يکي از آدرسهاي زير استفاده کنيد: [. برای
مشاهده لینکها در سایت عضو شوید]xxxxxxxxxx[. برای
مشاهده لینکها در سایت عضو شوید]xxxxxxxxxکه به جاي xxxxxxxxx بايد شماره CVE رو بنويسيد مثلا CVE-2000-0508 يا مثلا CAN-2002-0651 و...
وقتي به اين آدرسها رجوع کنيد ميبينيد که يه سري نامها و شماره معادل براي اين CVE ذکر شده است. به عبارت ديگه واسه اينکه در مورد يک vul مطالبي بياموزيد، اولين کاري که ميکنيد رجوع به يکي از دو سايت بالاست. بعد از رجوع به آنها ميتونيد لينکهايي را استخراج کنيد که به شما اجازه ميدن، راجع به اون vul مطالبي رو بياموزيد.
فرض کنيد که يک vul رو که CVE اونو ميدونيد در يکي از اين سايتها داريد ميخونيد، ملاحظه خواهيد کرد که براي اين CVE بعد از يک توضيح مختصر يک سري اسم و شماره ذکر شده است. اين اسامي ممکن است، BID يا XF يا ... باشد. در واقع براي اينکه در مورد اين vul خاص نکاتي را ياد بگيريد، علاوه بر توضيحات مختصز بالاي صفحه بايد تک تک اين مطالبي که بهشون ارجاع داده شدين، مثل BID مربوطه، XF مربوطه و ... را بخونين. حالا اگه اونحا نوشته باشه: BID: 1806از کجا بايد اونو خوند؟ (يعني لينک مستقيمش چي هست؟) همين پايين مهمترهاشو ميگم (دقت کنيد که همه اون اسمها معادل هم هستند فقط سايتهاي مختلف اسمهاي مختلفي را واسه يه vul انتخاب ميکنند و ما ميخواهيم تمام مطالب مرتبط با يه vul خاص رو از سايتهاي مختلف پيدا کنيم )
۲- BID يا BugTraq ID يا همون نفس من بيده! :
فرض کنيد که صفحه مربوط به CVE خاص رو خوندم و اونجا به عبارت BID: 1806 برخوردم. حالا اونو از کجا بخونم؟ از اينجا : [. برای
مشاهده لینکها در سایت عضو شوید]xxxxکه به جاي xxxx بايد يک عدد بنويسيد (همان عدد مربوز به BID ) مثلا به جاي xxxx بنويسيد: 1806
اگه بخوام بهترين محل يادگيري راجع به vul ها رو ذکر کنم، جايي بهتر از [. برای
مشاهده لینکها در سایت عضو شوید] واسه اين کار وجود نداره. دقت کنيد وقتي که صفحه مربوط به يک BID خاص رو در اين سايت ميبينيد، يک سري لينک به اسمهاي info و discussion و exploit و solution را هم بخونين که جنبههاي مختلف اون vul خاص است. مخصوصا قسمت exploit که جايي است که جوجههکرها ميتونن با اون حسابي حال کنن! به عبارت ديگه جاييه که واسه اون vul خاص exploit داونلود کنيد. خيلي از ابزارهاي هک که تبليغ ميشن، در واقع با تغييرات کمي از همين exploit ها بدست ميآن!!
۳- XF :
XF استاندارد سايت iss.net براي vul هاست. XF به صورت يک نام (نه عدد) نامگذاري ميشوند و اونو بايد در صفحه زبر بخونين: [. برای
مشاهده لینکها در سایت عضو شوید]که وقتي در اين صفحه search کنيد، يک سري صفحات static بدست مياد که بايد بخونين.
۴- CA يا CERT:
سايت cert.org براي vul ها از اسم CA استفاده ميکند، مثل CA-2002-19 براي CA ها صفحه زير رو ببينيد: [. برای
مشاهده لینکها در سایت عضو شوید]xxxxxxxxx.htmlبهجاي xxxxxxxxx مثلا مينويسيم: CA-2002-19
ضمنا دقت کنيد که وقتي مطالب مربوط به يک vul رو از سايت cert ميخونيد، ملاحظه ميکنيد که لينکهايي به صورت VU#xxxxx در آن هست که به جاي xxxx يک عدد نوشته شده مثلا 369347 که اين VU# رو ميتونيد از اينجا بخونيد: [. برای
مشاهده لینکها در سایت عضو شوید]xxxxxx۵- و …
- Vulnerability Scanner چيست؟
Vulnerability Scanner ابزاري است که به کمک اون ميشه کامپيوترهاي شبکه رو از نظر وجود سوراخهاي امنيتي تست کرد. vul scanner ها اين کار را به صورت اتوماتيک يا نيمهاتوماتيک انجام ميده.
vul scanner ها رو ميشود به دو دسته Network based و Host based تقسيم کرد. اولي را بهصورت remote و دومي رو بهصورت local استفاده ميکنند. به عبارت ديگر در مورد Network based اونو موقعي استفاده ميکنيم که دسترسي فيزيکي به سيستم نداريم (مثلا موقعي که فقط از طريق اينترنت و از طريق ip سيستم رو چک ميکنيم) اما در مورد Host based ابزار رو رو کامپيوتري که ميخوايم تست کنيم، نصب کرده و کار اسکن رو انجام ميديم. بحث ما فعلا در مورد Network based scanner هاست.
نکته مهم راجع به اسکنرها اين است که حتي اگر يه اسکنر نتونه واسه يه کامپيوتر vul پيدا کنه، دليل بر امن بودن اون کامپيوتر نيست. دليلش هم کاملا واضحه چون هر vul scanner ي از يک database استفاده ميکنه که الزاما همه vul ها رو پوشش نميده. حتي بهترين اسکنرها مثل Nessus هم هيچوقت جاي يه هکر واقعي رو نميگيره. از قديم گفتن کامپيوتر رو هکر هک ميکنه نه يه کامپيوتر ديگه!
يه نکته ديگه که بايد حتما بگم اينه که خيلي از vul scanner ها اين امکان رو دارند که بشه datebase اونا رو از طريق اينترنت update کرد تا vul هاي جديد رو هم شامل بشوند.
- vul scanner هاي تجاري (پولي)
اين نرمافزارها رو بايد خريداري کنيد (يا اينکه crack اش رو پيدا کنيد). پولي بودن يک نرمافزار به معني اين نيست که الزاما اين vul scanner عملکرد بهتري نسبت به انواع مجاني داشته باشه. ضمنا اکثر محصولات تجاري اجازه استفاده trial رو براي يک ماه به شما ميدن.
۱- [. برای
مشاهده لینکها در سایت عضو شوید] :
از سايت iss.net است. يکي از بهترين اسکنرهاست. براي ويندوز و يونيکس (لينوکس) قابل استفاده است.
۲- [. برای
مشاهده لینکها در سایت عضو شوید] :
يکي از مشهورترين اسکنرهاست. براي ويندوز و لينوکس
۳- [. برای
مشاهده لینکها در سایت عضو شوید] :
از شرکت Symantec است (Axent). براي سيتمعامل ويندوز
۴- [. برای
مشاهده لینکها در سایت عضو شوید] :
از cisco
۵- [. برای
مشاهده لینکها در سایت عضو شوید] :
از مشهورترين اسکنرهاي تجاري است. از سايت eeye.com - براي ويندوز
۶- [. برای
مشاهده لینکها در سایت عضو شوید] :
خودش و سايتش يه کم تابلو خالي ميبندن ولي در کل اسکنر خوبيه.
۷- و…
- vul scanner هاي مجاني
۱- [. برای
مشاهده لینکها در سایت عضو شوید] :
بهترين اسکنر تمام اعصار! چي بگم که واقعا تک تکه. براي سيستمعاملهاي يونيکس (لينوکس) استفاده ميشه. براي ويندوز فقط کلاينتش هست (بعدا توضيح ميدم که يعني چي)
۲- [. برای
مشاهده لینکها در سایت عضو شوید] و [. برای
مشاهده لینکها در سایت عضو شوید] :
هر دو نسل جديد [. برای
مشاهده لینکها در سایت عضو شوید] هستند و هر دو براي يونيکس (لينوکس) هستند ولي هيچيک در برابر Nessus عددي نيستند!
۳- [. برای
مشاهده لینکها در سایت عضو شوید] :
براي ويندوز - در ايران خيلي مشهور شده ولي در کل اسکنر خوبي نيست
۴- [. برای
مشاهده لینکها در سایت عضو شوید] :
از تيم Razor - براي يونيکس(لينوکس)
۵- و…
- False Positive چيست؟
False Positive يعني مواردي که اسکنر تشخيص ميده که يک vul در سيستم هست در حاليکه چنين نيست. اين مورد خيلي وقتها پيش مياد و هيچ هم عجيب نيست. پس وقتي Vul Scanner يه Vul رو تشخيص ميده، زياد هم حال نکنين!
- نکته
+ CGI Scanner ابزاري است که به نوعي بهعنوان مکمل vul scanner ها استفاده ميشه که بعدا توضيح ميدم.
+ Retina را براي ويندوز و Nessus رو براي لينوکس حتما داونلود و تست کنيد. من درس بعدي احتمالا Nessus رو توضيح ميدم ولي اسکنرها اکثرا مثل همند.
Nessus يک نرمافزار براي Vulnerability Scanning است. اگر بخوام دقيقتر بگم بهترين نرمافزار Vul Scanning که به صورت Network-Based به کار ميره همين نرمافزار است. مهمترين ويژگي اين نرمافزار مجاني و Open-Source بودن آن است ( اگرچه تو ايران همهچي مجانيه! ) اين نرمافزار توسط Renaud Deraison نوشته شده و توسط او توسعه پيدا ميکند. الان که من دارم مقاله رو مينويسم، نسخه 2.0.7 اون ارائه شده است.
ويژگي مهم ديگر اون داشتن حالت Client-Server است. فرض کنيد که از چند کامپيوتر به صورت شبکهاي استفاده ميکنيد. اگر بخواهيد در تعدادي از اين کامپيوترها از Nessus استفاده کنيد، کافي است فقط در يکي از آنها سرور Nessus و روي همه Client اونو اجرا کنيد. ولي اگه فقط يه کامپيوتر داريد و ميخواين روي اون از Nessus استفاده کنيد، هم کلاينت و هم سرور Nessus رو بايد نصب و اجرا کنيد.
در حال حاضر Server نرمافزار Nessus فقط براي سيستمهاي عامل مبتني بر يونيکس مثل لينوکس، OpenBSD Unix و... در دسترس است ونسخه ويندوزي وجود نداره. پس اگه روي يک کامپيوتر هم کلاينت و هم سرور اونو نصب ميکنيد، سيستمعامل اون کامپيوتر بايد مبتني بر يونيکس باشه. به عبارت ديگه اگه از سيستمعامل ويندوز استفاده ميکنيد، وقت خودتون رو با خوندن اين مقاله تلف نکنيد! اما راجع به کلاينت Nessus بايد عرض کنم که نسخههاي ويندوز ( به نام NessusWX ) و نسخه جاوا و نيز نسخههاي مبتني بر يونيکس وجود داره. يعني اينکه اگه چند تا کامپيوتر به صورت شبکه در اختيار دارين، اوني که قراره سرور Nessus روش نصب بشه بايد مبتني بر يونيکس باشد و بقيه که کلاينت هستند، ميتونن هر چيزي باشند. اميدوارم متوجه شده باشين!
من در اين مقاله فرض مي کنم که شما سيستمعامل لينوکس داريد و ميخواهيد هم سرور و هم کلاينت Nessus رو روي همون کامپيوتر نصب کنيد. براي استفاده از Nessus بايد لينوکس شما هم nmap و هم gtk و هم OpenSSL رو داشته باشه که معمولا داره ( فقط اگه nmap ندارين، يه فکري براش بکنيد!)
- از کجا Nessus رو داونلود کنم؟
براي داونلود Nessus بايد به به آدرس [. برای
مشاهده لینکها در سایت عضو شوید] مراجعه کنيد. در اين صفحه ميتونيد آخرين نسخه از Nessus رو ببينيد که الان Nessus 2.0 هست که به صورت يک لينک داخل جدول خاکستري رنگ هستش. روي همون کليک کنيد، تا به يک صفحه ديگر منتقل شويد. در اين صفحه جديد دو تا جدول ميبينيد که يکي وسطهاي صفحه و ديگري آخرهاي صفحه است. بالاي جدول اولي نوشته شده:
You can find the installer hereما از همين جدول استفاده ميکنيم. توجه کنيد که Nessus را ميتوان به سه شکل مختلف نصب کرد که ما همين روش که nessus-installer نام داره رو انتخاب ميکنيم. از همين جدول با توجه به منطقه جغرافيايي که هستيد، روي يکي از لينکها کليک کنيد ( هرچقدر اون کشور به شما نزديکتر باشه سرعت داونلود بالاتر ميره ولي در کل همه لينکها قرتيبازيه! هر کدوم رو خواستيد کليک کنيد ). شما به يک صفحه جديد منتقل ميشويد و در اين صفحه سه تا فايل وجود داره به نامهاي MD5 و README.txt و nessus-installer.sh که از اين سه تا nessus-installer.sh رو بايد داونلود کنيد که فکر کنم سه چهار مگي باشه در مورد فايل MD5 هم بگم که ميتونين داونلودش کنيد يا نکنيد. اگه خيلي وسواس داريد که مطمئن بشيد اين نرمافزار که داونلود ميکنيد دقيقا همونيه که Nessus.org توليد کرده ( يعني اينکه نرمافزار تغيير يافته نيست و کدهاي اضافي مثل spy-ware و ... اينا نداره) اين فايل رو هم ميتونيد داونلود کنيد، تا بعد از اينکه فايل nessus-installer.sh رو گرفتيد به کمک دستور md5sum در لينوکس اين موضوع رو تست کنيد. بنابراين فايل اصلي و لازم همون nessus-installer.sh هستش.
- فايل nessus-installer.sh رو داونلود کردم. چطوري نصب کنم؟
اولا بايد در مود root يعني super-user به لينوکس login کرده باشيد. حالا shell لينوکس رو باز کرده و به دايرکتوري که فايل رو اونجا داونلود کردهايد وارد ميشويد. مثلا اگر در root/Desktop/ فايل رو داونلود کردهايد، مينويسيد:
# cd /root/Desktopحالا دستور زير رو مينويسيد:
# sh nessus-installer.shبلافاصله صفحه پاک ميشه و نوشته زير مياد (البته صفحه پاک نميشه فقط اينکه انقدر نوشته مياد که به نظر ميرسه صفحه پاک شده):
-------------------------------------------------------------------------------- NESSUS INSTALLATION SCRIPT--------------------------------------------------------------------------------Welcome to the Nessus Installation Script !This script will install Nessus 2.0.7 (STABLE) on your system.Please note that you will need root privileges at some point so thatthe installation can complete.Nessus is released under the version 2 of the GNU General Public License(see [. برای
مشاهده لینکها در سایت عضو شوید] for details).To get the latest version of Nessus, visit [. برای
مشاهده لینکها در سایت عضو شوید] ENTER to continueدکمه Enter رو فشار ميدهيد. يه سري چرت و پرت نوشته ميشه و صفحه پاک شده و متن زير مياد:
-------------------------------------------------------------------------------- Nessus installation : installation location--------------------------------------------------------------------------------Where do you want the whole Nessus package to be installed �[/usr/local]اين ميگه که Nessus رو کجا نصب کنم؟ شما دکمه Enter رو فشار بدين که در محل پيشفرض يعني usr/local/ نصب بشه. حالا صفحه پاک ميشه و نوشته زير مياد:
-------------------------------------------------------------------------------- Nessus installation : Ready to install--------------------------------------------------------------------------------Nessus is now ready to be installed on this host.The installation process will first compile it then install itPress ENTER to continueبازهم چرت و پرتها شروع به ظاهر شدن ميکنند ولي ايندفعه يکم بيشتر طول ميکشه که اراجيف تموم بشن ( اينا ابدا اراجيف نيستند ولي چون ما به صورت اتوماتيک داريم نصب ميکنيم، اصلا لزومي نداره فکرتون رو خراب بکنيد! ) حالا ميتونين يه چايي واسه خدتون بريزين و چند دقيقه استراحت کنيد.
وقتي کار نصب تموم شد، صفحه زير ظاهر ميشه:
-------------------------------------------------------------------------------- Nessus installation : Finished--------------------------------------------------------------------------------Congratulations ! Nessus is now installed on this host. Create a nessusd certificate using /usr/local/sbin/nessus-mkcert. Add a nessusd user use /usr/local/sbin/nessus-adduser. Start the Nessus daemon (nessusd) use /usr/local/sbin/nessusd -D. Start the Nessus client (nessus) use /usr/local/bin/nessus. To uninstall Nessus, use /usr/local/sbin/uninstall-nessus. Remember to invoke 'nessus-update-plugins' periodically to update your list of plugins. A step by step demo of Nessus is available at : [. برای
مشاهده لینکها در سایت عضو شوید] ENTER to quitيه Enter بزنيد که نصب تموم بشه. اين صفحه آخر اطلاعات مهمي داره که توضيح ميدم.
اولين جمله اينه:
Create a nessusd certificate using /usr/local/sbin/nessus-mkcertپس ما در Shell مينويسيم:
# /usr/local/sbin/nessus-mkcertوقتي Enter بزنيم، صفحه پاک شده و متن زير ظاهر ميشه:
------------------------------------------------------------------------------- Creation of the Nessus SSL Certificate-------------------------------------------------------------------------------This script will now ask you the relevant information to create the SSLcertificate of Nessus. Note that this information will *NOT* be sent toanybody (everything stays local), but anyone with the ability to connect to yourNessus daemon will be able to retrieve this information.CA certificate life time in days [1460]:از همينجا تا آخر کار ۶ تا Enter به ترتيب ميزنيم تا کار ايجاد certification تموم بشه. به صورت زير:
CA certificate life time in days [1460]:Server certificate life time in days [365]:Your country (two letter code) [FR]:Your state or province name [none]:Your location (e.g. town) [Paris]:Your organization [Nessus Users United]:بعد صفحه زير مياد:
------------------------------------------------------------------------------- Creation of the Nessus SSL Certificate-------------------------------------------------------------------------------Congratulations. Your server certificate was properly created./usr/local/etc/nessus/nessusd.conf updatedThe following files were created :. Certification authority : Certificate = /usr/local/com/nessus/CA/cacert.pem Private key = /usr/local/var/nessus/CA/cakey.pem. Nessus Server : Certificate = /usr/local/com/nessus/CA/servercert.pem Private key = /usr/local/var/nessus/CA/serverkey.pemPress [ENTER] to exitحالا آخرين Enter رو هم ميزنيم، تا کار تموم بشه.
پس ما تا حالا هم nessus-installer.sh رو اجرا کرديم و هم SSL Certificate براي Nessus درست کرديم. حالا بايد يک user روي سرور nessus درست کنيم که بتونيم بعدا از طريق او به نرمافزار login کنيم. براي اينکار از دستور زير استفاده ميکنيم:
# /usr/local/sbin/nessus-adduserبه محض اجراي اين دستور متن زير ظاهر ميشه:
Add a new nessusd user----------------------Login :اين يعني يک username وارد کن. اسم مورد نظر رو وارد ميکنيم و بعد سطر زير مياد:
Authentication (pass/cert) [pass] :اين يعني روش هويتسنجي چي باشه. ما Enter ميزنيم که همون پيشفرض يعني pass بمونه. بعد سطر زير مياد:
Login password : اينجا بايد پسورد براي يوزر رو وارد کنيم. اول يه نگاه به چپ، بعد يه نگاه به راست، بعد يه نگاه به عقب! حالا پسورد رو بنويسيد ( از کاراکتر * موقع وارد کردن پسورد خبري نيست. واسه همين مراسم رو بجا آورديم! )
حالا اين متن ظاهر ميشه:
User rules----------nessusd has a rules system which allows you to restrict the hoststhat ali has the right to test. For instance, you may wanthim to be able to scan his own host only.Please see the nessus-adduser(8) man page for the rules syntaxEnter the rules for this user, and hit ctrl-D once you are done the user can have an empty rules set)اينجا ميشه يه سري Rules واسه user تعريف کنيم که دامنه جاهايي که ميتونه اسکن کنه رو محدود کنيم، ولي فعلا لازم نيست، پس ترکيب ctrl-D رو فشار ميديم. حالا اين ظاهر ميشه:
Login : xxxxxxxxxxPassword : yyyyyyyyyDN :Rules :Is that ok � (y/n) [y]يه Enter ميزنيم که کار تموم بشه.
تبريک ميگم. نرمافزار nessus به همين راحتي نصب شد!
- نرمافزار رو نصب کردم. حالا چطوري nessus را اجرا کنيم؟
۱- هر بار که کامپيوتر رو restart ميکنيد، اگه بخواين از nessus استفاده کنيد، اول بايد سرور nessus رو اجرا کنيد. براي اجرا کردن سرور nessus که به اون nessus daemon يا به شکل خلاصه nessusd ميگن، دستور زير رو مينويسيم:
# /usr/local/sbin/nessusd -Dبه اين راحتي سرور nessus راهاندازي ميشود.
۲- حالا کلاينت رو اجرا ميکنيم. نکته مهم اينکه هر چند تا کلاينت که بخواين ميتونين اجرا کنيد. براي اين کار از دستور زير استفاده ميشود:
# /usr/local/bin/nessusبا اجراي اين دستور پنجره نرمافزار ظاهر ميشه. توجه کنيد که nessus در حالت متني هم کار ميکنه ولي استفاده از حالت گرافيکي راحتتر است.
- پنجره کلاينت nessus باز شده است. چگونه از nessus استفاده کنيم؟
در صفحه اول login-name و password رو وارد کنيد. اگر براي بار اول login ميکنيد، ممکن است که پنجرهاي باز شود به اسم SSL Setup که داراي سه سطر با دکمه راديويي است که اولي را که به صورت پيشفرض انتخاب شده رو تغيير نميدهيم و دکمه OK رو فشار ميدهيم. ولي اگر بار اول نباشد، اين پنجره ظاهر نميشود و اگر username و password درست باشد، برگه دوم که Plugins نام دارد باز ميشود. که ظاهري شبيه به اين دارد:
در مورد Plugins بايد توضيح بيشتري بدم. ميشه گفت Plugins قلب نرمافزار nessus است. مثلا فرض کنيد که nessus ميخواد تست کنه که آيا قرباني مشکلي به اسم Unicode bug دارد يا نه. واسه اين کار بايد يک Plugin خاص داشته باشد که اين مطلب رو تست کنه. Plugin ها به صورت فايلهاي جدايي هستند که معمولا به زبان NASL که مخصوص nessus است نوشته ميشوند (اگرچه ميتوان با توابع مخصوص nessus به زبان C هم Plugin نوشت ). در قسمت بالاي پنجره ميبينيد که در آن Plugins دستهبندي شدهاند مثل Windows و SNMP و ... هر کدوم را که انتخاب کنيد، در پايين پنجره ليست Plugins مرتبط ظاهر ميشه. و ميتوان اونها رو فعال يا غير فعال کرد. هر Plugins ي که فعال باشه، روي قرباني تست خواهد شد و اگه nessus تشخيص بده قرباني اون مشکل رو داره، اونو گزارش خواهد کرد. در حال حاضر نرمافزار nessus با بيش از هفتصد Plugin عرضه ميشه يعني ميتونه بيش از ۷۰۰ نوع حفره امنيتي ( و گاه اطلاعات مهم رو ) به ما ارائه بده و در واقع قدرت nessus در همين plugin هاست. مرتبا plugin هاي جديدي واسه حفرههاي امنيتي جديدي که کشف ميشن نوشته ميشه و به سايت اضافه ميشه که بعدا توضيح ميدم چطوري اين plugin هاي جديد رو داونلود کنيم.
اگه بخوام بهصورت مختصر بگم، ما در اين برگه مشخص ميکنيم کدام Vul ها تست بشن روي سرور که nessus ببينه اون vul هست يا نه!
بر خلاف عقيده بعضيها بايد عرض کنم که nessus سايت يا سروري رو hack نميکنه، فقط به ما کمک ميکنه که بدونيم واسه هک کردن اون سرور از چه راهي بايد وارد بشيم!
نکته بعدي اينکه nessus بعضي از plugin ها رو به نام dangerous plugins معرفي ميکنه که plugin هايي هستند که اگه روي يه سرور تست بشوند ممکنه که کامپيوتر قرباني hang کنه يا کند بشه يا restart بشه. اگه بخوايم همه plugin ها روي قرباني تست بشه، دکمه Enable all را فشار ميديم و اگه بخوايم همه رو بجز اونايي که خطرناک هستند، تست کنيم، دکمه Enable all but dangerous plugins رو انتخاب ميکنيم و اگه بخوايم همه عير فعال بشوند، disable all رو کليک ميکنيم.
برگه بعدي Prefs نام دارد. در اين برگه ميتوان تنظيماتي در مورد Plugin ها انجام داد. مثلا اگه لازم به Ping کردن باشه، ميشه مشخص کرد که TCP يا ICMP باشد. يا اگر اطلاعاتي راجع به SMB يا FTP مثل username يا password داريم وارد کنيم و ... معمولا اين برگه رو تغيير نميديم.
برگه بعدي Scan Options است. در اين برگه ميتوان مشخص کرد چه port هايي اسکن شود و ... که اين برگه را هم تغيير نميديم. دقت کنيد که Port Scanning در nessus از طريق nmap صورت ميگيرد.
آخرين برگه مهم Target Selection نام دارد که مشخص ميکند که کجا رو ميخوايم اسکن کنيم. چند مثال از مواردي که در قسمت target(s) ميشه نوشت رو ميگم:
۱- اگه بخوايم ip به شماره ۱۹۲.۱۳۰.۱۲.۴۵ رو اسکن کنيم:
192.130.12.45۲- اگه بخوايم ip هايي رو سه رقم اول اون ۱۹۲ و ۱۳۰ و ۱۲ و رقم آخر هم بين ۱۰ تا ۳۰ باشد رو تست کنيم:
192.130.12-10-30۳- اگه بخوايم ip هايي رو که سه رقم اول همون بالاييها و رقم آخر از ۰ تا ۲۵۵ باشد رو اسکن کنيم، ميشود به دو صورت نوشت:
192.130.12.0-255192.130.12.0/24۴- اگه بخوايم دو تا ip جدا رو تست کنيم، با يک کاما (,) از هم جدا ميکنيم:
192.130.12.25,192.125.46.120۵- اگه بخوايم از روي دومين يک سرور (سايت) رو اسکن کنيم، دومين رو مينويسيم: [. برای
مشاهده لینکها در سایت عضو شوید] که همهچي آماده است، دکمه Start the Scan رو از پايين پنجره کليک ميکنيم که کار اسکن شروع بشه.
- بعد از کليک کردن Start the Scan چه اتفاقي ميافتد؟
اين پرسيدن داره؟! خوب اسکن شروع ميشه. توجه کنيد که با توجه به تعداد Plugin هاي انتخابي و و و ... زمان ميتونه تا ۳۰ دقيقه يا بيشتر هم طول بکشه ( يکي از ايرادهايي که به nessus وارد ميشه،کند بودن اونه ) خلاصه تو اين مدت بهتره بريد ناهارتون رو هم بخوريد! بعد از اتمام کار يه پنجره باز ميشه که بيان ميکنه چه حفرهاي امنيتي در کامپيوتر قرباني کشف شده است. اين حفرهها درجهبندي شده هستند. مثلا بعضيها در حد Low يعني کم خطر، بعضي در حد Medium ، بعضي در حد High يعني خطرناک و بعضي هم در حد Serious يعني فاجعه! هستند. اونايي که High يا Serious هستند معمولا اگه ازشون استفاده بشه، ميشه سرور رو هک کرد. البته بايد false positive رو هم در نظر داشت، يعني مواردي که nessus يک حفره رو گزارش ميکنه ولي حفرهاي در کار نيست!
حالا شايد بپرسيد که وقتي nessus يه حفره رو کشف کرد، چظور از طريق اون حفره به کامپيوتر قرباني نفوذ کنيم؟
همونطور که گفتم با خود nessus نميشه. اما nessus در اکثر موارد يه CVE به ما ميده که با کليک روي اون لينک ميتونيم، با کمي گشتن اينور و اونور exploit واسه اون حفره پيدا کنيم و دست به عمل کثيفي به اسم هک بزنيم! توجه کنيد که در خيلي از کشورها يه port Scanning ساده هم جرم محسوب ميشه، پس مراقب باشيد
در همان پنجرهاي که نتايج رو نشون ميده، يه دکمه به اسم Save as وجود داره که به کمک اون ميشه نتايج رو در قالبهاي مختلفي مثل text و html با نمودارها و... ذخيره کرد؛ تا بعدا دقيقتر بررسي بشوند.
- از ديدگاه يک هکر يا يک متخصص امنيت شبکه، nessus در چه جايگاهي است؟
مسلما جايگاه خيلي خيلي بلندي نيست! اين نرمافزار فقط ميتونه حفرههايي رو کشف کنه که plugin براش داشته باشه. از ديدگاه يک هکر، تجربه بسيار مهمتر از ابزاري چون nessus است ( ضمنا nessus آنقدر ردپا بجا ميذاره که قابل چشمپوشي نيست ) و از ديدگاه يک متخصص امنيت شبکه حتي اگر nessus هيچ حفره امنيتي را هم پيدا نکند،دليل بر امن بودن ۱۰۰٪ اون سرور نيست. مخلص کلام اينکه nessus نرمافزار خوبي است ولي خدا نيست!!
- نکاتي راجع به nessus
۱- گفتم که Plugin ها بصورت فايلهاي جداگانه هستند. اگه بخواين ببينيد که اين فايلها چه شکلياند يا چه اسمهايي دارند يا اينکه در حال حاضر چند plugin داريد به دايرکتوري usr/local/lib/nessus/plugin/ برويد. با دستور زير :
# cd /usr/local/lib/nessus/plugin
# ls۲- با تايپ دستور زير به فولدر usr/local/sbin/ رفته و دستور ls رو صادر کنيد:
# cd /usr/local/sbin# lsفايلهاي زير رو خواهيد ديد:
nessus-adduser nessus-mkcert nessus-update-pluginsnessusd nessus-rmuser uninstall-nessusاز بين اين فايلهاي اجرايي nessusd و nessus-mkcert و nessus-adduser رو قبلا توضيح دادم. حالا سه فايل ديگر رو توضيح ميدم: nessus-rmuser : همانطور که از اسمش بر ميآيد، ميتوان به کمک اون يک user خاص رو که قبلا با nessus-adduser ايجاد کردهايم رو پاک کنيم. uninstall-nessus : به کمک اين دستور ميتوان nessus رو از سيستم پاک کرد. nessus-update-plugins : اين مهمترين دستور اين شاخه است. فرض کنيد که چند هفته پيش آخرين نسخه nessus رو داونلود کردهايد و داريد استفاده ميکنيد. مسلما در اين مدت plugin هاي جديدي نوشته شده است. براي اينکه plugin هاي جديد رو دريافت کنيد، ار اين دستور استفاده ميکنيد. با اجراي آن با دستور زير، خود فايل اجرايي به سايت nessus.org کانکت شده و Plugin هاي شما رو تکميل ميکند:
# /usr/local/sbin/nessus-update-pluginsيادتون باشه که حداقل هفتهاي يکبار اين دستور رو اجرا کنيد. با توجه به سرعت connection شما به اينترنت و تعداد plugin های جديدی که بايد داونلود بشه، اجرای اين دستور ممکن است چند دقيقهای طول بکشد.
علاقه مندی ها (Bookmarks)