
إطار عمل للاختبار العشوائي (Fuzzing) لمنافذ USB مبني على QEMU/KVM، يكتشف أخطاء برامج تشغيل الأجهزة عبر تنفيذ أجهزة افتراضية قابل للتكرار، ومعالجة متعددة، وتوليد حالات اختبار بتنسيق XML.
_ __ __ __ _______ ____
_ __(_)____/ /___ ______ _/ / / / / / ___// __ )
| | / / / ___/ __/ / / / __ `/ / / / / /\__ \/ __ |
| |/ / / / / /_/ /_/ / /_/ / / / /_/ /___/ / /_/ /
|_______/ \__/\__,_/\__,_/_/ \____//____/_____/
/ __/_ __________ ___ _____
/ /_/ / / / /_/ /_/ / _ \/ ___/
/ __/ /_/ / / /_/ /_/ __/ /
/_/ \__,_/ /___/___/\___/_/
إطار عمل لتفحيم USB يعتمد على KVM/QEMU.
Sergej Schumilo, OpenSource Security Spenneberg 2015
الإصدار: 0.2
أداة تفحيم USB تستفيد من الاستخدام المكثف للآلات الافتراضية وتوفر أيضًا درجة عالية من قابلية إعادة الإنتاج. أُطلق هذا الإطار لأول مرة في مؤتمر Black Hat Europe 2014.
هذه البرمجية قيد التطوير المستمر. احصل على نسخة من الإصدار الحالي على جيثب:
هذه البرمجية مرخصة بموجب GPLv2.
يوفر هذا الإطار ما يلي:
كُتب vUSBf بلغة python2 ويتطلب إطار عمل Scapy.
أولًا وقبل كل شيء، يجب علينا بناء نسخة متوافقة من QEMU! احصل على أحدث إصدار من QEMU وusbredir:
QEMU: http://www.qemu.org usbredir: https://github.com/SPICE/usbredir
تأكد من أنك تجمّع QEMU مع الخيار "usb_redir" وأنك تقوم أيضًا بترقيع الملف /hw/usb/redirection.c. إذا كنت تستخدم إصدار QEMU 2.1.1، يمكنك تطبيق الرقعة الخاصة بنا (qemu-2.1.1.patch). إصدارات QEMU 2.2.x غير مدعومة حاليًا من vUSBf!
يتطلب vUSBf بعض صور QCOW2 المجهزة للتفحيم! في البداية عليك إنشاء صورة QCOW2 للآلة الافتراضية الخاصة بك. يمكنك القيام بذلك باستخدام الأمر التالي:
qemu-img create -f qcow2 vm.qcow2 10G
ثبّت نظام التشغيل الذي تفضله على تلك الصورة. يجب عليك إعداد TTY متاح على المنفذ التسلسلي (الافتراضي).
الخطوة التالية هي إنشاء ملف دعم (overlay يحتوي على كل التغييرات المستقبلية) وصورة ستحتوي على لقطة من الجهاز الافتراضي (يجب أن يكون الحجم أكبر من ذاكرتك الافتراضية التي قمت بتهيئتها):
qemu-img create -b vm.img -f qcow2 overlay.qcow2
qemu-img create -f qcow2 ram.qcow2 1G
ابدأ جهازك الافتراضي بالأمر التالي، وانتظر حتى يتم تحميل النواة، ثم سجّل الدخول وغيّر مستوى تفاصيل printk بإدخال "echo '7' > /proc/sys/kernel/printk". الآن يمكنك أخذ لقطة عن طريق الدخول إلى وحدة تحكم QEMU (اضغط ctrl+a ثم c) وكتابة savevm . يجب أن تبدأ الجهاز الافتراضي بالأمر التالي:
qemu-system-x86_64 --enable-kvm -m 1024 -hdb ram.qcow2 -hda overlay.qcow2 -serial mon:stdio -device nec-usb-xhci -device usb-redir,chardev=usbchardev,debug=0 -chardev socket,server,id=usbchardev,nowait,host=127.0.0.1,port=1336
أنشئ إعدادًا مخصصًا في المجلد "vusbf/configurations/". ستجد هناك بعض الأمثلة. عدّل المعلومات التالية:
- موقع ملف QEMU التنفيذي الذي تريد استخدامه
- دعم KVM (اكتب yes أو no)
- حجم الذاكرة (الوحدة MB)
- موقع ملف ram-file
- موقع ملف overlay-file
- الموقع الذي يجب تخزين نسخ overlay المكررة فيه
- وحدة تحكم USB المضيفة المهيأة (إذا لم تكن لديك فكرة فقط اكتب nec-usb-xhci)
- بعض المعاملات الإضافية لـ QEMU (إذا كنت بحاجة إليها)
- اسم اللقطة
هذا كل شيء. الآن جهازك الافتراضي جاهز لبعض التفحيم.
ألقِ نظرة على help.txt أو شغّل vusbf باستخدام المعامل -h للحصول على المساعدة :-)
هناك بعض الأخطاء المعروفة مثل الدعم غير المستقر لأنظمة Windows. نحن نعمل على هذه المشكلات، لذا تأكد من استخدام أحدث إصدار. علاوة على ذلك، فإن نقص محاكيات USB هو نقطة أخرى نعمل عليها.
علاوة على ذلك، كُتبت بعض التعليقات المضمنة بلغتي الأم (الألمانية). ستتم ترجمتها لاحقًا ;-) وسيصبح الكود أكثر توثيقًا!
رفاق السلاح مرحب بهم :-)! هناك الكثير من العمل الذي يتعين القيام به!
لا تتردد في مراسلتنا عبر البريد الإلكتروني: [email protected] [email protected]