
再現可能なVM実行、マルチプロセッシング、XMLテストケース生成を通じてデバイスドライバのバグを発見する、QEMU/KVMベースのUSBファジングフレームワーク。
_ __ __ __ _______ ____
_ __(_)____/ /___ ______ _/ / / / / / ___// __ )
| | / / / ___/ __/ / / / __ `/ / / / / /\__ \/ __ |
| |/ / / / / /_/ /_/ / /_/ / / / /_/ /___/ / /_/ /
|_______/ \__/\__,_/\__,_/_/ \____//____/_____/
/ __/_ __________ ___ _____
/ /_/ / / / /_/ /_/ / / _ \/ ___/
/ __/ /_/ / / / /_/ /_/ __/ /
/_/ \__,_/ /___/___/\___/_/
A KVM/QEMU based USB-fuzzing framework.
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
そのイメージにお好みのOSをインストールしてください。(仮想)シリアルポートで利用可能な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ファイルの場所
- オーバーレイファイルの場所
- オーバーレイの複製を保存する場所
- 設定するUSBホストコントローラ(分からなければ nec-usb-xhci と記入)
- QEMU用の追加パラメータ(必要な場合)
- スナップショットの名前
以上です。これでVMはファジングの準備ができました。
help.txt を参照するか、vusbf を -h パラメータ付きで実行するとヘルプが表示されます :-)
Windowsシステム向けの不安定なサポートなど、既知のバグがいくつかあります。これらの問題に取り組んでいるので、必ず最新バージョンを使用してください。 さらに、USBエミュレータが不足している点にも取り組んでいます。
さらに、一部のインラインコメントは私の母国語(ドイツ語)で書かれています。これらは後で翻訳される予定です ;-) そしてコードはもっとドキュメント化される予定です!
共同開発者も大歓迎です :-)! やるべき仕事はたくさんあります!
お気軽にメールをお送りください: