Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
guardd — 基于机器学习的行为端点检测系统,用于 Linux 机器 | Kitploit
工具/GitHubGitHub/benny-e/guardd
防御工具机器学习入侵检测异常检测
GitHubbenny-e/guardd

guardd

基于机器学习的行为端点检测系统,用于 Linux 机器

查看仓库
113120天前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

Guardd 企鹅图标

Guardd

基于 eBPF 和机器学习的 Linux 行为异常检测。

Linux Python 3.11 或更高版本 MIT 许可证

Guardd 会学习 Linux 主机的正常行为模式,并标记出与该基线不同的活动。 内核传感器收集进程执行和出站 TCP 连接尝试;Isolation Forest 对生成的 一分钟活动窗口进行评分。告警包含评分、行为上下文和解释, 以帮助你进行调查。

后台守护进程负责收集、训练和检测。桌面 GUI 和终端界面让你可以在守护进程继续运行时检查告警和资源使用情况。

状态: 实验性,正在积极开发中。检测质量取决于 工作负载、基线和灵敏度设置。

安装 · 使用 · 配置 · 工作原理 · 更新 · 故障排除

功能特性

  • 内核遥测: 进程名称、可执行文件路径、用户、父进程 ID,以及出站 IPv4 TCP 目标地址和端口。
  • 行为检测: 活动计数、多样性和新颖度,基于 固定参考基线进行评分。
  • 自动生命周期: 初始收集、模型训练、检测、每周 重新训练,以及模型重载,全部在一个 systemd 服务中完成。
  • 持久化告警: SQLite 存储,包含评分、严重程度、解释、 特征摘要和上下文;告警还会以换行分隔的 JSON 格式发出。
  • 桌面 GUI: 概览和告警页面、搜索、严重程度和时间筛选、 详细的告警检查,以及自动刷新。
  • 系统可见性: 服务状态、CPU 和内存使用、PID、运行时间、主机和 内核信息、聚合窗口大小,以及遥测新鲜度。
  • 桌面集成: Guardd 应用程序菜单启动器和企鹅图标。
  • 终端访问: curses TUI 以及用于收集、训练、 评分和直接检查遥测的命令。

截图

桌面概览

Guardd 桌面概览

告警调查

Guardd 告警浏览器

桌面截图使用示例告警和模拟的服务状态。

终端界面

Guardd 终端界面

安装

要求

提供的安装程序使用 apt-get 和 systemd。Ubuntu 24.04 LTS 是一个实用的 起点;Debian 系统需要等效的软件包。其他发行版 需要手动安装依赖项。

  • Python 3.11 或更高版本,以 python3 形式提供。Ubuntu 22.04 的默认 Python 3.10 不满足软件包要求。
  • 支持 eBPF 的 Linux 内核,BTF 位于 /sys/kernel/btf/vmlinux,以及所需的 进程和套接字跟踪点。
  • Clang/LLVM、libbpf 开发头文件、libelf、C 构建工具链,以及 用于生成内核头文件和 BPF 骨架的 bpftool。
  • 安装服务和运行传感器需要 root 权限。
  • 可选的 PySide6 GUI 需要图形桌面会话。

在 Ubuntu 上,请在运行安装程序之前安装 Git 和内核工具:```bash sudo apt-get update sudo apt-get install -y git linux-tools-common "linux-tools-$(uname -r)" python3 --version bpftool version test -r /sys/kernel/btf/vmlinux && echo "Kernel BTF available"

kernel-tools 包必须与您正在运行的内核匹配。在 Debian 上,`bpftool` 作为单独的包提供。安装程序会提供其他构建和 Python 依赖项,但不会显式安装 `bpftool`。

### 安装守护进程和桌面 GUI```bash
git clone https://github.com/benny-e/guardd.git
cd guardd
sudo bash install.sh --gui

对于无头安装,请改为运行 sudo bash install.sh。

安装程序会将应用程序复制到 /opt/guardd,创建其虚拟 环境,构建 eBPF 收集器,安装 /usr/local/bin/guardd,并 在启动时启用 guardd.service。它不会启动该服务。使用 --gui 时, 它还会安装 Qt 运行时依赖、桌面启动器和图标。

