تست نفوذ با متاسپلویت و ابزار Mimikatz
در این مقاله خواهیم آموخت که پس از کسب دسترسی به یک ماشین ویندوزی که بخشی از یک Domain Controller یا کنترلکننده دامنه است، چگونه میتوانیم با استفاده از ماژول پیشساختهی Mimikatz در متاسپلویت – که با نام kiwi نیز شناخته میشود – حملات و کارهای مختلفی روی آن انجام دهیم. این مقاله در واقع راهنمایی جامع و کامل برای استفاده از Mimikatz در متاسپلویت است.
مقدمه
پیش از شروع کار با ماژول Mimikatz، ابتدا باید به یک ماشین ویندوزی دسترسی بگیریم که بخشی از شبکهای باشد که تحت نظر یک کنترلر دامنه است. انتخاب نوع حمله برای کسب دسترسی با خود شماست. پس از کسب دسترسی اولیه با استفاده از متاسپلویت، یک شل meterpreter در اختیار ما قرار میگیرد. به صورت پیشفرض دستورات زیادی در meterpreter قرار گرفتهاند، ولی اگر دستور یا مجموعه دستورات خاصی در آن موجود نبود، میتوان این دستورات را در قالب یک ماژول در مترپرتر لود کرد. Mimikatz نیز یکی از همین ماژولهاست که باید آن را در meterpreter shell لود کنیم. بعد از لودکردن ماژول، میتوانید دستور help را وارد کنید تا لیستی از گزینههایی که در اختیار دارید و حملاتی را که میتوانید از طریق شل مترپرتر روی ماشین هدف انجام دهید، مشاهده کنید.
SAM
ماژول lsa_dump_sam ماژولی است که SysKey را دریافت میکند و ورودیهای SAM را (از رجیستری یا hive) رمزگشایی میکند. این ماژول به دیتابیس محلی SAM (مدیر امنیت حساب) متصل میشود و اطلاعات ورود مربوط به حسابهای لوکال را دامپ میکند. همانطور که احتمالا میدانید، LSA یک از پروسسهای سیستمی است که وظیفهی احراز هویت و لاگین کاربران روی سیستم را بر عهده دارد. وقتی اطلاعات ورود به دامنه توسط سیستمعامل استفاده میشوند، LSA احراز هویت را انجام میدهد. LSA با دسترسی به SAM روی هر کامپیوتر، اطلاعات کاربر را اعتبارسنجی میکند. بنابراین اگر کدی داخل پروسس LSA اجرا شود، این کد میتواند به اطلاعات ورود کاربران دسترسی پیدا کند. LSA میتواند متنهای خامی را که بهصورت معکوسپذیر رمزنگاری شدهاند (رمزگشایی آنها با کلید رمزنگاری ممکن است)، تیکتهای Kerberos (TGT و Service Ticket)، هش NT و هش LM (یا Lan Manager) را ذخیره کند. مثلا در تصویر زیر هش NTLM از کاربر raj استخراج شده است:
LSA Secrets
Secretهای LSA در ابتدا برای ذخیرهکردن رکوردهای کششدهی دامنه طراحی شده بودند، اما پس از مدتی مایکروسافت کاربرد آنها را گسترش داد تا بتوانند پسوردها را هم ذخیره کنند. در حال حاضر Secretهای LSA میتوانند پسوردهای اینترنت اکسپلورر، پسوردهای SQL، پسوردهای RAS، پسوردهای سیسکو و بسیاری پسوردهای دیگر را ذخیره کنند. در اسکرینشات زیر میتوانید بخشی از این secretها را ببینید. البته به این نکته توجه داشته باشید که این اسکرینشات در یک آزمایشگاه خانگی گرفته شده و متعلق به یک شبکهی بزرگ نیست، به همین خاطر اطلاعات خیلی کمی در آن قرار دارد. دامینکنترلرهای واقعی در عمل دادههای بسیار بیشتری در خود دارند.
تغییر پسورد یک کاربر
تغییردادن پسورد یک کاربر، هم میتواند خطرناک باشد و هم کار سخت و گاهی اوقات آزاردهندهای است؛ ولی ماژول password_change میتواند به شما کمک کند به راحتی این کار را انجام دهید. در این ماژول گزینهای وجود دارد که با استفاده از آن میتوانید با دانستن پسورد قبلی، پسورد را تغییر دهید. این ماژول یک هش NTLM جدید برای کاربر تولید کرده و آن را ذخیره میکند. گزینهی دیگر برای زمانی است که هش NTLM یک کاربر را مثلا با استفاده از lsadump استخراج کردهاید؛ در این مواقع نیز میتوانید با این ماژول پسورد آن کاربر را عوض کنید.
حمله DC Sync
حمله DC Sync به مهاجم اجازه میدهد که رفتار کنترلکننده دامنه را تقلید کند؛ به عبارت سادهتر، در این حمله سیستمی که در اختیار مهاجم است خود را یک کنترلر دامین جا میزند و از طریق GetNCChanges، اطلاعات ورود کاربران را از دامینکنترلرهای دیگر درخواست میکند. تنها مانعی که برای این حمله وجود دارد، این است که باید به یک کامپیوتر دسترسی داشته باشید و کاربر آن هم باید یک حساب Privileged داشته باشد (ادمین، دامین ادمین یا Enterprise Admin).
Golden Tickets
حمله Golden Tickets، حملهای است که تیکتهای TGT جعلی برای Kerberos تولید میکند؛ این تیکتها برای احراز هویت کاربران با کمک Kerberos استفاده میشوند. سرویسهای تولید تیکت یا همان TGS، برای اعتبارسنجی اصالت تیکتها، به TGT وابسته هستند. این یعنی مهاجم میتواند از تیکت جعلی ساختهشده، به طور مستقیم برای احراز هویت خود استفاده کند. این تیکتها میتوانند تا ده سال طول عمر داشته باشند؛ به همین علت است که به این حمله بلیت طلایی یا Golden Ticket میگویند.
Purging Tickets
وقتی دارید با تیکتها و توکنها کار میکنید، پس از مدتی تعداد تیکتها آنقدر زیاد میشود که نمیتوان با آنها کار کرد. این اتفاق دیر یا زود میافتد، و در این مواقع ماژول purge به کمک شما میآید. این دستور تمام تیکتهای موجود در سشن فعلی را purge میکند (به طور کامل پاک میکند).
استخراج اطلاعات لاگین از پکیجهای امنیتی
MSV
مایکروسافت برای لاگآن کردن روی ماشینهای لوکال که نیاز به احراز هویت ویژه و شخصیسازیشده ندارند، پکیج احراز هویت MSV1_0 را ارائه کرده است. سرویس LSA برای پردازش دادههای لاگآن که توسط ماژول GINA برای پروسس Winlogon جمعآوری میشوند، از پکیج احراز هویت MSV1_0 استفاده میکند. پکیج MSV1_0 دیتابیس SAM را بررسی میکند تا بتواند تعیین کند دادههای لاگآن به یک Principal امنیتی معتبر تعلق دارند یا خیر، و سپس نتیجه – یعنی قبول شدن یا ردشدن لاگآن- را به LSA برمیگرداند. پکیج MSV1_0 از لاگآن روی دامین نیز پشتیبانی میکند. این پکیج لاگآنهای انجامشده روی دامنه را با استفاده از روش احراز هویت pass-through پردازش میکند. همانطور که در تصویر زیر نشان داده شده، میتوانیم با استفاده از دستور creds_msv روی مترپرتر، هش را از این پکیج استخراج کنیم.
Kerberos
به طور مشابه، اگر بخواهیم اطلاعات ورود را از سرویس Kerberos استخراج کنیم، میتوانیم از ماژول creds_kerberos برای حمله به این سرویس استفاده کنیم. البته با این تفاوت که این ماژول میتواند پسوردها را مستقیما و به صورت متن خام استخراج کند.
SSP
SSP مخفف Security Support Provider، و یک فایل DLL است که رابط SSP، یا همان SSPI را پیادهسازی میکند و یک یا چند پکیج امنیتی را در اختیار اپلیکیشنها قرار میدهد. هر پکیج امنیتی نگاشتها یا mappingهایی برای کارکردهای SSPI فراهم میکند؛ از روی این نگاشتها مشخص میشود کارکردی که اپلیکیشن روی SSPI صدا زده است، کدام کارکرد در مدل امنیتی اصلی است؛ به عبارت سادهتر، SSPI مثل یک مترجم است که وقتی بین اپلیکیشن و پکیج امنیتی قرار بگیرد، امکان تعامل آنها را فراهم میکند. پکیجهای امنیتی از پروتکلهای امنیتی مانند احراز هویت Kerberos و LAN Manager مایکروسافت پشتیبانی میکنند و به خاطر ارتباط SSP با Kerberos، همانطور که در تصویر زیر نشان داده شده، میتوان اطلاعات ورود را به صورت متن خام از آن استخراج کرد.
WDigest
WDigest.dll اولین بار در ویندوز XP استفاده شد. پروتکل احراز هویت Digest به گونهای طراحی شده که از مبادله اطلاعات با پروتکلهای HTTP و SASL پشتیبانی کند. اشخاصی که قصد احراز هویت با استفاده از این پروتکل را دارند، باید یک کلید محرمانه ارائه کنند. این فرایند درواقع نسخهی بهبودیافتهی نسخههای قدیمیتر احراز هویت از طریق HTTP است که در آنها پسورد ارائهشده توسط کاربران هنگام ارسال به سرور رمزگذاری نمیشود، و همین مساله باعث میشود یک مهاجم بتواند با استفاده از ماژول creds_wdigest آنها را کپچر کند.
استخراج تمام اطلاعات از تمام پکیجها
اگر میخواهید تمام هشها و اطلاعات ورود ممکن را از تمام پکیجهای امنیتی روی ماشین هدف استخراج کنید، در این صورت میتوانید از دستور creds_all روی مترپرتر استفاده کنید. این دستور تمام اطلاعات هویتی را از تمام پکیجهایی که در بالا از آنها نام بردیم، نشان میدهد.
دستورات Mimikatz
ماژولهایی در Mimikatz وجود دارند که امکان دسترسی مستقیم به آنها در قالب دستورات داخل kiwi وجود ندارد. اینجاست که قابلیت Mimikatz در اجرای دستورات به کمک ما میآید. این ماژول به عنوان یک شل معمولی عمل میکند و میتواند دستورات Mimikatz را روی کامپیوتر هدف اجرا کرده و تقریبا تمامی حملات ممکن در این سناریو (یعنی پس از دسترسی به یک کامپیوتر در یک شبکه) را انجام دهد.
استخراج اطلاعات لاگین WiFi
تا اینجا از حملاتی صحبت کردیم که با ساخت تیکتهای جعلی یا کپیکردن تیکتهای معتبر، امکان اجرای دستورات مختلف به عنوان کنترلر دامنه را به ما میدهند؛ حال ممکن است فکر کنید امکان به دست آوردن اطلاعات ورود وایفای در این حملات وجود ندارد، ولی این طور نیست. افراد معمولا زیاد در انتخاب پسورد وایفای وسواس و احتیاط به خرج نمیدهند و پسورد وایفای معمولا اولین رمزی است که به ذهن کاربر میرسد. به همین خاطر میتوان حدس زد یک کاربر خاص، چگونه پسوردهای مختلف انتخاب میکند. مثلا احتمال زیادی وجود دارد که پسوردی که کاربر برای وایفای انتخاب کرده با پسورد حسابش یکی باشد. اگر این طور بود، یک دسترسی بیدردسر به وایفای هم به دست میآورید که بدک نیست!
دیدگاهتان را بنویسید
برای نوشتن دیدگاه باید وارد بشوید.