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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
dtls-fuzzer — dtls-fuzzer هو مختبر حالة البروتوكول لتطبيقات خادم DTLS. | Kitploit
أدوات/GitLabGitLab/pfg666/dtls-fuzzer
الاختبار العشوائيأمن الشبكات
GitLabpfg666/dtls-fuzzer

dtls-fuzzer

dtls-fuzzer هو مختبر حالة البروتوكول لتطبيقات خادم DTLS.

عرض المستودع
66منذ 5 سنواتلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

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

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

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

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

dtls-fuzzer هي أداة ‎Java‎ تقوم بتنفيذ اختبارات الحالة البروتوكولية (protocol state fuzzing) لخوادم DTLS . بشكل أكثر تحديدًا، فهي تدعم الوظائف التالية:

  1. بالنظر إلى مجموعة حروف (alphabet)، يمكنها إنشاء نموذج لتطبيق خادم DTLS محلي تلقائيًا؛
  2. بالنظر إلى اختبار (تسلسل من المدخلات) ومجموعة حروف، يمكنها تنفيذ الاختبار على تطبيق خادم DTLS؛
  3. يمكنها تشغيل مهمة تعلم جماعي، تتضمن عمليات تعلم متعددة.

يستخدم dtls-fuzzer [TLS-Attacker][tlsattacker] لإنشاء/تحليل رسائل DTLS وكذلك للحفاظ على الحالة.
لتحقيق ذلك، تم توسيع TLS-Attacker لدعم DTLS.
يعتمد dtls-fuzzer على [الإصدار 3.0b][tlsattackerver] من TLS-Attacker، وهو إصدار يطبق تحسين DTLS.

محتويات القطعة الأثرية (Artifact)

تحتوي القطعة الأثرية على:

  1. وصف لهيكل الملفات لـ dtls-fuzzer، بما في ذلك الكود المصدري والبيانات التجريبية المتوافقة مع ما هو معروض في الورقة البحثية؛
  2. دليل إرشادي لتقييم dtls-fuzzer على SUT محدد (النظام قيد الاختبار) / تطبيق خادم DTLS.

هيكل ملفات dtls-fuzzer

المجلدات الأكثر أهمية في الدليل الجذر لـ dtls-fuzzer هي:

  1. 'src'، الدليل الذي يحتوي على كود Java المصدري لـ dtls-fuzzer؛
  2. 'examples'، الدليل الذي يحتوي على أمثلة لمجموعات الحروف، والاختبارات، والمواصفات (أي النماذج)، وملفات الوسائط التي يمكن توفيرها لـ dtls-fuzzer لبدء تجارب التعلم. تُستخدم الملفات في هذا الدليل كمدخلات لتجارب التعلم؛
  3. 'experiments'، الدليل الذي يحتوي على بيانات تتعلق بالتجارب. بعض هذه البيانات تعمل أيضًا كمدخلات لتجارب التعلم. المجلدات الأكثر بروزًا هي:
    1. 'suts'، مع ملفات ثنائية لـ SUTs بلغة Java. هذه الـ SUTs هي برامج خادم DTLS مصنوعة خصيصًا وكودها المصدري متاح للعموم؛
    2. 'patches'، التصحيحات التي تم تطبيقها على بعض الـ SUTs (خاصة على الأدوات المساعدة) قبل تجميع الكود المصدري. الغرض الأساسي من هذه التصحيحات هو منع السلوك الناتج عن التوقيت أثناء التعلم، وتمكين/تعطيل الوظائف في الـ SUT، وتهيئة المعلمات مثل المفتاح المشترك مسبقًا؛
    3. 'keystore'، المواد الأساسية للمفاتيح (مثل أزواج المفاتيح العامة-الخاصة، مخازن المفاتيح بلغة Java) المستخدمة أثناء التعلم؛
    4. 'results'، النتائج التجريبية.

النتائج التجريبية

يحتوي 'experiments/results' على النتائج التجريبية، وهي المخرجات الرئيسية للعمل. على وجه الخصوص:

  • 'all_ciphers' يحتوي على مجلدات المخرجات لجميع التجارب التي تم تشغيلها؛
    • 'mapper' يحتوي على نتائج تجريبية تساعد في تبرير بعض قرارات المخطط (انظر القسم 5.2)
  • 'included' يحتوي على مجلدات المخرجات للتجارب المتقاربة (التقارب يعني أن التعلم ينتج نموذجًا بنجاح).
    • لاحظ أنه ليست كل التجارب في 'all_ciphers' كانت ناجحة / انتهت بنموذج نهائي (نقول في مثل هذه الحالات أن التعلم لم يتقارب)

مجلدات المخرجات

يتم تسمية مجلدات المخرجات بناءً على تكوين التجربة، أي:

  • الـ SUT / التطبيق المختبر؛
  • مجموعة الحروف المستخدمة، من حيث خوارزميات تبادل المفاتيح المغطاة، حيث يشير 'all' إلى استخدام جميع خوارزميات تبادل المفاتيح الأربعة؛
  • حيثما ينطبق، ما إذا كانت شهادة العميل مطلوبة (req)، اختيارية (nreq) أو معطلة (none)؛
  • خوارزمية الاختبار: المشي العشوائي (rwalk) أو تكييف له (stests)؛
    • لم يتم تضمين التجارب التي تستخدم التكييف في الورقة البحثية
  • اختياريًا، ما إذا كانت عمليات إعادة الإرسال مضمنة في / مستبعدة من المخرجات (incl أو excl).
    • تم تضمين عمليات إعادة الإرسال افتراضيًا

كمثال، يشير اسم المجلد 'jsse-12_rsa_cert_none_rwalk_incl' إلى تجربة على تطبيق JSSE 12 لـ DTLS، باستخدام مجموعة حروف تشمل مدخلات لإجراء مصافحات RSA، ومصادقة شهادة العميل معطلة، وخوارزمية الاختبار هي المشي العشوائي وعمليات إعادة الإرسال مضمنة.

يحتوي مجلد المخرجات على:

  • 'alphabet.xml'، مجموعة الحروف المدخلة؛
  • 'command.args'، ملف الوسائط المستخدم الذي يحتوي على معلمات التجربة المختلفة، وأبرزها:
    • queries، الحد الأقصى لعدد اختبارات المشي العشوائي التي يجب أن تمر لاعتبار الفرضية نهائية
    • equivalenceAlgorithms، خوارزميات الاختبار المعتمدة على النموذج المستخدمة
    • runWait و timeout، مهلة البداية ومهلة الاستجابة على التوالي (سنذكرها لاحقًا)
  • 'sul.config'، تكوين يعتمد على الـ SUT لـ TLS-Attacker، يمكن استخدام نفس التكوين لتنفيذ آثار سير العمل على الـ SUT باستخدام TLS-Attacker وحده؛
  • 'hyp[0-9]+.dot'، الفرضيات الوسيطة؛
  • 'statistics.txt'، إحصائيات التجربة مثل العدد الإجمالي للاختبارات، وقت التعلم؛
    • يعرض الجدول 4 هذه البيانات
  • 'nondet.log'، سجلات السلوك غير الحتمي الذي تم مواجهته؛
  • 'learnedModel.dot'، في حالة تقارب التعلم، النموذج المتعلم (أي الفرضية النهائية)؛
  • 'error.msg'، رسالة خطأ تم إنشاؤها في حالة فشل التجربة / توقف التعلم وبالتالي، لم يتقارب إلى نموذج نهائي.
    • السبب الرئيسي هو عدم الحتمية المتعلقة بالوقت (نفس المدخلات تؤدي إلى نتائج مختلفة).

يمكن للمقيّم التحقق (على سبيل المثال) من أن النتائج التجريبية في 'included' تتوافق مع تلك المعروضة في الجدول 4، أو أن التكوينات التي تم اختبارها في الجدول 2 تظهر أيضًا في 'all_ciphers'. لاحظ أن النماذج التي تظهر في الورقة البحثية كانت نتيجة تقليم / تشذيب كبير، بينما النماذج التي تظهر في مجلدات المخرجات غير معدلة.

خطوات تقييم dtls-fuzzer

لغرض تقييم dtls-fuzzer من الضروري تنفيذ الخطوات التالية:

  1. التأكد من استيفاء المتطلبات الأساسية
  2. تثبيت dtls-fuzzer
  3. إعداد الـ SUT
  4. استخدام dtls-fuzzer لإنشاء نماذج للـ SUT
  5. تحليل النتائج

يتبع هذا القسم الخاص بالتقييم دليل حول استخدام dtls-fuzzer يقدم حالات الاستخدام الرئيسية له.

التأكد من المتطلبات الأساسية

