FATは、セキュリティ研究者がIoTおよび組み込みデバイスファームウェアの脆弱性を分析および特定できるように構築されたツールキットです。これは、Attifyが実施した「攻撃的なIoT搾取」トレーニングでも使用されます。
注記:
現在のところ、これはファームウェアエミュレーションに使用されるツールであるFirmadyneを自動化するための単なるスクリプトです。実際のエミュレーションの問題がある場合は、Firmadyneの問題に問題を投稿してください。
問題に直面している場合は、ファームウェア分析ツールキットやその他のツールがプリインストールされ、使用可能な準備が整っているAttifyOSを試すことができます。
ファームウェア分析ツールキット(以降、fatherforth)は、いくつかの変更があるfirmadyneに基づいています。 Firmadyneは、PostgreSQLデータベースを使用して、エミュレートされた画像に関する情報を保存します。ただし、コア機能、つまりファームウェアをエミュレートするだけで、PostgreSQLは実際には必要ありません。したがって、脂肪はそれを使用しません。
脂肪は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をping、またはブラウザで開く。
おめでとう!ファームウェアは最終的にエミュレートされます。
分析されたすべてのファームウェア画像を削除するには、実行します
$ ./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 Kernelは、Ubuntu 18.04公式リポジトリで利用可能なQEMU(2.11.1)の最新バージョン(2.11.1)で動作しません。ただし、Ubuntu 16.04のQemu(2.5.0)は機能します。または、例2に示すように、firmadyneで提供されたバンドルされたQEMU(2.5.0)を使用することもできます。
ネットワークインターフェイスが検出されない場合は、以下に示すように、 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 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のGlibcよりも静的リンケージが優れているため、一般的にはAlpineでのコンパイルがUbuntuよりも好まれます。