◼受影响的平台:Windows
◼对用户的影响:数据加密、数据销毁
◼威胁程度:严重
Wizard Spider于2016年首次被发现,但近年来它开发的恶意软件变得越来越复杂。最初,Wizard Spider以其银行木马TrickBot而闻名,但后来又开发了Ryuk,Conti和BazarLoader。
Wizard Spider开发的恶意软件没有在任何犯罪论坛上公开广告,表明其开发的恶意软件都是定制的。该组织开展了不同类型的活动,其中包括倾向于针对性强、回报率高的勒索软件活动,这些活动被称为“大猎杀”。Wizard Spider会根据其目标价值计算其要求的赎金,而且似乎没有任何行业能够幸免于难。在新冠疫情期间,它与Ryuk和Conti一起袭击了美国数十家医疗机构。来自世界各地的医院也受到了影响。
Diavol简介
6 月初,FortiEDR 阻止了一次勒索软件攻击。在成功阻止攻击后,研究人员能够隔离出两个当时在VirusTotal上没有发现的可疑文件:locker.exe和locker64.dll。在攻击的时间线中,locker.exe 比 locker64.dll 早一天部署。
虽然研究人员能够将 locker64.dll 识别为 Conti (v3) 勒索软件,但 locker.exe 似乎完全不同。所以,它应该是一个新型勒索软件。
在本文中,研究人员将深入了解 Diavol 的内部运作及其可能是 Wizard Spider 的犯罪集团开发的原因。
Diavol首次被发现
勒索软件会在它访问的每个文件夹中以文本格式发送一封勒索信,如图1所示。
删除的“README_FOR_DECRYPT.txt”赎金提示
尽管研究人员没有找到能够执行此操作的样本,但根据该说明,可以推断出攻击者已经从受害者的设备上窃取了数据,这要么是虚张声势,要么是未来功能的占位符。通过浏览这个URL,我们看到了一个网站,如图2和图3所示,研究人员从中得出了勒索软件的名称。
使用 Tor 浏览器的 Diavol 网站
作为相当独特的加密过程的一部分,Diavol 使用用户模式异步过程调用 (APC) 进行操作,而不使用对称加密算法。通常,勒索软件开发者的目标是在最短的时间内完成加密操作。非对称加密算法不是显而易见的选择,因为它们比对称算法慢得多。
技术分析
locker.exe 是使用 Microsoft Visual C/C++ Compiler 编译的 32 位可执行文件。文件上的时间戳 2021-04-30 15:58:15 支持这种勒索软件相对较新的假设。
在执行时,Diavol首先检查命令行参数:
◾-p:文件的路径,其中包含要首先扫描文件的路径列表;
◾-log:日志文件的路径;
◾-m: mode: net或local:
◾net:仅加密网络共享;
◾Local:仅加密本地驱动器并忽略网络共享;
◾-h:包含要枚举共享的特定主机(名称和 IP)的文件的路径;
◾-s:初始注册消息将发送到的 IP 地址,覆盖硬编码地址;
在该事件中观察到下列命令行参数:
-p "C:\b.txt" -m local -log "C:\programdata\log.txt"
日志文件列出了经过加密的文件。
开发者并没有删除调试信息文件的路径,不幸的是,它没有泄露有关勒索软件开发者的敏感或攻击的细节:
D:\Development\Master\onion\locker.divided\LockMainDIB\Release\LockMainDIB.pdb
虽然 Diavol 没有封装也没有任何反汇编技巧,但它确实使用了一种有趣的反分析技术来混淆其代码。它的主要例程保存在位图图像中,这些图像存储在 PE 资源部分中。在调用每个例程之前,它会将位图中的字节复制到具有执行权限的全局缓冲区中。
Diavol 的内部例程存储为位图
每个例程使用的导入也存储在“OFFSET”下的资源部分,与位图同名。
Diavol 为 REGISTER 例程导入数据
Diavol 有 14 个不同的例程存储为位图,它们按以下顺序调用:
Diavol 从资源部分调用例程的执行流程
为受害者创建一个标识符
GENBOTID 例程创建受感染设备的唯一标识符。它由以下部分组成:
< NetBIOS_computer_name > + < username > + “_W” + < 十六进制的操作系统主版本 > + < 十六进制的操作系统次要版本 > + < 十六进制的操作系统内部版本号 > + “.” + < random_GUID_bytes in hex >
初始化配置
SHAPELISTS 例程从 PE 的 .data 部分复制硬编码配置,配置以“STATIC_DATA”字符串开头,并包含许多 unicode 字符串:
◾Base64 编码的 RSA 公钥;
◾初始注册的服务器地址;
◾初始注册时的组ID ;
◾不包含的文件扩展名、文件名和路径列表;
◾要终止的进程名称列表;
◾要停止的服务名称列表;
◾枚举文件的路径列表;
◾要删除的文件名列表;
◾赎金记录(反向分析)。
注册到C&C服务器并更新配置
REGISTER有效载荷使用WinINet API向服务器发送请求并返回响应状态代码, Diavol 向 C&C 服务器发出一个 POST 请求到 hxxp://< server_address >/BnpOnspQwtjCA/register URL
User-Agent: "Agent" Content-Type: application/x-www-form-urlencoded; charset=UTF-8
请求的正文是:
cid=< unique_victim_id >&group=< group_id_from_config >ip_local1=111.111.111.111&ip_local2=222.222.222.222&ip_external=2.16.7.12
如果服务器返回状态成功,勒索软件将尝试从 C&C 服务器获取更新的配置。由于没有提供“-s”命令行参数,而且配置的地址是 127.0.0.1 (本地主机) ,所以勒索软件没有注册自己或检索配置更新。
FROMNET例程也使用WinINet API向服务器发送一个请求,并从响应返回数据。为了获取更新的配置并覆盖硬编码的值,勒索软件使用与之前相同的标头发送 HTTP GET 请求:
hxxp://173[.]232[.]146[.]118/Bnyar8RsK04ug/< unique_victim_id >/qqq123/< object_name >
支持以下对象
- /key:base64 编码的 RSA 公钥;
- /services:要停止的服务列表;
- /priority:首次扫描文件的路径列表;
- /ignore:要排除的文件扩展名、文件名和路径的列表;
- /ext :要包含的文件扩展名列表;
- /wipe:如果在枚举文件系统时找到要删除的文件名列表;
- /landing:赎金通知;
检测到173.232.146.118的网络流量,发现HTTP Cookie标头中包含字符串diavol_session。
到 Diavol 的 C&C 服务器的网络流量
停止服务和进程
为了最大限度地影响目标设备并加密尽可能多的文件,勒索软件会终止正在运行的进程,这些进程可以锁定对有价值文件的访问,例如数据库、办公应用程序、财务\会计软件、Web 服务器和虚拟机。
SERVPROC 使用服务控制管理器 (SCM) API 终止服务,此 API 需要管理员权限,这表明攻击者已了解此要求并事先采取了适当的步骤。
该示例尝试停止以下服务:
sqlservr.exe, sqlmangr.exe, RAgui.exe, QBCFMonitorService.exe, supervise.exe, fdhost.exe, Culture.exe, RTVscan.exe, Defwatch.exe, wxServerView.exe, sqlbrowser.exe, winword.exe, GDscan.exe, QBW32.exe, QBDBMgr.exe, qbupdate.exe,axlbridge.exe, 360se.exe, 360doctor.exe, QBIDPService.exe, wxServer.exe, httpd.exe, fdlauncher.exe, MsDtSrvr.exe, tomcat6.exe, java.exe, wdswfsafe.exe.
此外,恶意软件开发人员不会检查 API 调用是否成功。
反汇编 SCM API 调用以停止服务
KILLPR 使用 CreateToolhelp32Snapshot、Process32First 和 Process32Next API 来枚举系统中正在运行的进程。
该示例尝试终止以下进程列表:
DefWatch, ccEvtMgr, ccSetMgr, SavRoam, dbsrv12, sqlservr, sqlagent, Intuit.QuickBooks.FCS, dbeng8, sqladhlp, QBIDPService, Culserver, RTVscan, vmware-usbarbitator64, vmware-converter, VMAuthdService, VMnetDHCP, VMUSBArbService, VMwareHostd, sqlbrowser, SQLADHLP, sqlwriter, msmdsrv, tomcat6, QBCFMonitorServicechrome.exe, outlook.exe, chrome.exe.
Diavol 的开发者在他们的硬编码配置中犯了一些错误,对于初学者,SERVPROC 获取要终止的进程名称列表而不是要停止的服务名称,反之亦然。服务列表似乎包含与服务无关的项目,例如“winword.exe”。在进程列表中,只有最后三项看起来像实际的进程名称,甚至其中一项是错误的,“QBCFMonitorServicechrome.exe”看起来像“QBCFMonitorService”和“chrome.exe”的组合。
初始化加密密钥
RSAINIT 使用标准 WinCrypt API 初始化用于加密的 RSA 公钥。
查找所有要加密的驱动器
ENMDSKS 使用 GetLogicalDriveStrings API 获取系统中的所有本地驱动器并检查以确保它们不在排除列表中。如果mode命令行参数(" -m ")设置为" net ",则跳过此例程。
不包含的文件扩展名、文件名和路径的默认列表为:
*.exe, *.sys, *.dll, *.lock64, *readme_for_decrypt.txt, *locker.txt, *unlocker.txt, %WINDIR%\, %PROGRAMFILES%\, %PROGRAMW6432%\, %TEMP%\
SMBFAST 和 SMB 例程枚举可用的网络共享以供访问。
SMBFAST只会在“-h”参数存在时被调用,此例程扫描特定主机上可访问的网络共享。
SMB协议对ARP表中的主机进行可访问网络共享扫描,请注意,如果mode命令行参数(" -m ")被设置为" local ",这个例程将被跳过。
查找需要加密的文件
FINDFILES 遍历给定路径中的文件和目录,此例程被多次调用:
◾取决于“-p”命令行或硬编码配置;
◾根据 ENMDSKS 结果;
◾根据 SMBFAST 结果;
◾根据 SMB 结果;
首先,例程检查给定的文件或文件夹是否不在排除列表中。然后,例程确定当前项是否在要删除的文件列表中。如果不是,它将当前线程中的APC作为参数获取该项的路径。
文件系统遍历的反汇编
通过删除卷影副本防止恢复
VSSMOD根据操作系统版本(Windows Server 2003或Vista及其更新版本)和体系结构(32或64位),在当前工作目录下删除并执行wscpy.exe,删除卷影副本快照是使用 IVssBackupComponents COM 对象调用 DeleteSnapshots 方法来执行的。
被删除的二进制文件也以明文形式保存在“TEXT”下的资源部分中,这些二进制文件包含一个PDB参考源文件,用于编译恶意二进制文件:
D:\Projects\Repository\LockCry.divided\WipeShadowCopies64\RelNoCRT\WipeShadowCopies64.pdb D:\Projects\Repository\LockCry.divided\WipeShadowCopies64\x64\RelNoCRT\WipeShadowCopies64.pdb D:\Development\Master\onion\locker.divided\WipeShadowCopies64\RelNoCRT_Win2003\WipeShadowStorageWin2003_32.pdb D:\Development\Master\onion\locker.divided\WipeShadowCopies64\x64\RelNoCRT_Win2003\WipeShadowStorageWin2003_64.pdb
加密
如前所述,FINDFILES 会将具有文件或目录路径的 APC 对象排队,为了执行 APC,主函数在其最后步骤中调用 SleepEx API ,以将线程设置为警报状态。
APC 例程会检查参数是否为目录,并会创建“README_FOR_DECRYPT.txt”赎金记录,无论目录中的文件是否已加密。如果参数是一个文件,则将调用 ENCDEFILE 例程。
检查参数类型的 APC 例程的反汇编
与大多数其他勒索软件不同,Diavol 不使用任何对称加密,而仅使用 RSA 来加密文件。
ENDEFILE 检查文件大小,如果小于 2000000 字节,则只有前11700个字节将被加密。如果文件大小等于或大于 2000000 字节,则只会加密前 1170000 字节。
每个11700字节的块被拆分为十个117字节的块,每个块使用CryptEncrypt API进行加密。117个明文字节变成128个密文字节。因此,在加密之后,11700个字节变成了12800个字节。Diavol将覆盖该文件,并在块的原始偏移量处写入11700个加密字节,并将剩余的1100个字节追加到文件的末尾。
最后,ENCDEFILE 调用 MoveFile API 并将“.lock64”扩展名附加到文件名。
一旦所有 APC 出列并完成,线程在调用 SleepEx 后返回。
更换桌面壁纸
在进程终止之前,调用 CHNGDESK。
首先,它捕获桌面窗口并将背景颜色设置为黑色。然后它将“所有文件都加密!有关更多信息,请参阅带有 DrawText API 的“README-FOR-DECRYPT.txt”到位图图像,并将其保存为“encr.bmp”在公共图片文件夹中。最后,它使用带有 SPI_SETDESKWALLPAPER 标志的 SystemParametersInfoAPI 将桌面壁纸更改为新图像。
更改后的桌面壁纸
与 Conti 和 Egregor 的关系
由于在这次攻击中 Diavol 与 Conti 勒索软件一起部署,尽管是在不同的设备上,但研究人员试图查看它们之间是否存在任何相关性。
从命令行参数开始,Diavol 使用的参数与 Conti 使用的参数几乎相同,用于相同的功能:日志文件、加密本地驱动器或网络共享,以及扫描特定主机以获取网络共享。此外,Diavol 和 Conti 在对文件路径进行排队以进行加密时的操作与异步 I/O 操作类似。
Diavol 和 Egregor 勒索软件之间也可能存在联系。从图12中可以看出,勒索信中有几行是完全相同的,尽管这并不可靠,因为这可能只是Diavol的作者故意制造的障眼法。
一些报道称,Conti 背后的攻击者 Wizard Spider 和 Egregor 背后的攻击者 Twisted Spider 之间存在联系。据称,这些组织在各种行动中进行合作。他们也因双重勒索受害者(数据盗窃和加密)而臭名昭著。
Diavol 的赎金高于 Egregor 的赎金
总结
研究人员对新的勒索软件——Diavol 进行了完整分析。目前,此次攻击的来源还未查明。攻击者使用的参数以及硬编码配置中的错误暗示了一个事实,即 Diavol 是其运营商武器库中的一个新工具,他们尚未完全开发成功。
随着攻击的进行,研究人员在网络中发现了更多名为 locker.exe 的 Conti 有效载荷,这坐实了攻击者确实是 Wizard Spider 的可能性。尽管 Diavol、Conti 和其他相关勒索软件之间存在一些相似之处,但仍不清楚它们之间是否存在直接联系。
本文翻译自:https://www.fortinet.com/blog/threat-research/diavol-new-ransomware-used-by-wizard-spider如若转载,请注明原文地址