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 실행 파일의 압축을 해제할 때 필요하다.


Wannacry.exe 파일을 압축해제를 시도하면 다음과 같이 암호문을 입력하도록 구성되어있다.
암호문이 일치하지 않으면 Wannacry.exe 파일 내부에 압축된 파일들을 확인할 수 없다.
위의 암호문을 입력하여 압축을 해제해보자


이제 내부 폴더에 저장된 파일들을 보면 다음과 같이 구성되어 있다.
- 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 |