<commit_before>---
layout: post
cover: 'assets/images/cover6.jpg'
title:  워너크라이 분석
date:   2017-05-22 23:35:01
tags: fiction
subclass: 'post tag-fiction'
categories: 'pjya0321'
navigation: True
logo: 'assets/images/ghost.png'
---


## 워너크라이 분석
-----

![1](assets/postimage/w1.png)

단순한구조로 되어있습니다. 004078E9 함수에서 워너크라이의 모든 동작들이 실행되고, 004078F2에서 끝납니다. 함수내부를 살펴보겠습니다.

![2](assets/postimage/w2.png)
![3](assets/postimage/w3.png)

####004020BB  
현재 침투한 파일의 현재 실행 경로를 반환합니다.  
그리고 현재 프로세스의 디렉토리를 변경합니다.  

![4](assets/postimage/w4.png)

####004020C3  
Software/WanaCrypt0r (아마 HKLM에) 경로에 레지스트리 키를 새로 생성하고 설정 하는 것을 확인했습니다. 따라서 해당경로에 VSE,ENS 액세스 보호 규칙을 사용하면, WNCRYT, .WNCRY 및 / 또는 .WCRY 확장자를 포함하는 암호화 루틴을 방지할 수 있습니다.( McAfree 참고)  

![5](assets/postimage/w5.png)

####004020D0  
지정한 디렉토리 내부에 (본 환경에선 바탕화면의 악성코드 폴더) 기본적인 동작에 필요한 파일들을 설치합니다. 아직 @WananaCry@파일은 생성되지 않습니다. 최종 감염되면 모든 폴더에 악성 파일들이 생성되는데 현 단계에서는 워너크라이가 존재하는 폴더에만 설치합니다.

![6](assets/postimage/w6.png)

00401E82함수 내부확인 모습입니다. memcpy, strcpy함수와 파일 생성/작성 을 실행하고 있습니다. 

![7](assets/postimage/w7.png)

####0040205  
비트코인 주소가 있는 부분입니다. 00401EC5함수는 c.wnry파일을 읽습니다. C.wnry파일은 위에서 생성하는 파일들중 가장 먼저 생성된 파일인데, 문자열을 살펴보니 비트코인 결제를 위한 딥웹인 토르 브라우저와 onion사이트와 연결관련 파일로 추정됩니다.

![8](assets/postimage/w8.png)
![9](assets/postimage/w9.png)


![10](assets/postimage/w10.png)

####004020E1  
새로운 프로세스를 생성합니다. 커맨드 라인이 attrib  +h 인데 attrib의 파일특성 설정 기능중 숨김 설정인 +h로 판단됩니다. 워너크라이를 실행 시키면, 악성파일이 최초 침투한 디렉토리는 숨김으로 설정이 바뀌는데, 그러한 행동을 하기위한 프로세스로 추정됩니다.

![11](assets/postimage/w11.png)

####004020ED  
마찬가지로 새로운 프로세스를 생성하고. Icacls * /grant Everyone:F /T /C /Q 커맨드를 실행합니다.  
액세스 권한을 얻기 위한 커맨드입니다. Full access 하면서, T: 현 디렉토리+하위 디렉토리 모두 조작하고, C: 오류 또한 무시합니다. 그리고 Q: 성공 메시지는 출력하지않습니다.

![12](assets/postimage/w12.png)

####004020F5  
여기가 애매함. Iertuil.dll 관련 모듈 사용??

![13](assets/postimage/w13.png)

함수 내부로 더 진입하다 보면 CryptoAPI들이 보입니다. CSP호출하고 BLOB암호화를 전송하는데 어차피 암호화 되어있을 부분이라 자세히 확인하지는 않았습니다. CryptDestroyKey 함수전에  CryptExportKey 함수를 이용해서 패치하면  CSP내부 키값 을 알아낼 수 있을거 같습니다.

![14](assets/postimage/w14.png)

####주석  
전체적으로 정리하면 이런 형태로 진행됩니다.
마지막에 “TaskStart” 문자열을 비교하여 진행되고, 콜백하면서  감염이 됩니다.
<commit_msg>내용 약간수정<commit_after>---
layout: post
cover: 'assets/images/cover6.jpg'
title:  워너크라이 분석
date:   2017-05-22 23:35:01
tags: fiction
subclass: 'post tag-fiction'
categories: 'pjya0321'
navigation: True
logo: 'assets/images/ghost.png'
---


