상세 컨텐츠

본문 제목

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

악성코드 분석 리포트

by 알약(Alyac) 2017. 9. 22. 13:14

본문


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


과거 다양한 변종으로 전세계에 악명을 떨친 ‘Trojan.Ransom.LockyCrypt(이하 Locky 랜섬웨어)’가 다시 등장하였습니다. 이 Locky 랜섬웨어는 파일 암호화 간 ‘diablo6’ 확장자로 변경하는 점이 특징입니다. 본 분석 보고서에서는 Locky 랜섬웨어를 상세 분석 하고자 합니다.


이번 Locky 랜섬웨어는 불특정 다수를 대상으로 한 스팸 메일에서 유포되었습니다. 메일은 ‘Files attached. Thanks’, 즉 ‘파일을 첨부하였다. 고맙다’의 내용을 담고 있습니다. 이는 메일을 받은 이들의 호기심을 자극하여 첨부된 파일을 실행하도록 하는 의도로 보여집니다. 첨부된 압축 파일 안에 있는 ‘E 2017-08-09 (672).vbs‘는 Locky 랜섬웨어를 다운로드하는 VBScript 스크립트 파일입니다.


[그림 1] Locky 랜섬웨어를 유포한 스팸 메일



악성코드 상세 분석


첨부된 E 2017-08-09 (672).vbs 분석


첨부된 VBS 파일은 C&C에서 Locky 랜섬웨어를 다운로드하고, 임시 폴더(%TEMP%) 경로에 ‘RzoGhNzbGgU.exe’ 파일명으로 저장 및 실행합니다.


 

[그림 2] Locky 랜섬웨어를 다운로드하는 VBS 파일


RzoGhNzbGgU.exe 상세 분석


첨부된 ‘E 2017-08-09 (672).vbs’에서 다운로드되어 실행되는 RzoGhNzbGgU.exe는 파일 암호화 기능을 수행하며, 암호화 이후 복호화 해주는 대가로 비트코인 결제를 유도합니다.


1) 디버깅 유무에 따른 자가 복제 및 실행

다음은 자가 복제 및 실행하는 코드입니다. 자가 복제 및 실행은 자기 자신의 흔적을 숨기기 위해 사용하지만 이번 랜섬웨어에서는 분석 방해를 위해 사용하였습니다. PEB 구조체에 있는 ‘BeingDebugged’ 멤버 값으로 현재 프로세스가 디버깅 상태인지를 확인하고, 디버깅 상태인 경우 임시 폴더(%TEMP%) 경로에 ‘svchost.exe’ 이름으로 자가 복제 및 실행합니다.


 

[그림 3] 디버깅 유무에 따른 자가 복제 및 실행


2) 감염된 이용자 ID 생성

감염된 이용자를 식별하기 위한 ID를 생성하는 코드입니다. ID는 드라이브 볼륨의 GUID를 MD5로 변환한 값에 추가 연산을 적용한 값입니다.


 

[그림 4] ID 생성 코드의 일부


3) 정보 전송

C&C로 감염된 기기의 정보들을 전송합니다. 전송되는 정보에는 감염된 이용자의 ID, 국가 언어, 운영체제 정보, 서비스팩 정보, 로컬 컴퓨터의 도메인 소속 정보, 64비트 유무, affid, v 값이 포함됩니다. affid와 v 값은 악성코드 내부에 각각 숫자 ‘3’과 ‘2’로 고정되어 있으며 각각 ‘Affiliation ID(제휴 아이디)’와 ‘Version(랜섬웨어 버전 정보)’의 의미로 보입니다.


 

[그림 5] C&C에 전송하는 정보


악성코드에서 연결하는 C&C 정보는 다음과 같습니다.


 IP

 국가

  83.217.8.61

 러시아

  31.202.130.9

 우크라이나

  91.234.35.106

 우크라이나

[표 1] C&C 정보


해당 정보들은 암호화되어 전송되며, 분석하는 시점에서 C&C와 연결이 이루어지지 않아 어떠한 데이터를 받아오는지 확인이 어렵습니다. 다음은 C&C와 연결이 이루어질 경우 파라메터 및 전송 정보입니다.


파라메터

전송 정보 

 id=&act=gettext&lang=

 ID 및 지역 정보

 id=&act=gethtml&lang=

 ID 및 지역 정보

 id=&act=stats&path=&encrypted=&failed=&length=

 ID 및 암호화 정보 통계

[표 2] 파라메터 및 전송 정보 목록


4) 파일 암호화

