Jiatan后门事件分析及溯源


1. Jiatan事件

这是一段代码变更日志,如果不仔细看真的很难发现问题出在哪里。

Jiatan后门事件分析及溯源


现在揭晓答案:这里多了一个“.”

Jiatan后门事件分析及溯源

加这段代码的原因就是为了使这段编译脚本故意报错,使沙盒失效,成功注入后门程序,而就是刚刚发生的APT上游供应链投毒攻击即“xz后门事件,只要运行xz程序,就意味着随时可以被控制(可以说是winrar被人注入了后门)。

2. Jiatan事件起因

攻击者jiatan为此谋划了两年之久,如果不是因为微软员工Andres Freund发现sshd占用过多导致慢了0.5s,最后顺藤摸瓜发现真相,可能jiatan的阴谋就此得逞。可以想到,如果jiatan发布的带后门的程序并入到ubuntu的发行版中,所有Linux系统都将受到影响。

  2.1 时间线分析

2021年,攻击者 JiaT75 注册了 GitHub 账号并开始参与 xz 项目的维护;

20211019日,JiaT75libarchive项目提交第一个PR

202226日,JiaT75XZ Utils项目提交的commit开始被合并;

2024224日,JiaT75GitHub release中发布第一个包含后门的版本5.6.0

2024329日,Andres Freund在做一些微基准测试时,看到sshd进程使用了惊人数量的CPU,随后顺藤摸瓜发现了这个阴谋并报告给linux-distros,然后报告给oss-security,致使此事首次被发现。

  2.2 具体细节

JiaT75在一次commit中悄悄加入了两个测试用二进制数据文件bad-3-corrupt_lzma2.xzgood-large_compressed.lzma,并在编译脚本中注入代码,导致编译结果和公开的源代码不一致。目前初步的研究显示,注入的代码使用glibcIFUNC去挂钩OpenSSHRSA_public_decrypt函数,使攻击者可以通过构造特定的验证数据绕过RSA签名验证。当用户同时使用了liblzmaOpenSSH的程序就会受到影响,其中最直接的目标是sshd,使攻击者可以构造特定请求,绕过密钥验证远程访问。

目前,受影响的xz-utils包已经被并入Debian testing中进行测试,同时攻击者也在尝试并入fedoraubuntu。目前GitHub关停了整个xz项目。

3. 事件分析

IFUNCglibc中一种允许间接函数调用的机制,用于执行OpenSSH身份验证例程的运行时挂钩/重定向。IFUNC通常是用于合法目的的工具,但在本例中却被用于攻击路径。通常,上游发布的tar包与GitHub自动生成的tar包不同。在这些修改过的压缩包中,包含了一个恶意版本的build-to-host.m4脚本,用于在构建过程中执行脚本。由该脚本调用的脚本会解压缩这些恶意测试数据,并用它来修改构建过程。

此次攻击似乎针对的是使用DebianRed Hat衍生发行版运行glibcamd64系统。其他系统目前可能也存在漏洞,但目前还不清楚。

在代码中投毒的文件除了build-to-host.m4,另外包括bad-3-corrupt_lzma2.xzgood-large_compressed.lzma。这新引入的两个数据文件作为测试用例,但实际上作为恶意payload使用。

如果在openssh中加载此有效载荷,函数将被重定向到恶意实现中。这种恶意实现可用于绕过身份验证。攻击者必须提供一个密钥,该密钥会被有效负载验证,然后攻击者的输入会被传递到,从而导致远程代码执行(RCE).system()

通过执行make命令,payload得以被执行,生成最终投毒注入代码,

Jiatan后门事件分析及溯源

最终利用GCC提供的ifunc机制,在Llzma_index_prealloc_0()函数中对RSA_public_decrypt()函数GOT劫持,RSA_public_decrypt()openssh中用于公钥认证的函数,劫持后的代码会在经过自身处理后决定是否返回原本的正常验证流程,从而在特定的场景下触发。

其中Llzma_index_stream_size_1()是劫持后的处理逻辑实现,根据Filippo Valsorda的分析,在公钥认证中验证特定的Ed448证书签名后将通过system()函数执行任意命令。

4. XZ链接

这里提供xz所有版本链接,供同行分析使用:

git.tukaani.org – xz.git/summary
使用如下命令可以查看所有直接依赖 xz-utils 库的软件包。

sudo apt-cache rdepends xz-utils

使用如下命令可以查看所有依赖 xz-utils 库的软件包sudo apt install apt-rdepends

sudo apt-rdepends -r xz-utils

原文始发于微信公众号(电子取证及可信应用协创中心):Jiatan后门事件分析及溯源

版权声明:admin 发表于 2024年5月5日 下午5:58。
转载请注明:Jiatan后门事件分析及溯源 | CTF导航

相关文章