FAT是一种工具包,以帮助安全研究人员分析和识别物联网和嵌入式设备固件中的漏洞。这也用于Athifity进行的“进攻性IoT剥削”培训。
笔记:
到目前为止,这只是一个自动化Firmadyne的脚本,这是用于固件仿真的工具。如果有实际仿真的任何问题,请在Firmadyne问题中发布您的问题。
如果您面临问题,则可以尝试使用固件分析工具包和其他已预装并准备使用的工具的Athifyos。
固件分析工具包(脂肪之后)是基于Firmadyne的,并且有一些更改。 Firmadyne使用PostgreSQL数据库存储有关模拟图像的信息。但是,仅对于核心功能即模拟固件,实际上并不需要PostgreSQL。因此,脂肪不使用它。
脂肪是在Python 3中开发的。但是,由于Firmadyne及其依赖关系使用Python 2,因此您需要同时安装Python 3和Python 2。强烈建议在虚拟机中安装脂肪。
要安装一个克隆存储库并运行脚本./setup.sh 。
git clone https://github.com/attify/firmware-analysis-toolkit
cd firmware-analysis-toolkit
./setup.sh
安装完成后,编辑file fat.config并提供SUDO密码,如下所示。 Firmadyne需要其某些运营的Sudo特权。提供SUDO密码以自动化该过程。
[DEFAULT]
sudo_password=attify123
firmadyne_path=/home/attify/firmadyne
$ ./fat.py <firmware file>
提供固件文件名作为脚本的参数。
脚本将显示分配给创建的网络接口的IP地址。请注意。
最后,它将说运行固件。点击输入并等到固件启动。 ping在上一步中显示的IP或在浏览器中打开。
恭喜!固件最终被模拟。
要删除所有分析的固件图像,请运行
$ ./reset.py
$ ./fat.py DIR-601_REVB_FIRMWARE_2.01.BIN
__ _
/ _| | |
| |_ __ _ | |_
| _| / _` | | __|
| | | (_| | | |_
|_| __,_| __|
Welcome to the Firmware Analysis Toolkit - v0.3
Offensive IoT Exploitation Training http://bit.do/offensiveiotexploitation
By Attify - https://attify.com | @attifyme
[+] Firmware: DIR-601_REVB_FIRMWARE_2.01.BIN
[+] Extracting the firmware...
[+] Image ID: 1
[+] Identifying architecture...
[+] Architecture: mipseb
[+] Building QEMU disk image...
[+] Setting up the network connection, please standby...
[+] Network interfaces: [('br0', '192.168.0.1')]
[+] All set! Press ENTER to run the firmware...
[+] When running, press Ctrl + A X to terminate qemu
asciicast
$ ./fat.py DIR890A1_FW103b07.bin --qemu 2.5.0
__ _
/ _| | |
| |_ __ _ | |_
| _| / _` | | __|
| | | (_| | | |_
|_| __,_| __|
Welcome to the Firmware Analysis Toolkit - v0.3
Offensive IoT Exploitation Training http://bit.do/offensiveiotexploitation
By Attify - https://attify.com | @attifyme
[+] Firmware: DIR890A1_FW103b07.bin
[+] Extracting the firmware...
[+] Image ID: 2
[+] Identifying architecture...
[+] Architecture: armel
[+] Building QEMU disk image...
[+] Setting up the network connection, please standby...
[+] Network interfaces: [('br0', '192.168.0.1'), ('br1', '192.168.7.1')]
[+] Using qemu-system-arm from /home/attify/firmware-analysis-toolkit/qemu-builds/2.5.0
[+] All set! Press ENTER to run the firmware...
[+] When running, press Ctrl + A X to terminate qemu
截至目前,ARM Firmadyne内核无法与Ubuntu 18.04官方存储库中最新版本的Qemu(2.11.1)一起使用。但是,Ubuntu上的Qemu(2.5.0)确实有效。另外,您还可以使用firmadyne提供的捆绑的Qemu(2.5.0),如示例2所示。
如果未检测到网络接口,请尝试将超时值从scripts/inferNetwork.sh中的60增加如下所示
echo "Running firmware ${IID}: terminating after 60 secs..."
timeout --preserve-status --signal SIGINT 60 "${SCRIPT_DIR}/run.${ARCH}.sh" "${IID}"
存储库已经包含QEMU 2.0.0、2.5.0&3.0.0(发行)的静态构建,但是如果您想构建自己的静态构建,请按照以下步骤操作。
在干净的Ubuntu 16.04 VM运行中。 (使用16.04,以后的版本具有静态汇编问题很重要)。
sudo apt update && sudo apt build-dep qemu -y
wget https://download.qemu.org/qemu-2.0.0.tar.bz2
tar xf qemu-2.0.0.tar.bz2
mkdir qemu-2.0.0-build
cd qemu-2.0.0
./configure --prefix= $( realpath ../qemu-2.0.0-build ) --static --target-list=arm-softmmu,mips-softmmu,mipsel-softmmu --disable-smartcard-nss --disable-spice --disable-libusb --disable-usb-redir
make
make install可以在qemu-2.0.0-build目录中找到编译的二进制文件。
sudo apt update && sudo apt build-dep qemu -y
wget https://download.qemu.org/qemu-2.5.0.tar.bz2
tar xf qemu-2.5.0.tar.bz2
mkdir qemu-2.5.0-build
cd qemu-2.5.0
./configure --prefix= $( realpath ../qemu-2.5.0-build ) --static --target-list=arm-softmmu,mips-softmmu,mipsel-softmmu --disable-smartcard --disable-libusb --disable-usb-redir
make
make install可以在qemu-2.5.0-build目录中找到编译的二进制文件。
sudo apt update && sudo apt build-dep qemu -y
wget https://download.qemu.org/qemu-3.0.0.tar.bz2
tar xf qemu-3.0.0.tar.bz2
mkdir qemu-3.0.0-build
cd qemu-3.0.0
./configure --prefix= $( realpath ../qemu-3.0.0-build ) --static --target-list=arm-softmmu,mips-softmmu,mipsel-softmmu --disable-smartcard --disable-libusb --disable-usb-redir
make
make install可以在qemu-3.0.0-build目录中找到编译的二进制文件。
注意:还应该可以在高山系统上静态编译QEMU,但尚未进行测试。通常,在高山上汇编比Ubuntu更喜欢,因为前者带有Musl Libc,它在静态连锁上比Ubuntu上的Glibc更好。