آموزش هک درس هشتم
۱- میخواهيم برای پورتهای ۱ تا ۲۰۰ در کامپيوتری که 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
◊ شروع کار با نرمافزار netcat
اگر يادتون باشه در درس ۱۱ مهمترين ابزاری که يک هکر برای footprinting استفاده میکنه را nmap معرفی کردم. حالا میخوام مهمترين نرمافزاری که يک هکر در کل زندگیاش !! استفاده میکنه رو معرفی کنم. اين نرمافزار netcat نام دارد که بهطور خلاصه nc ناميده ميشه ( اين nc با اون nc که تو DOS بود فرق میکنه). nc بقدری نرمافزار مهمی است که حتی يک سری لقب هم دارد. اگر جايی "Pocket Knife of network utilities" يا "TCP/IP Swiss Army Knife" شنيديد، بدونين که منظورشان همين nc است( اين نرمافزار را به چاقوی جيبی تشبيه میکنند ). من فعلا نمیخوام يه معرفی کامل از اون بکنم فقط میگم که علاوه بر قابليتهای عمومی مثل Scanning ها، چيزی که اون رو خيلی معروف کرده يکی عملکرد مشابه ولی بهتر از telnet و ديگری کاربرد اون بهعنوان هم کلاينت و هم سرور (يه چيزی تو مايههای تروجان) است.
اين نرمافزار اولين بار برای سيستمعاملهای يونيکس نوشته شد ولی نسخه مخصوص ويندوز هم داره که برای داونلود اون اينجا را کليک کنيد. اين نسخه فقط در ويندوزهای NT (مثل Windows2000، Windows XP) کار میکنه.
برای به دست آوردن ليست پارامتر های اون مینويسيم:
nc -help
و جواب میشنويم:
[v1.10 NT]
connect to somewhere: nc [-options] hostname port[s] [ports] ...
listen for inbound: nc -l -p port [options] [hostname] [port]
options:
-d detach from console, stealth mode
-e prog inbound program to exec [dangerous!!]
-g gateway source-routing hop point[s], up to 8
-G num source-routing pointer: 4, 8, 12, ...
-h this cruft
-i secs delay interval for lines sent, ports scanned
-l listen mode, for inbound connects
-L listen harder, re-listen on socket close
-n numeric-only IP addresses, no DNS
-o file hex dump of traffic
-p port local port number
-r randomize local and remote ports
-s addr local source address
-t answer TELNET negotiation
-u UDP mode
-v verbose [use twice to be more verbose]
-w secs timeout for connects and final net reads
-z zero-I/O mode [used for scanning]
port numbers can be individual or ranges: m-n [inclusive]
تا همينجا بماند تا بعدا تک تک پارامترها رو توضيح میدم.
◊ استفاده از nc برای port scanning
برای پورت اسکنينگ قبلا از NMapWin و nmap استفاده کرديم. اما اين کار را با nc هم میتوان انجام داد ( اگرچه من بازهم برای پورت اسکنينگ همان nmap رو توصيه میکنم.) برای port scanning با nc بايد بنويسيد:
nc -v -z host pornum
بهجای host بايد ip ) ip ها) يا نام آن (مثلا اسم سايت) را بنويسيم. و بهجای portnum ، شماره پورت (يا پورتها) را مینويسيم. v- يعنی verbose يعنی نتايج با جزئيات نمايش داده شود. z- وقتی استفاده میشود که از nc برای scanning استفاده میکنيم.
فرض کنيد میخواهيم ip ی به شماره 217.66.195.181 را برای پورتهای ۱ تا ۲۰۰ چک کنم، مینويسم:
nc -v -z 217.66.195.181 1-200
و جواب میشنوم:
artawill-1dedm4 [217.66.195.181] 143 (imap) open
artawill-1dedm4 [217.66.195.181] 139 (netbios-ssn) open
artawill-1dedm4 [217.66.195.181] 135 (epmap) open
artawill-1dedm4 [217.66.195.181] 119 (nntp) open
artawill-1dedm4 [217.66.195.181] 80 (http) open
artawill-1dedm4 [217.66.195.181] 53 (domain) open
artawill-1dedm4 [217.66.195.181] 25 (smtp) open
artawill-1dedm4 [217.66.195.181] 21 (ftp) open
artawill-1dedm4 [217.66.195.181] 19 (chargen) open
artawill-1dedm4 [217.66.195.181] 17 (qotd) open
artawill-1dedm4 [217.66.195.181] 13 (daytime) open
artawill-1dedm4 [217.66.195.181] 9 (discard) open
artawill-1dedm4 [217.66.195.181] 7 (echo) open
میبينيد که پورتها از آخر به اول ليست شدهاند. و نيز اينکه اين نرمافزار هم میتواند سرويسهای احتمالی مربوط به هر پورت باز را هم ليست کند.
اگر میخواستم يک سری پورت را که به صورت پشتسرهم نيستند، بررسی کنم، بايد پورت ها را يکی پس از ديگری با فاصله از هم جدا کنيد. مثلا برای بررسی پورتهای ۲۵، ۸۰ و ۱۱۰ را چک کنم، مینويسم:
nc -v -z 217.66.195.181 25 80 110
در درسهای بعدی با کاربردهای بيشتری از nc آشنا خواهيم شد.
◊ شروع کار با پورتها
الان به جايی رسيدهايم که میتوانيم بحث پورتها را شروع کنيم. اولين نکتهای که بايد بگم اين است که ابزاری که به کمک آن با پورتها صحبت میکنيم در همه پورتها يکی است ولی هر پورتی زبان مخصوص خود دارد (درست مثل زبانهای مختلف در جهان که همشون از طريق زبان و دهان ادا میشن ولی هر کدام روش خاصی برای ارتباط برقرار کردن دارند). پس ما برای کار با پورتها بايد زبان هرکدام را ياد بگيريم.
بحث بعدی اين است که وقتی میگيم يه پورت بازه بايد توجه کنيد که برنامهای روی آن کامپيوتر نصب شده و اون پورت را باز کرده است (پورتها خود به خود باز نمیشوند). يک سری پورتها توسط خود سيستمعامل باز میشوند (يعنی به محض نصب سيستمعامل که خودش هم درواقع يه نرمافزاره) و نيازی نيست که برنامه ديگری برايش نصب کنيم. در مقابل، بعضی پورتهای ديگر توسط برنامههای جانبی باز میشوند.
به عنوان مثال وقتی میگم که پورت ۲۵ روی يک 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 است.
و جواب میشنوم:
11:35:33 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 را فشار دهيم تا اين ميمون بازی تموم بشه.
پس کار کردن با اين پورت هم زياد سخت نيست.
◊ با پورت ۸۰ صحبت کنيم
پورت ۸۰ يکی از مهمترين پورتهاست. دنيای وب (صفحات اينترنتی) بر اساس همين پورت کار میکنه. توضيح اينکه وقتی به يه سايت وصل میشيم و صفحه وب را درخواست میکنيم، در واقع مرورگر اينترنتی به پورت ۸۰ اون کامپيوتر وصل میشه و اطلاعات رو میگيره (البته بعد از گرفتن اطلاعات اون رو تفسير میکنه و به صورت يه صفحه نشون میده - دقت کنيد که اطلاعات در واقع به صورت يک سری تگ HTML است ). حالا ما میخواهيم با پورت ۸۰ يک کامپيوتر صحبت کنيم ولی به کمک telnet و nc.
اول بايد يه connection (اتصال) با پورت ۸۰ برقرار کنيم (مثلا برای سايت hotmail.com بايد بنويسم):
telnet www.hotmail.com 80
nc -v www.hotmail.com 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: http://lc2.law5.hotmail.passport.com/cgi-bin/login
X-Cache: MISS from cache5.neda.net.ir
Connection: close
۲- دومين جمله اينه: GET / what/ever و بعدش دوتا Enter
به فاصلهها دقت کنيد. اين دستور باعث ميشه که هر چی داره، رو کنه.
البته توجه کنيد که ما مسير را مشخص نکرديم. بعدها در مورد اين مسير مشخص کردن صحبت خواهم کرد. اين حالت که بدون مسير است خيلی وقتها کار نمیکنه (مثل همين مثال !!)
گاهی پيش میآد که يک سری دستورات خاص را هميشه بايد پشت سرهم به يه پورت خاص بفرستيم و بخواهيم در وقت صرفهجويی کنيم. مثلا همين جمله GET / HTTP/1.0 و دو Enter پشت سرهم که هميشه استفاده میکنيم. در اين موارد میتوان اين دستورات را در يک فايل تايپ کرد (همراه با Enter ها که بايد موقع نوشتن حتما بزنيد) و بعد مثلا با نام ali.txt ذخيره کنيد و بعد يکی از دستورات زير را بنويسيم:
nc -v www.online.com 80 < ali.txt
type ali.txt | nc -v www.online.com 80
که همان کارهای بالايی را انجام ميده.