① 암호화 대상 확인

암호화 대상을 확인하기 전 러시아어 환경인지 확인합니다. 러시아어 환경의 기기에서는 암호화를 진행하지 않고, 프로세스 종료 및 자가 삭제합니다. 그 외의 환경에서는 파일 암호화가 진행됩니다.


[그림 6] 러시아어 환경 확인


A 드라이브부터 Z 드라이브까지 드라이브가 고정식 드라이브, 이동식 드라이브, 램 디스크 드라이브인지 확인합니다. 만일 대상 드라이브인 경우 암호화 대상 드라이브에 포함합니다.


 

[그림 7] 드라이브 확인


네트워크 드라이브도 암호화 대상에 포함합니다.


 

[그림 8] 네트워크 드라이브 검색


드라이브 내에서 암호화 조건에 부합하는 파일들을 리스팅합니다. 암호화 대상 파일의 확인 조건은 확장자, 제외 파일 및 폴더 문자열입니다. 다음은 암호화 대상 확장자와 제외 폴더 및 파일 문자열 목록입니다.


"wallet.dat", ".key", ".crt", ".csr", ".p12", ".pem", ".DOC", ".odt", ".ott", ".sxw", ".stw", ".PPT", ".XLS", ".pdf", ".RTF", ".uot", ".CSV", ".txt", ".xml", ".3ds", ".max", ".3dm", ".DOT", ".docx", ".docm", ".dotx", ".dotm", ".602", ".hwp", ".ods", ".ots", ".sxc", ".stc", ".dif", ".xlc", ".xlm", ".xlt", ".xlw", ".slk", ".xlsb", ".xlsm", ".xlsx", ".xltm", ".xltx", ".wk1", ".wks", ".123", ".wb2", ".odp", ".otp", ".sxi", ".sti", ".pps", ".pot", ".sxd", ".std", ".pptm", ".pptx", ".potm", ".potx", ".uop", ".odg", ".otg", ".sxm", ".mml", ".docb", ".ppam", ".ppsx", ".ppsm", ".sldx", ".sldm", ".ms11", ".ms11, (Security, copy)", ".lay", ".lay6", ".asc", ".onetoc2", ".pst", ".001", ".002", ".003", ".004", ".005", ".006", ".007", ".008", ".009", ".010", ".011", ".SQLITE3", ".SQLITEDB", ".sql", ".mdb", ".db", ".dbf", ".odb", ".frm", ".MYD", ".MYI", ".ibd", ".mdf", ".ldf", ".php", ".c", ".cpp", ".pas", ".asm", ".h", ".js", ".vb", ".vbs", ".pl", ".dip", ".dch", ".sch", ".brd", ".cs", ".asp", ".rb", ".java", ".jar", ".class", ".sh", ".bat", ".cmd", ".py", ".psd", ".NEF", ".tiff", ".tif", ".jpg", ".jpeg", ".cgm", ".raw", ".gif", ".png", ".bmp", ".svg", ".djvu", ".djv", ".zip", ".rar", ".7z", ".gz", ".tgz", ".tar", ".bak", ".tbk", ".tar.bz2", ".PAQ", ".ARC", ".aes", ".gpg", ".apk", ".asset", ".asset", ".bik", ".bsa", ".d3dbsp", ".das", ".forge", ".iwi", ".lbf", ".litemod", ".litesql", ".ltx", ".re4", ".sav", ".upk", ".wallet", ".vmx", ".vmdk", ".vdi", ".qcow2", ".mp3", ".wav", ".swf", ".fla", ".wmv", ".mpg", ".vob", ".mpeg", ".asf", ".avi", ".mov", ".mp4", ".3gp", ".mkv", ".3g2", ".flv", ".wma", ".mid", ".m3u", ".m4u", ".m4a", ".n64", ".contact", ".dbx", ".doc", ".docx", ".jnt", ".jpg", ".mapimail", ".msg", ".oab", ".ods", ".pdf", ".pps", ".ppsm", ".ppt", ".pptm", ".prf", ".pst", ".rar", ".rtf", ".txt", ".wab", ".xls", ".xlsx", ".xml", ".zip", ".1cd", ".3ds", ".3g2", ".3gp", ".7z", ".7zip", ".accdb", ".aoi", ".asf", ".asp", ".aspx", ".asx", ".avi", ".bak", ".cer", ".cfg", ".class", ".config", ".css", ".csv", ".db", ".dds", ".dwg", ".dxf", ".flf", ".flv", ".html", ".idx", ".js", ".key", ".kwm", ".laccdb", ".ldf", ".lit", ".m3u", ".mbx", ".md", ".mdf", ".mid", ".mlb", ".mov", ".mp3", ".mp4", ".mpg", ".obj", ".odt", ".pages", ".php", ".psd", ".pwm", ".rm", ".safe", ".sav", ".save", ".sql", ".srt", ".swf", ".thm", ".vob", ".wav", ".wma", ".wmv", ".xlsb", ".3dm", ".aac", ".ai", ".arw", ".c", ".cdr", ".cls", ".cpi", ".cpp", ".cs", ".db3", ".docm", ".dot", ".dotm", ".dotx", ".drw", ".dxb", ".eps", ".fla", ".flac", ".fxg", ".java", ".m", ".m4v", ".max", ".mdb", ".pcd", ".pct", ".pl", ".potm", ".potx", ".ppam", ".ppsm", ".ppsx", ".pptm", ".ps", ".pspimage", ".r3d", ".rw2", ".sldm", ".sldx", ".svg", ".tga", ".wps", ".xla", ".xlam", ".xlm", ".xlr", ".xlsm", ".xlt", ".xltm", ".xltx", ".xlw", ".act", ".adp", ".al", ".bkp", ".blend", ".cdf", ".cdx", ".cgm", ".cr2", ".crt", ".dac", ".dbf", ".dcr", ".ddd", ".design", ".dtd", ".fdb", ".fff", ".fpx", ".h", ".iif", ".indd", ".jpeg", ".mos", ".nd", ".nsd", ".nsf", ".nsg", ".nsh", ".odc", ".odp", ".oil", ".pas", ".pat", ".pef", ".pfx", ".ptx", ".qbb", ".qbm", ".sas7bdat", ".say", ".st4", ".st6", ".stc", ".sxc", ".sxw", ".tlg", ".wad", ".xlk", ".aiff", ".bin", ".bmp", ".cmt", ".dat", ".dit", ".edb", ".flvv", ".gif", ".groups", ".hdd", ".hpp", ".log", ".m2ts", ".m4p", ".mkv", ".mpeg", ".ndf", ".nvram", ".ogg", ".ost", ".pab", ".pdb", ".pif", ".png", ".qed", ".qcow", ".qcow2", ".rvt", ".st7", ".stm", ".vbox", ".vdi", ".vhd", ".vhdx", ".vmdk", ".vmsd", ".vmx", ".vmxf", ".3fr", ".3pr", ".ab4", ".accde", ".accdr", ".accdt", ".ach", ".acr", ".adb", ".ads", ".agdl", ".ait", ".apj", ".asm", ".awg", ".back", ".backup", ".backupdb", ".bank", ".bay", ".bdb", ".bgt", ".bik", ".bpw", ".cdr3", ".cdr4", ".cdr5", ".cdr6", ".cdrw", ".ce1", ".ce2", ".cib", ".craw", ".crw", ".csh", ".csl", ".db_journal", ".dc2", ".dcs", ".ddoc", ".ddrw", ".der", ".des", ".dgc", ".djvu", ".dng", ".drf", ".dxg", ".eml", ".erbsql", ".erf", ".exf", ".ffd", ".fh", ".fhd", ".gray", ".grey", ".gry", ".hbk", ".ibank", ".ibd", ".ibz", ".iiq", ".incpas", ".jpe", ".kc2", ".kdbx", ".kdc", ".kpdx", ".lua", ".mdc", ".mef", ".mfw", ".mmw", ".mny", ".moneywell", ".mrw", ".myd", ".ndd", ".nef", ".nk2", ".nop", ".nrw", ".ns2", ".ns3", ".ns4", ".nwb", ".nx2", ".nxl", ".nyf", ".odb", ".odf", ".odg", ".odm", ".orf", ".otg", ".oth", ".otp", ".ots", ".ott", ".p12", ".p7b", ".p7c", ".pdd", ".pem", ".plus_muhd", ".plc", ".pot", ".pptx", ".psafe3", ".py", ".qba", ".qbr", ".qbw", ".qbx", ".qby", ".raf", ".rat", ".raw", ".rdb", ".rwl", ".rwz", ".s3db", ".sd0", ".sda", ".sdf", ".sqlite", ".sqlite3", ".sqlitedb", ".sr2", ".srf", ".srw", ".st5", ".st8", ".std", ".sti", ".stw", ".stx", ".sxd", ".sxg", ".sxi", ".sxm", ".tex", ".wallet", ".wb2", ".wpd", ".x11", ".x3f", ".xis", ".ycbcra", ".yuv"

