Prashant-koi/Lavender
GitHub: Prashant-koi/Lavender
基于 eBPF 的轻量级 Linux 端点检测响应工具,通过内核级监控追踪进程行为。
Stars: 0 | Forks: 0
# Lavender
Lavender 是一个我正在从零开始构建的用户态 EDR(Endpoint Detection and Response,端点检测与响应)工具。它包含用 Rust 和 C 编写的小型安全代理,通过 eBPF 挂钩到 Linux 内核以检测异常行为。我还计划添加一个实时仪表板来显示威胁事件。
## 项目布局
- ebpf: C eBPF 程序和 Makefile
- common: 内核和用户态共用的 Rust 事件结构体
- agent: Rust 用户态加载器,用于附加 eBPF 并读取 ring buffer 事件
## 前置条件
- 启用了 BTF 的 Linux 内核(检查 `/sys/kernel/btf/vmlinux` 是否存在)
- `bpftool`
- 支持 BPF 目标的 `clang`
- `libbpf` 开发头文件(`bpf_helpers.h` 和 `bpf_core_read.h` 所需)
- Rust 工具链和 `cargo`
- 用于加载/附加 eBPF 程序的 sudo 或 root 权限
- `llvm-objdump`(可选,用于反汇编)
## 构建 eBPF 程序
在仓库根目录下执行:
```
cd ebpf
make vmlinux
make build
```
这将生成:
- ebpf/vmlinux.h
- ebpf/execve.bpf.o
## 运行用户态加载器
在仓库根目录下执行:
```
sudo cargo run --manifest-path agent/Cargo.toml
```
或在 agent 目录下执行:
```
cd agent
sudo cargo run --manifest-path Cargo.toml
```
成功后,你应该会看到:
```
Lavender is watching. Ctrl+C to stop
```
## 保存输出为 JSON
在 `agent` 目录下,直接运行编译好的二进制文件,以便重定向能够正常工作:
```
cd agent
cargo build
```
将所有 exec 事件捕获到 `events.json`,并将所有告警捕获到 `alerts.json`:
```
sudo ./target/debug/lavender-loader > events.json 2> alerts.json
```
仅将告警捕获到 `alerts.json`(丢弃正常的 exec 流):
```
sudo ./target/debug/lavender-loader 1>/dev/null 2>alerts.json
```
仅捕获告警并在终端中实时查看:
```
sudo ./target/debug/lavender-loader 1>/dev/null 2> >(tee alerts.json >&2)
```
注意:除非你将二进制文件复制到当前目录,否则 `./lavender-loader` 可能会提示 "command not found"。默认的 Cargo 路径是 `./target/debug/lavender-loader`。
## 为什么会出现 `exec format error`?(我的经验总结)
`execve.bpf.o` 是用于 eBPF 虚拟机的 ELF 目标文件,而不是原生可执行文件。它不能直接通过 `./execve.bpf.o` 运行。
正确使用方式是通过用户态加载器(例如使用 libbpf 的 Rust/C 程序)加载它,或者使用 `bpftool` 的 attach/load 命令。
## 事件流与 Map 名称
用户态加载器从两个 ring buffer map 读取数据:
- `exec_events`:进程 execve 事件(`pid`、`ppid`、`comm`、`filename`)
- `exit_events`:进程退出事件(仅 `pid`)
当前的 eBPF map 名称在 `ebpf/execve.bpf.c` 中定义为 `exec_events` 和 `exit_events`。
## 常用命令
```
make help
make disasm
make clean
```
标签:AMSI绕过, BTF, CCTV/网络接口发现, Docker镜像, EDR, libbpf, Linux内核, Rust, 可视化界面, 威胁检测, 子域名枚举, 安全代理, 安全渗透, 实时仪表盘, 开源安全工具, 异常行为检测, 时间线生成, 端点检测与响应, 系统安全, 网络安全, 网络流量审计, 脆弱性评估, 脱壳工具, 请求响应过滤, 逆向工程平台, 通知系统, 隐私保护