FAT - это инструментарий, встроенный для того, чтобы помочь исследователям безопасности анализировать и выявить уязвимости в прошивке IoT и встроенных устройств. Это также используется в обучении « наступательной эксплуатации IoT », проведенного Attify.
Примечание:
На данный момент это просто сценарий автоматизации Firmadyne , который представляет собой инструмент, используемый для эмуляции прошивки. В случае любых проблем с фактической эмуляцией, пожалуйста, опубликуйте свои проблемы в вопросах Firmadyne.
Если вы столкнетесь с проблемами, вы можете попробовать AttifyoS, у которого есть инструментарий для анализа прошивки и другие инструменты, предварительно установленные и готовые к использованию.
Инструментарий для анализа прошивки (FAT оттуда) основан на Farmadyne с некоторыми изменениями. Firmadyne использует базу данных PostgreSQL для хранения информации об эмулированных изображениях. Однако только для основной функциональности, т.е. эмуляции прошивки, PostgreSQL на самом деле не требуется. Следовательно, жир не использует его.
FAT разрабатывается в Python 3. Однако вам необходимо установить как Python 3, так и Python 2, поскольку части Firmadyne и его зависимостей используют Python 2. Настоятельно рекомендуется установить жир внутри виртуальной машины.
Чтобы установить просто клонировать репозиторий и запустить скрипт ./setup.sh .
git clone https://github.com/attify/firmware-analysis-toolkit
cd firmware-analysis-toolkit
./setup.sh
После завершения установки отредактируйте файл fat.config и предоставьте пароль sudo, как показано ниже. Firmadyne требует привилегий SUDO для некоторых своих операций. Пароль SUDO предоставляется для автоматизации процесса.
[DEFAULT]
sudo_password=attify123
firmadyne_path=/home/attify/firmadyne
$ ./fat.py <firmware file>
Предоставьте имени файла прошивки в качестве аргумента для сценария.
Сценарий отобразит IP -адреса, назначенные созданным сетевым интерфейсам. Обратите внимание на это.
Наконец, он скажет, что запуск прошивки. Нажмите Enter и подождите, пока прошивка не загрузится. Пинг 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 не работает с последней версией Qemu (2.11.1), доступной в официальном репозитории Ubuntu 18.04. Однако Qemu (2.5.0) на Ubuntu 16.04 работает. В качестве альтернативы вы также можете использовать комплексный QEMU (2.5.0), предоставленную Firmadyne, как показано в примере 2.
Если сетевые интерфейсы не обнаружены, попробуйте увеличить значение тайм -аута с 60 в scripts/inferNetwork.sh как показано ниже
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 Run. (Важно использовать 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, который лучше в статической связи, чем Glibc на Ubuntu.