Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
Internal-Monologue — هجوم المونولوج الداخلي: استرداد تجزئات NTLM دون لمس LSASS | Kitploit
أدوات/GitHubGitHub/eladshamir/internal-monologue
هجمات كلمات المرورالحركة الجانبيةما بعد الاستغلالاختبار الاختراقالفريق الأحمر
GitHubeladshamir/internal-monologue

Internal-Monologue

هجوم المونولوج الداخلي: استرداد تجزئات NTLM دون لمس LSASS

عرض المستودع
1.7k2385منذ 7 سنواتتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

هجوم المونولوج الداخلي: استرداد تجزئات NTLM دون لمس LSASS

مقدمة

Mimikatz، التي طورها Benjamin Delpy (@gentilkiwi)، هي أداة معروفة جيدًا لمرحلة ما بعد الاستغلال، تسمح للخصوم باستخراج كلمات المرور النصية العادية، وتجزئات NTLM، وتذاكر Kerberos من الذاكرة، بالإضافة إلى تنفيذ هجمات مثل تمرير التجزئة (pass-the-hash) أو تمرير التذكرة (pass-the-ticket) أو بناء تذكرة ذهبية. يمكن القول إن الاستخدام الأساسي لـ Mimikatz هو استرداد بيانات اعتماد المستخدم من ذاكرة عملية LSASS لاستخدامها في الحركة الجانبية بعد الاستغلال.

مؤخرًا، قدمت Microsoft ميزة Credential Guard في Windows 10 Enterprise وWindows Server 2016، والتي تستخدم الأمان القائم على المحاكاة الافتراضية لعزل الأسرار، وهي فعالة جدًا في منع Mimikatz من استرداد التجزئات مباشرة من الذاكرة. أيضًا، أصبحت Mimikatz هدفًا رئيسيًا لمعظم حلول حماية نقاط النهاية، وهي عدوانية جدًا في جهودها لكشفها ومنعها. على الرغم من أن هذه الجهود محكوم عليها بالفشل، إلا أنها أصبحت مصدر إزعاج متزايد.

NetNTLM

NetNTLM هو بروتوكول التحدي والاستجابة من Windows المستخدم بشكل أساسي حيث لا يتم دعم Kerberos. في NetNTLM، يرسل الخادم إلى العميل رقمًا عشوائيًا من 8 بايت (nonce) كتحدٍ، ويحسب العميل استجابة تعالج التحدي باستخدام تجزئة NTLM كمفتاح، وهي تجزئة MD4 لكلمة مرور المستخدم. هناك نسختان من بروتوكول مصادقة NetNTLM، وكلاهما عرضة لهجمات معينة. بطبيعة الحال، الإصدار 1 أضعف بكثير من الإصدار 2، ولذلك اعتبارًا من Windows Vista/2008 يتم تعطيل NetNTLM الإصدار 1 افتراضيًا.

تمرير التجزئة (Pass the Hash)

