Fat은 보안 연구원이 IoT 및 내장 장치 펌웨어의 취약성을 분석하고 식별하도록 돕기 위해 내장 된 툴킷입니다. 이것은 Attify가 수행하는 " 공격적인 IoT 착취 "교육에도 사용됩니다.
메모:
현재로서는 단순히 펌웨어 에뮬레이션에 사용되는 도구 인 Firmadyne을 자동화하는 스크립트입니다. 실제 에뮬레이션에 문제가있는 경우 Farmadyne 문제에 문제를 게시하십시오.
문제에 직면하는 경우 펌웨어 분석 툴킷 및 기타 도구가 사전 설치되어 사용할 준비가 된 Attifyos를 사용해 볼 수 있습니다.
펌웨어 분석 툴킷 (FAT TULE)은 일부 변경 사항이있는 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
설치가 완료된 후 fat.config 파일을 편집하고 아래와 같이 Sudo 비밀번호를 제공하십시오. Firmadyne은 일부 운영에 대한 Sudo 특권이 필요합니다. Sudo 비밀번호는 프로세스를 자동화하기 위해 제공됩니다.
[DEFAULT]
sudo_password=attify123
firmadyne_path=/home/attify/firmadyne
$ ./fat.py <firmware file>
펌웨어 파일 이름을 스크립트의 인수로 제공하십시오.
스크립트는 생성 된 네트워크 인터페이스에 할당 된 IP 주소를 표시합니다. 내려 놓으십시오.
마지막으로 펌웨어를 실행한다고 말할 것입니다. 입력을 누르고 펌웨어가 부팅 될 때까지 기다립니다. 이전 단계에 표시된 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)에서 작동하지 않습니다. 그러나 우분투 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 (릴리스)의 정적 빌드가 포함되어 있지만 아래 단계를 따르려면 아래 단계를 따르려면 아래 단계를 수행하십시오.
깨끗한 우분투에서 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를 정적으로 컴파일 할 수 있지만 테스트되지 않았습니다. 일반적으로 알파인에 대한 컴파일은 우분투의 glibc보다 정적 연계에서 더 나은 무슬림 libc와 함께 우분투보다 선호됩니다.