CTF/MEMLABS

CTF - Beginner's Luck

Noctis41 2024. 6. 2. 20:44

해당 문제는 Github의 MemLabs의 Beginner's Luck 문제에 대한 풀이입니다.


 

1. Challenge description

My sister's computer crashed. We were very fortunate to recover this memory dump. Your job is get all her important files from the system. From what we remember, we suddenly saw a black window pop up with some thing being executed. When the crash happened, she was trying to draw something. Thats all we remember from the time of crash.

Note: This challenge is composed of 3 flags.

 

2. 단서

  • 갑자기 어떤 검은 창이 실행됐다.
  • 사고가 났을때 그녀는 어떤 것을 그리려고 하고 있었다.

3. 풀이

해당 문제는 volatility를 통해 분서을 해야 하므로 해당 이미지의 정보를 확인한다.

명령어: .\volatility_2.6_win64_standalone\volatility_2.6_win64_standalone.exe -f .\MemLabs-Lab1\MemoryDump_Lab1.raw imageinfo

imgaeinfo

imageinfo에서는 많은 Profile을 제안해준다. 하지만 크게 생각할 것 없이 가장 처음 것을 사용해준다.

 

다음은 pslist를 통해 실행중인 프로세스를 확인해준다. 나는 .log파일 형식으로 만들어 보기 편하게 만든다.

명령어: .\volatility_2.6_win64_standalone\volatility_2.6_win64_standalone.exe -f .\MemLabs-Lab1\MemoryDump_Lab1.raw --profile=Win7SP1x64 pslist > pslist.log

pslist

위 pslist를 통해 단서에서 말한 검은 창이 실행(cmd.exe), 사고가 났을때 어떤것을 그리려(mspaint.exe)에서 문제가 발생했다고 추축을 할 수 있다. 가장 아래 WinRAR.exe는 압축 관련된 프로세스로 의심되었다.

 

다음으로 콘솔의 입력된 값들을 확인해보자.

명령어: .\volatility_2.6_win64_standalone\volatility_2.6_win64_standalone.exe -f .\MemLabs-Lab1\MemoryDump_Lab1.raw --profile=Win7SP1x64 consoles > consoles.log

consoels

아래 값을 base64 디코딩을 해주면 첫번째 플래그가 나온다.

flag: flag{th1s_1s_th3_1st_st4g3!!}

 

하지만 flag는 3개가 있다고 하니 다음으로 아까 우리가 의심한 프로세스들을 확인해보자.

 

다음으로는 그림을 그리고 있었다 하니 mspaint.exe 프로세스를 메모리 덤프를 떠보자.

명령어: .\volatility_2.6_win64_standalone\volatility_2.6_win64_standalone.exe -f .\MemLabs-Lab1\MemoryDump_Lab1.raw --profile=Win7SP1x64 memdump -p 2424 -D .\memlabs\

하지만 추출된 파일은 그림판에서 열 수 없었다. 그래서 확장자를 .data 로 바꾸고 gimp나 포토샵 프로그램을 이용하여 오프셋값을 조정해보니 아래처럼 나오는 것을 볼 수 있었다.

이것을 뒤집어 보니 아래처럼 플래그를 확인할 수 있었다.

flag{G00d_Boy_good_girL}

이제 마지막을 플래그를 찾기 위해서는 WinRAR.exe를 이용해야 한다.

해당 프로세스의 command line을 찾기 위해 cmdline 명령을 사용하여 확인한다.

cmdline

cmdline을 통해 WinRAR.exe 프로세스에서 현재 실행되고 있는것은 Important.rar라는 것을 알 수 있었다. 

그렇다면 Important.rar을 파일덤프를 해주기 위해 오프셋값을 알아내야한다. 그러기 위해 filescnan plugin을 사용해준다.

명령어: .\volatility_2.6_win64_standalone\volatility_2.6_win64_standalone.exe -f .\MemLabs-Lab1\MemoryDump_Lab1.raw --profile=Win7SP1x64 filescan > filescan.log

filescan

이 중 아무 오프셋값을 사용하여 filedump를 해준다.

명령어: .\volatility_2.6_win64_standalone\volatility_2.6_win64_standalone.exe -f .\MemLabs-Lab1\MemoryDump_Lab1.raw --profile=Win7SP1x64 dumpfiles -Q 0x000000003fa3ebc0 -D .\memlabs\

하지만 생성된 파일로는 아무것도 할 수 없다. 나는 window 운영체제에서 문제를 풀 고 있기에 winrar를 직적 설치하고 해당 파일을 .rar로 확장자를 바꿔준다. 그리고 winrar에서 해당 파일을 풀어준다.

winrar.exe

하지만 암호가 걸려있다. 암호를 풀어야 fla3.png를 열 수 있어보인다. 패스워드는 Alissa 계정의 패스워드의 NTLM hash라고 한다. 해시를 얻기 위해 hashdump plugin을 해준다.

명령어: .\volatility_2.6_win64_standalone\volatility_2.6_win64_standalone.exe -f .\MemLabs-Lab1\MemoryDump_Lab1.raw --profile=Win7SP1x64 hashdump

hashdump

f4ff64c8baac57d22f22edc681055ba6값을 패스워드로 넣었더니 안된다.

그래서 대문자로 변경해서 넣었더니 아래와 같이 플래그가 나온것을 볼 수 있다.

flag3