상세 컨텐츠

본문 제목

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

악성코드 분석 리포트

by 알약(Alyac) 2019. 6. 21. 08:15

본문



안녕하세요? 이스트시큐리티 시큐리티대응센터(이하 ESRC)입니다.


최근 '형사 사건번호'라는 제목으로 헌법 재판소를 사칭한 피싱 메일이 유포되고 있습니다.



[그림 1] 헌법 재판소로 사칭한 피싱 메일



이 피싱 메일은 사건과 관련된 모든 자료를 함께 동봉했다며 사용자가 첨부된 파일(Documents.zip)을 실행하도록 유도합니다. 첨부 파일에는 난독화된 자바스크립트 파일  ‘Korea Criminal Case #521.js’, ‘Korean Constitutional Court #143.js’(Trojan.JS.Ransom.A)을 포함하고 있으며, 자바스크립트 파일을 실행할 경우 최종적으로 ‘Trojan.Ransom.VegaLocker’(이하 ‘VegaLocker’) 랜섬웨어에 감염됩니다.


VegaLocker 랜섬웨어에 감염될 경우 사용자 PC의 중요 파일들을 암호화시켜 정상 파일로써 동작할 수 없게 만들기 때문에 치명적인 피해가 발생할 수 있습니다. 현재도 지속적인 변종이 등장하고 있는 만큼 사용자의 각별한 주의가 필요합니다.


따라서, 본 보고서에서는 ‘Trojan.JS.Ransom.A’와 ‘Trojan.Ransom.VegaLocker’ 악성코드에 대해 상세 분석하고자 합니다.



악성코드 상세 분석



1. Trojan.JS.Ransom.A 분석


1.1 VegaLocker 드롭

RC4 알고리즘으로 자바스크립트에 포함된 인코딩된 PE를 디코딩합니다. 디코딩된 PE는 ‘C:\Users\[사용자 계정]’ 하위에 ‘[임의 숫자 4-5자리].exe’ 파일명으로 드롭됩니다.



[그림 2] VegaLocker 랜섬웨어 드롭



2. Vegalocker 분석


2.1. 자가 복제 및 자동 실행 등록

cmd 명령어를 통해 자가 복제 및 자동 실행 등록합니다. 자가 복제되는 경로는 ‘C:\Users\[사용자계정]\AppData\Roaming\Microsoft\Windows\’ 하위에 ‘cftmon.exe’이며, 해당 경로를 자동 실행 레지스트리에 등록합니다.



"C:\Windows\system32\cmd.exe" /e:on /c md "C:\Users\[사용자 계정]\AppData\Roaming\Microsoft\Windows" & copy "C:\Users\[사용자 계정]\AppData\Local\Temp\[임의 숫자 4-5자리].exe" "C:\Users\[사용자 계정]\AppData\Roaming\Microsoft\Windows\ctfmon.exe" & reg add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /V "ctfmon.exe" /t REG_SZ /F /D "\"C:\Users\[사용자 계정] \AppData\Roaming\Microsoft\Windows\ctfmon.exe\" *"



이후, 자가 복제된 경로의 ‘ctfmon.exe’를 ‘*’ 파라메터로 재실행합니다.


2.2 파일 암호화


2.2.1. 암호화 환경 확인

시스템 로캘로 암호화 대상 환경인지 확인합니다. 벨라루스, 우크라이나, 러시아, 카자흐스탄, 타타르스탄, 우즈베키스탄 환경인 경우 자가 복제를 진행하지 않고 프로그램을 종료합니다. 로캘은 시스템의 언어, 날짜, 시간 등의 환경 정보입니다.



[그림 3] 시스템 로캘 확인하는 코드



2.2.2 암호화 키 생성

공격자의 RSA 공개키로 RSA 공개키 및 개인키를 생성합니다. 생성된 RSA 공개키는 파일 암호화에서 사용되는 AES 키와 IV 값을 암호화할 때 사용됩니다. 생성된 RSA 공개키 및 개인키는 ‘RC4 + Base64’로 인코딩한 뒤 HKCU\Software\Buran\Service\ 하위에 Public, Private에 각각 저장합니다.



[그림 4] 레지스트리에 저장된 RSA 키



암호화 이후, Public과 Private에 저장된 값을 지웁니다.

 

