مقال 1: اختراق كل نظام ويندوز على الشبكة | الجزء الأول (LLMNR poisoning)

السلام عليكم ورحمة الله أعزائي القراء. أعتذر عن الغيبة الطويلة ولكن بإذن الله سنعود وبقوة.

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

سنبدأ في هذا المقال بشرح وتطبيق هجوم الـLLMNR poisoning للحصول على باسوورد المستخدم ومن ثم اختراقه. ولكن قبل أن نبدأ يجب وضع النقاط علي الحروف كما يقال حتى أتأكد بأنك ستكون على علم بكافة المصطلحات التي ستُذكر في هذا المقال.

ماذا تعني مصطلحات LM ,Net-NTLMv1/v2,NTLM؟

LM

هو نوع من أنواع الهاش وهو أقدم وأول نوع بدأ استخدامه في أنظمة ويندوز لتخزين الكلمات السرية، وتم إيقافه (لكنه ما زال موجودا) مع صدور Windows Vista بسبب ضعفه وسهولة كسره. ولكن كما لاحظت أنت الآن ستجده على إصدارات ويندوز XP وهذه نقطة سنعود إليها ولكن ليس الآن.

NTHash أو NTLM

هو نوع الهاش الذي يستخدم على إصدارات ويندوز الحالية لتخزين الكلمات السرية، وتستطيع أن تستخرجه من ملف الـSAM أو باستخدام أداة Mimikatz، ويطلق عليه في الغالب NTLM فقط وهو ما يسبب اختلاط المسميات دوما بينه وبين بروتوكول الـNTLM، ولذلك يفضل تسميته بالـNTHash وهذا هو ما يبدو عليه:
وللعلم فإن الخوارزمية المستخدم لتكوينه هي:

Net-NTLMv1/v2 أو NTLMv1/v2

هو البروتوكول المسئول بنفسه 😀 وهو يعمل عن طريق أنه يأخذ هاش الـNTHash ويستخدمه في إنشاء اتصال عن طريق خوارزمية challenge/response بين الطرفين، والذي يكون كالآتي (بفرض أن الطرف الأول يود تسجيل الدخول إلى الطرف الثاني):
الطرف الثاني يرسل سؤالا أو تحديا إلى الطرف الأول يكون عبارة عن رسالة عشوائية والمفترض أن يشفره باستخدام الـNTHash الخاص به، فيقوم الطرف الأول بتشفير التحدي وإرساله مع الـNTHash الخاص به فيكون الرد على الشكل الآتي:

الآن يقوم السيرفر أو الطرف الثاني بفك التشفير باستخدام هاش كلمة السر أو الـNTHash الخاص بالطرف الأول والذي أرسله إليه في الرد، وإذا كان الناتج بعد فك التشفير هو التحدي الذي أرسله إليه في البداية فيقوم بالسماح له بالاتصال. وهذه صورة للتوضيح:


الفرق بين NTLMv1 و NTLMv2

بروتوكول NTLMv2 هو تحديث NTLMv1 وهو الذي سبق شرحه ويستخدم بشكل افتراضي في إصدارات ويندوز بداية من إصدار 2000، وهو يعمل بنفس مبدأ وطريقة NTLMv1 كما شرحنا، لكن الفرق في أن التشفير يكون أقوى والرد يكون مختلفا، فشكل الرد يكون:

والفرق بين طريقة التشفير في كل واحد من باب العلم بالشيء هو:

NTLMv1

NTLMv2


والآن مقارنة بين هاشات الـNTLM أو الـNTHash والـNet-NTLM من السابق شرحه، ولكن هذه المرة من الناحية الأمنية التي تهمنا كمختبري ختراق.

  • الـNTLM Hash تستطيع استخدامها في هجمات Pass-the-hash ولكن الـNet-NTLM hashes لا تستطيع استخدامها فيها.
  • الاثنين تستطيع أن تنفذ عليهما هجمات الـBruteForcing والـDictionary attacks لتأتي بكلمة السر ولكن…
  • بداية من ويندوز 8.1 لا تستطيع أن تأتي بكلمة السر من هاش الـNTLM باستخدام أداة Mimikatz ولكن تستطيع بنفس الأداة من خلال ذاكرة الجهاز أن تأتي بالهاش ثم تنفذ هجوم Pass-the-hash.
  • مع أنك لا تستطيع أن تستخدم الـNet-NTLM hash في هجوم Pass-the-hash ولكنك تستطيع أن تستخدمه في هجوم الـsmb relay وتخترق الأجهزة الأخرى الموجودة داخل الشبكة في دقائق وهو الذي لا تستطيع أن تفعله باستخدام الـNTHash، وسوف نتناول هذا الهجوم وشرحه والتطبيق عليه بالتفصيل في المقال القادم. 😀
