
QEMU/KVM-आधारित USB फ़ज़िंग फ्रेमवर्क जो पुनरुत्पादन-योग्य VM निष्पादन, मल्टीप्रोसेसिंग और XML टेस्टकेस जनरेशन के माध्यम से डिवाइस-ड्राइवर बग्स का पता लगाता है।
_ __ __ __ _______ ____
_ __(_)____/ /___ ______ _/ / / / / / ___// __ )
| | / / / ___/ __/ / / / __ `/ / / / / /\__ \/ __ |
| |/ / / / / /_/ /_/ / /_/ / / / /_/ /___/ / /_/ /
|_______/ \__/\__,_/\__,_/_/ \____//____/_____/
/ __/_ __________ ___ _____
/ /_/ / / /_ /_ / / _ \/ ___/
/ __/ /_/ / / /_/ /_/ __/ /
/_/ \__,_/ /___/___/\___/_/
KVM/QEMU पर आधारित USB-फ़ज़िंग फ्रेमवर्क।
Sergej Schumilo, OpenSource Security Spenneberg 2015
Version: 0.2
एक USB-फ़ज़र जो वर्चुअल मशीनों के व्यापक उपयोग का लाभ उठाता है और उच्च प्रतिलिपि योग्यता भी प्रदान करता है। यह फ्रेमवर्क शुरू में Black Hat Europe 2014 में जारी किया गया था।
यह सॉफ्टवेयर भारी विकास के अधीन है। github पर वर्तमान संस्करण की प्रति प्राप्त करें:
यह सॉफ्टवेयर 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 कॉन्फ़िगर करना होगा जो (वर्चुअल) सीरियल पोर्ट पर उपलब्ध हो।
अगला चरण एक बैकिंग-फ़ाइल (ओवरले जिसमें भविष्य के सभी डेल्टा शामिल होंगे) और एक इमेज बनाना है जिसमें VM का स्नैपशॉट होगा (आकार आपके द्वारा कॉन्फ़िगर की गई वर्चुअल मेमोरी से बड़ा होना चाहिए):
qemu-img create -b vm.img -f qcow2 overlay.qcow2
qemu-img create -f qcow2 ram.qcow2 1G
अपनी VM को निम्न कमांड से प्रारंभ करें, कर्नेल लोड होने तक प्रतीक्षा करें, लॉग इन करें और "echo '7' > /proc/sys/kernel/printk" दर्ज करके printk की वर्बोसिटी बदलें। अब आप QEMU कंसोल (ctrl+a और c दबाएँ) में प्रवेश करके savevm टाइप करके स्नैपशॉट ले सकते हैं। आपको VM को निम्न कमांड द्वारा प्रारंभ करना चाहिए:
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-फ़ाइल का स्थान
- आपकी overlay-फ़ाइल का स्थान
- वह स्थान जहाँ आपके overlay डुप्लिकेट संग्रहीत किए जाने चाहिए
- कॉन्फ़िगर किया गया USB-होस्ट-कंट्रोलर (यदि आपको कोई जानकारी नहीं है तो बस nec-usb-xhci लिखें)
- QEMU के लिए कुछ अतिरिक्त पैरामीटर (यदि आपको कुछ चाहिए)
- स्नैपशॉट का नाम
बस इतना ही। अब आपकी VM कुछ फ़ज़िंग के लिए तैयार है।
सहायता के लिए help.txt देखें या vusbf को -h पैरामीटर के साथ चलाएँ :-)
कुछ ज्ञात बग हैं जैसे Windows सिस्टम के लिए बगी समर्थन। हम इन मुद्दों पर काम कर रहे हैं, इसलिए सुनिश्चित करें कि आप नवीनतम संस्करण का उपयोग कर रहे हैं। इसके अलावा USB-एम्युलेटर की कमी एक और विषय है जिस पर हम काम कर रहे हैं।
इसके अलावा कुछ इनलाइन टिप्पणियाँ मेरी मूल भाषा (जर्मन) में लिखी गई हैं। उनका अनुवाद बाद में किया जाएगा ;-) और कोड अधिक प्रलेखित होगा!
सहयोगियों का स्वागत है :-)! करने के लिए बहुत काम है!
बेझिझक हमें ईमेल भेजें: [email protected] [email protected]