포렌식 교육 6주차 문제에 해당하는 포렌식 분야의 문제인 SuNiNatas 30번 문제 풀이입니다.
해당 문제는 메모리 덤프 파일을 분석하는 문제로 volatility라는 툴의 도움을 받아서 풀 수 있습니다.
필요한 도구
메모리 덤프 파일을 분석하는데 사용하며, 파이썬 기반으로 무료로 배포되는
volatility
( https://www.volatilityfoundation.org/26)
Volatility 2.6 Release
Volatility 2.6 - an advanced memory forensics framework
www.volatilityfoundation.org
해당 툴을 사용할 때는 툴이 저장된 위치에서 파일을 실행시키고 분석해야 합니다.
더불어 저는 자세한 사용법을 다음 사이트에서 참고했습니다.
(https://velog.io/@jjewqm/%EB%A9%94%EB%AA%A8%EB%A6%AC-%ED%8F%AC%EB%A0%8C%EC%8B%9D)
메모리 포렌식 : Volatility
메모리포렌식과 Volatility명령어를 정리합니다.
velog.io
다음 블로그 글을 통해서 메모리 분석 방법을 공부했습니다.
(https://wave1994.tistory.com/31)
문제풀이
문제를 보면 해킹당한 PC의 메모리를 덤프한 파일을 제공하며, 김장군 PC의 IP, 해커가 열람한 기밀문서, 기밀문서의 내용 속 Key 값을 알아내라고 합니다.
우선, 해당 파일을 다운받아서 volatility로 분석해봅시다.
운영체제 정보를 알아야 다양한 플러그인들을 사용해서 분석이 가능하므로 먼저 알아봅시다.
volatility_2.6_win64_standalone.exe -f "MemoryDump(SuNiNaTaS)" imageinfo
해당 운영체제를 profile에 넣어서 김장군 PC의 IP를 알기 위해 netscan 해줍니다.
volatility_2.6_win64_standalone.exe -f "MemoryDump(SuNiNaTaS)" --profile=Win7SP1x86 netscan
김장군 PC의 IP는 192.168.197.138인 것을 알 수 있습니다.
자, 이제 해커가 열람한 파일을 찾아야 해서 filescan을 해주었는데,
엄청나게 많은 양의 파일명들이 보입니다. 그래서, 좀 더 범위를 좁혀서 특정하기 위해서 생각을 해봤는데, 기밀문서를 열람했다면 어떠한 응용프로그램을 통해서 열람했을 것이기 때문에 실행된 응용프로그램 목록을 보면 더 특정짓기 편할 것 같습니다.
그래서, userassist로 응용프로그램 기록을 확인해봤습니다.
volatility_2.6_win64_standalone.exe -f "MemoryDump(SuNiNaTaS)" --profile=Win7SP1x86 userassist
살펴보니, 윈도우 쉘이 실행되고, 이어서 cmd 실행되고, notepad가 실행되었습니다. 아마도 쉘을 따고 들어와서 notepad로 기밀문서를 열어본 것 같습니다.
(이거, 응용프로그램 실행시킨 순서대로 보여주는 것이 맞겠지?....)
좀 더 확실하게 확인하기 위해서 cmd로 내린 명령을 확인해봤습니다.
volatility_2.6_win64_standalone.exe -f "MemoryDump(SuNiNaTaS)" --profile=Win7SP1x86 cmdscan
cmd에서 notepad를 실행시키는데, SecretDocumen7.txt 라는 파일을 열어본 것을 확인할 수 있습니다.
IP 주소와 기밀 문서 이름을 알아냈으니, 기밀 문서에 들어있는 키 값을 찾아야 합니다. 그러기 위해서는 해당 문서의 메모리에서의 위치를 찾아서 복구해주면 됩니다.
우선, filescan에서 findstr로 해당 파일을 찾아서 메모리 위치 정보를 알아냅니다.
volatility_2.6_win64_standalone.exe -f "MemoryDump(SuNiNaTaS)" --profile=Win7SP1x86 filescan | findstr "SecreetDocumen7.txt"
알아낸 메모리 위치를 바탕으로 dumpfile을 통해서 해당 파일을 복구해서 저장합니다.
-Q [해당 파일의 메모리 주소] -D [파일 저장할 장소] ./은 현재 디렉토리에 저장한다는 의미입니다.
volatility_2.6_win64_standalone.exe -f "MemoryDump(SuNiNaTaS)" --profile=Win7SP1x86 dumpfiles -Q 0x000000003df2ddd8 -D ./
추출된 파일을 메모장으로 열어보면 다음과 같습니다.
자, 이제 모든 정보를 알았습니다.
IP 주소: 192.168.197.138 문서 이름: SecreetDocumen7.txt 키 값: 4rmy_4irforce_N4vy
(.txt 포함해야 합니다. 처음에 포함하지 않고 했다가....... 문제 잘못 푼 줄 알았어요!)
MD5 해시 사이트에서 해당 값을 해시하고, 소문자 변환 사이트에서 소문자로 변환해주었습니다.
(MD5 해쉬 사이트: https://www.convertstring.com/ko/Hash/MD5)
(소문자 변환 사이트: https://www.convertstring.com/ko/StringFunction/ToLowerCase)
이렇게 획득한 값을 써니나타스 AUTH에 넣어주면 다음과 같이 인증됩니다.
'Wargame > Forensic' 카테고리의 다른 글
[포렌식] one_data_one_zip 문제 풀이 | Wireshark 사용, Advanced Archive Password Recovery 사용 (1) | 2021.02.11 |
---|---|
[포렌식] board 문제 풀이 | Wireshark 사용 (0) | 2021.02.11 |
[포렌식] Timisoara CTF 2019 Quals [Tri-color QR] 문제 풀이 | HxD, Stegsolve 사용 (0) | 2021.02.04 |
[포렌식] N0Named Wargame [C] Left Side B 문제 풀이 | HxD 사용, LSB 변조 (0) | 2021.02.04 |
[포렌식] N0Named Wargame [A] 길에서 주어온 만두 문제 풀이 | HxD, OpenStego 사용 (1) | 2021.02.04 |