Skip to content
KitploitKITPLOIT
أدواتعمليات الاستغلالالمدونة
Log in
إرسال
أدواتعمليات الاستغلالالمدونة
إرسال

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
iodine — مرّر بيانات IPv4 عبر خوادم DNS لتجاوز قيود جدار الحماية وتوفير وصول شبكة خفي لاختبار الاختراق. | Kitploit
أدوات/GitHubGitHub/yarrick/iodine
التهرب من IDS/IPSتسريب البياناتأمن الشبكاتاختبار الاختراقالقيادة والسيطرةالفريق الأحمرأداة الوصول عن بعدالأفضل في تسريب البيانات #2الأفضل في التهرب من IDS/IPS #13
8.0k598107منذ 2 أيامتمت المراجعة من قبل Kitploit
GitHub
yarrick/iodine

iodine

مرّر بيانات IPv4 عبر خوادم DNS لتجاوز قيود جدار الحماية وتوفير وصول شبكة خفي لاختبار الاختراق.

عرض المستودعالموقع الإلكتروني

الأكثر شعبية

عرض الكل →

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

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

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

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

iodine - https://code.kryo.se/iodine

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

الترجمة

لتجميع iodine تحتاج إلى meson. شغّل الأوامر التالية للتجميع داخل دليل build:

meson setup build
cd build
ninja

لبناء وتشغيل الاختبارات تحتاج إلى مكتبة check. ابدأها بتشغيل ninja test داخل دليل البناء.

البدء السريع

جرّبه داخل شبكتك المحلية! اتبع هذه الخطوات البسيطة:

  • على الخادم، شغّل: ./iodined -f 10.0.0.1 test.com. إذا كنت تستخدم شبكة 10.0.0.0 بالفعل، استخدم شبكة داخلية أخرى مثل 172.16.0.0.
  • أدخل كلمة مرور.
  • على العميل، شغّل: ./iodine -f -r 192.168.0.1 test.com. استبدل 192.168.0.1 بعنوان IP الخاص بخادمك.
  • أدخل نفس كلمة المرور.
  • الآن أصبح لدى العميل عنوان النفق 10.0.0.2 ولدى الخادم 10.0.0.1.
  • جرّب عمل ping لبعضكما البعض عبر النفق.
  • انتهيت! :)

لاستخدامه فعليًا عبر خادم أسماء وسيط، انظر أدناه.

كيفية الاستخدام

ملاحظة: يجب أن يتحدث الخادم والعميل نفس البروتوكول بالضبط. في معظم الحالات، يعني ذلك تشغيل نفس إصدار iodine. لسوء الحظ، عادةً ما يكون تنفيذ التوافق البروتوكولي للأمام والخلف غير ممكن.

جانب الخادم

لاستخدام هذا النفق، تحتاج إلى التحكم في نطاق حقيقي (مثل mydomain.com)، وخادم بعنوان IP عام لتشغيل iodined عليه. إذا كان هذا الخادم يشغّل برنامج DNS بالفعل، فغيّر منفذ الاستماع الخاص به ثم استخدم خيار -b في iodined للسماح لـ iodined بإعادة توجيه طلبات DNS. (لاحظ أن هذا الإجراء غير مُوصى به في بيئات الإنتاج، لأن إعادة توجيه DNS في iodined ليست شفافة تمامًا، على سبيل المثال لن تعمل عمليات نقل المنطقة.) بدلاً من ذلك يمكنك إعادة توجيه النطاق الفرعي من خادم DNS الخاص بك إلى iodined والذي يجب حينها أن يعمل على منفذ مختلف (-p).

ثم، فوّض نطاقًا فرعيًا (مثلاً، t1.mydomain.com) إلى خادم iodined. إذا كنت تستخدم BIND لنطاقك، أضف سطرين مثل هذين إلى ملف المنطقة:

t1		IN	NS	t1ns.mydomain.com.		; note the dot!
t1ns		IN	A	10.15.213.99

سطر NS هو كل ما تحتاجه لتوجيه الاستعلامات الخاصة بالنطاق الفرعي t1 إلى خادم t1ns. نستخدم اسمًا قصيرًا للنطاق الفرعي، للحفاظ على أكبر قدر ممكن من المساحة المتاحة لحركة البيانات. في نهاية سطر NS يوجد اسم خادم iodined الخاص بك. يمكن أن يكون أي اسم، يشير إلى أي مكان، لكن في هذه الحالة يسهل الاحتفاظ به في نفس ملف المنطقة. يجب أن يكون اسمًا (وليس عنوان IP)، ويجب أن يكون لهذا الاسم نفسه سجل A (وليس CNAME).

إذا كان خادم iodined الخاص بك لديه IP ديناميكي، استخدم مزود DNS ديناميكي. ببساطة وجّه سطر NS إليه، واترك سطر A خارجًا:

t1		IN	NS	myname.mydyndnsprovider.com.	; note the dot!

ثم أعد تحميل أو أعد تشغيل برنامج خادم الأسماء الخاص بك. الآن أي استعلامات DNS للنطاقات المنتهية بـ t1.mydomain.com سيتم إرسالها إلى خادم iodined الخاص بك.

أخيرًا شغّل iodined على خادمك. الوسيطة الأولى هي عنوان IP داخل النفق، والذي يمكن أن يكون من أي نطاق لا تستخدمه بعد (على سبيل المثال 192.168.99.1)، والوسيطة الثانية هي النطاق المعيّن (في هذه الحالة t1.mydomain.com). استخدام خيار -f سيبقي iodined يعمل في المقدمة، مما يساعد عند الاختبار. سيفتح iodined واجهة افتراضية ("tun device")، وسيبدأ أيضًا في الاستماع لاستعلامات DNS على منفذ UDP 53. إما أدخل كلمة مرور على سطر الأوامر (-P pass) أو بعد أن يبدأ الخادم. الآن كل شيء جاهز للعميل.

إذا كانت هناك احتمالية لاستخدام نفق iodine من بيئات غير متوقعة، فشغّل iodined مع خيار -c. سطر الأوامر الناتج في حالة المثال هذه:

./iodined -f -c -P secretpassword 192.168.99.1 t1.mydomain.com

جانب العميل

تم إنجاز كل الإعداد، فقط شغّل iodine. يأخذ وسيطة واحدة أو اثنتين، الأولى هي خادم DNS الوسيط المحلي (اختياري) والثانية هي النطاق الذي استخدمته (t1.mydomain.com). إذا لم تحدد الوسيطة الأولى، سيتم الرجوع إلى إعداد DNS الحالي للنظام.

إذا كانت استعلامات DNS مسموحًا بها لأي جهاز كمبيوتر، يمكنك إعطاء عنوان خادم iodined مباشرة كوسيطة أولى (في المثال: t1ns.mydomain.com أو 10.15.213.99). في هذه الحالة، قد يحدث أيضًا أن أي حركة مرور مسموح بها إلى منفذ DNS (53 UDP) لأي جهاز كمبيوتر. سيكتشف Iodine هذا، وسيتحول إلى نفق UDP خام إذا كان ذلك ممكنًا. لفرض نفق DNS في أي حال، استخدم خيار -r (مفيد بشكل خاص عند الاختبار داخل شبكتك الخاصة).

ستحصل واجهة النفق الخاصة بالعميل على IP قريب من IP الخادم (في هذه الحالة 192.168.99.2 أو .3 إلخ) و MTU مناسب. أدخل نفس كلمة المرور كما على الخادم إما كخيار سطر أوامر أو بعد أن يبدأ العميل. استخدام خيار -f سيبقي عميل iodine يعمل في المقدمة.

سطر الأوامر الناتج في حالة المثال هذه، إضافة -r تفرض نفق DNS حتى لو كان نفق UDP الخام ممكنًا:

./iodine -f -P secretpassword t1.mydomain.com

من أي من الجانبين، يجب أن تكون الآن قادرًا على عمل ping لعنوان IP على الطرف الآخر من النفق. في هذه الحالة، ping 192.168.99.1 من عميل iodine، و 192.168.99.2 من خادم iodine.

معلومات متنوعة

IPv6

البيانات داخل النفق هي IPv4 فقط.

يستمع الخادم لكل من IPv4 و IPv6 للطلبات الواردة افتراضيًا. استخدم الخيارين -4 أو -6 للاستماع على بروتوكول واحد فقط. سيتم محاولة الوضع الخام على نفس البروتوكول المستخدم لتسجيل الدخول.

