ترمينولوژی (اصطلاحشناسی) - Hacker کيست ؟ هکر کسی است که با سيستم های کامپيوتری آشناست و میتواند با روشهايی خاص (بدون اجازه) وارد آنها شود... اين انسان میتواند خوب يا بد باشد ( در هر حال هکر است) - سوال: يک هکر از چه راهی وارد يک سيستم میشود؟ از راه شبکه (نه بابا( ! بايد توجه کنيد که هر سيستم کامپيوتری (به عبارت بهتر هر سيستم عامل) به هر حال محصول کار تعدادی انسان است و حتما دارای تعدادی) bug خطاهايی که بعد از ارائه محصول به بازار به تدريج کشف میشوند) خواهد بود. بعد از اينکه يک باگ مشخص شد، شرکت ها نرمافزارهايی را بهسرعت (در عرض چند ساعت ) ايجاد میکنند تا مشکل رفع شود اينها را patch میگويند. و بعد مديران شبکه (Wbemasters) در عرض چند روز تا چند سال (آين آخری در مورد ايرانه) آنها را download کرده و مشکل را حل میکنند. در اين فاصله هکرها دمار از روزگار اين سايتها در میاورند... - تعريف چند اصطلاح: *** Hacker واقعی = سامورايی : کسی که هدفش از نفوذ به سيستمها نشان دادن ضعف سيستمهای کامپيوتری است نه سوءاستفاده ... *** Wacker واکر: کسی که هدفش از نفوذ به سيستمها، استفاده از اطلاعات آن سيستمهاست)جرو هکرهای کلاه سياه ( *** Cracker کراکر: کسی که هدفش از نفوذ به سيستمها، خرابکاری و ايجاد اختلال در سيستمهای کامپيوتری است. (جرو هکرهای کلاه سياه( *** Preaker : از قديميترين هکرها هستند که برای کارشان نياز (و دسترسی) به کامپيوتر نداشتند و کارشان نفوذ به خطوط تلفن برای تماس مجانی، استراقسمع و ... بود. اين جزو آموزش من نيست چون کار خيلی بديه تقسيمبندی - انواع کامپيوترهای شبکه: => کامپيوترهای Server : کامپيوترهايی که کارشان تامين اطلاعات در شبکه است، مثلآ کامپيوترهايی که سايتها را نگه میدارند. => کامپبوترهای Client : کامپيوترهايی که استفاده کننده هستند مثل همين کامپيوتر خودتان که داريد ازش کار میکشيد. - انواع سيستم عاملهايی که Server ها از آن استفاده میکنند: => سيستمهای فعلی: * خانواده Unixمثل( FreeBSD , Linux ) * خانواده Windows مثل( WinNT, Win2000 ) * Sun Solaris * OsMac => سيستمهای قديمی (منقرض شده - آخيش !AIX, IRIS, DEC10, DEC20 , ... - سوال: کدامها را بايد ياد گرفت؟ Win2000, Unix(Linux) را بايد ياد بگيريد. پيشنهاد من اين است که Win2000و RedHat Linux را روی کامپيوتر خود همزمان داشته باشيد. Command Prompt چيست؟ در بسياری از درسهای آينده از Command Prompt(خط فرمان) ويندوز استفاده خواهيم کرد. برای باز کردن آن يکی از روشهای زير را به کار بريد: ۱- مسير زير را در ويندوز طی کنيد: Start > Programs > Accessories > Command Prompt ۲- در قسمت Run بنويسيد command يا cmd معرفی چند اصطلاح IP: شماره ايست که به هر کامپيوتر متصل به اينترنت داده میشود تا بتوان بهکمک آن شماره به آن کامپيوترها دسترسی داشت. اين عدد برای کامپيوترهايی که حالت سرور دارند (مثلا سايتها) و نيز کامپيوترهای کلاينتی که معمولا به روشی غير از شمارهگيری (Dial Up) به اينترنت وصل هستند، عددی ثابت و برای ديگران عددی متغير است. مثلا هر بار که شما با شرکت ISP خود تماس گرفته و به اينترنت وصل میشويد، عددی جديد به شما نسبت داده میشود. اين عدد يک عدد ۳۲ بيتی (۴ بايتی) است و برای راحتی بهصورت زير نوشته میشود: xxx.xxx.xxx.xxx که منظور از xxx عددی بين ۰ تا ۲۵۵ است (البته بعضی شمارهها قابل استفاده نيست که بعدا علت را توضيح خواهم داد). مثلا ممکن است آدرس شما به صورت 195.219.176.69 باشد. حتی اسمهايی مثل [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] که برای اتصال استفاده میکنيد، در نهايت بايد به يک IP تبديل شود، تا شما سايت ياهو را ببينيد. در IP معمولا xxx اولی معنای خاصی دارد، که بعدا توضيح میدهم... فقط اين را بگويم که اگر به روش Dial Up به اينترنت وصل شويد، معمولا عددی که به عنوان xxx اول میگيريد، مابين 192 تا 223 خواهد بود.اين توضيح برای تشخيص کامپيوترهای کلاينت از سرور (حداقل در ايران) بسيار میتواند مفيد باشد. بعد از اتصال به اينترنت برای به دست آوردن IP خود، از دستور IPCONFIG در command prompt استفاده کنيد. (البته يک سری نکات فنی داريم که بعدا میگم) پورت (Port): در ساده ترين تعريف، محلی است که دادهها وارد با خارج میشوند. در مبحث هک معمولا با پورتهای نرمافزاری سروکار داريم که به هر کدام عددی نسبت میدهيم. اين اعداد بين ۱ و ۶۵۵۳۵ هستند. معمولا به يک سری از پورتها کار خاصی را نسبت میدهند و بقيه بهصورت پيشفرض برای استفاده شما هستند. پورتهای که فعال هستند، هرکدام توسط يک نرمافزار خاص مديريت میشوند. مثلا پورت ۲۵ برای ارسال Email است، بنابراين بايد توسط يک نرمافزار اين کار انجام شود و اين نرمافزار بر روی پورت ۲۵ منتظر (فالگوش) میماند. اينجا ممکن است شخصی از فلان نرمافزار و ديگری از بهمان نرمافزار استفاده کند ولی بههر حال پورت ۲۵ هميشه برای ارسال Email است. در پايين ليستی از مهمترين پورتها و کاربردشان را میبينيد: Port Num Service Why its phun -------- ------- ---------------------------------------- 7 echo Host repearts what you type 9 discard Dev/null 11 systat Lots of info on users 13 daytime Time and date at computers location 15 netstat Tremendous info on networks 19 chargen Pours out a stream of ASCII characters. 21 ftp Transfers files 23 telnet Where you log in. 25 smpt Forge email 37 time Time 39 rlp Resource location 43 whois Info on hosts and networks 53 domain Nameserver 70 gopher Out-of-date info hunter 79 finger Lots of info on users 80 http Web server 110 pop Incoming email 119 nntp Usenet news groups -- forge posts, cancels 443 shttp Another web server 512 biff Mail notification 513 rlogin Remote login who Remote who and uptime 514 shell Remote command, no password used syslog Remote system logging 520 route Routing information protocol از ميان اين پورتها شمارههای ۷، ۱۵، ۲۱، ۲۳، ۲۵، ۷۹، ۸۰، ۱۱۰و ۱۱۹ فعلا برای ما مهمترند و بهتدريج با آنها آشنا خواهيد شد. چگونه به يک پورت Telnet کنيم؟ برای اينکه عملکرد يک پورت برای شما روشن شود، بايد به آن پورت Telnet کنيد. (البته معمولا تعدادی از پورتهايی را که ممکن است اطلاعاتی مهم را در اختيار هکرها قرار دهند مثل پورت ۷۹ معمولا بسته است و ارتباط با آنها شايد برقرار نشود.) برای telnet کردن در command prompt دستور زير را تايپ کنيد: telnet hostname portnum در اين دستور بهجای hostname شماره ip و يا نام سايت را وارد میکنيد و بهجای portnum شماره پورت و يا معادل آن از جدول. مثلا برای تلنت کردن به پورت ۱۳ که ساعت و تاريخ را بهدست میدهد در کامپيوتری به اسم [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] مينويسيد: telnet iums.ac.ir 13 telnet iums.ac.ir daytime هر دو اين دستورات معادل هم هستند. تلنت کردن معمولا اولين کاری است که يک هکر برای هک کردن يک سايت انجام میدهد، زيرا بعضی از پورتها در صورت بسته نبودن روی آن سرور، معمولا حاوی اطلاعات بسيار مهمی هستند. همين الان شروع کنيد و مثل يک هکر واقعی به کامپبوترهای مختلف و پورتهای گوناگون تلنت کنيد. مخصوصا اگر پورت ۷۹ (finger) روی يک کامپيوتر باز بود، مرا هم خبر کنيد تقسيمبندی انواع حملات اولين نکتهای که لازم است بگويم اينه که وقت خود را برای هک کردن کامپيوترهای کلاينت هدر ندهيد (اگرچه برای افراد مبتدی کار با نرمافزاری مثل Sub7 زياد هم بد نيست ولی نبايد زيادهروی کرد) علت هم اينه که هربار که به اينترنت وصل میشوند ip جديدی به آنها اختصاص پيدا میکنه و زحماتتون هدر میره (البته برای جلوگيری از اين امر هم روشهايی هست که در آينده ايشالله ميگم). حالا تقسيمبندی: ۱- حمله به روش Denial of Service Attack) DoS) ۲- حمله به روش Exploit ۳- حمله به روش Info Gathering (تلنت کردن يکی از مثالهای آن است که امروز آموختيد) ۴- حمله به روش Disinformation ترسيم مسير برای آينده: ۱- اولين و مهمترين تصميم انتخاب نوع کامپيوتری است که میخواهيد هک کنيد ( کلاينت يا سرور )، زيرا روشهک کردن ايندو بجز در مراحل ابتدايی کاملا متفاوت است. ۲- دومين گام انتخاب يک کامپيوتر مشخص (مثلا کامپيوتری که فلان سايت را نگه میدارد که مثالی برای کامپيوتر سرور است و يا کامپیوتر فلان شخصی که با او چت میکنيد که مثالی برای کامپيوتر کلاينت است) و جمعآوری اطلاعات در مورد آن است. اين جمعآوری اطلاعات از قربانی (Victim) را Footprinting گويند. اولين مشخصهای که بايد کشف شود، ip اوست. يکی ديگر از اطلاعات مهم که معمولا دنبالش هستيم، پيدا کردن نوع سيستمعامل و نيز برنامههايی است که کامپيوتر شخص از آنها بهره میبرد. يکی از مهمترين ( و گاه خطرناکترين) کارها، تستکردن پورتهای آن کامپيوتر برای ديدن اينکه کدام پورتها باز و کدامها بسته هستند. ۳- مرحله بعدی در واقع شروع تلاش برای نفوذ به سيستم است. اين نفوذ سطوح مختلف دارد و بالاترين آن که در کامپيوترهای سرور روی میدهد، حالتی است که بتوان username و password مربوط به مدير کامپيوتر (administrator) يا superuser را بهدست آورده و از طريق اين Shell Account به نهايت نفوذ دست يابيم ولی گاه بهدلايل مختلف (مربوط به سطح علمی خود و ... ) نمیتوان به اين سطح دستيافت اما به هر حال برای مرحله بعدی میتواند استفاده شود. اين مرحله جايی است که هنر شما يه عنوان يک هکر آغاز شده و نيز به پايان میرسد. ۴- اين مرحله بعد از نفوذ روی میدهد که در آن به يک سطحی از کنترل سيستم رسيدهايد. رفتار شما در اين مرحله مشخص میکند که چه نوع هکر هستيد(سامورايی، واکر و يا کراکر) و اينکه آيا جنبه ياد گرفتن را داشتهايد يا نه، همينجا مشخص خواهد شد. ۵- مرحله آخر پاک کردن ردپاست تا گير نيفتيم (البته بعضی وقتها برای کلاس گذاشتن بايد گير بيفتيم، هه هه ...). بعضی از سيستمها آمار login را نگه میدارند که در مورد آنها اين مرحله بسيار مهم است. خلاصه مطالب بالا به اين صورت است: Selection -> FootPrinting -> Penetration -> [Changings] -> Cleaning شروع مبحث Footprinting گفتيم که اولين مرحله جمعآوری اطلاعات است که به آن FootPrinting میگويند. اين مبحث را با آموزش روش پيدا کردن ip شروع میکنيم. پيدا کردن ip يک سايت با دانستن آدرس اينترنتی برای اين کار روشهای مختلفی هست: ۱- در (Internet Explorer (IE آدرس را تايپ کنيد و Enter را فشار دهيد. در قسمت پايين مرورگر يعنی Status Bar پس از چند لحظه برای مدت کوتاهی ip نمايش داده میشود و میتوانيد آنرا يادداشت کنيد. اگر طول اين مدت بسيار کوتاه است میتوانيد از صفحه عکس بگيريد ( با دکمه Print Screen ) و در يک نرمافزار گرافيکی بعد از باز کردن يک صفحه خالی به کمک Ctrl+V آنرا مشاهده کنيد. [ عجب راه احمقانهای ;-) اگر اين کار را برای [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] انجام دهيم: که همان شماره ip برای [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] است. نکته بسيار مهم اين است که بهدليل ضريب اشتباه بسيار بالای آن هيچگاه از اين روش استفاده نکنيد. نتايج ممکن است کاملا اشتباه باشد که بعدا ميگم چرا. ۲- دستور ping را در command prompt صادر کنيد: ping domain در اين حالت میتوانم ip آن سايت را ملاحظه کنم. (البته کار اصلی ping يک چيز ديگست و ميشه گفت داريم ازش سوءاستفاده میکنيم). مثلا برای پيدا کردن ip سازين مینويسم: ping sazin.com و جواب میشنوم: Pinging sazin.com [63.148.227.65] with 32 bytes of data: Reply from 63.148.227.65: bytes=32 time=821ms TTL=111 Reply from 63.148.227.65: bytes=32 time=821ms TTL=111 Reply from 63.148.227.65: bytes=32 time=822ms TTL=111 Reply from 63.148.227.65: bytes=32 time=811ms TTL=111 Ping statistics for 63.148.227.65: Packets: Sent = 4, Received = 4, Lost = 0 (0% loss), Approximate round trip times in milli-seconds: Minimum = 811ms, Maximum = 822ms, Average = 818ms ملاحظه میفرماييد که ip سازين 63.148.227.65 است. اگر دستور ping را بهجای sazin.com برای [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] صادر کنيد، جواب همان است. البته برای سايتهای بزرگ جوابهای حاصل متفاوت خواهد بود. ۳- روش بعدی و کاملترين روش whois کردن به بعضی سايتهای خاص است. بعدا اين را کاملتر توضيح میدم ولی فعلا روشش رو میگم. آدرس زير را در مرورگر خود تايپ کنيد: [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] که بهجای xxxxxx آدرس مورد نظر را تايپ کنيد. مثلا برای sazin.com يکی از دو آدرس زير را بايد تايپ کرد: [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] چيزی که در صفحه ظاهر میشود به صورت زير است: whois -h magic 63.148.227.65 sazin.com resolves to 63.148.227.65 Trying whois -h whois.arin.net 63.148.227.65 Qwest Communications NET-QWEST-BLKS-2 (NET-63-144-0-0-1) 63.144.0.0 - 63.151.255.255 Neutron Digital Media Corp. QWST-63-148-224 (NET-63-148-224-0-1) 63.148.224.0 - 63.148.231.255 # ARIN Whois database, last updated 2002-09-04 19:05 # Enter ? for additional hints on searching ARIN"s Whois database. که آدرس ip در سطر اول و دوم ذکر شده است. اگر دو روش آخر را برای سايت بزرگ yahoo انجام دهيم، نتايج زير را میبينيم: --> روش ping : [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] ====> 64.58.76.229 yahoo.com ====> 66.218.71.198 --> روش whois : ...و [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] ====> 66.218.71.86 64.58.79.230 و yahoo.com ====> 66.218.71.198 نتايج حاصل گويای آن است که چرا بهتر است از whois استفاده کنيم. RFC چيست ؟ متون بسيار کامل ولی خشک و ثقيل که در مورد مفاهيم مختلف شبکه بحث میکنند. اين فايلها به صورت متنی و با پسوند txt هستند و بهعنوان مرجع (برای مراجعه و نه مطالعه کامل) کاربرد دارند. اين فايلها يکبار منتشر شده و هرگز تغيير داده نمیشوند (حتی اگر حاوی اشتباه باشند.) فايلهای RFC از کجا قابل دسترسی هستند؟ RFCها از سايتهای بسياري قابل دسترس هستند ولی سايت مورد علاقه من برای RFCها، سايت زير است: [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] که بهجای xxxxxxx نام rfc موردنظر را مینویسيم. مثلا برای دسترسی به rfc791 بايد آدرس را به صورت زير تايپ کنيم: [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]