CTF/포렌식

[TeamH4C CTF] GNP - 포렌식 / HxD / Stegsolve

SecurityMan 2022. 12. 9. 11:00

 

푸는데 조금 시간이 걸렸던 포렌식 문제

 

별다른 설명없이 flag.png 파일 하나만 주어진다.

 

문제 제목이 GNP 인데 뭔가 PNG 를 거꾸로 쓴 느낌이다.

 

이 부분을 잘 기억해야 한다.

 

반응형

 

 

주어진 flag.png 파일을 열어보면 이런 그림이다.

 

대회 주최측 로고 같은게 그려져 있고 그 외에 특이한 점은 없다.

 

 

해당 파일을 HxD 를 이용해 열어보니

 

이상한 점을 바로 확인할 수 있었다.

 

파일의 맨 앞부분이 FF D8 FF E0 로 시작하는것을 볼 수 있는데

 

이건 JPG 파일의 특징이다. 이런걸 파일 시그니처 라고 한다.

 

그러니까 확장자는 .png 인데, 알고봤더니 JPG 파일이라는 것이다.

 

그럼 문제 제목에서 PNG 를 거꾸로 쓴듯한 GNP 는 무엇을 의미할까?

 

 

컨트롤 + F 키늘 룰러 검색 기능을 이용해 16진수값인 FF D9 를 검색해본다.

 

FF D9 는 JPG 파일의 끝을 의미한다.

 

FF D9가 나오면 JPG 파일은 끝나고, 그 뒤에 아무 데이터도 없어야 정상이다.

 

그런데 이 파일을 보면 FF D9 뒤에

 

h4c{This_is_not_a_flag} 라는 가짜 플래그가 나오고, 뒤에 계속해서 데이터가 있는것을 볼 수 있다.

 

여기서 주목할 것은 `B®DNEI 라는 문자열인데, 

 

이걸 거꾸로 쓴 IEND®B` 는 PNG 파일의 끝을 의미한다.

 

 

이렇게 IEND 라는 문자열이 보이면 PNG 파일은 끝인 것이다.

 

위에서 발견한 사실이랑 문제 제목을 통해 유추해보면

 

JPG 파일 뒤에 PNG 파일이 거꾸로 쓰여서 들어가 있다는 것을 알 수 있다.

 

 

이건 간단하게 복원할 수 있다.

 

CyberChef(https://gchq.github.io/CyberChef) 에 가서

 

flag.png 파일에서 png 데이터에 해당하는 부분의 Hex 값을 넣은 뒤

 

Byte 단위로 Reverse 해주면 된다.

 

오른쪽에 저장 버튼을 누르면 복원이 파일로 저장할 수 있다.

 

 

저장하면 이런 파일이 나오는데

 

아까 봤던 flag.png 랑 크게 다를게 없어보인다.

 

 

Stegsolve 라는 도구를 이용해 해당 파일을 분석해보았다.

(http://www.caesum.com/handbook/Stegsolve.jar)

 

위 경로에서 Stegsolve.jar 파일을 다운로드 받을 수 있다.

 

 

Stegsolve를 실행시켜서 Open으로 이미지를 불러오면 된다.

 

아래쪽에 있는 <, > 버튼을 누르면

 

이미지의 alpha, blue, green, red, xor 등등 다양한 값을 조정한 형태를 보여주게 된다.

 

몇번 넘기다 보니 Red plane 0 에서 아래쪽에 안보이던 문자열이 보였다.

 

z4q{Z3bbw_43pygq} 라고 적혀있는데

 

뭔가 플래그 포맷이지만 플래그가 아닌것 처럼 생겼다.

 

여기서 살짝 Guessing 을 이용해서 풀었는데

 

아까 봤던 가짜 플래그를 보면

 

h4c{This_is_not_a_flag} 이렇게 h4c 로 시작하는걸 볼 수 있다.

 

그걸 토대로 Stegsolve 로 찾은 플래그에서 z -> h / q -> c 로 바꿔보았다.

 

그럼 h4c{H3bbw_43pygc} 이렇게 되는데

 

앞쪽 단어부터 보면 3 은 보통 e 로 치환해서 많이 쓰니 앞의 단어는 He??? 일거라고 생각했고

 

He로 시작하면서, 세번째/네번째 글자가 같은 5글자 영단어는 Hello 일거라고 판단했다.

 

뒤쪽 단어는 4가 보통 for 라고도 쓰이니 43pygc를 fore???c 라고도 쓸 수 있는데,

 

마침 이 문제가 포렌식 문제이니 forensic 일거라고 생각했다.

 

결론적으로 추측한 내용이 맞았고, h4c{H3llo_43nsic} 이 이번 문제의 플래그였다.

반응형