Reverse engineering

vohuk ransomware

LeeIkGyu 2022. 12. 27. 11:29

분석 개요

2022년 하반기에 발견된 새로운 랜섬웨어로 분석가들이 이미 세 번째 버전이 등장한 상태라고 하며, 즉 랜섬웨어 개발자가 진지하게 랜섬웨어 향상과 업그레이드를 진행하고 있다고 볼 수 있다.

 

Vohuk 랜섬웨어 감염 화면

 

Vohuk 랜섬웨어는 여타 다른 랜섬웨어와 같이 Windows 시스템을 대상으로 확산하고 있다. 또한, README.txt라는 파일에 협박 편지를 남겨두고 이메일을 통해 협상을 진행하는 것으로 확인됐다. 그리고 악성 행위에 대한 로그를 남긴다.

 

파일 정보

구분 vohuk
Type exe 실행 파일
Behavior ransomware
MD5 428e2d6500b98a6059153e4a99bee22c
Description Vohuk Ransomware V1.3

 

동작 과정

Vohuk 동작과정

 

상세 분석

 

Vohuk 랜섬웨어는 안티 디버깅 기법을 사용하여 분석을 어렵게 하고, 중복실행 방지를 위한 뮤텍스를 생성한다.

PEB 구조체 확인
뮤텍스 생성

 

악성 행위에 필요한 파일이나 악성 행위에 대한 로그를 기록하는 파일들을 저장하기 위해 폴더를 생성한다.

폴더 생성

 

악성 행위에 대한 로그를 기록하기 위해 LOG.txt 파일을 생성한다.

LOG.txt 생성

 

SeDebugPrivilege 권한을 획득하여 권한을 상승하거나 파일을 생성·수정하는 등의 API 호출하는데 보안의 문제가 없도록 한다.

권한 획득 함수
권환 획득

 

Vohuk 랜섬웨어는 원활한 악성 행위를 위해 권한을 상승한다. 또한, 운영체제의 주 버전과 부 버전을 탈취하여 Windows 2000, Windows XP, Windows Serever 2003, Windows Server 2003 R2 이상이면 winlogon.exe 권한을 가져온다.

explorer.exe를 찾음
권한 상승
운영체제 버전 탈취
winlogon.exe를 찾음
권한 상승

 

자기 자신을 복제하여 시스템이 부팅될 때마다 자동으로 실행되게끔 레지스트리에 등록한다.

자가복제
파일 복사
레지스트리 열기
레지스트리 등록

 

사용자의 윈도우 정보. 세션ID, 메모리 정보 등을 가져와 INF.txt라는 파일에 작성

사용자 시스템 정보 탈취 로직 1
사용자 시스템 정보 탈취 로직 2
INF.txt 생성
INF.txt 작성
파일에 작성되는 명 의미
WinVer 윈도우 버전
SessionID SID
MEM 메모리 용량
NumberOfProcessors 프로세스 갯수
ThreadsCount 쓰레드 갯수
IsServer 서버 유무
InDomain 도메인 유무
IsPDC 분산 컴퓨터 유무
SSE2 SSE2 명령어 지원 유무
AVX2 AVX2 지원 유무
UserName 로그인한 유저명
NETBIOS 컴퓨터 이름
UID User ID

 

Recyclebin 경로를 확인하여 휴지통에 들어있는 불필요한 자료들을 삭제한다.

휴지통 자료 삭제

 

복구를 어렵게하기 위해 WQL 명령어를 통해 COM Instance를 사용하여 VolumeShadowsCopy를 삭제한다.

VolumeShadowCopy 확인
VolumeShadowCopy 삭제

 

랜섬웨어의 동작에 방해가 되는 서비스 활동을 중지한다.

특정 서비스 종료 루틴
vss VolumeShadowCopy 관련 서비스
sql SQL 관련 서비스
svc$ SVSVC 등 암호화에 방해가 되는 서비스
memtas Mail 관련 서비스
mepocs Mail 관련 서비스
sophos Sophos 보안 소프트웨어 관련 서비스
veeam Veeam Backup Solution 관련 서비스
backup Backup 관련 서비스
msexchange Mail 관련 서비스
MSSQL SQL 관련 서비스

 

숨겨진 드라이브까지 암호화하기 위해서 모든 드라이브를 찾아서 마운트한다.

사용 가능한 드라이브를 찾음
볼륨 마운트

 

파일 암호화를 병렬화하기 위해 비동기 I/O Port를 생성하고 파일을 암호화할 때 문제가 생기지 않기 하기 위해 최대 절전 모드로 전환되는 것을 중지한다.

비동기 I/O Port 생성

 

파일 암호화하는 함수 쓰레드 16개를 생성한다.

쓰레드 생성 1
쓰레드 생성 2

 

Vohuk 랜섬웨어는 README.txt의 텍스트 파일 형태로 금전요구 및 지불 방식에 대한 설명문을 남기게 된다. 또한, 디렉토리 화이트 리스트 문자열을 통해 화이트 리스트에 해당하는 문자열이면 암호화 대상 디렉토리에서 제외하고 그렇지 않으면 암호화 대상 디렉토리이다.

랜섬노트 생성 디렉토리 결정
랜섬노트 생성
생성된 랜섬노트
Windows $Windows.~bt
$windows.~ws windows.old
windows nt application data
AppData All Users
Public Boot
Intel ProgramData
PerfLogs System Volume Information
MSOCache $RECYCLE.BIN
Default Config.Msi
tor browser msbuild
internet explorer common files
microsoft.net microsoft
windows defender windowsapps
windowspowershell windows security
windows photo viewer Google
mozilla  

 

