VoidLink:云原生恶意软件框架深度剖析

0 阅读18分钟

关键结论

  • VoidLink 是一个高级恶意软件框架,由自定义加载器、植入程序、Rootkit 和模块化插件组成,旨在维持对 Linux 系统的长期访问。该框架包含多种云原生功能和模块,专为在云和容器环境中长期可靠运行而设计。
  • VoidLink 的架构极其灵活且高度模块化,其核心是一个自定义插件 API,该 API 的灵感似乎来源于 Cobalt Strike 的 Beacon Object Files (BOF) 方法。此 API 被用于默认提供的 30 多个插件模块中。
  • VoidLink 采用了多种运营安全(OPSEC)机制,包括运行时代码加密、检测到篡改时自删除、基于检测到的环境自适应调整行为,以及一系列用户态和内核级 Rootkit 功能。
  • 该框架似乎由具有中国背景的开发者(具体隶属关系尚不清楚)构建和维护,且正在积极演进中。其整体设计和详尽的文档表明它可能被用于商业目的。
  • 开发者展示了高水准的技术专长,精通多种编程语言,包括 Go、Zig、C 以及 React 等现代框架。此外,攻击者对复杂的操作系统内部机制有深入的了解,从而能够开发出高级而复杂的解决方案。

VoidLink——一个云优先的恶意软件框架

2025 年 12 月,Check Point Research 发现了一小批此前未见的 Linux 恶意软件样本,这些样本似乎源自一个与中国有关联的开发环境。许多二进制文件包含调试符号和其他开发痕迹,这表明我们看到的可能是正在开发中的版本,而非一个已完工并广泛部署的工具。样本间变化的速度和多样性表明,这是一个正在快速迭代以实现更广泛实际应用的框架。

该框架的原开发者内部将其称为 VoidLink,是一个用 Zig 编写的、面向云环境的植入程序,专为在现代基础设施中运行而设计。它可以识别主流云环境,检测自身是否在 Kubernetes 或 Docker 内运行,并据此调整其行为。VoidLink 还会收集与云环境以及标准源代码版本控制系统(如 Git)相关的凭证,这表明软件工程师可能是其潜在目标,无论是出于间谍活动目的,还是未来可能的供应链攻击。

VoidLink 的功能集异常广泛。它包括 Rootkit 级别的能力(LD_PRELOAD、LKM 和 eBPF)、用于扩展功能的内存中插件系统,以及自适应隐身功能——根据检测到的安全产品调整运行时规避策略,在受监控环境中更注重运营安全而非性能。它还支持多种命令与控制信道,包括 HTTP/HTTPS、ICMP 和 DNS 隧道,并能在受感染主机之间形成点对点/网状通信。在最新的样本中,大多数组件似乎已接近完成,并附带一个功能完备的 C2 服务器和一个集成到同一生态系统中的仪表板前端。

该框架的预期用途尚不清楚,截至本文撰写时,尚未观察到实际感染的证据。其构建方式表明,它最终可能会被用于商业用途,无论是作为产品出售,还是为客户开发的框架。

命令与控制面板

图 1 – 主面板

为便于高效管理攻击,VoidLink 配备了一个基于 Web 的仪表板,使操作员能够完全控制正在运行的代理、植入程序和插件。该界面已针对中文操作员进行本地化,但导航遵循熟悉的 C2 布局:左侧边栏将页面分组为“仪表盘”、“攻击”和“基础设施”。“仪表盘”部分涵盖了核心的操作循环(代理管理、内置终端和植入程序构建器)。而“攻击”部分则组织了利用后活动,如侦察、凭证获取、权限维持、横向移动、进程注入、隐身和证据清除。

仪表盘攻击基础设施
植入程序管理侦察隧道管理
终端凭证获取设置
构建器权限维持隐藏模块
插件管理横向移动证据清除
任务管理进程注入

图 2 – 权限维持面板

图 3 – 证据清除面板

“生成器”面板充当 VoidLink 的构建界面,使威胁行为者能够按需生成额外的、自定义的植入程序变体。在此界面上,操作员可以选择所需的功能集并调整整体规避策略。它还公开了操作参数,如植入程序的心跳或信标间隔,允许行为者通过控制植入程序回连和执行任务的频率来平衡响应速度与隐蔽性。所有这些参数也可以在运行时更改。

图 4 – 构建器面板

仪表板中最有趣的组件是插件管理面板。它允许操作员将选定的模块部署到受害者机器,并上传自定义模块。在我们研究时,已有 37 个可用插件,分为几个类别:工具、反取证、侦察、容器、权限提升、横向移动和“其他”(见下文“插件系统”部分)。

