تشخيص Packet Sniffing در يک شبکه
|
|
|
همه روزه شاهد ابداع فن آوری های جديدی در عرصه دنيای گسترده امنيت اطلاعات می باشيم. ابداع هر فن آوری جديد از يک طرف کارشناسان امنيت اطلاعات را اميدوار به برپاسازی و نگهداری يک شبکه ايمن می نمايد و از طرف ديگر مهاجمان را اميدوار به تدارک حملاتی که شانس موفقيت بيشتری را داشته باشند. چراکه آنان نيز از آخرين فن آوری های موجود در اين عرصه به خوبی استفاده خواهند کرد . شايد به همين دليل باشد که بسياری از کارشناسان فن آوری اطلاعات و ارتباطات بر اين عقيده هستند ، ماداميکه دانش مهاجمان بيش از کارشناسان امنيت اطلاعات است امکان مقابله منطقی ، ساختيافته و به موقع با بسياری از حملات وجود نخواهد داشت .( چگونه می توان با چيزی مقابله نمود که نسبت به آن شناخت مناسبی وجود ندارد؟ ) . اين يک واقعيت تلخ در دنيای امنيت اطلاعات است که بسياری از پتانسيل هائی که به منظور تسهيل در امر استفاده کامپيوتر و يا افزايش کارآئی سيستم ايجاد و يا به عنوان محصولات و ابزارهائی در جهت حفاظت و ايمن سازی شبکه های کامپيوتری عرضه می گردند ، توسط مهاجمان و به منظور برنامه ريزی حملات در شبکه های کامپيوتری نيز مورد استفاده قرار خواهند گرفت . اين موضوع در رابطه با packet sniffing نيز صدق می کند . packet sniffing چيست ؟ يکی از قديمی ترين روش های سرقت اطلاعات در يک شبکه ، استفاده از فرآيندی موسوم به packet sniffing است . در اين روش مهاجمان از تکنيک هائی به منظور تکثير بسته های اطلاعاتی که در طول شبکه حرکت می کنند ، استفاده نموده و در ادامه با آناليز آنان از وجود اطلاعات حساس در يک شبکه آگاهی می يابند . امروزه پروتکل هائی نظير IPSec به منظور پيشگيری از packet sniffing طراحی شده است که با استفاده از آن بسته های اطلاعاتی رمزنگاری می گردند . در حال حاضر تعداد بسيار زيادی از شبکه ها از تکنولوژی IPSec استفاده نمی نمايند و يا صرفا" بخش اندکی از داده های مربوطه را رمزنگاری می نمايند و همين امر باعث شده است که packet sniffing همچنان يکی از روش های متداول به منظور سرقت اطلاعات باشد . نحوه کار packet sniffing آيا روش هائی به منظور تشخيص وجود يک packet sniffer در شبکه وجود دارد ؟ روش های تشخيص packet sniffing در شبکه · استفاده از امکانات ارائه شده توسط برخی نرم افزارها : در صورتی که مهاجمان دارای منابع محدودی باشند ممکن است از برنامه کاربردی Network Monitor برای packet sniffing استفاده نمايند . يک نسخه محدود از Network Monitor به همراه ويندوز NT و 2000 و يک نسخه کامل از آن به همراه SMS Server ارائه شده است . برنامه فوق ، گزينه ای مناسب برای مهاجمانی است که می خواهند در کوتاه ترين زمان به اهداف خود دست يابند چراکه استفاده از آن در مقايسه با ساير نرم افزارهای مشابه راحت تر است . خوشبختانه می توان بسادگی از اجرای اين برنامه توسط ساير کاربران در يک شبکه ، آگاهی يافت . بدين منظور کافی است از طريق منوی Tools گزينه Identify Network Monitor Users را انتخاب نمود . · بررسی سرويس دهنده DNS : در صورتی که مهاجمان از يکی از صدها نرم افزار ارائه شده برای packet sniffing استفاده نمايند ، امکان تشخيص سريع آن همانند برنامه Network Monitor وجود نخواهد داشت . توجه داشته باشيد که يک روش صدرصد تضمينی به منظور تشخيص وجود يک برنامه packet sniffing در شبکه وجود ندارد ولی با مشاهده نشانه هائی خاص می توان احتمال وجود packet sniffing در شبکه را تشخيص داد . شايد بهترين نشانه وجود يک packet sniffing در شبکه به بانک اطلاعاتی سرويس دهنده DNS برگردد . سرويس دهنده DNS وظيفه جستجو در بانک اطلاعاتی به منظور يافتن نام host و برگرداندن آدرس IP مربوطه را بر عهده دارد . در صورتی که مهاجمی يک packet sniffing را اجراء نمايد که اسامی host را نمايش می دهد ( اکثر آنان چنين کاری را انجام می دهند ) ، ماشينی که فرآيند packet sniffing را انجام می دهد يک حجم بالا از درخواست های DNS را اجراء می نمايد . در مرحله اول سعی نمائيد ماشينی را که تعداد زيادی درخواست های DNS lookups را انجام می دهد ، بررسی نمائيد . با اين که وجود حجم بالائی از درخواست های DNS lookup به تنهائی نشاندهنده packet sniffing نمی باشد ولی می تواند به عنوان نشانه ای مناسب در اين زمينه مطرح گردد . در صورتی که به يک ماشين خاص در شبکه مشکوک شده ايد ، سعی نمائيد يک ماشين طعمه را پيکربندی و آماده نمائيد . ماشين فوق يک کامپيوتر شخصی است که کاربران از وجود آن آگاهی ندارد . پس از اتصال اين نوع کامپيوترها به شبکه ، يک حجم بالا ی ترافيک بر روی شبکه را ايجاد نموده و به موازات انجام اين کار درخواست های DNS را بررسی نمائيد تا مشخص گردد که آيا ماشين مشکوک يک درخواست DNS را بر روی ماشين طعمه انجام می دهد . در صورتی که اينچنين است می توان با اطمينان گفت که ماشين مشکوک همان ماشين packet sniffing است . · اندازه گيری زمان پاسخ ماشين های مشکوک : يکی ديگر از روش های متداول برای شناسائی افرادی که از packet sniffing استفاده می نمايند ، اندازه گيری زمان پاسخ ماشين مشکوک است . روش فوق مستلزم دقت زياد و تا اندازه ای غيرمطمئن است . بدين منظور از دستور Ping ماشين مشکوک به منظور اندازه گيری مدت زمان پاسخ استفاده می شود . بخاطر داشته باشيد فردی که عمليات packet sniffing را انجام می دهد تمامی بسته های اطلاعاتی را کپی نخواهد کرد ، چراکه حجم اطلاعات افزايش خواهد يافت . آنان با تعريف يک فيلتر مناسب، صرفا" بسته های اطلاعاتی مورد علاقه خود را تکثير می نمايند (نظير آنانی که برای تائيد کاربران استفاده می گردد ) . بنابراين از تعدادی از همکاران خود بخواهيد که چندين مرتبه عمليات log in و log out را انجام داده و در اين همين وضعيت مدت زمان پاسخ کامپيوتر مشکوک را محاسبه نمائيد . در صورتی که مدت زمان پاسخ زياد تغيير نکند ، آن ماشين احتمالا" عمليات packet sniffing را انجام نمی دهد ولی در صورتی که زمان پاسخ کند گردد ، اين احتمال وجود خواهد داشت که ماشين مشکوک شناسائی شده باشد. · استفاده از ابزارهای مختص AntiSniff : شرکت های متعددی اقدام به طراحی و پياده سازی نرم افزارهائی به منظور رديابی و شناسائی packet sniffing نموده اند . برنامه های فوق از روش های اشاره شده و ساير روش های موجود به منظور شناسائی packet sniffing در يک شبکه استفاده می نمايند |
صحبت با پورت ها(حال کنید)
الان به جايی رسيدهايم که میتوانيم بحث پورتها را شروع کنيم. اولين نکتهای که بايد بگم اين است که ابزاری که به کمک آن با پورتها صحبت میکنيم در همه پورتها يکی است ولی هر پورتی زبان مخصوص خود دارد (درست مثل زبانهای مختلف در جهان که همشون از طريق زبان و دهان ادا میشن ولی هر کدام روش خاصی برای ارتباط برقرار کردن دارند). پس ما برای کار با پورتها بايد زبان هرکدام را ياد بگيريم.
بحث بعدی اين است که وقتی میگيم يه پورت بازه بايد توجه کنيد که برنامهای روی آن کامپيوتر نصب شده و اون پورت را باز کرده است (پورتها خود به خود باز نمیشوند). يک سری پورتها توسط خود سيستمعامل باز میشوند (يعنی به محض نصب سيستمعامل که خودش هم درواقع يه نرمافزاره) و نيازی نيست که برنامه ديگری برايش نصب کنيم. در مقابل، بعضی پورتهای ديگر توسط برنامههای جانبی باز میشوند.
به عنوان مثال وقتی میگم که پورت ۲۵ روی يک 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.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
پورت ۷۹ چيست؟
پورت ۷۹ را پورت finger ميگويند. کاربرد اين پورت به اوايل ايجاد اينترنت برميگرده و کاربردش مخصوص سيستمعامل يونيکس بودهاست (الان هم تقريبا فقط در خانواده سيستمهای يونيکس اين پورت قابل استفاده است).
وقتي اين پورت روی سيستمعامل يونيکس باز باشه، ميشه با يک request ساده فهميد که از بين کساني که در آن سيستم account دارند، کدامها on هستند (يعني کدامها به سيستم login شدهاند). برنامهاي که پورت ۷۹ رو در يک سيستم باز ميکنه، finger server ميگن و چون مختص سيستمعامل يونيکس است، ميتونين از عبارت Finger Deamon استفاده کنين. حالا که پورت ۷۹ روي سيستم باز شد، شما ميتونين با اون ارتباط برقرار کنين.
با پورت ۷۹ صحبت کنيم
همانطور که ميدانيد، براي صحبت کردن با پورتها از دو برنامه telnet و nc ميشه استفاده کرد. در مورد پورت ۷۹ يه نرمافزار ديگر به نام finger در تمام سيستمعاملهای يونيکس و برخي سيستمعاملهاي ويندوز وجود دارد که علاوه بر دو برنامه قبلي، اونم ميشه به کار برد.
فرض کنيد که ميخوام با پورت ۷۹ در کامپيوتری به اسم router2.iums.ac.ir ارتباط برقرا کنم. برای اين کار يکي از سه دستور زير را استفاده ميکنم:
telnet router2.iums.ac.ir 79
nc -v router2.iums.ac.ir 79
finger .@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 کردهاند. اگر اکانتي موجود باشد ولي فرد مورد نظر در حال حاضر از آن اکانت وارد نشده باشد، نمايش داده نميشود. اين ليست فقط براي اکانتهای فعال است. پس نتايجي که شما در ارتباط با اين سرور کسب ميکنيد، با نتايجي که من نوشتم متفاوت خواهد بود.
اين اطلاعات به چه دردي ميخورد؟
اول اينو بگم که finger کردن، جزئي از مراحل Enumeration است (البته در حالت کاربرد legal يا قانوني). منظور از عبارت Enumeration يا به طور خلاصه Enum، پيدا کردن ليست کاربران است.
+ فرض کنيد ميخواهيد يک ليست از پسوردها را تست کنيد تا اينکه يکي شانسي درست در بياد (درست مثل دزدها که يه سري کليد را تست ميکنن که يکي به قفل بخوره و باز کنه!) حالا سوال اينه که اين پسوردها رو برای چه username ي تست ميکنيد؟ جواب، username هايي است که با Enumeration به دست اومده است. پس اول با Enumeration يه ليست پيدا ميکنيد و بعد تعداد زيادی پسورد رو روش تست ميکنيد (روش اين کارو بعدا ميگم).
+ کاربرد بعدی finger در رابطه با يک سري اکانتهاي خاص است. من هميشه وقتي به يک اکانت به اسم guest برخورد ميکنم، هميشه پسوردهای guest يا libguest يا myguest و ... رو تست ميکنم که گاهي جواب ميده. همينطور در مورد اکانتي به اسم demo پسورد demo را تست ميکنم و ... معمولا موسسات بزرگ پر است از اين username هاي عمومي که حدس زدن پسورد مربوطه کار مشکلي نيست.
+ گفتم که بعضي سرورهاي finger نام و نامخانوادگي افراد را هم برايمان ميفرستند. چون بعضي از افراد متاسفانه يا خوشبختانه از اين اطلاعات براي پسوردشون استفاده ميکنند، ميتونه مفيد باشه.
+ يک کاربرد ديگه و البته بسيار مهم موقعي است که مثلا ميخواهيد يک سري پسورد رو روي يک اکانت خاص تست کنيد. من هميشه اول يک finger ميکنم که مطمئن بشم که فرد در حال حاضر login نکرده باشد و بعد اين کار رو شروع ميکنم ( يعني انقدر صبر ميکنم که ديگه آن اسم خاص در finger نمايش داده نشه يعني طرف مقابل logout کرده باشد
پورت ۲۱ چيست؟
پورت ۲۱ رو پورت 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.com:(none)):
دقت کنيد که اين سايت 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 status append dir mdelete pwd trace ascii disconnect mdir quit type bell get mget quote user binary glob mkdir recv verbose bye hash mls remotehelp cd help mput rename close lcd 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> db 12-28-02 02:19AM < DIR> Special 03-08-03 03:18AM < DIR> www 226 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> _private 02-17-03 04:15PM 61982 1.jpg 12-28-02 02:19AM < DIR> aspnet_client 12-28-02 02:19AM < DIR> cgi-bin 12-29-02 06:27PM 11285 default.asp 12-28-02 02:19AM < DIR> images 12-28-02 02:18AM 2494 postinfo.html 226 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
هک کلاینت بدون فرستادن file یا trojan
مطلبي كه در اينجا ميخوانيد يكمي پيچيده است بنابراين اصلا نگران نباشيد گام به گام با اين متن پيش برويد سعي ميكنم خيلي ساده عنوان كنم اصلا نگران نباشيد
خلاصه كاري كه ما ميكنيم اين است كه ما با كارهاي زير ميخواهيم به ويندوز 2000 يا ايكس پي حمله كنيم از بيرون دستگاه بدون اينكه به قرباني فايلي بديم اجرا كنه يا هر ارتباط ديگري با قرباني داشته باشيم يعني ميخوايم خيلي حرفه اي نه مثل اين هكر هاي تازه كار كه تروجان ميدن به مردم خيلي حرفه اي خودمان ميخوايم يك پورت روي دستگاه قرباني باز كنيم بدون اينكه حتي يك كلمه هم با قرباني حرف بزنيم خوب حالا كه فهميديد چيكار ميخوام بكنيم من يكبار ديگه هم خلاصه بگم يك اي پي انتخاب ميكنيد و بعد هكش ميكنيد اولين كاري كه ميكنيم اين است كه اي پي مورد نظر يا همان قرباني را براي باز بودن پورت 445 امتحان ميكنيم
Start->run->CMD
را براي باز كردن يك صفحه كامند پرومت بزنيد و بعد با دستور
telnet ip 445
امتحان ميكنيم كه ايا پورت 445 باز است يا نه البته شما اگر حرفه اي هستيد حتما مثل هكر هاي حرفه اي براي اين كارها يك برنامه خاص را استفاده ميكني بنا به سليقه خودتان كه از چه برنامه اي خوشتان مياد ولي در اينجا از دستوراتي استفاده ميكنيم كه هر كسي خواست اين كار را انجام بدهد نياز به برنامه خاصي نداشته باشه و با كمترين امكانات ميخوايم به نتيجه برسيم
خوب توجه كنيد به جا اي پي در دستور بالا بايد اي پي قرباني را وارد كنيد و اگر اين دستور را وارد كرديد و اتصال برقرار شد يعني پورت 445 باز است پس گام اول را برداشتيد و اگر اتصال برقرار نشد و پيغام خطا دريافت كرديد قرباني شما به اين نوع حمله نفوذ پذير نيست
خوب حالا به گام دوم ميرويم در زير كد هاي حمله به اين پورت را مشاهده ميكنيد اين كدها را بايد كامپايل بفرمائيد و فايل اجرايي كه بدست مي اوريد را بصورت زير استفاده ميكنيد
expl
در خط بالا طرز استفاده به اين ترتيب است اولين كلمه expl نام فايل اجرايي است كه بعد از كامپايل ايجاد كرديد target يك عدد يك رقمي است كه مقدار 0 براي ويندوز ايكس پي است و مقدار 1و2 براي ويندوز 2000 است در اخر اين نوشته طرز تشخيص اينكه كدام عدد را استفاده كنيد يعني از كجا بفهميد قرباني ويندوز ايكس پي است كه 0 بزنيد يا قرباني ويندوز 2000 است كه 1 يا 2 بزنيد را ميخوانيد
victim ip همان اي پي قرباني شما است كه پورت 445 ان باز بود
binport شماره پورتي است كه ميخواهيد روي دستگاه قرباني براي شما باز بشود و به ان پورت وصل بشويد و قرباني را هك كنيد
option يك دستور است كه در ادامه تك دستور اين برنامه را توضيح ميدهم
خوب دوست من كار بسيار ساده است فرض كنيد اي پي قرباني من 217.0.0.1 است و من طبق ان چيزهايي كه بالا گفتم اين كارهاي را به تريتب انجام ميدهدم
1- Start --> Run --> CMD
2- Telnet 217.0.0.1 445
3- اگر وصل شد از برنامه حمله كه قبلا كامپال كردم و الان اماده استفاده است استفاده ميكنم
4- پنجره قبلي را كه در 2 دستور قبل باز كردم ميبندم
5- Start->Run->CMD
6-expl.exe 0 217.0.0.1 24745
----بعد از اينكه دستور خط 6 را زدنيد اين نوشته ها را مشاهده ميكنيد----
* [*] Target: IP: 217.0.0.1: OS: winXP [universal] lsass.exe
* [*] Connecting to 217.0.0.1:445 ... OK
* [*] Attacking ... OK
7-حمله انجام شد و پورت مورد نظر شما كه در خط شماره 6 من شماره پورت 24745 را انتخاب كردم الان باز شده تا ما وارد دستگاه قرباني بشويم
8-Start-->Run-->CMD
9-telnet 217.0.0.1 24745
10-به احتمال 95 درصد شما موفق شديد دستگاه قرباني را هك كنيد و اين خطوط را مشاهده خواهيد كرد
* Microsoft Windows XP [Version 5.00.2600]
* (C) Copyright 1985-2001 Microsoft Corp.
*
* C:\WINNT\system32>
11- دوست من در اين جا شما هر دستوري بزنيد روي دستگاه قرباني اجرا ميشود مثل اگر بزنيد format C: مي توانيد هارد قرباني را فرمت كنيد
ولي توجه كنيد يك هكر در اوج قدرت دست به خرابكاري نميزنه !!! پس هر كاري خواستيد بكنيد ولي خرابكاري نه !!!
و اما چطوري تشخيص بدهيد كه دستگاه قرباني شما ويندوز 2000 است كه از عدد 1 يا 2 استفاده كنيد يا ويندوز ايكس پي هست كه از عدد0 استفاده كنيد ؟ شما كافي است كه همان دستور بالا را كه براي حمله استفاده مكنيد بزنيد و فقط به اخرش -t اضافه كنيد يعني اينطوري
expl 0 217.0.0.1 24745 -t
بعد از زدن اين دستور برنامه به شما نسخه ويندوز را اعلام ميكند اگر نسخه ويندوز را winnt 5.0اعلام كرد يعني ويندوز 2000 است و شما عدد 1 يا 2 استفاده كنيد و اگر winnt 5.1 را اعلام كرد ويندوز ايكس پي است
اميدوارم كه مطلب بالا مورد استفاده شما قرار گرفته باشد توجه كنيد
چند تا ويروس باهال:
با سلام مجدد خدمت شما. امروز تصمیم گرفتم که چندتا لینک ویروس بزارم البته با اجازه
هکرهای گل. امیدوارم که خوشتون بیاد.قابل توجه اقا سعید و ارش و علی و بنیامین.
از انجایی که این یک کار غیر اخلافی است منو ببخشید ولی چه کنم که این وبلاگ مختص تمام قشرهاست
۱)ويروسی برای سوزوندن موس که البته بيشتر روی موس های ليزری کار ميکنه
از اینجا بگيرينش
۲)يه ويروس که توی هر دايرکتوری که تو هارد هست يه فايل۴کيلوبايتی(hyper text template) از اینجا بگيرينش
۳) اين هم يه ویروس برای خراب کردن ويندوز
سه تاويروس باهال برای پاک کردن هارد و خراب کاری و.............
ازاینجاو اینجا و اینجا بگيريدشون
اينم يه ويروس که مخرب فايل های exeاست
از اینجا بگيرينش
این هم ویروس ننه۱
اینجاست
اين هم يه کرم بلاستر بريد حالشو ببريد اینجا
يه وقت زحمت نکشيد نظر بديد
اصول شبكه های كامپیوتری
تعریف شبكه كامپیوتری:مجموعه ای از كامپیوترهای مستقل(ودستگاههای جانبی)كه به هم متصل شده اند.
منظور از كلمه مستقل این است كه یك سیستم كامپیوتری بزرگ با پایانه هایش ( مثلاً یك main frame ) شبكه محسوب نمیشود ، چون در واقع فقط یك كامپیوتر وجود دارد . همچنین سیستمهای master/slave را شبكه محسوب نمیكنیم ، زیرا در اینجا كامپیوترها مستقل نیستند و master كنترل slave را در دست دارد.
مقایسه شبكه و سیستم توزیع شده : در یك شبكه كامپیوتری كاربران به خوبی وجود چندین كامپیوتر را احساس می كنند و همه سرویسهایی كه از شبكه می گیرند ( مانند email ، انتقال فایل و ... ) بر این موضوع بنا شده است . اما در یك سیستم توزیع شده چندین كامپیوتر باهم همكاری میكنند اما از دید كاربر یك كامپیوتر قوی دیده میشود. كاربر بدون آنكه به تنوع كامپیوترها كاری داشته باشد ، با سیستم توزیع شده مانند یك پردازشگر واحد مجازی كار میكند و توزیع و مدیریت پردازش توسط خود سیستم انجام میشود . اصطلاحاً سیستم توزیع شده شفاف (Transparent) عمل میكند و جزئیات پیاده سازی و وجود چند كامپیوتر را از دید كاربر پنهان می دارد.
مزایا و كاربردهای شبكه كامپیوتری
اشتراك منابع ( سخت افزار - نرم افزار – داده ها )
افزایش قابلیت اعتماد سیستم به دلیل وجود چندین نسخه از منابع
نسبت قیمت به كارآیی كمتر در كامپیوترهای كوچك نسبت به سیستمهای بزرگ موجب شده كه شبكه ای از كامپیوترهای كوچك به صرفه تر از یك كامپیوتر بزرگ باشد.
استفاده از شبكه به عنوان بستر یك سیستم توزیع شده و امكان Load Sharing
قابلیت ارتقاء ( upgrade ) شبكه بیشتر از سیستمهایی مانند main frame است.
شبكه به عنوان یك رسانه ارتباطی سریع و كارا مطرح است : email ، تجارت الكترونیكی ، آموزش از راه دور ، سرگرمیهای شبكه ای و ...
مدل مشتری / كارگزار
در شبكه كامپیوتر(های) ارائه دهنده یك سری خدمات كارگزار[2] و كامپیوتر(های) استفاده كننده و متقاضی خدمات مشتری[3] نامیده می شوند. سرویس دهنده های مختلفی در شبكه های محلی و گسترده وجود دارند مانند File Server ، Print Server ، Web Server و ...
روشهای انتقال داده ها
دو تكنولوژی عمده انتقال اطلاعات در شبكه عبارتند از :
تكنولوژی پخشی
همه كامپیوترها به یك كانال ارتباطی مشترك متصلند.
وقتی مبدأ بسته اطلاعاتی خود را آماده می كند در فیلد آدرس آن ، مقصد را مشخص می كند و آن را روی خط مشترك میفرستد. همه ماشینها می توانند این بسته را ببینند اما فقط مقصد آن را می گیرد.
مسأله رقابت كامپیوترها برای ارسال روی خط مشترك وجود دارد كه راه حلهای آن را بعداً خواهیم دید.
تكنولوژی نقطه به نقطه
- بین كامپیوترها ارتباطات دوبدو وجود دارد.
- برای ارسال یك بسته بین مبدأ و مقصد ماشینهای بین راه به صورت واسطه عمل می كنند . بنابراین مساله مسیریابی مطرح است.
پهنای باند
پهنای باند یك خط ارتباطی ، عبارت است از تعداد بیتهایی كه در یك ثانیه از این خط قابل انتقال است.
پهنای باند = تعداد بیت منتقل شده / زمان انتقال
مثال : با یك مودم با پهنای باند 56 kbps در یك دقیقه حداكثر چه مقدار داده می توان انتقال داد ؟
پهنای باند = تعداد بیت / زمان
در نتیجه 56 k = تعداد بیت / 60 پس تعداد بیت = 60 * 56 Kb
كه جواب KB 420 می شود.
E پهنای باند را نباید با سرعت انتشار سیگنال در خط اشتباه كرد.زمان لازم برای انتقال حجم معینی داده بین دو كامپیوتر بیشتر به پهنای باند خط مربوط است و تأخیر انتشار اهمیت چندانی ندارد.
انواع شبكه از نظر اندازه
شبكه محلی یا (Local Area Network)LAN
شبكه متوسط یا شهری یا (Metropolitan Area Network)MAN
شبكه گسترده یا (Wide Area Network)WAN
ارتباط بین شبكه ای یا internetwork
شبكه های محلی
گستردگی یك شبكه محلی معمولاً چند ده تا چند صد متر است و از یك ساختمان یا چند ساختمان مجاور فراتر نمی رود. تكنولوژی انتقال داده ها معمولاً پخشی و رسانه های ارتباطی[مورد استفاده كابل مسی و گاهی فیبر نوری است. پهنای باند شبكه های محلی از 10 Mbps تا 100 Mbps یا بیشتر است.چنین پهنای باندی برای كامپیوترهای متصل به شبكه گسترده در دسترس نیست.زیرا پهنای باند بین تعداد زیادی كامپیوتر تسهیم می شود.
دو نوع اصلی شبكه محلی
1. شبكه های نظیر به نظیر یا Workgroup
در این نوع شبكه كامپیوترها همه در یك سطح هستند و هیچ كامپیوتری مدیر كل شبكه نیست .هر كامپیوتر هم نقش كلاینت و هم نقش سرور را می تواند داشته باشد.هر كاربر تصمیم می گیرد كه كدام منابع خود را برای چه كسانی به اشتراك بگذارد.
2. شبكه های مبتنی بر سرور
در این نوع شبكه كامپیوتر سرویس دهنده مسئول مدیریت كل شبكه ، اشتراك منابع ، مدیریت كاربران، تضمین امنیت و ... است و كلاینتها كه ایستگاه كاری[12] هم خوانده می شوند استفاده كننده از سرویسها هستند.
اگر چه سرویس دهنده های مختلفی مانند Print Server و App Server ممكن است در شبكه وجود داشته باشد ، منظور از Server به طور مطلق File Server است كه كامپیوتری است كه بخش اصلی سیستم عامل شبكه بر روی آن نصب شده و مدیر كلی شبكه است.
اميوارم به درد بخور باشه
ي سري دستورات هم هست مثلping و ... اگه خواستي بگو تا اونا رو هم بزارم