Halino/Wazuh-qBittorrent
GitHub: Halino/Wazuh-qBittorrent
该项目为 Wazuh 提供 qBittorrent WebUI 认证日志的自定义解码器与检测规则,使 SIEM 能够监控登录成功、登录失败和暴力破解事件。
Stars: 0 | Forks: 0
# 用于 Wazuh 的 qBittorrent WebUI 认证解析器
**解码器**和**规则**,使 Wazuh 能够直接从 qBittorrent 自身的日志文件中提取并分析 **qBittorrent** WebUI /
WebAPI 的**认证**事件(登录成功、登录失败、暴力破解)。
## 包含内容
| 文件 | 用途 |
|------|--------|
| `wazuh/decoders/qbittorrent_decoders.xml` | 解析 `WebAPI login success` / `WebAPI login failure` 行 |
| `wazuh/rules/qbittorrent_rules.xml` | 登录成功、登录失败、暴力破解 |
| `wazuh/ossec-qbittorrent.conf.snippet` | `localfile` 配置示例 |
| `tests/sample_logs.txt` | 用于 `wazuh-logtest` 的示例行 |
## 日志格式
qBittorrent 会向其日志文件中写入纯文本行。此规则集解析的两种认证消息如下所示:
```
(N) 2026-07-09T12:00:00 - WebAPI login success. IP: 203.0.113.10
(W) 2026-07-09T12:00:00 - WebAPI login failure. Reason: IP has been banned, IP: 203.0.113.10, username: admin
```
失败行还可能在原因和 IP 之间包含一个 `attempt count: N,` 字段(`... Reason: incorrect credentials, attempt count: 1, IP: ...`);解码器会处理这两种格式。
提取的字段:`srcip`(成功);`qbt_reason`、`srcip`、`dstuser`(失败)。
这些解码器基于**内容匹配**(它们依赖于 prematch 子字符串,没有 `program_name` 父级),因此一条原始的 qBittorrent 日志行在**没有** syslog `Mon DD HH:MM:SS host` 头部的情况下也能被解码。
## 规则
| 规则 ID | 级别 | 检测内容 | MITRE |
|---------|-------|---------|-------|
| 110500 | 3 | WebUI 登录成功 | — |
| 110501 | 6 | WebUI 登录失败 | T1078 |
| 110502 | 10 | 暴力破解(120 秒内同一 IP 失败 5 次) | T1110 |
规则 ID 使用了专门的 **110500-110502** 区间,以避免与其他规则集发生冲突。
## 日志在哪里?(请先阅读此部分)
最常见的错误是将 Wazuh 指向了**错误(过期)**的日志文件,导致永远无法触发告警。
qBittorrent 的日志位于其配置/日志目录中,确切路径**因平台和 Docker 镜像而异**。在流行的 **LinuxServer / hotio `qbittorrent` 风格 Docker 镜像**中,实际路径由 `qBittorrent.conf` 中的 `FileLogger\Path` 控制,文件通常最终位于 **DATA 卷**下——例如 `.../qBittorrent/data/logs/qbittorrent.log`——而**不是**你可能预期的配置目录中。
在进行任何配置之前,请**确认实际生效的路径**:
1. 检查 `qBittorrent.conf` 中的 `FileLogger\Path`(这是权威设置)。
2. 检查文件的 **mtime** ——触发一次 WebUI 登录/注销,并验证你找到的文件确实更新了。一个永远不变的文件就是过期的那个。
常见真实路径(请在*你自己的*安装环境中验证):
```
Docker (LinuxServer / hotio): /config/qBittorrent/data/logs/qbittorrent.log
Linux (native, per-user): ~/.local/share/qBittorrent/logs/qbittorrent.log
Windows: %LOCALAPPDATA%\qBittorrent\logs\qbittorrent.log
```
确保已启用文件日志记录:**Tools > Options > Behavior > Log file**。
## 部署
```
sudo cp wazuh/decoders/qbittorrent_decoders.xml /var/ossec/etc/decoders/
sudo cp wazuh/rules/qbittorrent_rules.xml /var/ossec/etc/rules/
sudo systemctl restart wazuh-manager
```
然后让 Wazuh **agent**(在 qBittorrent 主机上,或者挂载了容器卷)使用 `log_format syslog` 通过 `` 读取**已确认**的日志路径。请参阅 `wazuh/ossec-qbittorrent.conf.snippet`:
```
syslog
/path/to/qBittorrent/data/logs/qbittorrent.log
```
## 测试
```
/var/ossec/bin/wazuh-logtest
```
粘贴例如以下内容:
```
(W) 2026-07-09T12:00:00 - WebAPI login failure. Reason: IP has been banned, IP: 203.0.113.10, username: admin
```
预期结果:解码器为 `qbittorrent`,规则 **110501**(authentication_failed,T1078)。
在 120 秒内(同一 IP)粘贴 5 次或以上,以触发 **110502**(暴力破解,T1110)。
有关完整集合,请参阅 `tests/sample_logs.txt`。
## 兼容性
- Wazuh 4.x(使用 `pcre2`)。
- qBittorrent 4.x / 5.x,需启用 WebUI 和文件日志记录。适用于原生安装和 Docker 镜像(LinuxServer、hotio 等)。
## 许可证
MIT — 详见 [LICENSE](LICENSE)。
标签:qBittorrent, Wazuh, 免杀技术, 日志解析, 暴力破解检测, 红队行动, 规则配置, 证书伪造, 请求拦截