图 5 – 插件面板

技术概述

VoidLink 是一款令人印象深刻的软件,使用 Zig 为 Linux 编写,远比典型的 Linux 恶意软件先进。其基础是一个维持植入程序稳定性的传统核心。该核心管理全局状态、通信和任务执行。这个设计良好的核心之上承载了多项功能,使该恶意软件成为一个功能完备的 C2 框架。

VoidLink 通过一个两阶段加载器传递,最终植入程序嵌入了核心模块,但外部代码可以在运行时作为插件下载:

图 6 – VoidLink 高层概览

云优先技术

VoidLink 是一个云优先的 Linux 植入程序。一旦机器被感染,它会调查受感染系统,并能检测该机器运行在哪个云提供商下。目前,VoidLink 可以检测 AWS、GCP、Azure、阿里云和腾讯云,并计划增加对华为、DigitalOcean 和 Vultr 的检测。对于所有这些云提供商,VoidLink 会使用相应供应商的 API 查询实例元数据的附加信息。

图 7 – 查询 AWS 元数据

除了云检测,它还会收集有关受感染机器的大量信息,枚举其虚拟机监控程序,并检测它是否在 Docker 容器或 Kubernetes Pod 中运行。

为了便于在容器化环境中进行数据窃取、权限提升和横向移动,它实现了多个利用后模块——从自动化容器逃逸、秘密提取,到专门的横向移动命令。

最终,此植入程序的目标似乎是隐蔽的长期访问、监视和数据收集。

插件开发 API

除了核心模块和命令,VoidLink 框架还提供了一个广泛的开发 API,类似于(可能受启发于)Cobalt Strike 及其 Beacon API。该 API 在恶意软件初始化期间通过创建一个包含所有可用 API 的导出表来设置。

图 8 – 开发 API 导出表

在开发 VoidLink 插件时,开发者可以引用这些 API 来执行诸如读取文件、创建套接字连接、执行文件、从共享对象解析例程或向 C2 控制台记录日志等操作。整个 API 基于直接系统调用运行,绕过了 libc 钩子。

自适应隐身

启动时,VoidLink 会枚举已安装的安全产品和加固措施,包括 Linux EDR 和内核加固技术。然而,此信息不仅返回给操作员,还用于计算环境的风险评分并建议规避策略,然后该策略被用于影响其他模块的行为。例如,在实施了监控且风险相对较高的环境中,端口扫描会以更慢、更受控的方式执行。这种自适应隐身模式是 VoidLink 的核心原则之一,并在整个框架中得到应用。

图 9 – 检测到的 EDR

Rootkit 模块

另一个值得注意的组件是一个监控器,它帮助 VoidLink 融入正常的系统活动。它通过读取机器遥测数据(CPU、内存、网络和活动进程)来构建主机行为配置文件,解析这些数据,并为与 C2 的通信创建自适应间隔,并考虑工作时间、低活动时段等约束条件。

一个隐身模块集成了高级隐藏技术,包括内核级技术。它维护着一个适用于多个内核版本的 Rootkit 家族。并将它们与 eBPF 程序结合,这些程序可以在更新的、锁定更严的系统中挂钩敏感路径,而无需传统的 LKM。VoidLink 再次根据其运行环境来处理 Rootkit 的部署,并相应地选择合适的 Rootkit 进行部署。根据内核版本和支持的特性,会选择以下 Rootkit:

  • LD_PRELOAD:当“内核”标志被禁用,或者内核版本 < 4.0 时。
  • eBPF:适用于内核版本 ≥ 5.5 且支持 eBPF 的系统。
  • LKM:内核版本 ≥ 4.0。

图 10 – 根据环境部署 Rootkit

利用这些 Rootkit,植入程序可以选择性地隐藏其进程、文件和网络套接字,以及隐藏 Rootkit 模块本身。

命令与控制

在网络层面,VoidLink 试图使对外网络连接看起来合法;有多个模块负责隐藏流量。有一个负责 HTTP 伪装的层,它试图使请求看起来正常。

图 11 – HTTP 伪装配置

请求以及被窃取的文件可以通过多种方式隐藏,包括通过类似 PNG 的数据块、标准网站内容(JS/CSS/HTML),或模仿 API 流量。VoidLink 支持多种传输协议:HTTP/1.1、HTTP/2、WebSocket、DNS 和 ICMP。所有这些都通过开发者称之为 VoidStream 的协议进行管理。VoidStream 为前述所有协议处理加密和消息解析。

虽然未完全实现,但分析过的样本也包含用于网状 C2 的方法——这是一种点对点网络方法,受感染机器形成一个网状网络,在彼此之间路由数据包,而无需出站互联网访问。

反分析

VoidLink 部署了多种反分析机制。除了反调试技术,VoidLink 还能检测各种调试器和监控工具。VoidLink 还运行运行时完整性检查以识别潜在的钩子和补丁。此外,一个自修改代码选项可以在运行时解密受保护的代码区域,并在不使用时对其进行加密,以逃避运行时内存扫描器。如果 VoidLink 检测到任何类型的篡改,它会自行删除。

反取证模块确保 VoidLink 留下的任何痕迹也被清除。该恶意软件会清理命令历史、登录记录、系统日志和已释放的文件,同时确保文件不仅从文件系统中取消链接,而且用随机数据覆盖以防止取证恢复。

插件系统

VoidLink 的插件系统有效地扩展了其框架,使其从一个植入程序演变为一个功能全面的利用后框架。再次类似于 Cobalt Strike 及其 Beacon 对象文件,插件以 ELF 对象文件的形式出现,在运行时加载并在内存中执行。

默认可用的插件涵盖了多个类别:

  • 侦察:详细的系统和环境分析、用户和组枚举、进程和服务发现、文件系统和挂载点映射,以及本地网络拓扑和接口的映射。
  • :Kubernetes 和 Docker 发现及权限提升辅助工具、容器逃逸检查,以及探测允许攻击者突破 Pod 或容器进入底层主机或集群的错误配置。
  • 凭证收集:多个插件用于收集凭证和秘密,包括 SSH 密钥、git 凭证、本地密码材料、浏览器凭证和 cookies、环境变量或进程参数中的令牌和 API 密钥,以及存储在系统密钥环中的项目。
  • 实用工具和横向移动:利用后工具包括文件管理、交互式和非交互式 shell、端口转发和隧道,以及一个基于 SSH 的蠕虫,它试图连接到已知主机并横向传播。
  • 权限维持:通过原生机制(如滥用动态链接器、cron 任务和系统服务)建立持久化的插件。
  • 反取证:根据关键字擦除或编辑日志和 shell 历史记录的组件,并对文件执行时间戳篡改以扰乱取证时间线。

这些插件共同构建在一个已经复杂的核心实现之上,将 VoidLink 的能力从云环境扩展到直接与这些云环境交互的开发人员和管理员工作站,将任何受感染的机器转变为实现更深层访问或供应链攻击的灵活发射台。附录列出了我们分析的所有插件,并附有每个插件的摘要描述。

结论

VoidLink 是一个快速发展的 Linux 命令与控制框架,专为现代云环境量身定制,侧重于隐蔽性。数量庞大的功能及其模块化架构表明,作者意图创建一个复杂、现代且功能丰富的框架。VoidLink 旨在尽可能自动化规避行为,通过分析环境并选择最合适的操作策略。结合内核级技术和庞大的插件生态系统,VoidLink 使其操作员能够以自适应隐身的方式穿梭于云环境和容器生态系统中。

虽然恶意软件领域的大部分目标针对 Windows,但 Linux 平台常常被恶意软件开发者和防御者忽视。一个专门为 Linux 平台,更具体地说是为云环境而创建的框架的出现,表明这些平台已成为威胁行为者的有效目标。

尽管目前尚不清楚该框架是打算作为合法的渗透测试工具、地下犯罪工具,还是单一客户的专用产品出售,但防御者应主动保护其 Linux、云和容器环境,并准备好防御像 VoidLink 这样的高级威胁。

防护措施

Check Point 的威胁仿真和 Harmony Endpoint 提供了对攻击策略、文件类型和操作系统的全面覆盖,并能够抵御本报告中描述的攻击和威胁。

入侵指标

阶段SHA256
Stage 0070aa5b3516d331e9d1876f3b8994fc8c18e2b1b9f15096e6c790de8cdadb3fc9
Stage 113025f83ee515b299632d267f94b37c71115b22447a0425ac7baed4bf60b95cd
VoidLink Implants05eac3663d47a29da0d32f67e10d161f831138e10958dcd88b9dc97038948f69
15cb93d38b0a4bd931434a501d8308739326ce482da5158eb657b0af0fa7ba49
6850788b9c76042e0e29a318f65fceb574083ed3ec39a34bc64a1292f4586b41
6dcfe9f66d3aef1efd7007c588a59f69e5cd61b7a8eca1fb89a84b8ccef13a2b
28c4a4df27f7ce8ced69476cc7923cf56625928a7b4530bc7b484eec67fe3943
e990a39e479e0750d2320735444b6c86cc26822d86a40d37d6e163d0fe058896
4c4201cc1278da615bacf48deef461bf26c343f8cbb2d8596788b41829a39f3f