设置安装路径

在首次启动之前,打开已安装的配置文件:```bash sudoedit /opt/guardd/config.toml

将其 `[paths]` 部分设置为绝对路径:```toml
[paths]
sensor_path = "/opt/guardd/ebpf/guardd"
db_path = "/opt/guardd/data/features.db"
model_path = "/opt/guardd/data/model.bundle"

仓库配置使用相对路径。这些路径在服务的 /opt/guardd 工作目录下可以正常工作,但桌面启动器可能会从其他位置启动。使用绝对路径可以让守护进程、GUI 和 CLI 使用相同的数据。

查看 Configuration 中的训练设置,然后启动:```bash sudo systemctl start guardd.service systemctl status guardd.service sudo journalctl -u guardd.service -f

首次运行会在模型可用之前收集数据。处于此收集阶段的服务仍可正常运行;请检查其日志以了解训练和检测情况。

## 用法

### 桌面 GUI

从应用程序菜单中打开 **Guardd**,或运行:```bash
guardd gui

以您的常规桌面用户身份运行 GUI。它会读取现有数据库并每五秒刷新一次。关闭它后守护进程仍在运行。

页面您可以做什么
Overview检查服务、今日告警、模型文件可用性、CPU/内存使用情况、PID、运行时间、主机/内核详细信息、60 秒窗口大小以及最近的遥测数据。选择一条最近的告警以查看详情。
Alerts搜索进程名称、路径、目标地址和原因;按严重程度以及最近 24 小时、7 天、30 天或全部时间进行筛选;选择一条告警以查看其评分、阈值、解释、活动和上下文。

使用 Refresh 立即更新。时间使用您的本地时区,Overview 的每日总计覆盖本地日历日,与筛选条件无关。

要选择不同的数据库或增加显示的告警数量上限:```bash guardd gui --db-path /opt/guardd/data/features.db --model-path /opt/guardd/data/model.bundle --limit 500

GUI 是一个只读查看器:采集、训练和服务控制均通过守护进程和 CLI 进行。模型可用仅表示文件存在,并不表示其内容有效或检测已启动。GUI 不会加载 pickle 模型。资源指标覆盖整个 systemd 服务,包括传感器;100% CPU 表示一个逻辑核心。首次 CPU 读数需要两个采样。

### 终端界面```bash
sudo guardd tui

TUI 每两秒刷新一次,并显示告警详情和守护进程统计信息。 与 GUI 不同,它通过可写数据库连接初始化存储; 标准的 root 拥有的安装可能需要 sudo。

按键操作
↑ / k、↓ / j选择告警。
/搜索;按 Enter 应用或按 Esc 取消。
r清除搜索并返回第一条告警。
q / Esc退出。

服务管理```bash

sudo systemctl stop guardd.service sudo systemctl start guardd.service sudo systemctl restart guardd.service systemctl status guardd.service sudo journalctl -u guardd.service -n 100 --no-pager sudo journalctl -u guardd.service -f

编辑其配置后重启服务。使用 `sudo systemctl enable guardd.service` 或
`sudo systemctl disable guardd.service` 启用或禁用开机自启动。

### CLI 与手动操作

一次运行一个采集器。在手动采集或检测之前停止 systemd 服务,并在训练其模型之前停止手动采集器。

| 命令 | 用途 |
| --- | --- |
| `guardd` 或 `guardd daemon` | 运行自动采集 → 训练 → 检测生命周期。 |
| `guardd daemon --mode collect` | 采集窗口而不进行自动训练。 |
| `guardd daemon --mode detect` | 使用现有的兼容模型对窗口进行评分。 |
| `guardd collect` | 将实时窗口采集到 SQLite。 |
| `guardd train` | 从存储的窗口训练模型并打印其摘要。 |
| `guardd detect` | 对实时窗口进行评分并发出警报。 |
| `guardd ingest` | 打印解析后的传感器事件以进行调试。 |
| `guardd gui` / `guardd tui` | 在桌面或终端界面中浏览警报。 |

在标准安装中,手动工作流程为:```bash
sudo systemctl stop guardd.service
sudo guardd collect --sensor-path /opt/guardd/ebpf/guardd --db-path /opt/guardd/data/features.db
# Press Ctrl+C after collecting enough representative activity.
sudo guardd train --db-path /opt/guardd/data/features.db --model-out /opt/guardd/data/model.bundle
sudo guardd detect --sensor-path /opt/guardd/ebpf/guardd --db-path /opt/guardd/data/features.db --model-path /opt/guardd/data/model.bundle

