728x90

포렌식 교육 1주차 과제 2번째 문제에 해당하는 magic IMAGE 문제 풀이에 관한 내용입니다!

 

N0Named Wargame은 써니나타스와 같은 워게임 사이트이다. 주소는 http://ctf.no-named.kr:1234/ 이다.

 

문제 풀이에 앞서

해당 문제는 PNG 파일의 시그니처에 대해서 알아야 풀 수 있는 문제이다. 그래서 먼저, PNG 파일의 구조에 대해서 알아보도록 하자!

 

PNG 파일 흔히 우리가 주고 보내는 사진 파일의 형식(확장자) 중 하나이다. 

 

각 파일 형식마다 가지고 있는 고유의 특징이 있어 형식을 구분할 수 있으며, 이러한 고유의 특징을 파일 시그니처 혹은 파일 매직 넘버라고 한다.

 

파일 시그니처는 주로, 손상된 파일을 복구하는데 사용된다고 한다.

 

파일 시그니처는 파일 내부 구조를 이루고 있는 내용들(바이트) 중에서 시작 부분과 끝 부분에 존재한다.

 

시작 부분에 존재하는 시그니처를 헤더(Header) 시그니처, 끝 부분에 존재하는 시그니처를 푸터(Footer) 시그니처라고 한다.

 

PNG의 경우에는  첫 8바이트가  헤더 시그니처에 해당하며, 값(16진수)으로 “89 50 4E 47 0D 0A 1A 0A”가 들어간다. 

 

이와 비슷하게 마지막 8바이트는 푸터 시그니처에 해당하며, 값(16진수)으로 "49 45 4E 44 AE 42 60 82"가 들어간다.

 

파일 형식에 따라서 다른 파일 시그니처를 가지고 있다는 점을 기억하면 된다.

 

파일 시그니처 검색 사이트: https://en.wikipedia.org/wiki/List_of_file_signatures 

 

List of file signatures - Wikipedia

From Wikipedia, the free encyclopedia Jump to navigation Jump to search Wikipedia list article This is a list of file signatures, data used to identify or verify the content of a file. Such signatures are also known as magic numbers or Magic Bytes. Many fi

en.wikipedia.org

해당 사이트에서 Ctrl + F를 통해서 파일 형식을 검색하면, 해당 파일 형식의 시그니처를 알 수 있다.

 

 


 

 

자... 이제 문제를 보면 다음과 같다.

N0Named Wargame Forensic magic Image 문제

 

PNG 파일 복구라고 적혀있으며, PNG 파일이 첨부되어 있다. 해당 파일을 다운 받아서 보면 열리지가 않는다.

 

mandu.png 이미지를 볼 수 없다.

 

아무래도 PNG 파일 어딘가에 문제가 있는 것 같아 보인다. 어느 곳에 문제가 있는지 확인하기 위해서 HxD 툴을 사용하였다.

 


HxD

HxD(Hex Editor)는 파일의 원본 내용을 볼 수 있으며, 편집할 수 있는 기능을 가진 도구이다. 이름에 나타나 있는 것처럼 16진법으로 내용들이 표기가 된다. 

 

해당 프로그램의 다운로드 방법과 사용법에 대한 정보는 https://know0how.tistory.com/6에서 습득할 수 있다.


HxD를 사용해서 내부 구조를 살펴보면, 다음과 같다.

HxD로 본 파일의 첫 부분
HxD로 본 파일의 끝 부분

 

사진을 보면, 빨간색으로 밑줄 친 부분이 PNG 파일의 헤더 시그니처와 푸터 시그니처에 해당한다.

 

PNG 파일의 헤더 시그니처와 푸터 시그니처에 대해서 앞서 설명했는데,

 

해당 파일의 헤더 시그니처 부분이 "89 50 4E 47 0E 0B 1F 0B"로 올바르지 않은 값이 들어가 있다. 

 

푸터 시그니처는 올바르다.

 

따라서 헤더 시그니처를 올바르게 "89 50 4E 47 0D 0A 1A 0A"로 바꾸면 올바른 형식을 가지게 된다.

 

 

올바르게 바꾼 파일을 열어 보면,

복구된 PNG 파일 이미지 모습

 

 

이렇게 복구된 이미지가 보인다!!!

 

(해당 키 값은 일부러 가렸습니다.)

728x90