⭕ مقدمهای بر AD CS: گواهی های EKUها و OIDها
سلام، اگر بخوایم در مورد Active Directory Certificate Services (AD CS) حرف بزنیم، یکی از بخشهای کلیدیش گواهیهای دیجیتال هستن که توشون چیزایی مثل Extended Key Usage (EKU) و Object Identifier (OID) نقش مهمی بازی میکنن. اینا اساساً کمک میکنن تا بفهمیم یک گواهی برای چی ساخته شده و چطور میتونه سوءاستفاده بشه، مخصوصاً تو سناریوهای red teaming یا تست نفوذ. من اینجا سعی میکنم این بخش رو با جزئیات بیشتری توضیح بدم، چون واقعاً کلیدیه برای درک چگونگی abuse کردن templateهای گواهی.
EKU چیه؟
در واقع یک extension تو گواهیهای X.509 هست که مشخص میکنه این گواهی دقیقاً برای چه هدفی میتونه استفاده بشه. بدون EKU، گواهی میتونه برای هر کاری استفاده بشه (که این خودش یک حفره امنیتی بزرگه)، اما با EKU، محدودیتهایی اعمال میشه. تو محیط AD CS، این EKUها میتونن توسط administratorها روی templateها تنظیم بشن، و اگر درست کانفیگ نشن، راه رو برای حمله باز میکنن. مثلاً تو حملات escalation privilege، مثل ESC1 تا ESC3 که تو گزارشهای SpecterOps توضیح دادن، EKUهای خاصی مثل Client Authentication میتونن به مهاجم ها کمک کنن تا دسترسی بالاتری بگیرن.
OID چیه؟
OIDها identifierهای منحصر به فردی هستن که ساختار hierarchy دارن مثل یک درخت که هر شاخه اش یک کد عددی داره. اینا توسط سازمانهایی مثل IANA یا Microsoft تعریف میشن و هر OID یک کاربرد خاص رو نشون میده. OIDها تو EKUها استفاده میشن تا دقیقتر بگن گواهی چیکار میتونه بکنه. مثلاً، OIDها مثل شماره سریال هستن که کمک میکنن سیستمها بفهمن گواهی معتبره یا نه. اگر بخوای custom OID بسازی (مثل تو تستهای vuln)، میتونی از ابزارهایی مثل Certify.exe استفاده کنی تا ببینی چطور کار میکنه.
OIDهای رایج و کاربردهاشون (با تمرکز روی abuse)
اینجا چند تا OID مهم رو لیست میکنم، همراه با توضیح اینکه چطور میتونن تو abuse templateها مفید باشن. اینا رو بر اساس تجربیات red teaming انتخاب کردم، چون اغلب تو حملات واقعی دیده شدن:
- Server Authentication (OID: 1.3.6.1.5.5.7.3.1):
این برای SSL/TLS سرورها استفاده میشه، مثل وبسرورها. تو abuse، اگر templateی داشته باشی که این EKU رو اجازه بده و enrollment rights داشته باشی، میتونی گواهی جعلی بسازی برای impersonation سرورها. ولی معمولاً کمتر برای escalation استفاده میشه.
- Client Authentication (OID: 1.3.6.1.5.5.7.3.2):
این یکی برای احراز هویت کلاینتها طراحی شده، مثلاً تو PKINIT برای گرفتن Kerberos TGT. کلیدیه برای abuse! اگر templateی با این EKU داشته باشی و enrollment داشته باشی، میتونی privilege escalate کنی. مثلاً تو آموزشهای red team، میگن: template با Client Auth + enrollment rights = escalation path. برای enumerate کردنش، از Certify.exe find /clientauth استفاده کن. اگر نیاز به تست vuln داشتی، custom OID بساز و امتحان کن.
- Code Signing (OID: 1.3.6.1.5.5.7.3.3):
برای امضای کد، که میتونه Windows Defender Application Control (WDAC) رو bypass کنه. تو abuse، اگر بتونی گواهی با این EKU بگیری، کد مخربت رو امضا میکنی و سیستم فکر میکنه معتبره.
- Secure Email (OID: 1.3.6.1.5.5.7.3.4):
برای رمزنگاری و امضای ایمیلها (SMIME). کمتر abuse میشه، اما اگر template vuln باشه، میتونی برای spoofing ایمیل استفاده کنی.
- Encrypting File System (EFS) (OID: 1.3.6.1.4.1.311.10.3.4):
برای رمزنگاری فایلها تو ویندوز. تو سناریوهای خاص، می تونی ازش برای دسترسی به فایل های encryptشده سوءاستفاده کنی.
- Any Purpose (OID: 2.5.29.37.0):
این یکی همهکارهست و هیچ محدودیتی نداره – دقیقاً مثل نداشتن EKU. vulnerable به حملاتی مثل ESC2، چون میتونی گواهی رو برای هر کاری استفاده کنی، از authentication گرفته تا signing.
- Certificate Request Agent (OID: 1.3.6.1.4.1.311.20.2.1):
این برای on-behalf-of enrollment استفاده میشه، که تو ESC3 کلیدیه. اگر template این EKU رو داشته باشه، attacker میتونه گواهی برای کاربر دیگه درخواست کنه و privilege بگیره.
نکتههای کلیدی برای abuse در red teaming
- No EKU = Any Purpose:
اگر گواهی EKU نداشته باشه، مثل Any Purpose عمل میکنه عالی برای ESC2، چون محدودیت نداره و میتونی باهاش هر کاری کنی.
#ADCS
@KavehOffSec
Post #92
604
- 👍 6
- 👎 1