病毒和家族概述

该病毒是Stop/DJVU家庭的勒索型感染。该病毒会对文件(视频、照片、文档)进行加密,这些文件可以通过特定的“.nooa”扩展名进行跟踪。它使用强加密方法,这使得无法以任何方式计算密钥。
Stop勒索病毒从2018年8月开始被捕获到,该勒索病毒一直通过伪装成激活工具或者是和破解软件进行捆绑进行传播。该勒索病毒早期传播量并不大,从2019年7月份开始出现增长。
Stop勒索软件拥有近200个扩展程序,可以说是2019年最活跃、传播最广的勒索软件。尽管该勒索软件在一年前就很活跃,但它在2019年初就开始了积极的活动。为了逃避检测,它一直在不断改变其扩展程序和有效载荷。对于较早的感染,如果密钥不是在线C2生成的,则数据恢复会更容易。一旦接收到有效载荷,解密就更容易了,因为它使用非对称加密算法,对于离线系统,它使用相同的密钥集。从2019年中期开始,其加密策略发生了变化,这使得解密受感染文件变得困难。通过观察感染媒介和有效载荷的持续改进,人们可以将Stop参与者视为2019年最活跃的恶意软件作者之一。
Stop为每个受害者使用唯一的密钥,但有一个例外:如果Gujd在开始加密过程之前无法与其命令和控制服务器(C2服务器)建立连接,它会使用离线密钥。此密钥对所有受害者都是相同的,因此可以解密在勒索软件攻击期间加密的文件。具体信息请见参考文章。

文件信息

加载器

MD5:B1DF7D150D076BFED4259C5F2A83C809

图标

image.png

勒索本体

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”:
image.png
在“C:\SystemID\PersonalID.txt”写入ID。
加密文件内容:
image.png
将文件重命名为原文件名+“.gujd”:
image.png

注册表操作

在自启动Run项下创建“SysHelper”键,键值为副本文件路径和启动参数“—AutoStart”:
image.png

网络行为

连接“api.2ip.ua”以及“astdg.top”:
image.png

进程

将自身挂起后覆写内存,再恢复进程,两个进程ID中间出现交叉:
image.png
傀儡进程运行后将自身复制到“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命名的新文件夹访问权限为不可删除:
image.png

逆向分析

样本主体为加载器,主要用来加载解密shellcode覆写自身后将自身作为傀儡进程执行。最后在内存中运行勒索模块去执行,里面填充大量无用代码,用来干扰分析,也是多个相同家族勒索软件ImpHash不同的原因:
image.png
大量无意义跳转和赋值:
image.png
通过导入表可以看到有对内存操作的API函数:
image.png
.text段中也有大量API字符串存在:
image.png
运行后会通过“LoadLibrary”+“GetProcAddress”动态获取API地址:
image.png
获取的API如下:

  1. 0012F1BC 75602864 kernel32.LoadLibraryA
  2. 0012F1C0 75601837 kernel32.GetProcAddress
  3. 0012F1CC 75440000 OFFSET user32.Ordinal2397
  4. 0012F1D0 7549EA71 user32.MessageBoxA
  5. 0012F1D4 7544D9E2 user32.GetMessageExtraInfo
  6. 0012F1D8 755B0000 kernel32.755B0000
  7. 0012F1DC 7563E695 kernel32.WinExec
  8. 0012F1E0 756028FC kernel32.CreateFileA
  9. 0012F1E4 756011CC kernel32.WriteFile
  10. 0012F1E8 756005B7 kernel32.CloseHandle
  11. 0012F1EC 755B2062 kernel32.CreateProcessA
  12. 0012F1F0 7561962F kernel32.GetThreadContext
  13. 0012F1F4 756005F4 kernel32.VirtualAlloc
  14. 0012F1F8 755EB42C kernel32.VirtualAllocEx
  15. 0012F1FC 75600D35 kernel32.VirtualFree
  16. 0012F200 755EB41C kernel32.ReadProcessMemory
  17. 0012F204 7561859F kernel32.WriteProcessMemory
  18. 0012F208 756401CB kernel32.SetThreadContext
  19. 0012F20C 755F3F14 kernel32.ResumeThread
  20. 0012F210 755FEFA0 kernel32.WaitForSingleObject
  21. 0012F214 75601074 kernel32.GetModuleFileNameA
  22. 0012F218 756029CC kernel32.GetCommandLineA
  23. 0012F21C 754460F8 user32.RegisterClassExA
  24. 0012F220 7544E18A user32.CreateWindowExA
  25. 0012F224 7544D656 user32.PostMessageA
  26. 0012F228 7545286F user32.GetMessageA
  27. 0012F22C 7544E0E4 user32.DefWindowProcA
  28. 0012F230 75602A1F kernel32.GetFileAttributesA
  29. 0012F238 77035E00 ntdll.ZwUnmapViewOfSection
  30. 0012F23C 77035EE0 ntdll.ZwWriteVirtualMemory
  31. 0012F240 755B1DF0 kernel32.GetStartupInfoA
  32. 0012F244 7563F651 kernel32.VirtualProtectEx
  33. 0012F248 75602ACF kernel32.ExitProcess

