مؤتمر DEFCON 20. التقاط في 60 ثانية: من حساب ضيف إلى مسؤول مجال Windows. الجزء 1

مرحبًا ، أنا زاك فيسيل ، سأتحدث بسرعة ، إذا كان سريعًا جدًا ، يمكنك إبطائي. خلال النهار ، أنا مغرم ، وفي الليل أنا دي جي ومصور ، يمكن العثور على تويتر باستخدام اللقب @ zfazel. يسألني الناس دائمًا عن الدبلومات. لست من هؤلاء الأشخاص الذين أدرجوا مجموعة من الدرجات العلمية ، لذلك من الأفضل أن تحكم علي بناءً على هذا العرض التقديمي ، وليس وفقًا لعدد الشهادات التي لدي.



تعليق بلا خجل: لدينا منافسة قليلة هنا ، الآن شباب شيكاغو يسيرون على المسار 4 ، وكلنا من شيكاغو ، وسرعان ما نرفع يديك من هنا من شيكاغو. لذلك ، أعتقد أنني فقدت الرهان. سأكون DJ في حوض السباحة الليلة ، لذلك إذا كنت مجانيًا ، فمرحبًا بك في المعركة مع Kate Myers ، وبعد ذلك سأعود إلى شيكاغو لحضور مؤتمر آخر للقراصنة. في العام الماضي ، حضر 500 شخص ، ونأمل هذا العام أن يكون هناك المزيد من الضيوف. سيكون هناك 312 من رفاقي أيضًا ، ويمكن العثور على مزيد من المعلومات حول هذا المؤتمر على موقع thotcon.org.

لذلك ، حتى لا نضيع الوقت: سنتحدث عن بديل لهجوم Pass-the-hash يسمى NTLM-Relay ، حول مجموعة جديدة من الأدوات لنقل بروتوكول النقل عبر بروتوكول لطلبات مصادقة NTLM ، حول طرق جديدة للمصادقة التلقائية للعميل الأغراض التي يمكنك استخدام تمرير التجزئة.
لنبدأ بـ NTLM ، بالنسبة لأولئك الذين لا يعرفون ماهية NTLM 101 ، يمكن ذكر النقطة بأكملها في أقل من 10 دقائق. إذن ما هو LM / NTLM؟ إنه مستودع كلمة مرور وبروتوكول مصادقة شبكة تم تطويره بواسطة Microsoft للاستخدام على Windows. اللعنة ، شرائح بلدي خارج الترتيب! لذلك ، تجزئة LM عبارة عن تنسيق لتخزين كلمات مرور المستخدم التي يقل طولها عن 15 حرفًا ، وتنقسم كلمة المرور إلى جزأين من 7 بايت ويتم تحويلها إلى حالة كبيرة. آمل أن تتمكن من رؤية شكل علامات LM و NTLM. لن أضيع الوقت في تحديد مدى سوء وضعيفة LM ، أنت تعرف كل هذا ، وإذا لم يكن كذلك ، غوغل ذلك.



عادةً ما يكون تجزئة NTLM حساسًا لحالة الأحرف ، وله طول غير محدود ، ولا يتم تقسيمه إلى مجموعات من الأحرف ، وهو أقوى قليلاً من LM ، لكنه أيضًا لا يخلو من المشكلات. الآن سأتحدث عنها. مشكلة عدم الحصانة الأولى هي احتمال حدوث هجوم Pass-the-hash ، والذي يسمح للمتسلل بتسجيل الدخول إلى خادم بعيد يستخدم مصادقة العميل استنادًا إلى بروتوكولات NTLM / LM. آسف ، يا شباب ، لقد قمت بخلط الشرائح ، لقد صنعتها منذ 5 دقائق ، باختصار ، تمتص LM.

إذن ما هو مصادقة NTLM؟ هذا هو مصادقة الشبكة للخدمات عن بعد. إنها ضرورية لإثبات أنك حقا ما تسمونه بنفسك. تعمل الخدمة عادةً على جهاز كمبيوتر منفصل ، حيث تريد الوصول إلى الموارد التي توفرها الخدمة ، على سبيل المثال ، خادم الملفات هو خدمة ، والملفات هي موارد. في غضون دقيقة سننظر في ماهية هذه الخدمات.

