2022 BelkaCTF#4 WriteUp - Part 2 (Kidnapper Case)
Capture The Flag/CTF 풀이

2022 BelkaCTF#4 WriteUp - Part 2 (Kidnapper Case)

2022 BelkaCTF#4 Kidnapper Case

 

2022 BelkaCTF 4번 문제에 이어 5번 문제부터 마지막 문제까지 이어서 풀이를 작성해보겠습니다.

 

https://belkasoft.extremeroot.com/challenges


 

2. 문제 풀이

 

2-5. Cryptlet (750)

 

Cryptlet (750)

 

—They called me again. Twice, — It looked like the Chief was angry at me because of that.

—Are you saying I work too slow? Or should I take these calls on your behalf? 

The Chief missed my words, he seemed to be looking for his cigarettes. 

—Look, Chief, I found something interesting. The boy was selling their goods under the counter. 

The Chief stopped the search. 

—You said what? And did his supervisor… 

The Chief did not complete the sentence. We looked at each other knowingly.

 

Cryptlet (750)

 

납치된 피해자의 또 다른 BTC Wallet 주소를 얻어야 하는 지문입니다.

지문에서 강조한 "under the counter"가  불법적인 이라는 뜻이 있어서 카운터 아래보단 불법이라고 해석하는게 맞는 것 같습니다..?

아니면 카운터가 의미하는 바가 있을지도 모르겠네요. 결론적으로 hide된 데이터를 찾아야 합니다.

 

/home/ivan/Documents/.custom/.Inv.sys

 

/home/ivan/Documents/.custom/.Inv.sys 파일을 보면 pdf 시그니처를 가지고 있으나 첫 4byte 헤더의 값이 0으로 되어있는 것을 확인할 수 있습니다.

 

 

.inv.pdf

 

PDF 헤더 시그니처에 맞게 값을 채워주고 pdf 파일로 저장하면 됩니다.

 

 

BTC Wallet

 

PDF 파일의 하단에서 BTC Wallet 주소를 획득할 수 있습니다.

해당 주소는 /home/ivan/Documents/.custom/.custom.info 파일에서도 일부 확인할 수 있었습니다.

flag : bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh

 


 

2-6. Notipass (750)

 

Notipass (750)

 

This time it was me who knocked on the Chief' door. It's afterhours now, so I was not surprised to pick up the sweet smell of cognac.

—Look, Chief. I found the kid's notes but… 

—Encrypted, —growled the Chief, without allowing me to finish. 

I acted impressed. 

—No wonder you are the Chief! 

The Chief showed no sign that he heard me. 

—And you cannot find the password. 

—Yes sir. You seem like you have an idea?

My boss smiled slyly. 

—Do you know what a container is?

 

Notipass (750)

 

6 번 문항은 피해자의 노트 비밀번호를 찾는 것입니다.

수사관들의 대화에서 핵심 단어는 Container 입니다.

처음에 container를 보고 docker가 먼저 생각나서 docker 관련 데이터가 있나 싶어서 찾아봤었는데 여기서 의미하는 Container는 container 파일을 의미하는 것이었습니다.

 

/home/stanley/.cache/vmware/drag_and_drop/XIJUXB/notes

 

문제에서 말하는 note는 /home/stanley/.cache/vmware/drag_and_drop/XIJUXB/notes 파일 입니다.

해당 파일의 확장자를 .doc 로 변경해주고 열어보면 암호가 걸려있는 것을 확인할 수 있습니다.

 

/home/ivan/.info/NOTHING_IMPORTANT_INFO.pdf

 

notes 파일의 암호는 /home/ivan/.info/NOTHING_IMPORTANT_INFO.pdf 파일 데이터 내부에 존재합니다.

pdf 파일의 footer signature 값 뒤에 추가 스트림 데이터가 존재합니다.

 

NOTHING_IMPORTANT_INFO.pdf\

 

X-way에서 해당 파일을 더블 클릭하면 내부에 존재하는 파일을 추가로 탐색할 수 있습니다.

 

NOTHING_IMPORTANT_INFO.pdf\passwd

 

passwd 파일을 view 하면 위와 같이 base32로 인코딩 된 데이터를 확인할 수 있습니다.

해당 값은 X-ways가 없더라도 PDF Stream Dumper 프로그램을 사용해도 얻을 수 있습니다.

 

Base32 decode result

 

Base32 방식으로 decode를 하면 암호화 된 문자열을 획득할 수 있습니다.

 

quipquip.com

 

암호화 된 문자열은 quipquip.com 사이트에서 쉽게 해독할 수 있습니다.

flag : !hp0ft4nTNot3

 


 

2-7. Specudio (1000)

 

Specudio (1000)

 

—That did the trick! But how did you know?

—Was it you who said "no wonder"?

Wow, he actually heard me that time. 

—If you only knew sonny, how many cases just like this I’ve already had! Though I am no expert in this "digital forensics" stuff, but… 

The Chief rolled his eyes but quickly came to his senses again. 

—So why are you here again? 

—Chief, I found the conversation the boy tried to hide. Looks like there is a pin to access it. 

This time the Chief did not have anything for me. 

—So what? Go and find it!

 

Specudio (1000)

 

7번 문항은 notes 파일에서 언급된 Secret pin 값을 찾는 것입니다.

 

 

notes.doc

 

notes.doc 의 마지막 부분을 보면 shark file에 secret pin 값이 있음을 알 수 있습니다.

 

 

/home/ivan/Music/.secs/.secret.pcapng

 

\home\ivan\Music\.secs\ 경로를 보면 .secret.pcapng 파일이 있습니다.

