
maltrail v2.2
基于公开黑名单、静态恶意软件痕迹和启发式分析的实时恶意流量检测系统,用于识别DNS、HTTP和IP流量中的威胁。

Maltrail
Maltrail 是一个网络流量检测系统,用于识别与已知恶意基础设施的通信,并报告选定的流量异常。它会将网络上观察到的域名、URL、IP 地址、IP:port 对以及 User-Agent 值与一组称为 trails 的指标进行匹配。
检测结果会记录为单个事件,其中包含源、目标、协议、匹配的 trail、分类以及 trail 来源:```text "2026-08-07 09:14:22.117034" gw 10.13.13.2 57809 1.1.1.1 53 UDP DNS malware.bakewithdavid.com "asyncrat (malware)" (static)
Maltrail 专为基于指标的网络安全监控而设计。其启发式检测是对
特征匹配的补充,但它并不能替代端点遥测或通用型入侵
防御系统。
## 功能特性
- 完整的特征库构建,整合了超过 3,000 个内置静态文件、42 个公共源集成,
以及可选的运营方提供的特征库。
- 基于 libpcap 的多线程 Rust 传感器,支持可选的 Linux `PACKET_FANOUT` 捕获工作线程。
- 提供报告界面、事件接收和 HTTP API 的 Python 服务器。
- 可审查且可进行版本控制的纯文本自定义特征库和白名单。
- 针对扫描、DNS 耗尽、类 DGA 查询、可疑下载、代理探测、
可疑 User-Agent 值及相关网络活动的启发式检测。
- 本地事件日志、远程 Maltrail 日志、通过 syslog 的 CEF 以及 Logstash JSON 输出。
- 通过 `maltrail-sensor -T` 进行部署验证,并提供可选的 Prometheus 指标。
## 目录
- [架构](#architecture)
- [报告界面](#reporting-interface)
- [性能](#performance)
- [安装](#installation)
- [安装程序](#installer)
- [从源码构建](#building-from-source)
- [Systemd](#systemd)
- [Docker](#docker)
- [配置](#configuration)
- [特征库](#trails)
- [事件与 API](#events-and-api)
- [运维](#operations)
- [监控](#monitoring)
- [事件保留](#event-retention)
- [文档](#documentation)
- [贡献](#contributing)
- [项目](#project)
- [许可证](#license)
- [维护者](#maintainers)
- [赞助商](#sponsors)
- [演示与出版物](#presentations-and-publications)
- [衍生黑名单](#derived-blacklist)
- [第三方集成](#third-party-integrations)
- [致谢](#acknowledgements)
## 架构
Maltrail 由两个独立的进程组成,它们可以运行在同一台主机上,也可以运行在不同的主机上:```text
┌──────────┐ events (UDP or file) ┌──────────┐
│ sensor │ ───────────────────────► │ server │ ◄── browser
└──────────┘ └──────────┘
Rust Python
libpcap + PACKET_FANOUT reporting UI + API
trail matching + heuristics
传感器捕获流量,执行轨迹匹配和启发式分析,并生成事件。
它可以将事件写入本地(LOG_DIR)、发送到远程 Maltrail 服务器(LOG_SERVER),或两者
兼做。它还可以通过 syslog 输出 CEF(SYSLOG_SERVER)以及向 Logstash 输出 JSON
(LOGSTASH_SERVER)。
服务器接收并存储远程事件,提供本地可用的事件日志,并提供 Web 界面和 API。
报告界面
Maltrail 包含一个基于浏览器的报告界面,用于探索检测到的 流量,支持实时更新、字段感知搜索、回溯狩猎、地理 视图、分类、已保存视图和导出。

