简介
今年在 VB2023 这个全球知名的恶意软件会议上,Elastic Security Labs 团队的 Daniel Stepanic 介绍了有关 PIPEDANCE 的新见解 – 我们今年早些时候 披露 的恶意软件。除了演讲之外,我们还发布了一个 客户端 应用程序,该应用程序可以进行威胁研究,为攻防团队提供学习机会。在本出版物中,我们将介绍此客户端应用程序的功能以及如何开始使用该工具。我们的研究目标是帮助防御者通过模拟这个强大的威胁组织使用的恶意软件技术来提高他们对 PIPEDANCE 的理解。这包括不同的行为,例如
- 通过命名管道进行命令和控制通信
- 不同风格的进程注入
- 执行网络连接检查
- 系统/网络发现和枚举
回顾
PIPEDANCE 是一个由国家赞助的组织使用的自定义恶意软件系列,用于执行后期入侵活动。它的目的是为了实现横向移动、部署其他植入程序和执行侦察功能。PIPEDANCE 使用命名管道作为其命令和控制通信的主要通道。凭借各种独特的功能,我们认为它是一个有用的示例,可以用于研究目的,并可以帮助防御者验证安全工具。
有关 PIPEDANCE 恶意软件的详细分析,请查看我们之前的研究。
开发
为了更好地理解恶意软件中的不同功能,我们 Elastic Security Labs 团队有时会编写自定义应用程序和控制器来与恶意软件或恶意软件基础设施进行交互。此过程有助于培养对样本核心功能的了解,帮助更好地理解控制流程,并进一步验证不同的领域,例如函数和数据结构的输入和输出。另一个主要好处是发现入侵期间未直接观察到但仍包含在恶意软件中的功能。这使我们的团队可以收集更多情报、构建其他检测方法,并更多地了解恶意软件背后的攻击者目标。
虽然我们没有在本出版物中介绍这些确切的场景,但以下是您可以使用客户端执行的一些操作(但您可能会想到其他操作)
- 了解恶意软件如何滥用命名管道
- 验证使用命名管道进行网络活动的安全工具的数据源
- 使用来自 PIPEDANCE 通信请求的 PCAP 数据构建网络解码器
随着客户端的发布,我们希望社区可以使用您喜欢的语言编写其他 PIPEDANCE 客户端并比较笔记。
入门
注意:在设置实验室环境之前,请查看要求。在此示例中,我们将使用同一本地网络中的两个不同端点,其中已正确配置了命名管道、进程间通信和 SMB 设置。
第一步是下载 PIPEDANCE 样本(需要免费注册)并在一个端点上启动该程序,不带任何参数。此机器是攻击者有兴趣在其中运行其他植入程序并执行侦察的目标端点。执行后,将创建一个命名管道,并等待我们的客户端的传入连接。
.\e5ae20ac5bc2f02a136c3cc3c0b457476d39f809f28a1c578cda994a83213887
现在,PIPEDANCE 正在我们的目标机器上运行,请下载并编译存储库中的客户端文件。PIPEDANCE 恶意软件使用硬编码字符串 u0hxc1q44vhhbj5oo4ohjieo8uh7ufxe
,该字符串用作命名管道名称和 RC4 密钥。
获取新编译的客户端程序,并在单独的端点上执行它,使用一个参数,该参数使用运行 PIPEDANCE 的机器的目标 IP 地址或主机名(上一步中的机器)。一个例子是
pipedance_client.exe 192.168.47.130
执行后,客户端将与 PIPEDANCE 受害者签到,以检索恶意进程的 PID、工作目录和运行该进程的用户。应该列出一个命令菜单,允许操作员执行各种后期入侵活动。
下面的附录包含函数及其支持的参数。
结论
作为我们调查 PIPEDANCE 的研究的一部分,我们正在发布一个与恶意软件交互的客户端应用程序。此工具可用于评估现有的安全预防/检测技术,也可用于威胁研究目的。请查看我们的存储库,其中还有一个包含行为/YARA/狩猎规则的检测部分。
附录
处理程序命令
命令 ID | 描述 | 参数 |
---|---|---|
0 | 停止 | PIPEDANCE 客户端 |
1 | 按 PID 终止进程 | PID(例如,9867) |
2 | 运行 shell 命令并打印输出 | 命令(例如,ipconfig) |
4 | 列出当前工作目录中的文件 | |
6 | 将文件写入磁盘 | 文件名(完整路径)、文件内容 |
7 | 获取当前工作目录 | |
8 | 更改当前工作目录 | 文件夹路径 |
9 | 列出正在运行的进程 | |
23 | 使用提供的 PID 中的劫持令牌创建随机进程,并注入 shellcode(32 位) | PID(令牌劫持)、shellcode |
24 | 使用提供的 PID 中的劫持令牌创建随机进程,并注入 shellcode(64 位) | PID(令牌劫持)、shellcode |
25 | 从提供的 PID 打开进程并注入 shellcode(32 位) | PID(线程劫持)、shellcode |
26 | 从提供的 PID 打开进程并注入 shellcode(64 位) | PID(线程劫持)、shellcode |
71 | HTTP 连接检查 | 域(例如,google.com) |
72 | 使用提供的 DNS 服务器 IP 进行 DNS 连接检查 | DNS 服务器 IP |
73 | ICMP 连接检查 | ICMP 服务器 IP |
74 | TCP 连接检查 | IP、端口 |
75 | 不使用 DNS 服务器的 DNS 连接检查 | |
99 | 断开管道/退出线程 | |
100 | 终止 PIPEDANCE 进程/断开管道/退出线程 |