블로그 이전했습니다. https://jeongzero.oopy.io/
LMG Network Forensic puzzle contest 5번
본문 바로가기
워게임/Puzzle contest

LMG Network Forensic puzzle contest 5번

728x90

2019/05/17 - [보안/코드엔진] - 코드엔진 5번

1. 시나리오 

 

머니머니는 악성코드가 포함된 이메일 링크를 클릭하였고 바이러스에 감염되었다.

해당 이메일을 클릭한 순간 부터 일어난 일을 추적하라!

 

 

2. 수집할 증거들

 

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 주소는 무엇입니까?

 

 

3. 문제풀이

 

1. 감염 과정의 일부로, Moneymany 여사의 브라우저가 두 개의 Java 애플릿을 다운로드했습니다. 이 애플릿을 구현 한 두 개의 .jar 파일의 이름은 무엇입니까?

 

머니머니 여사가 이메일 링크를 클릭했을 때 자기도 모르게 두개의 자바 파일을 다운 받았다면 이는 응용 계층에서 일어난 일이 분명하다.

 

즉 http 스트림을 통하여 다운 받아졌을 것이기 때문에 http 프로토콜로 필터링을 걸어보았다.

 

그림 1

 

머니머니 여사의 아이피 주소는 192.168.23.129라는 것을 확인 할 수 있었고, 59.53.91.102로부터

 

GET 요청을 통하여 q.jar 파일과 sdfg.jar 파일을 요청한 것을 확인 가능하다.

 

정답 : q.jar, sdfg.jar 

 

 

 

2. 감염된 Windows 시스템에서 Moneymany의 사용자 이름은 무엇입니까? 

 

그림1의 밑에 쪽을 보면 다음과 같은 부분을 확인 할 수 있다.

 

그림 2

GET 요청으로 php?guid 부분을 의심해 보았다. guid변수에 들어가는 값이 아마도 해당 윈도우 시스템에서 머니머니가 로그인 한 것으로 유출 할 수 있다.

 

정답 : ADMINISTRATOR

 

 


3.이 사건의 시작 URL은 무엇입니까? 달리 말하면, Moneymany는 어떤 URL을 클릭했을 것입니까? 

 

그림 3

머니머니의 아이피주소를 위에서 알아 냈으므로 해당 주소로 필터링을 걸어 확인해보자.

 

그러면 처음에 DNS 쿼리부분이 나오고 그다음 TCP 핸드쉐이킹 과정이 나온다. 

 

 

 

그림  4

3-way 핸드쉐이킹을 끝마치고 바로 HTTP 스트림으로 true.php 페이지를 요청한다.

 

해당 패킷에 대한 HTTP 스트림을 자세히 살펴보면

 

 

그림 5

 

현재 호스트 도메인 주소는 nrtjo.eu 인것을 확인 할 수 있고 요청하는 페이지는 true.php 이다

 

따라서 아마도 머니머니가 처음에 클릭했을 때의 URL은 다음과 같을 것이다.

 

정답 : http://www.nrtjo.eu/true.php

 



4. 감염의 일부로 악의적 인 Windows 실행 파일이 Moneymany의 시스템에 다운로드 되었습니다. 파일의 MD5 해시는 무엇입니까? 힌트 : "91ed"로 끝납니다.

 

감염의 일부로 악의적인 윈도우 실행파일이 머니머니의 시스템에 다운로되 되었다고 한다. PE 파일 중 가장 많이 쓰이는 확장자가 exe 이므로 exe이란 문자열을 가지고 있는 패킷을 검색해 보았다.

 

그림 6

 

file.exe이 검색되었다. 그렇다면 해당 패킷이 바로 머니머니 시스템에 다운로드 된 악성 실행 파일이란 것 유추할 수 있고 file.exe 파일을 패킷으로부터 추출하여 md5 해시 값을 알아내면 될 것이다.

 

와이어샤크의 HTTP object 추출 기능을 통해 저 file.exe이 있는지 확인해보자.

 

 

그림 7

???? file.exe 파일이 없다.. 순간 당황해서 이리저리 알아보았다.

 

처음에 http stream에서 exe 파일 시그니처를 찾고 해당 부분위에를 지우고 저장을 .exe로 저장을 했으나 파일에 제대로 열리지 않았다.

 

마지막 부붙도 잘라줘야하는데 해당 http stream에서는 어디까지 잘라야 하는지를 구분할 수 가 없었다.

 

 

따라서 http 오브젝트를 뽑으려 왔는데 저렇게 리스트가 나와버렸다.

 

다른건 다 알겠는데 content type중 application/octet-stream 이라는 것이 눈에 들어왔다.

 

처음 들어본 타입이여서 검색을 해 보았다.

 


Content-Type/octect-stream 이란?

