업데이트로 돌아가기
New releaseSep 9, 2026

firmware-analysis-toolkit v2.0.0-alpha.1

펌웨어 보안 연구 플랫폼으로, IoT, 엣지 AI, 모바일 기기 및 로봇 분야에서 바이너리 분석, 오염 추적(taint tracing), 에뮬레이션을 결합합니다.

공유

FAT — 펌웨어 분석 툴킷

FAT release 최신 릴리스 다운로드 · 변경 내역 · 설치

Firmware Analysis Toolkit은 IoT, Physical AI, 모바일 기기 및 로보틱스의 펌웨어 보안을 조사하기 위한 보안 연구 툴킷입니다. 주로 Attify에서 진행하는 "Offensive IoT Exploitation" 교육을 위해 만들어졌습니다.

실제 펌웨어 보안 조사에서 정말로 중요한 것이 무엇인지에 대한 현장 실무 경험을 바탕으로 구축되었습니다.

FAT의 목표는 펌웨어 보안 연구를 위한 세계 최고 수준의 뛰어난 최첨단 툴킷을 만드는 것뿐만 아니라, 특정 방식으로 사용하면 도구가 인지적 초능력이 되는 최고 수준에서 활동하는 전문가와 실무자를 양성하는 것이며, 동시에 이 분야에 처음 입문한 사람들도 충분히 쉽게 사용할 수 있도록 하는 것입니다.

주요 기능으로는 알 수 없는 펌웨어 분류, 파일시스템 추출, 신뢰 관련 코드 매핑, 오염(taint) 추적, QEMU 에뮬레이션 조정 등이 있습니다.

FAT이 분석할 수 있는 것

  • 알 수 없는 블롭과 디렉터리: 컨테이너, 압축 멤버, 고엔트로피 영역, MCU 신호, 후보 펌웨어 파일
  • 펌웨어 이미지: 헤더, 업데이트 봉투, 파티션, 부트로더, 이미지 간 차이
  • 추출된 Linux 파일시스템: 인벤토리, 시작 의도, 신뢰를 담보하는 바이너리, 암호 자재, 문자열 증거
  • ELF 바이너리: 임포트, 익스포트, 핸들러 테이블, 스트립된 코드 싱크, 디컴파일, 소스-투-싱크 오염
  • 베어메탈 및 MCU 이미지: 벡터 테이블, 메모리 맵, 주변장치 힌트, 플래시 쓰기 권한, 부트 핸드오프 증거
  • 엣지 AI 아티팩트: MAGIK/JZDL, TFLite, ONNX, Qualcomm DLC 파일과 가시적인 추론 런타임
  • 안드로이드 애플리케이션: APK 인벤토리, 발견 단서, 위치성, 기능 체인, 핸드오프 경계
  • 소스 저장소: 불변식 쿼리, 패치 가이드, 인접 변형 검색

빠른 시작

Releases에서 바이너리 번들을 다운로드하거나, Rust 1.90 이상으로 최신 정식 릴리스를 빌드하세요:

git clone --branch v2.0.1 --depth 1 https://github.com/attify/firmware-analysis-toolkit.git
cd firmware-analysis-toolkit
cargo build --release --locked
cargo install --path crates/fat_cli --locked
python3 scripts/build-runtime-data-bundle.py --output ./dist/fat-data.zip
fat data install --archive ./dist/fat-data.zip
fat doctor

Arch Linux 또는 Omarchy에서는 필수 패키지와 선택적 도구를 위해 Arch 설치 단계부터 시작하세요.

지원되는 호스트를 위한 원샷 설치 프로그램:

./scripts/install.sh --install-system-deps

설치 프로그램 옵션과 선택적 도구는 INSTALL.md를 참조하세요.

빠른 명령 참조

  • 도움말 : fat -h
  • 펌웨어 식별: fat $firmware 또는 fat identify --file $firmware
  • 새 프로젝트 : fat new $firmware
  • 파일 시스템 추출 : fat extract $firmware
  • 분석 : fat analyze $firmware
  • 에뮬레이션 : fat emulate --project $firmware

알 수 없는 파일과의 첫 접촉

fat ./firmware.bin
fat inspect update --file ./firmware.bin --rootfs ./rootfs --reference ./older.bin

