پاسخ به:آموزش های تخصصی شبکه و امنیت و ضد امنیت
پنج شنبه 26 مرداد 1391 1:37 AM
شروع کار با پورتها
- شروع کار با پورتها
الان به جايی رسيدهايم که میتوانيم بحث پورتها را شروع کنيم. اولين نکتهای که بايد بگم اين است که ابزاری که به کمک آن با پورتها صحبت میکنيم در همه پورتها يکی است ولی هر پورتی زبان مخصوص خود دارد (درست مثل زبانهای مختلف در جهان که همشون از طريق زبان و دهان ادا میشن ولی هر کدام روش خاصی برای ارتباط برقرار کردن دارند). پس ما برای کار با پورتها بايد زبان هرکدام را ياد بگيريم.
بحث بعدی اين است که وقتی میگيم يه پورت بازه بايد توجه کنيد که برنامهای روی آن کامپيوتر نصب شده و اون پورت را باز کرده است (پورتها خود به خود باز نمیشوند). يک سری پورتها توسط خود سيستمعامل باز میشوند (يعنی به محض نصب سيستمعامل که خودش هم درواقع يه نرمافزاره) و نيازی نيست که برنامه ديگری برايش نصب کنيم. در مقابل، بعضی پورتهای ديگر توسط برنامههای جانبی باز میشوند.
به عنوان مثال وقتی میگم که پورت ۲۵ روی يک 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 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.far30.com 80 < ali.txt
type ali.txt | nc -v www.far30.com 80که همان کارهای بالايی را انجام ميده.
- حالا ميخوام مسير رو مشخص کنم
مثلا فرض کنيد که ميخوام فايلي به اسم index.html را از مسير startup در سايتي به اسم www.site.com داونلود کنيم. اول يه nc ميکنيم به سايت. بعد مينويسيم:
GET /startup/index.html HTTP/1.0بعد دو تا Enter ميزنيم.
اين مثال نشون ميده که چطوري مسير رو ميشه مشخص کرد. همين کار رو ميتونيم براي فايلهايي مثل فايلهاي گرافيکي و ... انجام بديم و حتي ميتونيد اطلاعاتي که ميرسه رو در يک فايل ذخيره کنيد. براي اينکار مينويسيد:
nc -v www.site.com 80 > index.html(اين کاري که کرديم با موردي که در بالا نوشتيم فرق ميکنه! در بالا دستورات GET رو تو يه فايل مينوشتيم و ميفرستاديم که اجرا بشه ولي الان داريم نتايجي که بر ميگرده رو در يک فايل ذخيره ميکنيم!) ميشه اين دوتا رو ترکيب کرد مثلا نوشت:
nc -v www.site.com 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 www.noavar.com 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: araztest@noavar.comMIME-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 www.noavar.com 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 الکي بنويسين مثلاalaki@dolaki.com !!
آدرسي که براي ftp با يه سرور استفاده ميکنيم به چه شکلي است؟
آدرسي که استفاده ميکنيم بستگي به سرور داره ولي معمولا ساختار ثابتي داره. ( اگه يادتون باشه واسه web مثلا مينوشتيم، www.far30.com ) حالا براي 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 ls put statusappend dir mdelete pwd traceasciidisconnect mdir quit typebell get mget quote userbinary glob mkdir recv verbosebye hash mls remotehelpcd help mput renameclose lcdopen 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 را فشار ميدهيد. در اين حالت، پنجرهاي باز شده و از شما پسورد ميخواهد و شما پسورد را نوشته و بعد از تاييد، وارد پورت ۲۱ اون کامپيوتر ميشين.
** دارالولایه **