محمد نصیری
بنیانگذار انجمن تخصصی فناوری اطلاعات ایران ، هکر کلاه خاکستری ، کارشناس امنیت اطلاعات و ارتباطات

آموزش کرک کردن رمز (Password) ویندوز + راهکار های مقابله با آن

چگونه پسورد (Password) ویندوز را هک کنیم؟ رمز عبور ویندوز چگونه Hack می شود؟ تفاوت هک کردن یا کرک کردن و ریست کردن پسورد ویندوز در چیست؟ در این مقاله به شما آموزش می دهیم که ویندوز چگونه رمزهای عبور شما را در خود ذخیره می کند و چگونه می توان این رمزها را کرک کرد.

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران

رمزهای عبور در بیشتر اوقات به عنوان تنها لایه محافظتی و در واقع اصلی ترین روش مقابله در مقابل حملات نفوذگران هستند. حتی اگر مهاجمین بصورت فیزیکی به سیستم شما دسترسی نداشته باشند می توانند با استفاده از پروتکل Remote Desktop و یا احراز هویت شدن به وسیله سرویس ها و یا وب سرورها به سیستم شما دسترسی پیدا کنند.

ویندوز رمزهای عبور شما در قالب رشته هایی به نام Hash که نوعی الگوریتم رمزنگاری می باشد در فایلی به نام SAM یا Security Account Manager ذخیره می کند. هدف این مقاله این است که به شما آموزش دهد که شیوه ایجاد این Hash ها در ویندوز و چگونگی کرک کردن آنها را یاد بگیرید. بعد از اینکه روش کرک کردن این Hash ها را بررسی کردیم به شما چند نکته برای مقابله با این نوع نقاط ضعف ویندوزی را آموزش خواهیم داد.

ویندوز چگونه رمزهای عبور را ذخیره می کند ؟

سیستم عامل های ویندوز از دو روش متفاوت برای Hash کردن رمزهای عبور کاربران استفاده می کنند که هر یک از آنها موارد امنیتی خاص خود را دارد . این دو نوع روش عبارتند از LAN Manager یا LM ها و NT LAN Manager Version 2 یا NTLM V2 . Hash نتیجه یک تابع رمزنگاری ریاضی است که در آن هر ورودی در نهایت یک رشته با طول مشخص به عنوان خروجی خواهد داشت.

این رشته برای هر چیزی که در آن وارد بشود نتیجه ای منحصر به فرد خواهد داشت ، به عبارتی اگر Hash یک فایل با Hash فایل دیگری یکسان باشد این دو فایل یکی هستند . به این نوع توابع در اصطلاح توابع درهم سازی یا Hashing Functions گفته می شود . در نهایت سیستم عامل ویندوز تمامی این Hash ها را در قالب یک فایل به نام SAM در ویندوز نگهداری می کند.

معرفی رمزهای عبور Hash شده با استفاده از LM

Hash های Lan Manager یا LM ها از اولین نوع الگوریتم های Hashing ای بودند که در ساختار سیستم عامل های ویندوز مورد استفاده قرار گرفتند و تنها نسخه ای بودند که تا ابداع الگوریتم جدیدتر NTLM v2 که در ویندوز 2000 ، XP ، Vista و Seven استفاده می شود ، همچنان مورد استفاده هستند.