将自身创建为傀儡进程

获取API地址后陆续调用API地址完成功能。
调用“CreateProcessA”将自身挂起:
image.png
“GetThreadContext”获取线程上下文后“ReadProcessMemory”读取进程内存,“ZwUnmapViewOfSection”卸载基址内存空间的数据,“VirtualAllocEx”重新分配内存空间,申请的内存地址为自身加载基址“400000”:
image.png
“ZwWriteVirtualMemory”将内存中的PE数据写入到自身的加载基址:
image.png
后通过“SetThreadContext”设置线程上下文,“ResumeThread”恢复挂起的线程:
image.png

勒索本体

勒索本体中带有PDB信息“E:\Doc\My work (C++)_Git*Encryption\Release\encrypt_win_api*.pdb”:
image.png

豁免国家

程序运行后会先从“https://api.2ip.ua/geo.json”拉取ip的地理位置信息,提取其中的国家代码:
image.png
豁免部分东欧国家:

缩写 国家
RU 俄罗斯
BY 白俄罗斯
UA 乌克兰
AZ 阿塞拜疆
AM 亚美尼亚
TJ 塔吉克斯坦
KZ 哈萨克斯坦
KG 吉尔吉斯斯坦
UZ 乌兹别克

image.png
如果是豁免国家,不继续进行勒索功能,在%TEMP%下释放“delself.bat”,用来删除勒索和bat自身:
image.png

首次感染

创建工作目录

调用“UuidCreate”生成一个UUID,与“C:\Users[user]\AppData\Local”拼接为工作目录,“CreateDirectoryW”创建该目录后“CopyFileW”将自身拷贝到工作目录:
image.png

设置工作目录不可删除

“CreateProcessW”执行“icacls [工作目录] /deny *S-1-1-0:(OI)(CI)(DE,DC)”,将设置UUID命名的新文件夹访问权限为不可删除:
image.png
文件夹和文件都无法删除(重试也无法删除):
image.png

创建注册表Run项自启动

将副本设置为Run项下的“SysHelper”并附加参数“—AutoStart”:
image.png
程序运行后会检查启动的参数,进入不同逻辑。比如无参执行则认为没有创建持久性,继而进入首次感染的创建持久性操作。参数有是否是Admin用户,启动方式从计划任务/Windows服务,是否自动启动,网络环境(“—ForNetRes”):
image.png

创建计划任务

创建计划任务“Time Trigger Task”,设置为5分钟,过期时间为“2030-05-02 08:00”:
image.png
检查是否有MYSQL数据库服务,有则关闭。目的是为了更好的加密有价值的文件,比如数据库文件,将数据库服务停用后才可以对数据库文件进行操作:
image.png

计算机唯一信息

获取计算机的MAC地址:
image.png
调用CryptoAPI将字符串加密,格式为32个大写十六进制:
image.png