fat ./firmware.bin은 fat identify --file ./firmware.bin의 축약형입니다. 파일의 정체성과 구조에 대한 간결한 개요를 제공합니다. 지원 테이블을 보려면 --details를 추가하세요. 원시 MCU 이미지의 경우 매핑, 시작, 인터럽트, 하드웨어를 검사하세요:

fat inspect mcu --file ./firmware.bin
fat inspect mcu --file ./firmware.bin --details

두 명령 모두 전체 구조화된 분석 보고서를 위한 --json을 지원합니다.

이미지에서 런타임까지

빠른 시작의 파이프라인을 처음부터 끝까지:

fat new ./firmware.bin
fat extract .fat-projects/firmware
fat analyze .fat-projects/firmware
fat preflight .fat-projects/firmware
fat emulate --project .fat-projects/firmware

바이너리 트리아지와 데이터 흐름

fat r2-triage --file ./usr/sbin/httpd --json
fat taint --file ./www/cgi-bin/diag.cgi --summary
fat taint-query --file ./www/cgi-bin/diag.cgi
fat taint-cross --rootfs ./rootfs
fat taint-cross --rootfs ./rootfs --source-profile ./my-target-models.yaml --state-profile ./my-target-state.yaml

셸 스크립트 데이터 흐름

fat taint --lang shell --file ./app/init/wifi.sh --summary
fat taint --lang shell --rootfs ./extracted-rootfs --json
fat taint --lang shell --rootfs ./extracted-rootfs --source-profile ./my-target-shell.yaml --severity high

스트립된 바이너리

싱크를 정적으로 찾은 다음, 동일한 주소에 대한 런타임 훅을 준비하세요:

fat r2-triage --file ./usr/sbin/httpd --json
fat sink-discovery --file ./usr/sbin/httpd --json > sinks.json
fat handler-table --file ./usr/sbin/httpd --json > handlers.json
fat taint --file ./usr/sbin/httpd --sink-candidates sinks.json --json > taint.json
fat instrument-hooks --from-sinks sinks.json --output hooks.yaml
fat emulate --project .fat-projects/firmware --instrument hooks.yaml

파일시스템 전체 증거 스윕

fat tree --rootfs ./rootfs --profile inventory --summary --json
fat search --rootfs ./rootfs --profile credentials -I --context 2
fat startup-map --rootfs ./rootfs --profile cloud-tls
fat crypto-census --rootfs ./rootfs
fat trust-map --rootfs ./rootfs

소스 기반 불변식 쿼리

fat invariant query \
  --fixture tests/fixtures/query/source/invariant-permission \
  --rule 'Every privileged override method must call enforcePermission()'
fat patch check --help
fat verify --help

보안

  • 에뮬레이션은 신뢰할 수 없는 벤더 코드를 실행합니다.
  • 신뢰할 수 없는 이미지를 처리하거나 에뮬레이션된 서비스를 네트워크에 노출하기 전에 SECURITY.md를 검토하세요.
  • 작업 대상에 대한 권한을 확보하는 것은 사용자의 책임입니다.

상세 가이드

문서내용
INSTALL.md외부 도구 및 선택적 컴포넌트 설정
docs/commands.md작업별로 그룹화된 전체 명령 참조
docs/capabilities.md그래프 내보내기, 문자열 검색, 암호, 엣지 AI, 시작 의도, 리호스팅 팩
docs/epistemics.mdFAT 출력을 읽는 방법: 결과가 증명하는 것과 증명하지 않는 것
docs/architecture.md워크스페이스 크레이트와 확장 지점
DEVELOPMENT.md빌드 및 테스트 워크플로
CONTRIBUTING.md설정, PR 체크리스트, 기여 가이드
RELEASING.md버전 명명과 메인테이너 릴리스 워크플로

인용

연구, 출판물 또는 기술 보고서에서 FAT을 사용하는 경우, GitHub의 Cite this repository 옵션을 사용하여 인용해 주세요. 독자가 결과 이면의 구현을 식별할 수 있도록 사용한 FAT 버전 또는 커밋을 포함하세요. 인용 메타데이터는 CITATION.cff를 참조하세요.

메인테이너

FAT은 adi0x90이 작성했으며, 그는 현재 메인테이너이자 주요 기여자입니다. 이 프로젝트는 Attify 산하에서 유지 관리됩니다.

라이선스

FAT 2.0은 FSL-1.1-ALv2에 따라 소스가 공개되어 있습니다. 자세한 내용은 LICENSING.md와 THIRD_PARTY_NOTICES.md를 참조하세요.

카테고리