본문 바로가기
디지털 파일 검증 연구소 디지털 파일 검증 연구소

파일 시그니처 기반 포맷 식별 원리|Magic Number와 헤더 바이트 분석

디지털 파일 검증 연구소 읽는 시간 약 14분

파일 이름이 report.pdf라고 해서 실제로 PDF 형식이라고 단정할 수 있을까?

운영체제는 파일 확장자를 참고해 연결 프로그램을 선택하지만, 확장자는 파일 내부의 데이터 구조를 보증하지 않는다. 파일 이름만 변경해도 확장자는 달라지기 때문이다.

파일의 실제 형식을 판단할 때 활용하는 대표적인 기술이 파일 시그니처(File Signature)와 매직 넘버(Magic Number) 분석이다.

이 글에서는 두 개념의 관계부터 PNG·JPEG·PDF 파일의 헤더 구조, 바이너리 분석 방법, 파일 형식 위장 탐지의 한계까지 단계별로 살펴본다.

1. 파일 시그니처와 매직 넘버의 개념

파일 시그니처(File Signature)

파일 시그니처는 특정 파일 형식이나 구조를 식별하는 데 사용되는 특징적인 바이트 패턴이다.

많은 파일 형식은 파일 시작 부분에 고유한 식별값을 배치한다. 파일 분석 프로그램은 이 값을 읽어 해당 파일이 어떤 형식일 가능성이 높은지 판단한다.

예를 들어 PNG 파일은 일반적으로 다음 8바이트로 시작한다.

89 50 4E 47 0D 0A 1A 0A

이 값은 PNG 형식의 표준 시그니처다.

매직 넘버(Magic Number)

매직 넘버는 파일이나 데이터 구조의 종류를 식별하기 위해 사용되는 특정 상수 또는 바이트 패턴을 의미한다.

파일 포맷 분석에서는 파일 시그니처와 매직 넘버라는 용어가 서로 겹치는 의미로 사용되는 경우가 많다.

다만 파일 시그니처는 파일 형식 식별에 활용되는 바이트 패턴을 강조하고, 매직 넘버는 소프트웨어가 데이터 형식이나 구조를 구별하기 위해 사용하는 식별 상수라는 더 넓은 의미로 쓰이기도 한다.

따라서 두 용어를 완전히 별개의 기술로 구분하기보다는 사용되는 맥락을 이해하는 것이 중요하다.

2. 주요 파일 형식의 시그니처 비교

다음은 디지털 파일 분석에서 자주 확인하는 대표적인 시그니처다.

파일 형식대표 시그니처(Hex)일반적인 위치
PNG89 50 4E 47 0D 0A 1A 0A시작 위치
JPEGFF D8 FF시작 위치
PDF25 50 44 46 2D일반적으로 시작 위치
GIF87a47 49 46 38 37 61시작 위치
GIF89a47 49 46 38 39 61시작 위치
ZIP50 4B 03 04일반적인 ZIP 로컬 파일 헤더
7z37 7A BC AF 27 1C시작 위치
Windows PE4D 5ADOS 헤더 시작 위치

이 표를 해석할 때는 몇 가지 예외를 알아야 한다.

첫째, JPEG의 FF D8 FF는 일반적인 JPEG 시작 패턴이지만 이후 바이트는 파일에 따라 달라질 수 있다.

둘째, ZIP은 PK 계열의 여러 레코드 구조를 사용하므로 모든 ZIP 파일이 반드시 50 4B 03 04로 시작하는 것은 아니다.

셋째, PDF의 %PDF- 헤더는 일반적으로 파일 시작 부분에 위치하지만, 일부 PDF 처리 도구는 시작 위치에 다른 데이터가 있는 파일도 허용할 수 있다.

넷째, Windows 실행 파일의 MZ 값만으로 해당 파일이 유효한 PE 실행 파일이라고 확정할 수 없다. PE 형식을 확인하려면 DOS 헤더의 e_lfanew 오프셋을 따라 PE\0\0 시그니처까지 검사해야 한다.

