모두의 dream

HermeticWiper Malware Analysis Report 본문

분야/malware Analysis

HermeticWiper Malware Analysis Report

오리꽥이로 2022. 4. 28. 21:19
Contents 접기

공부를 하며 정리한 내용으로 잘못된 내용이 있을 수 있습니다.

x64dbg와 IDA를 이용하여 분석했습니다.

블로그에는 가독성을 위해 IDA 코드를 위주로 사진을 첨부했습니다.

Detail 포스팅: HermeticWiper Malware (Detail) (tistory.com)

 

1. 정적분석

악성코드 바이너리

Windows7 32bit 에서 분석했다. (Windows10 에서도 정상적으로 작동함)

 

virust total

이름은 HermeticWiper, 우크라이나·러시아 전쟁에서 사이버공격에 사용된 악성코드다.

HermeticRansom 이라는 랜섬웨어와 함께 사이버 공격에 사용됐다. (HermeticRansom은 복호화 프로그램이 나옴)

 

Detect It Easy

파일 유형: PE32

시간 날짜 스탬프(프로그램이 컴파일 된 시간): 2022-02-23, 러시아가 우크라이나를 침공하기 하루 전날이다.

 

악성코드 이름이 HermeticWiper인 이유는 위에 있는 사진 속 인증서 때문이다.

정상파일로 위장하기 위해서 Hermetica Digital Ltd 라는 회사에서 인증서를 발급 받았고, 서명자인 이 회사의 이름을 따서 HermeticWiper로 이름이 정해졌다고 한다.

* wiper: 운영체제가 올바르게 작동하지 않도록 기기의 데이터를 의도적으로 파괴하고 복구할 수 없도록 만드는 악성코드.

 

2. 동적 분석

Process Explorer

관리자 권한으로 실행했을 때만 악성행위가 진행되는 것을 확인했다.

 

process monitor & Unable to run OS 

process monitor 로 확인해본 결과 폴더들에 접근하면서 어떤 행동을 하고 있음을 확인했다.

화면상으로는 아무 반응이 없었고, 정말 오랬동안 켜놓고 있으면 블루스크린이 뜨고 재부팅을 하면 OS를 실행하지 못한다. (모든 행동이 끝나도 실행한 악성코드 바이너리는 프로세스에 계속 남아있다.)

 

3. 디버깅

디버깅을 진행해본 결과 크게 3 구간으로 나눌 수 있었다.

(1) 윈도우 프로그램 권한 상승

(2) 드라이버 설치

(3) 물리 디스크 변조 (파괴)

 

(1) 윈도우 프로그램 권한 상승

EntryPoint가 프로그램의 main 함수인 것 같았고, 바로 바이너리의 권한을 상승시키는 코드가 나왔다.

1. GetcurrentProcess를 이용해서 이 프로세스의 핸들값을 가져온다.

2. OpenProcessToken을 이용해서 이 프로세스에 Access Token이 있는지 확인하고 가져온다.

3. LookupPrivilegeValue를 통해 Accesses Token 속에 SeShutdownPrivilege, SeBackupPrivilege 권한이 있는지 확인한다.

4. 두 권한이 모두 있다면 AdjustTokenPrivileges를 이용하여 두 권한을 활성화 시킨다.

 

* SeShutdownPrivilege: 컴퓨터 종료 권한, SeBackupPrivilege: 시스템의 모든 파일을 자유롭게 읽고 쓸 수 있음. (권한 무시)

 

참고: 윈도우 권한 (Windows privilege) (tistory.com)

 

 

여기서 SeBackupPrivilege 권한은 텍스트로 바로 보였지만 SeShutdownPrivilege 권한은 텍스트로 보이지 않는 상태였다.

이 부분에 대한 해답은 아래 코드에 있었다.

GetModulFileNameW 와 FindFirstFileW을 통해 아래와 같이 파일의 정보를 가져온다.

가져온 파일 정보 중, 파일의 이름 가장 첫번째 단어만 가져와서 CharLowerW 를 이용하여 소문자로 바꿔준다.

 

그리고 파일명이 소문자 c로 시작하면 그 값을 이용하여 SeShutdownPrivilege 문자열이 저장되어 있는 곳으로 이동을 하게 되고 아래 사진처럼 비워져 있는 값을 77 00 6E, 50 00 72 값으로 채워주게 된다.

문자열 채우기 전
문자열 채운 후

