حديقة الحيوانات

صورة

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

ما هو AFL وما هو جيد ل؟


إن AFL عبارة عن وحدة تسترشد موجهة أو مستندة إلى التعليقات. يمكن العثور على مزيد من المعلومات حول هذه المفاهيم في ورقة رائعة بعنوان "Fuzzing: الفن والعلوم والهندسة" . دعنا نختتم معلومات عامة حول AFL:

  • يقوم بتعديل الملف القابل للتنفيذ لمعرفة كيفية تأثيره على التغطية.
  • يحول بيانات الإدخال لزيادة التغطية.
  • كرر الخطوة السابقة للعثور على مكان تعطل البرنامج.
    • انها فعالة للغاية ، والتي ثبت من خلال الممارسة.
      • انها سهلة جدا للاستخدام.


إليك تمثيل رسومي:

صورة

إذا كنت لا تعرف ماهية AFL ، فإليك قائمة بالموارد المفيدة التي يمكنك البدء بها:

  1. الصفحة الرسمية للمشروع .
  2. التدريب - مقدمة قصيرة عن AFL.
  3. afl-demo - عرض بسيط من دمج برامج C ++ مع AFL.
  4. afl-cve - مجموعة من الثغرات الموجودة في AFL (لم يتم تحديثه منذ 2017).
  5. هنا يمكنك أن تقرأ عن الأشياء التي تضيفها AFL إلى البرنامج أثناء بنائها.
  6. بعض النصائح المفيدة حول دمج تطبيقات الشبكة.

في لحظة كتابة هذا المقال ، كان أحدث إصدار من AFL هو 2.52b . يجري التطوير النشط ، مع مرور الوقت يتم دمج بعض التطورات الجانبية في فرع AFL الرئيسي وتزداد أهميتها. اليوم ، يمكننا تسمية العديد من أدوات الملحقات المفيدة ، والتي يتم سردها في الفصل التالي.

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

لاحظ بعض مستخدمي AFL أن مؤلفها ، Michal Zalewski ، قد تخلى عن المشروع على ما يبدو منذ آخر تعديلات حتى 5 نوفمبر 2017. قد يكون هذا متصلاً به وهو يترك Google ويعمل في بعض المشاريع الجديدة. لذلك ، بدأ المستخدمون في عمل تصحيحات جديدة للإصدار الحالي 2.52b الحالي.

صورة

هناك أيضًا أشكال مختلفة ومشتقاتها من AFL ، والتي تتيح دمج Python أو Go أو Rust أو OCaml أو GCJ Java أو syscalls kernel أو حتى VMs بأكملها.

AFL للغات البرمجة الأخرى

- بيثون - afl - لبايثون.
- afl.rs - لبرامج مدمجة مكتوبة على Rust.
- afl-fuzz-js - afl-fuzz for javascript.
- java-afl - دمج AFL لجافا.
- kelinci - fuzzer آخر لجافا ( مقال حول هذا الموضوع).
- javan-warty-pig - fuzzer يشبه AFL لـ JVM.
- afl-swift - للبرامج المزيفة المكتوبة على سويفت.
- ocamlopt-afl - لـ OCaml.
- الزغب - fuzzer على أساس afl ل. صافي.

أدوات التبعي


بالنسبة لهذا الفصل ، قمنا بجمع العديد من البرامج النصية والأدوات لـ AFL وقسمناها إلى عدة فئات:

تحطم تجهيز

  • afl-utils - مجموعة من الأدوات المساعدة للمعالجة / التحليل التلقائي للحوادث وتقليل عدد حالات الاختبار.
  • afl-crash-analys - محلل تحطم آخر لـ AFL.
  • fuzzer-utils - مجموعة من البرامج النصية لتحليل النتائج.
  • atriage - أداة فرز بسيطة.
  • afl-kit - afl-cmin على بيثون.
  • AFLize - أداة تنشئ تلقائيًا مجموعات من حزم دبيان مناسبة لـ AFL.
  • afl-fid - مجموعة من الأدوات للعمل مع إدخال البيانات.

