hackerschoice/zapper

GitHub: hackerschoice/zapper

zapper 是一个 Linux 工具,用于从进程列表中隐藏命令行参数和环境变量,增强操作隐私。

Stars: 269 | Forks: 25

命令行选项的隐私保护

一个用于从 "ps" 命令中隐藏的 Linux 工具

下载: ``` curl -fL -o zapper https://github.com/hackerschoice/zapper/releases/latest/download/zapper-linux-$(uname -m) && \ chmod 755 zapper && \ ./zapper -h ``` 示例:仅显示 'nmap',但不显示命令选项: ``` ./zapper nmap -sCV -F -Pn scanme.nmap.org ^^^^^^^^^^^^^^^^^^^^^^^^^^^ will not show ``` 示例:用隐藏的 tmux/shell 替换当前 shell。隐藏所有子进程 (`-f`),采用某个内核进程的名称 (`-a`) 并隐藏所有命令行选项: ``` exec ./zapper -f -a'[kworker/1:2-cgroup_destroy]' tmux ``` ![Screenshot 2023-10-04 at 12 06 39](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/46bc3f9190034224.png)

显示了 6 个隐藏的进程:tmux, bash, nmap, sleep, ps, grep

1. 不需要 *root* 权限 2. 也可用于静态二进制文件(例如 GoLang 编译的二进制文件) 3. 同时清除环境变量 (*/proc/<PID>/environ*) 4. 不依赖 *LD_PRELOAD=* 或 libc。 5. 使用 ptrace() 操作 [ELF 辅助表](https://iq.thc.org/how-does-linux-start-a-process) 6. 仅 00.1% 的开销。 7. 阻止管理员查看或窥探您的进程。 8. 可以在 _任意_ 进程 ID 下启动进程 (`-n `) 编译: ``` git clone https://github.com/hackerschoice/zapper.git cd zapper make ``` ![Screenshot 2023-10-04 at 08 10 19](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/baaf55e4fc034225.png) 工作原理: * 它使用 ptrace() [操作栈的 ELF-Aux-Table](https://iq.thc.org/how-does-linux-start-a-process)。 * 当内核将命令选项传递给程序时(在 SYS_execve() 期间),Zapper 进行拦截:它将原始命令选项移动到新的内存位置,然后销毁旧的内存位置。从内核(和 procps)的角度看,命令选项不复存在。最后,Zapper 修复程序的 Aux-Table 中的指针,并将执行权交还给程序(PTRACE_CONTINUE)。此后,程序将被跟踪,任何进一步的 fork() 或 execve() 调用[都会再次执行相同的操作]。 * 通过使用一些巧妙的 ptrace 功能,几乎零性能影响:仅跟踪 execve() 和 fork() 事件(但不跟踪任何其他系统调用)。 * `-n ` 技巧(在 _任意_ PID 下启动程序)是一个技巧:Linux 按顺序为每个新 _线程_ 分配新的 PID,直到最大可能的 PID 4,194,304 (2^22)。之后,它从 PID 300(或 1,取决于环境)重新开始。Zapper 在几秒钟内遍历所有 2^22 个可能的 PID,直到遇到目标 PID-1:Zapper 分叉 8 个以上进程,每个进程调用 `clone((int (*)(void *))exit, ..)`。直接跳转到 `exit()` 并设置 `CLONE_VM` 是遍历所有可用 PID 的最快方法。
标签:Elf辅助表, Linux安全工具, Linux进程管理, ps命令隐藏, ptrace技术, 低开销工具, 内存操作, 命令行选项隐藏, 命令行隐私, 子域名枚举, 客户端加密, 无需root权限, 环境变量保护, 环境变量隐藏, 管理员可见性控制, 系统安全, 网络可见性, 网络安全, 进程信息篡改, 进程列表操控, 进程隐藏, 隐私保护, 静态二进制支持