lukasmaar/kernelsnitch
GitHub: lukasmaar/kernelsnitch
该项目是一个利用时序侧信道与跨缓存重用技术泄露 Linux 内核堆对象的漏洞利用实验环境,支持桌面 Linux、KernelCTF 和 Android 平台。
Stars: 29 | Forks: 1
# KernelSnitch + Cross-Cache 重用实验工作区
本仓库包含一个本地内核漏洞利用实验环境,具有两种执行环境:
- Buildroot VM (`vm-start.sh`)
- kernelCTF 风格 VM (`kernelctf-start.sh`)
它还包含漏洞利用 PoC、一个可加载内核模块,以及用于为 VM 和原生运行准备匹配内核的辅助脚本。
## 仓库布局
- `exploits/` 用户空间漏洞利用概念验证和辅助二进制文件 - 参见 [`exploits/README.md`](exploits/README.md)
- `module/` 可加载内核模块 (`lkm.ko`) - 参见 [`module/README.md`](module/README.md)
- `buildroot-env/` Buildroot 镜像构建输入/脚本 - 参见 [`buildroot-env/README.md`](buildroot-env/README.md)
- `linux-env/` 本地 Linux 源码下载与准备脚本 - 参见 [`linux-env/README.md`](linux-env/README.md)
- `kernelctf-env/` kernelCTF 下载/准备/rootfs 补丁脚本 - 参见 [`kernelctf-env/README.md`](kernelctf-env/README.md)
- `vmshare/` 挂载到客户机内的宿主机共享目录
## 常用工作流
### 1) Buildroot VM 工作流
准备本地 VM 资产:
```
make prepare-vm
```
构建漏洞利用程序 + 模块并启动 VM:
```
make run-vm
```
### 2) kernelCTF VM 工作流
下载发布版,准备各发布版内核树,并修补 rootfs:
```
make prepare-kernelctf
```
为选定的 profile 构建漏洞利用程序 + 模块,并启动 kernelCTF VM:
```
make MODULE_PROFILE_KERNELCTF=kernelctf-6.12 run-kernelctf
```
支持的 kernelCTF profile 定义在 `kernelctf-env/releases.map` 中。
## 原生执行 Profile
在直接宿主机/设备内核上运行时使用此项(非 VM 镜像中)。
| 目标 | 内核系列 | 漏洞利用二进制文件 | 模块 profile |
|---|---|---|---|
| Ubuntu | 6.5.0-14-generic | `*.x86.elf` | `ubuntu-old` |
| Ubuntu | 6.8.0-101-generic | `*.x86.elf` | `ubuntu` |
| Fedora | 6.18.13-200.fc43.x86_64 | `*.x86.elf` | `fedora` |
| Raspberry Pi | 6.12.47+rpt-rpi-v8 | `*.arm.elf` | `rasp` |
| Android | 6.1.145-android14 | `*.arm.elf` | 无专用原生 profile(见下方注记) |
Android 注记:
- 支持漏洞利用二进制文件(`make -C exploits arm` + `adb push`)。
- `module/Makefile` 中未定义原生 Android 模块 profile,但可以直接使用。
### 原生构建命令
漏洞利用程序:
```
make -C exploits x86
make -C exploits arm
```
模块示例:
```
make -C module PROFILE=ubuntu-old all # Ubuntu 6.5
make -C module PROFILE=ubuntu all # Ubuntu 6.8
make -C module PROFILE=fedora all # Fedora 6.18
make -C module PROFILE=rasp all # Raspberry 6.12
```
在支持模块的原生 Linux 系统上插入/移除模块:
```
make -C module insert
make -C module remove
```
## 仅构建目标
```
make build-exploits
make build-module
make build-module-vm
make build-module-kernelctf MODULE_PROFILE_KERNELCTF=kernelctf-6.12
```
## 环境要求
- `make`, `gcc`, `git`, `curl`, `awk`
- `qemu-system-x86_64`(用于 VM 运行)
- `aarch64-linux-gnu-gcc`(可选,用于 ARM 漏洞利用构建)
- `debugfs` + `fdisk`(用于 `kernelctf-env/patch-rootfs.sh`)
- 用于模块构建的内核头文件/源码
- `adb`(可选,用于通过 `make -C exploits push` 进行 Android/ARM 部署)
## 演示
Fedora v6.18 - 成功重用 `msg_msg`:
[run-fedora.webm](https://github.com/user-attachments/assets/c1a9a998-12b7-43db-b5fd-eaeb983e9d8b)
KernelCTF v6.12 - 成功重用 `msg_msg`:
[run-kernelctf.webm](https://github.com/user-attachments/assets/147cfd10-a841-4306-939d-97a639d49bc5)
KernelCTF v6.12 - 成功重用 `pipe_buffer`:
[run-kernelctf-pipe.webm](https://github.com/user-attachments/assets/62c747db-e1b8-42ce-9a6c-4e4c4090d8cf)
Android `untrusted_app` - 成功重用 `pipe_buffer`。在这里,第二个终端用于验证泄露的 `pipe_buffer` 地址,显示了正确的 slab `kmalloc-cg-1k` 拥有者:
[run-app.webm](https://github.com/user-attachments/assets/bf7adb74-05b0-426a-9645-e98651a60e32)
标签:0day挖掘, Android, Cutter, DSL, Linux内核, Web报告查看器, 侧信道攻击, 内核安全, 客户端加密, 身份验证强制