العمل مع تغطية الرمز

  • afl-cov - يوفر بيانات صديقة للإنسان حول التغطية.
  • count-afl-calls - تقييم النسبة. النصي بحساب عدد كتل الأجهزة في الثنائي.
  • afl-sancov - يشبه afl-cov لكن يستخدم معقم clang.
  • covnavi - برنامج نصي لتغطية الشفرة والتحليل بواسطة Cisco Talos Group.
  • LAF LLVM Passes - شيء من هذا القبيل عبارة عن مجموعة من تصحيحات AFL التي تعدل الشفرة لتسهيل عملية العثور على الفروزة.

بعض البرامج النصية لتقليل حالات الاختبار

  • afl-pytmin - غلاف لـ afl-tmin يحاول تسريع عملية تقليل حالة الاختبار باستخدام العديد من مراكز وحدة المعالجة المركزية.
  • afl-ddmin-mod - شكل من أشكال afl-tmin يعتمد على خوارزمية ddmin.
  • halfempty - هو أداة مساعدة سريعة لتقليل حالات الاختبار بواسطة Tavis Ormandy بناءً على التوازي.

التنفيذ الموزع

  • disfuzz-afl - توزيع مدمج لـ AFL.
  • AFLDFF - AFL وزعت إطار مدهش.
  • afl-launch - أداة لتنفيذ العديد من مثيلات AFL.
  • الأم - إدارة وتنفيذ العديد من fuzzers AFL متزامنة على سحابة AWS.
  • afl-in-the-cloud - برنامج نصي آخر لتشغيل AFL في AWS.
  • VU_BSc_project - اختبار مدهش لمكتبات المصادر المفتوحة باستخدام libFuzzer و AFL.

في الآونة الأخيرة ، تم نشر مقال جيد جدًا بعنوان "تحجيم AFL إلى جهاز خيط 256" .

النشر والإدارة والمراقبة والإبلاغ

  • afl-other-arch - عبارة عن مجموعة من التصحيحات والبرامج النصية لإضافة الدعم بسهولة إلى العديد من بنيات غير x86 لـ AFL.
  • التوافه - عدد قليل من النصوص الصغيرة لتبسيط إدارة AFL.
  • afl-monitor - برنامج نصي لمراقبة AFL.
  • afl-manager - خادم ويب على Python لإدارة متعدد التطبيقات.
  • afl-tools - صورة لرسو السفن باستخدام afl-latest و afl-dyninst و Triforce-afl.
  • afl-remote - خادم ويب للإدارة عن بعد لمثيلات AFL.

تعديلات AFL


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

يمكن العثور على جميع التعديلات تقريبًا على hub.docker.com

لماذا؟

  • زيادة السرعة و / أو تغطية الرمز
    • خوارزميات
    • بيئة
      • OS
      • خردوات

  • العمل دون شفرة المصدر
    • مضاهاة الكود
    • رمز الأجهزة
      • ساكن
      • ديناميكي

الأوضاع الافتراضية لعملية AFL

قبل الاستمرار في دراسة التعديلات المختلفة والشوك في AFL ، يجب أن نتحدث عن وضعين مهمين ، كانا أيضًا تعديلات في الماضي ولكن تم دمجهما في النهاية. هم Syzygy و Qemu.

وضع Syzygy - هو وضع العمل في instrument.exe
instrument.exe --mode=afl --input-image=test.exe --output-image=test.instr.exe 
يسمح Syzygy بإعادة كتابة ثنائيات PE32 بشكل ثابت باستخدام AFL ولكنه يتطلب رموزًا وديفًا إضافيًا لجعل WinAFL kernel على دراية.

يمكن رؤية وضع Qemu - الطريقة التي يعمل بها بموجب QEMU في "Internals of AFL fuzzer - QEMU Instrumentation" . تمت إضافة دعم العمل مع الثنائيات مع QEMU إلى المنبع AFL في الإصدار 1.31b. يعمل وضع AFL QEMU مع الوظيفة الإضافية للأجهزة الثنائية في محرك الترجمة الثنائي qemu tcg (مولد رمز صغير جدًا). لذلك ، يحتوي AFL على qemu النصي ، الذي يستخرج مصادر إصدار معين من qemu (2.10.0) ، ويضعهم على عدة تصحيحات صغيرة ويضع بنية معمارية محددة. بعد ذلك ، يتم إنشاء ملف يسمى afl-qemu-trace ، وهو في الواقع ملف لمضاهاة وضع المستخدم لـ (مضاهاة ملفات ELF القابلة للتنفيذ فقط) qemu-. وبالتالي ، فمن الممكن استخدام الدوي مع ردود الفعل على ثنائيات قزم للعديد من البنى المختلفة التي تدعمها qemu. بالإضافة إلى ذلك ، يمكنك الحصول على جميع أدوات AFL الرائعة ، من الشاشة مع معلومات حول الجلسة الحالية إلى أشياء متقدمة مثل تحليل afl. ولكن يمكنك أيضا الحصول على قيود qemu. أيضًا ، إذا تم إنشاء ملف باستخدام toolchain باستخدام ميزات SoC للأجهزة ، والتي تقوم بتشغيل الثنائي وغير مدعوم من qemu ، فسيتم مقاطعة الانصهار بمجرد وجود تعليمات محددة أو استخدام MMIO محدد.