2.2.3. 감염 ID 발급

생성된 RSA 공개키를 감염 ID로 사용합니다. 감염 ID는 감염자를 식별하기 위해 사용하는 것으로 보이며, 추후 암호화된 파일 뒤에 추가되는 확장자로도 사용됩니다.



[그림 5] 감염 ID 발급 코드

  


2.2.4. 암호화 대상 확인 

네트워크 드라이브와 CD-ROM 혹은 마운트 되지 않은 드라이브를 제외한 드라이브를 암호화 대상 드라이브로 합니다.



[그림 6] 암호화 대상 드라이브 확인 코드



네트워크 드라이브를 확인하는 코드는 아래와 같습니다.



[그림 7] 네트워크 드라이브 확인 코드



트워크 드라이브를 확인하는 코드는 아래와 같습니다.



:\$RECYCLE.BIN\, :\$Windows.~bt\, :\RECYCLER, :\System Volume Information\, :\Windows.old\, :\Windows\, :\intel\, :\nvidia\, :\inetpub\logs\, \All Users\, \AppData\, \Apple Computer\Safari\, \ApplicationData\, \Boot\, \Google\, \Google\Chrome\, \Mozilla Firefox\

\Mozilla\, \Opera Software\, \Opera\, \TorBrowser\, \Common Files\, \Internet Explorer\

\Windows Defender\, \Windows Mail\, \Windows Media Player\, \Windows Multimedia Platform\, \Windows NT\, \Windows Photo Viewer\, \WindowsPortable Devices\, \WindowsPowerShell\, \Windows Photo Viewer\, \Windows Security\, \Embedded Lockdown Manager\, \Windows Journal\, \MSBuild\, \Reference Assemblies\, \Windows Sidebar\, \Windows Defender Advanced Threat Protection\, \Microsoft\, \Package Cache\, \Microsoft Help\

[표 1] 암호화 대상 제외 폴더 문자열



boot.ini, bootfont.bin, bootsect.bak, desktop.ini, defender.exe, iconcache.db, master.exe, master.dat, ntdetect.com, ntldr, ntuser.dat, ntuser.dat.log, ntuser.ini, temp.txt, thumbs.db, unlock.exe, unlocker.exe, !!! YOUR FILES ARE ENCRYPTED !!!.TXT

[표 2] 암호화 제외 파일 이름 문자열



.bat, .cmd, .com, .cpl, .dll, .msc, .msp, .pif, .scr, .sys, .log, .exe, .buran

[표 3] 암호화 제외 확장자 문자열



제외 문자열 확인 이후, 중복 암호화를 피하기 위해 파일 첫 5바이트에 ‘BURAN’ 시그니처가 있는지 확인합니다. ‘BURAN’ 시그니처가 존재하는 경우, 암호화를 진행하지 않습니다. 



[그림 8] ‘BURAN’ 시그니처를 확인하는 코드



2.2.5. 파일 암호화

아래는 암호화 대상 파일의 데이터를 AES로 암호화하는 코드입니다. 암호화 대상 파일 크기가 0x10400 이하인 경우, 최대 0x10400만큼의 데이터를, 그 외의 경우 0x10000 데이터를 AES로 암호화합니다. AES로 암호화할 때 파일 데이터 앞에 ‘666’을 추가합니다. AES IV와 KEY는 각 파일마다 임의값으로 생성되어 사용되며, RSA 공개키로 암호화되어 파일에 추가됩니다.



[그림 9] 감염 PC 정보



아래는 암호화 대상 파일 크기가 0x10400 이하 또는 초과하는 경우에 따라 나눈 암호화된 파일 구조입니다. 암호화 파일에는 시그니처, 원본 파일 크기, 암호화 파일 크기, 암호화된 파일 내용, 암호화 옵션, 암호화된 AES 키와 IV, 인코딩된 RSA 개인키, 암호화 정보의 크기가 포함됩니다. 암호화 옵션은 파일 크기가 0x10400 이하인 경우 2, 그 외의 경우 1로 설정됩니다. 특징적으로 0x10400을 초과하는 경우에 암호화되지 않은 원본 파일의 끝에 ‘원본의 0x10000 ~ 0x10400’ 데이터가 추가됩니다. 



[그림 10] 암호화된 파일 구조