(ملحوظة: كل الهاشات التي ذكرت بالأعلى هي من صفحة الأمثلة علي موقع hashcat وإذا أردت فهم طريقة عمل الـNTLM بتفصيل أكثر فصفحة wikipedia كتبت شرحا أكثر من رائع لها)

والآن ما هو برتوكول الـLLMNR؟

هو اختصار لـLink-Local Multicast Name Resolution ويتلخص عمله في عدة أشياء أهمها عمل name resolution للأجهزة داخل الشبكة عندما لا يعلم الـDNS Server الإجابة وشكل الـPacket مبني على شكل باكت الـDNS Query. أعلم أنك لم تفهم شيئا، فلنبسط الأمور قليلا. 😀
مثال: عندما تكتب عنوان هوست محدد داخل الشبكة، يقوم المتصفح بسؤال الـDNS server الموجود في إعدادات الجهاز عن الـIP الخاص به، فعندما لا يعلم الإجابة فهنا يأتي دور الـLLMNR Protocol ليقوم بعمل Multicast أو بث لكل الأجهزة الموجودة علي الشبكة يسألهم فيها هل يعرف أحد هذا الجهاز، فيجيب عليه أحد الأجهزة الموجودة على الشبكة ويقول هو فلان أو يجيب الهوست نفسه إذا كان على نفس الشبكة ويقول: هذا أنا!
حتي الآن لا توجد مشكلة، صحيح؟ لكن من الناحية الأمنية؟ *إيموجي ضحكة شريرة*

استغلال الـLLMNR لصالحنا


وليكن السيناريو كالتالي، لكي يتضح الأمر إن لم تتخيله بعد:
  1. الهدف يحاول الدخول إلى الطابعة التي بداخل الشبكة والتي الهوست نيم الخاص بها لنفرض مثلا printer، إذن من المفترض أنه سيكتب //printer.
  2. الهدف يقع في خطأ إملائي وهي يكتب فيقول له الـDNS Server إنه لا يعرف هذا الهوست.
  3. يقوم جهاز الهدف الآن بعمل Multicast ليسأل الأجهزة التي في الشبكة هل يعرف أحد هذا الهوست.
  4. يقوم المهاجم بالإجابة عليه فيقول: نعم هذا أنا! والآن إذا كنت تريد الاتصال بي قم بتشفير هذا التحدي بهاش كلمة السر الخاصة بك (كما شرحنا).
  5. يقوم جهاز الهدف بالرد بالـNet-NTLM hash (والذي هو الرد كما شرحنا من قبل).
  6. يقوم المهاجم بحفظ الهاش ثم يقطع الاتصال. 😀
هذا هو ما يسمى بهجوم الـLLMNR Poisoning. والآن كيف نقوم به؟
هناك العديد من الأدوات التي تمكننا من تنفيذه، وحتى أنه يوجد موديولز خاصة به على فريم وورك Metasploit  (auxiliary/spoof/llmnr/llmnr_response)، ولكننا سنستخدم أداة Responder بسبب قوتها وسهولة استخدامها ولأننا بشكل أو بآخر سنحتاجها في المقالات القادمة.
تستطيع أن تحملها من هنا وتثبتها بالطريقة التقليدية إن لم تكن لديك من الأساس. والآن نقوم بتعديل ملف Responder.conf لنوقف الـHTTP Server بضبط المتغير لـOff بدل On حتى نضمن أنه لن يحصل تداخل ونحصل على الهاش بسبب شيء آخر 😉 (سنوضحه بعد قليل) وستجد هذا الملف بداخل المسار:

فيكون شكل بداية الملف كالتالي:


الأن سنقوم بتشغيل الأداة عن طريق الأمر:

وتستبدل wlan0 بالـinterface التي أنت والهدف عليها والآن لنلعب. 😀


الهدف هذه المرة هو ويندوز 7


كما ترى فإن هذا هو ويندوز 7 الهدف والأداة تعمل بالخلفية.
الآن كل المطلوب هو الانتظار حتى يحاول الجهاز الهدف الدخول إلى جهاز آخر داخل الشبكة غير موجود أو أي شيء مثل هذا.
ولمحاكاة هذا سأكتب أي اسم جهاز عشوائي للدخول إليه، وتستطيع عمل ذلك بكتابة \\ ومن ثم اسم عشوائي سواء داخل الـexplorer الخاص بالملفات أو حتى داخل متصفح الـInternet Explorer، أنا شخصيا سأكتبه داخل Run، ومن ثم ستجد أداة Responder تخبرك أن الجهاز الهدف يعمل Multicast وتأتي بالهاش كما شرحنا فيكون الأمر بالشكل الآتي:


كما ترى في جهاز الهدف فقد ظهر خطأ، أما نحن فلدينا الآن كل ما نريده. 😀
أداة responder تقوم بعمل ملف لكل جهاز تلتقط منه شيئا وتحفظ فيه المعلومات المهمة وهي الملفات التي ستجدها داخل المسار.

فنقوم بعرض الملف فنجد الهاشات كالآتي:


الآن سنقوم بعمل crack للهاش لنأتي بكلمة السر وسنستخدم أداة John The Ripper لهذا كالآتي:


كما ترى فإن كلمة السر هي 1234567890 واليوزر إذا لم تلاحظ من قبل هو win7lab، والآن نستطيع أن نستخدم موديول psexec من فريم وورك metasploit لاختراق الجهاز، ومع أنه أمر سهل بعد الإتيان بكلمة السر فإنني سأوضحه هذه المرة لمن لا يعلم.
نفتح الميتاسبوليت ونكتب الأوامر المعتادة، ولكن بما أن صورة أفضل من ألف كلمة فهذا ما ستفعله:


لا، لن أقول "تم اختراق الهدف بنجاح". 😀




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

ولكن إن كنت في شبكة عادية، ففي الغالب لن تكون هذه الطريقة ذات جدوى بهذا الشكل، إذن فهي تحتاج إلى بعض التطوير. 😀

هذا التطوير يرجع إلى تفكيرك خارج الصندوق كما يقال، فكلما كانت الفكرة إبداعية أكثر خرجت بطرق أكثر، والآن سأقول لك بعض التطويرات للهجوم حتى لا تنتظر المستخدم أن يخطئ.
كما ترى فإن الفكرة كلها في الـAuthenticate، لذلك فنحن نحتاج إلى جعل المستخدم يتصل بنا تلقائيا. فعلى سبيل المثال، تستطيع أن تنشئ صفحة html وتضع فيها تاج img الخاص بالصور وتضع السورس هو صورة من على جهازك سواء كانت موجودة أو لا، أي جهاز سيفتح هذه الصفحة سيتصل بجهازك (في أغلب الحالات).

تطبيق عملي سريع 😀


كما ترى فالأمر أصبح أسهل، ولكن هنا تحولت إلى مشكلة أنك تحتاج أن تجعل المستخدم يفتح الصفحة، فأصبحت تحتاج الأن إلى تدخُّل من المستخدم، لكن إذا كنت ترى الأمر هكذا فأنت لم تفهم الفكرة بعد. :3

استخدم سكربت LANs.py أو أداة Bettercap أو أي أداة تتيح لك تنفيذ هجوم MITM وحقن أكواد HTML داخل الـTraffic الخاصة بالهدف، فتقوم بحقن تاج الـimg وتحصل علي نفس النتيجة بدون أي تدخل من المستخدم. الأمر مجرد أنه يتصفح فقط! 😀

الأن كل هذا كما ترى داخل الشبكة، فهل توجد طريقة أحصل بها على الـNTLM hashes من خارج الشبكة؟ 😀

نعم هنالك طريقة، والعديد من الشركات والخبراء الأمنين حذروا من الهجمات المماثلة، لكن هذا سيكون موضوع مقالة أخري في هذه السلسلة سنتكلم فيها عن العديد من الخدع التي نستطيع عمل هذا الأمر من خلالها، ولكن حتى وقتها هل تعلم أن كتابة رسالة email بالـ html ووضع فيها تاج img السابق ذكره، فعند فتح هذه الرسالة من تطبيق الـOutlook فإن الجهاز سيتصل بك كما حدث منذ قليل وتستلم أنت الهاش؟ 😀 ولكن كتابة رسالة html ليس سهلا الآن، فقليل من الخدمات أصبح يسمح لك بهذا، ولكن هذا ليس موضوعنا الآن، لنترك الحديث عنه ونشرحه في المقالة الخاصة به. 😀

والآن…

كنت أريد أن أشرح في هذا المقال أيضا كيف أن مجرد فتحك لمتصفح Internet Explorer يتسبب في أختراقك بدون فعل أو فتح أي صفحة، لكن بما أن المقال أصبح طويلا ومعلوماتيا كما ترى فسوف نتركه للمقال القادم، إذ إنني لا أستطيع أن أمر على الأمر سريعا.

أتمني أن تكونوا قد استفدتم من هذا المقال. أراكم في المقالات القادمة وأعدكم أن ما قيل في هذه المقالة لا يقارن بما سيقال في باقي السلسلة، فهذه كانت مجرد مقدمة ولا يزال هناك العديد من البرتوكولات واستغلالها أجمل بكثير. 😀