نظرًا لأن تجزئة NTLM هي المفتاح لحساب الاستجابة، لا يحتاج الخصم بالضرورة إلى الحصول على كلمة مرور النص العادي للضحية للمصادقة، وبالتالي فإن استرداد التجزئة من ذاكرة LSASS باستخدام Mimikatz يعادل تقريبًا سرقة كلمة مرور نصية عادية. نشر Chris Hummel مقالًا يصف هذه التقنية في عام 2009 وأطلق عليها اسم "Pass the Hash" [https://www.sans.org/reading-room/whitepapers/testing/crack-pass-hash-33219].

فرق تسد (Divide and Conquer)

في مؤتمر Defcon 2012، قدم Moxie Marlinspike وDavid Hulton هجوم "فرق تسد" ضد NetNTLMv1 [https://www.youtube.com/watch?v=sIidzPntdCM]. في NetNTLMv1، يتلقى العميل التحدي المكون من 8 بايت ويحسب الاستجابة عن طريق تشفيره ثلاث مرات باستخدام DES مع أجزاء مختلفة من تجزئة NTLM كمفتاح. طول المفتاح لـ DES هو 56 بت فعليًا، أي 7 بايت، بينما تجزئة NTLM هي 16 بايت. يقوم NetNTLMv1 أولاً بتشفير التحدي باستخدام أول 7 بايت من تجزئة NTLM كمفتاح، ثم تشفير التحدي باستخدام الـ 7 بايت التالية من تجزئة NTLM كمفتاح، وأخيرًا تشفير التحدي باستخدام آخر 2 بايت من تجزئة NTLM مع حشو بايتات صفرية كمفتاح. يعني هذا فعليًا أنه لاسترداد تجزئة NTLM بوجود تحدٍ واستجابة من NetNTLMv1، يجب على الخصم اختراق مفتاحين DES بطول 56 بت، وهو أسهل بشكل هائل من اختراق مفتاح واحد بطول 128 بت. طور Moxie وHulton أجهزة مخصصة لهذه المهمة وتمكنا من اختراق كامل مساحة مفاتيح DES بالقوة العمياء في أقل من 24 ساعة، مما يضمن استرداد تجزئة NTLM بنجاح في غضون وقت معقول. لاحظ أنه على عكس هجمات القاموس أو القوة العمياء ضد كلمة المرور، التي قد لا تكون مثمرة، فإن هذا الهجوم يضمن استرداد تجزئة NTLM بنجاح.

جداول قوس قزح (Rainbow Tables)

كما هو موضح من ToorCon على https://crack.sh، من الممكن إنشاء جدول قوس قزح كامل لجميع الاستجابات الممكنة لـ NetNTLMv1 لتحدٍ مختار، مثل 0x1122334455667788، مما يسمح باختراق تجزئة NTLM لاستجابة معينة في غضون دقائق. المعنى الضمني هو أن التقاط استجابة NetNTLMv1 للتحدي المختار يمكن ترجمتها إلى تجزئة NTLM المقابلة بشكل فوري تقريبًا، وهو ما يعادل تقريبًا الحصول على كلمة المرور بسبب تمرير التجزئة.

هجوم خفض مستوى NetNTLM (NetNTLM Downgrade Attack)

عادةً ما يتم تنفيذ Mimikatz بعد أن يحصل الخصم على وصول مرتفع إلى المضيف الهدف. في هذه المرحلة، يمكن للخصم أيضًا تغيير مفاتيح التسجيل، مثل LMCompatibilityLevel، الذي يحدد ما إذا كان المضيف سيتفاوض على NetNTLMv1 أو NetNTLMv2. يمكن للخصم تغيير القيمة إلى 0 أو 1 أو 2، مما يتيح NetNTLMv1 كعميل، ثم محاولة المصادقة على خادم SMB مخادع يقوم بالتقاط استجابة العميل، كما هو موضح في منشور مدونة Optiv [https://www.optiv.com/blog/post-exploitation-using-netntlm-downgrade-attacks].

هجوم خفض مستوى NetNTLM الموسع (Extended NetNTLM Downgrade Attack)

قد يمنع إعدادان آخران الضحية من التفاوض على استجابة NetNTLMv1:

  1. NTLMMinClientSec - إذا تم تكوينه على "يتطلب أمان جلسة NTLMv2"، سيفشل الاتصال إذا لم يتم التفاوض على بروتوكول NTLMv2.
  2. RestrictSendingNTLMTraffic - إذا تم تكوينه على "رفض الكل"، لا يمكن للكمبيوتر العميل المصادقة على خادم بعيد باستخدام NetNTLM بأي إصدار. على غرار هجوم خفض مستوى NetNTLM، يمكن تغيير هذه الإعدادات إذا لزم الأمر. لاحظ أنه على عكس LMCompatibilityLevel، فإن هذه الإعدادات غير مهيأة افتراضيًا لحظر مصادقة NetNTLMv1.

هجوم المونولوج الداخلي (Internal Monologue Attack)

في البيئات الآمنة، حيث لا يجب تنفيذ Mimikatz، يمكن للخصم تنفيذ هجوم المونولوج الداخلي، حيث يستدعي استدعاء إجراء محلي (LPC) لحزمة مصادقة NTLM (MSV1_0) من تطبيق وضع المستخدم عبر SSPI لحساب استجابة NetNTLM في سياق المستخدم المسجل الدخول، بعد تنفيذ خفض مستوى NetNTLM موسع.

يتم وصف تدفق هجوم المونولوج الداخلي أدناه:

  1. تعطيل ضوابط الوقاية من NetNTLMv1 عن طريق تغيير LMCompatibilityLevel وNTLMMinClientSec وRestrictSendingNTLMTraffic إلى القيم المناسبة، كما هو موضح أعلاه.
  2. استرداد جميع رموز تسجيل الدخول غير الشبكية من العمليات الجارية حالياً وانتحال هوية المستخدمين المرتبطين.
  3. لكل مستخدم منتحل، التفاعل مع NTLM SSP محلياً لاستخراج استجابة NetNTLMv1 للتحدي المختار في السياق الأمني للمستخدم المنتحل.
  4. استعادة القيم الأصلية لـ LMCompatibilityLevel وNTLMMinClientSec وRestrictSendingNTLMTraffic.
  5. اختراق تجزئة NTLM للاستجابات الملتقطة باستخدام جداول قوس قزح.
  6. تمرير التجزئة.

تحديث: التوافق مع Credential Guard

لقد قمت مؤخرًا بإعادة اختبار Internal Monologue في بيئات بها Credential Guard مفعل وحصلت على نتائج سلبية. لست متأكدًا ما إذا كان Credential Guard لا يعمل بشكل صحيح في بيئة الاختبار الخاصة بي أثناء الاختبارات الأولية، أو ربما تغير شيء منذ ذلك الحين. لقد قمت بتحديث التنفيذ للحصول على رمز خادم من AcceptSecurityContext بشكل ديناميكي والتلاعب به لتجنب فخ المصادقة المحلية، بحيث إذا فشل NetNTLMv1 بدون أمان الجلسة الموسعة، يمكن على الأقل التقاط تحدي-استجابة NetNTLMv2.

مسار التدقيق (Audit Trail)

من الجدل أن هجوم المونولوج الداخلي أكثر تكتماً من تشغيل Mimikatz لأنه لا حاجة لحقن كود أو تفريغ الذاكرة من/إلى عملية محمية. نظرًا لأن استجابة NetNTLMv1 يتم استخراجها عن طريق التفاعل مع NTLM SSP محلياً، لا يتم توليد حركة مرور شبكية، والتحدي المختار ليس مرئيًا بسهولة. لا يتم تسجيل أي حدث مصادقة NTLM ناجح في السجلات. قد تؤدي تغييرات التسجيل لخفض مستوى NetNTLM وسرقة الرموز/انتحال هوية المستخدمين الآخرين إلى إثارة المؤشرات.

إثبات المفهوم (Proof of Concept)

هذه الأداة هي إثبات مفهوم ينفذ هجوم المونولوج الداخلي بلغة C#. قد يؤدي نقل الكود إلى PowerShell إلى استبدال بعض سجلات الأحداث في مسار التدقيق بأخرى. كود إثبات المفهوم بعيد عن الكمال. المساهمات والتحسينات الإيجابية مرحب بها.

المؤلف

Elad Shamir من The Missing Link Security

شكر وتقدير

  • Matthew Bush (3xocyte) من The Missing Link Security و Shaun Williamson (AusJock) من Beyond Binary للمساعدة في تبادل الأفكار وتجميع هذا العمل
  • Moxie Marlinspike و David Hulton لخطابهما "Defeating PPTP VPNs and WPA2 Enterprise with MS-CHAPv2" في Defcon 20
  • Optiv لهجوم خفض مستوى NetNTLM
  • Bialek Joseph (clymb3r) لأداة Invoke-TokenManupilation
  • MWR Labs لأداة Incognito
  • Anton Sapozhnikov (snowytoxa) لأداة Selfhash
  • Tim Malcom Vetter (malcomvetter) للتحسينات المتعددة
  • Marcello Salvati (byt3bl33d3r) لإضافة مكتبة DLL
تنزيل الأداة