https://forensicscontest.com/2010/04/01/ms-moneymanys-mysterious-malware
Puzzle #5: Ms. Moneymany’s Mysterious Malware – Network Forensics Puzzle Contest
Our latest forensics puzzle has a malware twist to it, and was written by Lenny Zeltser. Lenny teaches the reverse-engineering malware (REM) course at SANS Institute. The puzzle: It was a morning ritual. Ms. Moneymany sipped her coffee as she quickly went
forensicscontest.com

아침 의식이었죠. Moneymany 씨는 밤에 도착한 이메일을 빠르게 훑어보며 커피를 홀짝였습니다. 이메일 필터를 통과한 것은 스팸이 분명했기 때문에 메시지 중 하나가 그녀의 눈길을 사로잡았습니다. 이 메시지에는 웹에서 약을 구입하는 미덕을 찬양하고 온라인 약국에 대한 링크가 포함되어 있었습니다. "사람들이 정말 이런 것에 속을까요?" Moneymany 씨는 생각했습니다. 그녀는 웹사이트가 방문객들에게 어떻게 구매를 설득할 수 있을지 궁금해서 링크를 클릭했습니다.
웹사이트 로딩 속도가 느리고 고장 난 것 같았습니다. 페이지에는 콘텐츠가 없었습니다. 실망한 Moneymany 씨는 브라우저 창을 닫고 하루를 보냈습니다.
그녀는 자신의 Windows XP 컴퓨터가 방금 감염된 사실을 깨닫지 못했습니다.
귀하는 포렌 수사관입니다. 귀하는 Moneymany 씨와 웹사이트 간의 상호작용을 기록한 네트워크 캡처(PCAP) 파일을 보유하고 있습니다. 귀하의 임무는 Moneymanyâ™ 씨가 링크를 클릭한 후 시스템에 어떤 일이 일어났는지 이해하는 것입니다. 귀하의 분석은 PCAP 파일부터 시작되며 악의적인 실행 파일이 드러날 것입니다.


hash check
다음 질문에 답하세요:
1. 감염 과정의 일환으로 Moneymany의 브라우저는 두 개의 Java 애플릿을 다운로드했습니다. 이 애플릿을 구현한 두 .jar 파일의 이름은 무엇이었나요?
2. 감염된 Windows 시스템에서 Moneymany 씨의 사용자 이름은 무엇이었나요?
3. 이 사건의 시작 URL은 무엇이었나요? 즉, Moneymany 씨는 어떤 URL을 클릭했을 가능성이 높습니다.
4. 감염의 일환으로 악성 Windows 실행 파일이 Moneymany의 시스템에 다운로드되었습니다. 파일의 MD5 해시는 무엇이었나요? 힌트: "91ed"로 끝납니다.
5. 악성 Windows 실행 파일을 보호하는 데 사용되는 패커의 이름은 무엇인가요? 힌트: 이 패커는 "메인스트림" 멀웨어에서 볼 수 있는 가장 인기 있는 패커 중 하나입니다.
6. 악성 Windows 실행 파일의 언팩 버전의 MD5 해시는 무엇입니까?
7. 악성 실행 파일은 하드코딩된 IP 주소를 사용하여 인터넷 호스트에 연결하려고 시도합니다(DNS 조회가 없었습니다). 해당 인터넷 호스트의 IP 주소는 무엇인가요?
예

No.5, 8, 9 클라이언트(192.168.23.129)와 서버(59.53.91.102) 간 3wayhandshake가 정상적으로 이루어짐을 확인할 수 있다.
=> 클라이언트가 머니마니씨의 IP겠고, 서버가 머니마니 씨가 가장 처음 요청한 URL 이겠다!
No. 10 그 후 클라이언트가 서버에 HTTP 요청 메세지를 보낸다.
No. 13 서버의 OK sign
No. 15 클라이언트가 서버에게 GET 요청을 보낸 것을 확인할 수 있다.

해당 요청의 본문을 살펴보면 제일 처음 머니마니씨가 요청(클릭)한 URL을 확인할 수 있다. (\r\n: 개행문자)
3. 이 사건의 시작 URL은 무엇이었나요? 즉, Moneymany 씨는 어떤 URL을 클릭했을 가능성이 높습니다.
또한, 해당 패킷에서 머니마니씨가 해당 URL을 클릭 한 직후 알 수 없는 IP 65.55.195.250와 연결을 시도한 17,18,19번 패킷도 확인할 수 있다 (3 wayhandshake)
이 IP가 악성 URL이 아닐까.....? 싶다.

1번 문제를 해결하기 위해 머니마니 씨가 다운 받았다는 .jar 파일을 찾아야 했다.
문자열 검색을 통해 ".jar" 을 검색했다.

사진과 같이 62번, 64번 패킷에서 129번 머니마니 씨가 서버에 .jar 파일 2개를 요청한 것을 볼 수 있다.
감염 과정의 일환이라고 표현하는 것을 보아 머니마니씨 의지로 다운받은 것이 아닌 악성 URL에 의해 이 두 .jar 파일이 자동으로 받아진 것 같다.
1. 감염 과정의 일환으로 Moneymany의 브라우저는 두 개의 Java 애플릿을 다운로드했습니다. 이 애플릿을 구현한 두 .jar 파일의 이름은 무엇이었나요?
q.jar / sdfg.jar
2번 문제의 정답을 찾기 위해 HTTP 위주로 패킷을 계속 내리며 살펴보던 중

293번에 GET으로 요청된 패킷을 발견하였고

해당 패킷의 Request 값을 살펴본 결과 guid 파라미터 값으로 ADMINISTRATOR라는 이름이 적혀있는 것을 확인할 수 있었다.
해당 요청 파라미터를 통해 머니마니씨의 username임을 유추할 수 있다.
2. 감염된 Windows 시스템에서 Moneymany 씨의 사용자 이름은 무엇이었나요?
ADMINISTRATOR
4번 문제는 감염의 일환으로 악성 "Windows 실행 파일"이 다운로드되었으며 해당 파일을 추출해야 하는 문제이다.
Windows 실행 파일이라고 문제에 명시한 것이 힌트라고 생각하였기에 서버에 GET 요청을 보내는 패킷을 위주로 찾고 해당 패킷을 중심으로 오가는 통신들 중에 .exe 파일이 포함되어 있는 패킷을 찾았다.

7번 스트림에서 머니마니 씨가 get 요청을 보낸 후 (고의는 아니었겠지만!) 친절하게 OK라며 filename=file.exe라고 포함시켜준 패킷을 찾았다.
exe파일의 파일 헤더 시그니처 값은 4D 5A [MZ]이다.

푸터 값은 잘 모르겠어서 .exe 파일을 열심히 HxD로 열고 비교해 보았지만 봐도 딱히 모르겠었다.
그래서 저 4d 5a부터 뒤까지 쭉 긁었다.

이게 진짜 악성파일이라 안 되는 건지 뭔지... 저장이 안 된다.
이때 열심히 찾아보니 이런 식으로 긁어봐야 뒤에 쓸모없는 값이 너무 많이 붙어 정상 추출이 안 된다고 한다.
또 wireshark의 기능을 배울 차례다.
[파일]->[객체 내보내기] 기능을 사용하면 편리하다고 한다.

해당하는 패킷을 클릭 후 저장을 하면?
여기서도 windows 보안 어쩌고 하면서 저장이 안 된다.

꺼준 후 ! 다시 저장한다.

하하 악성 파일이 생겼다

windows의 내장 툴인 certutil을 통해 해시값을 구했다.! 91ed로 끝난다고 하는 것을 보니 잘 추출이 된 거 같다.
4. 감염의 일환으로 악성 Windows 실행 파일이 Moneymany의 시스템에 다운로드되었습니다. 파일의 MD5 해시는 무엇이었나요? 힌트: "91ed"로 끝납니다.
5942ba36cf732097479c51986eee91ed
이후 문제들은 파일의 패킹여부 등에 대한 문제이기 때문에 더 이상 wireshark로 분석하는 것은 의미가 없다.
PEview 프로그램을 통해 추출한 실행파일을 분석하고자 한다.


IMAGE_SECTION_HEADER를 보면 Virtual Size가 Size of Raw Data 보다 값이 큰 것을 볼 수 있다.
이를 통해 해당 파일이 패킹되었음을 확인할 수 있고 패커는 UPX를 사용했음을 바로 확인할 수 있다.
5. 악성 Windows 실행 파일을 보호하는 데 사용되는 패커의 이름은 무엇인가요? 힌트: 이 패커는 "메인스트림" 멀웨어에서 볼 수 있는 가장 인기 있는 패커 중 하나입니다.
UPX
하지만 이 도구 역시 단순 PE 구조를 확인할 수 있는 도구이고 언패킹 기능까지 지원하지는 않는다.
인터넷에 UPX 언패킹 툴을 검색한 다음 적절히 필요한 도구를 다운받았다.