تم اختبار dtls-fuzzer على توزيعات Ubuntu 18.04 و Debian 9 من Linux. يجب أن يعمل على أي توزيعة Linux حديثة. لم يتم اختبار الدعم للمنصات الأخرى. يفترض هذا الدليل استخدام توزيعة قائمة على Debian (والتي تحتوي على 'apt-get').

يلزم وجود جهاز افتراضي (VM) Java 8 JDK (Java Development Kit). الإصدار المستخدم لتشغيل التجارب هو 1.8.0_222، على الرغم من أن الإصدارات الأحدث من Java 8 يجب أن تعمل أيضًا. لاحظ أن الأداة لا تُبنى على Java 9 أو أحدث. نعتمد أيضًا على maven (أداة 'mvn') لإدارة التبعيات / النشر.

نوصي باستخدام جهاز قوي بما فيه الكفاية، وإلا قد تصبح معلمات التوقيت الحساسة مثل وقت انتظار الاستجابة منخفضة جدًا، مما يسبب مخرجات مختلفة عن تلك التي تم الحصول عليها في الورقة البحثية. والأسوأ من ذلك، يمكن أن تتسبب في فشل تجارب التعلم. تم تشغيل التجارب الأصلية على خادم متعدد النوى، ومع ذلك، نتوقع (على الرغم من أننا لم نختبر بدقة) أن التعلم يجب أن يكون ممكنًا على جهاز مكتبي بمعالج i7. التعلم ممكن أيضًا على الأنظمة الأضعف إذا تم ضبط معلمات التوقيت وفقًا لذلك. أخيرًا، تتطلب تصور نماذج .dot عن طريق تصديرها إلى .pdf تثبيت [مكتبة graphviz][graphviz]. من المفترض أن تكون أداة 'dot' التي توفرها graphviz موجودة في PATH النظام.

باختصار، المتطلبات الأساسية الموصى بها هي:

  • توزيعة Linux حديثة، ويفضل أن تكون قائمة على Debian
  • جهاز مكتبي / خادم لإعادة إنتاج التجارب / تعلم موثوق
  • (>=) 4 GB RAM
  • Java 8 JDK
  • maven
  • graphviz

إعداد البيئة

Java 8 JDK

يتطلب dtls-fuzzer Java 8 JDK (Java Development Kit). إذا لم يكن Java مثبتًا، نقوم بتثبيت تطبيق OpenJDK (عبر 'apt-get' على Ubuntu)، ويمكننا تخطي بقية هذا القسم الفرعي.

> sudo apt-get install openjdk-8-jdk

إذا كان إصدار java مثبتًا، يمكننا التحقق من الإصدار عن طريق تشغيل:

> java -version

يجب أن يبدأ رمز الإصدار بـ 1.8 (مثل 1.8.0_242)، ويجب أن يكون الجهاز الافتراضي "Server VM" (مما يشير إلى أن JDK الكامل مثبت، وليس فقط بيئة التشغيل). إذا كان الأمر كذلك، فقد انتهينا من Java. إذا لم يكن كذلك، يمكننا التحقق مما إذا كان Java 8 JDK مثبتًا على منصتنا ولكن غير محدد حاليًا، عن طريق سرد أجهزة Java الافتراضية المثبتة عبر:

> update-java-alternatives --list

إذا ظهر Java 8 JDK، يمكننا استخدام نفس الأمر لتكوين Java 8 JDK ليكون تطبيق Java الافتراضي.

> sudo update-java-alternatives --set java-1.8.0-openjdk-amd64

خلاف ذلك، نحتاج إلى إجراء التثبيت الكامل كما هو موضح في البداية. لسوء الحظ، لا ينجح 'update-java-alternatives' أحيانًا، كما تشير رسائل "error". إذا نشأت مثل هذه الحالة، يمكننا استخدام 'update-alternatives' لتكوين أي جهاز Java افتراضي يتم تحديده بواسطة 'java' (المفسر) و 'javac' (المترجم) بشكل تفاعلي.

> sudo update-alternatives --config java
> sudo update-alternatives --config javac

أخرى

مع ضبط Java 8، ننتقل إلى تثبيت التبعيات الأخرى، maven، graphviz بالإضافة إلى بعض تبعيات SUT الشائعة. ثم نستنسخ مستودع dtls-fuzzer إلى مجلد من اختيارنا، مع التحقق من فرع القطعة الأثرية. للإنهاء، نجعل هذا المجلد هو الدليل الحالي لدينا.

تنزيل الأداة