CVE-2020-1350 (SIGRed) - استغلال DoS لنظام DNS في ويندوز
يعود الفضل في اكتشاف هذه الثغرة بالكامل إلى Check Point Research (@_cpresearch_) الذين قدّموا تقريراً مذهلاً عن هذه الثغرة (تحية إلى @sagitz_ على المنشور)
يمكن العثور على تقريرهم هنا.
تمت كتابة هذا الاستغلال بواسطة @maxpl0it
ملخص سريع لكيفية عمله:
- على الشبكة المحلية (LAN)، تقوم بإطلاق طلب DNS (وبشكل أكثر تحديداً، طلباً لسجلات SIG) لنطاق خبيث (على سبيل المثال 9.evil_domain.com)
- يتم إرسال هذا الطلب إلى خادم DNS الخاص بخادم ويندوز المُعرَّض للثغرة
- يرسل الخادم المُعرَّض للثغرة طلباً إلى أي خادم DNS يعيد توجيه الطلبات إليه (عادةً عناوين Google القياسية)
- يستجيب خادم Google DNS بخوادم الأسماء (nameservers) الخاصة بالنطاق الخبيث
- بعد ذلك يعمل الخادم المُعرَّض للثغرة كعميل DNS ويرسل طلباً إلى خادم DNS الخبيث
- يستجيب الخادم الخبيث بحمولة (payload) تسبّب تجاوز سعة رقم بحجم 2 بايت، مما يؤدي إلى تخصيص ذاكرة أصغر من المطلوب
- يتم نسخ التوقيع (signature) وتنهار الأمور (بالطبع)، مما يسبّب انهيار خادم DNS الخاص بالخادم المُعرَّض للثغرة
الإعداد العام:
- يتطلب هذا الاستغلال إعداد نطاق مع خوادم أسماء (nameservers) خاصة به تشير إلى الخادم الخاص بك.
- قم بإعداد الخادم وتشغيل هذا السكربت. سوف يستمع على المنفذ 53 عبر كلٍ من TCP وUDP
- إذا حصلت على خطأ يفيد بأن المنافذ مشغولة، فاستخدم netstat -pa لمعرفة ما الذي يستمع على منافذ النطاق (غالباً systemd-resolved) وقم بتعطيله وإيقافه. إذا لم يكن هناك شيء يستمع على الخادم، فتأكد من إنهاء جميع نسخ هذا السكربت قبل إعادة التشغيل.
على سبيل المثال، قمت بتشغيل python sigred_dos.py ibrokethe.net لبدء خادم DNS الخبيث
إعداد الاختبار:
إذا كان لديك وصول إلى خادم ويندوز، يمكنك تكوين موجّه شرطي (conditional forwarder) لتوجيه ibrokethe.net إلى عنوان IP الخاص بالمضيف الذي يشغّل السكربت. وهذا يتجاوز فعلياً الخطوتين 3 و4 في الملخص.
التنفيذ:
من أجل تفعيل الثغرة على خادم DNS في ويندوز، قم بتشغيل nslookup -type=sig 9.your_domain_name_here dns_server_to_target
النطاق الفرعي '9' مطلوب بالفعل هنا. لست بحاجة إلى إجراء أي تغييرات على سجلات النطاق لهذا الغرض لأن السكربت يتعامل مع ذلك.
على سبيل المثال: قمت بتشغيل nslookup -type=sig 9.ibrokethe.net 127.0.0.1 حيث كنت أشغّل هذا على الخادم.