
DNSChef - وكيل DNS لمختبرى الاختراق ومحللى البرمجيات الخبيثة
| | الإصدار 0.4 | | / _|
| | __ ___ | | __| | / ` | ' / |/ | ' \ / _ \ | | (| | | | _ \ (| | | | __/ | _,|| ||/_|| ||___||
و ث ا ئ ق ا ل ا س ت خ د ا م
DNSChef هو خادم وكيل DNS عالي التخصيص للمختبرين الاختراقيين ومحللي البرامج الضارة. خادم DNS الوكيل (المعروف أيضًا باسم "DNS مزيف") هو أداة تُستخدم لتحليل حركة مرور الشبكة الخاصة بالتطبيقات، من بين استخدامات أخرى. على سبيل المثال، يمكن استخدام خادم DNS وكيل لتزوير طلبات "badguy.com" لتوجيهها إلى جهاز محلي لإنهاء الاتصال أو اعتراضه بدلاً من مضيف حقيقي في مكان ما على الإنترنت.
هناك العديد من خوادم DNS الوكيلة المتاحة. سيشير معظمها ببساطة إلى جميع استعلامات DNS إلى عنوان IP واحد أو يطبق فقط تصفية بدائية. تم تطوير DNSChef كجزء من اختبار اختراق حيث كانت هناك حاجة إلى نظام أكثر قابلية للتكوين. ونتيجة لذلك، فإن DNSChef هو تطبيق متعدد المنصات قادر على تزوير الاستجابات بناءً على قوائم النطاقات الشاملة والحصرية، ودعم أنواع سجلات DNS المتعددة، ومطابقة النطاقات باستخدام أحرف البدل، وتوجيه الاستجابات الحقيقية للنطاقات غير المتطابقة، وتحديد ملفات التكوين الخارجية، وIPv6، والعديد من الميزات الأخرى. يمكنك العثور على شرح مفصل لكل ميزة والاستخدامات المقترحة أدناه.
يوصى باستخدام خادم DNS وكيل في الحالات التي لا يمكن فيها إجبار تطبيق على استخدام خادم وكيل آخر بشكل مباشر. على سبيل المثال، تتجاهل بعض تطبيقات الأجهزة المحمولة إعدادات وكيل HTTP الخاصة بنظام التشغيل بشكل كامل. في هذه الحالات، سيسمح لك استخدام خادم DNS وكيل مثل DNSChef بخداع ذلك التطبيق لتوجيه الاتصالات إلى الوجهة المطلوبة.
قبل أن تتمكن من البدء في استخدام DNSChef، يجب عليك تكوين جهازك لاستخدام خادم أسماء DNS مع تشغيل الأداة عليه. لديك عدة خيارات بناءً على نظام التشغيل الذي ستستخدمه:
لينكس (Linux) - قم بتحرير ملف /etc/resolv.conf لإضافة سطر في الأعلى مع عنوان جهاز تحليل حركة المرور الخاص بك (على سبيل المثال، أضف "nameserver 127.0.0.1" إذا كنت تعمل محليًا). بدلاً من ذلك، يمكنك إضافة عنوان خادم DNS باستخدام أدوات مثل مدير الشبكة. داخل مدير الشبكة، افتح إعدادات IPv4، واختر العناوين التلقائية (DHCP) فقط أو يدوي من مربع القائمة المنسدلة الطريقة، ثم قم بتحرير مربع النص خوادم DNS لتضمين عنوان IP مع تشغيل DNSChef.
ويندوز (Windows) - اختر اتصالات الشبكة من لوحة التحكم. بعد ذلك، اختر أحد الاتصالات (على سبيل المثال، "اتصال المنطقة المحلية")، وانقر بزر الماوس الأيمن عليه واختر "خصائص". من مربع الحوار الجديد الذي يظهر، اختر بروتوكول الإنترنت (TCP/IP) وانقر على "خصائص". أخيرًا، اختر زر الاختيار استخدام عناوين خادم DNS التالية وأدخل عنوان IP مع تشغيل DNSChef. على سبيل المثال، إذا كنت تعمل محليًا، أدخل 127.0.0.1.
نظام تشغيل ماك (OS X) - افتح تفضيلات النظام وانقر على أيقونة الشبكة. اختر الواجهة النشطة واملأ حقل خادم DNS. إذا كنت تستخدم Airport، فسيتعين عليك النقر على زر خيارات متقدمة... وتحرير خوادم DNS من هناك. بدلاً من ذلك، يمكنك تحرير /etc/resolv.conf وإضافة خادم أسماء مزيف إلى الأعلى (على سبيل المثال "nameserver 127.0.0.1").
آي أو إس (iOS) - افتح الإعدادات واختر عام. بعد ذلك، اختر Wi-Fi وانقر على السهم الأزرق الموجود على يمين نقطة الوصول النشطة من القائمة. قم بتحرير إدخال DNS ليشير إلى المضيف الذي يعمل عليه DNSChef. تأكد من تعطيل واجهة الخلوي (إذا كانت متاحة).
أندرويد (Android) - افتح الإعدادات واختر الشبكات والإنترنت. انقر على إعدادات Wi-Fi واختر متقدم بعد الضغط على زر الخيارات في الهاتف. فعّل مربع الاختيار استخدام IP ثابت وقم بتكوين خادم DNS مخصص.
إذا لم تكن لديك القدرة على تعديل إعدادات DNS الخاصة بالجهاز يدويًا، فلا يزال لديك عدة خيارات تتضمن تقنيات مثل انتحال ARP، و خادم DHCP المارق، وطرق إبداعية أخرى.
أخيرًا، تحتاج إلى تكوين خدمة مزيفة حيث سيشير DNSChef إلى جميع الطلبات. على سبيل المثال، إذا كنت تحاول اعتراض حركة مرور الويب، فيجب عليك تشغيل إما خادم ويب منفصل يعمل على المنفذ 80 أو إعداد خادم وكيل ويب (على سبيل المثال، Burp) لاعتراض حركة المرور. سيشير DNSChef الاستعلامات إلى خادم/مضيف الوكيل الخاص بك مع الخدمات المهيأة بشكل صحيح.
DNSChef هو تطبيق متعدد المنصات تم تطويره بلغة Python ويجب أن يعمل على معظم المنصات التي تحتوي على مترجم Python. يمكنك استخدام الملف القابل للتنفيذ المرفق dnschef.exe لتشغيله على أجهزة Windows دون تثبيت مترجم Python. سيركز هذا الدليل على بيئات Unix؛ ومع ذلك، تم اختبار جميع الأمثلة أدناه للعمل على Windows أيضًا.
دعنا نجرب DNSChef مع وظيفة المراقبة الأساسية الخاصة به. قم بتنفيذ الأمر التالي كجذر (مطلوب لبدء تشغيل خادم على المنفذ 53):
# ./dnschef.py
_ _ __
| | الإصدار 0.2 | | / _|
__| |_ __ ___ ___| |__ ___| |_
/ _` | '_ \/ __|/ __| '_ \ / _ \ _|
| (_| | | | \__ \ (__| | | | __/ |
\__,_|_| |_|___/\___|_| |_|\___|_|
[email protected]
[*] تم بدء DNSChef على الواجهة: 127.0.0.1
[*] استخدام خوادم الأسماء التالية: 8.8.8.8
[*] لم يتم تحديد أي معلمات. يعمل في وضع الوكيل الكامل
بدون أي معلمات، سيعمل DNSChef في وضع الوكيل الكامل. هذا يعني أن جميع الطلبات سيتم ببساطة توجيهها إلى خادم DNS upstream (8.8.8.8 افتراضيًا) وإعادتها إلى المضيف الطالب. على سبيل المثال، دعنا نستعلم عن سجل "A" لنطاق ونلاحظ النتائج:
$ host -t A thesprawl.org
thesprawl.org has address 108.59.3.64
سيقوم DNSChef بطباعة سطر السجل التالي الذي يظهر الوقت وعنوان IP المصدر ونوع السجل المطلوب والأهم من ذلك أي اسم تم الاستعلام عنه:
[23:54:03] 127.0.0.1: توجيه استجابة من النوع 'A' لـ thesprawl.org
هذا الوضع مفيد لمراقبة التطبيقات البسيطة حيث تحتاج إلى معرفة النطاقات التي يستخدمها التطبيق لاتصالاته.
يدعم DNSChef بالكامل IPv6 والذي يمكن تفعيله باستخدام العلامات -6 أو --ipv6*. يعمل تمامًا مثل وضع IPv4 مع استثناء أن واجهة الاستماع الافتراضية يتم التبديل إلى ::1 وخادم DNS الافتراضي يتم التبديل إلى 2001:4860:4860::8888. إليك إخراج عينة:
# ./dnschef.py -6
_ _ __
| | الإصدار 0.2 | | / _|
__| |_ __ ___ ___| |__ ___| |_
/ _` | '_ \/ __|/ __| '_ \ / _ \ _|
| (_| | | | \__ \ (__| | | | __/ |
\__,_|_| |_|___/\___|_| |_|\___|_|
[email protected]
[*] استخدام وضع IPv6.
[*] تم بدء DNSChef على الواجهة: ::1
[*] استخدام خوادم الأسماء التالية: 2001:4860:4860::8888
[*] لم يتم تحديد أي معلمات. يعمل في وضع الوكيل الكامل
[00:35:44] ::1: توجيه استجابة من النوع 'A' لـ thesprawl.org
[00:35:44] ::1: توجيه استجابة من النوع 'AAAA' لـ thesprawl.org
[00:35:44] ::1: توجيه استجابة من النوع 'MX' لـ thesprawl.org
ملاحظة: بشكل افتراضي، يقوم DNSChef بإنشاء مستمع UDP. يمكنك استخدام TCP بدلاً من ذلك باستخدام الوسيطة --tcp التي سيتم مناقشتها لاحقًا.
الآن، بعد أن عرفت كيفية بدء DNSChef، دعنا نضبطه لتزوير جميع الردود لتوجيهها إلى 127.0.0.1 باستخدام المعامل --fakeip:
# ./dnschef.py --fakeip 127.0.0.1 -q
[*] تم بدء DNSChef على الواجهة: 127.0.0.1
[*] استخدام خوادم الأسماء التالية: 8.8.8.8
[*] طهي جميع ردود A لتوجيهها إلى 127.0.0.1
[23:55:57] 127.0.0.1: طهي استجابة من النوع 'A' لـ google.com إلى 127.0.0.1
[23:55:57] 127.0.0.1: توجيه استجابة من النوع 'AAAA' لـ google.com
[23:55:57] 127.0.0.1: توجيه استجابة من النوع 'MX' لـ google.com
في الإخراج أعلاه، يمكنك رؤية أن DNSChef تم تكوينه لتوجيه جميع الطلبات إلى 127.0.0.1. يُظهر السطر الأول من السجل في 08:11:23 أننا "طهينا" استجابة سجل "A" لتوجيهها إلى 127.0.0.1. ومع ذلك، فإن الطلبات الإضافية لسجلات 'AAAA' و 'MX' يتم توجيهها ببساطة من خادم DNS حقيقي. دعنا نرى الإخراج من البرنامج الطالب:
$ host google.com localhost
google.com has address 127.0.0.1
google.com has IPv6 address 2001:4860:4001:803::1001
google.com mail is handled by 10 aspmx.l.google.com.
google.com mail is handled by 40 alt3.aspmx.l.google.com.
google.com mail is handled by 30 alt2.aspmx.l.google.com.
google.com mail is handled by 20 alt1.aspmx.l.google.com.
google.com mail is handled by 50 alt4.aspmx.l.google.com.