Forensic

[Forensic] Puzzle #5: Ms. Moneymany’s Mysterious Malware 문제 풀이 - Network

Papya_j 2024. 7. 31. 15:19

오늘은 밑의 링크의 문제를 풀어보겠다.

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

 

사이트에 접속하면 다음과 같은 화면이 뜬다.

 

문제에 대한 설명이다.

 

대충 설명해보자면

Ms. Moneymany가 스팸 메일을 뚫고 들어온 메일이 궁금해서 클릭해봤다. 이메일에는 웹사이트가 있었고 궁금해서 웹사이트를 클릭해서 들어갔다. 웹사이트는 로드 속도가 느리고, 화면이 깨진 것 처럼 보였다. 내용이 없어서 실망했고 창을 닫았지만 이미 컴퓨터는 감염되었다.

Ms. Moneymany와 website가 상호작용한 pcap 파일을 가지고 있고 이것을 조사해보자.

 

pcap 파일을 받으면 다음과 같은 파일을 얻을 수 있다.


[Write Up]

구해야 하는 것은 다음의 7개이다.

1. As part of the infection process, Ms. Moneymany’s browser downloaded two Java applets. What were the names of the two .jar files that implemented these applets? 

2. What was Ms. Moneymany’s username on the infected Windows system? 

3. What was the starting URL of this incident? In other words, on which URL did Ms. Moneymany probably click? 

4. As part of the infection, a malicious Windows executable file was downloaded onto Ms. Moneymany’s system. What was the file’s MD5 hash? Hint: It ends on “91ed”. 

5. What is the name of the packer used to protect the malicious Windows executable? Hint: This is one of the most popular freely-available packers seen in “mainstream” malware.

6. What is the MD5 hash of the unpacked version of the malicious Windows executable file?

7. The malicious executable attempts to connect to an Internet host using an IP address which is hard-coded into it (there was no DNS lookup). What is the IP address of that Internet host?

 

1. 감염 과정에서 2개의 Java applets을 다운받았다. 이 애플릿을 implemented 한 2개의 .jar 파일의 이름은?

2. Ms. Moneymany의 사용자 이름은 무엇인가? (Windows system 내에서)

3. 클릭했던 가능성이 있는 이 사건의 시작인 URL은 무엇인가?

4. 악성 Windows 실행 파일이 다운로드 되었는데 이 파일의 MD5 해시값은 무엇인가? (Hint. "91ed"로 끝남)

5. 악성 실행 파일을 보호하기 위해 사용된 packer의 이름은? (Hint. 악성 코드에서 자주 보이는 가장 인기있는 무료 패커 중 하나이다)

6. 악성 실행 파일이 언팩된 것의 MD5 해시값은?

7. 악성 파일은 DNS 조회 없이 hard-coded 된 IP address 를 사용하여 Internet에 연결 된다. 해당되는 IP 주소는?


Wireshark를 통해 파일을 열어보았다. (Wireshark 없는 인원은 다운로드 필수)

다양한 Protocol 목록과 많은 패킷들을 발견할 수 있다. 

 

1번을 풀기 위해서는 applet이 무엇인지 알아야 했다.

applet (애플릿)

 

플러그인의 하나로서 전용 위젯 엔진이나 더 큰 프로그램 범위 내에서 실행되는 특정한 작업을 수행하는 조그마한 응용 프로그램을 말한다. 웹 브라우저, 제어판과 같은 다른 프로그램에서 실행되는 소프트웨어 구성 요소로 볼 수 있다.

 

출처 : 위키백과

특정 작업을 수행하는 작은 프로그램이라고 보면 된다.

 

우선 ( 메인화면에서 HTTP 패킷 우클릭 -> 스트림 따라가기  -> HTTP ) 를 통해 존재하는 스트림들의 흐름을 쭉 따라가봤다. 전체적으로 서버에 통신을 요청하고 어떤 파일들을 받는 일련의 과정들을 대략적으로 알 수 있었다.

stream 3, 4 에서 GET 다음에 오는 것들이 .jar 확장자 파일이며 그 밑에 PK 라고 되어 있는 부분은 zip 파일의 시작 magic number가 PK이기 때문에 zip 파일 형식을 가지고 있다는 것을 알 수 있다. 따라서 다운받은 파일 2개의 이름은 sdfg.jar / q.jar 이렇게 두 개이다.

 

✨ 1. As part of the infection process, Ms. Moneymany’s browser downloaded two Java applets. What were the names of the two .jar files that implemented these applets? 

-> sdfg.jar / q.jar


스트림 따라가기로 쭉 넘기다가 GET으로 가는 정보에 guid 부분을 발견했다.

guid = ADMINISTRATOR로 되어있는 것으로 보아 이것이 windows system에서의 username임을 알 수 있었다.

 

 

✨ 2. What was Ms. Moneymany’s username on the infected Windows system? 

