درود ادامه بحثمون، حالا میخوام برم سراغ بخش Certificate Signing Request یا CSR. این یکی از مراحل کلیدی تو فرآیند صدور گواهی هاست و اگر خوب درک نشه، میتونه نقطه ضعفی باشه تو امنیت دامنه. من اینجا سعی می کنم فرآیند رو قدم به قدم توضیح بدم، با تمرکز روی جنبههای red teaming و چگونگی abuse کردنش.
CSR چیه و چطور کار میکنه؟
به طور خلاصه، CSR یک درخواست رسمی برای امضای گواهی هست که از سمت کلاینت (کاربر یا سیستم) به Certificate Authority (CA) ارسال میشه. تو این درخواست، کلاینت public key خودش رو همراه با اطلاعات دیگه مثل Subject Name، Subject Alternative Name (SAN)، Extended Key Usage (EKU) و جزئیات دیگه میفرسته. CA این اطلاعات رو validate میکنه مثلاً چک میکنه که آیا requester حقوق لازم رو داره یا نه و اگر همه چیز اوکی باشه، گواهی رو sign میکنه و برمیگردونه.
این فرآیند معمولاً تو AD CS از طریق templateها مدیریت میشه. مثلاً، template مشخص میکنه که چه fieldهایی تو CSR مجاز هستن. اما اگر CA درست کانفیگ نشده باشه، مهاجم میتونه fieldهایی مثل SAN رو manipulate کنه تا گواهی جعلی بسازه. CSR میتونه شامل extensionهایی مثل EKU (که تو پست قبلی توضیح دادم) یا حتی custom OIDها باشه، که اینا رو کلاینت موقع generate کردن CSR اضافه میکنه.
آموزش ردتیم: چطور CSR رو abuse کنیم؟
تو سناریوهای حمله، CSR یکی از بهترین جاها برای injection اطلاعات جعلی هست، مخصوصاً تو حملاتی مثل ESC1 (که تو گزارش SpecterOps توضیح دادن). ایده اینه که SAN جعلی inject کنی.
مثلاً یک altname مثل admin یا یک کاربر دسترسی دار و اگر template vulnerable باشه (مثل اینکه SAN editable باشه و manager approval نداشته باشه)، CA بدون چک کردن sign میکنه.
ابزار عالی برای این کار Certify.exe هست، که میتونی باهاش CSR generate کنی و مستقیم submit کنی به CA.
مثال عملی:
Powershell
Certify.exe request /ca:CA_NAME /template:User /altname:admin
تو این کامند، /ca اسم CA رو مشخص میکنه، /template template مورد نظر (مثل User که معمولاً vulnerable)، و /altname SAN جعلی رو اضافه میکنه. اگر CA vuln باشه مثلاً enrollment rights داشته باشی و validation سستی داشته باشه گواهی میگیری که میتونی باهاش impersonation کنی، مثل login کردن به عنوان admin بدون نیاز به credential واقعی.
بعد از گرفتن گواهی، میتونی از ابزارهایی مثل Rubeus برای Pass-the-Certificate استفاده کنی و escalate کنی.
نکتههای مهم برای abuse
- Intercept کردن CSR:
اگر enrollment از طریق وب باشه (مثل Web Enrollment Services)، میتونی CSR رو وسط راه intercept کنی برای Man-in-the-Middle (MITM) attacks. مثلاً با پروکسی مثل Burp، request رو modify کنی و fieldهایی مثل SAN یا EKU رو تغییر بدی. این تو محیط هایی که HTTPS درست کانفیگ نشده، خیلی آسونه.
📌همیشه چک کن که template چطور تنظیم شده
📌 اگر SAN user-supplied باشه و CA auto-approve کنه، راه بازه برای حمله.
در نهایت، CSR قلب فرآیند صدور گواهی تو AD CS هست، و اگر adminها حواسشون نباشه، میتونه به escalation سریع منجر بشه. پیشنهادم اینه که تو لاب خودتون emulate کنید و با ابزارهایی مثل Certify تست کنید.
#ADCS
@KavehOffSec