感染标识

新建注册表“HKCU\Software\Microsoft\Windows\CurrentVersion\SysHelper”值设置为1,作为感染标识:
image.png
首次感染除了设置标识之外,还会将MAC字符串拼接的字符串进行哈希(MD5)计算:
image.png
接着在“CreateThread”创建的线程中, 与其他字符串拼接成URL,与远程服务器进行通信:
image.png
URL格式如“http://astdg.top/nddddhsspen6/get.php?pid=[MAC的哈希([0-9A-F]{32})]&**first=true**”,从远程服务器获取数据储存到“C:\Users\[user]\AppData\Local\bowsakkdestx.txt”:
image.png
“bowsakkdestx.txt”中保留了公钥和id,id作为受害者ID使用,在下文中详述:
image.png
以及另一个线程会下载“http://securebiz.org/dl/build2.exe”到第二个使用“UuidCreate”生成随机UUID的工作目录中,并通过“ShellExecuteA ”执行:
image.png

排除项

排除目录

排除Windows目录和浏览器安装程序目录:

  1. C:\\Windows
  2. C:\\Program Files (x86)\\Google
  3. C:\\Program Files (x86)\\Internet Explorer
  4. C:\\Program Files (x86)\\Mozilla Firefox
  5. C:\\Program Files\\Google
  6. C:\\Program Files\\Internet Explorer
  7. C:\\Program Files\\Mozilla Firefox
  8. D:\\Windows
  9. D:\\Program Files (x86)\\Google
  10. D:\\Program Files (x86)\\Internet Explorer
  11. D:\\Program Files (x86)\\Mozilla Firefox
  12. D:\\Program Files\\Google
  13. D:\\Program Files\\Google
  14. D:\\Program Files\\Internet Explorer
  15. D:\\Program Files\\Internet Explorer
  16. D:\\Program Files\\Mozilla Firefox

排除文件

  1. ntuser.dat
  2. ntuser.dat.LOG1
  3. ntuser.dat.LOG2
  4. ntuser.pol
  5. _readme.txt

遍历文件并加密

检测

检测是否有文件“I:\5d2860c89d774.jpg”,暂不清晰此文件的内容和意义,根据盘符“I”考虑可能为移动盘(U盘):
image.png
遍历网络资源:
image.png
遍历文件并检测是否是目标类型文件:
image.png

遍历文件

image.png

加密文件

如果文件大小小于5字节,不加密,调用“MoveFileW”对文件进行重命名,添加后缀,如“gujd”:
image.png
Snipaste_2021-11-25_14-07-29.pngSnipaste_2021-11-25_14-07-58.png
如果文件大小大于5,跳过头部的5字节,对其余的文件内容进行加密:
image.png
在加密的文件末尾会加上受害者ID,以及固定的感染文件数据标识“{36A698B9-D67C-4E07-BE82-0EC5B14B4DF5}”:
image.png
以6字节文件,内容为“666666”加密后数据分布为例:
Snipaste_2021-11-25_14-11-55.png

加密

调用“CryptCreateHash”对目标类型文件的前5个字节和RSA公钥(异或0x80解密出的)的缓冲区进行哈希处理,调用“UuidCreate”生成新的UUID,然后调用Salsa20算法加密数据:
image.png

受害者ID

受害者ID会先尝试从上文中服务器返回数据(保存到“bowsakkdestx.txt”)中提取id的数据:
image.png
如果没有联网,则使用内置的离线ID,Stop变种的离线ID有一类是“t1”结尾:
image.png

离线ID

如该样本使用的离线ID是“NcBG8wI6Q1WFhUNlCRyjmrWGeGew2vvCKtJgKot1”,被释放到计算机的“C:\SystemID\PersonalID.txt”中。
使用离线ID加密的文件数据,以后有可能会有其对应的解密密钥流出,有可能在未来能解密:
image.png

情报搜索