يمكن للعميل استخدام خوادم أسماء IPv4 أو IPv6 للاتصال بـ iodined. ستترجم خوادم الأسماء الوسيطة بين البروتوكولات تلقائيًا إذا لزم الأمر. استخدم الخيارين -4 أو -6 لإجبار العميل على استخدام إصدار IP محدد لاستعلامات DNS الخاصة به.

إذا كان خادمك يستمع على IPv6 ويمكن الوصول إليه، أضف سجل AAAA له في إعداد DNS الخاص بك. توسيع المثال أعلاه سيبدو هكذا:

t1		IN	NS	t1ns.mydomain.com.		; note the dot!
t1ns		IN	A	10.15.213.99
t1ns		IN	AAAA	2001:db8::1001:99

التوجيه

من الممكن توجيه كل حركة المرور عبر نفق DNS. للقيام بذلك، أولاً أضف مسار مضيف إلى خادم الأسماء المستخدم بواسطة iodine عبر الواجهة السلكية/اللاسلكية مع البوابة الافتراضية كبوابة. ثم استبدل البوابة الافتراضية بعنوان IP لخادم iodined داخل نفق DNS، وقم بتكوين الخادم للقيام بـ NAT.

ومع ذلك، لاحظ أن حركة البيانات المنقولة عبر النفق غير مشفرة على الإطلاق، ويمكن قراءتها وتغييرها من قبل أطراف خارجية بسهولة نسبيًا. لأقصى أمان، شغّل VPN عبر نفق DNS (=نفق مزدوج)، أو استخدم وصول secure shell (SSH)، ربما مع إعادة توجيه المنافذ. يمكن استخدام الأخير أيضًا لتصفح الويب، عندما تشغّل وكيل ويب (على سبيل المثال Privoxy) على خادمك.

الاختبار

يرد خادم iodined على طلبات NS المرسلة للنطاقات الفرعية لنطاق النفق. إذا كان نطاق iodined الفرعي هو t1.mydomain.com، أرسل طلب NS لـ foo123.t1.mydomain.com لترى إذا كان التفويض يعمل. dig أداة جيدة لهذا:

% dig -t NS foo123.t1.mydomain.com
ns.io.citronna.de.

أيضًا، سيجيب خادم iodined على الطلبات التي تبدأ بـ 'z' لأي من أنواع الطلبات المدعومة، على سبيل المثال:

dig -t TXT z456.t1.mydomain.com
dig -t SRV z456.t1.mydomain.com
dig -t CNAME z456.t1.mydomain.com

يجب أن تبدو الردود كنص مشوّه في كل هذه الحالات.

Mac OS X

على Mac OS X 10.6 وما بعده، يدعم iodine أجهزة utun الأصلية المدمجة في نظام التشغيل - استخدم -d utunX.

معلومات تشغيلية

عادةً ما يتم الاستكشاف التلقائي لحجم جزء استجابة DNS للحصول على أقصى عرض نطاق. لفرض قيمة محددة (وتسريع الأمور)، استخدم خيار -m.

عادةً ما تُستخدم أسماء مضيفي DNS حتى طولها الأقصى، 255 حرفًا. تم العثور على بعض مرحّلات DNS التي تجيب على استعلامات كاملة الطول بشكل غير موثوق، مما يعطي نتائج متباينة بشكل واسع (وفي الغالب سيئة جدًا) للاستكشاف التلقائي لحجم الجزء عند المحاولات المتكررة. في هذه الحالات، استخدم مفتاح -M لتقليل طول اسم مضيف DNS إلى، على سبيل المثال 200 حرف، مما يجعل مرحّلات DNS هذه أكثر استقرارًا بكثير. هذا مفيد أيضًا في بعض مرحّلات DNS "المُزيلة للتحسين" التي تحشو الاستجابة بنسختين كاملتين من الاستعلام، تاركة مساحة صغيرة جدًا لبيانات المصب (وأيضًا غير قادرة على EDNS0). يمكن لمفتاح -M مقايضة بعض عرض النطاق الصاعد بعرض النطاق الهابط. لاحظ أن الحد الأدنى لقيمة -M هو حوالي 100، لأن البروتوكول يمكنه تقسيم الحزم (1200 بايت كحد أقصى) إلى 16 جزءًا فقط، مما يتطلب على الأقل 75 بايت بيانات حقيقية لكل جزء.

تنزيل الأداة