
파일 시그니처 분석이예은2024. 11. 15. 22:39
Table of Contents
1. 파일 시그니처란?
파일의 형식을 식별할 수 있는 고유한 바이트 시퀀스. 매직 넘버(Magic Number)라고도 불립니다.
2. 파일 시그니처를 알아야하는 이유
1) 파일 시스템 추출 : 디스크 이미지 파일에서 파일 시스템 추출 시 사용할 수 있습니다.
2) 파일 분석 및 복구: 디지털 포렌식 등에서 파일이 손상된 경우에도 파일의 종류를 판별할 수 있습니다.
3) 숨겨진 데이터 탐지: 악성코드 등의 패딩되어 숨겨진 데이터를 탐지할 때 사용할 수 있습니다.
3. 파일 시그니처 확인하기
1) xxd
- xxd filename: 파일 전체를 16진수로 출력.
xxd target.img
- xxd -l [length]: 출력할 바이트 수를 지정.
xxd -l 16 target.img
- xxd -s [offset]: 특정 위치에서부터 데이터를 읽기 시작.
xxd -l 8 -s 0 target.img
=> 0번째 바이트(시작)부터 8바이트 읽어오기

- 디스크 이미지 파일의 경우 출력할 바이트 수를 지정하지 않으면 엄청나게 많은 양의 바이트를 출력하기 때문에 -l 옵션은 꼭 사용하는 것이 좋습니다.
2) hexdump
- hexdump filename: 파일 전체를 16진수로 출력.
hexdump target.img
- -C: 바이트를 16진수로 출력하고, 오른쪽에 ASCII 문자열 표시.
hexdump -C target.img
- -n <byte length>: 출력할 데이터 길이를 지정
hexdump -n 16 example.img
- -s <byte offset>: 지정한 바이트부터 출력.
hexdump -s 32 example.img
- -e <format>: 출력 형식을 사용자 정의. 포맷은 printf 스타일로 지정
hexdump -e '1/1 "%02X "' example.img

자, 여기서 xxd는6465이고 hexdump는 6564로 시작하는 이유가 뭘까요?? 바로 xxd는 데이터를 빅엔디언으로 표시하는 반면, hexdump는 리틀 엔디언 방식으로 표시하기 때문입니다.
4. 파일 시스템 추출하기
1) dd
dd if=[input file] of=[output file] bs=[block size] count=[block count] skip=[offset]
위 xxd로 특정 파일 시그니처를 확인하고 그 바이트를 시작점으로 설정하면 원하는 부분만 파일 형태로 추출할 수 있습니다.
2) binwalk
파일 시그니처를 확인하고, 추출하는 것을 binwalk를 사용하면 간단한 한 줄의 명령어로도 가능합니다!
더보기
binwalk -e target.img
5. 파일 시그니처의 종류
대표적인 것들만 보겠습니다.
| 파일 형식 | 파일 확장자 | 시그니처 (16진수) | ASCII 표현 |
| JPEG | .jpg, .jpeg | FF D8 FF | ÿØÿ |
| ZIP (압축 파일) | .zip | 50 4B 03 04 | PK.. |
| 7-Zip (압축 파일) | .7z | 37 7A BC AF 27 1C | 7z..'. |
| EXE (실행 파일) | .exe | 4D 5A | MZ |
| DLL (라이브러리) | .dll | 4D 5A | MZ |
| ELF (실행 파일) | .elf | 7F 45 4C 46 | .ELF |
| ISO (디스크 이미지) | .iso | 43 44 30 30 31 | CD001 |
| RAW 디스크 이미지 | .img, .bin | FAT32: EB 3C 90 또는 EB 58 90 | .<. 또는 .X. |
| EXT4: 53 EF | S. | ||
| 임베디드 시스템 바이너리 | .chk | squashfs: 68 73 71 73 | hsqs |
| cramfs: 45 3D CD 28 | E=Í( | ||
| UBI 파일 | .ubi | 55 42 49 23 | UBI# |
아래 링크에서 파일 시그니처를 볼 수 있습니다.
http://forensic-proof.com/archives/300
파일 시그니처 모음 (Common File Signatures) | FORENSIC-PROOF
forensic-proof.com
'이예은' 카테고리의 다른 글
| plt와 got (0) | 2025.01.31 |
|---|---|
| lua 문법과 lua에서 발생할 수 있는 취약점 (0) | 2025.01.12 |
| Bindiff 활용해서 Binary Diffing하기 (0) | 2024.11.01 |

@stellarflare :: stellarflare 님의 블로그
stellarflare 님의 블로그 입니다.
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!