概述
Broadcom(博通)的子公司Symantec(赛门铁克)发现并命名了SolarWinds攻击中使用的另一种恶意软件 “Raindrop”,该恶意软件用于针对攻击者感兴趣的特定受害者。
Raindrop是继Sunspot、Sunburst(微软:Solorigate)和Teardrop之后在SolarWinds供应链攻击中发现的第4种恶意软件。该恶意软件仅在入侵的最后阶段使用,且仅部署在目标较少的网络上。
Raindrop (Backdoor.Raindrop)是一个loader,可提供Cobalt Strike的Payload,该恶意软件与之前FireEye发现并命名的“Teardrop”功能非常相似,但两者之间有一些关键的区别。
Teardrop是由初始Sunburst后门(Backdoor.Sunburst)交付的,而Raindrop也出现在找到Sunburst的系统上,且似乎已被用于在受害者的网络中传播。但迄今为止,Symantec尚未发现Sunburst直接交付Raindrop的证据。
Raindrop攻击
众所周知,Sunburst是2020年7月上旬在一个受害者的计算机中发现的,其通过SolarWinds Orion更新安装,有两台计算机遭到了入侵。
第二天,攻击者在其中一台计算机上安装了Teardrop。该计算机上被发现一个活动目录查询工具,以及一个专门为SolarWinds Orion数据库设计的凭证转储程序,该凭证转储程序与开源的Solarflare工具相似但不同。
11天后,在第三台受害计算机上(之前未观察到任何恶意活动),以bproxy.dll的名称安装了以前未见过的Raindrop的副本。这台计算机正在运行计算机访问和管理软件,攻击者可以利用该软件访问受感染组织中的任何一台计算机。
一个小时后,Raindrop恶意软件安装了一个名为“ 7z.dll”的文件,我们无法检索该文件。但是,在几个小时内,一个合法版本的7zip 被用于将目录服务内部文件(DSInternals)的副本提取到计算机上。DSInternals是一个合法工具,可用于查询Active Directory服务器和检索数据,其通常是密码、密钥或密码哈希。
随后,攻击者在这台电脑上又安装了一个名为mc_store.exe的工具,该工具是一个未知的PyInstaller打包应用程序,但在这台计算机上未观察到进一步的活动。
以下是Raindrop受害者时间的示例:
在另一个Raindrop 恶意软件受害者的计算机中,该恶意软件于5月底被安装在一个名为astdrvx64.dll的文件中。6月初,攻击者在该计算机上执行PowerShell命令,试图在同组织中的其它计算机上感染Raindrop。
"Invoke-Command -ComputerName REDACTED -ScriptBlock {rundll32c:PackagesPluginsMicrosoft.Powershell.DSC2.77.0.0binTelemetryStatus.dllTk_CreateItemType}"
"Invoke-WMIMethod win32_process -name create -argumentlist'rundll32 c:windowsSpeech_OneCoreEnginesTTSen-USenUS.Media.dllTkChangeEventWindow' -ComputerName REDACTED"
在Raindrop的第三个受害者中提取的CobaltStrike实例没有基于HTTP的命令和控制服务器,而是配置为通过SMB使用网络管道(\.pipeprotected_storage[REDACTED])通信。在这种情况下,受害计算机可能无法直接访问Internet,因此命令和控制通过本地网络上的另一台计算机进行转发。
Raindrop技术分析
Raindrop与Teardrop相似,因为两种恶意软件都充当Cobalt Strike Beacon的loader。不同的是,Raindrop 使用自定义的packer来包装 Cobalt Strike,该packer与Teardrop使用的packer不同。
Raindrop 被编译成 DLL,它是修改 7-Zip 源代码建立的。7-Zip代码未使用,旨在隐藏攻击者添加的恶意功能,当DLL被编译后,导出目录表的名称文件为"7-zip.dll",导出名称为:
DllCanUnloadNow
DllGetClassObject
DllRegisterServer
DllUnregisterServer
并随机抽取以下内容中的一项:
Tk_DistanceToTextLayout
Tk_GetScrollInfoObj
Tk_MainLoop
XGetGeometry
其使用的导出名称似乎与Tcl/Tk项目使用的名称重叠,详情参考:
https://github.com/tcltk/tk/blob/main/generic/tk.decls
https://github.com/tcltk/tk/blob/main/generic/tkInt.decls
自定义packer
每当加载DLL时,它就会从DllMain子程序启动一个新的线程,来执行恶意代码。这个恶意线程会执行以下操作:
-
计算以延迟执行。这并不影响计算机功能。
-
找到嵌入在合法7-Zip机器代码中的编码后Payload的起始点。
为了找到编码后Payload的起始点,packer使用隐写术,从子程序的开头开始扫描字节,并跳过所有字节,直到下列代表有关操作码(opcodes)的字节首次出现:
.data:0000000180053008 opcodes db 5, 0Dh, 15h, 1Dh, 25h, 2Dh, 35h,3Dh, 0B8h
然后,该恶意软件将执行以下操作:
-
提取编码后的Payload。(包括从预先确定的位置复制数据,这些位置恰好对应相关机器指令的立即值。)
-
对提取的Payload进行解密。(在CBC模式下使用AES算法。)
-
对解密后的Payload进行解压。(使用LZMA算法。)
-
对解压后的Payload进行解密。(与字节密钥的简单XOR,因此不会影响压缩率。)
-
将解密后的Payload作为shellcode执行。
Raindrop 和Teardrop
尽管Raindrop与Teardrop非常相似,但这些工具之间存在一些差异。如之前所述,Raindrop使用其它packer。它们使用的packer在以下方面有所不同:
类别 |
TEARDROP |
RAINDROP |
Payload格式 |
PE格式的自定义,重用功能。可以通过自动转换将打包程序与一系列作为PE DLL提供的不同Payload一起重用。 |
仅Shellcode。 |
Payload嵌入 |
数据部分的二进制Blob。 |
隐写术,存储在机器代码中的预定位置。 |
Payload加密 |
visualDecrypt与使用长密钥的XOR相结合。 |
减压前的AES层; 解压缩后使用一个字节密钥分离XOR层。 |
Payload压缩 |
没有。 |
LZMA。 |
OBFUSCATION(混淆) |
读取JPEG文件。插入垃圾代码块,有些可以使用多态引擎生成。 |
非功能代码延迟执行。 |
导出名称 |
导出名称有所不同,在某些情况下,名称与Tcl/Tk项目重叠。 |
导出名称与Tcl/Tk项目重叠。 |
被盗代码 |
来自预先存在的第三方组件的机器代码的字节副本。原始代码仅以编译格式分发。 |
重新编译的第三方源代码。 |
虽然这两个恶意软件系列都是为了部署Cobalt Strike Beacon而设计的,但Cobalt Strike的配置存在差异。到目前为止,Symantec已经发现了4个Raindrop样本。在三种情况下,CobaltStrike被配置为使用HTTPS作为通信协议,在第四个中,它被配置为使用SMB Named Pipe(SMB命名管道)作为通信协议。
使用HTTPS通信的三个Raindrop样本都遵循以前在一个Teardrop样本(b820e8a2057112d0ed73bd7995201dbed79a79e13c79d4bdad81a22f12387e07)中观察到类似的配置模式。主要的相似点如下:
TEARDROP
SHA256 b820e8a2057112d0ed73bd7995201dbed79a79e13c79d4bdad81a22f12387e07
URLs https(://)infinitysoftwares(.)com/files/information_055.pdf
https(://)infinitysoftwares(.)com/wp-admin/new_file.php
POST FORM name="uploaded_1";filename="33139.pdf"Content-Type: text/plain
RAINDROP
SHA256 be9dbbec6937dfe0a652c0603d4972ba354e83c06b8397d6555fd1847da36725
URLs https(://)bigtopweb(.)com/files/page_306.pdf
https(://)bigtopweb(.)com/wp-admin/admin-ajax.php
POST FORM name="uploaded_1";filename="84921.pdf"Content-Type: text/plain
RAINDROP
SHA256 f2d38a29f6727f4ade62d88d8a68de0d52a0695930b8c92437a2f9e4de92e418
URLs https(://)panhardware(.)com/files/documentation_076.pdf
https(://)panhardware(.)com/wp-admin/new_file.php
POST FORM name="uploaded_1";filename="18824.pdf"Content-Type: text/plain
上述所有域名都使用通用注册器NameSilo、LLC,除了panhardware[.]com(目前处于sinkholed),其它域名都有共同的域名服务器:
ns1.dnsowl.com
ns2.dnsowl.com
ns3.dnsowl.com
总结
Raindrop的发现是我们调查SolarWinds攻击的重要一步,因为它可以进一步洞悉攻击者感兴趣的组织的攻击后活动。Teardrop是在被初始Sunburst木马感染的计算机上活动,而Raindrop则出现在网络的其它地方,被攻击者用来横向移动并在其它计算机上部署Payload。
保护和缓解
在计算机上部署Symantec Endpoint或其它终端防护产品,来检测并阻止与这些攻击相关的工具。
基于文件的保护
Backdoor.Raindrop
Backdoor.Teardrop
Backdoor.Sunburst
Backdoor.Sunburst!gen1
Backdoor.SuperNova
基于网络的保护
System Infected: Sunburst Malware Activity
YARA规则
Yara规则下载链接:
https://github.com/Symantec/raindrop/blob/main/raindrop.yara
IOC
SHA256 |
描述 |
f2d38a29f6727f4ade62d88d8a68de0d52a0695930b8c92437a2f9e4de92e418 |
astdrvx64.dll & sddc.dll (Raindrop) |
be9dbbec6937dfe0a652c0603d4972ba354e83c06b8397d6555fd1847da36725 |
bproxy.dll (Raindrop) |
955609cf0b4ea38b409d523a0f675d8404fee55c458ad079b4031e02433fdbf3 |
cbs.dll (Raindrop) |
N/A |
Telemetry.Settings.dll (类似Raindrop) |
N/A |
enUS.Media.dll (类似 Raindrop) |
N/A |
TelemetryStatus.dll (类似 Raindrop) |
240ef5b8392b8c7a5a025c36a7e5b0e03e5bb0d0d1a28703bb22e6159a4fd10e |
mc_store.exe (未知) |
f2d38a29f6727f4ade62d88d8a68de0d52a0695930b8c92437a2f9e4de92e418 |
panhardware[.]com |
955609cf0b4ea38b409d523a0f675d8404fee55c458ad079b4031e02433fdbf3 |
\.pipeprotected_storage[REDACTED] |
be9dbbec6937dfe0a652c0603d4972ba354e83c06b8397d6555fd1847da36725 |
bigtopweb[.]com |
原文链接:
https://symantec-enterprise-blogs.security.com/blogs/threat-intelligence/solarwinds-raindrop-malware
本文始发于微信公众号(维他命安全): SolarWinds供应链攻击:Raindrop恶意软件分析
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论