--- title: binwalk — 보안 분석 및 진단 date: 2026-10-18 time: 12:00 model: admin category: programs author_type: human summary: 펌웨어·디스크 이미지에 포함된 압축·파일시스템·서명을 스캔해 내부 구조를 보여 주는 분석 도구. v3는 Rust로 재작성. tags: 프로그램, 보안 분석 및 진단, binwalk --- 펌웨어·디스크 이미지 안의 파일시스템과 포함된 파일을 식별하는 분석 도구입니다. ## 기본 정보 | 프로그램 이름 | binwalk (빈워크) | | --- | --- | | 한 줄 소개 | 펌웨어·디스크 이미지 안의 파일시스템과 포함된 파일을 식별하는 분석 도구입니다. | | 개발·유지 | ReFirmLabs | | 공식 홈페이지 | https://github.com/ReFirmLabs/binwalk | | 공식 문서 | https://github.com/ReFirmLabs/binwalk#readme | | 공식 다운로드 | https://github.com/ReFirmLabs/binwalk/releases | | 지원 운영체제 | Linux, macOS, Windows (v3는 Rust 기반) | | 라이선스 | MIT | | 안정 버전 | 3.1.0 (2024-10-31 공개, Rust 재작성) — 확인일 2026-10-18 | | GitHub 저장소 | https://github.com/ReFirmLabs/binwalk | | 분류 | 보안 분석 및 진단 (태그: 펌웨어 분석, 파일시스템, 시그니처 스캔) | ## 이 프로그램은 무엇인가? binwalk은 라우터·IoT 기기 펌웨어나 디스크 이미지 바이너리 안에 어떤 파일시스템, 압축 블록, 인증서 등이 들어 있는지 시그니처 스캔으로 찾아내는 도구입니다. '이 펌웨어 파일 안에 무엇이 들어 있나'를 파악할 때 첫 단계로 많이 쓰입니다. 2024년 공개된 v3는 Rust로 완전히 재작되어 속도와 오탐 감소 개선이 있었습니다. ## 어떤 문제를 해결하는가? - IoT·네트워크 장비 펌웨어의 내부 구조를 파악해야 할 때. - 디스크 이미지에서 어떤 파티션·파일시스템이 쓰였는지 확인해야 할 때. - 파일 안에 숨겨진 압축 블록·인증서·스크립트 등을 찾아내야 할 때. - 보안 점검에서 배포 바이너리에 예상 외 파일이 포함되지 않았는지 확인해야 할 때. ## 주요 기능 ### 시그니처 스캔 바이너리 내 알려진 매직 바이트·시그니처를 대조해 잠재적 파일 경계를 표시합니다. - **활용 상황**: 펌웨어 이미지 전체를 훑습니다. - **얻는 결과**: 각 오프셋에 어떤 유형(压缩, 파일시스템 등)이 있을지 목록이 나옵니다. - **제한 사항**: 시그니처 기반이라 오탐이 있을 수 있고 v2·v3 결과 형식이 다릅니다. ### 파일 추출 식별된 블록을 실제 파일로 추출·압축 해제합니다 (v3에서 확장). - **활용 상황**: 추출한 루트 filesystem을 문자열·설정 파일 분석에 씁니다. - **얻는 결과**: 안에 든 busybox, 설정 파일 등을 확보합니다. - **제한 사항**: 손상된 블록은 해제에 실패할 수 있습니다. ### entropy 분석 바이너리 구간의 정보 엔트로피를 계산해 압축·암호화 구간을 시각적으로 구분합니다. - **활용 상황**: 평문과 암호화 블록이 어디서 시작되는지 봅니다. - **얻는 결과**: 엔트로피 곡선으로 구간 경계를 추정합니다. - **제한 사항**: 엔트로피만으로 정확한 파일 유형을 확정할 수는 없습니다. ### Docker·크로스 지원 v3는 Dockerfile과 Windows 빌드를 공식 제공합니다. - **활용 상황**: 분석 환경을 일관되게 유지해야 하는 팀에서 사용합니다. - **얻는 결과**: 컨테이너로 재현 가능한 분석 환경을 만듭니다. - **제한 사항**: GUI가 없어 추출 결과 후처리는 별도 도구로 해야 합니다. ## 설치 및 실행 ### pip (v3) Rust 기반 v3는 저장소에서 소스를 받아 빌드합니다. cargo가 필요합니다. ``` git clone https://github.com/ReFirmLabs/binwalk cd binwalk cargo install --path . ``` ### Ubuntu / Debian (v2 저장소 버전) 배포판 저장소의 버전은 v2 계열일 수 있습니다. ``` sudo apt update sudo apt install binwalk ``` ### Docker 공식 저장소의 Dockerfile로 컨테이너 환경을 만듭니다. ``` # 저장소의 Dockerfile 참고: https://github.com/ReFirmLabs/binwalk ``` ## 실제 사용 예제 ### 기본 스캔 펌웨어 파일을 스캔해 포함 가능성이 있는 구조를 나열합니다. ``` binwalk firmware.bin ``` ### 파일 추출 식별된 항목을 추출 디렉터리로 풀어 냅니다. (v3 기준, 결과는 예시) ``` binwalk -e firmware.bin ``` ### 엔트로피 분석 압축·암호화 추정을 위해 엔트로피 곡선을 뽑습니다. ``` binwalk -E firmware.bin ``` ## 장점과 한계 ### 장점 - 펌웨어·이미지 초기 조사에서 가장 빠르게 전체 구조를 파악할 수 있습니다. - MIT 라이선스로 상업적 활용이 자유롭습니다. - v3는 Rust 기반으로 이전보다 빠르고 오탐이 줄었습니다. - CLI라 스크립트·자동화 파이프라인에 붙이기 쉽습니다. ### 사용 전에 고려할 점 - 시그니커 기반이라 결과를 전부 신뢰하면 안 되고 후속 확인이 필요합니다. - GUI 리버싱 도구 대비 심층 분석 기능은 제한적입니다. - 배포판 저장소 버전이 v2로 남아 있는 경우가 있어 공식 저장소 확인이 필요합니다. - 추출된 파일의 보안 검증은 사용자 몫입니다 (악성 이미지 주의). ## 비슷한 프로그램과 비교 | 프로그램 | 특징 | 이런 경우에 적합 | | --- | --- | --- | | firmware-mod-kit | 펌웨어 추출·재조립에 초점을 둔 도구 모음입니다. | 추출 후 다시 패키징해야 할 때. | | jefferson | JFFS2 파일시스템만 전문적으로 추출합니다. | JFFS2 이미지 분석이 목적일 때. | | file·xxd | 단순 매직 바이트 확인과 16진수 열람용 기본 도구입니다. | 작은 파일의 표시만 빠르게 확인할 때. | ## 공식 자료 및 추가 학습 - [공식 홈페이지](https://github.com/ReFirmLabs/binwalk) — https://github.com/ReFirmLabs/binwalk - [공식 문서 / 지식베이스](https://github.com/ReFirmLabs/binwalk#readme) — https://github.com/ReFirmLabs/binwalk#readme - [공식 다운로드](https://github.com/ReFirmLabs/binwalk/releases) — https://github.com/ReFirmLabs/binwalk/releases - [릴리스 노트](https://github.com/ReFirmLabs/binwalk/releases) — https://github.com/ReFirmLabs/binwalk/releases - [소스 / 개발 자료](https://github.com/ReFirmLabs/binwalk) — https://github.com/ReFirmLabs/binwalk 버전·지원 환경 정보는 2026-10-18 기준으로 공식 사이트에서 확인한 값입니다. 설치 명령은 사용하는 배포판과 버전에 따라 달라질 수 있으므로 공식 설치 문서를 함께 확인하세요. ## 실제 실행 화면 binwalk 시그니처 스캔 결과를 서버 풍으로 재구성한 합성 예시입니다. 화면은 합성 예시이며 실제 실행 결과가 아닙니다. ![binwalk 펌웨어 스캔 결과: uImage 헤더·LZMA 압축·Squashfs 파일시스템 오프셋이 표시되는 화면](https://games.cursorai.co.kr/assets/binwalk-demo.png) 실제 운영 중인 서버 --- 원문(HTML): https://games.cursorai.co.kr/programs/apps/security/binwalk.html