핵심은 시그니처가 파일 형식 식별의 출발점이지, 파일 전체의 유효성을 보증하는 수단은 아니라는 점이다.

3. PNG 파일 헤더의 실제 구조

PNG는 파일 시작 부분의 8바이트 시그니처가 명확하게 정의되어 있어 바이너리 구조를 학습하기에 적합하다.

PNG 시그니처를 바이트 단위로 분해하면 다음과 같다.

바이트의미
89PNG 시그니처 시작을 구별하는 비ASCII 바이트
50 4E 47ASCII 문자 PNG
0D 0ACR·LF 줄바꿈 바이트
1A과거 텍스트 전송 환경과 관련된 제어 문자
0ALF 줄바꿈 바이트

이 8바이트 뒤에는 PNG 청크(Chunk) 구조가 이어진다.

정상적인 PNG 파일에서는 첫 번째 청크가 IHDR이며, 이미지의 너비와 높이, 비트 깊이, 색상 유형 등 기본 정보를 포함한다.

따라서 PNG 형식을 보다 엄밀하게 확인하려면 다음 항목을 함께 검사해야 한다.

  1. 첫 8바이트가 PNG 시그니처와 일치하는가?
  2. 첫 번째 청크가 IHDR인가?
  3. 청크 길이와 데이터 구조가 유효한가?
  4. 청크의 CRC 검증값이 일치하는가?
  5. 필수 청크와 파일 종료 구조가 올바른가?

시그니처가 정상이어도 내부 청크가 손상되면 이미지가 열리지 않을 수 있다.

이처럼 파일 형식 식별과 파일 구조 검증은 서로 다른 작업이다.

4. Windows PowerShell로 파일 헤더 확인하기

Windows에서는 별도의 유료 프로그램 없이 PowerShell을 이용해 파일의 시작 바이트를 확인할 수 있다.

다음 실습은 기존 파일을 읽기 전용으로 열어 앞부분의 데이터를 확인하는 방식이다.

① 분석할 파일 준비

먼저 본인이 만든 테스트 파일이나 출처가 확인된 PNG 이미지를 준비한다.

예시 경로:

C:\FileTest\sample.png

실제 파일의 위치가 다르다면 명령어의 경로를 변경해야 한다.

② PowerShell 실행

Windows 시작 메뉴에서 PowerShell을 검색해 실행한다.

관리자 권한은 필요하지 않다.

③ 파일 시작 16바이트 확인

다음 명령어를 입력한다.

$path = "C:\FileTest\sample.png"
$stream = [System.IO.File]::OpenRead($path)

try {
    $buffer = New-Object byte[] 16
    $count = $stream.Read($buffer, 0, $buffer.Length)

    if ($count -eq 0) {
        Write-Output "파일이 비어 있습니다."
    }
    else {
        [BitConverter]::ToString($buffer, 0, $count)
    }
}
finally {
    $stream.Dispose()
}

이 코드는 파일을 읽기 전용으로 열어 최대 16바이트를 읽도록 시도한다. 실제 읽은 바이트 수만 출력하며, 파일이 비어 있으면 별도의 안내 메시지를 표시한다.

PNG 파일이라면 출력 결과의 시작 부분이 다음과 일치해야 한다.

89-50-4E-47-0D-0A-1A-0A

뒤의 바이트는 파일 구조에 따라 달라진다.

이 결과는 PNG 시그니처와 일치한다는 근거가 되지만, 이미지 파일 전체가 정상이라는 뜻은 아니다.

5. 확장자 위장 파일을 식별하는 원리

파일 확장자는 파일 이름의 일부다.

예를 들어 PNG 이미지의 이름을 다음과 같이 변경했다고 가정하자.

변경 전: sample.png

변경 후: sample.jpg

이름만 변경하면 파일 내부의 PNG 데이터 구조는 그대로 유지된다.

따라서 파일의 시작 바이트를 분석하면 여전히 PNG 시그니처가 확인될 수 있다.

