تست نفوذ Domain Controller

تست نفوذ Domain Controller

ممکن است در سازمانی قرار بگیرید که تمامی دسترسی‌ها بر بستر VDI باشد و این ارتباطات نیز توسط سرویس Domain Controller ویندوز دستخوش قانون گذاری شده باشد، برای تست نفوذ در این بستر (DC) ما از چهار طریق می‌توانیم عمل کنیم:

  AD Attack #1: LDAP Reconnaissance (PowerSploit and PowerShell)
  AD Attack #2: Local Admin Mapping (Bloodhound)  
  AD Attack #3: NTDS.dit Extraction (VSSAdmin, PowerSploit, and Hashcat)  
  AD Attack #4: Stealing Passwords from Memory (Mimikatz)  

AD Attack #1: اولین اقدامی که باید صورت بپذیرد این است که سطح دسترسی را افزایش دهیم. برای این منظور از ابزار PowerSploit استفاده می‌کنیم. PowerSploit بر اساس PowerShell عمل می‌کند که ماژول‌های خوبی برای تست را فراهم می‌کند.
  Get-NetGPOGroup: این دستور تمامی GPO ها را در دامنه جمع‌آوری کرده و مالکیت User ها و محدودیت‌هایشان را نشان می‌دهد. با اجرای این دستور تمامی کاربرهایی که دسترسی محلی دارند را به صورت لیست می‌بینیم که این لیست به ما کمک می‌کند تا سطح دسترسی خودمان را بالاتر ببریم.

               

  Find-GPOLocation: این ماژول به ما اجازه می‌دهد به صورت تکی یک کاربر را جستجو کنیم و هم‌چنین تمامی دسترسی‌های او به GPO را مشخص کنیم.
  Invoke-FileFinder: با اجرای این دستور فایل‌های مهم روی هاست برای جستجو در ناحیه مشخصی انجام می‌شود.
  Invoke-ShareFinder: لیستی از فولدرهای غیر استاندارد تولید می‌کند که هیچ بررسی خاصی روی این فایل‌های ذخیره شده انجام نخواهد گرفت.
  Find-LocalAdminAccess: لیستی از اعضا گروه ادمین روی سیستم مشخصی را به ما می‌دهد.
  PowerUpSQL: برای حمله روی SQLServer استفاده می‌شود. دستور Get-SQLInstanceDomain تمامی اطلاعات حساب‌ها با SPN رو در دامنه می‌دهد. هم‌چنین محلی که SQLServer نصب شده را نشان می‌دهد. برای این‌که بتوانیم آسیب‌پذیری‌ها، دسترسی‌ها و پیکربندی را در تمامی دامنه‌ها پیدا کنیم این دستور را با Invoke-SQLDumpInfo  ترکیب می‌کنیم.

راه محافظت: مانیتور کردن ترافیک LDAP و زیر نظر گرفتن کوئری‌های غیر نرمال

AD Attack #2: یکی از اهداف در تست نفوذ این است که شناسایی نشویم. برای همین ابزاری به نام BloodHound وجود دارد. این ابزار یک وب اپلیکیشین است که می‌تواند مسیر حمله را در محیط اکتیو دایرکتوری پیدا کرده و به صورت گرافیکی نمایش دهد. هم‌چنین سریع‌ترین مسیر برای حمله روی هر اکانتی در دامنه مشخصی را پیدا می‌کند.
این ابزار بر پایه PowerSploit است که Invoke-UserHunter مسیر حمله را درست می‌کند. اولین کارش ایجاد نقشه‌ای است که دسترسی به کامپیوترها را نشان می‌دهد. هم‌چنین روی کاربرهای محلی (Local Administrators group) تمرکز می‌کند. سپس active session و log را روی کاربران در دامنه جمع‌آوری می‌کند. که این اطلاعات شامل بلاک‌های نقشه حمله است. الان ما می‌دانیم که چه کسی روی چه کامپیوتری دسترسی دارد.
برای جمع آوری اطلاعات نیاز است از PowerShell  استفاده کنیم که اطلاعات خروجی در CSV نوشته می‌شود.

