XZ计划中的后门手法 - “NOBUS”
2024-4-3 12:17:32 Author: mp.weixin.qq.com(查看原文) 阅读量:6 收藏

1.xz后门手法“NOBUS”

通过Filippo Valsorda(1)和amlweems(2)的分析,我们可以看到这个xz后门程序使用了以下技术来实现NOBUS效果:

1. 使用硬编码的ED448公钥:后门程序中硬编码了一个特定的ED448公钥,用于验证触发后门的数据的签名。只有拥有对应私钥的攻击者才能生成有效的签名,从而使用这个后门。其他人即使获得了后门程序,也无法使用它。

2. 将签名与目标主机的公钥绑定:ED448签名是根据头部的一部分、命令的一部分以及目标主机SSH公钥的哈希值计算的。这意味着攻击者生成的数据只能在特定的目标主机上触发后门,无法在其他主机上重放。

3. 解密有效载荷需要ED448公钥:触发后门的数据中包含一个经过ChaCha20加密的有效载荷,而ChaCha20的密钥是ED448公钥的前32字节。同样,只有拥有对应私钥的攻击者才能正确加密有效载荷。

4. 命令字节的检查:后门会检查数据头部的三个魔术值生成的命令字节,只有命令字节不大于3时才会执行后门代码。这相当于一个简单的"口令",只有知道如何构造头部的攻击者才能通过这个检查。

综上所述,这个后门使用了非对称加密、数字签名与目标主机绑定、对称加密以及简单的口令等多重技术,确保了只有拥有特定 ED448私钥的攻击者才能在特定目标主机上触发后门并执行命令,而其他人即使掌握了后门程序和触发数据也无法使用,从而很好地实现了NOBUS效果。这体现了后门程序开发者较强的密码学技能和逆向工程对抗能力。

额外的解释:

1. 通过挂钩RSA_public_decrypt函数,该函数会验证服务器主机密钥的签名,签名使用的是一个固定的Ed448密钥。如果验证通过,就会将一个有效载荷传递给system()函数执行。

2. 这个后门可以实现远程代码执行,而不是身份验证绕过。而且这个后门是有限制的,不能重放攻击。

3. 有效载荷是从传递给RSA_public_decrypt函数的N值(公钥)中提取出来的,会先检查一个简单的指纹,然后用一个固定的ChaCha20密钥解密,最后再进行Ed448签名验证。

4. RSA_public_decrypt 是一个用于签名验证的函数(名字有点奇怪)。RSA 签名验证与 RSA 加密是同一个操作。

5. 在进行身份验证之前,攻击者可以通过使用OpenSSH证书来控制传递给RSA_public_decrypt的公钥。

2.NSA的NOBUS指导原则

2013年,前NSA局长Michael Hayden在一次会议上表示“这个世界的进攻和防守都取决于漏洞问题”。接着 Hayden 阐述了NOBUS(Nobody But Us)的概念,即如果NSA认为其他人无法利用某个漏洞,它会放任漏洞不修,以助于自身的间谍活动。

NOBUS作为NSA网络间谍行动(CNE)的指导原则,而这种指导原则反映在漏洞、后门和植入物的设计上。

1.Stuxnet事件表明,NSA可能储备了大量零日漏洞。

2.NSA在Dual EC加密标准中植入的后门就是一个典型的NOBUS后门。

3.TAO在植入物设计上,会为每个目标生成一个新的公钥。

参考资料:

1.https://bsky.app/profile/filippo.abyssdomain.expert/post/3kowjkx2njy2b

2.https://github.com/amlweems/xzbot

3.https://twitter.com/matthew_d_green/status/1433470109742518273


文章来源: https://mp.weixin.qq.com/s?__biz=MzU0MzgyMzM2Nw==&mid=2247485524&idx=1&sn=aa2b7b0d57b250e5cc101e5dcbebbca6&chksm=fb04cb3ccc73422a9fe22937b801eceb205ceaf8bf3b76a92143d575d55e5fd2eef5adfacb36&scene=58&subscene=0#rd
如有侵权请联系:admin#unsafe.sh