قد نشعر بالارتباك عندما نتحدث عن NTLM v1 أو v2 أو NTLM 2 ، سواء تم توقيعه أو عدم توقيعه ، لذلك دعونا ننتقل بسرعة عبر مصادقة NTLM. أثناء المصادقة ، يتم إرسال 3 أنواع من الرسائل.



النوع الأول هو طلب العميل إلى الخادم لإنشاء جهة اتصال ، مثل "أريد المصادقة". ترى الحزمة التي تم نقلها إلى قطع ، والتي استولت عليها Wireshark ، هناك علامات لدعم المصادقة واسم محطة العمل واسم المجال الخاص بها.

رسالة النوع 2 هي استجابة خادم. إذا لاحظت من رسالة Type 1 التي لم نكن نعرفها بعد من هو هذا المستخدم ، فقد طلب فقط الاتصال بالخادم ويريد معرفة ما إذا كان الطلب مدعومًا أم لا.



ترى هنا استجابة خادم NTML Challenge كمجموعة من الأرقام تتغير في كل مرة. تعرض لقطة الشاشة إجابة ثابتة يمكن استخدامها لإنشاء "طاولات قوس قزح". لذلك ، يستجيب الخادم برسالة من النوع الثاني: "هذا هو ما أؤيده ، وهنا اسم المجال الخاص بي ، وهنا اسم الخادم الخاص بي". تستخدم هذه الإجابة "لملح" تجزئة كلمة المرور الخاصة بك ، لذلك في كل مرة يتم الحصول على إجابة فريدة ، ولا يمكنك تكرارها مرارًا وتكرارًا بنفس الطلب.

اكتب رسالة 3 - هذه هي رسالة مصادقة العميل.



هذا هو استجابة الخادم ، الذي تم تجزئته بتجزئة كلمة المرور لتجزئة NTML جنبًا إلى جنب مع اسم المستخدم واسم محطة العمل واسم المجال ومفتاح الجلسة الخاص به ، إذا قمت بتوقيع الجلسة.

هذا هو ما هو إصدار NTML 1. يشبه الإصدار 2 من NTML ذلك إلى حد كبير ، ولكن هناك معلمات إضافية مضافة في كلمة مرور الاستجابة وتدعو العميل من أجل الحماية من استخدام "جداول قوس قزح" ، أي أن العميل يستخدم عنصر العشوائية ضدهم.

شيء آخر نحتاج إلى التحدث عنه هو مصادقة Windows المدمجة. هناك حاجة لذلك في كل مرة لا تضطر فيها إلى إعادة إدخال النظام بكلمة مرور من أجل استخدام الموارد والخدمات. إذا كنت متصلاً بخادم مجال أو خادم ويب داخلي ، فإن Windows لا يطلب منك إدخال كلمة مرور ، بل يطلب فقط واجهة برمجة تطبيقات ويتلقى معلومات منه يجب على النظام استخدامها للمصادقة.
في سياق الأمان المحلي ، يحمي HTTP باستخدام مناطق أمان موثوق بها أو مواقع موثوق بها أو مواقع محلية عن طريق التحقق من اسم مجال مكون من كلمة واحدة فقط. سأحاول تحديث ذاكرتك بسرعة. يبحث المجال المكون من كلمة واحدة أولاً عن اسم DNS على خوادم DNS ، ثم يتحقق من مضيفه أو اسم مضيف DNS ويمرره مرة أخرى. يقوم بفحص بنية اسمك الكامل ثم يقوم بتنفيذ NBNS ، وهو طلب البث لاسم المجال هذا. في الواقع ، يسأل الشبكة: "مهلا ، أنا أبحث عن اسم ، هل تعرف شخصًا يحمل هذا الاسم؟" ، توزيع هذا الطلب عبر الشبكة المحلية في وضع بث الوسائط المتعددة MBNS.

كما قلت ، نظرًا لأننا نستخدم بروتوكول SMB في كل مكان ، فلا توجد قيود ، لدينا مصادقة تلقائية باستخدام SMB. هذا يسبب بعض المشاكل.

