priyajyadav8-crypto/veritas

GitHub: priyajyadav8-crypto/veritas

Veritas 是一款利用 eBPF 技术检测 Linux 系统中隐藏元素的内核真相引擎,用于提升安全监控和事件响应能力。

Stars: 3 | Forks: 0

# veritas
![许可证](https://img.shields.io/badge/license-GPL--2.0-red) ![内核](https://img.shields.io/badge/kernel-5.15%2B-blue) ![语言](https://img.shields.io/badge/language-Rust-orange) ![eBPF](https://img.shields.io/badge/eBPF-Aya-green) ![二进制文件](https://img.shields.io/badge/binary-2.7MB%20static-lightgrey) **一款利用 eBPF 从 rootkit 无法触及的 Linux 内核内部检测隐藏进程、网络套接字和文件的内核真相引擎。**
## 工作原理 Veritas 利用 eBPF 将探针直接附加到内核函数上——位于用户空间之下,rootkit 的钩子之下。然后,它将内核实际看到的内容与用户空间报告的内容进行交叉引用。 一个 rootkit 可以欺骗 /proc。它无法欺骗一个在 rootkit 钩子运行前就已位于内核内部的 eBPF 探针。 ## 使用方法 ``` # 完整的内核与用户空间差异(默认) sudo veritas --diff # 用于 SIEM/管道集成的可机器读取 JSON sudo veritas --json # 仅检查进程 sudo veritas --processes # 仅检查网络套接字 sudo veritas --network # 仅检查文件系统与 LD_PRELOAD sudo veritas --fs ``` ### 在干净系统上的示例输出 ## Veritas 检查内容 | 检查项 | 方法 | 检测目标 | |--------|------|----------| | 隐藏进程 | 暴力 PID 扫描与 /proc 差异对比 | Diamorphine, Reptile 等任何隐藏 PID 的 rootkit | | 隐藏网络套接字 | 套接字 inode 交叉引用 | 在开放端口上隐藏的后门 | | LD_PRELOAD 注入 | 读取 /etc/ld.so.preload | 库注入型 rootkit | | 内核模块 | /proc/modules 关键词扫描 | 已知的 rootkit 模块名称 | | 关键文件权限 | 直接 stat 检查 | 被篡改的 /etc/passwd, /etc/shadow | | 可疑路径 | 路径存在性检查 | 隐藏在 /tmp, /dev/shm 中的文件 | | PID 1 库映射 | /proc/1/maps 扫描 | 注入到 init 进程中的库 | ## 为何不使用现有工具 | 工具 | 方法 | 局限性 | |------|------|--------| | Volatility | 内存取证 | 需要离线内存转储 | | rkhunter | 文件签名 | 极易被绕过 | | chkrootkit | 签名扫描 | 在用户空间运行,可能被欺骗 | | unhide | 进程差异对比 | 未维护,非基于 eBPF | | **veritas** | 实时 eBPF 内核差异对比 | 在 rootkit 钩子之下运行 | ## 系统要求 - Linux 内核 **5.15+**(推荐 6.x) - **Root** 权限或 CAP_BPF 能力 - 架构:**x86_64** ## 安装说明 ### 下载静态二进制文件 从发布页面下载预构建的 2.7MB 静态二进制文件。无需任何依赖。 ``` chmod +x veritas sudo ./veritas --diff ``` ### 从源代码构建 ``` # 安装 Rust nightly curl --proto =https --tlsv1.2 -sSf https://sh.rustup.rs | sh rustup toolchain install nightly rustup component add rust-src --toolchain nightly # 安装依赖项 sudo apt install -y llvm clang libelf-dev musl-tools # 安装 eBPF 链接器 cargo install bpf-linker # 构建 eBPF 程序 cargo +nightly build --package veritas-ebpf --target bpfel-unknown-none -Z build-std=core # 构建静态发布二进制文件 cargo build --package veritas --target x86_64-unknown-linux-musl --release # 运行 sudo ./target/x86_64-unknown-linux-musl/release/veritas --diff ``` ## 流水线集成 ``` # 将输出传输至 jq sudo veritas --json | jq .verdict # 用于持续监控的 Cron 作业 */15 * * * * sudo veritas --json >> /var/log/veritas.log # 发送至中央日志记录 sudo veritas --json | curl -X POST https://your-siem/ingest -d @- ``` ## 技术架构 **技术栈:** - 语言:Rust(nightly 版) - eBPF 库:Aya(纯 Rust,无 libbpf C 依赖) - 序列化:serde + serde_json - 构建目标:x86_64-unknown-linux-musl(静态二进制文件,2.7MB) - 最低内核:5.15 ## 路线图 - [x] 隐藏进程检测 - [x] 隐藏网络套接字检测 - [x] LD_PRELOAD 注入检测 - [x] 内核模块扫描 - [x] 关键路径完整性检查 - [x] JSON 输出用于流水线集成 - [x] 静态二进制文件构建 - [x] 手册页 - [ ] 守护进程模式用于持续监控 - [ ] 集中式集群报告 - [ ] 更多 rootkit 签名 ## 许可证与版权 本项目根据 **GNU 通用公共许可证 v2.0** 授权。 完整条款请参见 LICENSE-GPL2 文件。 ## 作者 **由 Priyaj Yadav 创建并维护** GitHub: [@priyajyadav8-crypto](https://github.com/priyajyadav8-crypto) ## 贡献 欢迎提交问题和拉取请求。 提交重大更改前,请先提出问题讨论。
veritas — 无法被贿赂的见证者。
标签:Docker镜像, 可视化界面, 通知系统