만약 실행파일명이 hello일 경우 (다른 값) 아래 사진처럼 엉뚱한 곳에 77 00 6E, 50 00 72 값이 채워진다.

 

(2) 드라이버 설치

드라이버: 하드웨어와 운영체제 사이 통로 역할을 함.

이 

드라이버를 설치하는 코드들이 작성되어 있는 함수이고, 드라이버 설치에 실패하면 ExitProcess() 로 인해 종료된다.

 

kernel32.dll에서 Wow64DisableWow64FsRedirection, Wow64ReverWow64FsRedirection, IsWow64Process 함수를 가져온다. 그리고 IsWow64Process를 이용해서 공격대상 윈도우의 시스템 종류(32bit, 64bit)가 무엇인지 확인한다.

 

Wow64DisableWow64FsRedirection은 64bit 환경일 경우 WOW64 폴더로 리다이렉션 되는 기능을 비활성화 해준다.

(프로그램이 드라이버를 WOW64가 아닌 system32 폴더에 복사한다.)

 

위에서 윈도우 시스템 종류를 확인했다면, 그에 맞는 드라이버를 불러온다.

 

DRV_X86

드라이버의 구조는 위와 같고, SZDD 형식으로 압축되어 있다.

 

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CrashControl 레지스트리의 CrashDumpEnabled 값을 0으로 바꿔준다. (CrashDumpEnabled: 블루스크린과 같이 컴퓨터가 예기치 않게 중지될 경우 디버깅 정보를 다른 파일 형식(메모리 덤프 파일)에 기록해주는 역할)

 

악성코드가 실행된 후 발생하는 로그들을 남기지 않기 위해서 하는 작업인 것 같다.

 

"\\\\.\\EPMNTDRV\\0" 문자열이 sub_401870 함수에 인자로 전달된다. (심볼릭 링크를 이용하여 드라이버 접근)

sub_401870 함수 내부에서는 CreateFileW를 이용해서 EPMNTDRV 라는 이름의 드라이버가 있는지 없는지 확인하게 된다. (아래는 드라이버가 없을 경우의 과정이고, 드라이버가 있다면 아래와 다른 별도의 과정을 거친다)

 

EPMNTDRV: EaseUs Partition Master, 파티션과 디스크 관리를 위한 드라이버.

드라이버 자체가 악성행위를 하는게 아닌, 정상적인 드라이버를 악용하는 행위라고 볼 수 있다.

 

드라이버가 없다면 설치를 하는 과정이 시작된다.

위 코드는 소문자 a~z까지 랜덤으로 2개를 뽑아 앞에 2글자 + dr 이라는 2글자를 합쳐서 파일의 이름을 결정하는 과정이다.

 

파일의 이름을 결정했다면 공격대상 컴퓨터로 드라이버를 복사한다.

 

위에서 만든 임시 드라이버 파일을 sys 확장자를 붙인 새로운 파일로 복사하고 압축을 푸는 과정을 진행한다.

그럼 아래와 같이 압축이 풀리게 된다.

 

복사한 드라이버를 프로세스에 로드하는 과정이 진행된다. (SeLoadDriverPrivilege: 장치 드라이버 로드 및 언로드)

 

프로세스에 로드를 하기 위해서 윈도우의 서비스에 등록을 하게 된다. (레지스트리에 등록)

CreateServiceW, StartServiceW 등등을 이용함.

 

그리고 등록했던 레지스트리의 값과 공격대상 시스템에 복사한 드라이버 파일을 삭제한다.

RegDeleteKeyW를 이용해서 레지스트리의 값을 삭제하는데 실행한 후에 확인했을 땐 삭제되지 않았다. (이유를 잘 모르겠다.)

 

vss 라는 서비스를 실행하지 못하도록 하는 코드이다. (ChangeServiceConfigW: SERVICE_DISABLED)
vss 서비스는 백업을 할 때 사용하는 서비스로, 실행하지 못하도록 해서 복구를 막기 위해 사용하는 것 같다.

 

(3) 물리 디스크 변조 (파괴)

이 부분은 분석에 어려움을 겪어 분석하지 못했다.

물리 디스크 변조 부분이다.

 

 

 

# 분석 후 아쉬운 점

- 완전 쌩으로 분석을 해보지는 못했고, 중간중간 이미 나와있는 보고서들을 참고하며 분석했다.

 

'분야 > malware Analysis' 카테고리의 다른 글

Onyx Ransomware Analysis Report  (0) 2022.05.09
HermeticWiper Malware (Detail)  (0) 2022.04.22
Comments