یک روز ، یک جمله ...

امروز به هر کاری که قراره انجام بدی، باور داشته باش

26 اسفند

مفاهیم رمز عبور و یافتن رمز عبور در ویندوز مطلب ویژه

در این بخش می خواهیم به مباحث پیرامون مفاهیم رمزهای عبور و در نهایت شکستن رمزهای عبور سیستم عامل ویندوز بپردازیم.

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

LAN MAN HASH

در این الگوریتم، رمز عبور واضح به 2 قسمت تقسیم می شود. عملیات برهم سازی روی هر بخش انجام می پذیرد و در نهایت مقدار رشته 16 بایتی ایجاد می شود. مشخصات اصلی این الگوریتم به شرح زیر است:

  • حداکثر تعداد کارکترها برای رمز عبور 14 حرف می باشد.
  • حروف استفاده شده در رمز عبور جهت انجام فرآیند برهم سازی به حالت "حروف بزرگ" تبدیل می شوند.
  • رمز عبور در صورت کمتر بودن از 14 کاراکتر، توسط عملیات تهی سازی یا Padding به 14 کارکتر تبدیل می شود.
  • رمز عبور به دو قسمت مساوی 7 کاراکتری تقسیم می شود.
  • عملیات رمزنگاری در این الگوریتم، برگرفته از شیوه DES می باشد.
  • خروجی رشته تولیدی دارای 16 بایت طول می باشد.
  • این الگوریتم به لحاظ امنیت ضعیف بوده و منسوخ شده است.
  • در صورتیکه طول رمز عبور کمتر از 7 کاراکتر باشد، مقدار برهم ساز در بخش دوم معادل AAD3B435B51404EE خواهد بود.

NTLM HASH

این الگوریتم بهینه شده الگوریتم LAN MAN می باشد و دیگر از 2 قسمت کردن رمزهای عبور در این الگوریتم خبری نیست. خروجی این الگوریتم نیز 16 بایت است و به لحاظ امنیتی در سطح بالاتری از الگوریتم LAN MAN قرار دارد. این الگوریتم نیز توسط هکرها شکسته شده و شرکت مایکروسافت استفاده از این الگوریتم را دیگر تایید نمی کند و به جای آن از نسخه 2 این الگوریتم بهره می برد، اما این الگوریتم ها را از سیستم عامل خود حذف نکرده است. سیستم هایی که از سیستم عامل های نسخه پایین تر از Vista استفاده می نمایند، در شرایط استفاده از دامین، می توانند با روش NTLM و یا حتی LAN MAN عملیات رمزنگاری را انجام دهند. در نسخه NTLM v2 طول رشته به 128 بایت افزایش یافته و امنیت آن نیز در سطح بالاتری قرار گرفته است.

آشنایی با Kerberos :

کربرس در واقع یک پروتکل احراز هویت در شبکه است. این پروتکل در برابر استراق سمع مقاوم است. با ساختار ارائه بلیط فرآیند ایجاد دسترسی را پیاده سازی می کند. در این پروتکل یک مرکز توزیع کلید (KDC) و یک سرور تشخیص هویت (AS) وجود دارد. کاربر درخواست خود را به سرور تشخیص هویت ارسال می کند و این سرور نام کاربری کاربر را به مرکز توزیع کلید ارجاع می دهد. در آنجا یک بلیط با نام TGT برای کاربر صادر شده و به او داده می شود. این بلیط دارای محدودیت زمانی استفاده است و با رمز عبور کاربر برهم ساز شده است. هر زمان که کاربر بخواهد از منابع شبکه استفاده نماید، می بایست این بلیط را ارائه دهد و یک TGT Session دریافت کند. ساختار رمزگشایی خاصی در بازکردن TGT وجود دارد که خود KDC می تواند این عملیات را انجام دهد.

به صورت کلی این پروتکل دارای مشخصات زیر است:

  1. User Client-based Logon
  2. Client Authentication
  3. Client Service Authorization
  4. Client Service Request

در سال 2014 یک مورد نقطه آسیب پذیری در این پروتکل به دست آمد که شرکت مایکروسافت با بسته امنیتی به کد MS14-068 این نقطه آسیب پذیری را ترمیم کرد. توسط این نقطه، هکرها می توانستند سطح دسترسی خود را در سطح دامین بالا ببرند.

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

شیوه های یافتن یک مقدار برهم ساز شده:

  • حدس زدن
  • شنود در شبکه توسط ابزارهایی مانند WireShark
  • حملات دیکشنری
  • حمله جستجوی فراگیر
  • حملات ترکیبی

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

ابزارهای به دست آوردن متن واضح از یک متن برهم ساز شده:

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

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

در سیستم عامل ویندوز هر کاربر دارای یک شناسه منحصر به فرد می باشد که این شناسه معرف مشخصات آن کاربر است. در سیستم عامل ویندوز از طریق CMD می توانید با دستور Whoami /all لیست کامل نام های کاربری موجود را مشاهده نمایید.
همانطور که گفته شد هر کاربر دارای یک شناسه کاربری منحصر به فرد و یا به اصطلاح یک SSID می باشد. این شناسه ترکیبی از اعداد مختلف است که نمونه آن را در زیر مشاهده می نمایید:

