
تجاوز Credential Guard عن طريق تصحيح WDigest.dll باستخدام دوال NTAPI فقط
NativeBypassCredGuard هي أداة مصممة لتجاوز Credential Guard عن طريق تصحيح (patching) WDigest.dll باستخدام دوال NTAPI فقط (التي يصدرها ntdll.dll). وهي متوفرة بنسختين: C# وC++.
تحدد الأداة النمط "39 ?? ?? ?? ?? 00 8b ?? ?? ?? ?? 00" في ملف WDigest.dll الموجود على القرص (كما هو موضح في أول منشور في قسم المراجع، هذا النمط موجود في هذا الملف في جميع إصدارات ويندوز)، ثم تحسب عناوين الذاكرة اللازمة، وأخيرًا تصحح قيمة متغيرين داخل WDigest.dll: g_fParameter_UseLogonCredential (إلى 1) و g_IsCredGuardEnabled (إلى 0).
يؤدي هذا إلى فرض تخزين بيانات الاعتماد كنص صريح في الذاكرة، مما يضمن أنه من هذه النقطة فصاعدًا تُخزَّن بيانات الاعتماد بنص واضح في كل مرة يسجل فيها المستخدمون الدخول. ونتيجة لذلك، في المرة التالية التي يتم فيها تفريغ عملية LSASS، قد تحتوي على كلمات مرور بنص واضح.
دوال NTAPI المستخدمة هي:

باستخدام دوال NTAPI فقط، من الممكن إعادة تعيين (remap) مكتبة ntdll.dll لتجاوز خطافات وضع المستخدم وآليات الحماية، وهي ميزة اختيارية في الأداة. وفي حال استخدامها، يتم الحصول على نسخة نظيفة من ntdll.dll من عملية تم إنشاؤها في وضع معلّق (suspended).
NativeBypassCredGuard.exe <OPTION> <REMAP-NTDLL>
الخيار (مطلوب):
إعادة تعيين ntdll (اختياري):
قراءة القيم (بدون إعادة تعيين ntdll):
NativeBypassCredGuard.exe check

تصحيح القيم (مع إعادة تعيين ntdll):
NativeBypassCredGuard.exe patch true

الأداة مصممة لأنظمة 64 بت، لذا يجب تجميعها كملف ثنائي 64 بت
لن تعمل إذا تعذر فتح مقبض لـ lsass أو إذا لم تكن بنية PEB قابلة للقراءة. وفيما يتعلق بالأخير، يمكنك اختيار استخدام kernel32!LoadLibrary لتحميل WDigest.dll في عمليتك للحصول على عنوانه الأساسي، بدلًا من استخدام ntdll!NtReadVirtualMemory وntdll!NtQueryInformationProcess للحصول عليه من عملية lsass (الكود الخاص بذلك موجود معلّقًا في نسخة C). لكنك بذلك ستستخدم دالة لا يصدرها ntdll.dll بل kernel32.dll، ومن المحتمل أن يكون من الغريب أن تقوم عملية بتحميل ملف DLL كهذا :)
أنشأ 0x3rhy ملف BOF مبنيًا على هذا المشروع: BypassCredGuard-BOF
إعادة النظر في تجاوز Credential Guard بقلم itm4n - تحليل رائع أخذت منه النمط للبحث في قسم .text من ملف DLL
WDigest: إخراج الموتى من القبر بقلم neuralhax - مدونة مذهلة تثبت أنه من الممكن استخدام قيم أخرى لـ g_fParameter_UseLogonCredential، لم أختبرها بعد، ولكن يمكنك اللعب بالمتغير useLogonCredential_Value
استكشاف Mimikatz - الجزء 1 - WDigest بقلم xpn - منشور مدونة رائع يقوم بالهندسة العكسية ويشرح التخزين المؤقت لبيانات اعتماد WDigest