النظر في طريقة تمرير التجزئة. يمكن أن نرى من البروتوكولات أن NTML لا يستخدم كلمة المرور الأصلية للمصادقة ، لذلك كل ما نحتاج إليه هو تجزئة NTML نفسه. يمكننا الوصول إلى تجزئة NTML باستخدام أدوات Windows المختلفة ، أي سحب هذه التجزئة من التخزين المحلي أو من الذاكرة. تم وصف كل ذلك في خطب أخرى ، وسأذكرك بسرعة جوهر المشكلة لإظهار الاختلافات بين الطريقتين.
والحقيقة هي أنه عادةً ما تحتاج إلى الوصول إلى مستوى مسؤول النظام المحلي بالنسبة إلى Pass-the-هاش ، لأنه مع حساب ضيف لن تتمكن من الوصول إلى التخزين المحلي أو الذاكرة المحلية.

لذا ، ما هو ترحيل NTLM وكيف يختلف عن طريقة تمرير التجزئة؟ كانوا يقولون لي باستمرار: "آه ، أنت تتحدث عن" تمرير التجزئة "! ، وأجيب:" لا ، أنا أتحدث عن ترحيل NTLM! ". الفرق هو أن NTLM Relaying لا يتطلب امتيازات المسؤول للوصول إلى الشبكة أو النظام. في الواقع ، يمكنك الاتصال بالشبكة من الداخل أو الخارج وبدء العمل كضيف. لا توجد بيانات اعتماد ، ولا يمكن الوصول إلى النظام ، فقط يتم التصديق على الطلب إذا عدت إلى أنواع الرسائل أعلاه 1،2،3. لا يوجد أي تحقق عندما يستجيب المضيف لطلبك ويتأكد من أنك أنت.
ما نقوم به هو إنشاء خادم احتيالي لتلقي طلبات المصادقة ثم نقلها إلى الخادم الهدف.

دعونا نستمع إلى القصة حتى تفهم جوهر المشكلة. في عام 1996 ، عندما اكتشف Dominic Brezinsky ثغرة أمنية في عملية المصادقة باستخدام بروتوكول الوصول إلى CIFS ، الإصدار الأول من بروتوكول SMB. بعد ذلك ، تحدثوا أولاً عن إمكانية استخدام ترحيل NTLM. في عام 2001 ، تمكنت NTLM من العثور على ثقب في SMB. أولاً ، قال موظف Veracode ، كريستيان ريو (المعروف أيضًا باسم Dildog) في مؤتمر DefCon ، ثم قام القراصنة Josh Bushbinder (المعروف أيضًا باسم Sir Dystic) بنشر رمز استغلال يعمل مع هذه الثغرة الأمنية. استخدمنا بروتوكول Telnet ونقاط ضعف مستعرض IE ، حيث يمكنك فقط كتابة telnet: // ip والمصادقة تلقائيًا.



بعد ذلك ، بدأ استخدام أسلوب ترحيل NTLM لإعادة توجيه طلبات SMB إلى مضيفين آخرين أو إلى مضيفه الخاص. استمر هذا حتى نوفمبر 2008 ، عندما قام Microsoft Windows بتصحيح الثقوب حيث يمكنهم ، مما يمنع طلب مصادقة NTLM من العودة باستخدام التصحيح MS08-068.

وبالتالي ، فقدنا القدرة على إرجاع طلب مصادقة إلى مضيفنا ولم نتمكن من إعادة توجيهه إلا إلى مضيفين آخرين بسبب ميزات تصميم البروتوكول. في عام 2008 ، أدلى رجل تحت اسم Grutz ببيان عن وفاة DefLon NTLM. أعتقد أن هذا كان أحد أفضل العروض في السنوات الأخيرة ، لأنه كان له تأثير كبير على بيئة الشركات.



أطلق على صكه اسم Pokemon Squirtle ، والتكنولوجيا - "قرد في الوسط" عن طريق القياس مع "رجل في الوسط". سمحت هذه الأداة بتنفيذ ترحيل NTLM عبر HTTP كما عملت بشكل جيد مع SMB ، حيث استقبلت طلبات المصادقة.



لقد التقطت لقطة الشاشة هذه منذ يومين ، ولا يزال تطوير تطبيق Squirtle مستمرًا. قررت أن تكون على دراية بكافة نقاط الضعف هذه ، التي نتحدث عنها مرارًا وتكرارًا ، لأنه لا يمكن حلها بأي شكل من الأشكال وإظهار نفسها في كل مكان. أنا أنتمي إلى بيئة الشركة ، وبالتالي فإنني أدرك جيدًا المشكلة التي أشكو منها دائمًا - أن المواقع لا تقوم بتشفير SSL لطلبات المصادقة ، تمامًا كما لا تقوم بتشفير ملفات تعريف الارتباط الخاصة بها. في عام 2010 ، تم إصدار ملحق متصفح Firefox يسمى Firesheep.

من المحتمل أن تكون معتادًا على هذه الأداة لاعتراض ملفات تعريف ارتباط HTTP غير المشفرة لمواقع الويب الشائعة وجلسات العمل الأخرى مع المواقع عبر شبكة Wi-Fi أو استنشاق الشبكة ، مما يجعلك تمثل مستخدمين آخرين.



سألت نفسي ، من أين أحصل الناس على الرغبة في إنشاء مثل هذه الأدوات. اتضح أن الأمر كله يتعلق بسهولة الاستخدام. من السهل بدرجة كافية إنشاء تطبيق يتيح لك انتحال شخصية شخص آخر. لذلك قررت أن أبدأ من نفس الشيء وأقوم بإنشاء تطبيق يسمح باستخدام طريقة ترحيل NTLM لإظهار للناس أنه بسيط مثل Firesheep.



بدأت العمل على ترحيل NTLM لمعرفة كيف يمكن دعم بروتوكول متعدد. لقد تحدث الكثير من الناس عن الاحتمال النظري لمثل هذا الدعم ، لكن لا أحد وضعه موضع التنفيذ. لذلك ، كان هدفي هو إنشاء Firesheep لـ NTLM.
قررت أن أبدأ في تعلم روبي لأنني كنت أصلاً أدمج استغلالي في Metasploit. في عام 2012 ، أردت معالجة هذا الموضوع في مؤتمري Black Hat و DefCon ، لكن تم رفض تقريري. لم يتم رفض خطاباتي فحسب ، لقد تلقيت رسالة بريد إلكتروني مزيفة قبلت بها DefCon تقريري. اعتقد أحد الأصدقاء أنه سيكون من المضحك أن يتصيدني ، إنه غبي. كان لديه صديق هنا تمت الموافقة على أدائه ، وصادق صديقي وأرسل لي محتويات رسالة البريد الإلكتروني الخاصة به. لم ينتبه إلى العنوان الذي قرأ "From Nikita" والذعر ، مدركًا أنني يجب أن أتحدث في DefCon خلال ساعة ونصف ، لكنني تلقيت خطابًا حقيقيًا برفض.

هل تعتقد أن هذا ينتهي القصة؟ لا ، بعد ثلاثة أسابيع أخبرني نيكيتا: "مهلا ، لدينا افتتاح يوم الأحد ، شخص ما رفض المشاركة ، هل تريد التحدث بدلاً منه؟" اعتقدت أنه جيد ، ولكن بعد ذلك أدركت أنه لم يكن أمامي سوى وقت قليل جدًا قبل الأداء ، وبدأت في الترميز كالمجانين ، في محاولة لإنهاء كل شيء في الوقت المحدد.

إذن ما هي مشاكلي؟ أولاً ، لا تستطيع الأدوات الأجنبية أداء وظيفة Pentester التي كنت بحاجة إليها ، فهي تفتقر إلى حد كبير إلى البروتوكولات المختلفة التي يمكنها إرجاع طلبات المصادقة. معظم البروتوكولات المتعلقة باستخدام SMB و HTTP ، ولم يدعم أي منها LDAP لمصادقة MySQL ، أو على الأقل اختبار سطح المكتب البعيد ، VPNs وما شابه ذلك.

مشكلة أخرى هي أنهم جميعا أحالوا كل طلب إلى نفس الوجهة. أي أننا تلقينا بيانات المستخدم وحسابات الكمبيوتر وأرسلنا كل المصادقة إلى غرض واحد ، لذلك لم نتمكن من تحديد هوية المستخدمين قبل المصادقة ، أي قبل استلام رسالة من النوع 3. إذا كنت تتذكر هذه الرسائل من النوع 1،2،3 ، فإن رسالة من النوع 2 هي استجابة الخادم. إنها فريدة لكل جلسة ، ولا أعرف من هؤلاء المستخدمين حتى يرسلون رسالة من النوع 3 الأخير ، ولا أعرف أي إجابة ومن أي خادم هو المستخدم. كنت مهتمًا بعدم وجود أدوات من شأنها القيام بذلك ، لذلك ألقيت نظرة فاحصة على بروتوكولات مثل SMB و HTTP ، وبعد ذلك سنتحدث عن ذلك بمزيد من التفاصيل.

لا يزال Windows 8 و Windows 2012 يدعمان NTLM افتراضيًا. هذا أمر مخيف لأننا نعلم بضعف هذه البروتوكولات ، لكن NTLM لم تختف. لذلك ، نحن ، كمصارعين ، نبلغ المنظمات أنه يجب عليها حماية نفسها من مثل هذه الهجمات.
لذلك ، أردت حل هذه المشكلة وإنشاء أداة تسمى ZackAttack. أعلم أن الأمر يبدو قبيحًا ، لكننا مررنا بمجموعة كاملة من الأسماء ، وأنا شخصيا أحب آخر واحد - "NTLMv2؟ الكلبة من فضلك ... ".



ما هو موجود في هذه الأداة؟ سأنتقل سريعًا إلى هذه الشرائح ، لأنني أعتقد أنك استمتعت بالفعل بما يكفي. يتكون ZackAttack من عدة مكونات مختلفة ، وسوف نتحدث عن كل منها وكيفية ارتباطها ببعضها البعض.

بادئ ذي بدء ، هناك خادم HTTP SMB - هذا هو خادم احتيالي يقبل طلبات المصادقة. لذلك يستهدف العملاء هذا الخادم ، ويوثقهم ، ويحتفظهم بالمصادقة. بعد ذلك ، لدينا مجموعة من القواعد للتشغيل التلقائي.

لدينا عملاء لمثل هذه عمليات الاستغلال التلقائي ، وكذلك واجهات برمجة التطبيقات التي يمكننا ربطها مع أي تطبيق تابع لجهة خارجية يقوم بنقل طلبات ترحيل NTLM.



أخيرًا ، لدينا جيل من الحمولات التي تجبر العملاء على المصادقة تلقائيًا لنا.

ما هي الخوادم الاحتيالية؟ أولاً ، يقومون بمصادقة المستخدمين وحفظه لنا ، وسأخبرك لاحقًا كيف نستخدمه.



نحن بحاجة إلى كل هؤلاء الأشخاص للحفاظ على حالة المصادقة الخاصة بهم. هناك العديد من الأدوات التي تعمل على تعطيل المستخدمين بعد أول مصادقة ناجحة ، لكن أداة ZackAttack الخاصة بنا تحافظ على مصادقة المستخدمين لأطول فترة ممكنة. على Windows LAN لـ SMB ، هذا حوالي 30 مرة قبل قطع الاتصال. لذلك ، نحن بحاجة إلى معرفة من هو هذا المستخدم ، مع الحفاظ على مصادقته.

طلب المصادقة الأول هو استدعاء ثابت من النوع 112233. يعرف من يشاركون في عملية الاختبار أن هذه مهمة من نوع "جداول قوس قزح". كما قلت ، نحن بحاجة إلى معرفة من هو هذا المستخدم ، لكننا لا نعرف ذلك ، حتى نصل إلى رسالة النوع 3 ، لذلك نرسل مجموعة من المكالمات. أسمي هذا "عنصر الزهايمر" عندما ينسى النظام من هو المستخدم ويطلب منه المصادقة في كل مرة للاتصال دون إغلاق الجلسة.

سبب قيامنا بذلك هو أن HTTP و WPAD والطلبات الأخرى لا تدعم دائمًا ملفات تعريف الارتباط ، بالإضافة إلى أن تعريف SMB عبر IP أو منفذ المصدر لا يعمل إذا حاول القيام بذلك عن بُعد عبر الإنترنت.

