펌웨어 분석 및 하드웨어 해킹을 위한 binwalk 사용법 정리
binwalk는 바이너리 파일의 구조를 분석하고, 내장된 파일, 데이터, 또는 코드 조각을 찾는 데 사용되는 도구입니다.
파일 시그니처를 사용해서 어떤 데이터가 있는지 분석해 줍니다.
설치
apt install binwalk
https://github.com/ReFirmLabs/binwalk
GitHub - ReFirmLabs/binwalk: Firmware Analysis Tool
Firmware Analysis Tool. Contribute to ReFirmLabs/binwalk development by creating an account on GitHub.
github.com
파일 시그니처 분석 (-B)
파일 시그니처 분석인 -B 옵션은 Default 옵션이기에 선택하지 않아도 됩니다.
보통 펌웨어는 보통 실행파일, 압축된 데이터, 이미지파일, 파일시스템 등으로 구성되어 있기에 각각의 고유 시그니처로 분류되어 있습니다.
이번 파일은 UBI 파일 시스템입니다.
UBI (Unsorted Block Images)는 NAND 플래시 메모리에서 데이터 저장을 관리하기 위해 설계된 파일 시스템입니다. UBI는 MTD (Memory Technology Devices) 드라이버와 함께 사용되어, 플래시 메모리의 특성을 고려하여 데이터를 효율적으로 저장하고 관리하죠.
파일 아키텍처 분석 (-A)
펌웨어의 아키텍처를 확인하고 싶을 때, -A 옵션을 줍니다. 보통 소형 장비의 경우 arm-m시리즈를 많이 사용합니다.
파일 엔트로피 분석 (-E)
파일 바이트 정보를 그래프의 형태로 출력합니다. 주어진 데이터 블록이 1에 가까울수록 random하고, 0에 가까울수록 random하지 않습니다. 이를 통해 암호화 유무를 확인할 수 있습니다.
펌웨어 파일 추출 (-e)
펌웨어 내부에 알려진 파일 타입을 추출해주는 옵션입니다. 펌웨어 언패킹도 가능합니다.(fmk, dd등도 가능)
아래 사진처럼 -e 옵션을 했을 때, 폴더하나가 생성되며 안에 ubi파일이 보입니다. 이런 경우 ubi 파일로 압축된 형식이거나 binwalk에서 내부의 압축된 데이터를 자동으로 추출하지 못한 경우일수도 있습니다.
보통은 아래 그림처럼 squashfs-room이 폴더가 나옵니다.
squashfs 파일시스템은 임베디드 전용 파일 시스템이다.
binwalk 실습
예제파일은 아래 jpeg파일입니다.
"CTFLEARN"에서 나온 "Binwalk"라는 문제이고 간단한 예제입니다.
binwalk로 확인했을 때, PNG 파일이 두개가 보입니다.
이번엔 dd옵션을 줬습니다. --dd=".*" 옵션은 파일 형식을 자동으로 추출하는 옵션입니다.
binwalk --dd=".*" 파일명
추출된 파일들에 .png를 줘서 이미지로 확인했고, Flag를 확인했습니다.
'Hardware(IoT)' 카테고리의 다른 글
Iptime Firmware 분석 (0) | 2025.02.19 |
---|---|
QEMU TAP Network와 User-mode Network의 차이점 (0) | 2025.02.19 |
Firmware Emulation Practice - Dreamhack Hardware (0) | 2025.02.19 |