
QEMU/KVM 기반 USB 퍼징 프레임워크로, 재현 가능한 VM 실행, 멀티프로세싱 및 XML 테스트케이스 생성을 통해 장치 드라이버 버그를 발견합니다.
_ __ __ __ _______ ____
_ __(_)____/ /___ ______ _/ / / / / / ___// __ )
| | / / / ___/ __/ / / / __ `/ / / / / /\__ \/ __ |
| |/ / / / / /_/ /_/ / /_/ / / / /_/ /___/ / /_/ /
|_______/ \__/\__,_/\__,_/_/ \____//____/_____/
/ __/_ __________ ___ _____
/ /_/ / / /_ /_ / / _ \/ ___/
/ __/ /_/ / / /_/ /_/ __/ /
/_/ \__,_/ /___/___/\___/_/
KVM/QEMU 기반 USB 퍼징 프레임워크.
Sergej Schumilo, OpenSource Security Spenneberg 2015
버전: 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
"usb_redir" 옵션으로 QEMU를 컴파일하고 /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를 구성해야 합니다.
다음 단계는 backing-file(향후 모든 변경 사항이 포함되는 오버레이)과 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-file의 위치
- overlay-file의 위치
- 오버레이 복제본이 저장될 위치
- 구성된 USB 호스트 컨트롤러 (모르겠다면 nec-usb-xhci라고 작성)
- QEMU용 추가 매개변수 (필요한 경우)
- 스냅샷 이름
이것으로 끝입니다. 이제 VM이 퍼징을 위한 준비가 되었습니다.
도움말은 help.txt를 확인하거나 vusbf를 -h 매개변수로 실행하세요 :-)
Windows 시스템 지원의 버그와 같은 몇 가지 알려진 버그가 있습니다. 우리는 이러한 문제를 해결하고 있으므로 최신 버전을 사용하세요. 또한 USB 에뮬레이터 부족도 우리가 작업 중인 또 다른 사항입니다.
게다가 일부 인라인 주석은 제 모국어(독일어)로 작성되었습니다. 나중에 번역될 예정이며 ;-) 코드 문서화도 더욱 강화될 것입니다!
동지(함께 일할 분)를 환영합니다 :-)! 할 일이 아주 많습니다!
부담 없이 이메일을 보내주세요: [email protected] [email protected]