상세 컨텐츠

본문 제목

Trojan.Ransom.Sodinokibi 악성코드 분석 보고서

악성코드 분석 리포트

by 알약(Alyac) 2019. 5. 21. 10:23

본문


안녕하세요? 이스트시큐리티입니다.


최근 신종 ‘Sodinokibi’ 랜섬웨어가 발견되었습니다. 이번에 발견된 악성코드는 난독화된 자바스크립트가 Powershell을 실행하고 디코딩을 한 후 최종적으로 정상 프로세스에 랜섬웨어 파일을 주입하여 실행하는 형태입니다. 또한 로컬 시스템만 감염 시키는 것이 아니라 로컬과 연결된 네트워크 드라이브에 대해서도 암호화를 시도하고, C&C 서버에 사용자 정보를 전송합니다. 지속적인 변종이 등장할 가능성이 높은 만큼 사용자의 주의가 필요합니다. 


따라서, 본 보고서에서는 Sodinokibi 랜섬웨어를 상세 분석하고자 합니다.


악성코드 상세 분석


1. 랜섬웨어 드로퍼

이 악성코드는 여러 중간 과정을 통해 최종 랜섬웨어 PE파일을 드롭합니다. 이 과정은 자바스크립트 실행, 파워쉘 스크립트 실행, 난독화 PE 실행 순으로 진행됩니다.


난독화된 자바 스크립트 코드는 아래와 같이 문자를 리스트화하여 인덱스를 이용한 산술 계산을 진행합니다. 복호화 된 코드는 파워쉘 스크립트를 실행합니다. 이때 생성된 파워쉘 스크립트 또한 난독화되어 있습니다.


[그림 1] 자바스크립트 코드 일부


[그림 2] 난독화된 파워쉘 스크립트 코드


base64로 인코딩되어 있어 있는 파워쉘 스크립트를 디코딩하면 .NET 으로 빌드한 PE파일이나 파일 형태로 저장하여 실행하지 않고 [Reflection.Assembly]::Load를 이용하여 파일을 읽어 현재 스크립트에Install1을 실행합니다.

 

[그림 3] 디코딩된 파워쉘 스크립트


Install1에는 base64로 인코딩된 PE파일이 존재하며 이를 디코딩하고 실행합니다.


[그림 4] 인코딩된 PE 파일


해당 파일은 델파이로 빌드되었으며, HELP리소스에 존재하는 0x7b xor인코딩된 PE파일을 숨기고 있습니다.

 

[그림 5] HELP리소스에 존재하는 인코딩된 PE파일


디코딩된 파일은 특정 백신의 존재를 확인하고 20분간 지연했다가, autoup.exe라는 이름의 정상 프로세스에 악성 파일을 주입하여 실행합니다.

 

[그림 6] 프로세스 인젝션 코드

  

2.1. 중복 실행 방지 

중복 실행을 방지하기 위해 뮤텍스를 사용합니다. 뮤텍스의 이름은 “Global\3555A3D6-37B3-0919-F7BE-F3AAB5B6644A” 이고, 만약 뮤텍스가 중복되어 있으면 프로세스를 종료합니다.

 

[그림 7] 중복 실행 방지 코드


2.2 프로세스 종료 

현재 실행 중인 프로세스 이름을 검색하여 ‘mysql.exe’ 프로세스가 실행 중일 경우 해당 프로세스를 종료합니다


[그림 8] 특정 프로세스 종료 코드

 

2.3 시스템 복원 기능 무력화

vssadmin.exe 프로세스 명령어를 통해 시스템 복원 파일인 볼륨 섀도우 복사본을 삭제합니다. 이를 통해 감염된 시스템의 복원 기능이 무력화 됩니다.  실행 코드는 다음과 같습니다. 

 

"C:\Windows\System32\cmd.exe" /c vssadmin.exe Delete Shadows /All /Quiet & bcdedit /set {default} recoveryenabled No & bcdedit /set {default} bootstatuspolicy ignoreallfailures

[ 1] 볼륨 섀도우 삭제 코드


2.4 사용자 정보 전송

감염PC로부터 OS정보, ComputerName, 그룹 정보, 언어 정보, 암호화에 사용된 키 정보 등을 탈취 및 레지스트리에 저장합니다. 해당 정보들은 ‘HKEY_LOCAL_MACHINE\SOFTWARE\recfg’로 저장되어 이후 C&C서버로 전송됩니다.


[그림 9] 감염 PC 정보


이때 사용되는 도메인은 총 1079개로 이중 임의로 접속을 시도합니다. 접속 URL은 다음의 경로 중 임의로 택하는 특정 규칙을 가집니다


