티스토리 뷰

해당 문제는 Github의 MemLabs의 The Evil's Den 문제에 대한 풀이입니다.
1. Challenge description
A malicious script encrypted a very secret piece of information I had on my system. Can you recover the information for me please?
Note-1: This challenge is composed of only 1 flag. The flag split into 2 parts.
Note-2: You'll need the first half of the flag to get the second.
You will need this additional tool to solve the challenge,
$ sudo apt install steghide
The flag format for this lab is: inctf{s0me_l33t_Str1ng}
2. 참고
- 참고-1 : 이 챌린지는 깃발 1개로만 구성됩니다. 깃발은 두 부분으로 나뉜다.
- 참고-2 : 두 번째 깃발을 얻으려면 깃발의 전반부가 필요하다.
3. 풀이
해당 문제는 volatility를 통해 분서을 해야 하므로 해당 이미지의 정보를 확인한다.
명령어:.\volatility_2.6_win64_standalone\volatility_2.6_win64_standalone.exe -f .\MemLabs-Lab3\MemoryDump_Lab3.raw imageinfo

imageinfo에서는 많은 Profile을 제안해준다. 하지만 크게 생각할 것 없이 가장 처음 것을 사용해준다.(오른쪽 빨간 네모는 X)
여기서는 문제자체가 악성스크립트로 인해 잠긴것이기 때문에 cmdline을 통해 공격자가 콘솔에 무엇을 입력했는지 확인해야한다.

cmdline으로 출력된 결과를 보니까 의심스러워 보이는 evilscript.py라는 파이썬 코드와 vip.txt라는 텍스트 파일이 있었다.
이것을 filescan을 통해 offset 값을 찾고 dumpfile로 추출해주자.
명령어: .\volatility_2.6_win64_standalone\volatility_2.6_win64_standalone.exe -f .\MemLabs-Lab3\MemoryDump_Lab3.raw --profile=Win7SP1x86_23418 filescan > filescan.log

vip.txt
명령어: .\volatility_2.6_win64_standalone\volatility_2.6_win64_standalone.exe -f .\MemLabs-Lab3\MemoryDump_Lab3.raw --profile=Win7SP1x86_23418 dumpfiles -Q 0x000000003e727e50 -D .\memlabs\
evilscript.py.py
명령어: .\volatility_2.6_win64_standalone\volatility_2.6_win64_standalone.exe -f .\MemLabs-Lab3\MemoryDump_Lab3.raw --profile=Win7SP1x86_23418 dumpfiles -Q 0x000000003de1b5f0 -D .\memlabs\
추출된 파일을 각각 확장자를 바꾸고 실행시켜보자.


해당 스크립트를 읽어보면 이 코드는 문자열을 XOR 암호화하고, Base64로 인코딩한 후, 파일에 저장하는 작업을 수행한다는 것을 알 수 있다. 좀 더 깊게 생각하면 vip.txt에 있는 am1gd2V4M20wXGs3b2U=은 A라는 값이 XOR 암호화하고 Base64로 인코딩된 것이 때문에 이 A라는 값을 Base64로 디코딩 하고 XOR을 다시 하면 FLAG로 추측되는 값이 나올 것 같다.

이제 FLAG의 앞부분을 알아냈으니 뒷부분만 알아보면 된다.
여기서 steghide 라는 스테가노그래피 도구를 써야하는 것 같다.
일단 steghide 도구를 좀 더 찾아보면 이미지와 오디오 파일의 데이터를 숨길 수 있는 스테가노그래피 프로그램이고 JPEG 및 BMP 이미지를 지원하는것을 알 수 있다. 그럼 아까 filescan.log를 통해 .jpeg를 찾아보면 될 것 같다.

딱 하나 나오는 것을 알 수 있다. 이것을 추출 후 확장자를 jpeg로 바꾸고 열어주면 아래와 같은 사진이 나온다.

이것을 steghide 도구에 넣어보자

암호를 요구하는 것을 볼 수 있는데 우린 여기서 Note-2: You'll need the first half of the flag to get the second. 말을 참고해야 한다. 우린 최종 FLAG의 앞을 알고 있다. 이것을 암호에 넣어보자.

secret.text 파일이 생성됐고 그 파일을 확인해보니 나머지 FLAG를 확인할 수 있었다.

FLAG: inctf{0n3_h4lf_1s_n0t_3n0ugh}
'CTF > MEMLABS' 카테고리의 다른 글
CTF - Black Tuesday (1) | 2024.06.12 |
---|---|
CTF - Obsession (2) | 2024.06.04 |
CTF - A New World (0) | 2024.06.03 |
CTF - Beginner's Luck (1) | 2024.06.02 |
CTF - Never Too Late Mister (0) | 2024.05.07 |