病毒和家族概述
该病毒是Stop/DJVU家庭的勒索型感染。该病毒会对文件(视频、照片、文档)进行加密,这些文件可以通过特定的“.nooa”扩展名进行跟踪。它使用强加密方法,这使得无法以任何方式计算密钥。
Stop勒索病毒从2018年8月开始被捕获到,该勒索病毒一直通过伪装成激活工具或者是和破解软件进行捆绑进行传播。该勒索病毒早期传播量并不大,从2019年7月份开始出现增长。
Stop勒索软件拥有近200个扩展程序,可以说是2019年最活跃、传播最广的勒索软件。尽管该勒索软件在一年前就很活跃,但它在2019年初就开始了积极的活动。为了逃避检测,它一直在不断改变其扩展程序和有效载荷。对于较早的感染,如果密钥不是在线C2生成的,则数据恢复会更容易。一旦接收到有效载荷,解密就更容易了,因为它使用非对称加密算法,对于离线系统,它使用相同的密钥集。从2019年中期开始,其加密策略发生了变化,这使得解密受感染文件变得困难。通过观察感染媒介和有效载荷的持续改进,人们可以将Stop参与者视为2019年最活跃的恶意软件作者之一。
Stop为每个受害者使用唯一的密钥,但有一个例外:如果Gujd在开始加密过程之前无法与其命令和控制服务器(C2服务器)建立连接,它会使用离线密钥。此密钥对所有受害者都是相同的,因此可以解密在勒索软件攻击期间加密的文件。具体信息请见参考文章。
文件信息
加载器
MD5:B1DF7D150D076BFED4259C5F2A83C809
图标
勒索本体
MD5:0A5E7CACB04B00BF404514032314B8A0
ImpHash:0c756c849bc7b459f78f7a5ce46cd4a7
变种指纹
勒索文件加密后缀 | nooa |
---|---|
PDB | e:\doc\my work (c++)_git\encryption\release\encrypt_win_api.pdb |
下载载荷 | http://securebiz.org/dl/build2.exe http://astdg.top/files/1/build3.exe |
外联C2/URL | http://astdg.top http://astdg.top/fhsgtsspen6/get.php?pid=[MAC的哈希([0-9A-F]{32})]&first=true http://astdg.top/fhsgtsspen6/get.php?pid=[MAC的哈希([0-9A-F]{32})]&first=false |
互斥体名称 | {1D6FC66E-D1F3-422C-8A53-C0BBCF3D900D} {FBB4BCC6-05C7-4ADD-B67B-A98A697323C1} |
感染标识
文件 | I:\5d2860c89d774.jpg 受害者ID:C:\SystemID\PersonalID.txt 勒索信:_readme.txt 配置信息:bowsakkdestx.txt |
---|---|
计划任务 | Time Trigger Task |
注册表 | HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\SysHelper |
副本 | C:\Users\[user]\AppData\Local\[UUID]\[SampleName].exe |
文件数据 | 加密数据末尾: 受害者ID(离线情况为“PLtnD1U6oAmgxgJ2nJik1mY9SwUQg07CiN0zSet1”) |
文件末尾: 感染文件标识:{36A698B9-D67C-4E07-BE82-0EC5B14B4DF5} |
动态行为
文件操作
在每个文件夹下释放勒索信“_readme.txt”:
在“C:\SystemID\PersonalID.txt”写入ID。
加密文件内容:
将文件重命名为原文件名+“.gujd”:
注册表操作
在自启动Run项下创建“SysHelper”键,键值为副本文件路径和启动参数“—AutoStart”:
网络行为
进程
将自身挂起后覆写内存,再恢复进程,两个进程ID中间出现交叉:
傀儡进程运行后将自身复制到“C:\Users\Administrator\AppData\Local\2690030a-b259-4d88-ab8a-2c578449ab22”下,通过注册表的Run项设置自启动,后通过执行命令行“icacls “C:\Users\admin\AppData\Local\ca327be4-3068-491e-9452-7cc83e706fa8” /deny *S-1-1-0:(OI)(CI)(DE,DC)”,将设置UUID命名的新文件夹访问权限为不可删除:
逆向分析
样本主体为加载器,主要用来加载解密shellcode覆写自身后将自身作为傀儡进程执行。最后在内存中运行勒索模块去执行,里面填充大量无用代码,用来干扰分析,也是多个相同家族勒索软件ImpHash不同的原因:
大量无意义跳转和赋值:
通过导入表可以看到有对内存操作的API函数:
.text段中也有大量API字符串存在:
运行后会通过“LoadLibrary”+“GetProcAddress”动态获取API地址:
获取的API如下:
0012F1BC 75602864 kernel32.LoadLibraryA
0012F1C0 75601837 kernel32.GetProcAddress
0012F1CC 75440000 OFFSET user32.Ordinal2397
0012F1D0 7549EA71 user32.MessageBoxA
0012F1D4 7544D9E2 user32.GetMessageExtraInfo
0012F1D8 755B0000 kernel32.755B0000
0012F1DC 7563E695 kernel32.WinExec
0012F1E0 756028FC kernel32.CreateFileA
0012F1E4 756011CC kernel32.WriteFile
0012F1E8 756005B7 kernel32.CloseHandle
0012F1EC 755B2062 kernel32.CreateProcessA
0012F1F0 7561962F kernel32.GetThreadContext
0012F1F4 756005F4 kernel32.VirtualAlloc
0012F1F8 755EB42C kernel32.VirtualAllocEx
0012F1FC 75600D35 kernel32.VirtualFree
0012F200 755EB41C kernel32.ReadProcessMemory
0012F204 7561859F kernel32.WriteProcessMemory
0012F208 756401CB kernel32.SetThreadContext
0012F20C 755F3F14 kernel32.ResumeThread
0012F210 755FEFA0 kernel32.WaitForSingleObject
0012F214 75601074 kernel32.GetModuleFileNameA
0012F218 756029CC kernel32.GetCommandLineA
0012F21C 754460F8 user32.RegisterClassExA
0012F220 7544E18A user32.CreateWindowExA
0012F224 7544D656 user32.PostMessageA
0012F228 7545286F user32.GetMessageA
0012F22C 7544E0E4 user32.DefWindowProcA
0012F230 75602A1F kernel32.GetFileAttributesA
0012F238 77035E00 ntdll.ZwUnmapViewOfSection
0012F23C 77035EE0 ntdll.ZwWriteVirtualMemory
0012F240 755B1DF0 kernel32.GetStartupInfoA
0012F244 7563F651 kernel32.VirtualProtectEx
0012F248 75602ACF kernel32.ExitProcess
将自身创建为傀儡进程
获取API地址后陆续调用API地址完成功能。
调用“CreateProcessA”将自身挂起:
“GetThreadContext”获取线程上下文后“ReadProcessMemory”读取进程内存,“ZwUnmapViewOfSection”卸载基址内存空间的数据,“VirtualAllocEx”重新分配内存空间,申请的内存地址为自身加载基址“400000”:
“ZwWriteVirtualMemory”将内存中的PE数据写入到自身的加载基址:
后通过“SetThreadContext”设置线程上下文,“ResumeThread”恢复挂起的线程:
勒索本体
勒索本体中带有PDB信息“E:\Doc\My work (C++)_Git*Encryption\Release\encrypt_win_api*.pdb”:
豁免国家
程序运行后会先从“https://api.2ip.ua/geo.json”拉取ip的地理位置信息,提取其中的国家代码:
豁免部分东欧国家:
缩写 | 国家 |
---|---|
RU | 俄罗斯 |
BY | 白俄罗斯 |
UA | 乌克兰 |
AZ | 阿塞拜疆 |
AM | 亚美尼亚 |
TJ | 塔吉克斯坦 |
KZ | 哈萨克斯坦 |
KG | 吉尔吉斯斯坦 |
UZ | 乌兹别克 |
如果是豁免国家,不继续进行勒索功能,在%TEMP%下释放“delself.bat”,用来删除勒索和bat自身:
首次感染
创建工作目录
调用“UuidCreate”生成一个UUID,与“C:\Users[user]\AppData\Local”拼接为工作目录,“CreateDirectoryW”创建该目录后“CopyFileW”将自身拷贝到工作目录:
设置工作目录不可删除
“CreateProcessW”执行“icacls [工作目录] /deny *S-1-1-0:(OI)(CI)(DE,DC)”,将设置UUID命名的新文件夹访问权限为不可删除:
文件夹和文件都无法删除(重试也无法删除):
创建注册表Run项自启动
将副本设置为Run项下的“SysHelper”并附加参数“—AutoStart”:
程序运行后会检查启动的参数,进入不同逻辑。比如无参执行则认为没有创建持久性,继而进入首次感染的创建持久性操作。参数有是否是Admin用户,启动方式从计划任务/Windows服务,是否自动启动,网络环境(“—ForNetRes”):
创建计划任务
创建计划任务“Time Trigger Task”,设置为5分钟,过期时间为“2030-05-02 08:00”:
检查是否有MYSQL数据库服务,有则关闭。目的是为了更好的加密有价值的文件,比如数据库文件,将数据库服务停用后才可以对数据库文件进行操作:
计算机唯一信息
获取计算机的MAC地址:
调用CryptoAPI将字符串加密,格式为32个大写十六进制:
感染标识
新建注册表“HKCU\Software\Microsoft\Windows\CurrentVersion\SysHelper”值设置为1,作为感染标识:
首次感染除了设置标识之外,还会将MAC字符串拼接的字符串进行哈希(MD5)计算:
接着在“CreateThread”创建的线程中, 与其他字符串拼接成URL,与远程服务器进行通信:
URL格式如“http://astdg.top/nddddhsspen6/get.php?pid=[MAC的哈希([0-9A-F]{32})]&**first=true**”,从远程服务器获取数据储存到“C:\Users\[user]\AppData\Local\bowsakkdestx.txt”:
“bowsakkdestx.txt”中保留了公钥和id,id作为受害者ID使用,在下文中详述:
以及另一个线程会下载“http://securebiz.org/dl/build2.exe”到第二个使用“UuidCreate”生成随机UUID的工作目录中,并通过“ShellExecuteA ”执行:
排除项
排除目录
排除Windows目录和浏览器安装程序目录:
C:\\Windows
C:\\Program Files (x86)\\Google
C:\\Program Files (x86)\\Internet Explorer
C:\\Program Files (x86)\\Mozilla Firefox
C:\\Program Files\\Google
C:\\Program Files\\Internet Explorer
C:\\Program Files\\Mozilla Firefox
D:\\Windows
D:\\Program Files (x86)\\Google
D:\\Program Files (x86)\\Internet Explorer
D:\\Program Files (x86)\\Mozilla Firefox
D:\\Program Files\\Google
D:\\Program Files\\Google
D:\\Program Files\\Internet Explorer
D:\\Program Files\\Internet Explorer
D:\\Program Files\\Mozilla Firefox
排除文件
ntuser.dat
ntuser.dat.LOG1
ntuser.dat.LOG2
ntuser.pol
_readme.txt
遍历文件并加密
检测
检测是否有文件“I:\5d2860c89d774.jpg”,暂不清晰此文件的内容和意义,根据盘符“I”考虑可能为移动盘(U盘):
遍历网络资源:
遍历文件并检测是否是目标类型文件:
遍历文件
加密文件
如果文件大小小于5字节,不加密,调用“MoveFileW”对文件进行重命名,添加后缀,如“gujd”:
如果文件大小大于5,跳过头部的5字节,对其余的文件内容进行加密:
在加密的文件末尾会加上受害者ID,以及固定的感染文件数据标识“{36A698B9-D67C-4E07-BE82-0EC5B14B4DF5}”:
以6字节文件,内容为“666666”加密后数据分布为例:
加密
调用“CryptCreateHash”对目标类型文件的前5个字节和RSA公钥(异或0x80解密出的)的缓冲区进行哈希处理,调用“UuidCreate”生成新的UUID,然后调用Salsa20算法加密数据:
受害者ID
受害者ID会先尝试从上文中服务器返回数据(保存到“bowsakkdestx.txt”)中提取id的数据:
如果没有联网,则使用内置的离线ID,Stop变种的离线ID有一类是“t1”结尾:
离线ID
如该样本使用的离线ID是“NcBG8wI6Q1WFhUNlCRyjmrWGeGew2vvCKtJgKot1”,被释放到计算机的“C:\SystemID\PersonalID.txt”中。
使用离线ID加密的文件数据,以后有可能会有其对应的解密密钥流出,有可能在未来能解密:
情报搜索
勒索信
ATTENTION!
Don't worry, you can return all your files!
All your files like pictures, databases, documents and other important are encrypted with strongest encryption and unique key.
The only method of recovering files is to purchase decrypt tool and unique key for you.
This software will decrypt all your encrypted files.
What guarantees you have?
You can send one of your encrypted file from your PC and we decrypt it for free.
But we can decrypt only 1 file for free. File must not contain valuable information.
You can get and look video overview decrypt tool:
https://we.tl/t-mNr1oio2P6
Price of private key and decrypt software is $980.
Discount 50% available if you contact us first 72 hours, that's price for you is $490.
Please note that you'll never restore your data without payment.
Check your e-mail "Spam" or "Junk" folder if you don't get answer more than 6 hours.
To get this software you need write on our e-mail:
manager@mailtemp.ch
Reserve e-mail address to contact us:
managerhelper@airmail.cc
Your personal ID:
0316ewgfDdNcBG8wI6Q1WFhUNlCRyjmrWGeGew2vvCKtJgKot1
注意!
别担心,您可以归还所有文件!
您的所有文件,如图片、数据库、文档和其他重要文件,都使用最强的加密和唯一密钥进行加密。
恢复文件的唯一方法是为您购买解密工具和唯一密钥。
该软件将解密您所有的加密文件。
你有什么保证?
您可以从您的 PC 发送您的加密文件之一,我们免费对其进行解密。
但是我们只能免费解密 1 个文件。文件不得包含有价值的信息。
您可以获取并查看视频概览解密工具:
https://we.tl/t-mNr1oio2P6
私钥和解密软件的价格为 980 美元。
如果您在前 72 小时与我们联系,可享受 50% 的折扣,您的价格为 490 美元。
请注意,您永远不会在不付款的情况下恢复您的数据。
如果超过 6 小时仍未收到回复,请检查您的电子邮件“垃圾邮件”或“垃圾邮件”文件夹。
要获得此软件,您需要在我们的电子邮件中写道:
managerhelper@airmail.cc
预留电子邮件地址与我们联系:
managerhelper@airmail.cc
您的个人 ID:
0316ewgfDdNcBG8wI6Q1WFhUNlCRyjmrWGeGew2vvCKtJgKot1
{36A698B9-D67C-4E07-BE82-0EC5B14B4DF5}
该勒索文件数据标识从19年开始使用,可以作为归因和判断勒索家族的方式:
解密方式
GUJD VIRUS
如何解密被 Stop/DJVU Ransomware 锁定的文件
熊猫正正:迷你世界勒索病毒,你的文件被删了吗?
Stop勒索病毒是一款非常流行的勒索病毒,主要通过捆绑其他破解软件、游戏辅助程序、一些常用软件等渠道进行传播,最近一两年Stop勒索病毒通过捆绑KMS激活工具进行传播,以及其他一些防病毒软件等,到目前为止,此勒索病毒一共有一百多个不同的加密变种,此前Emsisoft公司发布过一款解密工具,可以解密大多数变种,不过Stop一直在更新,最新的版本暂时无法解密,笔者跟踪到的最新的Stop勒索病毒,加密后的文件后缀名为:gujd,黑客的邮箱地址已经更新为:manager@mailtemp.ch、managerhelper@airmail.cc。
DJVU 解密工具
360解密
安全研究
提取第2阶段PE
参考
Quick Heal - Stop (Djvu) Ransomware: Ransom For Your Shady Habits!
腾讯电脑管家 - Stop勒索病毒变种加密机制分析 部分情况可解密恢复
CYBER GEEKS - A DETAILED ANALYSIS OF THE Stop/DJVU RANSOMWARE
沙箱-AnyRun