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

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

2022 BelkaCTF#4 Kidnapper Case

 

2022년 3월 11일부터 24시간 동안 Belkasoft 사에서 주최한 BelkaCTF 문제 풀이를 해보겠습니다.

Case File : BelkaCTF_Kidnapper_Case.E01

 

https://belkasoft.extremeroot.com/challenges


 

1. 케이스 도입부 시나리오

 

Kidnap Case

 

—Have you heard the news?

I have.

—The CID has interrogated the father. Other than the ransom amount, there was nothing interesting.

I heard this as well.

—This Mr. Alex is a big shot… Do you know who I got a call from, asking for my intervention?

I didn't and I really didn't want to know either.

—The old man says the kid was fond of computers and even slept, curled up with his laptop.

Well, now this has become more interesting. For the first time during our conversation, I looked at the Boss with curiosity.

—You sure have a lot to talk about today, don’t you boy. Well, I will shut my mouth for now, the guy's laptop is waiting for you in the lab.

 


 

요약하면 다음과 같습니다.

아이가 납치당했습니다. 납치범은 아버지에게 몸값을 요구한 상태입니다.

CID(수사기관)는 피해자의 아버지와 이야기를 나누었고, 아이가 평소 노트북을 애지중지했다는 사실 외에는 단서를 얻을 수 없었습니다.

위 내용을 통해 우리는 노트북을 분석하게 될 것임을 알 수 있습니다.

 

문항

 

문항은 총 10개로 구성되어 있으며 정적 스코어링을 사용합니다.

그리고 앞의 문제를 풀어야 다음 문제의 플래그를 인증할 수 있도록 되어 있습니다.

 

 

 


 

2. 문제 풀이

 

2-1. Users (100)

 

Users (100)

 

I loaded the laptop image into Belkasoft X. Hm, looks like Linux! The boy has good taste. Let's first see, was he the only user of the system…

 

Users (100)

 

1 번 문항인 Users 입니다.

납치된 피해자와 그의 주변인들이 촬영된 사진이 주어지며

피해자가 사용하던 laptop의 유저 리스트를 찾아야 합니다.

 

/etc/passwd

 

FTK Imager로 케이스 파일을 오픈하고 유저 정보가 저장되는 /etc/passwd 파일을 봤습니다.

일반 사용자 ID 값인 1000번 대 사용자를 확인한 결과 stanley, ivan 이 존재했습니다.

사실 문제에서 포맷이 3명으로 나와 있어서 둘 외에 삭제된 사용자가 있었나 싶어서 분석을 했었는데 답은 stanley, ivan 이었습니다.

flag : stanley, ivan

 


 

2-2. Special Web Site (100)

 

Special Web Site (100)

 

—What the hell is with these young people... chickens do not peck at their dad's money, but he is still doing it!

I raised my eyebrows in surprise. 

—Chief, have you never been a teenager before? 

—Okay, you're right, —Chief grimaced. He obviously did not like to remember his youth. 

I pushed away the spontaneous smirk from my face, and the Chief continued: 

—So, was he doing that from his secondary account?

 

Special Web Site (100)

 

대화에서 중요한 내용은 마지막 줄의 그의 두 번째 계정에서 무엇을 했는지? 입니다.

두 번째 계정이라고 하면 uid 값이 1001인 계정인 ivan을 의미할 것입니다.

문제에서 피해자가 용돈을 벌기 위해 사용한 웹 어플리케이션을 묻습니다.

 

/usr/share/applications

 

설치된 어플리케이션의 목록을 볼 수 있는 경로인 /usr/share/applications 에서 파일들을 확인했습니다.

웹 어플리케이션으로는 firefox가 유력했기 때문에 플래그로 입력을 했었으나 정답 인증이 되지 않았습니다.

 

firefox web histroy

 

Magnet AXIOM Examine 결과를 통해 firefox 브라우저의 히스토리 내역을 확인했습니다.

drug 등 마약과 관련된 키워드를 많이 볼 수 있었으며 https://x-tux-0.web.app/ 주소에 접속한 것을 확인할 수 있었습니다.

참고로 1번 문항의 사진에서 tux 라는 사람이 같이 찍혀 있었습니다.

 

https://x-tux-0.web.app/

 

해당 사이트에 접속한 결과 위와 같이 마약을 구매할 수 있는 사이트로 확인되었습니다.

문제에서 웹 어플리케이션이라고 하여 오해의 여지가 다분했던 것 같습니다.

flag : https://x-tux-0.web.app/

 


 

2-3. Wallet (100)

 

Wallet (100)

 

—So, the boy uses one account for studying, and the other for selling drugs?

—Yes, Sir.

—Any evidence?

—Of course, Chief. Look, here is his bitcoin wallet…

 

Wallet (100)

 

피해자의 계정 하나는 공부용, 나머지 하나는 마약을 팔기 위해 사용했다는 사실을 알 수 있습니다.

또한 피해자가 마약을 팔기 위해 사용한 비트코인 주소로 보이는 것을 찾아야 합니다.

 

/home/ivan/.bash_history

 

마약을 팔기 위해 사용한 계정으로 보이는 ivan의 명령어 입력 기록을 확인했습니다.

/home/ivan/ 경로의 .custom, .network 폴더에서 t_xn_tw_rk.info, .custom.info 파일을 수정한 기록을 확인할 수 있습니다.

 

/home/ivan/.custom/.custom.info

 

/home/ivan/.network/.t_xn_tw_rk.info

 

두 파일의 내용을 확인하면 위와 같습니다. 마약 판매 사이트였던 tux 웹 페이지의 정보가 함께 저장되어 있는 t_xn_tw_rk.info 파일의 지갑 주소를 사용한 것으로 볼 수 있습니다.

하지만 해당 지갑 주소는 중간에 공백이 있기 때문에 다른 곳에서 완전한 지갑 주소를 찾아내야 합니다.

 

https://x-tux-0.web.app/product/acapulco-gold-1gm

 

https://x-tux-0.web.app/ 사이트에서 아무 물품이나 눌러보면 하단에 완전한 비트코인 주소가 기록되어 있습니다.

flag : 1KFHE7w8BhaENAswwryaoccDb6qcT6DbYY

 


 

2-4 Passme (500)

 

Passme (500)

 

—Chief, you know what? Looks like that's not his only business. The boy is definitely dealing with larger sharks.

—You sure?

—Absolutely! I have just found that he reports his sales to someone else.

 

Passme (500)

 

소년은 거물을 다루는 것으로 보인다. 그것은 혼자만의 비즈니스가 아닐 것이다.

소년의 database에서 그가 판매한 기록을 확인할 수 있다는 내용입니다.

Acapulco Gold 라는 마약을 가장 많이 판매한 날짜를 찾아야 합니다.

 

/home/ivan/Documents/.custom/

 

/home/ivan/Documents/.custom/ 경로에는 위와 같이 다양한 확장자를 가진 파일을 확인할 수 있습니다.

이들 대부분은 확장자가 변조되어 있으며 대부분이 pdf 파일 형식을 가지고 있습니다.

 

Inv.pdf

 

파일들 중 하나를 pdf 형식으로 열어보면 위와 같이 영수증 형태로 되어 있는 것을 확인할 수 있습니다.

지문에서 요구하는 Acapulco Gold에 해당하는 수치도 포함이 되어 있는데 해당 경로에 존재하는 모든 파일이 Acapulco Gold에 대해서 같은 값인 7을 가지고 있었습니다.

따라서 해당 경로에서는 답을 얻을 수 없습니다.

 

/home/stanley/.db/Dec/Monthly_DB.zip

 

stanely 유저의 .db/Dec/ 경로에서 Monthly_DB.zip 파일을 확인할 수 있습니다.

지문에서 소년의 데이터베이스에서 판매 기록을 확인할 수 있다고 했으므로 경로가 딱 맞습니다.

하지만 해당 압축 파일은 암호가 걸려있어 열어볼 수 없습니다.

 

/home/stanley/.local/share/Trash/files/trashwords.txt

 

/home/stanley/.local/share/Trash/files 경로에서 패스워드 사전 파일을 확인할 수 있습니다.

위 사전 파일과 Advanced Archive Password recovery 툴을 사용하여 압축 파일의 비밀번호를 크랙할 수 있습니다.

압축 파일의 비밀번호는 vondutcemonaheem_gangsta78 입니다.

 

Acapulco Gold

 

압축을 해제한 후, 검색을 통해 Acapulco Gold가 가장 많이 팔린 날을 확인하였습니다.

그 외에도 \home\stanley\.thunderbird\xzyby22m.default-release\Mail\Local Folders\trash.txt 파일을 보면 해당 패스워드가 저장되어 있는 것을 확인할 수 있습니다.

flag : 2021-05-12

 


 

2022 BelkaCTF 4번 문제까지의 풀이 방법을 알아봤습니다.

나머지 문제는 Part 2 에서 계속하도록 하겠습니다.