
أداة بلغة C# لاستكشاف واستغلال الأخطاء في التكوين في خدمات شهادات Active Directory (AD CS)، مما يتيح إساءة استخدام قوالب الشهادات، تصعيد الامتيازات، والاستمرارية في المجال.
تصديق (Certify) هي أداة مكتوبة بلغة C# تهدف إلى تعداد واستغلال الثغرات في خدمات شهادات الدليل النشط (AD CS).
@harmj0y و @tifkin_ هما المؤلفان الرئيسيان لـ Certify والبحث المرتبط بـ AD CS (المدونة و الورقة البيضاء).
يمكن العثور على نظرة عامة على الأوامر وتفاصيل استخدام شاملة في الويكي.
تم إصدار Certify في مؤتمر Black Hat 2021 مع محاضرتنا "Certified Pre-Owned: إساءة استخدام خدمات شهادات الدليل النشط".
انظر الورقة البيضاء الخاصة بنا للحصول على إرشادات الوقاية والكشف.
لا نخطط لإصدار ثنائيات لـ Certify، لذا سيكون عليك تجميعه بنفسك :)
تم بناء Certify ضد .NET 4.7.2 وهو متوافق مع Visual Studio 2022 Community Edition. ما عليك سوى فتح ملف المشروع .sln، واختيار "Release"، وبناءه.
إذا كنت ترغب في تشغيل Certify في الذاكرة عبر غلاف PowerShell، فقم أولاً بتجميع Certify وترميز التجميع الناتج بصيغة Base64:
[Convert]::ToBase64String([IO.File]::ReadAllBytes("C:\Temp\Certify.exe")) | Out-File -Encoding ASCII C:\Temp\Certify.txt
يمكن بعد ذلك تحميل Certify في سكريبت PowerShell باستخدام ما يلي (حيث يتم استبدال "aa..." بسلسلة التجميع المشفرة بـ Base64 لـ Certify):
$CertifyAssembly = [System.Reflection.Assembly]::Load([Convert]::FromBase64String("aa..."))
يمكن بعد ذلك استدعاء الدالة Main() وأي وسائط كما يلي:
[Certify.Program]::Main("enum-templates --filter-enabled --filter-vulnerable".Split())
نظرًا للطريقة التي يتعامل بها PSRemoting مع الإخراج، نحتاج إلى إعادة توجيه stdout إلى سلسلة نصية وإرجاعها بدلاً من ذلك. لحسن الحظ، يحتوي Certify على وظيفة للمساعدة في ذلك.
إذا اتبعت التعليمات في ملاحظة جانبية: تشغيل Certify عبر PowerShell لإنشاء ملف Certify.ps1، فأضف شيئًا مثل ما يلي إلى السكريبت:
[Certify.Program]::MainString("enum-templates --filter-enabled --filter-vulnerable")
يجب أن تكون قادرًا بعد ذلك على تشغيل Certify عبر PSRemoting باستخدام شيء مثل:
$s = New-PSSession dc.theshire.local
Invoke-Command -Session $s -FilePath C:\Temp\Certify.ps1
بدلاً من ذلك، ستقوم وسيطة /outfile:C:\FILE.txt في Certify بإعادة توجيه جميع تدفقات الإخراج إلى الملف المحدد.
فيما يتعلق بالإفصاح العام، قمنا بحظر ذاتي لإصدار أدواتنا الهجومية (Certify بالإضافة إلى ForgeCert) لمدة ~45 يومًا بعد نشر ورقتنا البيضاء بهدف إعطاء المؤسسات فرصة للسيطرة على المشكلات المحيطة بخدمات شهادات الدليل النشط. كما أصدرنا استباقيًا بعض قواعد Yara/Mؤشرات الاختراق (IOCs) لكلا المشروعين وأصدرنا مشروع PowerShell الدفاعي PSPKIAudit مع الورقة البيضاء. ومع ذلك، وجدنا أن المؤسسات والبائعين غالبًا ما لم يقوموا تاريخيًا بإصلاح المشكلات أو بناء اكتشافات للهجمات "النظرية" حتى يثبت شخص ما إمكانية ذلك من خلال إثبات المفهوم.
استخدمت Certify بعض الموارد الموجودة على الإنترنت كمرجع وإلهام:
تم بناء عمل AD CS على أساس عمل العديد من الآخرين. تحتوي الورقة البيضاء على معالجة كاملة، ولكن لتلخيص: