Loading…

جزیره امنیت اطلاعات و ارتباطات

ارسال کننده: UNITY
محمد نصیری ، بنیانگذار ITPRO ، کارشناس امنیت اطلاعات و ارتباطات و کشف جرائم رایانه ای ، هکر کلاه سفید ، تخصص در حوزه امنیت سیستم عامل و تست های نفوذسنجی ، لینوکس ، مجازی سازی ، سرویس های کاربردی سرور و ... سابقه همکاری در بیش از 40 سازمان دولتی ، خصوصی و نظامی در حوزه پروژه ، مشاوره و آموزش ، بیش از 10 هزار ساعت سابقه آموزشی در طی 12 سال فعالیت حرفه ای ...
ارسال پیام خصوصی
امتیازات این مطلب
مقاله: چگونه رمز ویندوز را کرک کنیم ؟ قسمت اول
در این مقاله به شما آموزش می دهیم که ویندوز چگونه رمزهای عبور شما را در خود ذخیره می کند و چگونه می توان این رمزها را کرک کرد. رمزهای عبور در بیشتر اوقات به عنوان تنها لایه محافظتی و در واقع اصلی ترین روش مقابله در مقابل حملات نفوذگران هستند. حتی اگر مهاجمین بصورت فیزیکی به سیستم شما دسترسی نداشته باشند می توانند با استفاده از پروتکل 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 شده وجود دارد را به شما معرفی کردیم. در ادامه این سری مقاله ، در مقاله بعدی به فرآیند چگونگی خارج کردن این Hash ها از درون فایل SAM سیستم عامل ویندوز و کرک کردن Hash های موجود در آن خواهیم پرداخت و در آنجا نیز علاوه بر روش تهاجمی به شما روش مقابله با چنین حملاتی را نیز آموزش خواهیم داد ، امیدوارم مورد توجه شما قرار گرفته باشد.

نویسنده : محمد نصیری
منبع : انجمن حرفه ای های فناوری اطلاعات ایران
هرگونه نشر و کپی برداری بدون ذکر منبع و نام نویسنده دارای اشکال اخلاقی می باشد
دیدگاه ها
  • ارسال توسط:
  • زمان ارسال: 45 ماه قبل
عالی بود مهندس. خیلی ممنونم. فقط یه سوال. با توجه به قسمتی که فرمودین: "تا زمانیکه طول رمز به 14 برسد به آن کاراکتر تهی یا Null اضافه می شود." اگه پسوردی که ما انتخاب می کنیم از 14 کاراکتر بیشتر بود اونوقت الگوریتم چه رفتاری خواهد داشت؟
سلام .. ممنون از مقاله ی خوبتون .. فایل SAM در کجا قرار داره و چطور میشه به محتویات اون دسترسی پیدا کرد؟ممنون میشم راهنمایی کنید ، موفق باشید
  • ارسال توسط:
  • زمان ارسال: 44 ماه قبل
طبیعی هست که رمز عبور در LM ها بیشتر از 14 کاراکتر نمیتونه باشه هر چند شما میتونید رمز طولانی وارد کنید اما فقط 14 تای اول شناسایی میشن ، در خصوص محل قرار گیری فایل SAM و دسترسی پیدا کردن به محتویات اون هم در مقاله بعدی توضیحات کامل رو ارائه می کنم.
  • ارسال توسط:
  • زمان ارسال: 36 ماه قبل
سلام بنا گفته شما بيشتر از 14 كاراكتر نمي تونه باشه و اگه باشه فقط 14 تاي اون رو مي شناسه . به صورت تصادفي ميشناسه يا از اول اون رمزي كه ما داده ايم ؟ يعني انتخاب 14 كاراكتريش از رمز طولاني ما از كدوم قسمته ؟
  • ارسال توسط:
  • زمان ارسال: 36 ماه قبل
بصورت تصادفی نیست ، Hash ای که به وسیله LM ایجاد میشه اگر رمز شما کمتر از 7 کاراکتر باشه همیشه یک عدد ثابت در 7 عدد آخر Hash خواهد بود که بلافاصله با نگاه کردن به این Hash میشه متوجه شد که رمزش زیر 7 کاراکتر هست ... 14 کاراکتر بصورت تصادفی بر اساس رمز ورودی مسلما متغیر هست مگر اینکه رمزهای عبور یکسان باشند.
  • ارسال توسط:
  • زمان ارسال: 29 ماه قبل
کجاست این قسمت دوم؟

  • ارسال توسط:
  • زمان ارسال: 29 ماه قبل
به مطالب مرتبط مراجعه کنید.
  • ارسال توسط:
  • زمان ارسال: 25 ماه قبل
خیلی عالی بود..ممنوون
برای ارسال نظر وارد شوید.