按 Ctrl+C 停止手动检测,然后重启 systemd 服务以恢复后台运行。对于前台自动守护进程,使用 sudo guardd daemon。对于原始遥测数据,使用 sudo guardd ingest --sensor-path /opt/guardd/ebpf/guardd --pretty。

在任何命令后附加 --help 可查看其选项。检测支持 --print-all-scores、--print-features、--print-windows 和 --no-store。 --no-store 禁用特征窗口写入;检测到的异常仍会被存储。

配置

Guardd 按以下顺序加载第一个存在的文件:

  1. 当前工作目录中的 ./guardd.toml。
  2. /etc/guardd/config.toml。
  3. /opt/guardd/config.toml。

文件不会合并。检出目录中的 config.toml 是模板,而非 自动发现的开发配置。对于本地设置,将其复制为 guardd.toml 并调整路径。

以下是一个已安装系统的示例,包含频繁的引导尝试和 更长的初始训练周期:```toml [paths] sensor_path = "/opt/guardd/ebpf/guardd" db_path = "/opt/guardd/data/features.db" model_path = "/opt/guardd/data/model.bundle"

[logging] debug = false

[daemon] mode = "auto" bootstrap_retry_seconds = 600 retrain_interval_seconds = 604800 print_windows = false print_features = false print_all_scores = false no_store = false

[train] min_training_rows = 1380 baseline_fraction = 0.2 limit = 50000 contamination = 0.01 n_estimators = 200 random_state = 42 threshold_percentile = 10.0

[gui] limit = 200

[tui] limit = 200

| 设置 | 含义 |
| --- | --- |
| `[paths] sensor_path` | 编译后的 eBPF 采集器可执行文件。 |
| `[paths] db_path` | 用于特征窗口和告警的 SQLite 数据库。 |
| `[paths] model_path` | 检测所使用的已训练模型包。 |
| `[daemon] mode` | 默认自动生命周期。使用 `guardd daemon --mode ...` 显式选择 `collect` 或 `detect`;请参阅下方的解析器优先级说明。 |
| `[daemon] bootstrap_retry_seconds` | 采集期间初始训练尝试之间的延迟。仓库配置使用 `82800` 秒(23 小时);上面的示例使用 `600`。 |
| `[daemon] retrain_interval_seconds` | 自动重新训练间隔;`604800` 为七天。 |
| `[daemon] print_windows`、`print_features`、`print_all_scores` | 在日志中额外输出窗口、特征和非异常分数。 |
| `[daemon] no_store` | 检测期间跳过特征窗口存储;告警仍会被存储。 |
| `[train] min_training_rows` | 最小模型拟合窗口数,不包括为参考基线保留的窗口。 |
| `[train] baseline_fraction` | 所选窗口中最早期用于固定基线的比例;默认 `0.2`,严格介于 0 和 1 之间。 |
| `[train] limit` | 最大选定的特征行数。当前选择按时间从最早到最新进行,因此该限制取最早的行。 |
| `[train] n_estimators` | 孤立森林树的数量;默认 `200`。更多树会增加训练工作量,但不保证更好的检测效果。 |
| `[train] random_state` | 用于可复现模型训练的随机种子;默认 `42`。 |
| `[train] threshold_percentile` | 用作 Guardd 告警截止值的低分位数;默认 `10.0`。**较低的值会产生更严格的截止值,通常会产生更少的告警。** |
| `[train] contamination` | 传递给孤立森林;默认 `0.01`。Guardd 使用原始分数及其自身的百分位截止值,因此这不会设置其告警率。 |
| `[gui] limit`、`[tui] limit` | 显示的最大匹配告警数;默认各为 `200`。 |
| `[logging] debug` | 在支持的地方启用调试日志记录;`--debug` 在 daemon 和 sensor 命令上显式启用它。 |
下载工具