CTF/포렌식

[WPICTF] Luna - 포렌식 / 스테가노그래피 / zlib-flate / dd

SecurityMan 2022. 4. 24. 11:00

 

스테가노래피 문제이다.

 

Luna.tar.xz 라는 이름의 압축파일이 하나 주어진다.

 

반응형

 

 

압축파일 확장자가 tar.xz 인데

 

 

윈도우에서 7z이나 winrar 같은 프로그램으로 압축을 풀어도 되고

 

리눅스에서 위 사진처럼 tar -xvf 명령어를 이용해서 압축을 풀어도 된다.

 

압축을 풀어주면 위처럼 png 파일 하나와 이름이 엄청나게 긴 zip 파일이 나오게 된다.

 

 

png 파일은 아무것도 없는 그냥 하얀 사진이다.

 

 

zip 파일은 압축을 풀려고 시도하면 이렇게 비밀번호가 걸려있는걸 볼 수 있다.

 

 

아무것도 안보였던 1.png 파일이 수상해서 notepad++ 을 이용해 1.png 파일을 열어보았다.

 

그랬더니 이미지 파일의 메타데이터가 있는 부분에 이렇게 비밀번호가 적혀있는걸 볼 수 있었다.

 

 

복사해서 zip 파일에 비밀번호를 넣어주면

 

 

이렇게 압축이 풀리면서 png 파일 하나와 jut 라는 이름의 이상한 파일이 나오게 된다.

 

 

png 파일은 이건데 아직까지도 이 사진의 의미를 잘 모르겠다..

 

gimp 프로그램에서 png 파일 내보내기 할때 뜨는 창이라고 하던데

 

이번 문제 풀때 힌트인것 같으나 사실 이거 없이도 풀 수 있었다.

 

 

jut 파일을 자세히 보기 위해서 binwalk 명령어를 이용해봤다.

 

그랬더니 45번째 데이터부터 zilb compressed data 가 존재한다고 나왔다.

 

 

dd 명령어를 이용해서 zilib compressed data를 추출해봤다.

 

dd는 리눅스에서 파일을 변환하고 복사해주는 기능을 하는 명령어이다.

 

if로 입력받을 파일을 지정해주고,

 

bs로 한번에 읽고 쓸 바이트 크기를 지정해준다.

 

skip로 zlib 데이터가 시작하는 45부터 복사하도록 해준다.

 

마지막으로 of로 출력할 파일 이름을 지정해주면된다. 이번에는 out.zlib 라고 지정했다.

 

 

명령을 수행하면 이렇게 out.zlib 라는 파일이 생성된다.

 

 

 zlib 파일을 분석하기 위해 zlib-flate라는 도구를 실행시켜 준다.

 

칼리 리눅스에서 zlib-flate를 입력해주면 실행되는데,

 

만약 도구가 없다면 위 사진처럼 자동으로 찾아서 설치해준다.

 

 

설치가 되어있다면 zlib-flate를 실행시켰을때 이렇게 나온다.

 

 

zilb-flate -uncompress < out.zlib 라고 명령어를 실행시키면

 

out.zlib 파일을 분석할 수 있다.

 

분석을 하면 위처럼 16진수 값들이 막 나오는데

 

 

맨 아래쪽을 봤더니 ffd9 라고 적혀있었다.

 

참고로 ff d9 는 jpg 파일의 푸터이다.

 

모든 jpg 파일은 끝날때 ff d9 로 끝이난다.

 

그럼 out.zlib 파일안에 jpg 파일이 숨어있다는걸 알 수 있다.

 

jpg 파일은 시작할때는 항상 ff d8 로 시작하는데, 이 정보를 이용해서 복원이 가능할것 같다.

 

출력된 16진수 값에서 ffd8을 찾아준다.

 

 

저렇게 중간에 보면 ffd8 이라는 문자가 보인다.

 

저기가 jpg 파일이 시작하는 부분이다.

 

ffd8 부터 ffd9 까지 모두 복사해준다.

 

 

hxd를 열어서 새 파일을 만든 후에

 

복사한 값을 붙여넣기 해주면 된다.

 

그리고 다른 이름으로 저장해주면

 

 

이렇게 jpg 파일 복원이 가능하다.

 

 

복원한 파일에 써있는 문자가 이번 문제의 플래그이다.

반응형