-> ADMINISTRATOR

 


(통계 -> 대화 -> TCP -> 스트림 따라가기) 눌렀을 때 보이는 정보들이다. 처음 GET이 나오는 부분을 확인하니 사용자가 서버에 접속하여 GET 요청을 보낸 것을 확인할 수 있다. Host : nrtjo.eu 이며 그 내부에 /true.php 에서 GET 요청을 실행했다. 따라서 URL 전체는 nrtjo.eu/true.php 인 것을 확인할 수 있다.

 

✨ 3. What was the starting URL of this incident? In other words, on which URL did Ms. Moneymany probably click? 

-> http://nrtjo.eu/true.php


5번째 스트림이다. 익숙한 헤더 정보가 보이는데 MZ로 시작하는 헤더는 PE파일임을 가리킨다. 따라서 악성 실행파일에 대한 정보가 이 스트림에 해당하는 것을 알 수 있다. 또한 파일의 MD5 해시값 끝이 91ed로 끝난다는 힌트가 있다.

친절하게 filename도 file.exe라고 알려주는 정보를 확인할 수 있다.


* 실패

저 부분을 다른 이름으로 저장한 후 file.exe라고 이름을 지었고, MZ 헤더가 나오기 전 불필요한 부분을 메모장을 켜서 삭제한 후 file 해시값을 계산해보니 다른 값이 나왔다.

 

수상해서 Hxd 값을 열어보았다.

 

2E라는 필요없는 값들이 너무 많이 들어가 있는것을 확인할 수 있었다. ASCII를 그대로 저장하는 것이 아닌 HEX값 자체를 저장해야 될 것 같다는 결론을 내렸다.


[다시 4번부터 풀이]

스트림 따라가기 창에서 "다음 형식으로 표시"에 Raw(무편집) 형식이 있는 것을 확인했다. 이걸 통해서 저장 후 분석 시에 제대로된 파일이 존재할 것 같다는 생각이 들었다.

RAW형식으로 저장 시에 다음과 같은 HEX값들이 나열됨을 볼 수 있다. 이것을 다른 이름으로 저장 -> file.exe로 저장한 후 HxD에서 MZ헤더 앞에 있는 불필요한 값들을 다 제거시켰다.

그랬더니 악성파일로 분류되어서 저장 자체가 안됐다. (뭐 어떻게 해도 윈도우에서 파일 저장을 차단함)

+ 위 형식으로 해도 불필요한 값들이 들어가 있어서 오답이 나옴.

 

우선 악성파일 자동제거를 끄기 위해서 윈도우 설정을 잠깐 달리 했다.

1. 시작 > 설정 > 업데이트 및 보안 > Windows 보안 > 바이러스 및 위협 방지 > 설정 관리(또는 이전 버전의 Windows 10에서는 바이러스 및 위협 방지 설정 )를 선택합니다. 2. 실시간 보호를 끄기로 전환합니다.

를 통해 악성 파일 자동제거 기능을 중단했다.

 

그리고 Wireshark에서 다른 방식으로 파일을 다운받았다.

필터를 "http.request"로 설정하면 http에서 request 된 것들에 대한 목록을 볼 수 있는데 여기서 밑에서 3번째와 2번째가 각각 file.exe를 request 하는 부분인 것은 위에서 확인할 수 있었다.

 

와이어샤크 상단 바에서 (파일 -> 객체 내보내기 -> HTTP) 클릭 하면 다음과 같은 화면이 뜬다. file.exe파일에 해당되는 http 패킷을 클릭 후 저장버튼을 누른 다음 file.exe로 저장하면 정상적으로 파일이 저장된다.

 

파일에 대한 MD5 해시값은 밑의 사이트에서 확인할 수 있다.

https://www.strerr.com/ko/md5_file.html

 

MD5 파일 온라인 계산 - StrErr.com

MD5 MD5 메시지 다이제스트 알고리즘, 완전하고 일관된 정보 전송을 보장하기 위해 128비트(16바이트) 해시 값을 생성하는 널리 사용되는 암호화 해시 함수 MD5는 미국 암호학자 Ronald Linn Rivest에 의

www.strerr.com

 

확인 결과 5942ba36cf732097479c51986eee91ed의 값이 나왔고 힌트와도 일치했다.

 

 

✨ 4. As part of the infection, a malicious Windows executable file was downloaded onto Ms. Moneymany’s system. What was the file’s MD5 hash? Hint: It ends on “91ed”. 

-> 5942ba36cf732097479c51986eee91ed


* 다른 툴 사용하여 보는 방법 (NetworkMiner)

 

다운로드 링크는 아래와 같다.

https://www.netresec.com/?page=NetworkMiner

 

NetworkMiner - The NSM and Network Forensics Analysis Tool ⛏

Network Miner is a network forensics tool for analyzing network traffic

www.netresec.com

 