该界面由 server.py 在 HTTP_ADDRESS:HTTP_PORT 提供服务。它是纯 JavaScript,只有一个
第三方运行时依赖(PapaParse,用于 CSV 解析),且无需构建步骤。每次查看一天,
通过日期选择器选择,该选择器同时充当可用每日日志上的事件密度网格。事件从 /events 流式传输,并在浏览器中聚合为
威胁——每个不同的 (source, trail) 对应一行——显示在可排序的网格中,并带有详情面板。
| 功能 | 说明 |
|---|---|
| 实时模式 | 追加的事件通过 Server-Sent Events(/live)推送并合并到当前视图中。当 SSE 不可用,或对于流无法提供的会话,则回退到轮询每日日志的字节范围。新的高严重性威胁可以触发桌面通知和声音警报;两者均可静音 |
| 搜索 | 字段限定令牌(src: dst: port: proto: type: trail: info: family: tag: uid: sev: dir: status:;family:interlock 会拉入 interlock-1/-2,即一次订阅源转储被拆分成的分片)以空格作为 AND 组合,- 用于排除,* 通配符,CIDR(src:10.0.0.0/8),以及数值范围和比较(port:>1024、count:>=100)。活动过滤器显示为可移除的标签 |
| 回溯狩猎 | 搜索所有保留的每日日志中的一个指标(/hunt),而不仅仅是当前视图中的那一天。受天数限制、墙钟时间预算和样本上限约束;预算被截断的那一天与已完成的天数分开报告,而不是计入完成总数。每日侧车索引(LOG_DIR/index/、USE_EVENT_INDEX)让扫描跳过每个不匹配的行,并使 /counts 精确 |
| 世界地图 | 所选日期的按国家/地区事件密度(/geo),放置每个事件的外部端点。无法归因于外部地址的事件报告为未映射,而不是猜测。设置 HOME_LAT / HOME_LON 以绘制来源弧线 |
| 分类 | 每个威胁的状态(新建 / 调查中 / 已解决 / 误报)、自由文本备注、标签和隐藏。白名单规则和 OSINT 关联可从行上下文菜单中使用 |
| 已保存视图 | 命名的过滤器预设 |
| 导出 | 当前过滤视图为 CSV、JSON 或去武器化指标 |
| 外观 | 深色和浅色主题,以及离散的文本大小步进 |
分类状态、已保存视图、标签和外观设置存储在浏览器中
(localStorage),而不是服务器上:它们是按浏览器和按来源的,并且不会在
分析人员之间共享。
使用网络过滤器限制的会话只能看到来自其自身网络的事件,并且该 限制同样适用于计数、地图和黑名单端点以及事件列表。
单个地址的国家和 ASN 丰富信息由服务器在 stat.ripe.net 查询,
服务器会缓存结果并从其自身的 /ripe 端点提供给界面;浏览器只与 Maltrail 通信。设置 DISABLE_RIPE_LOOKUPS 可完全关闭
出站查询。没有这些查询——或在不具备互联网访问权限的主机上——标志
来自本地 RIR 表,界面中的其他一切都可以离线工作。
性能
性能取决于处理器、流量构成、轨迹集大小、捕获驱动程序和网络 接口。以下数据单独衡量传感器的数据包处理路径;它们不是 端到端的实时捕获测量。
在启用启发式且轨迹集为 150 万行的 AMD Ryzen 7 PRO 4750U 上的代表性测量:
| 流量 | 每包时间 |
|---|---|
| ICMP 回显,58 字节 | 101 ns |
| TCP SYN,70 字节 | 302 ns |
| 批量 TLS,1,473 字节 | 402 ns |
| 带热缓存的 DNS 查询,93 字节 | 452 ns |
| 混合流量,平均 866 字节 | 552 ns |
| HTTP 请求,169 字节 | 602 ns |
| 带唯一名称的 DNS 查询,93 字节 | 1,102 ns |
使用相同生成的捕获、配置和轨迹集进行的离线对比运行,在测试的系统上测得
每包稳态成本比已退役的 Python 传感器低 14–37 倍。
这些数据将整个进程时间与稳态分开,因为轨迹加载主导了短时重放。
检测本身单独断言,由 sensor/tests/replay.rs 中的 42 个案例语料库完成。
在目标系统上使用以下命令测量:```bash cargo bench --manifest-path sensor/Cargo.toml --bench hotpath
默认使用一个捕获工作进程。增加工作进程数量可以提高捕获容量,但 Linux 的流哈希会将每个源的状态分散到各工作进程之间,从而降低某些扫描启发式检测的灵敏度。在文档记录的测试中,单工作进程的启发式告警在双工作进程下保留了 91%,四工作进程下保留了 86%,八工作进程下保留了 65%。精确轨迹匹配不受影响。仅在捕获丢包指标显示必要时,才增加 `CAPTURE_FANOUT`。
基准测试方法、硬件结果、性能分析器输出、内存测量以及实时扇出检查均记录在 [`sensor/docs/REPORT.md`](https://github.com/stamparm/maltrail/blob/master/sensor/docs/REPORT.md) 中。
## 安装
### 安装程序
该安装程序支持 Debian、Ubuntu、Raspberry Pi OS、RHEL、Fedora 和 openSUSE:```bash
curl -fsSL https://raw.githubusercontent.com/stamparm/maltrail/master/install.sh | sudo sh
该脚本会安装依赖项,在 /opt/maltrail 下创建受管检出,验证预构建传感器的校验和,创建无特权的 maltrail 账户,安装 systemd 单元,准备日志和状态目录,并启动传感器和服务器。重新运行安装程序会升级受管检出。
在提升权限运行该脚本之前,请先对其进行审查。从现有检出中,试运行会显示命令而不更改系统:```bash sh install.sh --dry-run
通用安装程序选项:```bash
sh install.sh --role sensor # Install only the sensor
sh install.sh --ref 3.1.2 # Install a release tag instead of master
sh install.sh --no-service # Install without changing systemd
sh install.sh --dry-run # Print commands without applying them
sh install.sh --uninstall # Remove the managed installation; keep logs and state
安装完成后,仪表盘可通过 http://127.0.0.1:8338 访问。请注意,随附的
HTTP_ADDRESS 为 0.0.0.0,因此它可在每个接口上访问,而不仅仅是回环接口——并且
默认凭据为 admin / changeme!。在主机接入不受信任的网络之前,请修改 USERS,并将 HTTP_ADDRESS 设置为
127.0.0.1(或将服务器置于带 TLS 的反向代理之后)。
初始的 trail 构建可能需要几分钟。在获得有效的 trail 集之前,传感器不会检测到 trail 匹配。systemd 单元会在启动前运行传感器的 -T 验证,以便
权限缺失、日志目录不可写或 trail 集无效会导致启动以可见方式失败。
安装程序测试框架覆盖 Ubuntu、Debian、Fedora、openSUSE 和 Alpine 容器。Alpine 使用 musl,不使用预构建的 glibc 传感器二进制文件;请在那里从源码构建传感器。
从源码构建
传感器需要 Rust 1.74 或更高版本、libpcap 开发头文件以及系统的 能力工具。服务器和 trail 更新器需要 Python 3.6 或更高版本。
安装发行版软件包:```bash
Debian / Ubuntu / Raspberry Pi OS
sudo apt-get install cargo libpcap-dev libcap2-bin python3
RHEL / Fedora
sudo dnf install cargo libpcap-devel libcap python3
openSUSE / SLES
sudo zypper install cargo rust libpcap-devel libcap-progs python311
然后构建并验证传感器:```bash
git clone --depth 1 https://github.com/stamparm/maltrail.git
cd maltrail
cargo build --release --manifest-path sensor/Cargo.toml
sudo setcap cap_net_raw,cap_net_admin=eip \
sensor/target/release/maltrail-sensor
sudo install -d -o "$USER" -g "$(id -gn)" -m 750 /var/log/maltrail
sensor/target/release/maltrail-sensor -T
sensor/target/release/maltrail-sensor
在另一个终端或另一台主机上启动服务器:```bash python3 server.py
预构建的 `x86_64` 和 `aarch64` 传感器二进制文件随当前版本发布,并附带 SHA-256 校验和。它们静态链接 libpcap,并面向 glibc 2.28,因此 C 库是它们唯一需要的依赖——在 RHEL 8+、Debian 10+、Ubuntu 18.04+ 以及 Leap 15.x 上均无需安装任何东西。在基于 musl 的系统(如 Alpine Linux)上,请从源码构建。
**3.1.1 及更早版本**的二进制文件并非如此:它们动态链接 libpcap,并按 AlmaLinux 构建主机使用的名称来请求该库。Debian 和 Ubuntu 以旧名称 `libpcap.so.0.8` 提供相同的库,因此这些二进制文件在启动之前就停止了——```
./maltrail-sensor: error while loading shared libraries: libpcap.so.1: cannot open shared object file
— 在已安装 libpcap 的机器上。install.sh 会为你链接缺失的名称。手动操作:```bash
adjust the directory for your architecture: aarch64-linux-gnu, or /usr/lib64 on RPM distributions
sudo ln -sf /usr/lib/x86_64-linux-gnu/libpcap.so.0.8 /usr/lib/x86_64-linux-gnu/libpcap.so.1 sudo ldconfig
### Systemd
提供的 `packaging/systemd/` 单元文件以非特权用户 `maltrail` 运行这两个进程。Systemd 会创建 `/var/log/maltrail` 和 `/var/lib/maltrail`,限制文件系统访问,并授予传感器 `CAP_NET_RAW` 和 `CAP_NET_ADMIN` 权限。
安装程序会自动配置这些单元文件。对于现有的源码安装,请遵循 [`sensor/docs/INSTALL.md`](https://github.com/stamparm/maltrail/blob/master/sensor/docs/INSTALL.md) 中的手动服务流程。
使用以下命令检查服务状态和日志:```bash
systemctl status maltrail-sensor maltrail-server
journalctl -u maltrail-sensor -f
Docker
使用以下命令启动提供的 Compose 部署:```bash docker compose -f docker/docker-compose.yml up -d
容器配置、存储、权限和健康检查记录在
[`docker/README.md`](https://github.com/stamparm/maltrail/blob/master/docker/README.md) 中。
## 配置
Maltrail 读取 `maltrail.conf`,其中包含独立的 `[Sensor]` 和 `[Server]` 设置。安装程序将受管配置放置在 `/etc/maltrail.conf`。
常用的传感器选项包括:
| 选项 | 用途 |
| --- | --- |
| `MONITOR_INTERFACE` | 捕获接口或接口列表;`any` 选择所有受支持的接口 |
| `CAPTURE_FILTER` | BPF 捕获过滤器 |
| `CAPTURE_FANOUT` | Linux 捕获套接字数量;默认为一个 |
| `CAPTURE_WORKERS` | 捕获工作进程,每个对应一个套接字;默认为 `CAPTURE_FANOUT`,因此除非设置了其中任一选项,否则为一个 |
| `LOG_DIR` | 本地事件日志目录 |
| `TRAILS_FILE` | 生成的轨迹数据库 |
| `LOG_SERVER` | 远程 Maltrail 事件服务器 |
| `SYSLOG_SERVER` | CEF syslog 目标或目标列表 |
| `LOGSTASH_SERVER` | Logstash JSON 目标或目标列表 |
| `STATS_ADDRESS` | Prometheus 指标监听器;除非配置,否则禁用 |
| `UPDATE_PERIOD` | 轨迹刷新间隔 |
| `STATIC_TRAILS_URL` | 获取组装静态轨迹集的来源;将其固定到带日期的版本,以控制新内容何时落地 |
| `USER_WHITELIST` | 操作员管理的、不应触发告警的指标 |
| `CUSTOM_TRAILS_DIR` | 操作员管理的轨迹目录 |
| `STATIC_TRAILS_DIR` | 可选的轨迹仓库检出;仅用于在 UI 中显示轨迹的来源引用 |
`PROCESS_COUNT` 适用于已退役的 Python 传感器和旧版事件日志节流;它**不**设置 Rust 传感器的工作进程数量。请改用 `CAPTURE_FANOUT` 或 `CAPTURE_WORKERS` 配置捕获工作进程。
更改配置后,请运行部署检查:```bash
sensor/target/release/maltrail-sensor -T
该检查会验证配置、trail、白名单条目、捕获过滤器、权限、日志存储、更新支持以及 worker 设置。成功的检查会包含 trail 和白名单的正数计数,而不仅仅是确认文件存在。
Trails
一个 trail 是一个指标——域名、URL、IP 地址、IP:port 对、User-Agent、JA3/JA4 指纹或证书哈希——连同其含义及来源。更新程序按以下顺序将四个来源合并到 TRAILS_FILE 中:
| 来源 | 来源位置 |
|---|---|
| Feeds | feeds/*.py,由你的部署直接从每个发布者获取 |
| Custom | CUSTOM_TRAILS_DIR 和 CUSTOM_TRAILS_URL,你自己的指标 |
| Static | 来自 stamparm/trails 的整合集合,从 STATIC_TRAILS_URL 获取 |
| Engine lists | data/mass_scanner*.txt,随此仓库附带,因为它们很少变化 |
静态 trails 存放在它们自己的仓库中。检测内容每天会变化数十次;而引擎不会,将它们放在一起意味着更新检测需要拉取代码,并使此仓库的历史记录变得不可用。STATIC_TRAILS_URL 指向最新发布的集合:```text
STATIC_TRAILS_URL https://github.com/stamparm/trails/releases/latest/download/trails.csv.gz
将其指向特定的 `content-YYYYMMDD-HHMM` 发布版本以固定版本,这样糟糕的发布不会立即全局生效。该集合缓存在 `TRAILS_FILE` 旁边,这正是离线或气隙重建能够工作的原因;下载前会检查已发布的 `sha256`,因此更新频率高于内容变化的部署仅传输 65 字节而非 11 MB,且与摘要不匹配的载荷会被拒绝,转而使用缓存。
`update_trails()` 仅在构建成功后原子性地发布新的 `TRAILS_FILE`。返回空结果的源会按名称报告,因此部署不会静默依赖已悄然退役的源。
在 `CUSTOM_TRAILS_DIR` 下添加你自己的指标,并将任何绝不应触发事件的内容放入 `USER_WHITELIST`。将两者都保留在安装目录之外,这样升级不会覆盖它们。
静态轨迹贡献请前往 [stamparm/trails](https://github.com/stamparm/trails);新源请提交到这里。无论哪种方式,指标都需要分类和可查证的来源——参见 [贡献](#contributing)。
## 事件与 API
Maltrail 每次检测记录一个以空格分隔的事件,当值包含空格时使用 CSV 引号:```text
"<time>" <sensor> <src_ip> <src_port> <dst_ip> <dst_port> <proto> <type> <trail> "<info>" <reference>
type 字段标识匹配的内容,包括 DNS、IP、IPORT、URL、PATH、HTTP、
UA、PORT、CERT、JA3 和 JA4。info 字段包含线索分类,而
reference 标识产生该结果的静态列表、订阅源、自定义来源或启发式规则。JA3/JA4 类型针对 TLS 客户端指纹触发:植入物的 TLS 协议栈在每次
地址和域名轮换后依然存在,因此其握手哈希在其他所有信息失效后仍能持续匹配
(由 abuse.ch SSLBL JA3 订阅源发布)。
指标查询
使用 /check 查询一个域名、IP 地址或 URL:```bash
curl 'http://127.0.0.1:8338/check?q=www.sub.evil.example'
## 安装
### 使用 pip 安装
```bash
pip install pywhisker
从源码安装
git clone https://github.com/ShutdownRepo/pywhisker.git
cd pywhisker
python3 setup.py install
用法
usage: pywhisker.py [-h] [-v] -t TARGET [-u USERNAME] [-p PASSWORD] [-d DOMAIN]
[-H HASHES] [-k] [-a ACTION] [-n NEW_TARGET] [-s TARGET_SID]
[-m] [-o OUTPUT_FILE] [-q]
pywhisker - 针对目标对象的 msDS-KeyCredentialLink 属性的攻击工具
options:
-h, --help 显示此帮助信息并退出
-v, --verbose 启用详细输出
-t TARGET, --target TARGET
目标对象(用户或计算机)
-u USERNAME, --username USERNAME
用于认证的用户名
-p PASSWORD, --password PASSWORD
用于认证的密码
-d DOMAIN, --domain DOMAIN
目标域
-H HASHES, --hashes HASHES
LM:NT 格式的哈希值
-k, --kerberos 使用 Kerberos 认证
-a ACTION, --action ACTION
要执行的操作(add、remove、list、clear、export)
-n NEW_TARGET, --new-target NEW_TARGET
新目标对象(用于 add 操作)
-s TARGET_SID, --target-sid TARGET_SID
目标对象的 SID(用于 remove 操作)
-m, --mock 模拟操作,不实际执行
-o OUTPUT_FILE, --output-file OUTPUT_FILE
输出文件(用于 export 操作)
-q, --quiet 安静模式,减少输出
示例
列出目标对象的 KeyCredentialLink 属性
pywhisker.py -t target_user -u user -p password -d domain.local -a list
添加新的 KeyCredentialLink
pywhisker.py -t target_user -u user -p password -d domain.local -a add -n new_user
移除 KeyCredentialLink
pywhisker.py -t target_user -u user -p password -d domain.local -a remove -s target_sid
清除所有 KeyCredentialLink
pywhisker.py -t target_user -u user -p password -d domain.local -a clear
导出 KeyCredentialLink
pywhisker.py -t target_user -u user -p password -d domain.local -a export -o output_file
参考
- Whisker - 原始工具
- The Kerberos Key List Attack - 攻击原理说明```json { "query": "www.sub.evil.example", "found": true, "trail": "evil.example", "info": "asyncrat (malware)", "reference": "(static)", "confidence": 100 }
`confidence` 字段(0-100,或不可用时为 `null`)表示来源对条目的支持强度:单一订阅源为 40,每个独立同意的额外订阅源加 15,最高为 100,而操作者自己的自定义和静态条目则获得满分。它是在轨迹更新时根据订阅源一致性计算出来的,并写入 `trails.csv` 旁边的 `trails.confidence` 侧车文件;从 `UPDATE_SERVER` 拉取轨迹的服务器没有可评分的来源信息,因此报告为 `null`。用它来优先安排分流——单一订阅源条目为 40 时,在它获得防火墙规则之前值得再看一眼。
子域名查询可以匹配其列出的父域名。URL 查询会先检查 `host/path`,然后再单独检查主机。服务器读取内存映射的轨迹数据库,并在不重启的情况下观察轨迹更新。
公共静态和订阅源轨迹无需认证即可访问,这与远程传感器使用的 `/trails` 端点一致。自定义轨迹需要授权会话;未经授权的仅自定义查询会被报告为未命中。事件数据始终保持认证状态。
## 操作
### 监控
使用 `maltrail-sensor -T` 作为部署和配置的关口。提供的 systemd 单元将其作为 `ExecStartPre` 运行。
要确认检测本身是否正常工作——而不仅仅是进程是否启动——请运行:```bash
python3 server.py --detect-test
它重放一个精心构造的模拟恶意流量 pcap(trail 命中 DNS 查询、IP、IP:port、URL 路径和 Host 头,外加 SQL 注入、目录遍历、RCE、XSS、代理探测、sinkhole、缺失 Host 以及端口/Web/感染扫描启发式规则),通过已安装的传感器进行检测,并断言每个预期检测都会触发。它不需要 root 权限、不需要网络接口,也不需要自己的 trail 集。安装正常时输出 20/20 detection(s) fired。
当配置了 STATS_ADDRESS 时,至少监控以下 Prometheus 指标:
| 指标 | 运维含义 |
|---|---|
maltrail_up == 0 | 没有采集工作进程在运行 |
maltrail_capture_dropped_total 持续增长 | 采集环形缓冲区正在丢弃数据包 |
maltrail_local_log_errors_total 持续增长 | 已产生事件但无法写入本地 |
maltrail_remote_log_errors_total 持续增长 | 事件无法投递到远程接收端;启用 DISABLE_LOCAL_LOG_STORAGE 时事件将丢失 |
maltrail_trail_generation 未推进 | 活动 trail 集未刷新 |
maltrail_log_dir_free_bytes | 本地事件存储的剩余容量 |
maltrail_state_saturations_total 持续增长 | 达到某个启发式状态上限 |
maltrail_throttle_evictions_total 持续增长 | 事件节流表已达上限,因此事件会比配置的更早聚合 |
状态饱和会影响对应的启发式规则;精确 trail 匹配仍然保持有效。
发送 SIGHUP 或使用 systemctl reload maltrail-sensor 请求 trail 重载。由其他进程更新的 trail 文件会被自动检测并发布给工作进程,无需重启传感器。
压缩可观测存储(USE_CONDENSED_STORAGE、meta.sqlite)支持服务器的新颖性和回溯狩猎视图。按日事件日志旁路索引(USE_EVENT_INDEX、LOG_DIR/index/*.sqlite,磁盘上约为日志大小的两倍)是使 /counts 精确和 /hunt 快速的关键;它从日志本身增量维护,并可通过 server.py --rebuild-index 重建。与已退役传感器的兼容性记录在 sensor/docs/COMPATIBILITY.md 中。
事件保留
Maltrail 不会轮转或删除事件日志。运维人员负责根据存储要求和组织策略定义保留、归档和删除规则。
建议做法:
- 使用
LOG_SERVER、SYSLOG_SERVER或LOGSTASH_SERVER将持久事件副本发送到远程 Maltrail 服务器或 SIEM。 - 对
maltrail_log_dir_free_bytes设置告警,并为预期事件速率预留足够的余量。 - 使用外部工具轮转、归档或删除本地每日日志。
- 将报告界面所需的文件以未压缩形式保留在
LOG_DIR中;将压缩文件归档到其他位置。
当日志文件系统已满时,传感器无法追加事件。事件日志还可能包含在某些司法管辖区被监管为个人数据的 IP 地址和域名;保留策略应考虑适用的要求。
文档
| 文档 | 内容 |
|---|---|
sensor/docs/INSTALL.md | 安装、权限、配置和故障排查 |
sensor/docs/ARCHITECTURE.md | 传感器内部结构和数据流 |
sensor/docs/COMPATIBILITY.md | 与已退役 Python 传感器的刻意差异 |
sensor/docs/REPORT.md | 测量、配置文件和测试结果 |
sensor/docs/ROADMAP.md | 待办的传感器工作 |
SekuriPy Labs | 工程笔记、基准测试和文章 |
贡献
欢迎提交 trail 新增、feed 维护、错误报告、文档和传感器改进。Trail 提交应包含可靠的来源,并使用最窄的适当分类。
提交代码前请运行相关检查。完整的传感器门禁为:```bash bash sensor/tools/check.sh
它运行格式化检查、Clippy(拒绝所有警告)以及调试版和发布版测试套件。使用以下命令运行 Python 服务器测试套件:```bash
bash tests/run.sh python3
项目
许可证
Maltrail 根据 MIT 许可证分发。参见 LICENSE。
维护者
- Miroslav Stampar (@stamparm)
- Mikhail Kasimov (@MikhailKasimov)
赞助商
演讲与出版物
- 第 47 届 TF-CSIRT 会议,布拉格,2016 (幻灯片)
- 使用 Maltrail 检测网络攻击,Linux Magazine,2022 (文章)
- 最佳网络威胁情报源,Silent Push,2022 (评测)
- 基于 Maltrail 的网络恶意流量检测系统研究,Nanotechnology Perceptions,2024 (论文)
衍生黑名单
从 malware/ 静态轨迹中提取的仅域名列表发布在
maltrail-malware-domains.txt。
它可用作 DNS 过滤系统的输入,但操作人员应在启用拦截前对其进行审查和测试。威胁情报列表可能包含误报或不适用于所有环境的指标。
第三方集成
- FreeBSD Port
- OPNsense Gateway Plugin
- D4 Project
- BlackArch Linux
- Validin
- Maltrail Add-on for Splunk
- Maltrail decoder and rules for Wazuh
- GScan (仅轨迹)
- MalwareWorld (仅轨迹)
- oisd domain blocklist (仅轨迹)
- NextDNS (仅轨迹)
- NoTracking (仅轨迹)
- OWASP Mobile Audit (仅轨迹)
- Mobile Security Framework MobSF (仅轨迹)
- pfBlockerNG-devel (仅轨迹)
- Sansec eComscan (仅轨迹)
- Palo Alto Networks Cortex XSOAR (轨迹连接器)
致谢
- Thomas Kristner
- Eduardo Arcusa Les
- James Lay
- Ladislav Baco (@laciKE)
- John Kristoff (@jtkdpu)
- Michael Münz (@mimugmail)
- David Brush
- @Godwottery
- Chris Wild (@briskets)
- Keith Irwin (@ki9us)
- Simon Szustkowski (@simonszu)