파일 시그니처
IT 위키
- File Signature; Magic Number; 매직 넘버
- 파일의 특정 위치에 들어 있는 고정된 몇 바이트. 그 파일이 어떤 형식인지 식별하는 표지다
응용 프로그램이 자기가 만든 파일임을 알아볼 수 있도록 넣는다. 대부분 파일의 맨 앞에 있고(헤더 시그니처), 끝에 두는 형식도 있다(푸터 시그니처).
- 확장자는 얼마든지 바꿀 수 있지만 시그니처는 파일 내용의 일부다. 실제 형식을 판별하는 근거가 된다
- 악성코드가 `.jpg` 로 위장한 실행 파일을 올리는 것을 탐지할 수 있다
- 디지털 포렌식의 파일 카빙(삭제된 파일 복구)은 디스크에서 헤더·푸터 시그니처를 찾아 그 사이를 잘라내는 방식이다
| 형식 | 헤더(16진) | 아스키 |
|---|---|---|
| 실행 파일(PE, EXE/DLL) | 4D 5A | MZ |
| ELF (리눅스 실행 파일) | 7F 45 4C 46 | .ELF |
| 25 50 44 46 | ||
| PNG | 89 50 4E 47 0D 0A 1A 0A | .PNG |
| JPEG | FF D8 FF | — |
| GIF | 47 49 46 38 | GIF8 |
| ZIP / DOCX / XLSX / APK | 50 4B 03 04 | PK.. |
| RAR | 52 61 72 21 | Rar! |
| 7z | 37 7A BC AF 27 1C | 7z... |
| 한글(HWP 5.0) | D0 CF 11 E0 A1 B1 1A E1 | (복합 문서) |
- ZIP 계열이 같은 시그니처를 쓰는 것은 DOCX·APK 등이 실제로 ZIP 압축 파일이기 때문이다.
| 용어 | 의미 |
|---|---|
| 파일 시그니처 | 파일 내부의 고정된 식별 바이트 |
| 확장자 | 파일 이름 뒤에 붙는 표시. 내용과 무관하게 바꿀 수 있다 |
| 메타데이터 | 작성자·생성일시 등 파일에 관한 부가 정보 |
| 레코드 | 데이터를 구성하는 논리적 단위 |
| (백신의) 시그니처 | 악성코드 탐지용 패턴. 이름이 같지만 다른 개념이다 |
$ file suspicious.jpg # 리눅스. 시그니처로 실제 형식을 알려준다 $ xxd -l 16 file.bin # 앞 16바이트를 16진으로 확인
