
UpdatedAug 1, 2026
CVE-2026-54121 — Updated!
Certighost POC
CVE-2026-54121 (Certighost)
هذه أداة إثبات مفهوم (PoC) لتوضيح CVE-2026-54121 المعروف أيضًا باسم Certighost. اقرأ هنا https://gist.github.com/H0j3n/a5ef2609b5f2944ac2390a191a534c26 للتحليل المفصل.
تثبيت التبعيات
إثبات المفهوم هو سكربت Python مكتفٍ ذاتيًا. يتطلب impacket و cryptography و pyasn1 و asn1crypto و dnspython.
sudo pip install --break-system-packages git+https://github.com/fortra/impacket.git cryptography pyasn1 asn1crypto pycryptodome dnspython
الاستخدام
شغّله بصلاحيات root لأن خدمات LDAP وSMB المزوّفة تستمع على منافذ عالية الامتياز 389 و445.
sudo python3 certighost.py -d playground.local -u lowpriv -p 'Password1234' --dc-ip 192.168.1.10
يكتب التنفيذ الناجح شهادة الهدف (.pfx) وذاكرة Kerberos المؤقتة (.ccache) إلى الدليل الحالي.
ماذا يفعل هذا السكربت؟
- إنشاء حساب كمبيوتر جديد (مثل
GHOSTABCDEFGH$) أو إعادة استخدام حساب مُمرَّر عبر--computer-name. - بدء مستمعَين مزوّفَين: خادم SMB/LSA على المنفذ 445 وخادم LDAP على المنفذ 389.
- إرسال طلب شهادة بصفة حساب الكمبيوتر هذا، مع تضمين سمة مخصصة
cdcتشير إلى عنوان IP مُتحكَم فيه (عبر--listener؛ اختيارية ويتم اكتشافها تلقائيًا إذا حُذفت) بالإضافة إلى سمةrmdتحمل اسم DNS الخاص بـ DC الهدف. - تتصل مرجعية الشهادات (CA) بالمستمعين المزوّفين LSA/LDAP. يقومان بالمصادقة بصفة الحساب الذي تم إنشاؤه (يتم التحقق منه عبر DC الحقيقي عبر Netlogon) ويجيبان على استعلامات CA بهوية DC الهدف (sAMAccountName وSID وdNSHostName) بدلاً من ذلك.
- تُصدر CA شهادة صالحة تخص DC الهدف.
- ينفّذ السكربت أيضًا PKINIT باستخدام ملف pfx الخاص بـ DC لطلب .ccache وتجزئة NT.
الجدول الزمني
- 28 يوليو 2026 — الشكر إلى @GregDurys على PR الذي أصلح مشكلة
STATUS_NOLOGON_SERVER_TRUST_ACCOUNT. أصبحcertighostيتضمن الآن تصحيحًا ساخنًا (hotpatch) مناسبًا داخل السكربت لمسار NetLogon الخاص بـ SMB المزوّر (بتعيين البت E0x20بجانب البت K0x800فيParameterControl، وفقًا لـ MS-NRPC 2.2.1.4.15)، وبذلك يعمل الاستغلال ضد CA مستضافة على Domain Controller دون القلق بشأن تثبيت إصدار مختلف أو مشتق (fork) من Impacket. - 28 يوليو 2026 — الشكر إلى @Hack0ura لذكره إصلاح SAN الخاص بالطلب. على CA تحترم SANs المقدمة ضمن الطلب (
EDITF_ATTRIBUTESUBJECTALTNAME2/ ESC6)، يضبط طلب الشهادة الآن هويةSAN:dnsإلى اسم DNS الخاص بـ DC الهدف (rmd_value) بدلاً من هوية الكمبيوتر المزوّر، متجنبًا خطأKDC_ERR_CLIENT_NAME_MISMATCHفي خطوة PKINIT. في قوالب البناء المستمدة من AD، يتم تجاهل SAN الخاص بالطلب، لذا يكون هذا التغيير عملية no-op آمنة.