https://jiholine10.tistory.com/643
[window] UPX 언패킹 툴 설치 및 사용법
악성코드를 분석하기 전에 Exeinfo PE에 넣어 봤다. 이때, 패킹이 되어 있음을 알 수 있었다. 패킹이 되어 있다면, 악성코드를 분석할 때 제대로 할 수 없다. 그렇기 때문에 언패킹을 시도해야한
jiholine10.tistory.com
해당 블로그를 참고했다.
upx -d [언패킹하고자하는 파일].exe

파일이 언패킹 되었다.
언패킹 된 파일은 기존 파일에 덮어씌워지게 된다고 한다.

해시값을 구했으나 .... 답이 틀렸다.
블로그에 나온 대로 같은 폴더 안에 파일을 넣어둔 후 언패킹을 했으나 해시값이 변경되었기에 혹시 파일을 옮기는 과정에서 문제가 되었을 까 싶었다.
파일을 다시 추출 후 언패킹 하기 전 해시값을 비교해 파일이 변조되지 않았음을 확인 한 다음 그 상태에서 파일 이동조차 하지 않고 언패킹을 한 후 다시 해시값을 구했으나 위와 동일한 해시값이 나왔다.....
---
열심히 해당 문제를 찾아보았다.
다시 파일 추출부터 다시 설명을 해보겠다.

먼저 객체 내보내기를 할 시점으로 돌아가서 273번 패킷이 아닌 217번 패킷의 객체를 내보낸 후 exe로 저장한다.

그럼 해당 파일 역시 273번 패킷에서 추출한 exe와 같은 해시값을 가지고 있는 것을 확인할 수 있다.
이제 이 파일을 다시 언패킹 한 후 해시값을 확인해 보자.
=> 그래도 똑같이 C 어쩌고 해시값이 나온다. 이유를 모르겠다. 이 문제는 이후에 더 찾아봐야 할 듯하다.
다시 마지막 문제를 풀기 위해 networkminer로 확인해 보면

192.168.23.129(Moneymany's) 와 DNS 조회 없이 통신 한 IP는 213.155.29.144 하나인 것을 확인할 수 있다.
7. 악성 실행 파일은 하드코딩된 IP 주소를 사용하여 인터넷 호스트에 연결하려고 시도합니다(DNS 조회가 없었습니다). 해당 인터넷 호스트의 IP 주소는 무엇인가요?
213.155.29.144
다음 질문에 답하세요:
1. 감염 과정의 일환으로 Moneymany의 브라우저는 두 개의 Java 애플릿을 다운로드했습니다. 이 애플릿을 구현한 두 .jar 파일의 이름은 무엇이었나요?
q.jar / sdfg.jar
2. 감염된 Windows 시스템에서 Moneymany 씨의 사용자 이름은 무엇이었나요?
ADMINISTRATOR
3. 이 사건의 시작 URL은 무엇이었나요? 즉, Moneymany 씨는 어떤 URL을 클릭했을 가능성이 높습니다.
http://nrtjo.eu/true.php
4. 감염의 일환으로 악성 Windows 실행 파일이 Moneymany의 시스템에 다운로드되었습니다. 파일의 MD5 해시는 무엇이었나요? 힌트: "91ed"로 끝납니다.
5942ba36cf732097479c51986eee91ed
5. 악성 Windows 실행 파일을 보호하는 데 사용되는 패커의 이름은 무엇인가요? 힌트: 이 패커는 "메인스트림" 멀웨어에서 볼 수 있는 가장 인기 있는 패커 중 하나입니다.
UPX
6. 악성 Windows 실행 파일의 언팩 버전의 MD5 해시는 무엇입니까?
보류
7. 악성 실행 파일은 하드코딩된 IP 주소를 사용하여 인터넷 호스트에 연결하려고 시도합니다(DNS 조회가 없었습니다). 해당 인터넷 호스트의 IP 주소는 무엇인가요?
213.155.29.144

6번 빼고 전부 올바르게 답을 찾았다!
6번은 왜 답이 틀리는지.. 별 방법을 다 써봤지만 별다른 의미는 없었다.
나중에 추가적으로 다시 풀어봐야 할 거 같다.
'Security Study > forensics' 카테고리의 다른 글
| [SANS Forensic Contest Puzzle] #6: Ann’s Aurora (0) | 2025.11.28 |
|---|---|
| [SANS Forensic Contest Puzzle] #4: The Curious Mr. X (0) | 2025.11.18 |
| [SANS Forensic Contest Puzzle] #3: Ann’s AppleTV (1) | 2025.11.14 |
| [SANS Forensic Contest Puzzle] #2: Ann Skips Bail (0) | 2025.11.05 |
| [SANS Forensic Contest Puzzle] #1: Ann’s Bad AIM (6) | 2025.08.02 |