
مجموعة أدوات JavaScript أمامية لإنشاء هجمات إعادة ربط DNS.
عرض توضيحي | إشعار أمني | الحمولات المضمنة | الأسئلة الشائعة
إخلاء مسؤولية: هذا البرنامج لأغراض تعليمية فقط. لا ينبغي استخدام هذا البرنامج في أنشطة غير قانونية. المؤلف غير مسؤول عن استخدامه. لا تكن وغدًا.
مجموعة أدوات إعادة ربط DNS هي إطار عمل JavaScript أمامي لتطوير هجمات إعادة ربط DNS ضد المضيفين والخدمات الضعيفة على شبكة المنطقة المحلية (LAN). يمكن استخدامها لاستهداف أجهزة مثل Google Home وRoku ومكبرات الصوت Sonos WiFi وأجهزة توجيه WiFi وأجهزة تنظيم الحرارة "الذكية" وأجهزة إنترنت الأشياء الأخرى. باستخدام هذه المجموعة، يمكن للمهاجم عن بُعد تجاوز جدار الحماية الخاص بجهاز التوجيه والتفاعل مباشرة مع الأجهزة على شبكة منزل الضحية، مما يؤدي إلى تسريب معلومات خاصة وفي بعض الحالات، حتى التحكم في الأجهزة الضعيفة نفسها.
يتطلب الهجوم أن يقوم ضحية على الشبكة المستهدفة ببساطة باتباع رابط، أو عرض إعلان HTML يحتوي على إطار iframe ضار. من هناك، يتم استخدام متصفح ويب الضحية كخادم وكيل للوصول مباشرة إلى المضيفين الآخرين المتصلين بشبكة منزله. هذه الأجهزة والخدمات المستهدفة كانت ستكون غير متاحة للمهاجم من الإنترنت. قد لا يعرف المهاجم عن بُعد ما هي هذه الخدمات، أو ما هي عناوين IP التي تشغلها على شبكة الضحية، لكن مجموعة أدوات إعادة ربط DNS تتعامل مع هذا عن طريق تجربة مئات عناوين IP المحتملة بالقوة الغاشمة.
تحت الغطاء، تستخدم هذه الأداة خادم DNS عام whonow يعمل على rebind.network:53 لتنفيذ هجوم إعادة ربط DNS وخداع متصفح الويب الخاص بالضحية لانتهاك سياسة نفس المصدر. من هناك، تستخدم WebRTC لتسريب عنوان IP الخاص للضحية، مثل 192.168.1.36. تستخدم الأوكتات الثلاثة الأولى من عنوان IP المحلي هذا لتخمين الشبكة الفرعية ثم حقن 256 iframe، من 192.168.1.0-255 لتوصيل حمولة لكل مضيف يمكن أن يكون على الشبكة الفرعية.
يمكن استخدام هذه المجموعة لتطوير ونشر هجمات إعادة ربط DNS الخاصة بك. يتم تضمين العديد من حمولات الهجوم الواقعية في هذه المجموعة في دليل payloads/. تتضمن هذه الحمولات هجمات تسريب معلومات (ومقالب ريكرول) ضد عدد قليل من أجهزة إنترنت الأشياء الشائعة، بما في ذلك منتجات Google Home وRoku.
هذه المجموعة هي نتاج بحث أمني مستقل في هجمات إعادة ربط DNS. يمكنك قراءة المزيد عن ذلك البحث الأصلي هنا.
# استنساخ المستودع
git clone https://github.com/brannondorsey/dns-rebind-toolkit.git
cd dns-rebind-toolkit
# تثبيت التبعيات
npm install
# تشغيل الخادم باستخدام صلاحيات الجذر لتوفير الوصول إلى المنفذ المميز 80
# هذا النص يخدم الملفات من أدلة www/ و /examples و /share و /payloads
sudo node server
بشكل افتراضي، يخدم server.js حمولات تستهدف Google Home وRoku ومكبرات صوت Sonos ومصابيح Phillips Hue وأجهزة Radio Thermostat التي تعمل بخدماتها على المنافذ 8008 و8060 و1400 و80 و80 على التوالي. إذا كان لديك أحد هذه الأجهزة على شبكة منزلك، انتقل إلى http://rebind.network لمفاجأة سارة ;). افتح وحدة التحكم للمطور وشاهد كيف يتم استغلال هذه الخدمات بشكل غير ضار مما يتسبب في سرقة البيانات منها وتسريبها إلى server.js.
توفر هذه المجموعة كائنين JavaScript يمكن استخدامهما معًا لإنشاء هجمات إعادة ربط DNS:
DNSRebindAttack: يُستخدم هذا الكائن لبدء هجوم ضد خدمة ضعيفة تعمل على منفذ معروف. ينتج حمولة واحدة لكل عنوان IP تختار استهدافه. تُستخدم كائنات DNSRebindAttack لإنشاء وإدارة والتواصل مع كائنات DNSRebindNode متعددة. يجب أن تحتوي كل حمولة تم إطلاقها بواسطة DNSRebindAttack على كائن DNSRebindNode.DNSRebindNode: يجب تضمين كائن الفئة الثابتة هذا في كل ملف حمولة HTML. يُستخدم لاستهداف خدمة واحدة تعمل على مضيف واحد. يمكنه التواصل مع كائن DNSRebindAttack الذي أنشأه ولديه وظائف مساعدة لتنفيذ هجوم إعادة ربط DNS (باستخدام DNSRebindNode.rebind(...)) وكذلك تسريب البيانات المكتشفة أثناء الهجوم إلى server.js (DNSRebindNode.exfiltrate(...)).يتم استخدام هذين النصين معًا لتنفيذ هجوم ضد مضيفين غير معروفين على شبكة LAN محمية بجدار حماية. يبدو الهجوم الأساسي كما يلي:
http://example.com/launcher.html. تحتوي launcher.html على مثيل من DNSRebindAttack.http://example.com/launcher.html كإطار iframe. يتسبب هذا في بدء DNSRebindAttack على launcher.html الهجوم.DNSRebindAttack تسريب WebRTC لاكتشاف عنوان IP المحلي لجهاز الضحية (على سبيل المثال 192.168.10.84). يستخدم المهاجم هذه المعلومات لاختيار نطاق من عناوين IP لاستهدافها على شبكة LAN الخاصة بالضحية (على سبيل المثال 192.168.10.0-255).launcher.html بإطلاق هجوم إعادة ربط DNS (باستخدام DNSRebindAttack.attack(...)) ضد نطاق من عناوين IP على الشبكة الفرعية للضحية، مستهدفًا خدمة واحدة (على سبيل المثال واجهة برمجة تطبيقات Google Home REST غير الموثقة المتاحة على المنفذ 8008).DNSRebindAttack بتضمين إطار iframe واحد يحتوي على payload.html في صفحة launcher.html. يحتوي كل إطار iframe على كائن DNSRebindNode واحد ينفذ هجومًا ضد المنفذ 8008 لمضيف واحد محدد في نطاق عناوين IP التي يتم مهاجمتها. تستمر عملية الحقن هذه حتى يتم حقن إطار iframe لكل عنوان IP يتم استهدافه بواسطة الهجوم.payload.html تم حقنه DNSRebindNode لمحاولة هجوم إعادة ربط عن طريق التواصل مع خادم DNS whonow. إذا نجح، يتم انتهاك سياسة نفس المصدر ويمكن لـ payload.html التواصل مع منتج Google Home مباشرة. عادةً ما يتم كتابة payload.html بطريقة تجعله يقوم ببعض استدعاءات واجهة برمجة التطبيقات للجهاز المستهدف وتسريب النتائج إلى server.js الذي يعمل على example.com قبل إنهاء الهجوم وتدمير نفسه.لاحظ، إذا كان لدى المستخدم جهاز Google Home واحد على شبكته بعنوان IP غير معروف وتم إطلاق هجوم ضد الشبكة الفرعية بأكملها 192.168.1.0/24، فسيكون هجوم إعادة ربط DNSRebindNode واحد ناجحًا وسيفشل 254.
يتكون الهجوم من ثلاثة نصوص وملفات منسقة:
DNSRebindAttack (على سبيل المثال launcher.html)payload.html). يتم تضمين هذا الملف في launcher.html بواسطة DNSRebindAttack لكل عنوان IP يتم استهدافه.server.js) لتوصيل الملفات أعلاه وتسريب البيانات إذا لزم الأمر.launcher.htmlفيما يلي مثال لملف إطلاق HTML. يمكنك العثور على المستند الكامل في examples/launcher.html.
<!DOCTYPE html>
<head>
<title>مثال للإطلاق</title>
</head>
<body>
<!-- هذا النص هو تبعية لـ DNSRebindAttack.js ويجب تضمينه -->
<script type="text/javascript" src="/share/js/EventEmitter.js"></script>
<!-- تضمين كائن هجوم إعادة ربط DNS -->
<script type="text/javascript" src="/share/js/DNSRebindAttack.js"></script>
<script type="text/javascript">