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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
sfuzz — فيزينغ عالي الأداء باستخدام الترجمات الثنائية من riscv إلى x86 وتقنيات فيزينغ حديثة | Kitploit
أدوات/GitHubGitHub/seal9055/sfuzz
التحليل الديناميكي (عزل)تحليل الثغرات الأمنيةالاختبار العشوائيتحليل الملفات الثنائية
GitHubseal9055/sfuzz

sfuzz

فيزينغ عالي الأداء باستخدام الترجمات الثنائية من riscv إلى x86 وتقنيات فيزينغ حديثة

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

الأكثر شعبية

عرض الكل →

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

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

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

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

SFUZZ

تاريخ البدء: ديسمبر 2021

هذه أداة فحص (fuzzer) رمادية الصندوق (greybox) قائمة على المحاكاة وموجهة بالتغطية، وتستفيد من مترجم مخصص في الوقت المناسب (Just-In-Time) لتحقيق أداء قريب من الأداء الأصلي. تعمل عن طريق رفع ملفات RISC-V elf الثنائية إلى تمثيل وسيط قبل ترجمتها في الوقت المناسب (JIT) إلى x86 أثناء التنفيذ. أثناء الترجمة في الوقت المناسب، يتم تزويد الكود بأدوات القياس (instrumentation) لتمكين تحسينات الفحص مثل تتبع التغطية، وasan، وcmpcov، أو الفحص القائم على اللقطات (snapshots).


الميزات

  • متعدد الخيوط، يدعم عددًا غير محدود من الخيوط والتوسع بشكل شبه خطي
  • مترجم JIT مخصص للأداء العالي، والأهم من ذلك قابلية التخصيص التي يصعب تحقيقها مع حلول أخرى مثل qemu
  • وحدة إدارة ذاكرة مخصصة تتيح مرة أخرى تخصيصًا عاليًا وميزات مفيدة للغاية مثل فحوصات الأذونات على مستوى البايت وإعادة تعيين المحاكي القائمة على البتات المتسخة (dirty-bit). بالإضافة إلى ذلك، تم تنفيذ خطافات (hooks) للسماح بالاستخدام الآمن لإجراءات الكومة (heap-routines).
  • إدارة ملفات افتراضية لتمكين الفحص السهل داخل الذاكرة
  • فحص قائم على اللقطات، بحيث يمكن التقاط حالة ذاكرة/مسجلات الهدف أثناء التنفيذ ليكون أساسًا لجميع حالات الفحص المستقبلية
  • تتبع تغطية على مستوى الحواف، وفحص موجه بالتغطية بناءً على هذه التغذية الراجعة
  • مُبدِّلات متعددة، وإزالة تكرار الأعطال، وخوارزمية بسيطة لجدولة البذور

الوصف

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

من نواحٍ عديدة، هذا المشروع هو أقرب إلى إثبات مفهوم (proof-of-concept) أردت العمل عليه لتعلم دواخل المترجمات (compiler internals)، وللحصول على بيئة لعب قائمة على المحاكاة لتجربة تقنيات فحص مختلفة مثل مقاييس التغطية المختلفة، وجدولة البذور، والفحص القائم على اللقطات. ومع المزيد من تحسينات JIT، والأهم من ذلك توسيعه ليشمل معماريات أكثر شيوعًا مثل mips أو arm، يمكن بالتأكيد استخدامه بكفاءة لفحص الكود مغلق المصدر الذي لا يمكن ببساطة تزويده بأدوات القياس عبر إعادة الترجمة.

بالنظر إلى الاختبارات التي أجريتها حتى الآن، فإن sfuzz يتمتع بتكلفة إضافية (overhead) أقل بكثير من العديد من أدوات الفحص الشائعة الأخرى، مما يؤدي إلى أداء سريع جدًا، خاصةً لحالات الفحص الصغيرة.

مزيد من التفاصيل حول الميزات/الخيارات المعتمدة في أداة الفحص هذه مذكورة في منشور المدونة المرفق (https://seal9055.com/blog/fuzzing/sfuzz) وملفات التوثيق المدرجة أدناه:

  • إدارة الذاكرة - memory_management.md
  • توليد الكود - code_gen.md
  • تنفيذ/ميزات أداة الفحص - fuzzing.md
  • بعض الاختبارات البسيطة - benchmarking.md

الاستخدام

أداة الفحص هذه مكتوبة بالكامل بلغة rust، لذلك بعد استنساخ المستودع، شغّل فقط cargo build --release للترجمة.

نظرًا لأن أداة الفحص تدعم حاليًا RISC-V فقط، يجب ترجمة الهدف إلى RISC-V باستخدام سلسلة الأدوات أدناه (أو ما شابهها). بدلًا من ذلك، إذا كان لديك بالفعل ملف RISC-V ثنائي، فسيعمل بشكل مثالي أيضًا.

بمجرد إعداد ذلك، أنشئ مجلّدي الإدخال/الإخراج، وأضف بعض ملفات البذور الأولية إلى مجلد الإدخال، ثم شغّل أداة الفحص.

./sfuzz -i in -o out -- ./test_cases/simple_test @@

يمكن تمرير علامات إضافية عبر خيارات سطر الأوامر لتحديد عدد الخيوط، أو تفعيل الفحص القائم على اللقطات، أو إضافة قاموس إلى المُبدِّل، وما إلى ذلك. يمكن عرض الخيارات الإضافية عن طريق تشغيل sfuzz مع العلم -h.

إذا كنت ترغب في اختبار أداة الفحص ضد بعض الأهداف بدرجات تعقيد متفاوتة، يمكن استخدام progrem_generator الموجود في tools/program_generator لتوليد برامج بدرجات تعقيد متفاوتة تلقائيًا. لاحظ أنك ستحتاج إلى سلسلة أدوات RISC-V لترجمة الهدف بعد ذلك.

سلسلة أدوات Riscv لترجمة الملفات الثنائية لأداة الفحص

يؤدي ذلك إلى إعداد سلسلة أدوات لترجمة ملفات riscv الثنائية التي يمكن تحميلها/استخدامها بواسطة هذا المشروع.

Riscv compiler/tooling:
    sudo apt-get install autoconf automake autotools-dev curl python3 libmpc-dev libmpfr-dev \
    libgmp-dev gawk build-essential bison flex texinfo gperf libtool patchutils bc zlib1g-dev \
    libexpat-dev
    git clone https://github.com/riscv/riscv-gnu-toolchain && cd riscv-gnu-toolchain
    ./configure --prefix=/opt/riscv --with-arch=rv64i
    sudo make

Debugger:
    gdb-multiarch

TODO

تمثل هذه القائمة مجموعة من الميزات التي أخطط لتنفيذها في المستقبل.

  • وحدة إدارة ذاكرة عاملة
  • مترجم JIT
  • ملفات افتراضية للفحص داخل الذاكرة
  • فحوصات أذونات على مستوى البايت + مُخصِّصات ذاكرة مربوطة/آمنة
  • تتبع تغطية مستوى الحواف
  • وضع دائم للفحص في حلقات صغيرة حول دوال الهدف
  • إزالة تكرار الأعطال / الأعطال الفريدة
  • تحديث المُبدِّلات لتشمل خيارات أكثر
  • جدولة البذور
  • CmpCov لتجاوز القيم السحرية ومجاميع الفحص (checksums)
  • إضافة بعض الأدوات المساعدة حول أداة الفحص
  • معايير أداء مناسبة (Benchmarking)
  • تنفيذ امتدادي RISC-V M & A، بحيث يمكن لـ JIT استخدام glibc بدلًا من newlib
  • استبدال المُجمِّع لتحسين سرعة الترجمة
  • دعم المزيد من المعماريات (مثل mips, arm)
  • تحسينات JIT، ومحاولة أخرى لتخصيص السجلات

المراجع

  • جميع الأوراق البحثية المذكورة في fuzzing.md
  • Emulation based fuzzing - Brandon Falk GamozoLabs
  • Intel Software Developer Manuals
  • RISCV User ISA specification
  • Rv8: a high performance RISC-V to x86 binary translator - Michael Clark & Bruce Hoult
  • Engineerining a compiler Keith D. Cooper & Londa Torczon
  • Cranelift [https://cfallin.org/blog/] - Chris Fallin
  • Generating Low-Overhead Dynamic Binary Translators - Mathias Payer & Thomas R. Gross
  • Efficiently Computing Static Single Assignment Form and the Control Dependence Graph - Cytron et al
  • Computing Liveness Sets for SSA-Form Programs - Brandner et al
  • Linear Scan Register Allocation on SSA Form - Christian Wimmer & Michael Franz
  • http://web.cs.ucla.edu/~palsberg/course/cs132/linearscan.pdf
  • AddressSanitizer: A Fast Address Sanity Checker https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/37752.pdf
تنزيل الأداة