Fat adalah toolkit yang dibangun untuk membantu peneliti keamanan menganalisis dan mengidentifikasi kerentanan dalam firmware perangkat IoT dan tertanam. Ini juga digunakan dalam pelatihan " Ofensif IoT Exploitation " yang dilakukan oleh Atttify.
Catatan:
Sampai sekarang, ini hanyalah skrip untuk mengotomatiskan FirmaDyne yang merupakan alat yang digunakan untuk emulasi firmware. Dalam hal masalah apa pun dengan emulasi yang sebenarnya, silakan posting masalah Anda dalam masalah FirmaDyne.
Jika Anda menghadapi masalah, Anda dapat mencoba attifyos yang memiliki toolkit analisis firmware dan alat lain yang sudah dipasang sebelumnya dan siap digunakan.
Firmware Analysis Toolkit (Fat TwoFORTHER) didasarkan pada Firmadyne dengan beberapa perubahan. Firmadyne menggunakan database PostgreSQL untuk menyimpan informasi tentang gambar yang ditiru. Namun hanya untuk fungsi inti yaitu meniru firmware, PostgreSQL tidak benar -benar diperlukan. Karenanya lemak tidak menggunakannya.
Lemak dikembangkan di Python 3. Namun Anda harus memasang Python 3 dan Python 2 karena bagian -bagian FirmaDyne dan ketergantungannya menggunakan Python 2. Sangat disarankan untuk memasang lemak di dalam mesin virtual.
Untuk menginstal cukup klon repositori dan jalankan skrip ./setup.sh .
git clone https://github.com/attify/firmware-analysis-toolkit
cd firmware-analysis-toolkit
./setup.sh
Setelah instalasi selesai, edit file fat.config dan berikan kata sandi sudo seperti yang ditunjukkan di bawah ini. Firmadyne mensyaratkan hak istimewa sudo untuk beberapa operasinya. Kata sandi sudo disediakan untuk mengotomatiskan proses.
[DEFAULT]
sudo_password=attify123
firmadyne_path=/home/attify/firmadyne
$ ./fat.py <firmware file>
Berikan nama file firmware sebagai argumen untuk skrip.
Skrip akan menampilkan alamat IP yang ditetapkan ke antarmuka jaringan yang dibuat. Perhatikan.
Akhirnya, ia akan mengatakan bahwa menjalankan firmware. Tekan Enter dan tunggu sampai firmware boot. Ping IP yang ditampilkan pada langkah sebelumnya, atau terbuka di browser.
Selamat! Firmware akhirnya ditiru.
Untuk menghapus semua gambar firmware yang dianalisis, jalankan
$ ./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
Sampai sekarang, Kernel ARM Firmadyne tidak bekerja dengan versi terbaru QEMU (2.11.1) yang tersedia di repositori resmi Ubuntu 18.04. Namun, qemu (2.5.0) di Ubuntu 16.04 berhasil. Atau Anda juga dapat menggunakan QEMU yang dibundel (2.5.0) yang diberikan dengan Firmadyne seperti yang ditunjukkan pada Contoh 2.
Jika tidak ada antarmuka jaringan yang terdeteksi, coba tingkatkan nilai batas waktu dari 60 dalam scripts/inferNetwork.sh seperti yang ditunjukkan di bawah ini
echo "Running firmware ${IID}: terminating after 60 secs..."
timeout --preserve-status --signal SIGINT 60 "${SCRIPT_DIR}/run.${ARCH}.sh" "${IID}"
Repositori sudah mencakup build statis dari QEMU 2.0.0, 2.5.0 & 3.0.0 (dalam rilis) tetapi jika Anda ingin membangun sendiri, ikuti langkah -langkah di bawah ini.
Pada ubuntu 16.04 vm yang bersih. (Penting untuk menggunakan 16.04, versi yang lebih baru memiliki masalah dengan kompilasi statis).
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 Binari yang dikompilasi dapat ditemukan di direktori 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 Binari yang dikompilasi dapat ditemukan di direktori 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 Binari yang dikompilasi dapat ditemukan di direktori qemu-3.0.0-build .
CATATAN: Juga harus dimungkinkan untuk mengkompilasi QEMU secara statis pada sistem Alpine tetapi ini belum diuji. Secara umum menyusun alpine lebih disukai daripada Ubuntu karena yang pertama dilengkapi dengan Musl Libc yang lebih baik di hubungan statis daripada GLIBC di Ubuntu.