إليك شوكة أخرى مثيرة للاهتمام في وضع qemu ، حيث تم زيادة السرعة 3-4 مرات باستخدام أدوات كود TCG وصرف النقود.

فوركس

يرتبط ظهور شوكات AFL أولاً وقبل كل شيء بالتغييرات والتحسينات في خوارزميات AFL الكلاسيكية.

  • pe-afl - تعديل لدمج ملفات PE التي لا تحتوي على كود مصدر في نظام التشغيل Windows OS. لتشغيله ، يحلل fuzzer البرنامج المستهدف باستخدام IDA Pro ويقوم بإنشاء المعلومات للأجهزة الثابتة التالية. ثم يتم إخماد نسخة معدلة باستخدام AFL.
  • afl-cygwin - هي محاولة لنقل AFL الكلاسيكية إلى Windows باستخدام Cygwin. لسوء الحظ ، يوجد به العديد من الأخطاء ، إنه بطيء جدًا ، وقد تم التخلي عن التطوير.
  • AFLFast (يمتد AFL مع جداول الطاقة) - أحد أول شوكات AFL. وقد أضاف الاستدلال ، والتي تسمح لها بالمرور عبر المزيد من المسارات في فترة زمنية قصيرة.
  • FairFuzz - امتداد لـ AFL ، يستهدف الفروع النادرة.
  • AFLGo - امتداد لـ AFL يعني الوصول إلى أجزاء معينة من التعليمات البرمجية بدلاً من تغطية البرنامج بالكامل. ويمكن استخدامه لاختبار بقع أو شظايا المضافة حديثا من التعليمات البرمجية.
  • PerfFuzz - امتداد لـ AFL ، يبحث عن حالات اختبار قد تؤدي إلى إبطاء البرنامج بدرجة كبيرة.
  • Pythia - امتداد لـ AFL يهدف إلى التنبؤ بمدى صعوبة العثور على مسارات جديدة.
  • Angora - هي واحدة من أحدث fuzzers ، مكتوبة على الصدأ. ويستخدم استراتيجيات جديدة للطفرة وزيادة التغطية.
  • Neuzz - الإغراق مع netwoks العصبية.
  • UnTracer-AFL - دمج AFl مع UnTracer من أجل التتبع الفعال.
  • Qsym - عملية تنفيذ تنفيذ Concolic مصممة خصيصًا للإعجاب المختلط. بشكل أساسي ، إنه محرك تنفيذ رمزي (المكونات الأساسية تتحقق كمكون إضافي لبرنامج intel pin) والذي يعمل جنبا إلى جنب مع AFL على الإندماج المختلط. هذه مرحلة من مراحل تطور ردود الفعل المبنية على الملاحظات وتدعو إلى إجراء مناقشة منفصلة. ميزته الرئيسية هي أنه يمكن القيام بتنفيذ concolic سريع نسبيا. ويرجع ذلك إلى التنفيذ الأصلي للأوامر دون تمثيل وسيط للرمز واللقطات وبعض الاستدلال. يستخدم دبوس Intel القديم (بسبب مشاكل الدعم بين libz3 و DBTs الأخرى) ويمكن حاليًا العمل مع البنى x86 و x86_64.
  • Superion - Greybox fuzzer ، ومن ميزاته الواضحة أنه إلى جانب برنامج معد ، فإنه يحصل أيضًا على مواصفات لبيانات الإدخال باستخدام قواعد ANTLR وبعد ذلك يقوم بإجراء طفرات بمساعدة هذه القواعد.
  • AFLSmart - Fuser Graybox آخر. كمدخلات ، تحصل على مواصفات لبيانات الإدخال بالتنسيق المستخدم من قِبل Puzzer.

