CTF/포렌식

[TeamH4C CTF] simple_forensic - 포렌식 / John the Ripper / Unicode / HxD

SecurityMan 2022. 12. 15. 11:00

 

문제 제목처럼 마냥 단순하지만은 않았던 포렌식 문제

 

악랄한 문제였다..

 

반응형

 

역시나 별다른 설명없이 simple_forensic.zip 파일 하나만 주어진다.

 

 

zip 파일의 압축을 풀어보려 했더니

 

비밀번호가 걸려있다.

 

 

zip 파일 비밀번호를 crack 하는데는 John the Ripper 라는 도구를 이용했다.

 

여러가지 비밀번호를 crack 해주는 기능을 가지고 있다.

 

 

zip2john <파일명> > hash 명령어로

 

hash 파일을 생성해준 다음

 

 

john hash 명령어로 비밀번호를 crack 해주면 된다.

 

해당 파일의 비밀번호는 1337 이었다.

 

 

압축을 풀면 그 안에

 

file.zip 파일과 H&C.txt 파일 두개가 들어있다.

 

 

file.zip 파일은 또 암호가 걸려있고, H&C.txt 파일이 해당 암호에 대한 힌트인것 같았다.

 

HHH KKKK
HKK HHH
HKHH HHH KKH
HKH HK HHH KHH
HH HHH KHK KKK K
HKHK HHH HKK K
KKHHKK
KKHK KHKK KH HHK
KK KKK
HK HHH H

KKKK KKKKH HKHK { KKK HHH KHK KHK HKHH KKHHKH H KKKK KK KKK KKHHKH KK KKK KKHHKH HK HHH H KKHHKH KH KKHHKH KKHK KHKK KH HHK }

KK
KHKK KK HKH K
KHH KKKK KK H K
KKK KHHK KH HKHK K

 

이게 H&C.txt 파일의 내용인데

 

이게 대체 뭘 의미하는지 알아내는데 시간이 좀 걸렸다.

 

모든 문자를 H, K 두 글자만 이용해서 표현하고 있고,

 

각 글자가 H, K 의 1~6 개 정도의 조합인걸로 봐서

 

모스부호라고 판단했다.

 

H 를 장선(ㅡ), K를 점으로 치환한 후 코드를 분석해봤다.

 

 

CyberChef(https://gchq.github.io/CyberChef)에서 모스부호를 해석해보니

 

OH DO YOU KNOW MORSE CODE ? 
FLAG IS NOT  
H4C{SORRY_THIS_IS_NOT_A_FLAG}
I LIKE WHITE SPACE

 

이런 문장들이 나왔다.

 

뭔가 플래그 처럼 보이는 형태(H4C{}) 가 보이는데,

 

그 안에있는 내용을 보면 플래그가 아닌게 확실하고,

 

맨 마지막에 있는 I LIKE WHITE SPACE 가 핵심인것 같았다.

 

 

여기서도 시간이 꽤 걸렸는데

 

file.zip 파일을 HxD로 열어서 파란색 부분의 데이터를 변경시켜 보았다.

 

저 부분이 ZIP 파일 구조에서 바이트 식별자를 저장하는 부분인데,

 

지금은 09, 08로 써있다.

 

구글에 검색해보니 저기에 올 수 있는 값 중 07 ~ 10은 사용되지 않는 값이라고 해서

 

WHITE SPACE 라는 문구에 맞춰서 00 으로 값을 바꿔보았다.

 

 

바꿔줄때 맨 윗부분만 바꾸는게 아니라 아래쪽도 같이 바꿔줘야 한다.

 

그렇지 않으면 압축을 풀때 헤더오류가 발생한다.

 

 

저렇게 데이터를 바꿔주면 

 

신기하게 비밀번호를 따로 입력하지 않아도 압축이 풀리게 된다.

 

압축을 풀면 안에 here.txt 파일이 들어있다.

 

 

here.txt 파일을 열어보면

 

There is a flag in this sentence 라는 이상한 문장이 써있다.

 

 

뭔가 싶어서 HxD 로 열어봤더니

 

아까 봤던 문장의 사이에

(T  <여기>  here is a flag in this sentence)

 

보이지 않았던 이상한 데이터 숨어있는것이 보였다.

 

E2 80 8B, E2 80 8F 이런식으로 각 데이터가 3바이트씩 구분되는듯 하고

 

맨 앞이 E로 시작하는걸 보니 유니코드 인것 같다는 생각을 했다.

 

이걸 근데 어떻게 디코딩하나 절망하고 있었는데,

 

 

어느 일본 사이트에서 UNICODE 를 이용한 스테가노그래피를 풀 수 있는 방법을 알게되었다.

 

 

방법은 생각보다 간단하다.

 

CyberChef에서 here.txt의 16진수 데이터를 복사해서

 

From Hex로 바꿔준 뒤에 Output에 있는 내용을 복사해둔다.

 

 

다음으로 https://330k.github.io/misc_tools/unicode_steganography.html

 

위의 사이트로 가서 F12를 눌러 개발자도구의 콘솔 탭으로 이동한다.

 

 

그런다음 unicodeSteganographer.setUseChars('\u200b\u200c\u200d\u200e\u200f') 

 

라고 입력해서 사용할 문자를 정의해주고

 

 

unicodeSteganographer.decodeText("  <복사한 hex 값>  ")

 

라고 입력해주면 된다.

 

 

엔터를 치면 숨어있던 플래그를 찾을 수 있다.

반응형