卡巴斯基检测到 DarkPulsar 感染,又是 NSA 恶意软件
DarkPulsar 是一种 FuzzBunch “植入物”,通常与 DanderSpritz 一起使用
2017年3月,ShadowBrokers 放出了一份震惊世界的机密文档,其中包括两个框架:DanderSpritz 和 FuzzBunch。
DanderSpritz 完全由插件组成,用于收集情报、利用漏洞和操控已接管的设备。它基于 Java 编写,提供类似于僵尸网络管理面板的图形界面以及类似 Metasploit 工具的控制面板。它还整合了用于非 FuzzBunch 受控设备的后门和插件。
概述
Fuzzbunch 为不同的实用程序提供了一个用于交互和协同工作的框架,包含各种类型的插件,其目的是分析对象、利用漏洞、植入任务等。FuzzBunch 框架插件包中的文件分为三种类型:
- %pluginName%-version.fb
这是框架的实用程序文件。它从 XML 复制标头并包含插件的 ID。
- %pluginName%-version.exe
当 FuZZbuNch 收到执行命令时,运行此可执行文件。
- %pluginName%-version.xml
此配置文件描述了插件的输入和输出参数的名称、类型和描述。这些信息都可以通过 FuzzBunch 界面显示。这种文件类型划分规范了默认参数的设置,从而提升了框架的可用性。
ImplantConfig 是一个 Fuzzbunch 可调用的工具包,包含一个名为 DarkPulsar 的管理模块,用于管理受控设备的插件,用于控制名为“sipauth32.tsp”的远程控制后门。 它支持以下命令:
- Burn
- RawShellcode
- EDFStagedUpload
- DisableSecurity
- EnableSecurity
- UpgradeImplant
- PingPong
Burn、RawShellcode、UpgradeImplant 和 PingPong 支持移除/升级植入软件、运行任意代码和检查后门是否已安装在远程机器上,其他命令的目的暂不明确。
卡巴斯基实验室在分析 DarkPulsar 时发现了几个用于加密 C&C 和植入软件之间流量的常量:
卡巴斯基认为这些常量可以作为进一步深入调查的抓手,所以构建了一个检测器。几个月后,神秘的 DarkPulsar 后门浮出水面,而且包含32位和64位版本。研究人员发现大约50个案例,分别位于俄罗斯、伊朗和埃及,常见感染 Windows 2003/2008 服务器,涉及核能、电信、IT、航空航天和研发等领域。
DarkPulsar 技术亮点
DarkPulsar 植入的是一个动态库文件,从其工作负载导出的函数来看可以实现以下几类功能:
- 两个匿名函数用于在系统中安装后门。
- 名称与 TSPI(电话服务提供程序接口)操作相关的函数,用于确保后门存在于自动运行列表中并自动启动。
- 名称与SSPI(安全支持提供程序接口)操作相关的函数,主要用于运行恶意代码。
SSPI 和 TSPI 接口的实现很简单,使得 DarkPulsar 导出的函数与接口函数的名称相同即可,只不过用恶意代码替代了正确的电话服务。
这个动态库通过匿名函数安装在系统中,调用具有管理员权限的 Secur32.AddSecurityPackage 以及参数中它自己库的路径来启动后门,使得 lsass.exe 将 DarkPulsar 加载为 SSP/AP 并调用其导出的函数 SpLsaModeInitialize,由 DarkPulsar 初始化后门。其中 AddSecurityPackage 用于将代码注入到 lsass.exe。它还在 HKLM\Software\Microsoft\Windows\CurrentVersion\Telephony\Providers 中添加了其库文件名。
这样一来 Telephony API(TapiSrv)开始加载随着远程访问连接管理器(RasMan)服务启动开始加载,将该启动类型设置为“自动”。加载电话服务提供商的库时,TapiSrv 调用 TSPI_lineNegotiateTSPIVersion,其中包含 AddSecurityPackage 调用以将恶意代码注入到 lsass.exe 中。
DarkPulsar 通过为 SpAcceptLsaModeContext(负责身份验证的函数)安装钩子来实现恶意功能。此类注入行为在进程lsass.exe中的多个系统身份验证数据包中进行,并允许 Darkpulsar 根据以下协议控制身份验证过程:
- Msv1_0.dll – 用于NTLM协议,
- Kerberos.dll – 用于Kerberos协议,
- Schannel.dll – 用于TLS / SSL协议,
- Wdigest.dll – 用于摘要协议,
- Lsasrv.dll-用于谈判协议。
在完成这个过程之后,Darkpulsar 能够将恶意软件流量嵌入到系统协议中。由于此类网络活动是根据系统标准进行的,因此它只会反映在系统进程中,也就是说它使用了为上述协议保留的系统端口,而不会妨碍其正常运行。
成功连接到 DarkPulsar 植入软件的网络流量
控制身份验证过程的第二个优势是可以绕过输入用户名和密码保护,以获取对需要身份验证的对象的访问权限,例如进程列表、远程注册表、SMB 文件系统。发送 Darkpulsar 的 DisableSecurity 命令后,受控设备的后门钩子将调用 SpAcceptLsaModeContext 函数,使得该函数传递的凭据有效,然后系统将提供对客户端的受保护对象的访问权限。
使用 DarkPulsar
Darkpulsar-1.1.0.exe 提供基于“一个命令+一次启动”原则构建的管理界面。要执行的命令必须在配置文件 Darkpulsar-1.1.0.9.xml 中指定,或者作为命令行参数指定,至少详细说明:
- 目标机器是使用32位还是64位系统;
- 协议(支持 SMB、NBT、SSL、RDP 协议)以提供命令和端口号;
- 用于解密会话AES密钥的私有 RSA 密钥。
Darkpulsar-1.1.0 是 Fuzzbunch 框架的插件,可以管理参数和协调不同的组件。
下面是运行 DisableSecurity 之后的进程表实例,允许执行任何没有有效凭据的插件,并通过常规系统功能(远程注册表服务)进行操作:
DanderSpritz
DanderSpritz 是用于控制受感染机器的框架,与 FuZZbuNch 不同,因为后者为具有特定功能的后期开发阶段提供了部分工具包,例如 DisableSecurity 和 DarkSeuls 的 EnableSecurity。
DanderSpritz 适用于更大范围的后门,在受控设备中使用 PeedleCheap 来启动攻击者的恶意软件。PeddleCheap 是 DanderSpritz 的插件,可用于配置植入软件并连接到受感染的机器。建立连接后,所有 DanderSpritz 后期开发功能均可用。
这就是 EDFStagedUpload 模式中的 DarkPulsar 通过植入恶意软件感染设备的渠道:PCDllLauncher(Fuzzbunch 的插件)在受控设备一侧部署 PeddleCheap 植入软件,DanderSpritz 提供用户友好的开发界面。所以,PCDllLauncher 的全名是’PeddleCheap DLL Launcher’。
整合 DanderSpritz 方案、PeddleCheap 插件、DarkPulsar 插件和 PCDllLauncher 到一起实现恶意功能共包含四个步骤:
- 通过 FuZZbuNch,运行命令 EDFStagedUpload 以启动 DarkPulsar。
- 在 DanderSpritz 中,运行命令 pc_prep(PeedelCheap Preparation)以准备恶意代码和要启动的库文件。
- 在 DanderSpritz 中,运行命令 pc_old(这是命令 pc_listen -reuse -nolisten -key 默认的别名),这会将其设置为等待来自 Pcdlllauncher 的 socket。
- 通过 FuZZbuNch 启动 Pcdlllauncher 并指定使用 ImplantFilename 参数中的命令 pc_prep 准备的有效路径。
总结
FuzzBunch 和 DanderSpritz 框架提供了很大的灵活性,包含诸多专为不同任务设计的插件,比如说 FuzzBunch 插件负责监控和攻击设备,DanderSpritz 框架中的插件则是为管理已感染的受害者而开发的。
DarkPulsar 后门的发现有助于理解它作为两个泄露框架之间的桥梁作用,以及它们如何成为同一攻击平台的一部分。这些平台是为长期潜伏攻击而设计的,从 DarkPulsar 的持久性和潜伏能力(例如将其流量封装到合法协议中并绕过密码保护以通过身份验证)可以看出背后的开发者非常之专业。
- 在受感染的计算机中执行EDFStagedUpload时,会建立永久连接,这是出现端口445流量的原因。lsass.exe 中还出现了一对绑定的 socket
- 当 DanderSpritz 通过 PcDllLauncher 插件部署 PeddleCheap 的恶意代码时,网络活动会急剧增加;
- 当终止与受感染计算机的连接时,网络活动将停止,并且只保留 lsass.exe 中两个绑定 socket。
◾️