هناك العديد من الأوراق البحثية المخصصة لتنفيذ الأساليب الجديدة وتقنيات التحبيب حيث يتم تعديل AFL. تتوفر الأوراق البيضاء فقط ، لذلك لم نكن حتى عناء ذكرها. يمكنك جوجل لهم إذا كنت تريد. على سبيل المثال ، بعض من أحدثها CollAFL: Path Sensitive Fuzzing ، EnFuzz ، "نهج فعال في دمج المترجمين الشفويين" ، ML لـ AFL.

التعديلات على أساس Qemu

  • TriforceAFL - AFL / QEMU مدمجة مع مضاهاة كاملة للنظام. شوكة بواسطة nccgroup. يسمح بدمج نظام التشغيل بأكمله في وضع qemu. يتم تحقيق ذلك بتعليمات خاصة (aflCall (0f 24)) ، والتي تمت إضافتها في QEMU x64 CPU. لسوء الحظ ، لم تعد معتمدة ؛ الإصدار الأخير من AFL هو 2.06b.
  • TriforceLinuxSyscallFuzzer - التحايل على نظام لينكس يدعو.
  • afl-qai - مشروع تجريبي صغير مع QEMU المعزز الأجهزة (كاي).

تعديل على أساس KLEE

kleefl - لتوليد حالات الاختبار عن طريق التنفيذ الرمزي (بطيء جدًا في البرامج الكبيرة).

تعديل على أساس يونيكورن

afl- unicorn - يسمح بدمج أجزاء من التعليمات البرمجية عن طريق محاكاة ذلك على محرك Unicorn . استخدمنا هذا الاختلاف من AFL بنجاح في ممارستنا ، في مجالات شفرة RTOS معينة ، والتي تم تنفيذها على SOC ، لذلك لم نتمكن من استخدام وضع QEMU. يكون هناك ما يبرر استخدام هذا التعديل في الحالة التي لا يمكننا فيها الحصول على مصادر (لا يمكننا إنشاء قائمة ثنائية مستقلة لتحليل المحلل اللغوي) ولا يأخذ البرنامج بيانات الإدخال مباشرة (على سبيل المثال ، البيانات تم تشفيره أو هو نموذج إشارة كما هو الحال في ثنائي CGC) ، ثم يمكننا عكس والعثور على وظائف الأماكن المفترضة ، حيث يتم procced البيانات في تنسيق مناسب لل fuzzer. هذا هو التعديل العام / الأكثر شيوعًا لـ AFL ، أي أنه يسمح بدمج أي شيء. إنها مستقلة عن الهندسة المعمارية والمصادر وتنسيق بيانات الإدخال والتنسيق الثنائي (المثال الأكثر وضوحًا على المعدن العاري - مجرد أجزاء من الشفرة من ذاكرة وحدة التحكم). يقوم الباحث أولاً بفحص هذا الثنائي ويكتب fuzzer ، والذي يحاكي الحالة عند إدخال إجراء المحلل اللغوي. من الواضح ، على عكس AFL ، هذا يتطلب فحصًا معينًا للثنائي. بالنسبة للبرامج الثابتة المعدنية ، مثل Wi-FI أو النطاق الأساسي ، هناك بعض العيوب التي يجب عليك وضعها في الاعتبار:

  1. علينا أن نوطن التحقق من مبلغ السيطرة.
  2. ضع في اعتبارك أن حالة fuzzer هي حالة ذاكرة تم حفظها في ملف تفريغ الذاكرة ، والتي يمكن أن تمنع fuzzer من الوصول إلى مسارات معينة.
  3. لا يوجد صرف صحي للمكالمات على الذاكرة الديناميكية ، ولكن يمكن تحقيقه يدويًا ، وسيعتمد على RTOS (يجب البحث عنه).
  4. لا يتم محاكاة تفاعل Intertask RTOS ، مما قد يمنع أيضًا العثور على مسارات معينة.

مثال للعمل مع هذا التعديل "afl-unicorn: Fuzzing Arbitrary Binary Code" و "afl-unicorn: Part 2 - Fuzzing the Unuzzable" .