لذلك ، بالنسبة لخادم HTTP ، نستخدم إعادة التوجيه 302 باستخدام المعلمة Keep-Alive ، والتي تتيح لنا الحفاظ على الجلسة مفتوحة أثناء إغلاق المقبس ، وبعد المصادقة ، نعرف من هم ونعرف ذلك حتى نهاية هذه الجلسة.

مع SMB كان الأمر أكثر صعوبة ، اضطررت إلى كتابة خادم SMB مخصص ، إنه عربات التي تجرها الدواب قليلاً ، لكنه يعمل على أي حال. لن أتطرق إلى آلية المصادقة الخاصة ببروتوكول SMB ، لأن الأمر سيستغرق بضع ساعات ، لذلك سأشرح بإيجاز. بعد أن يتلقى الخادم طلب المصادقة ، يبدو أنه ينسى من هو هذا المستخدم ويقول: "أوه ، مرحباً ، سعدت بلقائك!" "رائع ، أريد الاتصال!" "انتظر ، ومن أنت؟" ويتطلب مرة أخرى طلب مصادقة.

لذلك ، نحن بحاجة إلى تلقي طلبات المصادقة التي تأتي إلى خوادم HTTP و SMB. يسأل الكثير من الناس كيف ننفذ هجوم "رجل في الوسط". هناك عدة طرق مختلفة للحصول على مصادقة الأشخاص من خلال خادمنا ، ثم إرسالهم للقيام بأشياء أخرى. لذلك ، فكر في الحمولة الصافية في أداتنا.

بادئ ذي بدء ، هذا هو WPAD - بروتوكول لتكوين الوكيل التلقائي ، والذي يسمح لك بتحديد موقع ملف التكوين. على نظام Windows ، عندما تحاول الاتصال ، كما تعلمون ، تظهر نافذة بها علامة اختيار صغيرة "تعثر تلقائيًا على إعدادات الاتصال الخاصة بي" لتنشيط WPAD. يرسل هذا البروتوكول طلبات التحقق من عمليات البث DNS والشبكات ، بحيث يمكنك مزيفة هذه الطلبات والرد عليها.

بشكل افتراضي ، في Windows ، سيقوم الكمبيوتر تلقائيًا بمصادقة خادم WPAD عبر HTTP باستخدام بيانات اعتماد المستخدم الحالية.

18:00 دقيقة

مؤتمر DEFCON 20. التقاط في 60 ثانية: من حساب ضيف إلى مسؤول مجال Windows. الجزء 2



شكرا لك على البقاء معنا. هل تحب مقالاتنا؟ تريد أن ترى المزيد من المواد المثيرة للاهتمام؟ ادعمنا عن طريق تقديم طلب أو التوصية به لأصدقائك ، خصم 30٪ لمستخدمي Habr على تناظرية فريدة من خوادم الدخول التي اخترعناها لك: الحقيقة الكاملة حول VPS (KVM) E5-2650 v4 (6 Cores) 10GB DDR4 240GB SSD 1 جيجابت في الثانية من 20 $ أو كيفية تقسيم الخادم؟ (تتوفر خيارات مع RAID1 و RAID10 ، ما يصل إلى 24 مركزًا وما يصل إلى 40 جيجابايت من ذاكرة DDR4).

VPS (KVM) E5-2650 v4 (6 مراكز) 10GB DDR4 240GB SSD بسرعة 1 جيجابت في الثانية حتى الربيع مجانًا عند الدفع لمدة ستة أشهر ، يمكنك طلبها هنا .

ديل R730xd 2 مرات أرخص؟ لدينا فقط 2 x Intel Dodeca-Core Xeon E5-2650v4 128GB DDR4 6x480GB SSD بسرعة 1 جيجابت في الثانية 100 TV من 249 دولارًا في هولندا والولايات المتحدة الأمريكية! اقرأ عن كيفية بناء البنية التحتية فئة باستخدام خوادم V4 R730xd E5-2650d تكلف 9000 يورو عن بنس واحد؟

Source: https://habr.com/ru/post/ar436472/


All Articles