티스토리 뷰

CTF/MEMLABS

CTF - Never Too Late Mister

Noctis41 2024. 5. 7. 20:11

해당 문제는 Github의 MemLabs의 Never Too Late Mister 문제에 대한 풀이입니다.


1. 문제 설명My friend John is an "environmental" activist and a humanitarian. He hated the ideology of Thanos from the Avengers: Infinity War. He sucks at programming. He used too many variables while writing any program. One day, John gave me a memory dump and asked me to find out what he was doing while he took the dump. Can you figure it out for me?

2. 단서

  • John은 환경운동가이자 인도주의자이다.
  • 그는 어벤저스에 나오는 타노스의 이념을 싫어한다.
  • 그는 프로그래밍을 못한다, 변수를 너무 많이 사용한다.

3. 풀이

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

명령어: .\volatility_2.6_win64_standalone.exe -f ..\Challenge\Challenge.raw imageinfo

imageinfo

 

명령어: .\volatility_2.6_win64_standalone.exe -f ..\Challenge\Challenge.raw --profile=Win7SP0x86 pslist > pslist.log

pslist

프로세스 확인을 위해 pslist 명령어를 pslist.log 파일형식으로 저장해서 열어보았다,  추가적으로 pstree, psxview,  cmdline, cmdscan, consoles, netscan, filescan 명령을 통해 프로세스를 더 자세히 확인해보자.

명령어: .\volatility_2.6_win64_standalone.exe -f ..\Challenge\Challenge.raw --profile=Win7SP0x86 pstree > pstree .log

pstree

명령어: .\volatility_2.6_win64_standalone.exe -f ..\Challenge\Challenge.raw --profile=Win7SP0x86 psxview > psxview.log

psxview

명령어: .\volatility_2.6_win64_standalone.exe -f ..\Challenge\Challenge.raw --profile=Win7SP0x86 cmdline > cmdline.log

cmdline

명령어: .\volatility_2.6_win64_standalone.exe -f ..\Challenge\Challenge.raw --profile=Win7SP0x86 cmdscan > cmdscan.log

cmdscan

명령어: .\volatility_2.6_win64_standalone.exe -f ..\Challenge\Challenge.raw --profile=Win7SP0x86 consoles > consoles.log

consoles

명령어: .\volatility_2.6_win64_standalone.exe -f ..\Challenge\Challenge.raw --profile=Win7SP0x86 netscan > netscan.log

netscan

명령어: .\volatility_2.6_win64_standalone.exe -f ..\Challenge\Challenge.raw --profile=Win7SP0x86 filescan > filescan.log

filescan

 
 
pslist를 분석해보니 의심스러운 3개의 프로세스가 보인다.

pslist

 explorer.exe는 파일 탐색기로 PID는 324이다.
하지만 324를 PPID로 가지고 있는 프로세스는 cmd.exe와 DumpIt.exe가 있다.
아마도 파일 탐색기를 통해 실행된 것으로 보인다. 
cmd.exe가 있으니 어떠한 명령어가 입력 되었는지 cmdscan.log에서 확인하면 아래와 같이 파이썬으로 어떠한 행위를 한 것을 볼 수 있었다.

cmdscan

그렇다면 저 demon.py.txt에 어떤 내용이 있는지 consoles.log로 확인해보자.

consoles

335d366f5d6031767631707f... 음 디코드를 해봤지만 3]6o]`1vv1p이 나온다.
 
계속 고민을 하다가 너무 모르겠어서 힌트를 보니 환경변수가 있었다.
환경운동가... 변수를 너무 자주 쓴다... == 환경변수?
어이가 없지만 envars를 추출하여 확인해보자.

명령어: .\volatility_2.6_win64_standalone.exe -f ..\Challenge\Challenge.raw --profile=Win7SP0x86 envars > envars

envars

그럼 위와 같이 Variable명이 Thanos라는 아주 의심스러운 환경변수가 있다.
거기에 value값은 xor and password 라 적힌 것을 보면 저 디코드 한 값을 xor로 한번 더 디코드 해야 한다는 것과 암호를 추출해야 한다는 것을 확인 할 수 있다.
그럼 hashdump를 통해 암호를 추출해보면

명령어: .\volatility_2.6_win64_standalone.exe -f ..\Challenge\Challenge.raw --profile=Win7SP0x86 hashdump

hashdump

저기서 hello의 해시값 부분을 복호화 해주면 되는데 어떠한 사이트를 가도 복호화가 안된다. 문제가 잘못된것 같다.
분명 ntlm 해시를 복호화 하는 것인다. 그래서 xor 복호화 부터 해주면

python

i_am_better로 추정되는 문자열이 복호화 되는 것을 확인할 수 있다.
 
 
결국 답을 보니 내가 하는 방법이 맞았고 복호화 같은 flag{you_are_good_but이 나왔어야 했다.
그래서 최종 flag는 flag{you_are_good_but 1_4m_b3tt3r이다.
 

'CTF > MEMLABS' 카테고리의 다른 글

CTF - Black Tuesday  (1) 2024.06.12
CTF - Obsession  (2) 2024.06.04
CTF - The Evil's Den  (0) 2024.06.03
CTF - A New World  (0) 2024.06.03
CTF - Beginner's Luck  (1) 2024.06.02