포렌식

[디지털포렌식] NONamed 입사테스트2

美味코드 2021. 7. 14. 21:32

문제 파일 다운로드

HxD에서 파일 구조를 확인하고 있다.

jpg 파일이지만 헤더 구조가 마치 png처럼 되어있다.

Decoded text 부분은 힌트를 주듯 PNG라고 되어있다.

png 파일 헤더로 바꿔주었다.

저장 후 실행한 파일

mandu.png 처럼 형식 지원이 되지 않다가 검은 화면이 나타났다.

 

여기서 파일 구조를 조금 더 깊게 공부하자면

png파일 구조: PNG 시그니처 + IHDR(그림 헤더) + IDAT(그림 데이터) + IEND(그림 끝부분)

으로 구성되어 있다.

 

한 장의 png당 한 개의 IDAT가 존재한다.

ctrl + f

그림 데이터 IDAT 검색한 결과 2개로 뜨는 것으로 보아 그림이 한 장이 아닌 것을 확인할 수 있었다.

 

그리고 추가하지 않은 사진이 있는데 (푸터가 잘못된 부분)

jpg 파일은 헤더가 png일 뿐만이 아니라 푸터도 png였다. 하지만 뒤에 쓰레기값이 붙어버리는 바람에 제대로 된 파일 형식이 아니었다. 쓰레기 값을 어떻게 해야할지 몰라서 00으로 바꿔주었다.

TweakPNG

TewakPNG: png파일은 청크 단위로 이루어진 이미지 파일이며 이 때, 이 단위를 분석해주는 툴이다.

jpg인 척하는 png파일의 푸터 부분의 쓰레기 값을(FF 09) 없애주지 않았더니 쓰레기 값으로 인식되었다.

 

청크 목록

쓰레기값을 아예 지워준 뒤 다시 열었다.

 

청크는 크게 두 분류로 나뉜다. 주요 청크와 보조 청크가 있는데 보조 청크는 순서대로 할 필요는 없다.

근데 주요 청크는(PLTE가 옵션인 경우 제외) 순서대로 나열해야 했다.

청크 별 순서표
TweakPNG에서 f5(실행) 을 하여 검사했다.

아무것도 변경하지 않은 상태에서 검사를 했더니 tRNS는 IDAT 전에 있어야 하는 등 친절하게 알려주었다.

하라는대로만 변경하였다.

저장 후 다시 png를 실행시켰으나 변화가 없었다 TweakPNG에서 청크 부분을 자세히 보면 그냥 png파일이 아닌 apng 파일인 것을 알 수 있었다.

apng: 애니메이션 시퀀스에 사용되는 여러 이미지(png) 유사 gif 이다.

APNG Disassembler 다운로드

apng를 실행시켰을때 제대로 되지 않았다.

이 전 단계인 청크 순서를 바꾸는 단계로 돌아가서 피드백을 진행하였다.

IDAT2개인 경우 Length가 긴 게 우선이었다. 또한, 청크 순서가 올바르게만 있어서 해결되는 것이 아니었다.

PNG와 APNG 구조는 fcTL을 중간 중간 이용했다는 것 외에는 거의 유사하다.

헤더 -> acTL -> fcTL -> 데이터 -> tcTL -> fdAT -> fcTL -> fdAT -> 엔드(푸터)

시퀀스는 0부터 오름차순

위와 같은 순서 대로 한 뒤 나와있지 않았던 tRNS는 f5를 한 뒤 지시하는 대로 했다.

또한 시퀀스 번호는 오름차순으로 정렬했다. (위에서부터 아래로 기준)

APNG 이미지가 완성되었다. 이미지를 나누기 위해 아까 다운로드 받았던 APG Disassambler을 이용해주었다.

flag 확인

똑같은 사진 몇장이 나왔고, flag가 있는 사진을 보고 입력해주었다.

 

 

 

<참고 사이트> 

청크 순서: https://overface.tistory.com/441 

웹 APNG: https://icons8.com/animizer/