본문 바로가기

악성코드 분석

Wannacry 랜섬웨어 분석 1

반응형

Wannacry ransomeware Analysis

 
Wannacry는 2017년에 등장한 랜섬웨어로 30만대 이상의 컴퓨터를 감염시켰으며
북한의 라자루스(Lazarus)가 배후에 있다고 보고 있다.
랜섬웨어가 빠르게 퍼진 이유는 SMB v1 프로토콜 내 취약점 공격하는 EternalBlue가 활용되었기 때문인데...!
 
해당 랜섬웨어가 어떻게 동작하는지 지금부터 하나씩 분석해보려 한다. 
랜섬웨어 분석은 사실 처음이라 부족할 수 있지만, 악성코드나 랜섬웨어 분석이 처음이신 분들한테도
작은 도움이 될 수 있었으면 하는 바램으로 작성해본다.
그럼 지금부터 시작해보자...!
 
 
 

분석도구: IDA, PEview, OllyDbg

 

 

Wannacry 랜섬웨어 분석을 위해 IDA와 OllyDbg를 사용하여 프로그램 시작점을 확인해보자.
Wannacry를 실행하고 GetStartupInfoA, GetModuleHandleA API를 호출하는 것을 확인할 수 있다.
그리고 4078E9에서 함수 호출을 실행하면...!
 

 

 

 

다음과 같이 비트코인 주소를 보여줌과 동시에 내부 파일들이 암호화된 것을 확인할 수 있다.
스냅샷을 찍어뒀으니 다시 실행 이전으로 돌아가자
 
 

 

IDA로 확인해보면 4078E9 주소에서 WinMain@16를 호출하는 것을 볼 수 있다.
아까 해당 함수 호출을 통해 랜섬웨어가 동작했기 때문에 해당 함수로 진입하여 내부 동작을 확인해볼 수 있다.
함수 내부로 진입해보자.
 
 



함수 내부 진입 시 GetModuleFileNameA API를 사용하는 것을 확인했다.
파일이 위치하는 내부 경로와 이름을 파악하기 위해 PathBuffer의 위치를 확인해보면 
현재 Wannacry 실행파일이 위치한 절대경로 정보가 저장되어있는 것을 확인할 수 있다.
 
 

 

 

이후 subroutine 401225 위치로 진입 시 GetComputerNameW API를 통해 해당 컴퓨터의 이름을 수집하고
rand 함수를 통해 특정 문자를 생성한다.
 
 

 

 

 
 
subroutine 401225에서는 이렇게 컴퓨터 이름과 암호문을 생성하는 분기임을 알 수 있다.

 
 

 

생성된 암호문

 
 
subroutine 401225에서 나온 뒤 다음 호출된 subroutine 4010FD로 진입한다.
해당 subroutine에서는 레지스트리키를 생성하고 값을 설정하는 분기인 것을 알 수 있다.
 

 

 

해당 subroutine에 진입하여 확인해보니 HKLM 레지스트리 키에 
Software\\WanaCrypt0r 라는 레지스트리 키를 생성하는 것을 볼 수 있다. 

이렇게 하위 루트 키로 구성된 구조를 하이브(HIVE) 라고 한다.

 

 

regedit으로 레지스트리 편집기에서 확인해보니 위와 같은 이름으로 레지스트리 키가 생성된 것을 볼 수 있다.

 

 

HKLM은 윈도우 레지스트리 루트 키 중 하나로 시스템 전체에 해당하는 컴퓨터 구성 정보가 포함되어 있으며

하드웨어, 소프트웨어의 설정 정보 등이 저장되어있어 윈도우 레지스트리 루트 키 중 가장 중요한 키라고 볼 수 있다.

위의 동작을 통해 랜섬웨어가 시스템 전체에 영향을 줄 수 있음을 유추할 수 있다.

 

 

이제 다음 분기로 넘어갈 때 특정 암호문을 볼 수 있는데 해당 암호문은

Wannacry 실행 파일의 압축을 해제할 때 필요하다.

40F52C에서 ESP로 해당 값을 이동

 

해당 메모리에 저장되어있는 암호문

 

 

 

Wannacry.exe 파일을 압축해제를 시도하면 다음과 같이 암호문을 입력하도록 구성되어있다.

암호문이 일치하지 않으면 Wannacry.exe 파일 내부에 압축된 파일들을 확인할 수 없다.

위의 암호문을 입력하여 압축을 해제해보자

 

파일 압축해제 시도

 

압축 해제 후 생성된 wannacry 폴더


 

이제 내부 폴더에 저장된 파일들을 보면 다음과 같이 구성되어 있다.

 

- b.wnry : 복호화 안내 이미지 파일

- c.wnry : .onion 비트코인 접속 주소리스트

- r.wnry : 결제 안내 파일

- s.wnry : 윈도우 토르 실행관련 압축 파일 

 

- taskdl.exe : 드리이브 정보와 특정 파일을 찾는 프로세스

- taskse.exe : 활성화된 사용자 세션과 윈도우 계정 ID정보 관련 프로세스 

- u.wnry : 복호화 안내 UI 프로세스

 

압축 해제 후 확인된 파일들

 

 

해당 파일들 중 몇가지 파일들에 대한 내부 구조가 궁금하여 PEview로 내부 정보들을 확인해보았다.

 

- c.wnry : .onion 비트코인 접속 주소리스트

 

 

 

 

- taskdl.exe : 드리이브 정보와 특정 파일을 찾는 프로세스

 

 

 

- taskse.exe : 활성화된 사용자 세션과 윈도우 계정 ID정보 관련 프로세스 

 

taskdl.exe 파일과 taskse.exe 파일 내부에 호출된 API 중 Sleep 함수가 포함되어 있음을 알 수 있다.

이제 해당 실행 파일들이 어떻게 동작하고 실행되는지 다시 OllyDbg와 IDA로 돌아가서 확인해보자

 

(1차 분석 마무리...! 추가 분석은 두번째 포스팅에서 진행)

반응형

'악성코드 분석' 카테고리의 다른 글

GINA intercept 악성코드 분석  (0) 2023.04.08
RAT 공격 정리  (0) 2023.04.06
kernel32.dll vs kernel132.dll (feat. 악의적인 program)  (0) 2023.01.19
DoS 공격분석 (feat. IDA)  (0) 2023.01.14
LAB1-2 (악성코드분석)  (1) 2023.01.12