附录:插件列表

插件名称描述
ssh_harvester_stealth_v3.o从主机收集 SSH 私钥和配置数据以供后续使用或窃取的插件。
ssh_harvester_v3.o从主机收集 SSH 私钥和配置数据以供后续使用或窃取的插件。
port_scan_stealth_v3.o基本端口扫描器,检查指定目标上开放的端口。
port_scanner_v3.o基本端口扫描器,检查指定目标上开放的端口。
sys_info_v3.o收集一般系统信息(如主机标识符、操作系统信息和环境数据)的信息收集插件。
ssh_worm_v3.o自传播 SSH 蠕虫模块,它会遍历已知主机,并尝试以受限、低调的方式进行基于凭证的登录。
term_pty_v3.o交互式后门,允许远程命令执行以及文件读写操作。
file_mgr_v3.o文件管理器插件,允许操作员浏览目录以及上传、下载、创建、重命名或删除文件和文件夹。
simple_test.o测试插件,无实际操作。
port_fwd_v3.o端口转发模块,建立隧道以将受感染主机上的内部服务暴露给操作员。
k8s_privesc_v3.o.bKubernetes 权限提升辅助工具,寻找突破 Pod 或提升权限的方法,并报告任何可行的路径。
systemd_persist_v3.o持久化插件,创建或修改 systemd 服务定义,使植入程序在启动时自动运行。
docker_escape_v3.o容器逃逸模块,检查并尝试已知的 Docker 突破技术,并将任何有趣的结果发回 C2。
cron_persist_v3.o持久化组件,安装或修改 cron 任务以实现持久化。
hello_plugin_v3.o轻量级侦察插件,记录基本的运行时细节,如进程 ID、用户 ID、主机名和当前目录。
mimipenguin_lite_v3.o凭证收集模块,检查正在运行的进程及其参数以提取密码或其他敏感秘密。
browser_stealer_v3.o浏览器数据窃取插件,针对 Chrome 和 Firefox,提取存储的凭据、cookies 和类似数据。
log_wiper_v3.o日志清理工具,搜索常见的日志文件中包含特定关键词的条目并将其移除,以掩盖活动。
timestomp_v3.o时间戳篡改模块,修改文件和目录的时间戳以破坏事件的取证重建。
service_enum_stealth_v3.o隐蔽服务枚举插件,探测开放端口以识别底层服务、横幅和版本详情。
proc_list_v3.o进程发现组件,枚举正在运行的进程并收集每个进程的详细信息。
keyring_dump_v3.o密钥环转储模块,提取存储在系统密钥环中的秘密。
mount_info_v3.o.b文件系统侦察插件,列出已挂载的磁盘和卷。
user_enum_v3.o账户枚举模块,收集系统上有关本地用户、组及其关系的信息。
k8s_exec_v3.oKubernetes 发现插件,查询集群以枚举可访问的命名空间、Pod 和相关资源。
ld_preload_v3.o持久化机制,滥用动态链接器钩子(如 LD_PRELOAD),使得在目标程序启动时运行植入代码。
hello_plugin.o基本信息收集插件,捕获最小的运行时上下文,如进程 ID、用户、主机名和工作目录。
passwd_dump_v3.o凭证转储模块,读取本地账户数据库以收集用户名和关联的密码哈希。
history_wipe_v3.o历史记录操作工具,移除符合特定模式的 shell 历史条目,并可禁用未来的历史记录。
env_vars_v3.o环境变量扫描器,搜索导出的变量中是否包含秘密,如 API 密钥、访问令牌和凭据。
net_topology_v3.o网络侦察模块,使用 ARP 和路由信息来映射附近的主机和整体网络拓扑。
ssh_tunnel_v3.o隧道插件,建立基于 SSH 的隧道,通过受感染主机路由流量。
exploit_dirty_pipe_v3.o权限提升模块,实现了 Dirty Pipe 漏洞,为 MAC 编译,包含未使用的代码,可能无法工作。
net_ifconfig_v3.o网络配置枚举器,收集接口信息、IP 地址和相关网络设置。
service_enum_v3.o服务枚举模块,连接到已发现的端口以识别服务、捕获横幅和收集版本信息。FINISHED
CjCFFIeR8ym/owPWlcCc+Hg+BVd/b5mMK4Q8QsvZEaJe+9StNqo8iItrwAg2AqJJymxfY9vFtwcTBinYFL8Cf0euE4ahCXfaPLejMF1tgE40NhdNEi6Xwzv7AoL1CFQ1