암호화가 완료된 파일 뒤에 ‘감염 ID’를 추가합니다. 아래는 ‘감염 ID’를 추가하는 화면입니다.



[그림 11] 파일 뒤에 ‘감염 ID’확장자를 추가하는 코드



2.3. 감염 안내

암호화된 파일이 있는 폴더마다 랜섬노트 ‘!!! YOUR FILES ARE ENCRYPTED !!!.TXT’ 파일을 생성합니다. 랜섬노트는 파일 복호화를 위해 메일(wtfsupport@airmail.cc, wtfsupport@cock.li)로 연락하라는 내용을 담고 있습니다.



[그림 12] ‘!!! YOUR FILES ARE ENCRYPTED !!!.TXT’ 랜섬노트 내용 



2.4. 파일 복원 방해

파일 복원을 방해하기 위해 시스템 상태 백업본 및 볼륨 쉐도우를 삭제합니다. 아래는 실행되는 명령어 및 기능 설명입니다. 



명령어

기능 설명

bcdedit /set {default} bootstatuspolicy ignoreallfailures

Windows 오류 복구 알림창 해제

bcdedit /set {default} recoveryenabled no

복구 모드 사용하지 않음

wbadmin delete catalog -quiet

백업 카탈로그 삭제

wbadmin delete systemstatebackup

시스템 상태 백업 삭제

wbadmin delete systemstatebackup -keepversions:0

모든 시스템 상태 백업 삭제

wbadmin delete backup

백업 삭제

wmic shadowcopy delete

볼륨 쉐도우 삭제

vssadmin delete shadows /all /quiet

볼륨 쉐도우 삭제

[표 4] 파일 복원 방해 명령어 및 기능 설명



2.5. RDP 로그 삭제

원격 연결에 사용되는 RDP 로그 정보들을 삭제합니다.



명령어

기능 설명

reg delete"HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Default" /va /f

RDP 로그 정보 삭제

reg delete "HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Servers" /f

RDP 로그 정보 삭제

reg add "HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Servers"

RDP 로그 정보 삭제

attrib "%userprofile%\documents\Default.rdp" -s -h

Default.rdp 숨김 파일 설정

del "%userprofile%\documents\Default.rdp"

Default.rdp 파일 삭제

[표 5] RDP 로그 정보 삭제 명령어 및 기능 설명



2.6. 감염 흔적 삭제

응용 프로그램 로그, 보안 로그, 시스템 로그를 삭제합니다. 로그를 삭제하는 이유는 감염 흔적을 지우기 위함으로 보입니다.

 


명령어

기능 설명

wevtutil.exe clear-log Application

응용 프로그램 로그 삭제

wevtutil.exe clear-log Security

보안 로그 삭제

wevtutil.exe clear-log System

시스템 로그 삭제

sc config event log start=disabled

이벤트 로그 비활성화

[표 6] 감염 흔적 삭제 명령어 및 기능 설명



2.7. 자가 삭제

파일 암호화 과정이 종료되면, 명령어를 실행하여 자가 삭제합니다.



[그림 13] 자가 삭제 코드



결론



VegaLocker 랜섬웨어는 시스템 내 파일을 암호화하는 기능을 가집니다. 또한 네트워크 드라이브도 암호화를 시도하는 특징이 있어 추가 피해가 발생할 수 있습니다. 파일 복호화를 위해서는 랜섬노트에 안내된 것처럼 공격자의 메일 주소를 통해 연락하고 시범적으로 암호화된 1개의 파일도 함께 보내줄 것을 요구합니다. 하지만 해당 메일로 랜섬머니나 암호화된 파일을 보냈을 경우 정상적으로 복호화를 해준다고 보장할 수 없습니다. 


따라서 지속적으로 변종이 등장하고 있는 만큼 사용자는 주기적으로 중요 파일을 백업하는 습관을 들여야 하며, 패치 누락으로 인한 취약점이 발생하지 않도록 OS와 소프트웨어는 최신 버전의 업데이트를 유지해야 합니다. 메일로 첨부되는 파일에 대해서는 실행 시 주의해야 하고 백신을 최신 업데이트 상태로 유지하며 주기적인 검사를 실시하여 감염을 예방해야 합니다. 


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



관련글 더보기

댓글 영역