_ __ __ __ _______ ____
_ __(_)____/ /___ ______ _/ / / / / / ___// __ )
| | / / / ___/ __/ / / / __ `/ / / / / /\__ \/ __ |
| |/ / / / / /_/ /_/ / /_/ / / / /_/ /___/ / /_/ /
|_______/ \__/\__,_/\__,_/_/ \____//____/_____/
/ __/_ __________ ___ _____
/ /_/ / / / /_/ /_/ / _ \/ ___/
/ __/ /_/ / / /_/ /_/ __/ /
/_/ \__,_/ /___/___/\___/_/
A KVM/QEMU based USB-fuzzing framework.
Sergej Schumilo, OpenSource Security Spenneberg 2015
Version: 0.2
一种利用海量虚拟机并具有高可重现性的 USB 模糊测试器。 该框架最初在 2014 年的 Black Hat Europe 上发布。
该软件正在积极开发中。请从 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)。 vUSBf 目前不支持 QEMU 2.2.x!
vUSBf 需要一些预先准备好的 QCOW2 镜像来进行模糊测试! 首先,你需要为虚拟机创建一个 QCOW2 镜像。你可以使用以下命令完成:
qemu-img create -f qcow2 vm.qcow2 10G
在该镜像上安装你喜欢的操作系统。你需要配置一个在(虚拟)串行端口可用的 TTY。
下一步是创建一个 backing-file(该覆盖层包含所有未来的增量数据)以及一个包含虚拟机快照的镜像(其大小应大于你已配置的虚拟内存):
qemu-img create -b vm.img -f qcow2 overlay.qcow2
qemu-img create -f qcow2 ram.qcow2 1G
使用以下命令启动虚拟机,等待内核加载完成,登录后输入 "echo '7' > /proc/sys/kernel/printk" 来更改 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 的位置
- 覆盖层副本的存储位置
- 配置的 USB 主机控制器(如果不知道,直接写 nec-usb-xhci)
- 为 QEMU 添加的一些额外参数(如果需要的话)
- 快照的名称
就这些了。现在你的虚拟机已准备好进行模糊测试。
请查看 help.txt,或使用参数 -h 运行 vusbf 获取帮助 :-)
存在一些已知问题,比如对 Windows 系统的支持不完善。我们正在处理这些问题,因此请确保你使用的是最新版本。 此外,缺少 USB 模拟器也是我们正在解决的另一问题。
另外,一些内联注释是用我的母语(德语)编写的。它们将在之后被翻译 ;-) ,代码也会有更多的文档!
欢迎战友加入 :-)! 还有很多工作要做!
欢迎随时给我们发送电子邮件: [email protected] [email protected]