
rdpscan لثغرة CVE-2019-0708 bluekeep
هذه أداة مسح سريعة وغير متقنة لثغرة CVE-2019-0708 في سطح المكتب البعيد من مايكروسوفت.
حاليًا، هناك حوالي 900,000 جهاز على الإنترنت العام معرض لهذه الثغرة،
لذا من المتوقع ظهور دودة قريبًا مثل WannaCry و notPetya. لذلك، امسح شبكاتك
وقم بتصحيح (أو على الأقل، تفعيل NLA) على الأنظمة المعرضة للخطر.
هذه أداة سطر أوامر. يمكنك تحميل المصدر وتجميعه
بنفسك، أو تحميل أحد الملفات الثنائية المجمعة مسبقًا لـ
ويندوز أو ماك من الرابط أعلاه.
هذه الأداة مبنية بالكامل على تصحيح rdesktop من https://github.com/zerosum0x0/CVE-2019-0708.
لقد قمت ببساطة بتقليص الكود حتى أتمكن من التجميع بسهولة على ماك وويندوز،
بالإضافة إلى إضافة القدرة على مسح أهداف متعددة.
الحالة
هذه الأداة عمرها بضعة أيام فقط وهي تجريبية. ومع ذلك، فأنا أختبرها عن طريق مسح
الإنترنت بالكامل (بمساعدة masscan)، لذا أعمل على حل العديد من المشاكل
بسرعة كبيرة. يمكنك محاولة الاتصال بي على تويتر (@erratarob) للمساعدة/التعليقات.
- 2019-05-38 - أوصاف أفضل لنتائج المخرجات، بالإضافة إلى توثيق معناها (انظر أدناه).
- 2019-05-27 - إصدار الملفات الثنائية لويندوز وماك (انقر على الشارات أعلاه).
- 2019-05-26 - إصلاح مشاكل الشبكة في ويندوز
- 2019-05-25 - لينكس وماك يعملان بشكل جيد، ويندوز لديه بعض أخطاء الشبكة
- 2019-05-24 - يعمل على لينكس وماك، ويندوز لديه بعض أخطاء التجميع
- 2019-05-23 - يعمل حاليًا على ماك داخل XCode
الاستخدام الأساسي
لمسح شبكة، قم بتشغيله كما يلي:
rdpscan 192.168.1.1-192.168.1.255
ينتج عن هذا واحدة من 3 نتائج لكل عنوان:
- SAFE - إذا تم تحديد أن الهدف مصحح أو على الأقل يتطلب CredSSP/NLA
- VULNERABLE - إذا تم تأكيد أن الهدف معرض للخطر
- UNKNOWN - إذا لم يستجب الهدف أو كان هناك فشل في البروتوكول
عندما لا يوجد شيء في عنوان IP مستهدف، كانت الإصدارات الأقدم تطبع
الرسالة "UNKNOWN - connection timed out". عند مسح شبكات كبيرة،
ينتج عن هذا حمولة زائدة من المعلومات عن أنظمة لا تهمك.
لذلك، الإصدار الجديد لا ينتج هذه المعلومات افتراضيًا إلا إذا أضفت
-v (للإسهاب) في سطر الأوامر.
يمكنك زيادة سرعة المسح للشبكات الكبيرة عن طريق زيادة
عدد العمال:
rdpscan --workers 10000 10.0.0.0/8
ومع ذلك، على جهاز الكمبيوتر الخاص بي، ينتج حوالي 1500 عامل فقط،
بسبب قيود النظام، بغض النظر عن مدى ارتفاع هذه المعلمة.
يمكنك زيادة السرعة أكثر باستخدام هذا مع
masscan، كما هو موصوف في القسم الثاني أدناه.
تفسير النتائج
هناك ثلاثة استجابات عامة:
- SAFE - يعني أن الهدف ربما تم تصحيحه أو غير معرض
للثغرة.
- VULNERABLE: يعني أننا أكدنا أن الهدف معرض
لهذه الثغرة، وأنه عندما تضرب الدودة، فمن المرجح أن
يصاب.
- UNKNOWN: يعني أننا لا نستطيع التأكيد بأي من الاتجاهين، عادةً لأن
الهدف لا يستجيب أو لا يعمل عليه RDP، وهو
الغالبية العظمى من الردود. أيضًا، عندما تكون الأهداف
خارج الموارد أو تواجه مشاكل في الشبكة، سنحصل على
الكثير من هذه. أخيرًا، أخطاء البروتوكول مسؤولة
عن الكثير.
بينما الاستجابات الرئيسية الثلاث هي SAFE و VULNERABLE و UNKNOWN،
تحتوي على نص إضافي يشرح التشخيص. يصف هذا القسم
السلاسل المختلفة التي ستراها.
SAFE
هناك ثلاثة أسباب رئيسية نعتقد أن الهدف آمن:
- SAFE - Target appears patched
يحدث هذا عندما لا يستجيب الهدف للطلب
المحفز. يعني هذا أنه نظام ويندوز تم تصحيحه،
أو نظام لم يكن معرضًا للخطر من البداية، مثل Windows 10
أو Unix.
- SAFE - CredSSP/NLA required
يعني هذا أن الهدف يتطلب أولاً Network Level Authentication قبل
أن يتم إنشاء اتصال RDP. لا يمكن للأداة تجاوز هذه النقطة، بدون
بيانات اعتماد شرعية، لذا لا يمكن تحديد ما إذا كان الهدف قد تم تصحيحه.
ومع ذلك، لا يمكن للمتسللين أيضًا تجاوز هذه النقطة لاستغلال الأنظمة المعرضة،
لذا فأنت على الأرجح "آمن". ومع ذلك، عند ظهور عمليات الاستغلال، سيتمكن
المخترقون الداخليون الذين لديهم أسماء مستخدمين/كلمات مرور صالحة من استغلال النظام إذا لم يتم تصحيحه.
- SAFE - not RDP
يعني هذا أن النظام ليس RDP، ولكن لديه خدمة أخرى تستخدم
نفس المنفذ، وتنتج استجابة ليست RDP بوضوح. الأمثلة الشائعة هي
HTTP و SSH. لاحظ أنه بدلاً من بروتوكول يمكن التعرف عليه، قد يستجيب الخادم
بحزمة RST أو FIN. يتم تحديد هذه على أنها UNKNOWN بدلاً
من SAFE/
VULNERABLE
يعني هذا أننا أكدنا أن النظام معرض للثغرة.
- VULNERABLE - got appid
لا يوجد سوى استجابة واحدة عندما يكون النظام معرضًا، وهي هذه.
UNKNOWN
هناك عدد لا يحصى من الاختلافات لـ UNKNOWN
- UNKNOWN - no connection - timeout
هذه هي الاستجابة الأكثر شيوعًا إلى حد بعيد، وتحدث عندما
لا يصدر عنوان IP الهدف أي استجابة على الإطلاق. في الواقع، إنها شائعة جدًا
لدرجة أنه عند مسح نطاقات كبيرة من العناوين، عادةً ما يتم حذفها.
يجب عليك إضافة علامة -v (الإسهاب) لتفعيلها.
- UNKNOWN - no connection - refused (RST)
هذه هي ثاني أكثر الاستجابات شيوعًا، وتحدث عندما
يكون الهدف موجودًا ويستجيب لحركة الشبكة، ولكن لا يعمل عليه
RDP، لذا يرفض الاتصال بحزمة TCP RST.
- UNKNOWN - RDP protocol error - receive timeout
هذه ثالث أكثر الاستجابات شيوعًا، وتحدث عندما نكون قد أنشأنا
اتصال RDP بنجاح، لكن الخادم يتوقف بعد ذلك عن الاستجابة
لنا. هذا بسبب أخطاء الشبكة وعندما يكون النظام الهدف
محملاً بشكل زائد لسبب ما. قد يكون أيضًا أخطاء شبكة من
هذه النهاية، مثل عندما تكون خلف NAT وتحمله بشكل زائد بالكثير
من الاتصالات.
- UNKNOWN - no connection - connection closed
يعني هذا أننا أنشأنا اتصال (TCP SYN-ACK)، ولكن بعد ذلك
يتم إغلاق الاتصال فورًا (مع RST أو FIN). هناك
العديد من الأسباب التي تجعل هذا يحدث، والتي لا يمكننا تمييزها:
- يعمل عليه RDP، ولكن لسبب ما يغلق الاتصال،
ربما لأنه خارج الموارد.
- ليس RDP، ولا يعجبه طلب RDP الذي نرسله إليه،
لذلك بدلاً من إرسال رسالة خطأ لطيفة (والتي كانت ستؤدي
إلى SAFE - not RDP)، يغلق الاتصال فجأة.
- جهاز وسيط، مثل IPS أو جدار حماية أو NAT، أغلق
الاتصال لأنه حدد هذا على أنه عدائي، أو
نفدت موارده.
- سبب آخر لم أتعرف عليه، هناك الكثير من
الأشياء الغريبة التي تحدث عندما أمسح الإنترنت.
- UNKNOWN - no connection - host unreachable (ICMP error)
الشبكة البعيدة تبلغ أن المضيف لا يمكن الوصول إليه أو لا يعمل.
حاول مرة أخرى لاحقًا إذا كنت تعتقد أن المضيف يجب أن يكون نشطًا.
- UNKNOWN - no connection - network unreachable (ICMP error)
يوجد خطأ شبكة (مؤقت) في الطرف البعيد، حاول مرة أخرى
لاحقًا إذا كنت تعتقد أن تلك الشبكة يجب أن تعمل.
- UNKNOWN - RDP protocol error
يعني هذا أن بعض الفساد حدث في بروتوكول RDP، إما لأن
الطرف البعيد يطبقه بشكل خاطئ (ليس نظام ويندوز)، أو لأنه
يعالج خطأ شبكة مؤقت بشكل سيء، أو شيء آخر.
- UNKNOWN - SSL protocol error
منذ Windows Vista، يستخدم RDP بروتوكول STARTTLS للتشغيل عبر SSL.
هذه الطبقة لها مشاكلها الخاصة مثل ما ورد أعلاه، والتي تشمل معالجة
أخطاء الشبكة الأساسية بشكل سيء، أو محاولة التواصل مع
أنظمة لديها نوع من عدم التوافق. إذا حصلت على رسالة خطأ طويلة جدًا هنا
(مثل SSL3_GET_RECORD:wrong version)، فهذا لأن
الجانب الآخر لديه خطأ في SSL، أو مكتبة SSL الخاصة بك
التي تستخدمها بها خطأ.
الاستخدام مع masscan
أداة rdpscan هذه بطيئة إلى حد ما، حيث تمسح بضع مئات من الأهداف فقط في الثانية.
يمكنك بدلاً من ذلك استخدام masscan لتسريع الأمور.