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

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

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

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

工具目录

分类

查看所有分类
Loading categories
Darkcloak — Linux 进程身份伪装工具,通过 11 阶段 prctl 流水线伪造 comm、argv、cmdline、environ、exe 路径和 VMA,以冒充另一个进程。 | Kitploit
工具/GitHubGitHub/0x574r/darkcloak
权限提升持久化机制IDS/IPS规避冒充工具后渗透利用二进制分析论文与研究红队指纹欺骗
GitHub0x574r/darkcloak

Darkcloak

Linux 进程身份伪装工具,通过 11 阶段 prctl 流水线伪造 comm、argv、cmdline、environ、exe 路径和 VMA,以冒充另一个进程。

11243个月前尚未审核

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
查看仓库

DARKCLOAK

NASM Platform Architecture

Linux 进程身份伪装

DARKCLOAK 将对所有用户空间可见身份来源的操纵串联成一个 11 阶段顺序流水线,逐步转换进程,直到对用户空间监控工具而言,它与被冒充的进程无法区分。据我们所知,尚无已发布的工具能够同时操纵所有用户空间可见的身份来源。

完整的技术文章可在 RAZOR 博客上获取。

哪些内容会被伪造

  • task_struct->comm:通过 PR_SET_NAME
  • argv[0]:通过直接覆写栈
  • 命令行(/proc/$PID/cmdline):通过 PR_SET_MM_ARG_START/END
  • 环境变量(/proc/$PID/environ):通过 PR_SET_MM_ENV_START/END
  • 可执行文件路径(/proc/$PID/exe):通过 PR_SET_MM_EXE_FILE
  • 基于文件的 VMA(/proc/$PID/maps):替换为匿名内存
  • 进程命名空间可见性:通过 unshare

工作原理

该流水线按照被操纵内核子系统之间依赖关系所定义的严格顺序运行:

  1. ELF 内省:在 _start 处解析辅助向量以解析 PHT,并获取全部三个 PT_LOAD 段的虚拟地址范围
  2. 凭据读取:getresuid / getresgid 以存储原始 UID 和 GID,供后续恢复
  3. UID 提权:如果三个 UID 中任意一个为 0,则执行 setresuid(0,0,0)
  4. 能力提权:通过 capget/capset 将 permitted 集合复制到 effective 和 inheritable 集合
  5. 身份伪造:
    • prctl(PR_SET_NAME) → 覆写 task_struct->comm
    • 在 [rsp+8] 处直接写栈 → 覆写 argv[0]
    • prctl(PR_SET_DUMPABLE, 0) → 阻止非特权进程访问 /proc/$PID/mem 以及

mmap trampoline

只要仍有任何 VMA 由原始二进制文件支撑,PR_SET_MM_EXE_FILE 就会以 EBUSY 失败。由于当 RIP 位于 .text 段内部时无法取消映射该段,因此匿名化从临时匿名页运行:

  1. 分配一个 4096 字节的匿名页(mmap)
  2. 将匿名化代码(mm_start→mm_end)和段元数据复制到其中
  3. 将该页设为可执行(mprotect)
  4. 跳入其中:RIP 离开 .text
  5. 对于三个 PT_LOAD 段中的每一个:mmap 一个新的匿名区域 → memcpy 段内容 → munmap 原始段 → mremap 匿名副本回到原始地址 → mprotect 恢复原始权限
  6. 返回到现已匿名的 .text,取消映射 trampoline 页

该二进制文件是一个无解释器的静态 ELF,因此运行时 VMA 布局完全确定:三个 PT_LOAD 段、栈以及内核 vDSO。

构建

root@kitploit:~
nasm -f elf64 darkcloak.asm -o darkcloak.o
ld darkcloak.o -o darkcloak

配置

伪造目标在编译时于 .data 段中定义。默认值冒充 sshd:

root@kitploit:~
mimic_name    db 'sshd', 0
mimic_argv    db './sshd', 0
mimic_exe     db '/usr/sbin/sshd', 0
mimic_cmdline db '/usr/sbin/sshd', 0, '-D', 0, '[email protected]', 0, ...
mimic_environ db 'LANG=en_US.UTF-8', 0, 'NOTIFY_SOCKET=/run/systemd/notify', 0, ...

要冒充其他进程,请在构建前更新这些值。

用法

root@kitploit:~
./darkcloak

需要在 permitted 集合中具备 CAP_SYS_RESOURCE、CAP_SETUID、CAP_SETGID 和 CAP_SETPCAP。如果缺少 CAP_SYS_RESOURCE,则完全跳过 MM 伪造块(VMA 匿名化 + EXE_FILE 交换)。如果缺少 CAP_SETPCAP,该工具会从 PR_SET_SECUREBITS 回退到 PR_SET_KEEPCAPS。

验证

root@kitploit:~
./darkcloak &
PID=$!

cat /proc/$PID/comm
readlink /proc/$PID/exe
cat /proc/$PID/cmdline | tr '\0' ' '
cat /proc/$PID/environ | tr '\0' '\n' | head -3
cat /proc/$PID/maps | head -5
cat /proc/$PID/status | grep -E 'Uid|Gid|Cap'
ps aux | grep $PID

免责声明

仅出于教育和研究目的发布。仅可在您拥有或已获得明确书面授权进行测试的系统上使用。

下载工具
ptrace(PTRACE_ATTACH)
  • 通过 mmap trampoline 进行 VMA 匿名化(见下文)→ 移除所有基于文件的映射
  • prctl(PR_SET_MM_ARG_START/END) → 重定向 /proc/$PID/cmdline
  • prctl(PR_SET_MM_ENV_START/END) → 重定向 /proc/$PID/environ
  • prctl(PR_SET_MM_EXE_FILE) → 替换 mm_struct->exe_file
  • 能力保留:PR_SET_SECUREBITS(如果具备 CAP_SETPCAP)或 PR_SET_KEEPCAPS(回退方案)以在 UID 降权后继续存活
  • UID 降权:setresuid(1000,1000,1000) 或恢复原始值
  • GID 降权:setresgid(1000,1000,1000) 或恢复原始值
  • 能力降权:清空 effective 和 inheritable 集合
  • 命名空间隔离:unshare(CLONE_NEWUSER | CLONE_NEWPID | CLONE_NEWNET | CLONE_NEWIPC)
  • 保持:nanosleep(120s) 然后 exit