Honggfuzz 筆記,透過 docker 執行 Honggfuzz 並啟用 qemu 模式進行 fuzzing。
Getting Started
理論基礎請參見 Fuzzing 筆記
透過 docker 安裝並且執行
docker run --rm -it -v $(pwd):/work --privileged zjuchenyuan/honggfuzz:latest /bin/bash
為了黑箱測試必須啟用 qemu 模式,相關模塊需要另外編譯 。
cd qemu_mode/
apt update
apt install libglib2.0-dev libpixman-1-dev
make
cd honggfuzz-qemu/ && make
如果出現 run if fatal: unable to access 'https://git.qemu.org/git/capstone.git/': server certificate verification failed.
export GIT_SSL_NO_VERIFY=1
make
返回並且測試 qemu 模式
cd /honggfuzz
開始 fuzzing,似乎沒有啟用 qemu 模式也可以找到 crash ,這邊取 pwnable.tw 的題目,可以找到一些 crash 但效率非常低(存疑,等待驗證)。
honggfuzz -i /work/in/ -t 1 -s -- /work/silver_bullet
而 qemu 選擇正確的架構集之後,可以修復EXITED, exit code: 255
的問題,而且找非常容易找到 crash,跑30 分鐘大概可以找到 500 左右個獨特的 crash (存疑,等待驗證)。
honggfuzz -i /work/in/ -t 1 -s -- ./qemu_mode/honggfuzz-qemu/i386-linux-user/qemu-i386 /work/hacknote
Persistent Mode
問題
exited with status: EXITED, exit code: 255
請確保使用正確的架構,不同架構會導致 qemu 退出
./qemu_mode/honggfuzz-qemu/x86_64-linux-user/qemu-x86_64 ./a.out
./qemu_mode/honggfuzz-qemu/i386-linux-user/qemu-i386
參考
Vulnerability Fuzzing Testing Zero-Day Pwn