قبل أن ننتقل إلى التعديلات المستندة إلى أطر عمل الأجهزة الثنائية الديناميكية (DBI) ، دعونا لا ننسى أن أعلى سرعة لهذه الأطر تظهر بواسطة DynamoRIO و Dynlnst ، وأخيراً PIN.

التعديلات المستندة إلى PIN

  • aflpin - AFL مع أجهزة Intel PIN.
  • afl_pin_mode - أجهزة AFL أخرى تتحقق من خلال PIN من Intel.
  • afl-pin - AFL with PINtool.
  • NaFl - استنساخ (من النواة الأساسية) من fuzzer AFL.
  • حاول PinAFL - مؤلف هذه الأداة ، نقل AFL إلى Windows لإخفاء الثنائيات المترجمة بالفعل. يبدو أنه قد تم بين عشية وضحاها للمتعة فقط ؛ المشروع لم يذهب إلى أبعد من ذلك. لا يحتوي المستودع على مصادر ، بل يحتوي فقط على ثنائيات مترجمة وتعليمات التشغيل. لا نعرف أي إصدار من AFL يعتمد عليه ، وهو يدعم فقط تطبيقات 32 بت.

كما ترون ، هناك العديد من التعديلات المختلفة ، لكنها ليست مفيدة للغاية في الحياة الواقعية.

التعديلات المستندة إلى Dyninst

afl-dyninst - American Fuzzy Lop + Dyninst == AFL balckbox fuzzing. ميزة هذا الإصدار هي أن أول برنامج تم بحثه (بدون الكود المصدري) يتم صياغته بشكل ثابت (أجهزة ثنائية ثابتة ، إعادة كتابة ثنائية ثابتة) مع Duninst ، ومن ثم يتم دمجه مع AFL الكلاسيكي الذي يعتقد أن البرنامج مصمم باستخدام afl- gcc / afl-g ++ / afl-as؛) كنتيجة لذلك ، فهو يسمح بالعمل بإنتاجية جيدة جدًا بدون الشفرة المصدرية - كانت في سرعة 0.25x مقارنة بالتجميع الأصلي. له ميزة كبيرة بالمقارنة مع QEMU: فهو يسمح باستخدام أجهزة المكتبات المرتبطة الديناميكية ، في حين أن QEMU لا يمكنها إلا صك الملف القابل للتنفيذ الأساسي المرتبط بشكل ثابت مع المكتبات. لسوء الحظ ، أصبح الآن مناسبًا لنظام Linux فقط. للحصول على دعم Windows ، يلزم إجراء تغييرات على Dyninst نفسها ، والتي يتم تنفيذها .

هناك شوكة أخرى ذات سرعة محسّنة وميزات معينة (بدعم من بنيات AARCH64 و PPC).

التعديلات على أساس DynamoRIO

  • drAFL - AFl + DynamoRIO - غامض دون مصادر على لينكس.
  • afl-dr - تطبيق آخر يعتمد على DynamoRIO والذي تم وصفه جيدًا على Habr.
  • afl-dynamorio - تعديل بواسطة vanhauser-thc. إليك ما يقوله عن ذلك: "قم بتشغيل AFL مع DynamoRIO عندما يتعطل afl-dyninst العادي وضع الثنائية و qemu -Q ليس خيارًا." وهو يدعم ARM و AARCH64. فيما يتعلق بالإنتاجية: DynamoRIO أبطأ بنحو 10 مرات من Qemu ، و 25 مرة أبطأ من dyninst ، ولكن حوالي 10 مرات أسرع من Pintool.
  • WinAFL - أشهر شوكة AFL Windows. (DynamoRIO ، وضع syzygy أيضا). لقد مر وقت ظهور هذا التعديل فقط لأن الكثيرين أرادوا تجربة AFL على Windows وتطبيقه على التطبيقات دون مصادر. حاليًا ، يجري تحسين هذه الأداة بشكل نشط ، وبغض النظر عن قاعدة الكود القديمة نسبيًا لـ AFL (2.43b عند كتابة هذه المقالة) ، فقد ساعدت في العثور على العديد من نقاط الضعف (CVE-2016-7212 ، CVE-2017-0073 ، CVE- 2017-0190 ، CVE-2017-11816). يعمل المختصون من فريق Google Zero Project وفريق الضعف والتخفيف التابع لـ MSRC في هذا المشروع ، لذلك يمكننا أن نأمل في مزيد من التطوير. بدلاً من أدوات وقت التحويل البرمجي ، استخدم المطورين أجهزة ديناميكية (تعتمد على DynamoRIO) ، مما أدى إلى تباطؤ كبير في تنفيذ البرنامج الذي تم تحليله ، لكن الحمل الناتج (تضاعف) مماثل لتلك الموجودة في AFL الكلاسيكية في الوضع الثنائي. كما قاموا بحل مشكلة بدء التشغيل السريع ، بعد أن أطلقوا عليه اسم الوضع المستمر. يختارون الوظيفة للتشويش (عن طريق الإزاحة داخل الملف أو حسب اسم الوظيفة الموجودة في جدول التصدير) وقياسها بحيث يمكن استدعاؤها في الدورة ، وبالتالي إطلاق العديد من عينات بيانات الإدخال دون إعادة تشغيل العملية. صدر مقال مؤخرًا ، يصف كيف عثر المؤلفون على حوالي 50 نقطة ضعف في حوالي 50 يومًا باستخدام WinAFL. وقبل قليل من نشره ، تمت إضافة وضع Intel PT إلى WinAFL ؛ detalis يمكن العثور عليها هنا .