클라이언트 부라우저로 어떤 자원을 보낼때, 웹 서버는 일련의 HTTP 헤더로 파일이나 자원을 포함하는 바이트의 stream을 보낸다. 이런 헤더는 클라이언트에게 웹 서버와 커뮤니케이션 세부사항을 묘사한다. 예를 들어 헤더는 사용되고 있는 웹 서버의 소프트웨어의 타입, 서버의 날짜와 시간, HTTP 프로토콜, 사용중인 커넥션 타입 등을 지정한다. HTML 페이지에서 표준 타입은 text/html이다. 그리고 applicatio의 표준 타입중 디폴트 미디어 타입, 주로 실행 파일, 다운로드 파일을 의미하는 것이 바로 content-type/octect-stream 이다.

 

따라서 해당 파일을 다운받아 Hxd 로 헥사값을 확인해 보았다.

 

그림 8

 

아스키 값이 MZ 이고 맨앞 4바이트가 4D 5A 90 00 이라는 것으로 보아 우리가 원하는 file.exe 인 것을 확인 할 수 있다.

 

해당 파일을 file.exe로 변경하여 저장한뒤 md5sum 값을 확인해 보자.

 

그림 9 

 

 

5. 악의적 인 Windows 실행 파일을 보호하는 데 사용되는 패커의 이름은 무엇입니까? 힌트 : 이것은 "주류"악성 코드에서 볼 수있는 가장 널리 사용되는 무료 패커 중 하나입니다. 

 

그림 8 밑 부분

file.exe로 저장한 파일의 헥사값을 확인해보다보면 UPX 라고 되어있는 아스키 값이 있다. 이는 빼박 해당 파일을 UPX 방식으로 패킹한 것으로 알 수 있다.

 

확실한게 좋지 않는가? 따라서 해당 파일을 Stud.exe라는 PE파일 분석 도구를 통하여 한번 확인해보자.

 

file.exe

 

UPX로 패킹되어 있다.

 

정답 : UPX

 

 

6. 압축되지 않은 악성 Windows 실행 파일의 MD5 해시는 무엇입니까?

 

UPX로 패킹되어 있는 파일을 언패킹을 해야 한다.

이 내용은 저번 코드엔진 풀이중 설명을 했으므로 링크로 대체한다.

 

UPX 패킹, 언패킹 사용법

2019/05/17 - [보안/코드엔진] - 코드엔진 5번

 

언패킹 성공

 

언패킹한 파일의 md5sum을 다시 구해보면

 

 

언패킹 후의 md5sum 값

 


7. 악성 실행 파일은 하드 코딩 된 IP 주소를 사용하여 인터넷 호스트에 연결하려고 시도합니다 (DNS 조회가 없었 음). 해당 인터넷 호스트의 IP 주소는 무엇입니까?

 

문제를 잘 봐야 한다. file.exe 파일에는 하드 코딩된 IP주소를 사용하여서 인터넷에 접근한다고 한다. DNS 조회 즉, DNS 서버에 대한 질의, 응답에 대한 과정이 없어야 한다. 

 

그렇다면 DNS 프로토콜을 필터를 걸어 확인을 해보자.

 

 

현재 DNS 쿼리를 날리는 ip 주소를 확인 가능하다.

 

192.168.23.2, 192.168.23.129 호스트는 DNS 질의를 하므로 후보에서 탈락된다.

 

또한 빨간 박스를 보면 DNS 질의가 어느 서버를 타고 갔는 지도 확인 해 볼 수 있다. 

 

확인 된 서버로는 nrtjo.eu, ns2.vnmhab.com, freeways.in 이다.

 

그럼 와이어샤크 기능을 통하여 현재 pcap파일에서 존재하는 IP 주소들을 확인해 보자.

 

Statistics -> Ipv4 Statistics -> All address

 

 

 

현재 6개의 아이피가 나오는데 위에서 방금 제외한 192. ~ 두개의 아이피를 거르면 총 4개가 남는다.

 

또한 확인된 DNS 서버 문자열 nrtjo.eu, ns2.vnmhab.com, freeways.in를 패킷 검색 기능을 통하여 검색하고,

 

만약 저 4개의 아이피에대해서 3개중 하나의 문자열이 포함된다면 그 아이피는 DNS 쿼리를 한 것이므로 후보에서 탈락시키자.

 

 

1) nrtjo.eu

 따라서 59.53.91.102 아이피는 후보에서 탈락.

 

 

2) ns2.vnmhab.com

 

안나옴

 

 

3) freeways.in

 

 

따라서 현재 65.55.195.250과 213.155.29.144 두개의 패킷이 남았다.

 

65.55.195.250 패킷을 필터링하여 TCP 스트림을 보쟈.

 

 

아마 저 아이피는 마이크로소프트 사이트 인것 같다.  따라서 마지막으로 남은 213.155.29.144 이 정답이라는 것을 알 수 있다.

728x90