FAT est une boîte à outils construite afin d'aider les chercheurs en sécurité à analyser et à identifier les vulnérabilités dans l'IoT et le firmware de périphérique intégré. Ceci est également utilisé dans la formation " Exploitation de l'IoT offensive " menée par ATTIFY.
Note:
À l'heure actuelle, il s'agit simplement d'un script pour automatiser Firmadyne qui est un outil utilisé pour l'émulation du firmware. En cas de problèmes avec l'émulation réelle, veuillez publier vos problèmes dans les problèmes de Firdadyne.
Dans le cas où vous êtes confronté à des problèmes, vous pouvez essayer ATTIFFYOS qui possède la boîte à outils d'analyse du micrologiciel et d'autres outils préinstallés et prêts à l'emploi.
La boîte à outils d'analyse du micrologiciel (dès désormais) est basée sur Firmadyne avec certains changements. Firmadyne utilise une base de données PostgreSQL pour stocker des informations sur les images émulées. Cependant, juste pour les fonctionnalités de base, c'est-à-dire en émulant le firmware, PostgreSQL n'est pas vraiment nécessaire. Par conséquent, la graisse ne l'utilise pas.
La graisse est développée dans Python 3. Cependant, vous devez faire installer Python 3 et Python 2 car les parties de Firmadyne et ses dépendances utilisent Python 2. Il est fortement recommandé d'installer la graisse dans une machine virtuelle.
Pour installer simplement cloner le référentiel et exécuter le script ./setup.sh .
git clone https://github.com/attify/firmware-analysis-toolkit
cd firmware-analysis-toolkit
./setup.sh
Une fois l'installation terminée, modifiez le fichier fat.config et fournissez le mot de passe sudo comme indiqué ci-dessous. Firmadyne a besoin de privilèges sudo pour certaines de ses opérations. Le mot de passe sudo est fourni pour automatiser le processus.
[DEFAULT]
sudo_password=attify123
firmadyne_path=/home/attify/firmadyne
$ ./fat.py <firmware file>
Fournissez le nom de fichier du firmware comme argument au script.
Le script afficherait les adresses IP attribuées aux interfaces réseau créées. Notez-le vers le bas.
Enfin, il dira que l'exécution du firmware. Appuyez sur Entrée et attendez que le micrologiciel se mette en main. Ping IP qui a été montré à l'étape précédente, ou ouvert dans le navigateur.
Bravo! Le firmware est finalement émulé.
Pour supprimer toutes les images du micrologiciel analysées, exécutez
$ ./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
À l'heure actuelle, le noyau ARM Firmadyne ne fonctionne pas avec la dernière version de Qemu (2.11.1) disponible sur le référentiel officiel d'Ubuntu 18.04. Cependant, Qemu (2.5.0) sur Ubuntu 16.04 fonctionne. Alternativement, vous pouvez également utiliser le Qemu groupé (2.5.0) fourni avec Firmadyne comme indiqué dans l'exemple 2.
Si aucune interface réseau n'est détectée, essayez d'augmenter la valeur de délai d'expiration de 60 dans scripts/inferNetwork.sh comme indiqué ci-dessous
echo "Running firmware ${IID}: terminating after 60 secs..."
timeout --preserve-status --signal SIGINT 60 "${SCRIPT_DIR}/run.${ARCH}.sh" "${IID}"
Le référentiel comprend déjà des versions statiques de QemU 2.0.0, 2.5.0 & 3.0.0 (dans les versions) mais si vous souhaitez créer votre propre, suivez les étapes ci-dessous.
Sur une course Ubuntu 16.04 Clean. (Il est important d'utiliser 16.04, les versions ultérieures ont des problèmes avec la compilation statique).
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 Les binaires compilés se trouvent dans le répertoire 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 Les binaires compilés se trouvent dans le répertoire 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 Les binaires compilés se trouvent dans le répertoire qemu-3.0.0-build .
Remarque: il devrait également être possible de compiler QEMU statiquement sur un système alpin, mais cela n'a pas été testé. En général, la compilation sur Alpine est préférée à Ubuntu, car la première est livrée avec MUSL LIBC, ce qui est mieux en lien statique que GLIBC sur Ubuntu.