SlideShare a Scribd company logo
1 of 43
Download to read offline
1
이미지 출처 : www.malware-traffic-analysis.net
Malware traffic analysis
IDS , Xplico , Netminer를 이용한 malware 트래픽
분석 보고서
이무송
fromitive@gmail.com
2
목차
감염 개요 3 – 4
피해 시스템 3
가해 시스템 3
감염 경로 3
패킷 파일 분석 5 - 21
다운 받은 pcap 파일 개요 5
Wireshark 분석 6
Packet replay 와 IDS 분석 12
Xplico 분석 13
NetworkMiner 분석 16
상세 분석 22 - 42
경로 추적 22
다운받은 zip 파일 분석 28
압축 푼 javascript 코드 분석 30
난독화 된, downloer javascript 코드 분석 34
다운받은 악성코드(exe1.exe,exe2.exe)정보 40
Acknowledgements 43
3
피해 시스템
IP 주소 10.4.26.102
MAC 주소 00:08:02:1c:47:ee(hewlettP_1c)
OS Windows NT 6.1 (windows 7 /
window server 2008 R2)
가해 시스템
IP DNS 비고
217.16.11.170 www.pichat.info 최초 유포지(spam mail)
185.189.14.112 servisedelivery.com fake 사이트 , downloader 다운
로드 링크 유포
213.136.26.180 smulpapentocht.be Downloader 배포 및 랜섬웨어
배포
94.198.98.20 -
랜섬웨어 사이트
감염경로
1. Spam mail에있는 링크를 클릭(www.pichat.info/09825327d.html)하여
redirect 되어 Microsoft office로 위장한 웹 페이지
(http://statusdelivery.com/bot14/legen.php)에 접속
2. 윈도우 업데이트로 위장한 압축되어진 파일을 다운로드 유도
(plugin_KB_XXXXX.zip)
감염 개요
4
3. 다운로드한 압축 파일을 해제 후 javascript를 실행
4. Downloader javascript를 받아와 복호화 한 뒤 smulpapentocht.be
에 접속 후, 랜섬웨어 다운로드 (exe1.exe,exe2.exe)
5. 랜섬웨어 감염 (Mole & Kovter)
5
다운 받은 pcap파일 개요
pcap file은 총 3개이고 다음은 각각의 내용물을 요약한 내용이다
파일명 설명
2017-04-26-USPS-
malspam-5-different-
zip-files-show-5-
different-file-
hashes.pcap
downloader를 다운받는 링크
(http://statusdelivery.com/bot14/jgen.php)를5
번 클릭하여 서로 이름이 다른 압축 파일을 받는
traffic을 저장한 packet 파일이다.
2017-04-26-USPS-
malspam-traffic-1st-
run.pcap
Malware 감염 전 까지(downloader가 malware
를 다운 받기 전)의 traffic을 저장한 packet 파
일이다.
2017-04-26-USPS-
malspam-traffic-2nd-
run.pcap
Malware를 감염 시키는 과정까지의 traffic을 저
장한 packet 파일이다. Malware(exe1.exe)만 다
운받았다.
pcap파일로 얻을 수 있는 악성코드는 downloader를 받는 javascript
코드, download javascript 코드 , 마지막으로 malware인 exe1.exe를
얻을 수 있다.
지금부터 첫 번째 파일을 zip패킷이라고 부를 것이고 두 번째 파일을
run1, 세 번째 파일을 run2로 정의하겠다
패킷 파일 분석
6
Wireshark 분석.
Zip패킷은 2017-04-26 17:28:19에 시작했고 1분 51초동안 패킷을 수집
했다
그림 1-1 | zip패킷 summary
7
application계층에서 가장 많이 사용한 프로토콜은 HTTP 프로토콜이다
그림 1-2 | zip패킷의 Protocol Hierarchy
Conversation에서는 10.4.26.103(피해자 시스템)과 217.16.11.170 ,
185.189.14.112 (가해 시스템)이 통신하는 패킷을 확인 할 수 있었다.
그림1-3 | zip패킷 Conversation
8
run1은 2017-04-26 14:00:26에 시작했고 1분 44초동안 패킷을 수집했
다.
그림 1-4 | run1 Summary 내용
application계층에서 가장 많이 사용한 프로토콜은 HTTP 프로토콜이다.
그림 1-5 | run1 Protocol Hierarchy
9
Conversation에서는 10.4.26.103(피해자 시스템)과 가장많이 통신한 주
소 순서로 (213.136.26.180 , 180.235.243.16 ..)로 되어있다 밑에 zip패
킷에서 나온 ip도 보인다.
그림 1-6 | run1 Conversation
10
run2는 2017-04-26 16:48:44에 시작했고 5분 13초동안 패킷을 수집했
다.
그림 1-7 | run2 Summary
application 계층에서는 HTTP를 가장 많이 사용했고 약간의 SSL 도
보인다.
그림 1-8 | run2 Protocol Hierarchy
11
Conversation에서는 run1과 zip패킷에서 보았던 213.136.26.180 ,
185.189.14.112 , 180.235.243.16등 ip와 통신하고 있었던 것을 볼 수
있다.
그림 1-9 | run2 Conversation
12
Packet replay와 IDS 분석
다음은 Tcp replay로 패킷 재생 후 IDS 탐지 결과를 보여준다.
zip패킷을 재생한 결과, IDS에서 탐지한 결과가 나타나지 않았다.
run1패킷을 재생한 결과 213.136.26.180 에서 악성코드를 받아서 랜
섬웨어를 실행한 뒤 94.198.98.20에 URL을 요청하는 것을 볼 수 있다.
그림 2-1 | run1 IDS 탐지결과
run2패킷도 마찬가지로 213.136.26.180 에서 악성코드를 받아서 랜섬
웨어를 실행한 뒤 94.198.98.20에 URL을 요청하는 것을 볼 수 있었다.
그림 2-2 | run2 IDS 탐지결과
13
Xplico 분석
zip패킷안에는 총 3개의 URL의 요청이 있었는데 다음은
statusdelivery.com/bot14/lgen.php 의 내용이다.
그림 3-1 | zip패킷 안 lgen.php의 내용
14
run1에서는 다음과 같은 dns를 요청했다. 개요에서 봤던, 공격자 IP가
보인다.
그림 3-2 | run1의 DNS 조회 정보
Zip패킷과 다른점은 smulpapentocht.be(213.136.26.180) 와
www.artisj.com(180.235.243.16) 에 url을 조회했다 위의 IDS 탐지 결
과에서 나왔던 IP주소의 도메인 이름이 smulpapentocht.be 인것을 알
았다.
다음은 run1에서 URL을 요청한 결과이다.
15
그림 3-3 | run1의 URL 요청 정보
statusdelivery.com/bot14/lgen.php 이후로 smulpapentocht.be로
Parameter가 담긴 URL을 요청했다.
run2의 DNS 요청은 run1과 똑같아서 생략 하겠다.
다음은 run2에서 URL을 요청한 결과이다.
16
그림 3-4 | run2의 URL 요청 정보
마찬가지로, statusdelivery.com/bot14/lgen.php 이후로
smulpapentocht.be 로 Parameter가 담긴 URL을 요청했다.
NetworkMiner 분석
다음은, NetMiner로 패킷에 있는 데이터를 추출한 결과이다.
17
zip패킷
그림 4-1 | zip패킷 파일 추출 결과
zip패킷에서 추출할 수 있었던 파일은 처음 유포지의 html파일과 리다
이렉트된 사이트의 html을 받을 수 있었다. 마지막으로 5개의 다른 이
름의 업데이트로 위장한 zip파일을 받을 수 있었다.
18
run1
그림 4-2 | run1 파일 추출 결과
run1에서 추출할 수 있었던 파일은 zip패킷과 마찬가지로 최초 유포지
의 html파일과 업데이트로 위장한 압축파일, 추가적으로 다운로더 스크
립트 파일로 보이는(index.html.3B88AAB4.javascript) 파일을 다운받을
수 있었다.
19
run2
그림 4-3 | run2 파일 추출 결과
run2에서는 zip패킷과 run1패킷에서 받은 파일 이외에 랜섬웨어 파일
(exe1.exe)을 추가적으로 받을 수 있었다.
20
각 파일 별 md5해시 값
zip패킷
133ce3584250b4207dfaf10efd506bcc 098925327d.html
d41d8cd98f00b204e9800998ecf8427e index.html
12bdfe38281bbdffd273836d063c1050 lgen.php.html
13b64532d52f4c15bece2de15a9dea77 plugin_KB_57676.zip.octet-stream
a19083e5453b160435327c3b62e363d7 plugin_KB_66614.zip.octet-stream
0469223eaa08d1254f87e9f4def5665f plugin_KB_72013.zip.octet-stream
d61f0d544cdcd43075bee85929bf3d3a plugin_KB_81638.zip.octet-stream
dd2395fe11de396950f96491fcff1147 plugin_KB_89567.zip.octet-stream
cd2e0e43980a00fb6a2742d3afd803b8 tds.html
run1
133ce3584250b4207dfaf10efd506bcc 098925327d[1].html
e9c27496984999ab0e846c2ab5c4dca5 counter.3B88AAB4.html
d41d8cd98f00b204e9800998ecf8427e index[1].html
0a4d890dd1e2742feb92d731ca491f92 index.html
4de3c8d08c9a7f23cbc50f3eb27d87e7 index.html.3B88AAB4.javascript
46bf506fb475c4a0a076f9dcbef64085 info-static.php.html
660add2531a229a2737d4bfbc1be6bdc lgen.php[1].html
ae066d41f2290374f187044acae90645 plugin_KB_47092.zip.octet-stream
cd2e0e43980a00fb6a2742d3afd803b8 tds[1].html
21
run2
133ce3584250b4207dfaf10efd506bcc 098925327d[2].html
c6ad3b0186367045e97fe4c7242cd3b5 counter.F642D356.html
8ce6129d052818bbf57026606a77350c exe1.exe
e49c61dc270a8e71b8f8b63a1e977c7e fakebrower.html
d41d8cd98f00b204e9800998ecf8427e index[2].html
53ee567ba9467ecf8db3a3471d9912e2 index.html.F642D356.javascript
e9024365ccc09c244fcb8ae37b3f486e info-static.php[1].html
4f2f4db9459bbb467da206589e721919 info-static.php[2].html
7e4abe9d9bf32d10c792740b58f23929 lgen.php[2].html
f942cd16630ec6c9fa0615758414a2e5 plugin_KB_92384.zip.octet-stream
cd2e0e43980a00fb6a2742d3afd803b8 tds[2].html
해시 값을 통해 알 수 있는 부분은
0989235327d.html 과 tds.html 이 어떤 pcap파일에서도 해시 값이 같
았고, lgn.php와 info-static.php 는 공통적으로 들어가 있지만 전혀 다
른 해시값을 가지고 있었다.
22
경로 추적
0989235327d.html 과 tds.html이 공통적으로 해시 값이 같고, 최초로
접속하는 걸로 보이므로, 어떤 내용이 들어가 있는지 확인해 봐야 한다.
다음은, 최초 유포지(www.pichat.info/098925327d.html)의 html파일을
열어본 결과이다.
그림 5-1 | 098925327d.html 내용
http://servsedelivery.com/tds로 redirect 되어 있다. 바로 이어서
tds.html 파일의 내용이다.
상세 분석
23
그림 5-2 | tds.html 내용
301 코드를 보내는 걸로 보아, 이 또한 redirect로 하는 걸로 보인다.
Wireshark로 어디로 redirect로 보내는지 분석해 보았다.
24
다음은 zip패킷에 있는 redirect 정보이다.
그림 5-3 | Wireshark로 본 zip패킷의 redirect 정보
맨 밑의 블록 표시를 한 정보를 보자면,
http://statusdelivery.com/bot14/lgen.php로 redirect 하는 것을 볼
수 있었다.
이제서야 본격적으로 lgen.php의 내용을 분석할 수 있게 되었다. zip패
킷에서는 넘어갔었지만, lgen.php의 내용이 중요해 짐에 따라 상세히
분석을 해야 함을 알았다.
25
xplico로 source를 분석 한 결과 download and install lasted plugin
version에 jgen.php로 request하는 태그임을 확인했다.
그림 5-4 | 버튼이 가리키는 URL
26
Wireshark로 run1패킷에서 jgen.php를 요청할 때, 어떤 응답을 받았는
지 분석해 보았다.
그림 5-5 | run1의 jgen.php 응답 결과
파란 글자를 보면 PK이라는 파일 시그니처를 탐지할 수 있었다. 이건
아까 NetworkMiner로 파일 추출할 때 얻은 zip 파일이라는 것을 추측
할 수 있었고, http://statusdelivery.com/bot14/jgen.php 이 업데이트
로 위장한 zip파일을 다운 받는 링크임을 확인했다.
27
다음은 Wireshark로 run2패킷을 열어 같은 요청
(http://statusdelivery.com/bot14/jgen.php)이 있었는지 확인해 보았
다.
그림 5-6 | run2의 jgen.php 응답 결과
run1과 비교해 봤을 때 KB 뒤의 일련번호와 내용이 바뀌어 있는 것을
확인 할 수 있었다.
28
다운받은 zip파일 분석
다음은 압축을 풀어서 run1과 run2패킷에서 받은 javascript 파일의
해시정보이다.
run1에서 받은 압축 파일의 내용과 해시 정보
ids-moo@idsmoo-virtual-machine:~/Desktop/run1$ mv plugin_KB_47092.zip.octet-stream
plugin_KB_47092.zip
ids-moo@idsmoo-virtual-machine:~/Desktop/run1$ unzip plugin_KB_47092.zip
Archive: plugin_KB_47092.zip
inflating: plugin_KB_47092.js
inflating:
ids-moo@idsmoo-virtual-machine:~/Desktop/run1$ md5sum plugin_KB_47092.js
24a700946203e384ab53e3f9bf8ecd50 plugin_KB_47092.js
run2에서 받은 압축 파일의 내용과 해시 정보
ids-moo@idsmoo-virtual-machine:~/Desktop/run2$ mv plugin_KB_92384.zip.octet-stream
plugin_KB_92384.zip
ids-moo@idsmoo-virtual-machine:~/Desktop/run2$ unzip plugin_KB_92384.zip
Archive: plugin_KB_92384.zip
inflating: plugin_KB_92384.js
inflating:
inflating:
ids-moo@idsmoo-virtual-machine:~/Desktop/run2$ md5sum plugin_KB_92384.js
bed0f772a206f5e42025b44d4db45498 plugin_KB_92384.js
29
다음은 이 둘의 차이점을 비교하기 위해 diff명령어를 수행한 모습이다.
압축을 푼 javascript 코드의 비교 결과
ids-moo@idsmoo-virtual-machine:~/Desktop/run2$ diff plugin_KB_92384.js ../run1/plugin_KB_47092.js
20c20
< var feni =
'WKBROT7mOoR1uNYoIuud8aAg3HJUatroCp7jgjQ207YQsqwECWhHNwNq19HNmSiz0MWTpXkr65x5lsNsc5cvGYbHs
u9XJyt3wm04HDHtHevrQr79Hx1BgKihLT5rn1fB0zFj69s7fbbWbO0W1NMWtAehWhLKfWVNDtFbeqSTavd1fuUBbZ2FV
Jv8ZffNY9EBff5H14dGiHTsiUmBB1F7Prp5VjtiOziEeUqljj0BPGrOc1';
---
> var feni =
'HpgGPurjqOYUiC5m7E5zI2wHXAm24wxwmggdLh9hcKGSGbppx60yndvFey7dcIfkeewV4gW9zQygkLmyIxfXuTrq4UiS
cQyEMooLcCBXaC7cWRvYX1wru35AddQrO5QRwn2h';
var feni변수가 run2패킷에서는 WKB..로 시작했고 run1패킷에서는
Hpg..로 시작한 것을 확인할 수 있었다. feni빼고 변경된 점은 보이지
않았다. 결론은 두 javascript 코드는 feni만 다른 코드임을 확인할 수
있었다.
30
압축 푼 javascript 코드 분석
javascript코드를 열었더니 global variable은 총 7개를 사용하고 있었
고 정의 된 함수는 총 4개였다.
그림 6-1 | 압축 푼 javascript의 정보
31
다음 그림은 난독화된 코드를 복호화 하기 전, code가 수행하는 동작을
그림으로 표현해 봤다.
그림 6-2 | plugin_KB.js 코드 동작 개요도
해당 코드는 악성 코드를 Download server들에 요청 하고 나서, feni를
이용해 decode를 해서 그 코드를 실행하는 코드임을 확인했었다.
32
손으로 복호화 한 코드는 다음과 같다.
그림 6-3 | 복호화 한 코드 1 of 2
코드를 설명하자면 다음과 같다.
1: 코드를 지연하기 위해 while 문을 돌리는 것으로 보았다. uuu 변수가 저기 밖에 사용하지 않고, 필요 없는 기능
같아서 주석처리 해주었다.
2~4 , 8: 코드가 쓰는 기능은 총 3 가지이다. 악성코드를 받은 뒤(request2URL) 그것을 feni 로 복호화(decoder) 한 뒤,
appendCode 로 다시 재 결합을 한다. 그리고 악성코드를 실행하는 모습(executeCommand)까지 보였다.
7: pusik 변수는 분석가가 알아보기 힘들게 난독화되어있다. 복호화 한 결과 GET 문자열과 “/” 문자를 사용함을
확인했다.
13: x 변수는 이 코드가 요청하는 다운로드 서버 리스트이다. request 에 실패하면 다음 서버에 요청한다.
29,31: 본격적으로 다운로드 서버에게 악성코드를 요청하는 장면이다. url 의 counter parameter 에 feni 를 삽입하여
요청하고 있다.
33
다음은 코드의 후반부 이다.
그림 6-4| 복호화 한 코드 2 of 2
코드를 설명하자면 다음과 같다.
39: 받았던 코드를 feni 를 이용해 decode 하는 장면이다. run2 와 run1 에서 받은 난독화된 javascript 코드를 풀
함수로 쓸 수 있을 듯 하다.
40: 코드를 append 하여 실제 악성코드가 strMalCode 변수에 넣는 statement 이다.
48: 만약 response 에 실패했다면, 다음 download server 에 요청하기 위해 배열의 index 값을 증가시키는
statement 이다.
34
난독화 된, downloader javascript 코드 분석
NetworkMiner로 run1과 run2에서 난독화된 downloader javascript
코드를 추출 할 수 있었던 것을 볼 수 있었다. 지금부터 복호화할
downloader 코드는 run1에 있는 index.html.3B88AAB4.javascript 코
드이다 대략적인 내용은 다음과 같은 모습이다.
그림 7-1 | index.html.3B88AAB4.javascript의 내용
35
코드가 알아보기 힘들게 난독화 되어있다. 복호화를 하기 위해 textfile
로 변경한 후 google chrome에서 열어보았다.
그림 7-2 | chrome에서 열어본 난독화된 코드
text파일을 drag & drop 하여 chrome 개발자 도구(F12)를 누르면 내용
물을 global variable로 저장할 수 있는 기능이 있다. 이를 이용해
temp1에 코드를 저장했다.
36
그림 7-3 | temp1에 저장 된 난독화 된 코드
temp1 은 object 타입의 변수이므로 textContent property를 이용해
text만 뽑아서 malCode 변수에 옮겼다.
그림 7-4 | text Type으로 변환하여 malCode변수에 저장한 모습
37
이제 malcode를 변환할 차례이다 아까 봤던 decoder함수와
appendCode 함수를 구현하고 호출하여 최종적으로 downloader 코드
를 얻었다.
그림 7-5 | 최종적으로 얻은 코드
38
하지만, 최종적으로 얻은 코드도 난독화 되어있어서 알아보기 힘들었다.
마지막 줄의 eval(NXmef); 함수를 지워서 전체 코드를 실행하여 난독화
를 풀었다.
그림 7-6 | 난독화가 해제된 downloader javascript 코드
39
코드를 다시 파일로 저장하여 vim에서 열어보았다.
그림 7-7 | downloader javascript code
코드를 설명하자면 다음과 같다.
1: ll 변수에서 실제 악성코드를 받을 수 있는 download server 리스트를 저장하고 있다.
3: %TEMP% 환경변수를 사용하는 걸로 보아 악성코드를 다운 받아서 windows 임시파일에 저장하려고 한다.
6-20: 다운받는 파일을 for 문의 n 변수를 이용하여 총 2 개 (exe1.exe , exe2.exe)를 받아서 실행하고 있는 것으로
보인다. 마찬가지로 download server 에서 파일을 못받는 다면 index(i 변수)를 증가시켜 다음 서버로 요청하는 것을
볼 수 있었다.
40
다운받은 악성코드(exe1.exe,exe2.exe)정보
Wireshark로 run2에서 exe1.exe과,exe2.exe파일을 요청하는 패킷을
볼 수 있다.
그림 8-1 | run2 안에서 본 exe1.exe,exe2.exe 요청 시도 패킷
41
하지만, NetworkMiner로 exe2.exe 패킷을 받을 수는 없었다. 자세히
확인하기 위해 HTTP flow를 확인해 보았더니 exe2.exe 요청에 대해
response를 받지 못하였다.
그림 8-2 | run2 안에서 본 exe2.exe 다운로드 시도 패킷
42
exe1.exe를 VirusTotal 사이트(https://www.virustotal.com/)에 접속
하여 결과를 확인해 보았더니 mole 랜섬웨어 임을 확인했다.
그림 8-3 | exe1.exe의 VirusTotal 검사 결과
43
그림 6-2의 아이콘 출처
Icons made by Freepik from www.flaticon.com is licensed by CC 3.0 BY
Icons made by Smashicons from www.flaticon.com is licensed by CC 3.0 BY
Icons made by phatplus from www.flaticon.com is licensed by CC 3.0 BY
Icons made by Eucalyp from www.flaticon.com is licensed by CC 3.0 BY
Icons made by Vitaly Gorbachev from www.flaticon.com is licensed by CC 3.0 BY
Icons made by Gregor Cresnar from www.flaticon.com is licensed by CC 3.0 BY
Icons made by srip from www.flaticon.com is licensed by CC 3.0 BY
Acknowledgements

More Related Content

Similar to Malware Traffic analysis

(130216) #fitalk reverse connection tool analysis
(130216) #fitalk   reverse connection tool analysis(130216) #fitalk   reverse connection tool analysis
(130216) #fitalk reverse connection tool analysisINSIGHT FORENSIC
 
(Ficon2016) #2 침해사고 대응, 이렇다고 전해라
(Ficon2016) #2 침해사고 대응, 이렇다고 전해라(Ficon2016) #2 침해사고 대응, 이렇다고 전해라
(Ficon2016) #2 침해사고 대응, 이렇다고 전해라INSIGHT FORENSIC
 
악성코드와 분석 방안
악성코드와 분석 방안악성코드와 분석 방안
악성코드와 분석 방안Youngjun Chang
 
2.악성코드와 분석 방안
2.악성코드와 분석 방안2.악성코드와 분석 방안
2.악성코드와 분석 방안Youngjun Chang
 
2017년 10월 파밍 악성코드 분석 보고서
2017년 10월 파밍 악성코드 분석 보고서2017년 10월 파밍 악성코드 분석 보고서
2017년 10월 파밍 악성코드 분석 보고서poisoneye
 
악성코드와 분석 방안
악성코드와 분석 방안악성코드와 분석 방안
악성코드와 분석 방안Youngjun Chang
 
리눅스 커널 기초 태스크관리
리눅스 커널 기초 태스크관리리눅스 커널 기초 태스크관리
리눅스 커널 기초 태스크관리Seungyong Lee
 
Linux 강의자료 ed10
Linux 강의자료 ed10Linux 강의자료 ed10
Linux 강의자료 ed10hungrok
 
(130511) #fitalk utilization of ioc, ioaf and sig base
(130511) #fitalk   utilization of ioc, ioaf and sig base(130511) #fitalk   utilization of ioc, ioaf and sig base
(130511) #fitalk utilization of ioc, ioaf and sig baseINSIGHT FORENSIC
 
UNIX 시스템 2014-2018년 기말시험 기출문제
UNIX 시스템 2014-2018년 기말시험 기출문제UNIX 시스템 2014-2018년 기말시험 기출문제
UNIX 시스템 2014-2018년 기말시험 기출문제Lee Sang-Ho
 
3. 악성코드 분석 사례
3. 악성코드 분석 사례3. 악성코드 분석 사례
3. 악성코드 분석 사례Youngjun Chang
 
악성코드 분석 도구
악성코드 분석 도구악성코드 분석 도구
악성코드 분석 도구Youngjun Chang
 
167 Pdfsam 2003 S 236
167 Pdfsam 2003 S 236167 Pdfsam 2003 S 236
167 Pdfsam 2003 S 236guest043361
 
제3회 오픈 로보틱스 세미나 1일차 1세션 안드로이드 App 통신
제3회 오픈 로보틱스 세미나 1일차 1세션 안드로이드 App 통신제3회 오픈 로보틱스 세미나 1일차 1세션 안드로이드 App 통신
제3회 오픈 로보틱스 세미나 1일차 1세션 안드로이드 App 통신WooSangHwang
 
Hyperledger farbric build your first network install and analysis
Hyperledger farbric   build your first network install and analysisHyperledger farbric   build your first network install and analysis
Hyperledger farbric build your first network install and analysis병준 김
 
하이퍼레저 패브릭 실습자료
하이퍼레저 패브릭 실습자료하이퍼레저 패브릭 실습자료
하이퍼레저 패브릭 실습자료TIMEGATE
 
Internship backend
Internship backendInternship backend
Internship backendYein Sim
 

Similar to Malware Traffic analysis (20)

(130216) #fitalk reverse connection tool analysis
(130216) #fitalk   reverse connection tool analysis(130216) #fitalk   reverse connection tool analysis
(130216) #fitalk reverse connection tool analysis
 
(Ficon2016) #2 침해사고 대응, 이렇다고 전해라
(Ficon2016) #2 침해사고 대응, 이렇다고 전해라(Ficon2016) #2 침해사고 대응, 이렇다고 전해라
(Ficon2016) #2 침해사고 대응, 이렇다고 전해라
 
악성코드와 분석 방안
악성코드와 분석 방안악성코드와 분석 방안
악성코드와 분석 방안
 
2.악성코드와 분석 방안
2.악성코드와 분석 방안2.악성코드와 분석 방안
2.악성코드와 분석 방안
 
2017년 10월 파밍 악성코드 분석 보고서
2017년 10월 파밍 악성코드 분석 보고서2017년 10월 파밍 악성코드 분석 보고서
2017년 10월 파밍 악성코드 분석 보고서
 
악성코드와 분석 방안
악성코드와 분석 방안악성코드와 분석 방안
악성코드와 분석 방안
 
리눅스 커널 기초 태스크관리
리눅스 커널 기초 태스크관리리눅스 커널 기초 태스크관리
리눅스 커널 기초 태스크관리
 
Linux 강의자료 ed10
Linux 강의자료 ed10Linux 강의자료 ed10
Linux 강의자료 ed10
 
(130511) #fitalk utilization of ioc, ioaf and sig base
(130511) #fitalk   utilization of ioc, ioaf and sig base(130511) #fitalk   utilization of ioc, ioaf and sig base
(130511) #fitalk utilization of ioc, ioaf and sig base
 
ice_grad
ice_gradice_grad
ice_grad
 
UNIX 시스템 2014-2018년 기말시험 기출문제
UNIX 시스템 2014-2018년 기말시험 기출문제UNIX 시스템 2014-2018년 기말시험 기출문제
UNIX 시스템 2014-2018년 기말시험 기출문제
 
3. 악성코드 분석 사례
3. 악성코드 분석 사례3. 악성코드 분석 사례
3. 악성코드 분석 사례
 
악성코드 분석 도구
악성코드 분석 도구악성코드 분석 도구
악성코드 분석 도구
 
167 Pdfsam 2003 S 236
167 Pdfsam 2003 S 236167 Pdfsam 2003 S 236
167 Pdfsam 2003 S 236
 
제3회 오픈 로보틱스 세미나 1일차 1세션 안드로이드 App 통신
제3회 오픈 로보틱스 세미나 1일차 1세션 안드로이드 App 통신제3회 오픈 로보틱스 세미나 1일차 1세션 안드로이드 App 통신
제3회 오픈 로보틱스 세미나 1일차 1세션 안드로이드 App 통신
 
Hyperledger farbric build your first network install and analysis
Hyperledger farbric   build your first network install and analysisHyperledger farbric   build your first network install and analysis
Hyperledger farbric build your first network install and analysis
 
Ddd
DddDdd
Ddd
 
dddd
dddddddd
dddd
 
하이퍼레저 패브릭 실습자료
하이퍼레저 패브릭 실습자료하이퍼레저 패브릭 실습자료
하이퍼레저 패브릭 실습자료
 
Internship backend
Internship backendInternship backend
Internship backend
 

More from fromitive

이무송 스터디 HEX Editor로 PE 분석하기.pptx
이무송 스터디 HEX Editor로 PE 분석하기.pptx이무송 스터디 HEX Editor로 PE 분석하기.pptx
이무송 스터디 HEX Editor로 PE 분석하기.pptxfromitive
 
Higher order procedure2 with conventional interface
Higher order procedure2 with conventional interface Higher order procedure2 with conventional interface
Higher order procedure2 with conventional interface fromitive
 
Project of kshield_jr_open_seminar
Project of kshield_jr_open_seminarProject of kshield_jr_open_seminar
Project of kshield_jr_open_seminarfromitive
 
Dll search order hijacking
Dll search order hijacking Dll search order hijacking
Dll search order hijacking fromitive
 
Reverse Engineering 2015.02.09
Reverse Engineering 2015.02.09Reverse Engineering 2015.02.09
Reverse Engineering 2015.02.09fromitive
 
Load of Buffer Overflow 문제풀이
Load of Buffer Overflow 문제풀이Load of Buffer Overflow 문제풀이
Load of Buffer Overflow 문제풀이fromitive
 
해커스쿨 FTZ 문제 풀이
해커스쿨 FTZ 문제 풀이해커스쿨 FTZ 문제 풀이
해커스쿨 FTZ 문제 풀이fromitive
 

More from fromitive (7)

이무송 스터디 HEX Editor로 PE 분석하기.pptx
이무송 스터디 HEX Editor로 PE 분석하기.pptx이무송 스터디 HEX Editor로 PE 분석하기.pptx
이무송 스터디 HEX Editor로 PE 분석하기.pptx
 
Higher order procedure2 with conventional interface
Higher order procedure2 with conventional interface Higher order procedure2 with conventional interface
Higher order procedure2 with conventional interface
 
Project of kshield_jr_open_seminar
Project of kshield_jr_open_seminarProject of kshield_jr_open_seminar
Project of kshield_jr_open_seminar
 
Dll search order hijacking
Dll search order hijacking Dll search order hijacking
Dll search order hijacking
 
Reverse Engineering 2015.02.09
Reverse Engineering 2015.02.09Reverse Engineering 2015.02.09
Reverse Engineering 2015.02.09
 
Load of Buffer Overflow 문제풀이
Load of Buffer Overflow 문제풀이Load of Buffer Overflow 문제풀이
Load of Buffer Overflow 문제풀이
 
해커스쿨 FTZ 문제 풀이
해커스쿨 FTZ 문제 풀이해커스쿨 FTZ 문제 풀이
해커스쿨 FTZ 문제 풀이
 

Malware Traffic analysis

  • 1. 1 이미지 출처 : www.malware-traffic-analysis.net Malware traffic analysis IDS , Xplico , Netminer를 이용한 malware 트래픽 분석 보고서 이무송 fromitive@gmail.com
  • 2. 2 목차 감염 개요 3 – 4 피해 시스템 3 가해 시스템 3 감염 경로 3 패킷 파일 분석 5 - 21 다운 받은 pcap 파일 개요 5 Wireshark 분석 6 Packet replay 와 IDS 분석 12 Xplico 분석 13 NetworkMiner 분석 16 상세 분석 22 - 42 경로 추적 22 다운받은 zip 파일 분석 28 압축 푼 javascript 코드 분석 30 난독화 된, downloer javascript 코드 분석 34 다운받은 악성코드(exe1.exe,exe2.exe)정보 40 Acknowledgements 43
  • 3. 3 피해 시스템 IP 주소 10.4.26.102 MAC 주소 00:08:02:1c:47:ee(hewlettP_1c) OS Windows NT 6.1 (windows 7 / window server 2008 R2) 가해 시스템 IP DNS 비고 217.16.11.170 www.pichat.info 최초 유포지(spam mail) 185.189.14.112 servisedelivery.com fake 사이트 , downloader 다운 로드 링크 유포 213.136.26.180 smulpapentocht.be Downloader 배포 및 랜섬웨어 배포 94.198.98.20 - 랜섬웨어 사이트 감염경로 1. Spam mail에있는 링크를 클릭(www.pichat.info/09825327d.html)하여 redirect 되어 Microsoft office로 위장한 웹 페이지 (http://statusdelivery.com/bot14/legen.php)에 접속 2. 윈도우 업데이트로 위장한 압축되어진 파일을 다운로드 유도 (plugin_KB_XXXXX.zip) 감염 개요
  • 4. 4 3. 다운로드한 압축 파일을 해제 후 javascript를 실행 4. Downloader javascript를 받아와 복호화 한 뒤 smulpapentocht.be 에 접속 후, 랜섬웨어 다운로드 (exe1.exe,exe2.exe) 5. 랜섬웨어 감염 (Mole & Kovter)
  • 5. 5 다운 받은 pcap파일 개요 pcap file은 총 3개이고 다음은 각각의 내용물을 요약한 내용이다 파일명 설명 2017-04-26-USPS- malspam-5-different- zip-files-show-5- different-file- hashes.pcap downloader를 다운받는 링크 (http://statusdelivery.com/bot14/jgen.php)를5 번 클릭하여 서로 이름이 다른 압축 파일을 받는 traffic을 저장한 packet 파일이다. 2017-04-26-USPS- malspam-traffic-1st- run.pcap Malware 감염 전 까지(downloader가 malware 를 다운 받기 전)의 traffic을 저장한 packet 파 일이다. 2017-04-26-USPS- malspam-traffic-2nd- run.pcap Malware를 감염 시키는 과정까지의 traffic을 저 장한 packet 파일이다. Malware(exe1.exe)만 다 운받았다. pcap파일로 얻을 수 있는 악성코드는 downloader를 받는 javascript 코드, download javascript 코드 , 마지막으로 malware인 exe1.exe를 얻을 수 있다. 지금부터 첫 번째 파일을 zip패킷이라고 부를 것이고 두 번째 파일을 run1, 세 번째 파일을 run2로 정의하겠다 패킷 파일 분석
  • 6. 6 Wireshark 분석. Zip패킷은 2017-04-26 17:28:19에 시작했고 1분 51초동안 패킷을 수집 했다 그림 1-1 | zip패킷 summary
  • 7. 7 application계층에서 가장 많이 사용한 프로토콜은 HTTP 프로토콜이다 그림 1-2 | zip패킷의 Protocol Hierarchy Conversation에서는 10.4.26.103(피해자 시스템)과 217.16.11.170 , 185.189.14.112 (가해 시스템)이 통신하는 패킷을 확인 할 수 있었다. 그림1-3 | zip패킷 Conversation
  • 8. 8 run1은 2017-04-26 14:00:26에 시작했고 1분 44초동안 패킷을 수집했 다. 그림 1-4 | run1 Summary 내용 application계층에서 가장 많이 사용한 프로토콜은 HTTP 프로토콜이다. 그림 1-5 | run1 Protocol Hierarchy
  • 9. 9 Conversation에서는 10.4.26.103(피해자 시스템)과 가장많이 통신한 주 소 순서로 (213.136.26.180 , 180.235.243.16 ..)로 되어있다 밑에 zip패 킷에서 나온 ip도 보인다. 그림 1-6 | run1 Conversation
  • 10. 10 run2는 2017-04-26 16:48:44에 시작했고 5분 13초동안 패킷을 수집했 다. 그림 1-7 | run2 Summary application 계층에서는 HTTP를 가장 많이 사용했고 약간의 SSL 도 보인다. 그림 1-8 | run2 Protocol Hierarchy
  • 11. 11 Conversation에서는 run1과 zip패킷에서 보았던 213.136.26.180 , 185.189.14.112 , 180.235.243.16등 ip와 통신하고 있었던 것을 볼 수 있다. 그림 1-9 | run2 Conversation
  • 12. 12 Packet replay와 IDS 분석 다음은 Tcp replay로 패킷 재생 후 IDS 탐지 결과를 보여준다. zip패킷을 재생한 결과, IDS에서 탐지한 결과가 나타나지 않았다. run1패킷을 재생한 결과 213.136.26.180 에서 악성코드를 받아서 랜 섬웨어를 실행한 뒤 94.198.98.20에 URL을 요청하는 것을 볼 수 있다. 그림 2-1 | run1 IDS 탐지결과 run2패킷도 마찬가지로 213.136.26.180 에서 악성코드를 받아서 랜섬 웨어를 실행한 뒤 94.198.98.20에 URL을 요청하는 것을 볼 수 있었다. 그림 2-2 | run2 IDS 탐지결과
  • 13. 13 Xplico 분석 zip패킷안에는 총 3개의 URL의 요청이 있었는데 다음은 statusdelivery.com/bot14/lgen.php 의 내용이다. 그림 3-1 | zip패킷 안 lgen.php의 내용
  • 14. 14 run1에서는 다음과 같은 dns를 요청했다. 개요에서 봤던, 공격자 IP가 보인다. 그림 3-2 | run1의 DNS 조회 정보 Zip패킷과 다른점은 smulpapentocht.be(213.136.26.180) 와 www.artisj.com(180.235.243.16) 에 url을 조회했다 위의 IDS 탐지 결 과에서 나왔던 IP주소의 도메인 이름이 smulpapentocht.be 인것을 알 았다. 다음은 run1에서 URL을 요청한 결과이다.
  • 15. 15 그림 3-3 | run1의 URL 요청 정보 statusdelivery.com/bot14/lgen.php 이후로 smulpapentocht.be로 Parameter가 담긴 URL을 요청했다. run2의 DNS 요청은 run1과 똑같아서 생략 하겠다. 다음은 run2에서 URL을 요청한 결과이다.
  • 16. 16 그림 3-4 | run2의 URL 요청 정보 마찬가지로, statusdelivery.com/bot14/lgen.php 이후로 smulpapentocht.be 로 Parameter가 담긴 URL을 요청했다. NetworkMiner 분석 다음은, NetMiner로 패킷에 있는 데이터를 추출한 결과이다.
  • 17. 17 zip패킷 그림 4-1 | zip패킷 파일 추출 결과 zip패킷에서 추출할 수 있었던 파일은 처음 유포지의 html파일과 리다 이렉트된 사이트의 html을 받을 수 있었다. 마지막으로 5개의 다른 이 름의 업데이트로 위장한 zip파일을 받을 수 있었다.
  • 18. 18 run1 그림 4-2 | run1 파일 추출 결과 run1에서 추출할 수 있었던 파일은 zip패킷과 마찬가지로 최초 유포지 의 html파일과 업데이트로 위장한 압축파일, 추가적으로 다운로더 스크 립트 파일로 보이는(index.html.3B88AAB4.javascript) 파일을 다운받을 수 있었다.
  • 19. 19 run2 그림 4-3 | run2 파일 추출 결과 run2에서는 zip패킷과 run1패킷에서 받은 파일 이외에 랜섬웨어 파일 (exe1.exe)을 추가적으로 받을 수 있었다.
  • 20. 20 각 파일 별 md5해시 값 zip패킷 133ce3584250b4207dfaf10efd506bcc 098925327d.html d41d8cd98f00b204e9800998ecf8427e index.html 12bdfe38281bbdffd273836d063c1050 lgen.php.html 13b64532d52f4c15bece2de15a9dea77 plugin_KB_57676.zip.octet-stream a19083e5453b160435327c3b62e363d7 plugin_KB_66614.zip.octet-stream 0469223eaa08d1254f87e9f4def5665f plugin_KB_72013.zip.octet-stream d61f0d544cdcd43075bee85929bf3d3a plugin_KB_81638.zip.octet-stream dd2395fe11de396950f96491fcff1147 plugin_KB_89567.zip.octet-stream cd2e0e43980a00fb6a2742d3afd803b8 tds.html run1 133ce3584250b4207dfaf10efd506bcc 098925327d[1].html e9c27496984999ab0e846c2ab5c4dca5 counter.3B88AAB4.html d41d8cd98f00b204e9800998ecf8427e index[1].html 0a4d890dd1e2742feb92d731ca491f92 index.html 4de3c8d08c9a7f23cbc50f3eb27d87e7 index.html.3B88AAB4.javascript 46bf506fb475c4a0a076f9dcbef64085 info-static.php.html 660add2531a229a2737d4bfbc1be6bdc lgen.php[1].html ae066d41f2290374f187044acae90645 plugin_KB_47092.zip.octet-stream cd2e0e43980a00fb6a2742d3afd803b8 tds[1].html
  • 21. 21 run2 133ce3584250b4207dfaf10efd506bcc 098925327d[2].html c6ad3b0186367045e97fe4c7242cd3b5 counter.F642D356.html 8ce6129d052818bbf57026606a77350c exe1.exe e49c61dc270a8e71b8f8b63a1e977c7e fakebrower.html d41d8cd98f00b204e9800998ecf8427e index[2].html 53ee567ba9467ecf8db3a3471d9912e2 index.html.F642D356.javascript e9024365ccc09c244fcb8ae37b3f486e info-static.php[1].html 4f2f4db9459bbb467da206589e721919 info-static.php[2].html 7e4abe9d9bf32d10c792740b58f23929 lgen.php[2].html f942cd16630ec6c9fa0615758414a2e5 plugin_KB_92384.zip.octet-stream cd2e0e43980a00fb6a2742d3afd803b8 tds[2].html 해시 값을 통해 알 수 있는 부분은 0989235327d.html 과 tds.html 이 어떤 pcap파일에서도 해시 값이 같 았고, lgn.php와 info-static.php 는 공통적으로 들어가 있지만 전혀 다 른 해시값을 가지고 있었다.
  • 22. 22 경로 추적 0989235327d.html 과 tds.html이 공통적으로 해시 값이 같고, 최초로 접속하는 걸로 보이므로, 어떤 내용이 들어가 있는지 확인해 봐야 한다. 다음은, 최초 유포지(www.pichat.info/098925327d.html)의 html파일을 열어본 결과이다. 그림 5-1 | 098925327d.html 내용 http://servsedelivery.com/tds로 redirect 되어 있다. 바로 이어서 tds.html 파일의 내용이다. 상세 분석
  • 23. 23 그림 5-2 | tds.html 내용 301 코드를 보내는 걸로 보아, 이 또한 redirect로 하는 걸로 보인다. Wireshark로 어디로 redirect로 보내는지 분석해 보았다.
  • 24. 24 다음은 zip패킷에 있는 redirect 정보이다. 그림 5-3 | Wireshark로 본 zip패킷의 redirect 정보 맨 밑의 블록 표시를 한 정보를 보자면, http://statusdelivery.com/bot14/lgen.php로 redirect 하는 것을 볼 수 있었다. 이제서야 본격적으로 lgen.php의 내용을 분석할 수 있게 되었다. zip패 킷에서는 넘어갔었지만, lgen.php의 내용이 중요해 짐에 따라 상세히 분석을 해야 함을 알았다.
  • 25. 25 xplico로 source를 분석 한 결과 download and install lasted plugin version에 jgen.php로 request하는 태그임을 확인했다. 그림 5-4 | 버튼이 가리키는 URL
  • 26. 26 Wireshark로 run1패킷에서 jgen.php를 요청할 때, 어떤 응답을 받았는 지 분석해 보았다. 그림 5-5 | run1의 jgen.php 응답 결과 파란 글자를 보면 PK이라는 파일 시그니처를 탐지할 수 있었다. 이건 아까 NetworkMiner로 파일 추출할 때 얻은 zip 파일이라는 것을 추측 할 수 있었고, http://statusdelivery.com/bot14/jgen.php 이 업데이트 로 위장한 zip파일을 다운 받는 링크임을 확인했다.
  • 27. 27 다음은 Wireshark로 run2패킷을 열어 같은 요청 (http://statusdelivery.com/bot14/jgen.php)이 있었는지 확인해 보았 다. 그림 5-6 | run2의 jgen.php 응답 결과 run1과 비교해 봤을 때 KB 뒤의 일련번호와 내용이 바뀌어 있는 것을 확인 할 수 있었다.
  • 28. 28 다운받은 zip파일 분석 다음은 압축을 풀어서 run1과 run2패킷에서 받은 javascript 파일의 해시정보이다. run1에서 받은 압축 파일의 내용과 해시 정보 ids-moo@idsmoo-virtual-machine:~/Desktop/run1$ mv plugin_KB_47092.zip.octet-stream plugin_KB_47092.zip ids-moo@idsmoo-virtual-machine:~/Desktop/run1$ unzip plugin_KB_47092.zip Archive: plugin_KB_47092.zip inflating: plugin_KB_47092.js inflating: ids-moo@idsmoo-virtual-machine:~/Desktop/run1$ md5sum plugin_KB_47092.js 24a700946203e384ab53e3f9bf8ecd50 plugin_KB_47092.js run2에서 받은 압축 파일의 내용과 해시 정보 ids-moo@idsmoo-virtual-machine:~/Desktop/run2$ mv plugin_KB_92384.zip.octet-stream plugin_KB_92384.zip ids-moo@idsmoo-virtual-machine:~/Desktop/run2$ unzip plugin_KB_92384.zip Archive: plugin_KB_92384.zip inflating: plugin_KB_92384.js inflating: inflating: ids-moo@idsmoo-virtual-machine:~/Desktop/run2$ md5sum plugin_KB_92384.js bed0f772a206f5e42025b44d4db45498 plugin_KB_92384.js
  • 29. 29 다음은 이 둘의 차이점을 비교하기 위해 diff명령어를 수행한 모습이다. 압축을 푼 javascript 코드의 비교 결과 ids-moo@idsmoo-virtual-machine:~/Desktop/run2$ diff plugin_KB_92384.js ../run1/plugin_KB_47092.js 20c20 < var feni = 'WKBROT7mOoR1uNYoIuud8aAg3HJUatroCp7jgjQ207YQsqwECWhHNwNq19HNmSiz0MWTpXkr65x5lsNsc5cvGYbHs u9XJyt3wm04HDHtHevrQr79Hx1BgKihLT5rn1fB0zFj69s7fbbWbO0W1NMWtAehWhLKfWVNDtFbeqSTavd1fuUBbZ2FV Jv8ZffNY9EBff5H14dGiHTsiUmBB1F7Prp5VjtiOziEeUqljj0BPGrOc1'; --- > var feni = 'HpgGPurjqOYUiC5m7E5zI2wHXAm24wxwmggdLh9hcKGSGbppx60yndvFey7dcIfkeewV4gW9zQygkLmyIxfXuTrq4UiS cQyEMooLcCBXaC7cWRvYX1wru35AddQrO5QRwn2h'; var feni변수가 run2패킷에서는 WKB..로 시작했고 run1패킷에서는 Hpg..로 시작한 것을 확인할 수 있었다. feni빼고 변경된 점은 보이지 않았다. 결론은 두 javascript 코드는 feni만 다른 코드임을 확인할 수 있었다.
  • 30. 30 압축 푼 javascript 코드 분석 javascript코드를 열었더니 global variable은 총 7개를 사용하고 있었 고 정의 된 함수는 총 4개였다. 그림 6-1 | 압축 푼 javascript의 정보
  • 31. 31 다음 그림은 난독화된 코드를 복호화 하기 전, code가 수행하는 동작을 그림으로 표현해 봤다. 그림 6-2 | plugin_KB.js 코드 동작 개요도 해당 코드는 악성 코드를 Download server들에 요청 하고 나서, feni를 이용해 decode를 해서 그 코드를 실행하는 코드임을 확인했었다.
  • 32. 32 손으로 복호화 한 코드는 다음과 같다. 그림 6-3 | 복호화 한 코드 1 of 2 코드를 설명하자면 다음과 같다. 1: 코드를 지연하기 위해 while 문을 돌리는 것으로 보았다. uuu 변수가 저기 밖에 사용하지 않고, 필요 없는 기능 같아서 주석처리 해주었다. 2~4 , 8: 코드가 쓰는 기능은 총 3 가지이다. 악성코드를 받은 뒤(request2URL) 그것을 feni 로 복호화(decoder) 한 뒤, appendCode 로 다시 재 결합을 한다. 그리고 악성코드를 실행하는 모습(executeCommand)까지 보였다. 7: pusik 변수는 분석가가 알아보기 힘들게 난독화되어있다. 복호화 한 결과 GET 문자열과 “/” 문자를 사용함을 확인했다. 13: x 변수는 이 코드가 요청하는 다운로드 서버 리스트이다. request 에 실패하면 다음 서버에 요청한다. 29,31: 본격적으로 다운로드 서버에게 악성코드를 요청하는 장면이다. url 의 counter parameter 에 feni 를 삽입하여 요청하고 있다.
  • 33. 33 다음은 코드의 후반부 이다. 그림 6-4| 복호화 한 코드 2 of 2 코드를 설명하자면 다음과 같다. 39: 받았던 코드를 feni 를 이용해 decode 하는 장면이다. run2 와 run1 에서 받은 난독화된 javascript 코드를 풀 함수로 쓸 수 있을 듯 하다. 40: 코드를 append 하여 실제 악성코드가 strMalCode 변수에 넣는 statement 이다. 48: 만약 response 에 실패했다면, 다음 download server 에 요청하기 위해 배열의 index 값을 증가시키는 statement 이다.
  • 34. 34 난독화 된, downloader javascript 코드 분석 NetworkMiner로 run1과 run2에서 난독화된 downloader javascript 코드를 추출 할 수 있었던 것을 볼 수 있었다. 지금부터 복호화할 downloader 코드는 run1에 있는 index.html.3B88AAB4.javascript 코 드이다 대략적인 내용은 다음과 같은 모습이다. 그림 7-1 | index.html.3B88AAB4.javascript의 내용
  • 35. 35 코드가 알아보기 힘들게 난독화 되어있다. 복호화를 하기 위해 textfile 로 변경한 후 google chrome에서 열어보았다. 그림 7-2 | chrome에서 열어본 난독화된 코드 text파일을 drag & drop 하여 chrome 개발자 도구(F12)를 누르면 내용 물을 global variable로 저장할 수 있는 기능이 있다. 이를 이용해 temp1에 코드를 저장했다.
  • 36. 36 그림 7-3 | temp1에 저장 된 난독화 된 코드 temp1 은 object 타입의 변수이므로 textContent property를 이용해 text만 뽑아서 malCode 변수에 옮겼다. 그림 7-4 | text Type으로 변환하여 malCode변수에 저장한 모습
  • 37. 37 이제 malcode를 변환할 차례이다 아까 봤던 decoder함수와 appendCode 함수를 구현하고 호출하여 최종적으로 downloader 코드 를 얻었다. 그림 7-5 | 최종적으로 얻은 코드
  • 38. 38 하지만, 최종적으로 얻은 코드도 난독화 되어있어서 알아보기 힘들었다. 마지막 줄의 eval(NXmef); 함수를 지워서 전체 코드를 실행하여 난독화 를 풀었다. 그림 7-6 | 난독화가 해제된 downloader javascript 코드
  • 39. 39 코드를 다시 파일로 저장하여 vim에서 열어보았다. 그림 7-7 | downloader javascript code 코드를 설명하자면 다음과 같다. 1: ll 변수에서 실제 악성코드를 받을 수 있는 download server 리스트를 저장하고 있다. 3: %TEMP% 환경변수를 사용하는 걸로 보아 악성코드를 다운 받아서 windows 임시파일에 저장하려고 한다. 6-20: 다운받는 파일을 for 문의 n 변수를 이용하여 총 2 개 (exe1.exe , exe2.exe)를 받아서 실행하고 있는 것으로 보인다. 마찬가지로 download server 에서 파일을 못받는 다면 index(i 변수)를 증가시켜 다음 서버로 요청하는 것을 볼 수 있었다.
  • 40. 40 다운받은 악성코드(exe1.exe,exe2.exe)정보 Wireshark로 run2에서 exe1.exe과,exe2.exe파일을 요청하는 패킷을 볼 수 있다. 그림 8-1 | run2 안에서 본 exe1.exe,exe2.exe 요청 시도 패킷
  • 41. 41 하지만, NetworkMiner로 exe2.exe 패킷을 받을 수는 없었다. 자세히 확인하기 위해 HTTP flow를 확인해 보았더니 exe2.exe 요청에 대해 response를 받지 못하였다. 그림 8-2 | run2 안에서 본 exe2.exe 다운로드 시도 패킷
  • 42. 42 exe1.exe를 VirusTotal 사이트(https://www.virustotal.com/)에 접속 하여 결과를 확인해 보았더니 mole 랜섬웨어 임을 확인했다. 그림 8-3 | exe1.exe의 VirusTotal 검사 결과
  • 43. 43 그림 6-2의 아이콘 출처 Icons made by Freepik from www.flaticon.com is licensed by CC 3.0 BY Icons made by Smashicons from www.flaticon.com is licensed by CC 3.0 BY Icons made by phatplus from www.flaticon.com is licensed by CC 3.0 BY Icons made by Eucalyp from www.flaticon.com is licensed by CC 3.0 BY Icons made by Vitaly Gorbachev from www.flaticon.com is licensed by CC 3.0 BY Icons made by Gregor Cresnar from www.flaticon.com is licensed by CC 3.0 BY Icons made by srip from www.flaticon.com is licensed by CC 3.0 BY Acknowledgements