در این مقاله خواهیم آموخت که پس از کسب دسترسی به یک ماشین ویندوزی که بخشی از یک Domain Controller یا کنترلکننده دامنه است، چگونه میتوانیم با استفاده از ماژول پیشساختهی Mimikatz در متاسپلویت – که با نام kiwi نیز شناخته میشود – حملات و کارهای مختلفی روی آن انجام دهیم. این مقاله در واقع راهنمایی جامع و کامل برای استفاده از Mimikatz در متاسپلویت است.
مقدمه
پیش از شروع کار با ماژول Mimikatz، ابتدا باید به یک ماشین ویندوزی دسترسی بگیریم که بخشی از شبکهای باشد که تحت نظر یک کنترلر دامنه است. انتخاب نوع حمله برای کسب دسترسی با خود شماست. پس از کسب دسترسی اولیه با استفاده از متاسپلویت، یک شل meterpreter در اختیار ما قرار میگیرد. به صورت پیشفرض دستورات زیادی در meterpreter قرار گرفتهاند، ولی اگر دستور یا مجموعه دستورات خاصی در آن موجود نبود، میتوان این دستورات را در قالب یک ماژول در مترپرتر لود کرد. Mimikatz نیز یکی از همین ماژولهاست که باید آن را در meterpreter shell لود کنیم. بعد از لودکردن ماژول، میتوانید دستور help را وارد کنید تا لیستی از گزینههایی که در اختیار دارید و حملاتی را که میتوانید از طریق شل مترپرتر روی ماشین هدف انجام دهید، مشاهده کنید.load kiwi
help kiwi
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_dump_sam
LSA Secrets
Secretهای LSA در ابتدا برای ذخیرهکردن رکوردهای کششدهی دامنه طراحی شده بودند، اما پس از مدتی مایکروسافت کاربرد آنها را گسترش داد تا بتوانند پسوردها را هم ذخیره کنند. در حال حاضر Secretهای LSA میتوانند پسوردهای اینترنت اکسپلورر، پسوردهای SQL، پسوردهای RAS، پسوردهای سیسکو و بسیاری پسوردهای دیگر را ذخیره کنند. در اسکرینشات زیر میتوانید بخشی از این secretها را ببینید. البته به این نکته توجه داشته باشید که این اسکرینشات در یک آزمایشگاه خانگی گرفته شده و متعلق به یک شبکهی بزرگ نیست، به همین خاطر اطلاعات خیلی کمی در آن قرار دارد. دامینکنترلرهای واقعی در عمل دادههای بسیار بیشتری در خود دارند.lsa_dump_secrets
تغییر پسورد یک کاربر
تغییردادن پسورد یک کاربر، هم میتواند خطرناک باشد و هم کار سخت و گاهی اوقات آزاردهندهای است؛ ولی ماژول password_change میتواند به شما کمک کند به راحتی این کار را انجام دهید. در این ماژول گزینهای وجود دارد که با استفاده از آن میتوانید با دانستن پسورد قبلی، پسورد را تغییر دهید. این ماژول یک هش NTLM جدید برای کاربر تولید کرده و آن را ذخیره میکند. گزینهی دیگر برای زمانی است که هش NTLM یک کاربر را مثلا با استفاده از lsadump استخراج کردهاید؛ در این مواقع نیز میتوانید با این ماژول پسورد آن کاربر را عوض کنید.password_change -u raj -p 123 -P 9876
password_change -u raj -n <NTLM-hash> -P 1234
حمله DC Sync
حمله DC Sync به مهاجم اجازه میدهد که رفتار کنترلکننده دامنه را تقلید کند؛ به عبارت سادهتر، در این حمله سیستمی که در اختیار مهاجم است خود را یک کنترلر دامین جا میزند و از طریق GetNCChanges، اطلاعات ورود کاربران را از دامینکنترلرهای دیگر درخواست میکند. تنها مانعی که برای این حمله وجود دارد، این است که باید به یک کامپیوتر دسترسی داشته باشید و کاربر آن هم باید یک حساب Privileged داشته باشد (ادمین، دامین ادمین یا Enterprise Admin).dcsync_ntlm krbtgt
dcsync krbtgt
Golden Tickets
حمله Golden Tickets، حملهای است که تیکتهای TGT جعلی برای Kerberos تولید میکند؛ این تیکتها برای احراز هویت کاربران با کمک Kerberos استفاده میشوند. سرویسهای تولید تیکت یا همان TGS، برای اعتبارسنجی اصالت تیکتها، به TGT وابسته هستند. این یعنی مهاجم میتواند از تیکت جعلی ساختهشده، به طور مستقیم برای احراز هویت خود استفاده کند. این تیکتها میتوانند تا ده سال طول عمر داشته باشند؛ به همین علت است که به این حمله بلیت طلایی یا Golden Ticket میگویند.golden_ticket_create -d ignite.local -u pavan -s <SID> -k
kerberos_ticket_use /root/ticket.kirbi
shell
dir\\DC1.ignite.local\c$
Purging Tickets
وقتی دارید با تیکتها و توکنها کار میکنید، پس از مدتی تعداد تیکتها آنقدر زیاد میشود که نمیتوان با آنها کار کرد. این اتفاق دیر یا زود میافتد، و در این مواقع ماژول purge به کمک شما میآید. این دستور تمام تیکتهای موجود در سشن فعلی را purge میکند (به طور کامل پاک میکند).kerberos _ticket_list
kerberos_ticket_purge
kerberos_ticket_list
استخراج اطلاعات لاگین از پیکجهای امنیتی
-
MSV
creds_msv
-
Kerberos
creds_kerberos
-
SSP
creds_ssp
-
WDigest
creds_wdigest
استخراج تمام اطلاعات از تمام پکیجها
اگر میخواهید تمام هشها و اطلاعات ورود ممکن را از تمام پکیجهای امنیتی روی ماشین هدف استخراج کنید، در این صورت میتوانید از دستور creds_all روی مترپرتر استفاده کنید. این دستور تمام اطلاعات هویتی را از تمام پکیجهایی که در بالا از آنها نام بردیم، نشان میدهد.creds_all
دستورات Mimikatz
ماژولهایی در Mimikatz وجود دارند که امکان دسترسی مستقیم به آنها در قالب دستورات داخل kiwi وجود ندارد. اینجاست که قابلیت Mimikatz در اجرای دستورات به کمک ما میآید. این ماژول به عنوان یک شل معمولی عمل میکند و میتواند دستورات Mimikatz را روی کامپیوتر هدف اجرا کرده و تقریبا تمامی حملات ممکن در این سناریو (یعنی پس از دسترسی به یک کامپیوتر در یک شبکه) را انجام دهد.kiwi_cmd hostname
استخراج اطلاعات لاگین WiFi
تا اینجا از حملاتی صحبت کردیم که با ساخت تیکتهای جعلی یا کپیکردن تیکتهای معتبر، امکان اجرای دستورات مختلف به عنوان کنترلر دامنه را به ما میدهند؛ حال ممکن است فکر کنید امکان به دست آوردن اطلاعات ورود وایفای در این حملات وجود ندارد، ولی این طور نیست. افراد معمولا زیاد در انتخاب پسورد وایفای وسواس و احتیاط به خرج نمیدهند و پسورد وایفای معمولا اولین رمزی است که به ذهن کاربر میرسد. به همین خاطر میتوان حدس زد یک کاربر خاص، چگونه پسوردهای مختلف انتخاب میکند. مثلا احتمال زیادی وجود دارد که پسوردی که کاربر برای وایفای انتخاب کرده با پسورد حسابش یکی باشد. اگر این طور بود، یک دسترسی بیدردسر به وایفای هم به دست میآورید که بدک نیست!wifi_list
wifi_list_shared