注:本文翻译自 Check Point 的文章《Unveiling VoidLink – A Stealthy, Cloud-Native Linux Malware Framework》[1],可点击文末“阅读原文”按钮查看英文原文。
全文如下:
要点总结
- • VoidLink 是一个高级恶意软件框架,由定制的加载器、植入程序、rootkit和模块化插件组成,旨在长期驻留 Linux系统。该框架包含多项专注于云的功能和模块,专为在云和容器环境中长期可靠运行而设计。
- • VoidLink 的架构极其灵活且高度模块化,围绕一个自定义插件API构建,其设计理念似乎借鉴了Cobalt Strike的信标对象文件(BOF,Beacon Object Files)方法。默认提供超过 30+个插件模块 来使用此API。
- • VoidLink 采用了多重操作安全机制,包括运行时代码加密、被篡改时自删除、基于检测环境的自适应行为,以及一系列用户模式和内核级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隧道,并能在受感染主机之间形成P2P/网状通信。在最新样本中,大多数组件似乎已接近完成,同时还有一个功能性的C2服务器和一个集成到单一生态系统中的仪表板前端。
该框架的预期用途尚不明确,截至本文撰写时,尚未观察到其真实世界感染的证据。其构建方式表明,它最终可能定位为商业用途,无论是作为产品提供,还是为特定客户开发的框架。
二、命令与控制面板
图1 – 主面板为了更好地管理攻击,VoidLink 配备了一个基于 Web 的仪表板,使操作者能够完全控制正在运行的代理(agent)、植入程序(implant)和插件。该界面已针对中文操作者本地化,但其导航布局遵循了常见的 C2 面板结构:左侧边栏将页面分组为 仪表盘、攻击 和 基础设施。仪表盘部分涵盖了核心的操作循环(代理管理器、内置终端和植入程序构建器)。而 Attack 部分则组织漏洞后利用的活动,例如侦察(reconnaissance)、凭据访问(credential access)、持久化(persistence)、横向移动(lateral movement)、进程注入(process injection)、隐身(stealth)和证据擦除(evidence wiping)。
| 仪表板 (Dashboard) | 攻击 (Attack) | 基础设施 (Infrastructure) |
|---|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
图 2 – 持久化面板(已翻译)
图 3 – 证据擦除面板(已翻译)生成器(Generator) 面板是 VoidLink 的构建界面,使威胁行为者能够按需生成额外的、自定义的植入程序变种。操作者可以在此界面选择所需的功能集,并调整整体的规避策略。该面板还暴露了操作参数,如植入程序的心跳或信标间隔(heartbeat/beaconing interval),允许攻击者通过控制植入程序检查任务和执行任务的频率来平衡响应速度与隐身性。所有这些参数也可以在运行时更改。
图 4 – 构建器面板(已翻译)仪表板中最有趣的组件是插件管理面板。它允许操作者向受害者部署选定模块,并上传自定义模块。在我们的研究期间,共有 37 个插件可用,分为几类:工具(Tools)、反取证(Anti-Forensics)、侦察(Reconnaissance)、容器(Containers)、权限提升(Privilege Escalation)、横向移动(Lateral Movement)和“其他”(Others)(详见下文“插件系统”)。
图 5 – 插件面板三、技术概览
VoidLink 是一个令人印象深刻的软件,它使用 Zig 语言编写,针对 Linux 系统,其复杂程度远超典型的 Linux 恶意软件。其基础是一个维持植入程序稳定性的传统核心。该核心负责管理全局状态、通信和任务执行。在这个精心设计的核心之上,承载了多项功能,使该恶意软件成为一个功能齐全的 C2 框架。
VoidLink 通过一个两阶段加载器交付,最终的植入程序中嵌入了核心模块,但外部代码可以在运行时作为插件下载:
图 6 – VoidLink 高层概览3.1 云优先的战术技巧
VoidLink 是一个云优先的 Linux 植入程序。一旦机器被感染,它会检查受感染系统,并能检测出受感染机器运行在哪家云服务提供商之下。目前,VoidLink 可以检测 AWS、GCP、Azure、阿里云和腾讯云,并计划增加对华为云、DigitalOcean 和 Vultr 的检测。对于所有这些云提供商,VoidLink 会使用各自厂商的 API 查询实例元数据的额外信息。
图 7 – 查询 AWS 元数据除了云检测,它还会收集关于受感染机器的大量信息,枚举其虚拟机管理程序,并检测其是否运行在 Docker 容器或 Kubernetes Pod 中。
为了便于在容器化环境中进行数据外泄、权限提升和横向移动,该框架实现了多个漏洞后利用模块——从自动化的容器逃逸、密钥提取到专门的横向移动命令。
最终,该植入程序的目标似乎是获得隐秘的、长期的访问权限,进行监视和数据收集。
3.2 插件开发 API
除了核心模块和命令外,VoidLink 框架还提供了一个广泛的开发 API,类似于(并且很可能借鉴了)Cobalt Strike 及其 Beacon API。该 API 在恶意软件初始化期间通过创建一个包含所有可用 API 的导出表来设置。
图 8 – 开发 API 导出表在开发 VoidLink 插件时,开发者可以引用这些 API 来实现例如读取文件、创建套接字连接、执行文件、从共享库中解析例程(routine)或向 C2 控制台输出日志等功能。整个 API 基于直接系统调用(direct syscalls)操作,绕过了 libc 钩子。
3.3 自适应隐身
启动时,VoidLink 会枚举已安装的安全产品和加固措施,包括 Linux EDRs 和内核加固技术。然而,这些信息不仅会返回给操作者,还会被用来计算环境的风险评分,并建议规避策略。这些策略随后被用于其他模块以影响其行为。例如,在已部署监控且风险相对较高的环境中,端口扫描会执行得更慢,控制也更精细。这种自适应隐身模式是 VoidLink 的核心原则之一,并贯穿于整个框架。
图 9 – 检测到的 EDRs3.4 Rootkit 模块
另一个值得注意的组件是一个帮助 VoidLink 融入正常系统活动的监视器。它通过读取机器遥测数据(CPU、内存、网络和活动进程),解析这些数据,并创建自适应间隔与 C2 通信,从而构建主机行为画像,约束条件包括工作时间段和低活动时段。
一个隐身模块集成了先进的隐藏技术,包括内核级技术。它维护着一系列针对多个内核版本定制的 rootkits。它将它们与 eBPF 程序结合,这些程序可以在更新的、锁定安全的系统上 hook 敏感路径,而无需传统的 LKM。VoidLink 再次根据其运行的环境来处理 rootkit 部署,并相应选择合适的 rootkit。根据内核版本和支持的功能,将选择以下 rootkit:
- • LD_PRELOAD:当 "kernel" 标志被禁用,或内核版本 < 4.0 时
- • eBPF:适用于内核版本 ≥ 5.5 且支持 eBPF 的情况
图 10 – 根据环境部署 Rootkit利用这些 rootkits,植入程序可以有选择地隐藏其进程、文件和网络套接字,同时也能隐藏 rootkit 模块本身。
3.5 命令与控制
在网络层面,VoidLink 试图使外发的网络连接看起来合法;多个模块负责隐藏流量。其中有一层负责 HTTP 伪装,旨在使请求看起来像正常请求。
图 11 – HTTP 伪装配置请求以及外泄的文件可以通过多种方式隐藏,包括使用类似 PNG 的二进制块、标准网站内容或模拟 API 流量。VoidLink 支持多种传输协议:HTTP/1.1、HTTP/2、WebSocket、DNS 和 ICMP。所有协议都通过开发者称为 VoidStream 的协议进行管理。VoidStream 为上述所有协议处理加密和消息解析。
虽然未完全实现,但分析的样本中还包含了网状 C2 的方法——这是一种点对点的网络方法,受感染的机器形成一个网状网络,在彼此之间路由数据包,无需外部互联网访问。
3.6 反分析
VoidLink 部署了多种反分析机制。除了反调试技术外,VoidLink 还能检测各种调试器和监控工具。VoidLink 还会执行运行时完整性检查,以识别潜在的hook和补丁。此外,一种自修改代码(self-modifying code)选项会在运行时解密受保护的代码区域,并在不使用时对其进行加密,从而规避运行时内存扫描器。如果 VoidLink 检测到任何类型的篡改,它会删除自身。
反取证(Anti-forensic)模块确保 VoidLink 留下的任何痕迹也被删除。该恶意软件会清理命令历史、登录记录、系统日志和丢弃的文件,同时确保文件不仅从文件系统中解除链接,还用随机数据覆盖,以防止取证恢复。
四、插件系统
VoidLink 的插件系统有效扩展了其框架,使其从一个植入程序演变为一个功能完备的漏洞后利用(post-exploitation)框架。同样类似于 Cobalt Strike 及其信标对象文件(BOF,Beacon Object Files),插件以 (ELF) 目标文件的形式提供,在运行时加载并在内存中执行。
默认可用的插件涵盖以下类别:
| |
|---|
| 侦察 (Recon) | 详细的系统和环境剖析、用户和组枚举、进程和服务发现、文件系统和挂载点映射,以及本地网络拓扑和接口的映射。 |
| 云 (Cloud) | Kubernetes 和 Docker 的发现与权限提升辅助工具、容器逃逸检查,以及探测配置错误,这些错误可能允许攻击者从 Pod 或容器中突破到底层主机或集群。 |
| 凭据窃取 (Credential Harvesting) | 多个用于窃取凭据和密钥的插件,包括 SSH 密钥、git 凭据、本地密码材料、浏览器凭据和 Cookie、环境变量或进程参数中的令牌和 API 密钥,以及存储在系统密钥环中的项目。 |
| 实用工具和横向移动 | 漏洞后利用工具包括文件管理、交互式和非交互式 shell、端口转发和隧道,以及一个基于 SSH 的蠕虫,它会尝试连接到已知主机并横向传播。 |
| 持久化 (Persistence) | 持久化插件,通过原生机制(如滥用动态链接器、cron 作业和系统服务)建立持久性。 |
| 反取证 (Anti-forensics) | 用于根据关键词擦除或编辑日志与 shell 历史记录的组件,以及对文件进行时间戳篡改以破坏取证时间线。 |
这些插件共同构建在一个已经相当复杂的核心实现之上,将 VoidLink 的能力从云环境扩展到与这些云环境直接交互的开发者和管理员工作站,将任何受感染的机器转变为获取更深层次访问或进行供应链攻击的灵活跳板。附录列出了我们分析的所有插件,并附有简要说明。
五、结论
VoidLink 是一个快速发展的 Linux 命令与控制框架,专为现代云环境定制,并侧重于隐秘性。其庞大的功能数量与模块化架构表明,作者旨在创建一个复杂、现代且功能丰富的框架。VoidLink 力求尽可能自动化规避检测,通过分析环境并选择最合适的操作策略。内核模式战术技巧和庞大的插件生态系统进一步增强了其能力,使操作者能够以自适应隐身的方式在云环境和容器生态系统中活动。
虽然恶意软件领域的大部分目标仍是 Windows 平台,但 Linux 平台常常被恶意软件开发者和防御者所忽视。这个专门针对 Linux 平台,尤其是云环境开发的框架表明,这些平台已成为威胁行为者有效的攻击目标。
尽管尚不清楚该框架是打算作为合法的渗透测试工具出售,还是作为地下犯罪工具,或是作为面向单一客户的专属产品,防御者都应主动加固其 Linux、云和容器环境,并准备好防御像 VoidLink 这样的高级威胁。
六、防护措施
Check Point 威胁仿真和 Harmony Endpoint 提供对攻击战术、文件类型和操作系统的全面覆盖,并能够防护本报告中描述的攻击和威胁。
七、入侵指标 IoC
| |
|---|
| 70aa5b3516d331e9d1876f3b8994fc8c18e2b1b9f15096e6c790de8cdadb3fc9 |
| 13025f83ee515b299632d267f94b37c71115b22447a0425ac7baed4bf60b95cd |
| 05eac3663d47a29da0d32f67e10d161f831138e10958dcd88b9dc97038948f69 15cb93d38b0a4bd931434a501d8308739326ce482da5158eb657b0af0fa7ba49 6850788b9c76042e0e29a318f65fceb574083ed3ec39a34bc64a1292f4586b41 6dcfe9f66d3aef1efd7007c588a59f69e5cd61b7a8eca1fb89a84b8ccef13a2b 28c4a4df27f7ce8ced69476cc7923cf56625928a7b4530bc7b484eec67fe3943 e990a39e479e0750d2320735444b6c86cc26822d86a40d37d6e163d0fe058896 4c4201cc1278da615bacf48deef461bf26c343f8cbb2d8596788b41829a39f3f |
附录
| 插件名称 | 描述 |
|---|
| ssh_harvester_stealth_v3.o | 从主机收集 SSH 私钥和配置数据,供后续使用或外泄。 |
| 从主机收集 SSH 私钥和配置数据,供后续使用或外泄。 |
| |
| |
| 信息收集插件,收集常规系统详细信息,如主机标识符、操作系统信息和环境数据。 |
| 自传播 SSH 蠕虫模块,遍历已知主机并以限速、低调的方式尝试基于凭据的登录。 |
| |
| 文件管理器插件,允许操作者浏览目录,以及上传、下载、创建、重命名或删除文件和文件夹。 |
| |
| 端口转发模块,建立隧道以将受感染主机上的内部服务暴露给操作者。 |
| Kubernetes 权限提升辅助工具,寻找脱离 Pod 或提升权限的方法,并报告任何可行的路径。 |
| 持久化插件,创建或修改 systemd 服务定义,以便在系统启动时自动运行植入程序。 |
| 容器逃逸模块,检查并尝试已知的 Docker 逃逸技术,将任何有价值的结果发送回 C2。 |
| 持久化组件,安装或修改 cron 作业以实现持久性。 |
| 轻量级侦察插件,记录基本的运行时详情,如进程 ID、用户 ID、主机名和当前工作目录。 |
| 凭据窃取模块,检查运行中的进程及其参数,以提取密码或其他敏感密钥。 |
| 浏览器数据窃取插件,针对 Chrome 和 Firefox,提取存储的凭据、Cookie 及类似信息。 |
| 日志清理工具,在常见的日志文件中搜索特定关键词并删除匹配项,以掩盖活动痕迹。 |
| 时间戳篡改模块,更改文件和目录的时间戳以破坏事件的溯源重建。 |
| service_enum_stealth_v3.o | 隐秘的服务枚举插件,探测开放的端口以识别底层服务、banner和版本详情。 |
| 进程发现组件,枚举正在运行的进程并收集每个进程的详细信息。 |
| |
| |
| 账户枚举模块,收集关于系统上本地用户、组及其关系的信息。 |
| Kubernetes 发现插件,查询集群以枚举可访问的命名空间、Pod 及相关资源。 |
| 持久化机制,滥用动态链接器钩子(如 LD_PRELOAD),使植入代码在目标程序启动时运行。 |
| 基础信息收集插件,捕获最少的运行时上下文,如进程 ID、用户、主机名和工作目录。 |
| 凭据转储模块,读取本地账户数据库以收集用户名和相关的密码哈希。 |
| 历史记录操纵工具,删除符合特定模式的 shell 历史记录条目,并可禁用未来的历史记录。 |
| 环境变量扫描器,在导出的变量中搜索 API 密钥、访问令牌和凭据等密钥。 |
| 网络侦察模块,使用 ARP 和路由信息来映射附近的主机和整体网络拓扑。 |
| 隧道插件,建立基于 SSH 的隧道,通过受感染主机路由流量。 |
| 权限提升模块,实现 Dirty Pipe 漏洞利用,使用未使用的代码为 MAC 编译,无法正常工作。 |
| 网络配置枚举器,收集接口信息、IP 地址及相关网络设置。 |
| 服务枚举模块,连接到发现的端口以识别服务、捕获banner并收集版本信息。 |
引用链接
[1] 《Unveiling VoidLink – A Stealthy, Cloud-Native Linux Malware Framework》: https://research.checkpoint.com/2026/voidlink-the-cloud-native-malware-framework/