## 워너크라이 분석
-----

![1](assets/postimage/w1.png)

단순한구조로 되어있습니다. 004078E9 함수에서 워너크라이의 모든 동작들이 실행되고, 004078F2에서 끝이 납니다. 004078E9 함수 내부를 살펴보겠습니다.

![2](assets/postimage/w2.png)
![3](assets/postimage/w3.png)

#### 004020BB  
현재 침투한 파일의 현재 실행 경로를 반환합니다.  
그리고 현재 프로세스의 디렉토리를 변경합니다.  

![4](assets/postimage/w4.png)

#### 004020C3  
Software/WanaCrypt0r (아마 HKLM에) 경로에 레지스트리 키를 새로 생성하고 설정 하는 것을 확인했습니다. 따라서 해당경로에 VSE,ENS 액세스 보호 규칙을 사용하면, WNCRYT, .WNCRY 및 / 또는 .WCRY 확장자를 포함하는 암호화 루틴을 방지할 수 있습니다.( McAfree 참고)  

![5](assets/postimage/w5.png)

#### 004020D0  
지정한 디렉토리 내부에 (본 환경에선 바탕화면의 악성코드 폴더) 기본적인 동작에 필요한 파일들을 설치합니다. 아직 @WananaCry@파일은 생성되지 않습니다. 최종 감염되면 모든 폴더에 악성 파일들이 생성되는데 현 단계에서는 워너크라이가 존재하는 폴더에만 설치합니다.

![6](assets/postimage/w6.png)

00401E82함수 내부확인 모습입니다. memcpy, strcpy함수와 파일 생성/작성 을 실행하고 있습니다. 

![7](assets/postimage/w7.png)

#### 0040205  
비트코인 주소가 있는 부분입니다. 00401EC5함수는 C.wnry파일을 읽습니다. C.wnry파일은 위에서 생성하는 파일들중 가장 먼저 생성된 파일인데, 문자열을 살펴보니 비트코인 결제를 위한 딥웹인 토르, onion 연결관련 파일로 추정됩니다.

![8](assets/postimage/w8.png)
![9](assets/postimage/w9.png)


![10](assets/postimage/w10.png)

#### 004020E1  
새로운 프로세스를 생성합니다. 커맨드 라인이 attrib  +h 인데 attrib의 파일특성 설정 기능중 숨김 설정인 +h로 판단됩니다. 워너크라이를 실행 시키면, 악성파일이 최초 침투한 디렉토리는 숨김으로 설정이 바뀌는데, 그러한 행동을 하기위한 프로세스로 추정됩니다.

![11](assets/postimage/w11.png)

#### 004020ED  
마찬가지로 새로운 프로세스를 생성하고. Icacls * /grant Everyone:F /T /C /Q 커맨드를 실행합니다.  
액세스 권한을 얻기 위한 커맨드입니다. Full access 하면서, T: 현 디렉토리+하위 디렉토리 모두 조작하고, C: 오류 또한 무시합니다. 그리고 Q: 성공 메시지는 출력하지않습니다.

![12](assets/postimage/w12.png)

#### 004020F5  
Iertuil.dll 관련 모듈을 사용하는 것으로 추정됩니다. 다른 멀웨어들의 사례로 봤을 때 iertutil.dll 인 것 처럼 위장하기 위한 행동으로 판단됩니다.

![13](assets/postimage/w13.png)

함수 내부로 더 진입하다 보면 CryptoAPI들이 보입니다. CSP호출하고 BLOB암호화를 전송하는데 어차피 암호화 되어있을 부분이라 자세히 확인하지는 않았습니다. CryptDestroyKey 함수전에  CryptExportKey 함수를 이용해서 패치하면  CSP내부 키값 을 알아낼 수 있을거 같습니다.

![14](assets/postimage/w14.png)

#### 주석  
전체적으로 정리하면 이런 형태로 진행됩니다.
마지막에 “TaskStart” 문자열을 비교하여 진행되고, 콜백하면서  감염이 됩니다.

{'fraction_non_alphanumeric': 0.12105018587360594, 'fraction_numerical': 0.06296468401486989, 'mean_word_length': 3.6340150699677074, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3685978', 'n_tokens_mistral': 3368, 'n_tokens_neox': 4196, 'n_words': 586}