검사 항목결과
파일 이름sample.jpg
표시 확장자.jpg
내부 시그니처PNG
판단확장자와 내부 형식이 불일치

이러한 불일치는 파일 이름 변경, 잘못된 저장, 데이터 처리 오류 등 다양한 이유로 발생할 수 있다.

악의적인 파일 위장에도 활용될 수 있지만, 확장자와 시그니처가 다르다는 사실만으로 악성 파일이라고 단정해서는 안 된다.

파일을 열어 확인할 필요가 있다면 신뢰할 수 있는 도구와 격리된 분석 환경을 이용하는 것이 안전하다.

6. 파일 시그니처 분석의 기술적 한계

파일 시그니처 분석은 유용하지만 모든 파일을 정확하게 식별하는 완전한 방법은 아니다.

① 동일한 시그니처를 공유하는 형식

ZIP 기반 문서 형식인 DOCX, XLSX, PPTX 등은 ZIP 컨테이너 구조를 사용한다.

따라서 시작 바이트만 확인하면 일반 ZIP 파일과 구분하기 어려울 수 있다.

이 경우 압축 내부의 디렉터리 구조와 메타데이터까지 검사해야 한다.

② 헤더가 정상이어도 내부 데이터가 손상된 경우

파일 시작 바이트가 정상이라도 중간 데이터나 종료 구조가 손상되면 파일이 정상적으로 열리지 않을 수 있다.

파일의 유효성을 확인하려면 포맷별 파서(Parser)를 통한 구조 검증이 추가로 필요하다.

③ 시그니처가 파일 시작 위치에 없는 경우

모든 파일 형식이 첫 바이트부터 고유 시그니처를 배치하는 것은 아니다.

일부 형식은 정해진 오프셋에 식별값을 저장하거나, 파일 전체 구조를 분석해야 정확히 구분할 수 있다.

④ 의도적으로 조작된 파일

공격자가 특정 시그니처를 삽입하거나 복수의 형식으로 해석될 수 있는 파일을 만들 수도 있다.

따라서 보안 분석에서는 단순 시그니처 비교 외에도 파일 구조 검사, 메타데이터 분석, 악성코드 검사 등을 함께 활용한다.

7. 파일 시그니처 분석과 해시 검증의 차이

파일 시그니처 분석과 SHA-256 해시 검증은 모두 파일 검증 분야에서 활용되지만 목적은 다르다.

구분파일 시그니처 분석SHA-256 해시 검증
주요 목적파일 형식 식별파일 데이터 동일성 비교
검사 대상특징적인 바이트 패턴파일 전체 바이트
대표 결과PNG, JPEG, PDF 등256비트 해시값
활용 사례확장자 위장 탐지다운로드 파일 무결성 확인
한계전체 구조의 정상 여부를 보장하지 않음신뢰할 수 있는 기준 해시값이 필요함

예를 들어 두 파일이 동일한 PNG 시그니처를 가지고 있어도 내부 이미지 데이터는 서로 다를 수 있다.

반면 SHA-256은 파일 전체 데이터를 기반으로 해시값을 계산하므로, 파일의 내용이 달라졌는지 비교하는 데 활용할 수 있다.

다만 해시값만으로 파일의 안전성이나 출처를 확인할 수는 없다.

8. 실무에서 권장하는 파일 형식 검증 순서

파일을 분석할 때는 다음과 같은 순서로 접근할 수 있다.

1단계 — 파일 이름과 확장자 확인

파일 이름과 표시 확장자를 기록한다.

2단계 — 파일 헤더 분석

파일의 시작 바이트 또는 형식별 지정 위치의 시그니처를 확인한다.

3단계 — 내부 구조 검증

파일 포맷에 맞는 파서를 사용해 필수 구조와 데이터의 유효성을 검사한다.

4단계 — 해시값 기록

분석 대상 파일의 SHA-256 해시값을 계산해 기록한다.

5단계 — 결과 비교 및 문서화

확장자, 시그니처, 구조 검증 결과, 해시값을 함께 기록한다.

