
펌웨어 분석 및 비교 도구
펌웨어 분석은 여러 가지 흥미로운 목표를 달성하는 데 사용될 수 있습니다. 그중 가장 중요한 것은 블랙박스 펌웨어의 기능, 구성 요소 및 잠재적인 보안 취약점을 식별하는 것입니다.
펌웨어 분석 및 비교 도구(FACT)는 수동 펌웨어 분석 작업을 가능한 한 많이 자동화하기 위해 설계되었습니다. FACT는 점점 더 강력해지는 분석 기능을 결합하여 사용자가 임의의 펌웨어 샘플에서 완료된 분석까지 도달할 수 있는 통합 인터페이스를 제공합니다. FACT 분석의 주요 특징 중 하나는 결과가
또한 FACT는 결과 및 펌웨어 내용을 쉽게 탐색하고 시각화할 수 있는 여러 가지 방법을 제공합니다. 주 FACT 인터페이스는 로컬에서 호스팅하거나 네트워크를 통해 공유할 수 있는 HTML/JS/CSS 기반 웹 인터페이스입니다. 또한 FACT는 통합 SwaggerUI로 탐색할 수 있는 REST 유사 HTTP API를 제공합니다. 웹 인터페이스의 주요 기능은 다음과 같습니다.
FACT는 연구용 프로토타입으로 유지 관리되지만, 프로젝트는 잘 테스트되어 있으며 기본 문서를 포함하고 다양한 프로덕션 수준 기능을 제공합니다. 우리는 항상 피드백과 기능 요청을 환영합니다.
자세한 내용과 일부 스크린샷은 프로젝트 페이지에서 확인할 수 있습니다.
FACT는 다중 프로세스 애플리케이션으로 설계되었으며, 코어와 RAM이 많을수록 좋습니다.
| 최소 | 권장 |
|---|---|
| 4 코어 | 16 코어 |
| 8 GB RAM | 64 GB RAM |
| 10 GB 디스크 공간 | 10* GB 디스크 공간 |
[!NOTE] FACT 코드, 컨테이너, 바이너리를 설정하는 데 약 10GB가 필요합니다. 언패킹된 파일 및 분석 결과 저장을 위해 추가 공간이 필요합니다. 이는 별도의 파티션이나 드라이브에 있을 수 있습니다.
원칙적으로 FACT는 모든 Linux 배포판에 설치할 수 있지만, 설치 프로그램은 다음으로 제한됩니다.
이전 배포판(예: Debian 11 "Bullseye" 또는 Ubuntu 20.04 "Focal")에 설치하는 것은 여전히 작동할 수 있지만, 이러한 배포판은 수명이 다했으므로 안정적인 것으로 간주되지 않습니다.
FACT는 Python 3.10–3.14를 필요로 합니다(지원되는 모든 배포판에서 기본값이어야 합니다).
설치 과정은 대부분 자동화되어 단일 스크립트로 구성됩니다. 일부 기능은 구체적으로 선택할 수 있습니다. FACT 설치에 대한 자세한 가이드는 INSTALL.md를 참조하세요.
[!IMPORTANT] 컨테이너를 광범위하게 사용하지만, FACT에는 여전히 많은 종속성이 포함되어 있습니다(그리고 제거 기능은 제공되지 않습니다). 시스템을 깨끗하게 유지하려면 다음에 제공된 설정 옵션 중 하나를 시도할 수 있습니다.
매월 사용 준비가 완료된 마스터 브랜치의 Vagrant 박스를 제공합니다. Vagrant는 시스템에 설치하지 않고 FACT를 시작할 수 있는 쉽고 편리한 방법입니다. Vagrant를 설정하고 제공된 박스를 VirtualBox로 가져오기만 하면 됩니다. 박스는 vagrantup 웹사이트에서 찾을 수 있습니다!
FACT와 Vagrant를 시작하는 방법은 튜토리얼을 확인하세요.
도커화된 버전도 있지만 현재 유지 관리되지 않습니다. (자세한 내용은 FACT_docker 저장소를 참조하세요).
start_fact.py 스크립트를 실행하여 FACT를 시작할 수 있습니다.
이 스크립트는 설치된 모든 구성 요소를 자동으로 감지합니다.
src/start_fact.py
그러면 FACT는 기본적으로 http://localhost:5000 또는 (nginx와 함께 설치된 경우) https://localhost에서 접근할 수 있습니다.
Ctrl + c를 누르거나 start_fact.py 스크립트에 SIGTERM을 보내 시스템을 종료할 수 있습니다.
[!CAUTION] FACT는 공개 인터넷 서비스로 사용하기 위한 것이 아닙니다. 웹 인터페이스는 강화된 애플리케이션이 아닙니다. 우리는 SecDevOps를 적용하여 보안 문제를 제한하려고 노력하지만, FACT는 여전히 취약점을 제공할 수 있습니다. 완전히 신뢰할 수 없는 네트워크에서 FACT를 호스팅하려는 경우 FACT 구성에서 모든 비밀번호를 재설정해야 합니다.
[!TIP] FACT 사용 방법에 대한 더 많은 문서는 위키 페이지에서 찾을 수 있습니다.
또한 Sphinx 문서를 살펴볼 수 있습니다.
FACT가 무엇이고 어떻게 작동하는지에 대한 정보는
docs 폴더의 슬라이드에서도 확인할 수 있습니다.
FACT는 REST API를 제공합니다. 자세한 내용은 위키 페이지에서 확인할 수 있습니다.
FACT는 선택적 기본 인증, 역할 및 사용자 관리를 제공합니다. 자세한 내용은 위키 페이지에서 확인할 수 있습니다.
기여하는 가장 쉬운 방법은 자신의 플러그인을 작성하는 것입니다. 개발자 매뉴얼은 GitHub의 위키에서 찾을 수 있습니다.
현재 사용 가능한 추가 플러그인:
src/firmware_import_export.py 스크립트를 사용하여 언패킹된 파일과 분석 결과를 내보내고 다른 FACT 인스턴스로 가져올 수 있습니다.
데이터는 ZIP 아카이브로 저장되며, 이는 스크립트가 가져오기 중에 기대하는 형식이기도 합니다.
분석된 펌웨어 이미지의 파일 및 분석 데이터를 내보내려면 다음을 실행하세요.
python3 firmware_import_export.py export FW_UID [FW_UID_2 ...] [-o OUTPUT_DIR]
[!NOTE] 내보낸 아카이브는 상당한 디스크 공간을 차지할 수 있습니다. 고정된 관계는 없지만, 원래 펌웨어 크기의 2~10배를 넘을 수 있습니다.
그런 다음 내보낸 파일을 다음으로 가져올 수 있습니다.
python3 firmware_import_export.py import FW.zip [FW_2.zip ...]
여러 BlackHat Arsenal 세션에서 FACT를 소개하게 되어 기쁩니다.
초기에 Vagrantfile을 제공한 @botlabsDev에게 감사드립니다. 지금은 더 이상 사용되지 않습니다.
이 프로젝트는 독일 연방 정보 보안청 (BSI) 및 다른 기관에서 부분적으로 자금을 지원받습니다.
펌웨어 분석 및 비교 도구 (FACT)
저작권 (C) 2015-2026 Fraunhofer FKIE
이 프로그램은 자유 소프트웨어입니다: 자유 소프트웨어 재단에서 발행한 GNU 일반 공중 사용 허가서의 조건에 따라 이를 재배포하거나 수정할 수 있습니다. 허가서 버전 3 또는 (선택 사항에 따라) 이후 버전 중 하나를 선택할 수 있습니다. 이 프로그램은 유용하리라는 희망으로 배포되지만, 어떠한 보증도 없습니다. 상업성 또는 특정 목적에의 적합성에 대한 묵시적 보증도 없습니다. 자세한 내용은 GNU 일반 공중 사용 허가서를 참조하십시오. 이 프로그램과 함께 GNU 일반 공중 사용 허가서 사본을 받았을 것입니다. 받지 못했다면 http://www.gnu.org/licenses/를 확인하십시오.
일부 플러그인은 다른 라이선스를 가질 수 있습니다. 그런 경우 플러그인의 폴더에 라이선스 파일이 제공됩니다.