확장자 및 파일명 화이트 리스트 문자열을 통해 화이트 리스트에 해당하는 문자열이면 암호화 대상 파일에서 제외하고 그렇지 않으면 암호화 대상 파일이다.

파일 탐색 및 확장자 화이트 리스트 검사
.dll .exe .sys
.efi .drv .msi
.lnk .reg .hta
.Vohuk .ico  
파일 화이트 리스트 검사
ntldr ntuser.dat
bootsect.bak ntuser.dat.log
autorun.inf thumbs.db
iconcache.db bootfont.bin
boot.ini desktop.ini
ntuser.ini bootmgr
BOOTNXT README.txt

 

암호화 대상 파일명을 [랜덤].Vohuk으로 변경한다.

암호화 대상 파일명 변경
파일명 변경

 

BCryptGenRandom 함수로 암호화 키를 생성하고 Make_key 함수들을 통해 연산 후 다시 한번 암호화 키 연산을 거친 후 파일 암호화에 사용된다.

암호화 키 생성 로직
랜덤 키 생성 로직
생성된 암호화 키
암호화 키 연산 로직
최종 암호화 키

 

파일을 암호화하기 전 파일의 크기를 확인하여 10MB 이상이면 다시 한번 확장자 화이트 리스트를 검사하고 암호화 키값 연산을 진행한 후에 암호화 함수를 수행하여 부분적으로 파일이 암호화된다. 파일의 크기가 10MB 미만이면 바로 암호화 함수를 통해 파일이 전체가 암호화된다. 또한, 파일의 첫 200byte는 xor 연산으로 암호화된다.

파일 크기 검사 로직
200byte 암호화 로직
암호화 로직
암호화 로직 중 일부
.4dd .4dl .dcx .exb .icr
.accdc .accde .accdr .ddl .mdt
.accdt .accft .adb .dlis .fdb
.ade .adf .adp .dp1 .fic
.arc .ora .alf .dqy .fmp
.ask .btr .bdf .dsk .fmp12
.cat .cdb .ckp .dsn .fmpsl
.cma .cpd .dacpac .dtsx .fol
.dad .dadiagrams .daschema .dxl .fp3
.frm .gdb .grdb .gwi .hdb
.his .ib .idb .ihx .itdb
.db .db-shm .db-wal .eco .fp4
.db3 .dbc .dbf .ecx .fp5
.dbs .dbt .dbv .edb .fp7
.dbx .dcb .dct .epim .fpt
.itdb .itw .jet .jtx .kdb
.kexi .kexic .kexis .lgc .lwx
.maf .maq .mar .mas .mav
.mdb .mdf .mpd .mrg .mud
.mwb .myd .ndf .nnt .nrmlib
.ns2 .ns3 .ns4 .nsf .nv
.nv2 .nwdb .nyf .odb .oqy
.orx .owc .p96 .p97 .pan
.pdm .pnz .qry .qvd .rbf
.rctd .rodx .rpd .rsd .sas7bdat
.sbf .scx .sdb .sdc .sdf
.sis .spq .sql .sqlite .sqlite3
.sqlitedb .te .temx .tmd .tps
.trc .trm .udb .udl .usr
.v12 .vis .vpd .vvv .wdb
.wmdb .wrk .xdb .xld .xmlff
.abcddb .abs .abx .accdw  
.db2 .fm5 .hjt .icg  
.kdb .lut .maw .fcd  
.ibd .accdb .mdn .adn  

 

Recyclebin 경로를 확인하여 휴지통에 들어있는 불필요한 자료들을 삭제한다.

휴지통 자료 삭제

 

복구를 어렵게하기 위해 WQL 명령어를 통해 COM Instance를 사용하여 VolumeShadowsCopy를 삭제한다.

VolumeShadowCopy 확인
VolumeShadowCopy 삭제

 

악성 행위에 대한 흔적을 지우기 위해 이벤트 로그를 재설정하여 이벤트 로그를 삭제한다.

cmd 명령어
cmd 실행
이벤트 로그 재설정 명령어
cmd.exe /c for /F \"tokens=*\" %1 in ('wevtutil.exe el') DO wevtutil.exe cl \"%1\"

 

ICON.ico 파일을 생성하고 .Vohuk의 레지스트리 키에 데이터를 넣어 해당 확장자를 가지고 있는 파일들의 ico를 변경한다.

ICON.ico 생성
ICON.ico 작성
레지스트리키 등록
ico가 변경된 암호화된 파일

 

Vohuk 랜섬웨어는 바탕화면을 변경하기 위해 자체로 제작하여 변경한다.

bmp 제작
WALL.bmp 생성
WALL.bmp 작성
바탕화면 변경
변경된 바탕화

 

사용자가 PC를 부팅할 때 마다 Vohuk 랜섬웨어에 감염되었다는 협박메시지를 남기기 위해 윈도우 부팅 메시지를 생성

부팅 메시지
메시지 제목 레지스트리에 등록
메시지 내용 레지스트리에 등록
생성된 부팅 메시지

 

자가복제 파일을 삭제하고 부팅될때 마다 자동으로 실행하게 등록해 놓은 레지스트리도 삭제한다.

APP.exe 삭제
등록한 레지스트리 삭제

 

마지막으로 자가삭제를 하고 프로그램을 종료한다.

cmd 명령어
cmd 실행
자가삭제 명령어
cmd.exe /c ping 127.0.0.1 -n 3 > Nul & del %ls

 

자가복제 파일을 제외한 악성 행위에 사용된 파일들은 프로그램이 종료되어도 삭제되지 않고 그대로 남아있으며 LOG.txt에는 악성 행위에 대한 기록이 남아있는 것을 볼 수 있다.

악성 행위 종료 후 남은 파일
LOG.txt 파일

Uploaded by

N2T