S-1-5-21-1613216466-3655150847-3973633849-1016

هر بخش از این شناسه معرف یک خصوصیت از آن کاربر می باشد که به شرح هر بخش می پردازیم:

S: معرف شناسه امنیتی

1: شماره نسخه شناسه امنیتی

5: معرف نوع شناسه

21-1613216466-3655150847-3973633849: شناسه تحت دامین است یا به صورت محلی

1016: معرف گروهی است که آن کاربر عضو آن است. اعداد بالای 1000 نشان دهنده کاربرانی است که به صورت پیش فرض ساخته نشده اند.

ابزاری به نام User2SID و SID2User وجود دارند که می توانند از یک SSID به نام کاربری و از یک نام کاربری به SSID آن کاربر برسند. در استفاده از این ابزار باید دقت داشته باشید که علامت "-" را باید با یک فضای خالی جایگزین نمایید.

نکته : در صورتی که می خواهید لیستی از کاربران سیستم را که عضو گروه مدیران سیستم می باشند پیدا کنید، در بخش انتهایی شناسه از عدد 500 که معرف گروه مدیران است استفاده نمایید.

حال به منظور دستیابی به مقدارهای برهم ساز شده در ویندوز می توانید روش های زیر را به کار ببرید:

  • استفاده از Live CD های مختلف مانند PwDump, BKHive, SAMDump
  • نفوذ به صورت ریموت و Exploit کردن سیستم مانند KerbCrack

آشنایی با PwDump7.exe

این ابزار لیست کاملی از مقادیر برهم ساز سیستم را در اختیار شما قرار می دهد. برای این کار کافیست تا در CMD دستور زیر را تایپ نمایید:

PwDump7.exe > “Filename.txt”

این ابزار علاوه بر مقادیر برهم ساز شده، نام کاربری نیز مشخص می شود.

آشنایی با ابزار Cain

این ابزار دارای امکانات بسیار جالبی است. توسط این برنامه می توانید اقدام به حملات جستجوی فراگیر و دیکشنری نمایید. جهت استفاده از این ابزار می بایست ابتدا یک لیست از مقادیر برهم ساز شده را تهیه کرده باشید (مثلا با ابزار PwDump). بعد از اضافه کردن این لیست به این برنامه می توانید روی تک تک نام های کاربری راست کلیک کرده و نوع حمله خود را مشخص نمایید.

آشنایی با BKHive

این ابزار به شما این امکان را می دهد تا محتویات فایل SAM را مشاهده نمایید. یک ابزار تحت لینوکس می باشد، لذا می بایست سیستم مورد نظر خود را با یک Live CD محتوی سیستم عامل لینوکس با توزیع KALI بوت نمایید تا بتوانید به این فایل دسترسی پیدا کنید. پس از Mount کردن دیسکی که سیستم عامل ویندوز روی آن نصب شده است می توانید دستور زیر را اجرا نمایید:

bkhive SYSTEM /root/”Filename.txt”

سپس باید خروجی این ابزار که Filename.txt نام دارد را قابل خواندن کنید. برای این کار دستور زیر را اجرا نمایید:

Samdump2 SAM /root/”Filename.txt” > /root/”NewFile.txt”

فایل جدید با نام “NewFile.txt” یک فایل کاملا خوانا و مشخص است.

آشنایی با ابزار John

در سیستم عامل لینوکس با توزیع KALI یک ابزار به نام John وجود دارد که عملیات شکستن رمز عبور را با استفاده از حمله جستجوی فراگیر انجام می دهد. جهت استفاده از این ابزار دستور زیر را اجرا نمایید:

John “Filename.txt” –format=nt2 –users=”User Name”

آشنایی با ابزار ophcrack

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

آشنایی با ابزار KerbSniff و KerbCrack در ویندوز

این ابزارها جهت شکستن ساختار کربرس می باشند. به منظور انجام عملیات شکستن ساختار Kerberos می بایست ابتدا اقدام به شنود اطلاعات این ساختار کنید. ابزار KerbSniff براین این منظور تولید شده است. کافی است درون CMD دستور زیر را تایپ نمایید:

KerbSniff “Filename.txt”

پس از شنود، محتویات شنود شده درون فایل Filename.txt قرار داده می شوند، حال می توانید با ابزار KerbCrack و با دستور زیر اقدام به شکستن مقادیر برهم ساز شده به دست آمده نمایید:

KerbCrack “Filename.txt” –d unabridged-dictionary

نکته : لازم است بدانید که جهت شنود بسته های مورد استفاده در پروتکل Kerberos می بایست تحت شبکه دامین باشید.

رضا اردانه

مدیریت وب سایت آموزش دیجیتال

نظر دادن

خبرنامه

برای دریافت جدیدترین خبرهای سایت در خبرنامه عضو شوید