تحلیل لیستهای کنترل دسترسی (ACL) در Active Directory یک کار ساده نیست و معمولاً به صورت دستی انجام نمیشود. برای یک مهاجم، این تحلیل اغلب مسیرهای پنهان و غیرمنتظرهای را تا دسترسی Domain Admin فاش میکند.
ابزار BloodHound که اغلب برای این منظور استفاده میشود، تنها ACEهایی را ثبت میکند که تشخیص دهد و فقط آنهایی را نشان میدهد که امنیتی مهم هستند. اما چطور میتوان تصویر کامل را دید و تمام ACEها را بدون حذف و یا فیلتر، جمعآوری کرد؟ این کار همچنین به این دلیل دشوار است که DACL یک فرمت باینری ناخوشایند دارد که تحلیل آزادانه آن را مشکل میکند. همانند BloodHound و Impacket، این ابزارها تنها با مقایسه بیتی ماسکها و فلگها عمل میکنند و اجازه تحلیل مستقل ACL و دیدن چیزهایی بیشتر از آنچه BloodHound نشان میدهد را نمیدهند.
اینکه اگر بتوان ACEهای باینری را به یک فرمت کانونیک (Canonical)، قابل خواندن توسط انسان و همچنین قابل جستجو (greppable) تبدیل کرد، تمامی میسکانفیگها حتی با چشم غیرمجرب هم قابل شناسایی میشدند.
چند سال پیش متوجه شدم که تنها کتابخانه skelsec/winacl امکان رمزگشایی کامل ACEها به فرمت کانونیک را فراهم میکند. بنابراین من یک pull request در winacl (https://github.com/skelsec/winacl/pull/8) و همچنین در ldap shell msldap (https://github.com/skelsec/msldap/pull/28) ارسال کردم. حالا با این تغییرات میتوانید ACL هر شیء Active Directory دلخواه را دریافت کنید و آن را در قالبی قابل خواندن و جستجو مشاهده کنید.
در یکی از پروژههای Red Team اخیر، این قابلیت در ابزار msldap به شدت به منظور کشف تنظیمات نادرست دسترسی به یک الگوی گواهی دیجیتال (Template) ADCS کمک کرد — این در حالی بود که ما هنوز هم از رادار SOC دور بودیم. این اطلاعات به کسب دسترسی کنترلی بالا بر بستر زیرساخت به روش ESC4 کمک کرد.
نویسنده : s0i37
#AD
@PfkSecurity
Post #795
750