notes 에서 말한 shark 파일은 wireshark 캡처 파일인 것을 알 수 있습니다.

 

.secret.pcapng HTTP object list

 

pcapng 파일을 wireshark 를 통해 실행한 뒤 File -> Export Objects -> HTTP object list 를 보면 위 그림처럼 vault_secret_code.wav 파일의 데이터가 캡처된 것을 확인할 수 있습니다.

 

 

No.3236 packet

 

3236 번 패킷이 vault_secret_code.wav 파일의 데이터가 포함된 패킷입니다.

 

 

No. 3236 packet Follow TCP stream

 

3236 번 패킷 우클릭 -> Follow -> TCP Stream 을 통해 위 창을 열어줍니다.

위 창에서 실제 전송된 파일의 데이터는 RIFFP로 시작하는 영역부터 입니다.

하단의 Show data as 값이 ASCII로 설정되어 있는데, 파일의 데이터를 가져가기 위해 Raw로 변경해줘야 합니다.

 

 

Show data as Raw

 

그러면 값이 16진수로 변경되는 것을 확인할 수 있습니다.

세 번째 문단부터가 파일의 실제 데이터였기 때문에 해당 영역부터 끝까지 값을 복사한 뒤 Hex editor를 통해 .wav 파일로 저장해줍니다.

 

Audacity

 

.wav 파일로 저장하고 실행하여 소리를 들어봐도 알아들을 수 없습니다.

이런 경우는 보통 오디오 스테가노그래피 유형일 가능성이 높으므로 Audacity 프로그램을 사용하여 wav 파일을 열어줍니다.

 

스펙트로그램 변환

 

flag

 

좌측의 검은 화살표를 누르고 스펙트로그램 형태로 변환하면 flag를 확인할 수 있습니다.

값을 더 정확하게 보고 싶으면 우클릭을 한 뒤 확대 및 축소로 조절할 수 있습니다.

flag : flag{1257}

 


 

2-8. Ultimatum (100)

 

Ultimatum (100)

 

—Chief, I am close to the solution. If I learn the time of the threat, everything else should be easy.

 

Ultimatum (100)

 

8번 문항은 피해자가 위험에 직면한 시각을 구하는 문제입니다.

 

 

notes.doc

 

해당 데이터는 앞서 찾았던 notes.doc 에서 확인할 수 있습니다.

피해자는 피해자의 친구인 0x Tux에 의해서 납치 위협을 받았으며 해당 시각은 학교에 가기 전인 노트를 쓰고 있는 지금 시각의 10분 전 입니다.

노트를 작성하고 있는 지금 시각이 epoch time으로 1637948867 이기 때문에 해당 값에서 10분 만큼 빼주면 됩니다.

 

https://www.epochconverter.com/

 

epoch time converter 사이트에서 변환을 해주면 쉽게 구할 수 있습니다.

이제 보니 10분을 감소하면 600만큼 값이 줄어드네요.

flag : 1637948267

 


 

2-9. Whois (200)

 

Whois (200)

 

The Chief glanced at me in surprise.

—I was pretty sure this time you would come with a full report. 

—Sir, I know the name of the kidnapper, but I also need an email.

 

Whois (200)

 

9번 문항은 납치범의 Nickname, email 을 구하는 문제입니다.

이미 앞서 notes.doc 파일에서 납치범은 0 tux 임을 확인할 수 있었습니다.

 

/home/stanley/.cache/vmware/drag_and_drop/v3vFFE/mycon.zip

 

/home/stanley/.cache/vmware/drag_and_drop/v3vFFE 경로에서 mycon.zip 이라는 파일을 확인할 수 있습니다.

해당 압축 파일에는 Connection.zip 파일이 포함되어 있습니다.

Connection.zip 파일을 압축 해제하기 위해서는 암호가 필요하며 암호는 wav 파일에 있던 값인 1257 입니다.

추가로 해당 암호는 앞서 구했던 패스워드 사전 파일에도 포함되어 있으므로 Advanced Archive Password Recovery tool을 통해서도 크랙할 수 있습니다.

 

\mycon\Connections\Sheet1.html

 

Connections.zip 파일을 압축 해제하면 Sheet1.html 파일을 확인할 수 있습니다.

html 파일에는 다수의 사용자에 대한 정보가 존재하며 앞서 획득했던 납치범의 정보인 Tux로 검색하면 메일 주소를 구할 수 있습니다.

flag : 0x Tux, wixelig493@keagenan.com

 


 

2-10. Pride (250)

 

Pride (250)

 

—Well done, my boy. I am proud of you, as usual!

—Anything to oblige, Sir! All praise goes to my digital forensics training!

 

Pride (250)

 

마지막 문항인 10번은 문제를 해결하는 것이 아닌 BelkaCTF를 홍보하는 URL을 올리는 것입니다.

케이스 분석은 9번에서 끝이네요.

flag : https://present4n6.tistory.com/129

 


 

이상으로 2022 BelkaCTF WriteUp 작성을 마치겠습니다.

대회는 하나의 시나리오를 중심으로 문제를 해결해나가는 형식이라 몰입도 있게 재밌게 했던 것 같습니다.

출제자가 의도한 것인지는 모르겠지만 문제 해결 방법도 하나의 정석 루트가 아닌 다른 방법으로도 풀리는 부분이 있었구요.

아쉽게도 Belksoft 사의 프로그램을 사용해서 풀어보지는 못했지만 FTK Imager와 기타 프로그램들로 충분히 해결할 수 있었던 대회였던 것 같습니다.