본문 바로가기

악성코드 분석

Wannacry 랜섬웨어 분석

반응형

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차 분석 마무리...! 추가 분석은 두번째 포스팅에서 진행)

반응형

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