
تجاوز Credential Guard عبر ترقيع ذاكرة Wdigest
كتب آدم تشيستر (@_xpn_) مقالاً بعنوان "Exploring Mimikatz - Part 1 - WDigest" حول تصحيح الذاكرة لتمكين UseLogonCredential وجعل Wdigest يخزّن بيانات الاعتماد النصية الصريحة في الذاكرة المؤقتة، وقد أثار اهتمامي.
تحتوي وحدة wdigest.dll التي تُحمَّل بواسطة عملية LSASS على متغيرين عامين مثيرين للاهتمام: g_fParameter_useLogonCredential و g_IsCredGuardEnabled، ودورهما واضح من الاسم وحده؛ يُستخدم الأول لتحديد ما إذا كان يجب تخزين كلمة المرور النصية الصريحة في الذاكرة، بينما يحمل الثاني حالة Windows Defender Credential Guard داخل الوحدة. ويمكن تمكين التخزين المؤقت لكلمات مرور Wdigest النصية الصريحة على الأنظمة المزودة بـ Credential Guard عن طريق تصحيح قيم هذين المتغيرين العامين في الذاكرة.
للحصول على تحليل أكثر تفصيلاً، يرجى قراءة مدونتي: "Revisiting a Credential Guard Bypass From Wdigest"
شغّل الـ POC الذي كتبناه على النظام الذي تم فيه تفعيل حماية Credential Guard. عندما يُدخل المستخدم اسم المستخدم وكلمة المرور لتسجيل الدخول مرة أخرى، نحصل على كلمة المرور النصية الصريحة الخاصة به مرة أخرى، كما هو موضح في الشكل أدناه.
BypassCredGuard.exe

في الواقع، في وقت مبكر من أغسطس 2020، نشر فريق Hydra (@N4k3dTurtl3) مقالاً على المدونة بعنوان "Bypassing Credential Guard" يناقش هذه الحيلة الذكية والبسيطة جداً، كما نشر بإيجاز إثبات مفهوم CredGuard_PoC، لكنه لا يعمل على جميع أنظمة Windows.
قدّم فريق Hydra تقريراً إلى Microsoft حول هذه المشكلة وتلقّى الرد التالي:
«بعد التحقيق في هذه المشكلة، لا نعتقد أن هذا تجاوز لـ Credential Guard. صُمم Credential Guard لحماية بيانات الاعتماد التي تم تخزينها مؤقتاً أثناء تفعيل الميزة. إذا عطّل مستخدم متميز Credential Guard، فلن تتمكن الميزة من حماية عمليات تسجيل الدخول اللاحقة. سنقوم بتحديث وثائقنا العامة لتوضيح هذا السلوك»
نظراً لهذا الرد، أعتقد أن هذه ستبقى طريقة موثوقة للحصول على كلمات المرور النصية الصريحة على الأنظمة المزودة بـ Credential Guard في المستقبل المنظور.