حالا میرسیم به بخش کانتینرها تو اکتیو دایرکتوری که مستقیماً با Certificate Services مرتبطه. این کانتینرها اساساً جایی هستن که همه تنظیمات و objectهای مرتبط با PKI ذخیره میشن، و اگر بتونی بهشون دسترسی پیدا کنی، راه برای persistence یا حتی escalation باز میشه. من اینجا تمرکز میکنم روی Public Key Services container، که مسیرش اینه: CN=Public Key Services,CN=Services,CN=Configuration,DC=domain,DC=com. این کانتینر تو partition Configuration قرار داره، یعنی site-wide و replicate میشه تو همه DCها.
زیرمجموعههای کلیدی تو Public Key Services
این کانتینر چند تا sub-container مهم داره که هر کدوم نقش خاصی تو AD CS بازی میکنن:
- Certificate Templates:
اینجا templateهای گواهی ذخیره میشن
📌 چیزایی مثل User یا Computer که مشخص میکنن چطور گواهی صادر بشه، شامل EKUها، enrollment rights و غیره. اینا کلیدین برای abuse، چون اگر vuln باشن، میتونی دسترسی بگیری.
- Certification Authorities:
لیست trusted root CAها اینجا هست. این rootها از طریق Group Policy Object (GPO) propagate میشن به کلاینتها. یعنی اگر بتونی یک CA جعلی اضافه کنی، همه ماشینها بهش trust میکنن.
- Enrollment Services:
این بخش Enterprise CAها رو لیست میکنه 📌 CAهایی که integrate شدن با AD و میتونن گواهی صادر کنن. اگر دسترسی داشته باشی، میتونی enrollment رو manipulate کنی.
- NTAuthCertificates:
برای چیزایی مثل smart card authentication و key archival استفاده میشه. این objectها مشخص میکنن کدوم CAها مجازن برای NT authentication، که تو Kerberos مهمه.
آموزش ردتیم: چطور این کانتینرها رو abuse کنیم؟
تو سناریوهای حمله، ACLهای ضعیف روی این کانتینرها میتونه به persistence منجر بشه. مثلاً، اگر Write rights داشته باشی روی Certification Authorities، می تونی یک trusted root جعلی اضافه کنی (مثل حمله DPERSIST2 تو گزارشهای persistence). این کار domain-wide trust رو میشکنه.
برای enumerate کردن، از PowerShell استفاده کن:
Powershell
ls 'AD:\CN=Public Key Services,CN=Services,CN=Configuration,DC=domain,DC=com'
این کامند لیست objectها رو نشون میده. برای templateها، ابزار Certify.exe عالیه:
Certify find رو بزن تا vuln templateها رو پیدا کنی.abuse عملی:
اگر ACL Write داری روی یک template، می تونی modify کنی (مثل ESC4) .
مثلاً enrollment rights اضافه کنی یا EKUها رو تغییر بدی تا vuln بشه. بعد، گواهی درخواست بده و escalate کن.
نکته ای که هس :
این کانتینرها جزو Tier 0 assetها حساب میشن یعنی compromiseشون معادل domain persistence. adminها باید ACLها رو سختگیرانه چک کنن، چون حتی یک low-priv کاربر اگر rights داشته باشه، میتونه کل PKI رو به هم بریزه.
تمرین پیشنهادی
برای دستگرمی، تو محیط تستت یک template enumerate کن با Certify (مثل
Certify find /template:User) و EKUها رو چک کن ببین آیا Client Auth داره یا Any Purpose، که vuln هستن. این کمک میکنه بهتر بفهمی کجا حمله کنی.#ADCS
@KavehOffSec