勒索信

  1. ATTENTION!
  2. Don't worry, you can return all your files!
  3. All your files like pictures, databases, documents and other important are encrypted with strongest encryption and unique key.
  4. The only method of recovering files is to purchase decrypt tool and unique key for you.
  5. This software will decrypt all your encrypted files.
  6. What guarantees you have?
  7. You can send one of your encrypted file from your PC and we decrypt it for free.
  8. But we can decrypt only 1 file for free. File must not contain valuable information.
  9. You can get and look video overview decrypt tool:
  10. https://we.tl/t-mNr1oio2P6
  11. Price of private key and decrypt software is $980.
  12. Discount 50% available if you contact us first 72 hours, that's price for you is $490.
  13. Please note that you'll never restore your data without payment.
  14. Check your e-mail "Spam" or "Junk" folder if you don't get answer more than 6 hours.
  15. To get this software you need write on our e-mail:
  16. manager@mailtemp.ch
  17. Reserve e-mail address to contact us:
  18. managerhelper@airmail.cc
  19. Your personal ID:
  20. 0316ewgfDdNcBG8wI6Q1WFhUNlCRyjmrWGeGew2vvCKtJgKot1
  1. 注意!
  2. 别担心,您可以归还所有文件!
  3. 您的所有文件,如图片、数据库、文档和其他重要文件,都使用最强的加密和唯一密钥进行加密。
  4. 恢复文件的唯一方法是为您购买解密工具和唯一密钥。
  5. 该软件将解密您所有的加密文件。
  6. 你有什么保证?
  7. 您可以从您的 PC 发送您的加密文件之一,我们免费对其进行解密。
  8. 但是我们只能免费解密 1 个文件。文件不得包含有价值的信息。
  9. 您可以获取并查看视频概览解密工具:
  10. https://we.tl/t-mNr1oio2P6
  11. 私钥和解密软件的价格为 980 美元。
  12. 如果您在前 72 小时与我们联系,可享受 50% 的折扣,您的价格为 490 美元。
  13. 请注意,您永远不会在不付款的情况下恢复您的数据。
  14. 如果超过 6 小时仍未收到回复,请检查您的电子邮件“垃圾邮件”或“垃圾邮件”文件夹。
  15. 要获得此软件,您需要在我们的电子邮件中写道:
  16. managerhelper@airmail.cc
  17. 预留电子邮件地址与我们联系:
  18. managerhelper@airmail.cc
  19. 您的个人 ID
  20. 0316ewgfDdNcBG8wI6Q1WFhUNlCRyjmrWGeGew2vvCKtJgKot1

{36A698B9-D67C-4E07-BE82-0EC5B14B4DF5}

该勒索文件数据标识从19年开始使用,可以作为归因和判断勒索家族的方式:
image.png

解密方式

GUJD VIRUS

如何解密被 Stop/DJVU Ransomware 锁定的文件

熊猫正正迷你世界勒索病毒,你的文件被删了吗?

Stop勒索病毒是一款非常流行的勒索病毒,主要通过捆绑其他破解软件、游戏辅助程序、一些常用软件等渠道进行传播,最近一两年Stop勒索病毒通过捆绑KMS激活工具进行传播,以及其他一些防病毒软件等,到目前为止,此勒索病毒一共有一百多个不同的加密变种,此前Emsisoft公司发布过一款解密工具,可以解密大多数变种,不过Stop一直在更新,最新的版本暂时无法解密,笔者跟踪到的最新的Stop勒索病毒,加密后的文件后缀名为:gujd,黑客的邮箱地址已经更新为:manager@mailtemp.ch、managerhelper@airmail.cc。

DJVU 解密工具

image.png

360解密

image.png

安全研究

提取第2阶段PE

参考

Quick Heal - Stop (Djvu) Ransomware: Ransom For Your Shady Habits!
腾讯电脑管家 - Stop勒索病毒变种加密机制分析 部分情况可解密恢复
CYBER GEEKS - A DETAILED ANALYSIS OF THE Stop/DJVU RANSOMWARE
沙箱-AnyRun