이 과정은 파일 포맷 식별뿐 아니라 디지털 포렌식, 데이터 품질 점검, 파일 수집 시스템의 입력 검증 등에도 활용할 수 있다.

단, 실제 디지털 포렌식 증거 분석에서는 원본 보존과 증거 취급 기록 등 추가 절차가 필요하다.

9. 자주 묻는 질문

Q1. 파일 시그니처와 매직 넘버는 완전히 다른 개념인가요?

아니다. 파일 형식 분석에서는 두 용어가 유사하게 사용되는 경우가 많다. 다만 매직 넘버는 파일뿐 아니라 여러 데이터 구조의 식별 상수에도 사용되는 더 넓은 개념이다.

Q2. 확장자와 파일 시그니처가 다르면 악성 파일인가요?

반드시 그렇지는 않다. 단순한 이름 변경이나 잘못된 저장 과정에서도 불일치가 발생할 수 있다. 보안상 위험 여부는 추가 분석이 필요하다.

Q3. PNG 시그니처가 일치하면 정상 이미지인가요?

아니다. 시그니처가 일치해도 내부 청크나 데이터가 손상되었을 수 있다. 전체 구조 검증이 필요하다.

Q4. 파일 시그니처 분석으로 원본과 복사본이 같은지 확인할 수 있나요?

파일 시그니처만으로는 확인할 수 없다. 파일 전체의 동일성을 비교하려면 SHA-256과 같은 암호학적 해시 함수를 사용하는 것이 적합하다.

Q5. 파일 시그니처 분석에 유료 프로그램이 필요한가요?

반드시 필요하지는 않다. Windows PowerShell이나 무료 헥스 편집기를 이용해 파일 헤더를 확인할 수 있다.

마무리

파일 시그니처와 매직 넘버는 파일의 실제 형식을 식별하는 데 중요한 역할을 한다.

그러나 파일 시작 부분의 바이트 패턴이 일치한다는 사실만으로 전체 파일의 유효성이나 보안상 안전성을 보장할 수는 없다.

정확한 분석을 위해서는 파일 확장자, 헤더 시그니처, 내부 구조, 해시값을 목적에 맞게 함께 검토해야 한다.

특히 파일 형식 식별과 데이터 무결성 검증은 서로 다른 목적을 가진 작업이라는 점을 구분하는 것이 중요하다.


핵심 내용 3줄 요약

  • 파일 시그니처는 파일 형식을 식별하는 데 사용되는 특징적인 바이트 패턴이다.
  • 매직 넘버와 파일 시그니처는 파일 분석에서 유사한 의미로 사용되지만 적용 범위에 차이가 있을 수 있다.
  • 파일 형식의 정확한 검증에는 시그니처 확인뿐 아니라 내부 구조 분석이 필요하다.

공식 참고자료

  1. W3C — PNG Specification
    https://www.w3.org/TR/png-3/
  2. Adobe — PDF 1.7 Reference
    https://opensource.adobe.com/dc-acrobat-sdk-docs/pdfstandards/PDF32000_2008.pdf
  3. Microsoft Learn — PE Format
    https://learn.microsoft.com/en-us/windows/win32/debug/pe-format
  4. Library of Congress — Sustainability of Digital Formats
    https://www.loc.gov/preservation/digital/formats/

※ 파일 구조와 명령어는 운영체제 및 프로그램 버전에 따라 확인 방법이 달라질 수 있습니다. 실습은 중요한 원본 파일이 아닌 복사본으로 진행하는 것을 권장합니다.

디지털 파일 검증 연구소

디지털 파일 검증 연구소
디지털 파일 검증 연구소는 파일 형식, 확장자, 무결성 확인, 데이터 손상 예방 및 디지털 자료 관리 방법을 다루는 정보 사이트입니다. 파일 오류의 원인과 점검 절차를 이해하기 쉽게 정리하고, 공식 문서와 검증 가능한 자료를 바탕으로 실생활에 도움이 되는 해결 방법을 안내합니다.
함께 보면 좋은 글

댓글 0

첫 댓글을 남겨보세요.