yasindce1998/Aegis-Shadow

GitHub: yasindce1998/Aegis-Shadow

一个基于 Rust 和 eBPF 的 Linux 内核安全研究框架,同时展示 rootkit 攻击技术和运行时防御检测能力。

Stars: 0 | Forks: 0

![Aegis-Shadow Logo](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/77c501b37f204919.svg) [![License](https://img.shields.io/badge/license-Educational-red.svg)](LICENSE) [![Rust](https://img.shields.io/badge/rust-nightly-orange.svg)](https://www.rust-lang.org/) [![eBPF](https://img.shields.io/badge/eBPF-CO--RE-blue.svg)](https://ebpf.io/) [![Kernel](https://img.shields.io/badge/kernel-5.10+-green.svg)](https://www.kernel.org/)
## 概述 Aegis-Shadow 是一个教育性研究项目,展示了 Linux eBPF 技术在攻击和防御方面的应用。它由两个模块组成: - **Shadow** (攻击):一个基于 eBPF 的 rootkit,包含 23 项功能,涵盖进程隐藏、 基于 XDP 的 C2(采用 ChaCha20 加密和 HMAC 认证)、文件混淆、 凭据收集、DNS 数据外传、ICMP 隐蔽通道、网络 namespace 隐藏、 eBPF 程序伪装、容器逃逸探测以及反取证字节码擦除。 - **Aegis** (防御):一个运行时检测引擎,包含 14 个基于 eBPF 的检测模块, 以及智能用户空间分析,包括异常评分、攻击链关联、基于校准的基线、 恶意程序自动分离、进程隔离、蜜罐映射以及支持热重载的配置。 ## 警告 **本项目仅供教育和研究目的使用。** - 所有的开发和测试必须在隔离的虚拟机中进行。 - 严禁在生产系统、共享网络或非本人所有的系统上运行攻击模块。 - 测试期间,虚拟机必须使用仅主机网络适配器。 - 请勿分发已编译的 rootkit 二进制文件。 ## 环境要求 - **宿主机**:macOS/Linux,配备 UTM、QEMU 或 VirtualBox - **客户机虚拟机**:Ubuntu 24.04 LTS,Linux Kernel 6.8+ - **Rust**:Nightly 工具链 - **工具**:bpf-linker、bpftool、clang、llvm、libelf-dev ## 快速开始 ``` # 设置 VM 并验证环境 bash verify-env.sh # 构建所有内容 make build # 启动 offensive rootkit(加载全部 23 个功能) sudo ./target/release/offense --iface eth0 --hide-pid 1234 # 运行 defense 检测(在另一个终端中) sudo ./target/release/defense --all-modules --verbose # 停止程序 # 在每个终端中按下 Ctrl+C,或者: sudo pkill offense sudo pkill defense ``` ## 项目结构 | 目录 | 用途 | |---|---| | `common/` | 共享的数据结构和常量 (`#![no_std]`) | | `offense-ebpf/` | 内核空间 rootkit eBPF 程序(23 项功能) | | `offense/` | 用户空间 rootkit 加载器和 CLI | | `defense-ebpf/` | 内核空间防御性 eBPF 探测器(11 个探测器) | | `defense/` | 用户空间检测引擎和 CLI | | `xtask/` | 构建自动化 | | `integration-tests/` | 攻防对抗测试套件 | ## 使用方法 ### 攻击 (Rootkit) 攻击模块在启动时会自动加载 13 个核心 rootkit 功能。其他功能通过标志启用: ``` # 基本用法 - 加载核心功能 sudo ./target/release/offense --iface eth0 # 启用扩展功能 sudo ./target/release/offense \ --iface eth0 \ --hide-pid 1234 \ --obfuscate-inode 98765 \ --monitor-tty 136:0 \ --pin-maps \ --enable-icmp-exfil \ --enable-container-probe ``` **可用标志:** | 标志 | 描述 | |---|---| | `--iface ` | 用于附加 XDP/TC 的网络接口 | | `--verbose` | 启用 debug 级别日志 | | `--hide-pid ` | 在启动时将 PID 添加到隐藏进程列表 | | `--obfuscate-inode ` | 将 inode 添加到文件混淆列表 | | `--monitor-tty ` | 监控 TTY 设备以收集凭据 | | `--spoof-ppid ` | 伪造进程的父 PID | | `--timestomp ` | 设置虚假时间戳(Unix 时间戳秒数) | | `--pin-maps` | 将 BPF maps 固定到 `/sys/fs/bpf/shadow` 以实现持久化 | | `--enable-netns-hide` | 启用网络 namespace 隐藏 | | `--enable-bpf-cloak` | 启用 eBPF 程序伪装(隐藏自身的 prog ID) | | `--enable-module-mask` | 在 /proc/modules 中启用内核模块伪装 | | `--enable-memfd` | 启用仅内存 payload 加载(memfd + execveat) | | `--enable-syslog-strip` | 启用 syslog 写入剥离 | | `--wipe-bytecode` | 激活反取证字节码擦除(程序将变为 no-op) | | `--enable-icmp-exfil` | 启用 ICMP 隐蔽通道数据外传 | | `--enable-socket-clone` | 启用 socket 克隆 / 连接影子化 | | `--enable-cred-relay` | 启用通过 C2 进行凭据中继 | | `--enable-container-probe` | 启用容器逃逸探测 | ### 防御 (检测引擎) 防御模块通过标志启用检测模块,并提供智能告警分析: ``` # 启用所有检测 modules sudo ./target/release/defense --all-modules # 使用 hot-reload config 启用特定 modules sudo ./target/release/defense \ --ghost-maps \ --syscall-latency \ --bytecode-check \ --prog-inventory \ --memfd-detect \ --honeypots \ --config /etc/aegis/config.json \ --output /tmp/alerts.json # 启用 active response sudo ./target/release/defense --all-modules \ --auto-detach \ --auto-contain \ --threshold 3 ``` **可用标志:** | 标志 | 描述 | |---|---| | `--verbose` / `-v` | 启用 debug 级别日志 | | `--output` / `-o` | 写入 JSON 告警记录的路径 | | `--threshold` / `-t` | 告警严重性阈值:1=低,2=中(默认),3=高,4=严重 | | `--all-modules` | 启用所有检测模块 | | `--ghost-maps` | 启用幽灵 map 检测 | | `--syscall-latency` | 启用 syscall 延迟监控 | | `--bytecode-check` | 启用字节码完整性检查 | | `--hidden-process` | 启用隐藏进程检测 | | `--suspicious-hooks` | 启用可疑 hook 检测 | | `--prog-inventory` | 启用 eBPF 程序清单(ID 间隙检测) | | `--syscall-anomaly` | 启用 syscall 参数异常分析 | | `--net-baseline` | 启用网络行为基线 | | `--memfd-detect` | 启用基于内存的执行检测 | | `--map-audit` | 启用 BPF map 内容审计 | | `--tracepoint-monitor` | 启用 tracepoint 覆盖范围监控(快速卸载检测) | | `--auto-detach` | 自动卸载恶意 BPF 程序 | | `--auto-contain` | 通过 cgroups 自动隔离进程 | | `--honeypots` | 启用蜜罐 BPF maps | | `--calibration-period` | 基线校准持续时间(秒)(默认:60) | | `--config` | 运行时配置 JSON 文件的路径(每 5 秒热重载一次) | 有关详细的使用示例,请参阅 [USAGE.md](USAGE.md) ## 运行测试 ``` # 运行集成测试(user-space,无需 root) cargo test -p integration-tests # 运行自动化测试脚本(需要 root,在 VM 中) sudo ./tests/test_offense.sh sudo ./tests/test_defense.sh # 或使用 Makefile make test ``` 有关手动测试流程,请参阅 [USAGE.md](USAGE.md#testing) ## 许可证 本项目仅供教育目的使用。有关完整的安全和法律指南,请参阅 PRD 的第 13 节。
标签:Docker镜像, IP 地址批量处理, Linux内核, Rootkit, Rust, Zeek, 可视化界面, 安全渗透, 网络流量审计, 运行时审计, 通知系统