[표 3] 암호화 대상 확장자 문자열


 System Volume Information

 ProgramFiles (x86)

 ApplicationData

 Program Files

 $Recycle.Bin

 AppData 

 Windows

 winnt

 Boot

 temp

 tmp

 _Locky_recover_instructions.txt

 _Locky_recover_instructions.bmp

 _HELP_instructions.html

 _HELP_instructions.bmp

 _HELP_instructions.txt

 thumbs.db

 

[표 4] 암호화 제외 대상 문자열

 

상기 문자열을 제외하는 이유는 시스템 오류를 피하기 위함과, ‘_Locky_recover_instructions.txt‘ 등의 기존 버전 랜섬노트를 보호해 불필요한 암호화를 하지 않으려는 의도로 보입니다.

② 파일 암호화

리스팅된 파일들을 대상으로 암호화를 진행합니다. 파일 암호화에는 RSA 및 AES 알고리즘이 사용됩니다.


 

[그림 9] 파일 암호화 알고리즘


파일 암호화는 암호화 대상 파일명과 확장자를 ‘[감염 ID 및 임의값].diablo6’으로 변경한 이후에 진행됩니다.


 

[그림 10] 파일 이름 및 확장자 변경


다음은 파일 암호화 코드의 일부입니다.

 

[그림 11] 파일 암호화 코드