قد يلاحظ القارئ المتقدم أن هناك تعديلات مع جميع أطر الأجهزة الشائعة باستثناء فريدا . تم العثور على الإشارة الوحيدة لاستخدام Frida مع AFL في "Chizpurfle: A Gray-Box Android Fuzzer for تخصيصات خدمة البائعين . " إن إصدار AFL مع Frida مفيد حقًا لأن Frida يدعم العديد من بنى RISC.

يتطلع العديد من الباحثين أيضًا إلى إصدار إطار عمل DBI Scopio بواسطة مؤلف Capstone و Unicorn و Keystone. استنادًا إلى هذا الإطار ، قام المؤلفون بالفعل بإنشاء جهاز fuzzer (Darko) ، ووفقًا لهم ، استخدموه بنجاح لتخليق الأجهزة المدمجة. يمكن العثور على المزيد حول هذا الموضوع في "الحفر العميق: العثور على 0 يومًا في الأنظمة المضمّنة المزدحمة بتغطية التعليمات البرمجية . "

التعديلات ، بناءً على ميزات أجهزة المعالج

عندما يتعلق الأمر بتعديلات AFL بدعم من ميزات أجهزة المعالج ، أولاً وقبل كل شيء ، فهو يسمح بتدوين رمز kernel ، وثانياً - يسمح بإعجاب التطبيقات بشكل أسرع بكثير دون استخدام شفرة المصدر.

وبالطبع ، عندما نتحدث عن ميزات أجهزة المعالج ، فإننا مهتمون في المقام الأول بـ Intel PT (تتبع المعالج). وهي متوفرة من الجيل السادس من المعالجات فصاعداً (تقريبًا ، منذ عام 2015). لذلك ، لكي تكون قادرًا على استخدام أجهزة fuzzers المذكورة أدناه ، فأنت بحاجة إلى معالج يدعم Intel PT.

  • WinAFL-IntelPT - تعديل WinAFL لجهة خارجية يستخدم Intel PT بدلاً من DynamoRIO.
  • kAFL - هو مشروع أكاديمي يهدف إلى حل المشكلة الموجهة للتغطية لإعجاب النواة المستقل بنظام التشغيل. المشكلة هي حل باستخدام برنامج Hypervisor و Intel PT. يمكن العثور على المزيد حول هذا الموضوع في الورقة البيضاء "kAFL: ردود الفعل المدعومة بالأجهزة Fuzzing for OS Kernels" .

استنتاج


كما ترون ، مجال التعديلات AFL يتطور بنشاط. لا يزال ، هناك مجال للتجارب والحلول الإبداعية ؛ يمكنك إنشاء تعديل جديد مفيد ومثير للاهتمام.

شكرا لقراءتك ونتمنى لك التوفيق!

مؤلف مشارك: نيكيتا كنيزوف مقدم

ملحوظة: شكراً لفريق مركز الأبحاث الذي بدونه سيكون هذا المقال مستحيلاً.

Source: https://habr.com/ru/post/ar449134/


All Articles