العودة إلى التحديثات
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) إلى الدليل الحالي.

ماذا يفعل هذا السكربت؟

  1. إنشاء حساب كمبيوتر جديد (مثل GHOSTABCDEFGH$) أو إعادة استخدام حساب مُمرَّر عبر --computer-name.
  2. بدء مستمعَين مزوّفَين: خادم SMB/LSA على المنفذ 445 وخادم LDAP على المنفذ 389.
  3. إرسال طلب شهادة بصفة حساب الكمبيوتر هذا، مع تضمين سمة مخصصة cdc تشير إلى عنوان IP مُتحكَم فيه (عبر --listener؛ اختيارية ويتم اكتشافها تلقائيًا إذا حُذفت) بالإضافة إلى سمة rmd تحمل اسم DNS الخاص بـ DC الهدف.
  4. تتصل مرجعية الشهادات (CA) بالمستمعين المزوّفين LSA/LDAP. يقومان بالمصادقة بصفة الحساب الذي تم إنشاؤه (يتم التحقق منه عبر DC الحقيقي عبر Netlogon) ويجيبان على استعلامات CA بهوية DC الهدف (sAMAccountName وSID وdNSHostName) بدلاً من ذلك.
  5. تُصدر CA شهادة صالحة تخص DC الهدف.
  6. ينفّذ السكربت أيضًا PKINIT باستخدام ملف pfx الخاص بـ DC لطلب .ccache وتجزئة NT.

الجدول الزمني

  • 28 يوليو 2026 — الشكر إلى @GregDurys على PR الذي أصلح مشكلة 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.
  • 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 آمنة.

المراجع

الفئات