하위경로 1

하위경로 2

"wp-content";

"static";

"content";

"include";

"uploads";

"news";

"data";

"admin";

"images"

"pictures"

"image"

"temp"

"tmp"

"graphic"

"assets"

"pics"

"game"

[ 2] URL경로 리스트


선택된 경로 하위로  ‘jpg’, ‘png’, ‘gif’ 파일로 데이터를 전송합니다.

 


[그림 10] 사용자 정보 전송 코드


2.5. 랜섬웨어 기능

해당 랜섬웨어는 사용자의 시스템 언어를 확인하여 암호화 여부를 결정합니다. 다음과 같은 언어를 사용 중일 경우에는 암호화를 진행하지 않으며, 이 외의 언어를 사용하는 시스템에 대해서만 암호화를 진행합니다.


[그림 11] 사용자 시스템 언어 확인

 

LANG_ROMANIAN, LANG_AZERBAIJANI, LANG_RUSSIAN, LANG_BELARUSIAN, LANG_UKRAINIAN, LANG_ESTONIAN, LANG_LATVIAN, LANG_TAJIK, LANG_FARSI, LANG_ARMENIAN, LANG_AZERI, LANG_GEORGIAN, LANG_KAZAK, LANG_KYRGYZ, LANG_TURKMEN, LANG_UZBEK, LANG_TATAR

[ 3] 확인하는 시스템 언어 목록


암호화 대상 파일을 검색하고 암호화를 진행합니다. 다음과 같은 문자열이 포함되어 있는 경우 암호화에서 제외됩니. 이는 시스템 운영에 필요한 폴더 및 파일을 암호화하지 않음으로써 정상적인 악성 행위를 유지하기 위함으로 보입니다. 다음은 암호화 제외 폴더와 파일 목록입니다



암호화 제외 폴더 목록


program files (x86),  msocache,program files, boot, intel, $windows.~bt, perflogs, windows, $windows.~ws, system volume information,$recycle.bin, tor browser,mozilla,appdata,programdata,windows.old,google,application data,


암호화 제외 파일 목록


bootsect.bak, bootfont.bin, ntldr, ntuser.ini, ntuser.dat,desktop.ini,ntuser.dat.log,autorun.inf,boot.ini,iconcache.db,thumbs.db

[ 4] 암호화 제외 목록


다음은 암호화 대상 파일을 검색하는 코드입니다.

 

[그림 12] 암호화 대상 파일 검색 코드


당 랜섬웨어는 아래와 같은 확장자를 제외한 파일에 대해서만 암호화를 진행합니다.

 

msi, spl, ics, icns, themepack, deskthemepack, ps1, 386, diagcab, ani, scr, theme, bin, icl, key, mpa, hlp, com ,ico, adv, hta, shs, drv, rtp, msc, msu, sys, ldf, bat, prf, wpx, nls, rom, mod, dll, lnk, diagpkg, diagcfg, lock, ocx, idx, cpl, exe, cur, cab, msp, nomedia, cmd, msstyles

[ 5] 암호화 제외 확장자


암호화가 완료되면 아래와 같이 [원본파일이름].[기존 확장자명]. 뒤에 [영문숫자랜덤]이 추가됩니다.

 

[그림 13] 암호화 완료 화면


파일 암호화가 모두 끝나면, 랜섬웨어 감염 사실과 파일 복호화 방법을 알리는 랜섬 노트를 생성합니다. 랜섬웨어는 사용자 바탕화면 경로에 확장자로 사용한 ‘[영문숫자랜덤]-readme.txt’ 형식으로 생성합니다. 내용은 감염된 파일을 복구하기 위해 TOR 브라우저로 접속할 것을 안내하고 있습니다.

 

[그림 14] 랜섬 노트 화면


또한 감염된 PC의 바탕화면을 파란색 화면으로 변경합니다.


[그림 15] 감염된 시스템의 바탕 화면



결론


해당 랜섬웨어는 로컬 시스템만 감염 시키는 것이 아니라 로컬과 연결된 네트워크 드라이브에 대해서도 암호화를 시도합니다. 연결된 시스템이 백업을 위한 폴더나 서버일 경우 더 큰 피해로 이어질 수 있습니다. 


사용자들은 랜섬웨어를 예방하기 위해 중요 파일은 주기적으로 백업하는 습관을 들여야합니다. 또한 패치 누락으로 인한 취약점이 발생하지 않도록 운영체제와 소프트웨어는 최신 버전을 유지하는 것이 중요합니다. 


현재 알약에서는 ‘Trojan.Ransom.Sodinokibi’로 진단하고 있습니다.

관련글 더보기

댓글 영역