프로그램을 켠 후 pcap파일을 열어서 Files 목록에 보면 file.exe가 있는 것을 확인할 수 있다.

 

file.exe를 더블 클릭시 MD5 값이 나타나는 것을 알 수 있다.

* 이것 또한 역시 악성 프로그램 자동 제거하는 기능이 꺼져있어야 함.


5번을 풀기 전 Packer의 역할이나 의미를 알아야 했다.

 

Packer

 

실행 파일 압축기

PE 파일의 크기 감소를 통해 네트워크 전송에도 용이하고 보관하기도 좋다. 또한 파일 내부의 코드와 리소스 등을 감출 수 있어 압축된 데이터는 알아보기 힘든 형태의 binary로 저장되어 내부 내용을 감춰준다.

 

주요 패커 종류

- UPX

- Aspack

 

출처 : https://maple19out.tistory.com/23

코드를 압축시키는 역할이 패커인데 어떤 패커가 쓰였는지 더 알기 쉽게 분석하기 위해 HxD가 아닌 "Detect it Easy"를 사용하였다.

 

자세한 내용은 다음 블로그를 참고하면 도움이 많이 된다.

https://choimungu.tistory.com/72

 

ch07 - 파일 패킹과 언패킹

01 PE 파일 패킹(packing) 02 PE 파일 언패킹(unpacking) 03 수동 언패킹(manual unpacking) ch07 - 파일 패킹과 언패킹 패커(packer) : PE 파일을 실행 가능한 형태로 파일을 압축시켜주는 프로그램으로 압축과 동시

choimungu.tistory.com

 

 

파일을 분석하려고 하자마자 패커 : UPX라는 정보를 볼 수 있다.

 

HEX 값만 봐도 UPX가 적혀있는 것을 확인할 수 있다.

 

✨ 5. What is the name of the packer used to protect the malicious Windows executable? Hint: This is one of the most popular freely-available packers seen in “mainstream” malware.

-> UPX


패킹 되어 있는 파일을 언팩한 후의 MD5 해시값을 구해보겠다.

 

본 게시글 작성자는 WSL 리눅스 가상환경에서 위 명령어를 통해 upx를 설치한 후 진행했다.

 

 

explorer.exe . 명령어를 통해 폴더 내부에 file.exe를 집어넣었고 그 후 언팩킹을 진행해보겠다.

 

명령어 입력 시 Unpacked이 된 것을 확인할 수 있다.

또한 md5sum file.exe를 하니 해시값이 ca21cefdd297152f6226e1c2d767cb96 인 것을 확인할 수 있다.

 

❌ 6. What is the MD5 hash of the unpacked version of the malicious Windows executable file?

-> ca21cefdd297152f6226e1c2d767cb96

 

* 찾아보니 오답임. 왜 오답인지 모르겠음.


NetworkMiner로 돌아와서 Sessions 부분을 보니 DNS 없이 직접 연결한 IP는 213.155.29.144가 유일했다.

 

 

Wireshark 내에서도 IPv4로 대화한 것을 봤을 때 주소 B에 해당하는 것들은 5개정도 나온다

 

각각 http, dns로 필터링하고 봤을 때 192.168.23.129에 해당하는 Source에서 통신했을 때 DNS가 존재하지 않는 것은 213.155.29.144가 된다.

 

 

✨ 7. The malicious executable attempts to connect to an Internet host using an IP address which is hard-coded into it (there was no DNS lookup). What is the IP address of that Internet host?

-> 213.155.29.144

 


소감

왜 매번 풀 떄마다 어려움을 느끼는지 잘 모르겠다. 그래도 악성코드가 내부에 심어지고 어떻게 컴퓨터에 설치되면서 파일을 다운로드하게 되는지에 대해 전체적인 흐름을 파악할 수 있었다. 악성코드 파일 저장 부분과 패킹 부분에서 꽤 많은 시간을 소비했는데 그만큼 배우고 정리된게 많은 시간이었다.

다양한 툴도 사용해보면서 새로운 것들을 배울 수 있었다.

 

의문점 및 더 봐야될 점

function ararata(reem,aanpry) 
{
f2112=this;
var xxy= f2112['eDv5aDlF'.replace(/[F15D\:]/g, '')];
return xxy('r'+'e'+'e'+'m.r'+'ep'+'lace('+'/r00ts/g'+',aanpry)');
}

- stream 0번째에서 맨 밑에 이러한 코드가 있었는데 이게 어떤 것인지 궁금했다.

 

- 6번 답은 풀이에 맞게 잘 풀었다 생각했는데 틀렸다. 왜 그런지 아직 이해를 못했다.

 

 

참고

https://lkimas.tistory.com/entry/%EB%A6%AC%EB%B2%84%EC%8B%B1-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EC%8B%A4%ED%96%89-%EC%95%95%EC%B6%95-%EB%B0%8F-UPX-%ED%88%B4-%EC%84%A4%EB%AA%85