LinkPro:eBPF rootkit分析
引言
eBPF(extended Berkeley Packet Filter)是一项被Linux广泛采用的技术,因其在可观测性、安全性和网络等领域的多种用例而备受青睐。威胁行为者越来越多地滥用eBPF来创建复杂的后门程序,并规避传统的系统监控工具。
在最近一次针对AWS托管基础设施的入侵事件调查中,Synacktiv CSIRT发现了一个相对复杂的感染链,导致在GNU/Linux系统上安装了一个隐蔽的后门。该后门依赖于安装两个eBPF模块:一个用于隐藏自身,另一个用于在接收到"魔法包"时远程激活。
感染链
取证分析确定暴露在互联网上的易受攻击的Jenkins服务器(CVE-2024-23897)是入侵的源头。攻击者随后转移到在多个Amazon EKS集群上托管的集成和部署流水线。
从Jenkins服务器,攻击者在多个Kubernetes集群上部署了一个名为kvlnt/vv的恶意docker镜像。该docker镜像基于Kali Linux,并添加了两个额外的层。
这些层添加了/app文件夹作为工作目录,然后向其中添加了三个文件:
/app/start.sh:一个bash脚本,作为docker镜像的入口点。其目的是启动ssh服务,执行/app/app后门程序和/app/link程序。/app/link:一个名为vnt的开源程序,充当VPN服务器并提供代理功能。/app/app:一个下载器恶意软件,从S3存储桶检索加密的恶意负载。
关于docker镜像,配置了以下挂载点:
- 挂载点:
/mnt - 源(主机):
/ - 目标(容器):
/mnt - 访问:读写
- 类型:绑定
这种配置允许攻击者逃离容器的上下文(运行的镜像),以root权限访问根分区的整个文件系统。
LinkPro Rootkit
LinkPro针对GNU/Linux系统,使用Golang开发。它使用eBPF技术仅在接收到"魔法包"时激活,并在受感染系统上隐藏自身。
LinkPro样本
SHA256
d5b2202b7308b25bda8e106552dafb8b6e739ca62287ee33ec77abe4016e698b(被动后门)1368f3a8a8254feea14af7dc928af6847cab8fcceec4f21e0166843a75e81964(主动后门)
文件类型:ELF 64位LSB可执行文件,x86-64
文件大小:8710464字节
威胁类型:Linux Rootkit
LinkPro嵌入了四个ELF模块:一个共享库、一个内核模块和两个eBPF模块。
配置和通信
根据其定义的配置,LinkPro可以以两种方式运行:被动或主动。其配置通过两种不同的方式获取:
- 要么嵌入在二进制文件中,以JSON结构组织,并以关键字
CFG0开头 - 要么其默认参数直接硬编码到主函数中
LD PRELOAD模块
LinkPro修改/etc/ld.so.preload配置文件,指定其嵌入的libld.so共享库的路径,目的是隐藏可能揭示后门存在的各种工件。
一旦libld.so在程序执行时被加载,它会在glibc之前挂钩几个libc函数,以修改可能揭示LinkPro存在的结果。
“Hide” eBPF模块
“Hide"模块由几个Tracepoint和Kretprobe类型的eBPF程序组成。LinkPro rootkit安装这些eBPF程序,并利用它们的功能来隐藏其进程和网络活动。
“Knock” eBPF模块
“Knock"模块包含两个由LinkPro加载的eBPF程序。第一个称为xdp_ingress,属于XDP类型。第二个称为tc_egress,属于TC类型。
持久化
为了在主机上持久化,LinkPro将自己伪装成systemd-resolved服务(名称解析服务)。
命令
一旦与操作员的通信建立,LinkPro提供以下命令:
terminal_create、terminal_resize、terminal_input、terminal_close:在伪终端中执行/bin/bashshell:直接执行任意shell命令file_manage:用于列出、读取、写入和删除文件或目录的子命令download_manage:文件下载reverse_connect、close_reverse_connect:设置中继以充当SOCKS5代理隧道reverse_http_listener:设置HTTP服务set_sleep_config:更新sleep_time和jitter_time参数
结论
对在受感染的AWS基础设施上发现的LinkPro rootkit的分析证实并深化了利用eBPF技术的威胁趋势。继BPFDoor或Symbiote等恶意软件之后,LinkPro通过在多个级别结合几种隐身技术,代表了这些后门复杂性的新一步。
LinkPro的突出特点在于其操作灵活性,能够以被动监听模式运行,或直接联系命令和控制服务器。在监听模式下,它部署了基于XDP和TC程序的先进网络处理链,其实现显然受到了开源项目eBPFeXPLOIT的启发。
MITRE ATT&CK映射
| 战术 | 技术(ID) | LinkPro使用描述 |
|---|---|---|
| 执行 | 命令和脚本解释器:Unix Shell | LinkPro通过/bin/sh -c执行命令,并提供完整的交互式shell |
| 持久化 | 创建或修改系统进程:Systemd服务 | 创建systemd单元文件以在启动时执行 |
| 持久化 | 劫持执行流:动态链接器劫持 | 使用/etc/ld.so.preload作为替代/回退隐藏机制 |
| 防御规避 | 伪装:匹配合法名称或位置 | 恶意软件通过使用文件名伪装成systemd-resolved |
| 防御规避 | 指示器移除:时间戳修改 | LinkPro修改其持久化文件的时间戳以匹配合法系统文件 |
| 防御规避 | Rootkit | 使用eBPF挂钩在内核级别隐藏其工件 |
| 命令与控制 | 应用层协议 | 使用HTTP和DNS进行C2通信 |
| 命令与控制 | 流量信令:端口敲门 | “魔法包"概念是一种流量信令形式,用于激活被动C2 |
妥协指标(IOCs)
网络IOC
/api/client/file/download?path=.../reverse/handshake、/reverse/heartbeat、/reverse/operation18.199.101.111
文件IOC
/etc/systemd/system/systemd-resolveld.service/root/.tmp~data.ok/usr/lib/.system/.tmp~data.resolveld/etc/libld.so
在此分析期间创建的YARA规则维护在synacktiv-rules Github存储库中。