البته بصورت پیشفرض این سیستم عامل های جدید از الگوریتم NTLM V2 استفاده می کنند اما طبق معمول شرکت مایکروسافت برای ایجاد Backward Compatibility برای محصولات خود همچنان از LM Hash ها پشتیبانی می کند. توجه کنید که با اینکه همچنان مایکروسافت از این نوع الگوریتم Hashing پشتیبانی می کند اما در ویندوز ویستا و سون این نوع Hash بصورت پیشفرض غیرفعال می باشد .LM Hash هایی که از رمزهای ویندوز ایجاد می شود در یک فرآیند شش مرحله ای محاسبه می شوند که به شرح زیر می باشند :

  1. ابتدا تمامی رمزعبور کاربر تبدیل به حروف بزرگ می شود.
  2. تا زمانیکه طول رمز به 14 برسد به آن کاراکتر تهی یا Null اضافه می شود.
  3. رمزعبور جدید به دو قسمت 7 کاراکتری تقسیم می شود.
  4. این مقادیر برای ایجاد دو عدد کلیک رمز با استفاده از الگوریتم DES استفاده می شوند ، هر کدام از این کلید ها با اضافه شدن یک بیت Parity هر کدام یک کلید 64 بیتی را ایجاد می کنند.
  5. هر کلید DES برای رمزنگاری یک رشته ASCII از قبل تعیین شده ( KGS!@#$%) استفاده می شود که در نهایت دو مقدار cipher text 8 بایتی را در نتیجه ارائه خواهد داد.
  6. این دو مقدار 8 بایتی با یکدیگر یک مقدار 16 بایتی را تشکیل می دهند که به این مقدار همان LM Hash گفته می شود.

خوب اگر بخواهیم همین فرآیند را با رمزعبوری به شکل PassWord123 انجام دهیم مراحل تبدیل به شکل زیر خواهد بود :

1.	PASSWORD123
2.	PASSWORD123000
3.	PASSWOR and D123000
4.	PASSWOR1 and D1230001
5.	E52CAC67419A9A22 and 664345140A852F61
6.	E52CAC67419A9A22664345140A852F61


کرک کردن رمز ویندوز

شکل یک : مراحل تبدیل یک رمز عبور به LM Hash

رمز های عبورLM Hash ها معایبی نیز دارند. اولین نقطه ضعفی که در این رمزنگاری وجود دارد استفاده از الگوریتم DES یا Data Encryption Standard می باشد ، این الگوریتم در سال 1970 توسط شرکت IBM معرفی شد و توسط NIST مورد دستکاری قرار گرفت و در نهایت در سال 1981 به عنوان یک استاندارد رمزنگاری توسط ANSI معرفی شد .

الگوریتم DES تا مدت ها به عنوان یک الگوریتم امن مورد استفاده قرار می گرفت تا اینکه در دهه نود به دلیل ضعفی که در تعداد بیت های آن که 56 بیت است دیگر به عنوان یک الگوریتم امن شناخته نمی شد .در سال 1998 مرکز EFF یا Electronic Frontier Foundation موفق شد در طی مدت 23 ساعت کلید رمز الگوریتم DES را کرک کند .

به همین دلیل پس از این DES به عنوان یک الگوریتم ناامن معرفی شد و به وسیله الگوریتم های قویتری به نام Triple-DES و AES جایگزین شد . این فرآیند در سال 1998 و با توجه به میزان قدرت پردازشی کامپیوترهای آن زمان انجام شده است ، در حاضر شکستن کلید DES اصلا فرآیند زمانگیری نیست.

شاید بزرگتری نقطه ضعفی که در LM Hash ها وجود دارد ایجاد کلید های DES باشد . در این فرآیند رمز عبوری که کاربر وارد کرده است به صورت حروف بزرگ در می آید ، به 14 کاراکتر افزایش می یا بد ( این حداکثر طول LM Hash می باشد ) و به دو قسمت 7 کاراکتری تقسیم می شود.

یک محاسبه ریاضی را در نظر بگیرید ، اگر رمز شما 14 کاراکتر ASCII باشد 95 به توان 14 احتمال وجود دارد که رمز را بتوانید بیابید ، با توجه به نصف شدن عدد در LM Hash این عدد به 95 به توان 7 تنزل پیدا می کند و اگر فقط از رمزهای عبور با حروف بزرگ استفاده کنیم این احتمال به 69 به توان 7 کاهش پیدا می کند. این احتمالات براحتی یک مهاجم را قادر می سازد که با استفاده از حملات از نوع Brute Force بتواند رمزهای موجود در LM Hash را بیابد.

معرفی رمزهای عبور Hash شده با استفاده از NTLM V2

NTLAN Manager یا NTLM پروتکل احراز هویت مایکروسافتی است که به عنوان جانشین برای LM معرفی شد . این پروتکل به سرعت توسط سیستم عامل ویندوز مورد پذیرش قرار گرفت و بصورت گسترده ای با معرفی سیستم عامل ویندوز NT4 پیاده سازی و مورد استفاده قرار گرفت. فرآیند ایجاد NTLM V2 Hash که بصورت اختصار به آن NT Hash هم می گویند بر خلاف LM بسیار ساده تر است .

در این فرآیند از الگوریتم درهم سازی یا Hashing ای به نام MD4 استفاده شده است و براحتی محاسبات را با دردسر کمتر از DES انجام می دهد.الگوریتم MD4 سه بار برای تولید NT Hash استفاده می شود. در محیط عملیاتی رمز عبوری مثل PassWord123 با استفاده از الگوریتم MD4 به شکل یک رشته Hash بصورت 94354877D5B87105D7FEC0F3BF500B33 نمایش داده می شود.

کرک کردن رمز عبور ویندوز

شکل ب : رمز عبوری که تبدیل به Hash ای از نوع MD4شده است

الگوریتم MD4 از الگوریتم رمزنگاری DES بسیار بسیار قویتر عمل می کند و می تواند طول رمز عبور کاربر را بسیار طولانی کند. این الگوریتم امکان استفاده از حروف بزرگ و کوچک را بصورت همرمان می دهد و و دیگر خبری از تقسیم و قطعه قطعه کردن رمز در این الگوریتم نیست. شاید بزرگترین نقظه ضعفی که در ساختار NTLM V2 وجود دارد عدم استفاده از ساختاری به نام Salting در بدنه این پروتکل است .

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

اما با تمامی این شرایط هنوز هم مهاجمین می توانند با استفاد از تکنیکی به نام Rainbow Table به رمزهای عبور کاربران پی ببرند ، Rainbow Table ها هیچ ارتباطی به معنای لغوی آن که جدول زنگین کمان است ندارند ، در واقع اینها مجموعه ای از رمزهای عبور به همراه Hash هستند که در یکجا ذخیره شده اند و می توان بصورت مقایسه ای از آنها برای پیدا کردن رمز عبور استفاده کرد.

در این حالت شما نیازی نیست که Hash ای که از رمزعبور کاربر دارید را مرتبا آزمایش کنید بلکه آنرا با یک لیست آماده مقایسه می کنید و در واقع آن را در یک پایگاه داده جستجو می کنید.زمانیکه Hash شما با یکی از Hash های موجود در Rainbow Table برابر بود ، قطعا رمز شما نیز همانی است که اعلام می شود.

Rainbow Table ها می توانند بسیار بسیار حجیم باشند و بعضا در قالب هارد دیسک های آماده به فروش می رسند ، شما می توانید آخرین مجموعه از هارد دیسک هایی که دارای Rainbow Table های محاسبه شده از رمزهای مختلف در دنیا هستند را خریداری کنید.

نتیجه گیری

در قسمت اول از این سری مقاله ما انواع Hash های مورد استفاده در رمزهای عبور ویندوز را با هم بررسی کردیم و مکانیزم کارکرد هر یک را تشریح کردیم ، شما متوجه شدید که ویندوز در چه قالبی رمزهای شما را ذخیره سازی می کند. همچنین در خصوص نقاط ضعف هر یک از الگوریتم های معرفی شده نیز صحبت کردیم و راه هایی که برای کرک کردن هر کدام از این نوع رمزهای Hash شده وجود دارد را به شما معرفی کردیم.

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

و در نهایت یک سری نکات مهم برای جلوگیری از کرک شدن رمزهای عبور و بروز چنین نقاط ضعف امنیتی در سیستم را به شما معرفی خواهیم کرد.قطعا به این موضوع توجه کنید که وب سایت انجمن حرفه ای های فناوری اطلاعات ایران یک وب سایت هک و کرک نیست ، تمامی مواردی که در این مقاله عنوان می شود

جنبه آموزشی و از طرفی برای ارائه راهکار مقابله با چنین حملاتی است و به هیچ عنوان جنبه ایجاد تخریب در سیستم ها در این مقاله وجود ندارد ، در صورتیکه قصد آزمایش این موارد را دارید صرفا در محلی که مجوزهای لازم برای شما وجود دارد اقدام به آزمایش کنید.

بدست آوردن Hash های رمزهای عبور سیستم

قبل از اینکه اقدام به کرک کردن رمزعبور کنید بایستی Hash مربوط به رمز عبور مربوطه را از سیستم عاملی که در آن ذخیره شده است بدست بیاورید . همانطور که در مقاله قبلی نیز عنوان شد این Hash ها در فایل SAM یا Security Account Manager ویندوز ذخیره می شوند .این فایل در مسیر زیر در سیستم عامل ویندوز قرار دارد :

C:\Windows\System32\config
محل قرار گرفت فایل SAM در ویندوز

توجه کنید که در زمانیکه سیستم عامل در حال فعالیت است شما قادر به دستیابی به محتویات این فایل نیستید. همچنین همین مقادیر در کلید های رجیستری زیر نیز ذخیره شده است اما همانند فایل SAM در هنگام فعالیت سیستم عامل غیر قابل دستیابی می باشد. در ادامه روش های مختلفی که شما در سطوح دسترسی متفاوت می توانید به این فایل در سیستم دسترسی پیدا کنید را معرفی خواهیم کرد.

HKEY_LOCAL_MACHINE\SAM
محل قرارگیری فایل رجیستری SAM ویندوز

دسترسی فیزیکی به سیستم

اگر شما به سیستم مورد نظر دسترسی فیزیکی دارید ، بهترین گزینه استفاده از CD یا DVD های Bootable ای است که سیستم را با یک سیستم عامل دیگر Boot کرده و به شما اجازه دسترسی به پارتیشن NTFS مورد نظر که فایل SAM در آن قرار دارد را می دهد. اگر با سیستم عامل لینوکس راحت هستید .

براحتی می توانید از یک Live Linux استفاده کرده و بعد از اینکه سیستم Boot شد ، پارتیشن مورد نظر ویندوز را بر روی لینوکس Mount کرده و فایل SAM سیستم را داخل یک حافظه جانبی کپی کنید .اگر با این روش راحت هستید می توانید از نرم افزار NT Password Editor که یک لینوکس Bootable برای ریست کردن رمز عبور کاربرانی است که در ویندوز رمز خود را فراموش کرده اند استفاده کنید.

می توانید نرم افزار رایگان فوق را از این آدرس دریافت کنید. این نرم افزار ابتدا از کاربر یک ورودی دریافت می کند و از همان وروردی یک Hash جدید ایجاد می کنید ، این Hash جدید را به جای Hash رمز عبور قبلی سیستم در فایل SAM وارد می کند ، با اینکار رمز جدید بر اساس Hash جدیدی که کاربر وارد کرده است محاسبه می شود . استفاده ما از این ابزار در این است که این نرم افزار براحتی محتویات SAM سیستم را خوانده و به ما نمایش می دهد.

برای اینکه بتوانید اینکار را بکنید ، بعد از اینکه فایل مورد نظر را از وب سایت ذکر شده دانلود کردید ، آن را از حالت فشرده خارج کرده و فایل ISO مورد نظر را بر روی CD رایت کنید . سیستم را با این CD بوت کنید و system partition خود و محل قرار گیری فایل SAM و رجیستری را برایش مشخص کنید 

در این قسمت گزینه password reset option [1] را انتخاب کنید ، با انتخاب عدد 9 به Registry Editor وارد شوید و به دایرکتوری که در آن فایل SAM ویندوز وجود دارد وارد شوید . با استفاده از دستور cat محتویات فایل مورد نظر خود را باز کنید. خروجی این فایل بصورت Hexadecimal می باشد که براحتی با یک تبدیل ساده می توان آن را به حالت Decimal تبدیل کرد. توجه کنید که این روش در صورتی می باشد که شما آشنایی حداقلی با سیستم عامل لینوکس را داشته باشید.

فایل HexaDecimal  حاوی Hash رمز

شکل یک :محتویات Hexadecimal فایل SAM

همانطور که قبلا هم اشاره کردم ابزار Offline NT Password Editor برای برداشتن و ریست کردن رمز عبور کاربران سیستم عامل ویندوز بکار می رود و کار کردن با این ابزار برای بدست آوردن Hash فایل ها چندان هم آسان نیست ، فقط قبل از استفاده از Offline NT Password Editor مطمئن شوید که سیستم عامل ویندوز شما از رمزنگاری EFS استفاده نکند ، استفاده از این ابزار کلید های EFS شما را از بین خواهد برد و مشکلاتی برای فایل های رمزنگاری شده شما قطعا به وجود خواهد آمد. بهترین گزینه برای استفاده از این ابزار برداشتن رمز ویندوز است.

دسترسی کنسولی به سیستم

اگر به سیستم مورد نظر دسترسی فیزیکی ندارید اما از طریق شبکه و پروتکل Remote Desktop یا VNC به این سیستم دسترسی دارید ، می توانید با استفاده از ابزاری به نام fgdump به فایل SAM مورد نظر دسترسی پیدا کنید . شما می توانید این ابزار رایگان را از طریق این لینک دریافت کنید .بعد از اینکه ابزار fgdump را از آدرس گفته شده دانلود کردید براحتی می توانید آن را بدون تنظیم خاصی اجرا کنید و این تست را می توانید ابتدا با سیستم خود انجام دهید.


بدست آوردن Hash موجود در فایل SAM

شکل دو : ابزار fgdump از فایل SAM موجود بر روی سیستم Local یک کپی با موفقیت انجام داد.

fgDump 2.1.0 - fizzgig and the mighty group at foofus.net
Written to make j0m0kun's life just a bit easier
Copyright(C) 2008 fizzgig and foofus.net
fgdump comes with ABSOLUTELY NO WARRANTY!
This is free software, and you are welcome to redistribute it
under certain conditions; see the COPYING and README files for
more information.
No parameters specified, doing a local dump. Specify -? if you are looking for help.
--- Session ID: 2013-05-17-05-04-20 ---
Starting dump on 127.0.0.1
** Beginning local dump **
OS (127.0.0.1): Microsoft Windows Unknown Professional (Build 7600) (64-bit)
Passwords dumped successfully
-----Summary-----
Failed servers:
NONE
Successful servers:
127.0.0.1
Total failed: 0
Total successful: 1

حاصل اجرای ابزار fgdump بدون هیچ پارامتری را در تصویر بالا مشاهده کردید ، کمی به متن اعلام شده توسط نرم افزار دقت کنید . در متن اشاره شده است که fgdump comes with ABSOLUTELY NO WARRANTY بدین معنا که هیچگونه تضمینی در خصوص تخریب سیستم شما یا مشکلاتی که بر روی سیستم شما ایجاد می شود از طرف fgdump مورد پذیرش نیست و این ابزار را شما با مسئولیت خودتان بر روی سیستم اجرا می کنید.

بیشتر ابزارهایی که برای کاربردهای اینچنینی هک و کرک مورد استفاده قرار می گیرند به دلیل دسترسی به منابع غیر مجاز سیستمی و از طرفی وجود برخی ابزارهای مخرب بر روی آنها از طرف سیستم به عنوان نرم افزار مخرب شناسایی می شوند و آنتی ویروس ها نیز آنها را شناسایی می کنند ، ترجیحا برای انجام آزمایش از این ابزارها در محیط لابراتوار و مجازی استفاده کنید.

بعد از اینکه این دستور را اجرا کردید ، در همان پوشه ای که فایل اصلی ابزار fgdump وجود دارد یک فایل دارای محتویات Hash هایی که درون SAM قرار دارد ایجاد می شود ، شما براحتی می توانید این فایل را با Notepad باز کرده و Hash های موجود برای رمز کاربران را مشاهده کنید. در کنار هر کاربر که بصورت لیست شده در فایل موجود است رشته Hash مربوط به رمزش قابل مشاهده می باشد.


محتویات فایل SAM ویندوز

شکل سوم : خروجی ابزار fgdump که شامل لیست کاربران و Hash رمزهای عبور آنها می باشد

دسترسی از طریق شبکه به سیستم

در نهایت اگر شما هیچگونه دسترسی مستقیم و غیرمستقیمی به سیستم هدف ندارید و می خواهید Hash های مورد نظرتان را بیابید بایستی با استفاده از ابزارهای شنود یا Sniff اطلاعات رد و بدل شده در شبکه را Sniff کنید تا در حین انجام فرآیند احراز هویت کاربران که رمز عبور در قالب Hash منتقل می شود بتوانید Hash رمز کاربر را بدست بیاورید .

قطعا این فرآیند ممکن است زمانگیر باشد به دلیل اینکه حتما بایستی یک کاربر درخواست دسترسی به منابع یا ورود به دامین کنترلر را در شبکه داشته باشد تا فرآیند احراز هویت انجام شود و اگر این فرآیند انجام نشود هیچگونه Hash ای در شبکه منتقل نخواهد شد که شما بتوانید آن را Sniff کنید .

بنابراین قطعیتی برای جواب گرفتن از این روش وجود ندارد و ممکن است فرآیند زمانگیری داشته باشد ، به نظر من بیشتر در فرآیند های تست نفوذ سنجی این یک شانس برای مهاجم می باشد که بتواند در حین انجام عملیات احراز هویت شبکه را Sniff کند.اگر سیستم هدف شما در همان سگمنت شبکه قرار دارد که شما در آن هستید .

شما می توانید با استفاده از ابزار رایگانی به نام Cain and Abel که البته از معدود ابزارهای گرافیکی و کاربردی در زمینه هک می باشد برای Sniff کردن شبکه و بدست آوردن Hash رمز عبور کاربران استفاده کنید. شما می توانید این ابزار رایگان را از اینجا دانلود کنید . با استفاده از ابزار Cain and Abel شما می توانید فرآیندی به نام ARP Cache Poisoning را انجام دهید .

ARP Cache Poisoning به نوعی یک حمله از نوع MITM یا Man In The Middle می باشد که با استفاده از پروتکل ARP می توانید ترافیکی که بین دو سیستم رد و بدل می شود را به سمت سیستم مهاجم هدایت کند. زمانیکه قابلیت ARP Cache Poisoning بر روی Cain and Abel فعال باشد شما می توانید با استفاده از Sniffer موجود در این نرم افزار NTLM Hash های عبوری از سیستم های این بین را Sniff کنید. فرآیندی که در پس زمینه ARP Cache Poisoning انجام می شود خارج از مبحث این مقاله است و به امید خدا در مقاله ای دیگر به صورت مفصل در این خصوص صحبت خواهیم کرد.

کرک کردن رمز عبور با استفاده از Cain and Abel

خوب تا اینجا شما Hash رمز عبور مورد نظر برای کرک کردن را پیدا کرده اید ، نوبت به این می رسد که این رمز را کرک کنید. اگر تا به حال نرم افزار Cain and Abel را دانلود و نصب کرده اید که هیچ ، اما اگر دانلود نکرده اید می توانید از لینکی که در پاراگراف قبلی معرفی شد نرم افزار را دانلود کنید . نصب Cain and Abel مثل همه نرم افزارهای دیگر ویندوزی چند Next دارد که براحتی انجام می شود. فقط توجه کنید که کلیه نرم افزارهایی که کار Sniffing شبکه را انجام می دهند به کتابخانه WinPCap نیاز دارند که شما در حین نصب بایستی آن را داشته باشید یا دانلود کنید.

بعد از اینکه نصب نرم افزار تمام شد شما وارد نرم افزار شده و به تب Cracker وارد شوید . سپس بر روی هدر LM & NTLM Hashes کلیک کنید و بر روی قسمت خالی وسط راست کلیک کرده و گزینه Add to List را انتخاب کنید. Cain به شما اجازه کپی مستقیم Hash به داخل کنسول نرم افزار را نمی دهد و شما بایستی Hash را در قالب یک فایل Text به آن تحویل دهید ، اگر فایل خود را با استفاده از نرم افزار fgdump استخراج کرده اید دیگر نیازی به ایجاد فایل ندارید و تمامی قالب مورد نیاز Cain از خروجی این نرم افزار دریافت می شود.


قالب فایل برای کرک شدن توسط Cain and Abel

شکل چهارم : فالب درست Hash های ورودی به نرم افزار Cain

اگر Hash رمزعبور خود را بصورت دستی استخراج کرده اید بایستی آن را بصورت خط به خط در قالبی که برای Cain قابل فهم باشد تبدیل کنید ، چیزی که می توانید در تصویر قبلی مشاهده کنید. هر خط از این فایل بایست شامل نام کاربری یا Username و Relative Identifier یا RID و قسمتی از SID کاربر و همچنین Hash مربوط به رمزعبور کاربر باشد. قالب کلی به شکل زیر می باشد :

Username:RID:LMHash:NTLMHash:::
Administrator:500:E52CAC67419A9A22664345140A852F61:67A54E1C9058FCA16498061B96863248:::
Guest:501:NO PASSWORD*********************:NO PASSWORD*********************:::
ITPRO:1000:0182BD0BD4444BF836077A718CCDF409:259745CB123A52AA2E693AAACCA2DB52:::
LMTest:1002:CCF9155E3E7DB453AAD3B435B51404EE:3DBDE697D71690A769204BEB12283678:::
MIMO:1001:921988BA001DC8E14A3B108F3FA6CB6D:E19CCF75EE54E06B06A5907AF13CEF42:::

با استفاده از Browse فایل مورد نظر را پیدا کرده و Hash ها را به درون Cain and Abel وارد کنید ( Import کنید ) . بعد از این مرحله شما می توانید بر روی اکانتی که می خواهید رمزعبورش را کرد کنید راست کلیک کنید و گزینه Brute Force Attack را به همراه LM Hashes انتخاب کنید. در حالت Brute Force سیستم هر حالت ممکنی از رمزعبور را تست می کند

با هر ترکیب و مقداری که بتواند تا در نهایت بتواند ترکیب درستی که با Hash موجود برابری کند را پیدا کند.در صفحه ای که جلوی خود می بینید می توانید برای سیستم تعریف کنید که مثلا صرفا اعداد مشخصی را برای تست Brute Force در نظر بگیرد و حداقل و حداکثر طول رمزی که برای کاربر تست شود را نیز می توانید تعیین کنید.

توجه کنید در صورت انتخاب LM Hash ، مجموعه کاراکترها بصورت پیشفرض در Cain به گونه ای تنظیم شده اند که صرفا حروف کاراکترهای بزرگ و کوچک تا حداکثر طول 7 کاراکتر را تست کنند که این از خواصی است که برای LM Hash ها در مقاله قبلی ذکر کردیم. در مثال ما که رمز عبور را PassWord123 انتخاب کردیم .

شما مشاهده کنید که برنامه چقدر سریع به شما می گوید که رشته رمزنگاری شده در قسمت اول که 664345140A852F61 می باشد در رمز عبور به شکل D123 می باشد . یعنی در وهله اول ما قسمت دوم رمز را پیدا کردیم. در یک کامپیوتر مدرن معمولا کرک کردن رمزهایی که از اعداد و LM استفاده می کنند معمولا دو ساعت و نیم تا سه ساعت زمان نیاز دارد.

Crack کردن Hash با استفاده از Cain and Abel
شکل پنجم : Cain با موفقیت Hash رمز عبور را کرک کرد

کرک کردن رمز عبور با استفاده از John The Ripper

نرم افزار Cain and Abel برای کرک کردن Hash های LM خوب عملی می کند اما کمی کند است و برای شکستن Hash های NTLM V2 بسیار بسیار کند تر عمل می کند. اگر با کار کردن با ابزارهای Command ای راحت هستید می توانید از ابزاری به نام John The Ripper که برای کرک کردن Hash ها بکار می رود استفاده کنید.

همیشه در دوره های هک قانونمند به دانشجوهای خود می گویم که همیشه ابزارهای Command ای ضمن سریعتر بودن دارای حجم کمتری هستند و بصورت تخصصی تری کار خود را انجام می دهند.John The Ripper یکی از سریعترین و قویترین موتورهای کرک محسوب می شود. شما می توانید John The Ripper را از اینجا دانلود کنید .

بعد از اینکه فایل مورد نظر برنامه را دانلود کردید آنرا از حالت فشرده خارج کرده و می توانید فایل اجرایی نرم افزار به نام John-386.exe را از زیر پوشه run اجرا کنید. John The Ripper سویچ ها و حالت های مختلفی برای اجرای خود دارد اما در حالت پیشفرض بعد از اجرا فقط کافیست که فایل Hash ها را به آن معرفی کنید و نرم افزار را از طریق Command Prompt اجرا کنید.


Crack شدن رمز با استفاده از John The Ripper

شکل هفتم : نرم افزار John The Ripper در حال کرک کردن Hash رمز عبور

بعد از اینکه فرآیند کرک کردن کامل شد ، John The Ripper رمزهای عبور کرک شده را در یک فایل به نام john.pot ذخیره می کند.در بیشتر مواقع حالت کرک کردن پیشفرض جواب می دهد ، اما John The Ripper می تواند حالت های مختلفی برای کرک کردن Hash ها داشته باشد که مهمترین آنها به ترتیب زیر است :

  • Single Crack Mode : با توجه به نام کاربری موجود و اعمال تغییرات بر روی آن کرک را انجام می دهد.
  • Wordlist Mode : کرک را بر اساس ساختار Dictionary Attack انجام می دهد.
  • Incremental Mode : کرک را بر اساس ساختار Brute Force انجام می دهد.
  • External Mode : کرک را بر اساس ساختار حدس زدن رمز یا Password Guessing انجام می دهد.

John The Ripper در هر حالت یک ابزار بسیار قوی برای کرک کردن رمزهای عبور به حساب می آید.

کرک کردن Hash های رمز عبور با استفاده از Rainbow Tables

برخی اوقات رمز عبور کاربر ضمن اینکه دارای پیچیدگی و تعداد کاراکترهای بالایی است از ساختار NTLM V2 نیز استفاده می کند ، شکستن یا کرک کردن اینگونه رمزها بسیار زمانگیر و سخت است . در اینجاست که استفاده از Rainbow Tables پیشنهاد می شود. Rainbow Table ها جداولی هستند که در آنها Hash های آماده و در مقابل آنها ترکیب لغوی که سازنده Hash می باشند با هرگونه ترکیب ممکن از رمزنگاری ها قرار گرفته اند.

قطعا به این نتیجه رسیده اید که Rainbow Table ها می توانند حجم زیادی از هارد دیسک را به خود اختصاص دهند و با به فضای زیادی نیاز دارند.سالها پیش به دلیل محدودیت هایی که در میزان حافظه ها و هارد دیسک ها وجود داشت استقبال چندانی از Rainbow Tableها نمی شد اما با پیشرفت تکنولوژی امروزه یکی از پرطرفدارترین روش ها برای Penetration Tester ها و Hacker ها استفاده از هارد دیسک های External ای است که در داخل آنها Rainbow Table وجود دارد.

هر چند پیدا کردن محلی برای تولید و دانلود کردن Rainbow Table ها کار سختی نیست اما در مقاله قبلی لینک خرید هارد اکسترنال حاوی Rainbow Table را قرار داده ایم. از آن بهتر وب سایت هایی هستند که برای خود پایگاه داده ای از Rainbow Table ها ایجاد کرده اند و شما می توانید hash خود را بصورت آنلاین در این سیستم ها قرار داده و نتیجه را مشاهده کنید.

برخی از این سایت ها در صورتیکه Hash مورد نظر شما را در پایگاه داده خود موجود نداشته باشند آن را شروع به کرک کردن می کنند. جالب اینجاست که شکستن Hash ها به نوعی یک رکورد به حساب می آید و این سرویس وب آخرین Hash هایی را که توسط سرویس مورد نظر کرک شده است را معمولا در صفحه اول به نمایش می گذارد. در ادامه لیستی از بهترین وب سایت هایی که Rainbow Table های آنلاین در اختیار شما قرار می دهند را مشاهده می کنید :

  1. www.crackstation.net
  2. www.freerainbowtables.com
  3. www.onlinehashcrack.com

در تصویر زیر Hash مربوط به کاربر MIMO در وب سایت مورد نظر وارد شده است ، بلافاصله بعد از ثبت رمزعبور متناسب با این Hash نمایش داده می شود که در این مثال رمزعبور کاربر MIMO به شکل P@ssw0rd می باشد.

کرک کردن رمز با استفاده از Rainbow Tables

برای ثبت Hash بدست آمده توسط شما در اینگونه سایت ها کافیست شما بر روی گزینه Add Hashes کلیک کرده و نوع الگوریتم رمزنگاری خود را نیز مشخص کنید و آنرا Submit کنید. در صورتیکه Hash مورد نظر قبلا توسط این سرویس کرک شده باشد بلافاصله به شما رمز مورد نظر نمایش داده می شود و در غیر اینصورت این Hash در لیست انتظار یا صف انتظار برای کرک کردن قرار می گیرد.

شما می توانید وضعیت این صف انتظار را با رفتن به لینک Search و جستجوی Hash مورد نظرتان بررسی کنید و موقعیت Hash خود در صف انتظار را مشاهده کنید. رمزهای عبوری که دارای پیچیدگی زیادی هستند با این روش کمی بیشتر زمان می خواهند اما هر چه باشد سرعت این روش بیشتر از روشی است که شما به تنهایی و با استفاده از سخت افزار های خانگی شروع به کرک کردن Hash بکنید.

مقابله در برابر کرک شدن رمزهای عبور

معمولا تصور مردم از بحث رمزنگاری این است که فرآیند رمزنگاری باید به گونه ای باشد که هیچکس و به هیچ عنوان نتواند متن رمزنگاری شده را رمزگشایی کند ، این برداشت تا حدودی نادرست است.این دیدگاه ناشی از آن است که مردم باور دارند که کامپیوترها برای انجام عملیات رمزنگاری اعداد تصادفی تولید می کنند .

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

استفاده از رمزهای عبور پیچیده و تعویض رمزهای عبور بصورت مستمر

بهترین راهکار برای جلوگیری از کرک شدن رمزعبور این است که تا می توانید رمزعبورهای خود را پیچیده طراحی کنید. اگر رمز عبور شما ترکیبی از حروف بزرگ و کوچک ، اعداد و علامات و طول زیادی باشد برای یک Cracker زمان بسیاری نیاز است تا بتواند رمز عبور شما را کرک کند. دومین نکته در این است که در وهله های زمانی معین رمزعبور خود را تغییر دهید .

فرض کنید که رمزی پیچیده دارید که 1 ماه طول می کشد تا کسی بتواند آن را کرک کند ، اما راس زمان 1 ماه شما رمز عبور را عوض می کنید و همین موضوع باعث از بین رفتن تلاش Cracker می شود و وی می بایست مجددا تلاش خود را آغاز کند. پس رمزعبور پیچیده انتخاب کنید و مرتبا آن را در وهله های زمانی معین عوض کنید.

غیرفعال کردن LM Hash در ویندوز

تا اینجا قطعا به ضعفی که در الگوریتم رمزنگاری LM و Hash های آن وجود دارد پی برده اید. نکته مهم در اینجاست که دیگر نیازی نیست شما از ساختار LM Hash در شبکه خود استفاده کنید. سیستم عامل های جدید این قابلیت را به ما می دهند که بتوانید با استفاده از انجام چند تغییر کوچک در ساختار Registry ویندوز کلیه فعالیت های LM Hash ها بر روی سیستم را غیر فعال کنیم و سیستم را مجبور به استفاده از NTLM V2 کنیم ، برای غیرفعال کردن LM Hash به مسیر رجیستری زیر بروید:

HKLM\System\CurrentControlSet\Control\LSA

در اینجا یک کلید DWORD با نام NoLMHash ایجاد کنید و مقدار آنرا 1 قرار دهید ، تا این مرحله LM Hash ها غیر فعال شده اند.گام بعدی غیرفعال کردن LM Authentication یا احراز هویت LM در شبکه است برای انجام اینکار مجددا به مسیر رجیستری قبلی وارد شوید . در اینجا به دنبال کلیدی به نام LMCompatibilityLevel بگردید و مقدار آن را عدد 3 قرار دهید ، در اینجا عدد 3 بدین معناست که سیستم فقط از قابلیت احراز هویت NTLMV2 استفاده کند.

راهکار جایگزین این است که عدد را به 5 تغییر دهید ، این باعث می شود که تمامی درخواست هایی که صرفا با ساختار NTLMV2 ایجاد می شوند توسط سرور پردازش شوند و این راهکار برای سرورها بسیار مفید است. تنها جایی که ممکن است شما در استفاده از این ساختار دچار مشکل شوید زمانی است که در شبکه خود از سیستم عامل ویندوز NT و یا قدیمی تر از آن استفاده می کنید. البته اگر هنوز از این سیستم عامل ها در شبکه خود دارید ، صادقانه بگویم ، سعی کنید از شرشان راحت شوید .

استفاده از SYSKEY

SYSKEY یکی از امکانات ویندوز است که به شما این قابلیت را می دهد که بتوانید فایل SAM موجود در سیستم خود را یک کلید 128 بیتی علاوه بر رمزنگاری که در خود SAM وجود دارد ، رمزنگاری کنید و درجه امنیتی آن را افزایش دهید. ساختار SYSKEY به گونه ای است که یک کلید رمز از کاربر سیستم دریافت کرده و با همان کلید SAM را رمزنگاری می کند.

توجه کنید که زمانیکه SYSKEY فعال شد دیگر غیرفعال نخواهد شد.SYSKEY فقط فایل SAM سیستم را محافظت می کند و از آن در مقابل کپی شدن محافظت می کند. SYSKEY نمی تواند در مقابل ابزارهایی که Hash رمزها را از درون حافظه سیستم خارج می کنند محافظت کند ، ابزارهایی مانند Cain and Abel و fgdump براحتی می توانند SYSKEY را دور بزنند.

نتیجه گیری

کرک کردن رمزهای عبور یک دانش ابزاری است که برای هر کسی که می خواهد رمز یک سیستم را بدست آورده و به درون آن نفوذ کند براحتی قابل یادگیری است ، به همین دلیل بسیار ضروری است که مدیران سیستم در خصوص شیوه ذخیره سازی رمزهای عبور و همچنین روش های سرقت و کرک کردن آن اطلاع داشته باشند.

شما دیگر متوجه شده اید که اگر در جایی مشاهده کردید که از LM Hash ها استفاده می شود پس قطعا رمز عبور آن بسیار ساده قابل بدست آوردن و شناسایی می باشد . شما یاد گرفتید که چگونه می توانید تاحدودی در مقابله با این نوع حملات از سیستم خود محافظت کنید ، با هم یاد گرفتیم که چگونه می توان یک Hash را رمزگشایی کرد و قطعا شما در حال حاظر دید ساده ای به سیستم خود نخواهید داشت. امیدوارم در مقاله های بعدی در خصوص کرک و هک و روش های مقابله با آنها اطلاعات بیشتری در اختیار شما دوستان قرار بدم.


محمد نصیری
محمد نصیری

بنیانگذار انجمن تخصصی فناوری اطلاعات ایران ، هکر کلاه خاکستری ، کارشناس امنیت اطلاعات و ارتباطات

محمد نصیری هستم ، هکر قانونمند و کارشناس امنیت سایبری ، سابقه همکاری با بیش از 50 سازمان دولتی ، خصوصی ، نظامی و انتظامی در قالب مشاور ، مدرس و مدیر پروژه ، مدرس دوره های تخصص شبکه ، امنیت ، هک و نفوذ ، در حال حاضر در ایران دیگه رسما فعالیتی غیر از مشاوره انجام نمیدم و مقیم کشور ترکیه هستم ، عاشق آموزش و تدریس هستم و به همین دلیل دوره های آموزشی که ضبط می کنم در دنیا بی نظیر هستند.

نظرات