Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
dnschef-ng — DNSChef (NG) - DNS proxy for Penetration Testers and Malware Analysts | Kitploit
أدوات/GitHubGitHub/byt3bl33d3r/dnschef-ng
Data ExfiltrationInformation GatheringNetwork SecurityMalware AnalysisPenetration TestingRed TeamingDNS Analysis
GitHubbyt3bl33d3r/dnschef-ng

dnschef-ng

DNSChef (NG) - DNS proxy for Penetration Testers and Malware Analysts

عرض المستودع
17316منذ 2 سنواتتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

[!NOTE] هذه نسخة محدّثة من DNSChef الذي كُتب في الأصل بواسطة @iphelix``` _ _ __
| | v0.7 | | / |
| | __ ___ | | | | ______ _ __ __ _ / | '_ \/ __|/ __| '_ \ / _ \ _|______| '_ \ / _ | | (| | | | _ \ (__| | | | __/ | | | | | (| | _,|
| ||/_|| ||___|| || ||_, | / | |_/ D O C U M E N T A T I O N

root@kitploit:~
DNSChef هو وكيل DNS عالي التكوين لاختبار الاختراق ومحللي البرامج الضارة. وكيل DNS (يُعرف أيضًا باسم "DNS مزيف") هو أداة تُستخدم لتحليل حركة مرور الشبكة للتطبيقات من بين استخدامات أخرى. على سبيل المثال، يمكن استخدام وكيل DNS لتزييف الطلبات الموجهة إلى "badguy.com" لتشير إلى جهاز محلي لإنهائها أو اعتراضها بدلاً من مضيف حقيقي في مكان ما على الإنترنت.

هناك العديد من وكلاء DNS في السوق. معظمها ببساطة يوجه جميع استعلامات DNS إلى عنوان IP واحد أو ينفذ فقط ترشيحًا بدائيًا. تم تطوير DNSChef كجزء من اختبار اختراق حيث كانت هناك حاجة لنظام أكثر قابلية للتكوين. ونتيجة لذلك، فإن DNSChef هو تطبيق متعدد المنصات قادر على تزوير الاستجابات بناءً على قوائم النطاقات الشاملة والاستبعادية، ودعم أنواع متعددة من سجلات DNS، ومطابقة النطاقات باستخدام أحرف البدل، وتوجيه الاستجابات الحقيقية للنطاقات غير المتطابقة، وتحديد ملفات التكوين الخارجية، و IPv6 والعديد من الميزات الأخرى. يمكنك العثور على شرح مفصل لكل ميزة والاستخدامات المقترحة أدناه.

يوصى باستخدام وكيل DNS في الحالات التي لا يمكن فيها إجبار التطبيق على استخدام خادم وكيل آخر مباشرة. على سبيل المثال، تتجاهل بعض تطبيقات الأجهزة المحمولة إعدادات وكيل HTTP لنظام التشغيل تمامًا. في هذه الحالات، سيسمح لك استخدام خادم وكيل DNS مثل DNSChef بخداع هذا التطبيق لتوجيه الاتصالات إلى الوجهة المطلوبة.

## ميزات جديدة

- يتطلب Python 3.11+
- يدعم نقل الملفات عبر DNS (فقط عبر `A`,`AAAA`,`TXT` في الوقت الحالي...)
- ملف التكوين أصبح الآن TOML
- واجهة برمجة تطبيقات HTTP اختيارية (تتيح لك الاستعلام عن السجلات وتحديث التكوين عن بُعد)
- غير متزامن بالكامل لتحسين الأداء (يستخدم AsyncIO)
- تسجيل منظم وعدد من تحسينات جودة الحياة
- أصبح الآن حزمة Python
- معزول في حاويات (Dockerized)
- يتضمن عددًا من طلبات السحب والإصلاحات من المستودع الأصلي

## التثبيت

لتثبيت أحدث إصدار، يجب عليك استخدام [pipx](https://pypa.github.io/pipx/) (إلا إذا كنت شخصًا حقيرًا تستمتع بشرائح اللحم غير المتقنة):

    pipx install dnschef-ng

إذا كنت تريد واجهة HTTP API (تتطلب بعض التبعيات الإضافية):

    pipx install dnschef-ng[api]

ثبّت أحدث إصدار من Git باستخدام pipx:

     pipx install git+https://github.com/byt3bl33d3r/dnschef-ng.git

ثبّت أحدث إصدار من Git باستخدام pipx مع تبعيات واجهة HTTP API:

     pipx install "git+https://github.com/byt3bl33d3r/dnschef-ng.git#egg=dnschef-ng[api]"

## إعداد وكيل DNS

قبل أن تبدأ في استخدام DNSChef، يجب عليك تكوين جهازك لاستخدام خادم أسماء DNS مع تشغيل الأداة عليه. لديك عدة خيارات حسب نظام التشغيل الذي ستستخدمه:

- **Linux** - عدّل */etc/resolv.conf* لإضافة سطر في الأعلى يحتوي على مضيف تحليل حركة المرور الخاص بك (مثلًا أضف "nameserver 127.0.0.1" إذا كنت تعمل محليًا). بدلاً من ذلك، يمكنك إضافة عنوان خادم DNS باستخدام أدوات مثل Network Manager. داخل Network Manager افتح IPv4 Settings، واختر *Automatic (DHCP) addresses only* أو *Manual* من القائمة المنسدلة *Method* وعدّل حقل النص *DNS Servers* ليتضمن عنوان IP مع تشغيل DNSChef.

- **Windows** - اختر *Network Connections* من *Control Panel*. بعد ذلك حدد أحد الاتصالات (مثل "Local Area Connection")، وانقر بزر الماوس الأيمن عليه واختر خصائص. من داخل مربع الحوار الذي يظهر حديثًا، حدد *Internet Protocol (TCP/IP)* وانقر على خصائص. أخيرًا، حدد زر الاختيار *Use the following DNS server addresses* وأدخل عنوان IP مع تشغيل DNSChef. على سبيل المثال، إذا كنت تعمل محليًا أدخل 127.0.0.1.

- **OS X** - افتح *System Preferences* وانقر على أيقونة *Network*. حدد الواجهة النشطة واملأ حقل *DNS Server*. إذا كنت تستخدم Airport فسيتعين عليك النقر على زر *Advanced...* وتحرير خوادم DNS من هناك. بدلاً من ذلك، يمكنك تحرير */etc/resolv.conf* وإضافة خادم أسماء مزيف إلى الأعلى هناك (على سبيل المثال "nameserver 127.0.0.1").

- **iOS** - افتح *Settings* وحدد *General*. بعد ذلك حدد *Wi-Fi* وانقر على السهم الأزرق إلى يمين نقطة الوصول النشطة من القائمة. عدّل إدخال DNS ليشير إلى المضيف الذي يعمل عليه DNSChef. تأكد من تعطيل واجهة Cellular (إن كانت متاحة).

- **Android** - افتح *Settings* وحدد *Wireless and network*. انقر على *Wi-Fi settings* وحدد *Advanced* بعد الضغط على زر *Options* في الهاتف. فعّل خانة الاختيار *Use static IP* وقم بتكوين خادم DNS مخصص.

إذا لم تكن لديك القدرة على تعديل إعدادات DNS الخاصة بالجهاز يدويًا، فلا يزال لديك عدة خيارات تتضمن تقنيات مثل [ARP Spoofing](http://en.wikipedia.org/wiki/ARP_spoofing) و[Rogue DHCP](http://www.yersinia.net/doc.htm) وغيرها من الطرق الإبداعية.

وأخيرًا، تحتاج إلى تكوين خدمة مزيفة حيث سيشير DNSChef إلى جميع الطلبات. على سبيل المثال، إذا كنت تحاول اعتراض حركة مرور الويب، فيجب عليك إما تشغيل خادم ويب منفصل على المنفذ 80 أو إعداد وكيل ويب (مثل Burp) لاعتراض حركة المرور. سيقوم DNSChef بتوجيه الاستعلامات إلى مضيف الوكيل/الخادم الخاص بك مع الخدمات المكوّنة بشكل صحيح.

## تشغيل DNSChef

DNSChef هو تطبيق متعدد المنصات مطور بلغة Python ويعمل على معظم المنصات التي تحتوي على مترجم Python. سيركز هذا الدليل على بيئات Unix؛ ومع ذلك، تم اختبار جميع الأمثلة أدناه للعمل على Windows أيضًا.

دعنا نجرب DNSChef مع وظيفة المراقبة الأساسية الخاصة به. نفّذ الأمر التالي كجذر (مطلوب لبدء خادم على المنفذ 53):

    # ./dnschef.py
        
              _                _          __  
             | | version 0.2  | |        / _| 
           __| |_ __  ___  ___| |__   ___| |_ 
          / _` | '_ \/ __|/ __| '_ \ / _ \  _|
         | (_| | | | \__ \ (__| | | |  __/ |  
          \__,_|_| |_|___/\___|_| |_|\___|_|  
                       [email protected]  

    [*] DNSChef started on interface: 127.0.0.1 
    [*] Using the following nameservers: 8.8.8.8
    [*] No parameters were specified. Running in full proxy mode

بدون أي معلمات، سيعمل DNSChef في وضع الوكيل الكامل. هذا يعني أن جميع الطلبات ستُوجَّه ببساطة إلى خادم DNS علوي (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: proxying the response of type 'A' for thesprawl.org

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

يدعم DNSChef بشكل كامل IPv6 ويمكن تفعيله باستخدام *-6* أو *--ipv6** العلامات. يعمل تمامًا مثل وضع IPv4 باستثناء أن واجهة الاستماع الافتراضية يتم تبديلها إلى ::1 وخادم DNS الافتراضي يتم تبديله إلى 2001:4860:4860::8888. إليك مثال على الإخراج:

    # ./dnschef.py -6
              _                _          __
             | | version 0.2  | |        / _|
           __| |_ __  ___  ___| |__   ___| |_
          / _` | '_ \/ __|/ __| '_ \ / _ \  _|
         | (_| | | | \__ \ (__| | | |  __/ |
          \__,_|_| |_|___/\___|_| |_|\___|_|
                       [email protected]

    [*] Using IPv6 mode.
    [*] DNSChef started on interface: ::1
    [*] Using the following nameservers: 2001:4860:4860::8888
    [*] No parameters were specified. Running in full proxy mode
    [00:35:44] ::1: proxying the response of type 'A' for thesprawl.org
    [00:35:44] ::1: proxying the response of type 'AAAA' for thesprawl.org
    [00:35:44] ::1: proxying the response of type 'MX' for thesprawl.org

ملاحظة: بشكل افتراضي، ينشئ DNSChef مستمع UDP. يمكنك استخدام TCP بدلاً من ذلك باستخدام الوسيط *--tcp* الذي سيتم مناقشته لاحقًا.

## تشغيل واجهة DNSChef HTTP API

> [!WARNING]
> لا تحتوي الواجهة على أي مصادقة. اسمح/امنع الوصول على مستوى الشبكة عبر مجموعات الأمان، iptables، جدار الحماية، إلخ.

`uvicorn dnschef.api:app`

يمكنك بعد ذلك عرض توثيق OpenAPI على `http://127.0.0.1:8000/docs````
$ uvicorn dnschef.api:app
INFO:     Started server process [28327]
INFO:     Waiting for application startup.
          _                _          __  
         | | version 0.6.0  | |        / _| 
       __| |_ __  ___  ___| |__   ___| |_ 
      / _` | '_ \/ __|/ __| '_ \ / _ \  _|
     | (_| | | | \__ \ (__| | | |  __/ |  
      \__,_|_| |_|___/\___|_| |_|\___|_|  
                @iphelix // @byt3bl33d3r  

2023-09-28 11:24:59 cooking replies                domain=*.thesprawl.org record=192.0.2.1 section=A
2023-09-28 11:24:59 cooking replies                domain=*.thesprawl.org record=2001:db8::1 section=AAAA
-- SNIP --
2023-09-28 11:24:59 cooking replies                domain=*.thesprawl.org record=1 . alpn=h2 ipv4hint=127.0.0.1 ipv6hint=::1 section=HTTPS
INFO:     Application startup complete.
2023-09-28 11:24:59 DNSChef is active              interface=127.0.0.1 ipv6=False nameservers=['8.8.8.8'] port=53 tcp=False
INFO:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)

اعتراض جميع الاستجابات

الآن، بعد أن عرفت كيفية تشغيل DNSChef، دعنا نُهيئه لتزوير جميع الردود لجعلها تشير إلى 127.0.0.1 باستخدام المعامل --fakeip:

root@kitploit:~
# ./dnschef.py --fakeip 127.0.0.1 -q
[*] DNSChef started on interface: 127.0.0.1 
[*] Using the following nameservers: 8.8.8.8
[*] Cooking all A replies to point to 127.0.0.1
[23:55:57] 127.0.0.1: cooking the response of type 'A' for google.com to 127.0.0.1
[23:55:57] 127.0.0.1: proxying the response of type 'AAAA' for google.com
[23:55:57] 127.0.0.1: proxying the response of type 'MX' for google.com

في المخرجات أعلاه، يمكنك ملاحظة أن DNSChef تم تكوينه لتمرير جميع الطلبات إلى 127.0.0.1. السطر الأول من السجل عند 08:11:23 يُظهر أننا قمنا "بطهي" استجابة سجل 'A' لتشير إلى 127.0.0.1. ومع ذلك، فإن الطلبات الإضافية لسجلات 'AAAA' و 'MX' يتم تمريرها ببساطة من خادم DNS حقيقي. دعنا نرى المخرجات من البرنامج الطالب:

root@kitploit:~
$ 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.

كما ترى، تم خداع البرنامج لاستخدام 127.0.0.1 كعنوان IPv4. ومع ذلك، فإن المعلومات التي تم الحصول عليها من سجلات IPv6 (AAAA) والبريد (MX) تبدو شرعية تمامًا. هدف DNSChef هو تقليل التأثير على التشغيل الصحيح للبرنامج، لذا إذا كان التطبيق يعتمد على خادم بريد معين، فسيحصل عليه بشكل صحيح من خلال هذا الطلب الممرر.

دعنا نزور طلبًا آخر لتوضيح كيفية استهداف سجلات متعددة في نفس الوقت:

root@kitploit:~
# ./dnschef.py --fakeip 127.0.0.1 --fakeipv6 ::1 -q
[*] DNSChef started on interface: 127.0.0.1 
[*] Using the following nameservers: 8.8.8.8
[*] Cooking all A replies to point to 127.0.0.1
[*] Cooking all AAAA replies to point to ::1
[00:02:14] 127.0.0.1: cooking the response of type 'A' for google.com to 127.0.0.1
[00:02:14] 127.0.0.1: cooking the response of type 'AAAA' for google.com to ::1
[00:02:14] 127.0.0.1: proxying the response of type 'MX' for google.com

بالإضافة إلى المعامل --fakeip، قمت الآن بتحديد --fakeipv6 المصمم لتزوير استعلامات سجلات 'AAAA'. فيما يلي مخرجات البرنامج المحدثة:

root@kitploit:~
$ host google.com localhost
google.com has address 127.0.0.1
google.com has IPv6 address ::1
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.

ومرة أخرى، تم تمرير جميع السجلات التي لم يتم تجاوزها صراحةً بواسطة التطبيق وإعادتها من خادم DNS الحقيقي. ومع ذلك، تم تزوير كل من IPv4 (A) و IPv6 (AAAA) لتوجيههما إلى جهاز محلي.

يدعم DNSChef أنواع سجلات متعددة:

ملاحظة: من أجل سهولة الاستخدام، لا يتم عرض جميع أنواع سجلات DNS في سطر الأوامر. يمكن تحديد سجلات إضافية مثل PTR وTXT وSOA وما إلى ذلك باستخدام المعامل --file ورأس سجل مناسب. راجع قسم ملف التعريفات الخارجي أدناه للحصول على التفاصيل.

في النهاية، دعنا نلاحظ كيف يتعامل التطبيق مع الاستعلامات من نوع ANY:

root@kitploit:~
# ./dnschef.py --fakeip 127.0.0.1 --fakeipv6 ::1 --fakemail mail.fake.com --fakealias www.fake.com --fakens ns.fake.com -q
[*] DNSChef started on interface: 127.0.0.1 
[*] Using the following nameservers: 8.8.8.8
[*] Cooking all A replies to point to 127.0.0.1
[*] Cooking all AAAA replies to point to ::1
[*] Cooking all MX replies to point to mail.fake.com
[*] Cooking all CNAME replies to point to www.fake.com
[*] Cooking all NS replies to point to ns.fake.com
[00:17:29] 127.0.0.1: cooking the response of type 'ANY' for google.com with all known fake records.

يؤدي الاستعلام عن سجلات DNS من نوع ANY إلى قيام DNSChef بإرجاع كل سجل مزور يعرفه عن النطاق المطبق. فيما يلي المخرجات التي سيرها البرنامج:

root@kitploit:~
# host -t ANY google.com localhost
google.com has address 127.0.0.1
google.com has IPv6 address ::1
google.com mail is handled by 10 mail.fake.com.
google.com is an alias for www.fake.com.
google.com name server ns.fake.com.

تصفية النطاقات

باستخدام المثال أعلاه، افترض أنك تريد اعتراض الطلبات الموجهة إلى thesprawl.org فقط وترك الاستعلامات لجميع النطاقات الأخرى مثل webfaction.com دون تعديل. يمكنك استخدام المعامل --fakedomains كما هو موضح أدناه:

root@kitploit:~
# ./dnschef.py --fakeip 127.0.0.1 --fakedomains thesprawl.org -q
[*] DNSChef started on interface: 127.0.0.1
[*] Using the following nameservers: 8.8.8.8  
[*] Cooking replies to point to 127.0.0.1 matching: thesprawl.org
[00:23:37] 127.0.0.1: cooking the response of type 'A' for thesprawl.org to 127.0.0.1
[00:23:52] 127.0.0.1: proxying the response of type 'A' for mx9.webfaction.com

من المثال أعلاه، تم تزوير الطلب الموجه إلى thesprawl.org؛ ومع ذلك، تم ترك الطلب الموجه إلى mx9.webfaction.com دون تغيير. تعد تصفية النطاقات مفيدة جدًا عندما تحاول عزل تطبيق واحد دون إفساد بقية التطبيقات.

ملاحظة: لن يتحقق DNSChef من وجود النطاق من عدمه قبل تزوير الاستجابة. إذا قمت بتحديد نطاق، فسيتم حله دائمًا إلى قيمة مزيفة سواء كان موجودًا بالفعل أم لا.

التصفية العكسية

في موقف آخر، قد تحتاج إلى تزوير الاستجابات لجميع الطلبات باستثناء قائمة محددة من النطاقات. يمكنك إنجاز هذه المهمة باستخدام المعامل --truedomains كما يلي:

root@kitploit:~
# ./dnschef.py --fakeip 127.0.0.1 --truedomains thesprawl.org,*.webfaction.com -q
[*] DNSChef started on interface: 127.0.0.1
[*] Using the following nameservers: 8.8.8.8  
[*] Cooking replies to point to 127.0.0.1 not matching: *.webfaction.com, thesprawl.org
[00:27:57] 127.0.0.1: proxying the response of type 'A' for mx9.webfaction.com
[00:28:05] 127.0.0.1: cooking the response of type 'A' for google.com to 127.0.0.1

هناك عدة أمور تحدث في المثال أعلاه. أولاً، لاحظ استخدام حرف البدل (*). جميع النطاقات المطابقة لـ *.webfaction.com ستتم مطابقتها عكسيًا وحلها إلى قيمها الحقيقية. الطلب الموجه إلى 'google.com' أعاد 127.0.0.1 لأنه لم يكن ضمن قائمة النطاقات المستثناة.

ملاحظة: أحرف البدل خاصة بالموضع. القناع من النوع *.thesprawl.org سيطابق www.thesprawl.org لكنه لن يطابق www.test.thesprawl.org. ومع ذلك، فإن القناع من النوع ..thesprawl.org سيطابق thesprawl.org وwww.thesprawl.org وwww.test.thesprawl.org.

ملف التعريفات الخارجي

قد تكون هناك حالات لا يكفي فيها تعريف سجل DNS مزور واحد لجميع النطاقات المطابقة. يمكنك استخدام ملف خارجي يحتوي على مجموعة من أزواج DOMAIN=RECORD لتحديد الوجهة الدقيقة التي تريد أن يذهب إليها الطلب.

على سبيل المثال، لنقم بإنشاء ملف التعريفات التالي ونسميه dnschef.toml:```toml [A] ".google.com"="192.0.2.1" "thesprawl.org"="192.0.2.2" ".wordpress.*"="192.0.2.3"

root@kitploit:~
لاحظ رأس القسم `[A]`، فهو يحدد نوع السجل لـ DNSChef. الآن دعنا نلاحظ بعناية مخرجات الاستعلامات المتعددة:

    # ./dnschef.py --file dnschef.toml -q
    [*] DNSChef started on interface: 127.0.0.1 
    [*] Using the following nameservers: 8.8.8.8
    [+] Cooking A replies for domain *.google.com with '192.0.2.1'
    [+] Cooking A replies for domain thesprawl.org with '192.0.2.2'
    [+] Cooking A replies for domain *.wordpress.* with '192.0.2.3'
    [00:43:54] 127.0.0.1: cooking the response of type 'A' for google.com to 192.0.2.1
    [00:44:05] 127.0.0.1: cooking the response of type 'A' for www.google.com to 192.0.2.1
    [00:44:19] 127.0.0.1: cooking the response of type 'A' for thesprawl.org to 192.0.2.2
    [00:44:29] 127.0.0.1: proxying the response of type 'A' for www.thesprawl.org
    [00:44:40] 127.0.0.1: cooking the response of type 'A' for www.wordpress.org to 192.0.2.3
    [00:44:51] 127.0.0.1: cooking the response of type 'A' for wordpress.com to 192.0.2.3
    [00:45:02] 127.0.0.1: proxying the response of type 'A' for slashdot.org

كلا من *google.com* و *www.google.com* طابقا الإدخال *\*.google.com* وتم حلهما بشكل صحيح إلى *192.0.2.1*. من ناحية أخرى، تم ببساطة تمرير طلب *www.thesprawl.org* عبر البروكسي بدلاً من تعديله. أخيرًا، طابقت جميع الأشكال المختلفة لـ *wordpress.com* و *www.wordpress.org*، إلخ، قناع *\*.wordpress.\** وتم حلها بشكل صحيح إلى *192.0.2.3*. وفي النهاية، تم ببساطة تمرير استعلام غير محدد لـ *slashdot.org* عبر البروكسي مع استجابة حقيقية.

يمكنك تحديد رؤوس أقسام لجميع أنواع سجلات DNS الأخرى المدعومة بما في ذلك تلك غير المعروضة صراحةً في سطر الأوامر: [A]، [AAAA]، [MX]، [NS]، [CNAME]، [PTR]، [NAPTR] و [SOA]. على سبيل المثال، دعنا نعرف قسم [PTR] جديد في ملف `dnschef.toml`:```toml
[PTR]
"*.2.0.192.in-addr.arpa"="fake.com"

لنلاحظ سلوك DNSChef مع هذا النوع الجديد من السجلات:

root@kitploit:~
 ./dnschef.py --file dnschef.toml -q
[sudo] password for iphelix: 
[*] DNSChef started on interface: 127.0.0.1 
[*] Using the following nameservers: 8.8.8.8
[+] Cooking PTR replies for domain *.2.0.192.in-addr.arpa with 'fake.com'
[00:11:34] 127.0.0.1: cooking the response of type 'PTR' for 1.2.0.192.in-addr.arpa to fake.com

وإليك ما قد يراه العميل عند إجراء استعلامات DNS عكسية:

root@kitploit:~
$ host 192.0.2.1 localhost
1.2.0.192.in-addr.arpa domain name pointer fake.com.

تتطلب بعض السجلات تنسيقًا دقيقًا. من الأمثلة الجيدة على ذلك SOA وNAPTR```toml [SOA] "*.thesprawl.org" = "ns.fake.com. hostmaster.fake.com. 1 10800 3600 604800 3600"

[NAPTR] ".thesprawl.org" = "100 10 U E2U+sip !^.$!sip:[email protected]! ."

root@kitploit:~
انظر ملف `dnschef.toml` النموذجي لمزيد من الأمثلة.

## تجهيز الملفات

يمكن لـ DNSChef "تجهيز" أي ملف عبر DNS. حاليًا، دعم تجهيز الملفات يقتصر على سجلات `A` و`AAAA` و`TXT` (سيتم إضافة المزيد). لإرشاد DNSChef إلى تجهيز ملف، أضف القسم التالي إلى `dnschef.toml` الخاص بك:```toml
[A]
"*.wat.org" = { file = "/home/payload.exe", chunk_size = 4 }

[AAAA]
"*.gorgetowngeronimos.org" = { file = "/home/payload.exe", chunk_size = 16 }

[!NOTE] إعداد chunk_size اختياري وسلوكه يعتمد بشكل كبير على نوع الاستعلام. مثال: بما أن استعلامات A تُرجع عنوان IPv4، فإن الحد الأقصى المسموح به لـ chunk_size هو 4 بايت. سيتم تجاهل تعيين chunk_size إلى أي قيمة أعلى من 4.

سيعيد استعلام A إلى *.wat.org يحتوي على رقم في اسم DNS الآن الجزء المقابل من الملف. على سبيل المثال، سيعيد الاستعلام ns0.wat.org عنوان IPv4 يحتوي على الجزء الأول من الملف (4 بايت). وسيعيد استعلام test1.wat.org الجزء الثاني من الملف، وهكذا...

عند استخدام نطاقات البدل مثل الأمثلة أعلاه، يمكن وضع أرقام "الجزء" (chunk) في أي مكان ولا يلزم جمعها معًا. على سبيل المثال، سيعيد استعلام A لـ 1aliens2.wat.org الجزء الثاني عشر من الملف.

سجلات TXT تدعم خيارات إضافية لتجهيز الملفات لأنها تسمح بمرونة أكبر:```toml [TXT] "ns*.dungbeetle.org" = { file = "~/payload.exe", chunk_size = 189, response_format = "{prefix}test-{chunk}", response_prefix_pool = ["atlassian-domain-verification=", "onetrust-domain-verification=", "docusign=" ] }

root@kitploit:~
مع هذا التكوين، أي استعلام `TXT` إلى `ns*.dungbeetle.org` سيعيد جزءًا من ملفنا الموجود محليًا على نظام الملفات في `~/payload.exe`.

إعدادات `response_format` و `response_prefix_pool` اختيارية ولكنها تسمح لك بتخصيص استجابة DNS `TXT` بشكل أكبر.

يحدد إعداد `response_format` تنسيق استجابة `TXT`:

- سيتم استبدال متغير `{prefix}` عشوائيًا بأحد القيم المعرفة في مصفوفة `response_prefix_pool`.

- سيتم استبدال متغير `{chunk}` بجزء الملف.

مع التكوين أعلاه، سيعيد استعلام `TXT` إلى `ns1.dungbeetle.org` الاستجابة التالية:```
docusign=test-<BASE64_ENCODED_FILE_CHUNK_N1>

إذا قمت بإجراء استعلام TXT آخر (مثل ns10.dungbeetle.org)، سترى أن البادئة ستتغير:``` atlassian-domain-verification=test-<BASE64_ENCODED_FILE_CHUNK_N10>

root@kitploit:~
## التصفية المتقدمة

يمكنك الجمع بين المدخلات من ملف وسطر الأوامر. على سبيل المثال، يستخدم الأمر التالي كلاً من المعاملين `--file` و `--fakedomains`:

    # ./dnschef.py --file dnschef.toml --fakeip 6.6.6.6 --fakedomains=thesprawl.org,slashdot.org -q
    [*] DNSChef started on interface: 127.0.0.1 
    [*] Using the following nameservers: 8.8.8.8
    [+] Cooking A replies for domain *.google.com with '192.0.2.1'
    [+] Cooking A replies for domain thesprawl.org with '192.0.2.2'
    [+] Cooking A replies for domain *.wordpress.* with '192.0.2.3'
    [*] Cooking A replies to point to 6.6.6.6 matching: *.wordpress.*, *.google.com, thesprawl.org
    [*] Cooking A replies to point to 6.6.6.6 matching: slashdot.org, *.wordpress.*, *.google.com, thesprawl.org
    [00:49:05] 127.0.0.1: cooking the response of type 'A' for google.com to 192.0.2.1
    [00:49:15] 127.0.0.1: cooking the response of type 'A' for slashdot.org to 6.6.6.6
    [00:49:31] 127.0.0.1: cooking the response of type 'A' for thesprawl.org to 6.6.6.6
    [00:50:08] 127.0.0.1: proxying the response of type 'A' for tor.com

لاحظ أن تعريف *thesprawl.org* في معامل سطر الأوامر كان له الأولوية على *dnschef.toml*. قد يكون هذا مفيدًا إذا أردت تجاوز القيم في ملف الإعدادات. لا يزال slashdot.org يتحلّل إلى عنوان IP الوهمي لأنه تم تحديده في معامل *--fakedomains*. يتم تمرير طلب tor.com عبر البروكسي ببساطة لأنه لم يتم تحديده سواء في سطر الأوامر أو في ملف الإعدادات.

## إعدادات أخرى

لأسباب أمنية، يستمع DNSChef افتراضيًا على الواجهة المحلية 127.0.0.1 (أو ::1 لعنوان IPv6). يمكنك جعل DNSChef يستمع على واجهة أخرى باستخدام المعامل *--interface*:

    # ./dnschef.py --interface 0.0.0.0 -q
    [*] DNSChef started on interface: 0.0.0.0
    [*] Using the following nameservers: 8.8.8.8 
    [*] No parameters were specified. Running in full proxy mode
    [00:50:53] 192.0.2.105: proxying the response of type 'A' for thesprawl.org

أو لـ IPv6:

    # ./dnschef.py -6 --interface :: -q
    [*] Using IPv6 mode.
    [*] DNSChef started on interface: ::
    [*] Using the following nameservers: 2001:4860:4860::8888
    [*] No parameters were specified. Running in full proxy mode
    [00:57:46] 2001:db8::105: proxying the response of type 'A' for thesprawl.org

بشكل افتراضي، يستخدم DNSChef خادم DNS العام من Google لإجراء طلبات البروكسي. ومع ذلك، يمكنك تحديد قائمة مخصصة من خوادم الأسماء باستخدام المعامل *--nameservers*:

    # ./dnschef.py --nameservers 4.2.2.1,4.2.2.2 -q
    [*] DNSChef started on interface: 127.0.0.1 
    [*] Using the following nameservers: 4.2.2.1, 4.2.2.2
    [*] No parameters were specified. Running in full proxy mode
    [00:55:08] 127.0.0.1: proxying the response of type 'A' for thesprawl.org

من الممكن تحديد منفذ غير قياسي لخادم الأسماء باستخدام صيغة IP#PORT:

    # ./dnschef.py --nameservers 192.0.2.2#5353 -q
    [*] DNSChef started on interface: 127.0.0.1 
    [*] Using the following nameservers: 192.0.2.2#5353
    [*] No parameters were specified. Running in full proxy mode
    [02:03:12] 127.0.0.1: proxying the response of type 'A' for thesprawl.org

في الوقت نفسه، من الممكن تشغيل DNSChef نفسه على منفذ بديل باستخدام المعامل `-p port#`:

    # ./dnschef.py -p 5353 -q
    [*] Listening on an alternative port 5353
    [*] DNSChef started on interface: 127.0.0.1 
    [*] Using the following nameservers: 8.8.8.8
    [*] No parameters were specified. Running in full proxy mode

يمكن استخدام بروتوكول DNS عبر UDP (الافتراضي) أو TCP. يوفر DNSChef وضع TCP يمكن تفعيله باستخدام العلامة `--tcp`.
تنزيل الأداة
RecordDescriptionArgumentExample
Aعنوان IPv4--fakeip--fakeip 192.0.2.1
AAAAعنوان IPv6--fakeipv6--fakeipv6 2001:db8::1
MXخادم البريد--fakemail--fakemail mail.fake.com
CNAMEسجل CNAME--fakealias--fakealias www.fake.com
NSخادم الأسماء--fakens--fakens ns.fake.com