암호화된 파일의 구조는 다음과 같으며, 암호화된 데이터, 시그니처, 감염된 이용자 ID, 0x100 크기의 RSA로 암호화된 임의 키, 0x230 크기의 암호화된 시그니처와 원래 파일 이름이 포함됩니다.


 

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


5) 파일 복원 방지

파일 복원을 방지하기 위해 볼륨 쉐도우 복사본을 삭제합니다.


 

[그림 13] 볼륨 쉐도우 복사본 삭제


6) 결제 안내

비트코인 결제 안내를 위해 암호화 대상 파일의 경로에 복호화 안내를 유도하는 랜섬노트 파일 ‘diablo6-(임의 값4자리).htm’을 생성한다. 다음은 랜섬노트 파일 생성 코드의 일부입니다.


 

[그림 14] 랜섬노트 파일 생성 코드의 일부


바탕화면을 Locky 랜섬웨어 이미지로 변경하고, 랜섬노트를 실행해 이용자에게 암호화 사실을 알려줍니다. 랜섬노트의 내용은 “모든 파일들이 암호화되었으니 개인키를 받기 위해서는 토르 웹 브라우저를 사용하여 우리의 비밀 서버로 접속하라”입니다.


 

[그림 15] 생성된 Locky 랜섬노트


실제 랜섬노트에 기재된 Locky 랜섬웨어 다크넷으로 접속할 경우 다음과 같이 암호화된 파일을 복호화해주는 대가로 0.5 비트코인을 요구합니다.


 

[그림 16] 복호화 안내를 제공하는 Locky 랜섬웨어 다크웹


7) 자가 삭제

파일 암호화 과정이 모두 종료되면 자가 삭제합니다.


 

[그림 17] 자가 삭제



결론


Locky 랜섬웨어는 러시아어 외의 환경에서 파일들을 암호화하여 복구하지 못하게 만들고, 암호화된 파일들을 복호화 해주는 대가로 비트코인 결제를 요구합니다. 다른 랜섬웨어와 달리 러시아어 환경인 경우 암호화를 진행하지 않는다는 특징이 있습니다.


또한 C&C에 정상적으로 연결이 이루어지지 않아도 파일 암호화가 진행됩니다. 즉, 기업 내부망 등에서도 암호화가 진행될 수 있어서 랜섬웨어에 대한 대비가 필요합니다.


본 보고서에서 다룬 악성코드 외에도 확장자를 ‘.lukitus’로 변경하는 Locky변종이 웹 사이트를 통해 유포되고 있는 것으로 알려져 추가 피해가 발생할 것으로 보입니다.


따라서 랜섬웨어를 사전에 예방하기 위해서는 메일에 첨부된 파일에 대해서 주의해야 하고, 윈도우 보안 업데이트나 컴퓨터에 설치된 애플리케이션을 항상 최신 상태로 유지해야 합니다. 또한 중요한 자료들은 정기적으로 외장 매체에 백업하여 만일에 있을 사태에 대비해야 합니다. 







관련글 더보기

댓글 영역