
Certighost POC
هذه أداة إثبات مفهوم (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.cdc تشير إلى عنوان IP مُتحكَم فيه (عبر --listener؛ اختيارية ويتم اكتشافها تلقائيًا إذا حُذفت) بالإضافة إلى سمة rmd تحمل اسم DNS الخاص بـ DC الهدف.STATUS_NOLOGON_SERVER_TRUST_ACCOUNT. أصبح certighost يتضمن الآن تصحيحًا ساخنًا (hotpatch) مناسبًا داخل السكربت لمسار NetLogon الخاص بـ SMB المزوّر (بتعيين البت E 0x20 بجانب البت K 0x800 في ParameterControl، وفقًا لـ MS-NRPC 2.2.1.4.15)، وبذلك يعمل الاستغلال ضد CA مستضافة على Domain Controller دون القلق بشأن تثبيت إصدار مختلف أو مشتق (fork) من Impacket.EDITF_ATTRIBUTESUBJECTALTNAME2 / ESC6)، يضبط طلب الشهادة الآن هوية SAN:dns إلى اسم DNS الخاص بـ DC الهدف (rmd_value) بدلاً من هوية الكمبيوتر المزوّر، متجنبًا خطأ KDC_ERR_CLIENT_NAME_MISMATCH في خطوة PKINIT. في قوالب البناء المستمدة من AD، يتم تجاهل SAN الخاص بالطلب، لذا يكون هذا التغيير عملية no-op آمنة.