Maltrail 恶意流量检测系统实战指南:架构、部署、配置与运维
【免费下载链接】maltrailMalicious traffic detection system项目地址: https://gitcode.com/GitHub_Trending/ma/maltrail
Maltrail 是一套开源的恶意流量检测系统(Malicious traffic detection system),由 Rust 传感器与 Python 服务器两个独立进程构成,专注于将网络流量中出现的域名、URL、IP 地址、IP:port对、User-Agent 等观测值与一套名为trails(指标)的威胁指标集进行匹配,并对选定流量异常进行启发式告警。本文以当前仓库 README.md 为主线,结合 maltrail.conf 与sensor/、core/、feeds/源码,完整讲解其架构原理、多平台部署、指标体系、事件与 API,以及生产环境下的监控与保留策略,读完即可独立完成一套 Maltrail 的安装、验证与日常运维。
定位与设计边界:基于指标的网络监控
Maltrail 的检测对象在 README.md 中定义得很明确:它匹配网络上观测到的域名、URL、IP 地址、IP:port对和 User-Agent 值,将其与称为trails的指标集合比对。一次检测被记录为一条包含源、目的、协议、匹配指标、分类与指标来源的单一事件,事件行的典型形态如下:
"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)README 同时给出了一条重要的设计边界:Maltrail 面向基于指标的监控而设计,其启发式检测是对指标匹配的补充,但它不是端点遥测(endpoint telemetry)的替代品,也不是通用型入侵防御系统(IPS)。理解这一点有助于在部署前设定正确预期——Maltrail 擅长发现“与已知恶意基础设施的通信”,而非替代 EDR 或防火墙做纵深防御。
系统架构:Rust 传感器 + Python 服务器
Maltrail 由两个可独立运行的进程组成,可以部署在同一台主机,也可以分别部署:
┌──────────┐ events (UDP or file) ┌──────────┐ │ sensor │ ───────────────────────► │ server │ ◄── browser └──────────┘ └──────────┘ Rust Python libpcap + PACKET_FANOUT reporting UI + API trail matching + heuristics传感器(sensor):基于 Rust 的多线程实现,使用 libpcap 抓包(Linux 上可选PACKET_FANOUT抓包 worker),负责流量采集、指标匹配与启发式分析,并产生事件。事件的输出通道是多样的:本地日志(LOG_DIR)、远程 Maltrail 服务器(LOG_SERVER)、CEF over syslog(SYSLOG_SERVER)、Logstash JSON(LOGSTASH_SERVER),可任选其一或同时启用。从 sensor/src/main.rs 可以看到其命令行面与旧版sensor.py保持兼容:-c指定配置文件、-r离线回放 pcap、-T/--test-config做部署自检、--timestamps pcap|wallclock控制离线回放的时间戳来源。
服务器(server):Python 实现,接收并存储远程事件、供应当地事件日志,并提供 Web 界面与 HTTP API(server.py入口,默认监听HTTP_ADDRESS:HTTP_PORT)。
启发式检测方面,sensor/src/heuristics/mod.rs 明确定义了 8 种可单独静默(通过DISABLED_HEURISTICS)的检测器:port_scanning、udp_scanning、infection、web_scanning、dns_exhaustion、long_domain、beaconing、dns_tunneling,对应heuristics/下的scan.rs、beacon.rs、dns_exhaustion.rs、dns_tunneling.rs、nxdomain.rs等模块。
报告界面(Reporting interface)
报告界面由server.py提供,是纯 JavaScript 实现,唯一的第三方运行时依赖是用于 CSV 解析的 PapaParse,无构建步骤。界面一次只查看一天的数据,通过一个兼作事件密度网格的日期选择器选取;事件从/events流式拉取,在浏览器端聚合为threats(每个不同的(source, trail)一行),以可排序表格配合详情面板呈现。各核心功能如下:
| 功能 | 说明 |
|---|---|
| 实时模式(Live mode) | 追加事件通过 Server-Sent Events(/live)推送并合并进当前视图;SSE 不可用或会话无法由流服务时,回退为按字节范围轮询当天日志。新增的高危威胁可触发桌面通知与声音告警,两者均可静音 |
| 搜索(Search) | 支持字段限定 token(src:dst:port:proto:type:trail:info:family:tag:uid:sev:dir:status:;family:interlock可拉取某一次 feed 导入拆分的interlock-1/-2分片),空格为 AND、-排除、*通配、CIDR(src:10.0.0.0/8)以及数值范围与比较(port:>1024、count:>=100)。生效中的过滤条件以可移除的标签(chips)呈现 |
| 回溯狩猎(Retro hunt) | 通过/hunt搜索全部保留的按日日志中的单个指标,而非仅当前视图当天。受天数上限、墙钟预算与样本上限约束;被预算截断的那天会单独上报,不计入已完成天数。按日旁路索引(LOG_DIR/index/,由USE_EVENT_INDEX控制)让扫描跳过所有不匹配的行,并让/counts精确 |
| 世界地图(World map) | 通过/geo展示所选日期的每国事件密度,将每个事件的外部端点落图;无法归因到外部地址的事件按 unmapped 上报而非猜测。设置HOME_LAT/HOME_LON可绘制到“本机”的连线 |
| 分诊(Triage) | 每个威胁可有状态(new / investigating / resolved / false positive)、自由文本备注、标签与隐藏;行右键菜单支持白名单规则与 OSINT 延伸调查 |
| 保存视图(Saved views) | 命名的过滤器预设 |
| 导出(Export) | 当前过滤视图导出为 CSV、JSON 或 defanged indicators |
| 外观(Appearance) | 深色/浅色主题与离散字号档位 |
值得注意的两个细节:其一,分诊状态、保存视图、标签与外观设置存储在浏览器的localStorage中而非服务器上,因此它们是按浏览器、按源(origin)隔离的,不会在分析人员之间共享;其二,带有网络过滤限制的会话只能看到自己网络的事件,且该限制同样作用于计数、地图与黑名单端点。此外,单个地址的国家与 ASN 富化由服务器向stat.ripe.net查询并通过自己的/ripe端点缓存、供给界面,浏览器只与 Maltrail 通信;设置DISABLE_RIPE_LOOKUPS可彻底关闭出站查询,此时国旗改由本地随附的 RIR 表提供,其余界面功能在离线环境照常工作。
性能特征与测量方法
README 强调,性能取决于处理器、流量构成、指标集大小、抓包驱动与网卡,且下表中的数值是传感器报文处理路径的孤立测量,并非端到端的实时抓包测量。代表性数据来自一台 AMD Ryzen 7 PRO 4750U、启用启发式且使用约 150 万行指标集:
| 流量类型 | 每包耗时 |
|---|---|
| ICMP echo,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 倍;README 特别说明这些数字将整进程时间与稳态分开,因为指标加载会主导短时回放,而检测正确性由 sensor/tests/replay.rs 中 42 个案例的语料库单独断言。在目标机器上自行测量:
cargo bench --manifest-path sensor/Cargo.toml --bench hotpath关于抓包并行度:默认使用一个抓包 worker。增加 worker 可提升抓包容量,但 Linux 的流哈希会把按源维护的状态分散到各 worker 之间,从而降低部分扫描启发式的灵敏度。文档记录的测试中,单 worker 的启发式告警在 2 个 worker 时仍保留 91%,4 个时为 86%,8 个时为 65%;精确指标匹配不受影响。因此只有当maltrail_capture_dropped_total显示确有丢包时才应调大CAPTURE_FANOUT。基准方法学、硬件结果、profiler 输出、内存测量与实时 fanout 检查见 sensor/docs/REPORT.md。
安装与部署
一键安装器
安装器在每个版本发布时于十二种 Linux 发行版(Debian、Ubuntu、Fedora、Rocky、AlmaLinux、Arch、openSUSE Leap 与 Tumbleweed、Alpine)以及 FreeBSD、NetBSD、OpenBSD 和 macOS 上验证通过,完整结果记录在 docs/compat。Raspberry Pi OS 及其他 64 位 ARM 系统使用aarch64构建;32 位 ARM 没有预编译传感器,必须从源码构建。
一键安装的标准做法是取得仓库根目录的 install.sh 后以sudo sh执行。它会:安装依赖、在/opt/maltrail下创建受管检出、校验预编译传感器的校验和、创建非特权maltrail用户、安装 systemd 单元、准备日志与状态目录,并启动传感器与服务器;重复执行则升级受管检出。由于脚本将以提权方式运行,README 建议先审查脚本;在已有检出中可用干跑模式查看命令而不改动系统:
sh install.sh --dry-run常用安装器选项:
sh install.sh --role sensor # 仅安装传感器 sh install.sh --ref 3.1.2 # 安装指定发布标签而非 master sh install.sh --no-service # 不修改 systemd sh install.sh --dry-run # 只打印命令,不实际执行 sh install.sh --uninstall # 移除受管安装,保留日志与状态安装完成后仪表盘位于 http://127.0.0.1:8338。安全警告:随附的HTTP_ADDRESS是0.0.0.0,意味着服务暴露在每一个网卡接口上而非仅回环;默认凭据是admin/changeme!。在把主机接入不可信网络之前,务必修改USERS,并将HTTP_ADDRESS改为127.0.0.1(或把服务器放到带 TLS 的反向代理后面)。
首次指标构建可能耗时数分钟,指标集就绪前传感器不会产生指标匹配检测。systemd 单元会在启动前先执行传感器的-T验证,因此权限缺失、日志目录不可写或指标集无效都会让启动可见地失败。安装器测试框架不止断言“装上了”:在每个发行版中它都会启动服务器并请求/ping、要求传感器用-T自我验证、检查单元中引用的路径是否可解析、重跑安装器以证明升级保留运维配置,再执行--uninstall。Alpine 等 musl 系统使用-musl传感器构建(传感器原生支持 musl,可直接构建运行)。
从源码构建
传感器需要 Rust 1.74 及以上、libpcap 开发头文件与系统 capability 工具;服务器与指标更新器需要 Python 3.6 及以上。安装发行版软件包:
# 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随后构建并验证传感器:
git clone --depth 1 <Maltrail 仓库地址> 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在另一个终端或另一台主机上启动服务器:
python3 server.py当前版本为各平台附带了带 SHA-256 校验和的预编译传感器二进制:Linuxx86_64与aarch64各含 glibc 与 musl 版本、Apple silicon 与 Intel 的 macOS、FreeBSDamd64与 Windowsx86_64。glibc 构建将 libpcap 静态链接并面向 glibc 2.28,因此只依赖 C 库本身——在 RHEL 8+、Debian 10+、Ubuntu 18.04+ 与 Leap 15.x 上都无需额外安装;musl 构建完全静态,Alpine 什么都不用装;Windows 构建是 64 位的,需要 Windows 10 或更高版本,且必须先安装 Npcap(wpcap.dll是加载期依赖,缺失时加载器会直接拒绝启动可执行文件)。在检出中运行 install.ps1 完成剩余工作:
powershell -ExecutionPolicy Bypass -File install.ps1它会在缺少 Npcap 时拒绝安装,将二进制、配置与支持树放到%ProgramFiles%\Maltrail,日志与指标集保留在%ProgramData%\Maltrail,从发布版播种指标集,运行传感器自身的-T预检,并作为 SYSTEM 通过计划任务在开机时启动;-Uninstall则移除任务与程序目录并保留%ProgramData%下的全部内容。
历史注意点:3.1.1 及更早的二进制动态链接 libpcap,并以其 AlmaLinux 构建主机使用的名字引用;Debian 与 Ubuntu 自带同名旧库libpcap.so.0.8,于是这些二进制在一台装了 libpcap 的机器上也会启动即失败:
./maltrail-sensor: error while loading shared libraries: libpcap.so.1: cannot open shared object fileinstall.sh会为你链接缺失的名字。手工修复方式:
# 按架构调整目录:aarch64-linux-gnu,或 RPM 发行版上的 /usr/lib64 sudo ln -sf /usr/lib/x86_64-linux-gnu/libpcap.so.0.8 /usr/lib/x86_64-linux-gnu/libpcap.so.1 sudo ldconfigSystemd
随附的 packaging/systemd 单元以非特权maltrail用户运行两个进程:systemd 创建/var/log/maltrail与/var/lib/maltrail,限制文件系统访问,并为传感器授予CAP_NET_RAW与CAP_NET_ADMIN。安装器会自动配置这些单元;对既有源码安装,手动服务流程见 sensor/docs/INSTALL.md。检查服务状态与日志:
systemctl status maltrail-sensor maltrail-server journalctl -u maltrail-sensor -fDocker
启动随附的 Compose 部署:
docker compose -f docker/docker-compose.yml up -d容器配置、存储、特权与健康检查详见 docker/README.md。
配置(maltrail.conf)
Maltrail 读取根目录的 maltrail.conf,其中包含独立的[Sensor]与[Server]设置段;安装器将受管配置置于/etc/maltrail.conf。常用传感器选项:
| 选项 | 用途 |
|---|---|
MONITOR_INTERFACE | 抓包接口或接口列表;any选择全部受支持接口 |
CAPTURE_FILTER | BPF 抓包过滤器 |
CAPTURE_FANOUT | Linux 抓包 socket 数量;默认为 1 |
CAPTURE_WORKERS | 抓包 worker,每个持有一个 socket;默认取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 | 可选的 trails 仓库检出;仅用于在 UI 中展示指标来源引用 |
需要注意:PROCESS_COUNT只适用于已退役的 Python 传感器以及旧版事件日志节流,它不会设置 Rust 传感器的 worker 数;抓包 worker 请改用CAPTURE_FANOUT或CAPTURE_WORKERS配置。从配置文件的注释可以看到默认的抓包过滤器只放行与检测相关的流量:
CAPTURE_FILTER udp or icmp or (tcp and (tcp[tcpflags] == tcp-syn or port 80 or port 1080 or port 3128 or port 8000 or port 8080 or port 8118 or (port 443 and tcp[((tcp[12]&0xf0)>>2)] = 0x16)))此外,maltrail.conf中还包含一批值得在生产环境显式配置的条目:STATS_ADDRESS 127.0.0.1:9114(Prometheus 暴露)、LOG_SERVER_SECRET(对远程日志数据报做 MAC 认证,用openssl rand -hex 32生成)、LOG_SERVER_SKEW(签名事件时间戳容差,默认 900 秒,用于限制重放)、FAIL2BAN_REGEX与FAIL2BAN_ALLOWLIST(/fail2ban端点)、ALERT_WEBHOOK_URL/ALERT_FORMAT/ALERT_THROTTLE(HTTP POST 告警,覆盖本地与远程传感器事件)、CAPTURE_BUFFER/CAPTURE_BUFFER_SIZE(抓包环形缓冲)、CHECK_TLS_CERTIFICATES(TLS 服务器证书 SHA-1 指纹匹配,默认开启)、USE_CONDENSED_STORAGE/USE_EVENT_INDEX(服务器侧存储),以及DISABLED_HEURISTICS(单独静默嘈杂的启发式)。
改完配置后执行部署自检:
sensor/target/release/maltrail-sensor -T该检查会验证配置、指标、白名单条目、抓包过滤器、权限、日志存储、更新支持与 worker 设置;一次成功的检查会输出正数的指标与白名单计数,而不只是确认文件存在。从 sensor/src/main.rs 可以看到其语义:-T退出码 0 表示可用、1 表示无法工作。
Trails:指标体系
一条 trail 是一个指标——域名、URL、IP 地址、IP:port对、User-Agent、JA3/JA4 指纹或证书哈希——连同它的含义与来源。更新器按以下顺序将四类来源合并进TRAILS_FILE:
| 来源 | 来自何处 |
|---|---|
| Feeds | feeds/*.py,由你的部署直接向各发布方抓取 |
| Custom | CUSTOM_TRAILS_DIR与CUSTOM_TRAILS_URL,你自己的指标 |
| Static | 组装好的静态集合,从STATIC_TRAILS_URL抓取(独立许可) |
| Engine lists | data/mass_scanner*.txt(如 data/mass_scanner.txt、data/mass_scanner_cidr.txt),因变化极少而随引擎发布 |
静态指标放在独立仓库中:检测内容一天变化几十次,而引擎基本不变,两者放一起意味着更新检测就要拉取代码,还会让本仓库历史难以使用。STATIC_TRAILS_URL默认指向最新发布的集合:
STATIC_TRAILS_URL https://github.com/stamparm/trails/releases/latest/download/trails.csv.gz想固定版本,可以指向具体的content-YYYYMMDD-HHMM发布,避免一次糟糕的发布立刻影响全网。集合缓存在TRAILS_FILE旁边——这正是离线/气隙重建可行性的来源;下载前会校验发布的 sha256,因此更新频率高于内容变化的部署只传输 65 字节的摘要而非 11 MB 的正文,摘要不匹配的载荷会被拒绝并改用缓存。在 core/update.py 中可以看到这段实现:先取trails.csv.sha256,对下载内容计算摘要并与发布值比对,不匹配则保留缓存。
update_trails()只在构建成功后才原子地发布新的TRAILS_FILE(临时文件 +_atomic_replace,见 core/update.py);返回空内容的 feed 会按名称上报,因此部署不会默默依赖某个已悄然停服的来源。你自己的指标放进CUSTOM_TRAILS_DIR,绝不允许触发事件的条目放进USER_WHITELIST;两者都应放在安装目录之外,避免升级覆盖。
事件格式与 API
每次检测记录为一条以空格分隔的事件,值中含空格时按 CSV 规则加引号:
"<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标识产出它的静态列表、feed、自定义来源或启发式。JA3/JA4类型针对 TLS客户端指纹触发:植入体的 TLS 栈在地址与域名轮换后依然不变,因此其 hello 哈希在其他一切指标都失效后仍持续命中(由 abuse.ch SSLBL JA3 feed 发布)。
指标查询
用/check查询单个域名、IP 地址或 URL:
curl 'http://127.0.0.1:8338/check?q=www.sub.evil.example'{ "query": "www.sub.evil.example", "found": true, "trail": "evil.example", "info": "asyncrat (malware)", "reference": "(static)", "confidence": 100 }confidence字段(0-100,不可用时为null)表示来源对该条目的支持强度:单一 feed 为 40,每增加一个独立一致的 feed 加 15 分直至 100,运维自己的自定义与静态条目给满分。它在指标更新时由 feed 一致度计算,写入trails.csv旁的trails.confidence侧车文件(实现见 core/update.py);从UPDATE_SERVER拉取指标的服务器没有溯源数据,上报null。可以用它来排定分诊优先级——40 分的单 feed 条目在写入防火墙规则之前值得再看一眼。子域名查询可以命中其已列出的父级;URL 查询先查host/path再查 host 本身;服务器读取内存映射的指标库并能在不重启的情况下感知指标更新。公开的静态与 feed 指标无需认证即可查询(与远程传感器使用的/trails端点一致),自定义指标需要已授权的会话,事件数据则始终要求认证。
运维
监控与验证
将maltrail-sensor -T作为部署与配置门禁——随附的 systemd 单元把它作为ExecStartPre执行。要确认检测本身正常(而不只是进程在跑),执行:
python3 server.py --detect-test它会用一个精心构造的 pcap(包含对 DNS 查询、IP、IP:port、URL 路径与Host头的指标命中,外加 SQL 注入、目录遍历、RCE、XSS、代理探测、sinkhole、缺失Host与端口/Web/感染扫描启发式)回放经过已安装的传感器,并断言每条预期检测都触发。它不需要 root、不需要网卡、也不需要自己的指标集;健康安装会打印20/20 detection(s) fired。该流程实现在 core/testing.py 的detect_test()中。
配置了STATS_ADDRESS时,至少应监控以下 Prometheus 指标:
| 指标 | 运维含义 |
|---|---|
maltrail_up == 0 | 没有抓包 worker 在运行 |
maltrail_capture_dropped_total增长 | 抓包环形缓冲在丢包 |
maltrail_local_log_errors_total增长 | 事件已产生但无法写入本地 |
maltrail_remote_log_errors_total增长 | 事件无法送达远程 sink;配合DISABLE_LOCAL_LOG_STORAGE时这些事件会丢失 |
maltrail_trail_generation不前进 | 活动指标集没有在刷新 |
maltrail_log_dir_free_bytes | 本地事件存储剩余容量 |
maltrail_state_saturations_total增长 | 某个启发式状态达到上限 |
maltrail_throttle_evictions_total增长 | 事件节流表达到上限,事件比配置更早被聚合 |
状态饱和只影响对应启发式,精确指标匹配保持可用。向传感器发送SIGHUP或执行systemctl reload maltrail-sensor可请求立即重载指标;其他进程更新的指标文件会被自动探测并发布给各 worker,无需重启传感器。压缩的可观测存储(USE_CONDENSED_STORAGE、meta.sqlite)支撑服务器的 novelty 与回溯狩猎视图;按日事件日志旁路索引(USE_EVENT_INDEX、LOG_DIR/index/*.sqlite,磁盘占用约为日志的两倍)使/counts精确、/hunt快速,它从日志本身增量维护,可用server.py --rebuild-index重建(参数定义见 server.py)。
事件保留
Maltrail不轮转、不删除事件日志,保留、归档与删除由运维按存储需求与组织策略自行定义。推荐实践:
- 用
LOG_SERVER、SYSLOG_SERVER或LOGSTASH_SERVER把持久事件副本发送到远程 Maltrail 服务器或 SIEM; - 对
maltrail_log_dir_free_bytes告警,并为预期事件速率预留足够余量; - 用外部工具轮转、归档或删除本地按日日志;
- 报告界面需要读取的文件应以未压缩形式保留在
LOG_DIR;压缩文件归档到别处。
当日志文件系统写满时,传感器将无法追加事件。事件日志可能包含在部分司法辖区被认定为个人数据的 IP 地址与域名,保留策略应纳入相应合规要求。
合成流量验证
无需等待真实流量即可验证检测与仪表盘:
python3 server.py --detect-test # 断言每条检测都触发,然后退出 python3 server.py --detect-test --keep DIR --serve # ...并保留事件,在 :8338 上提供服务--keep还会把 sensor/tests/corpus 回放进同一日志,并打印仪表盘渲染不同的各类图形背后是否都有事件支撑,让缺失的图标、颜色或字形可见而非靠猜;时间戳会被平移使最近一天落在今天。运行它需要一个传感器二进制(cargo build --release --manifest-path sensor/Cargo.toml)。公开演示数据就是这样再生成的:
python3 sensor/tools/gen_demo_js.py --from DIR/logs # 补全 html/js/demo.js文档地图、贡献与许可
仓库为深入阅读提供了完整文档索引:安装/权限/排障见 sensor/docs/INSTALL.md,传感器内部与数据流见 sensor/docs/ARCHITECTURE.md,与退役 Python 传感器的刻意差异见 sensor/docs/COMPATIBILITY.md,测量与测试结果见 sensor/docs/REPORT.md,未决工作见 sensor/docs/ROADMAP.md。
提交代码前请运行相应检查:完整的传感器门禁是bash sensor/tools/check.sh(依次运行格式化、Clippy 警告即错,以及 debug/release 测试套件);Python 服务器套件用bash tests/run.sh python3。Windows 构建可在 Linux 上验证(其 bug 正是在此被发现的):sh sensor/tools/check_windows.sh用 mingw-w64 交叉编译,从 NSIS 安装包中解出 Npcap 用户态库,并在 Wine 下运行完整单元套件、-T、与原生二进制逐字节对比的 pcap 语料,以及 Windows Python 下的/ping;唯一无法覆盖的是需要 Npcap 内核驱动的实时抓包。指标贡献应附带可靠来源并使用尽量窄的分类。
许可方面:引擎本体为 MIT 许可(见 LICENSE),但 Maltrail Trails 指标数据集采用独立条款——独立 IOC 查询/引用没问题,但在商业产品或服务中把 Trails 系统性用作情报源需要授权;MIT 的引擎并不会让内容变成可以免费转售的东西。
【免费下载链接】maltrailMalicious traffic detection system项目地址: https://gitcode.com/GitHub_Trending/ma/maltrail
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考