PS C:\Bloodhound\BloodHound-master\ BloodHound-master\PowerShell> Get-BloodHoundData

برای نمایش گرافیکی لازم است که اطلاعات درون وب اپلیکیشین وارد شود.
راه محافظت: کنترل این‌که دسترسی‌ها چطور داده شده‌اند. هم‌‌چنین مانیتورینگ لاگین و احرازهویت به صورت غیرنرمال

AD Attack #3: فایل Ntds.dit اطلاعات اکتیودایرکتوری را در دیتابیس ذخیره می‌کند که شامل اطلاعاتی در مورد کاربران، گروه‌ها و اعضای گروه است. همچنین پسوردهای هش‌شده کاربران در این دامنه وجود دارد. برای استخراج پسورد هش‌شده می‌توان از ابزارهای آنلاین و آفلاین استفده کرد. برای مثال از ابزار Mimikatz برای حمله path-the-hash و Hashcat برای کرک پسورد استفاده کرد. البته سایت‌هایی هستند که تنها کافی است هش را به آن‌ها بدهیم و اگر در دیتابیس آن‌ها وجود داشت، مقدار آن‌را برمی‌گرداند.
اولین قدم برای استخراج پسورد این است که فایل Ntds.dit را کپی کنیم. البته اگر بخواهیم به صورت معمولی کپی کنیم به دلیل محافظت‌های اکتیودایرکتوری با خطا مواجه می‌شویم. برای این کار راه‌های زیر را داریم:
  استفاده از Volume Shadow Copies به‌وسیله دستور VSSAdmin
  استفاده از ابزار NTDSUtil
  استفاده از PowerSploit
  اگر Domain Controllers روی ماشین مجازی است از snapshots  استفاده می‌کنیم.
برای استفاده از VSSAdmin : ابتدا Volume Shadow Copy را ایجاد می‌کنیم.

سپس فایل Ntds.dit را خارج می‌کنیم.

فایل SYSTEM را از رجیستری یا Volume Shadow Copy کپی می‌کنیم که شامل کلید بوت برای decrypt فایل  Ntds.dit است

و در آخر ردپای خود را پاک می‌کنیم.

استفاده از PowerSploit NinjaCopy: ماژول Invoke-NinjaCopy یک فایل را از NTFS-partitioned با خواندن از raw volume کپی می‌کند. این رویکرد یکی از راه‌هایی است که بدون متوجه شدن هرگونه تغییری در مانیتورینگ به فایل‌های قفل شده در اکتیودایرکتوری دسترسی پیدا می کنیم.
یکی دیگر از ابزارها برای استخراج هش از فایل  Ntds.dit استفاده از ابزار DSInternals است که بر پایه PowerShell نوشته شده است.
راه محافظت: بهترین راه این است که تعداد کاربرانی که به Domain Controllers لاگین می‌کنند محدود شود. همچنین مانیتورینگ برای هشدار می‌تواند مفید باشد.

AD Attack #4: برای اجرا حمله pass-the-hash از ابزار Mimikatz استفاده می‌کنیم. این ابزار از راه‌های مختلفی برای جلوگیری از شناسایی استفاده می‌کند. برای مثال دستور Invoke-Mimikatz درون PowerSploit درون مموری کار خود را انجام می‌دهد.

PS C:\Mimikatz\mimikatz_trunk\x64> .\mimikatz.exe

راه محافظت: ویندوز چندین ویژگی جدید برای محافظت معرفی کرده است. یکی از بهترین راه‌ها این است که implement logon restrictions را انجام دهیم که باعث می‌شود هش در جایی که بشود استخراج کرد، ذخیره نشود. Enabling LSA Protection, leveraging the Protected Users security group, and using Restricted Admin mode for Remote Desktop از جمله این راه‌ها است.

نویسنده: علیرضا تقی خانی

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