matchylabs/matchy
GitHub: matchylabs/matchy
基于 Rust 的高性能威胁情报匹配工具,支持从日志中快速检索 IP、域名、哈希等 IoC 指标。
Stars: 12 | Forks: 1
# Matchy
[](https://github.com/matchylabs/matchy/actions/workflows/ci.yml)
[](https://crates.io/crates/matchy)
[](https://docs.rs/matchy)
[](LICENSE)
**针对日志、网络流量和安全数据的快速 IoC 匹配。**
Matchy 从威胁情报源构建内存映射数据库,支持快速查找 IP、域名、文件哈希和 glob 模式。
```
# 从你的 intel feeds 构建威胁数据库
matchy build threats.csv -o threats.mxy
# 扫描你的日志以查找匹配项 (多线程)
matchy match threats.mxy access.log
# 查询单个 indicators
matchy query threats.mxy 1.2.3.4
```
## 用途
**威胁情报匹配**:您拥有威胁源(IP、域名、文件哈希),需要在您的数据中搜索它们。
**应用场景**:
- 扫描日志以查找已知的恶意 IP、域名、哈希或 C2 基础设施
- 在将日志发送到 SIEM 或存储之前,用威胁上下文对其进行丰富
- 在脚本和管道中进行实时查找
- 在 SIEM 访问受限时进行离线分析
- 在执行昂贵的 SIEM 查询之前进行预过滤
## 核心功能
- **统一数据库**:IP、CIDR、精确字符串、glob 模式存储在单一文件中
- **快速加载**:无论数据库大小如何,加载时间均 <1ms(内存映射)
- **快速查询**:对 100K+ 指标进行亚毫秒级查找
- **日志扫描**:自动从非结构化日志中提取 IP、域名、电子邮件、哈希
- **Glob 模式**:`*.evil.com` 自动匹配子域名
- **丰富的元数据**:为每个指标附加威胁级别、类别、来源
- **兼容 MaxMind**:直接查询 GeoIP 数据库 - 无需单独的 libmaxminddb
- **构建 MMDB 数据库**:从 CSV 创建兼容 MaxMind 的数据库(libmaxminddb 没有构建器)
- **多种格式**:从 CSV、JSONL 导入,或读取现有的 MaxMind MMDB 文件
## 快速入门
### 安装
```
cargo install matchy
```
**系统要求**:Rust 1.87+(或使用[预编译二进制文件](https://github.com/matchylabs/matchy/releases))
### 构建威胁数据库
创建一个包含您的指标的 CSV:
```
entry,threat_level,category,source
1.2.3.4,high,malware,abuse.ch
10.0.0.0/8,low,internal,rfc1918
*.evil.com,critical,phishing,urlhaus
malware.example.com,high,c2,internal
ab5ef3c21d4e...,high,malware,virustotal
```
构建数据库:
```
matchy build threats.csv -o threats.mxy --format csv
# 构建兼容 MaxMind 的 MMDB (仅 IP 数据)
matchy build ip-blocklist.csv -o blocklist.mmdb --format csv
# 适用于任何期待 MMDB 格式的工具!
```
### 扫描日志以查找匹配项
```
# 扫描访问日志 (输出 JSON,每行一个匹配项)
matchy match threats.mxy /var/log/nginx/access.log
# 带统计信息
matchy match threats.mxy access.log --stats
# 扫描 gzip 日志 (自动解压)
matchy match threats.mxy access.log.gz
# 监控实时日志
tail -f /var/log/app.log | matchy match threats.mxy -
# 快速测试:跳过构建步骤 (从 JSON/CSV 自动构建)
matchy match threats.json access.log # builds database in-memory
```
### 查询单个指标
```
# 检查 IP
matchy query threats.mxy 1.2.3.4
# [{"threat_level":"high","category":"malware","source":"abuse.ch"}]
# 检查域名
matchy query threats.mxy sub.evil.com
# [{"threat_level":"critical","category":"phishing","source":"urlhaus"}]
# 检查 hash
matchy query threats.mxy ab5ef3c21d4e...
# 查询 MaxMind GeoIP 数据库 (无需 libmaxminddb)
matchy query GeoLite2-City.mmdb 8.8.8.8
# {"city":"Mountain View","country":"US",...}
```
## 面向开发者
### Rust 库
```
cargo add matchy --no-default-features # Library only, no CLI
```
有关构建数据库、查询和从文本中提取 IoC 的信息,请参阅 **[API 文档](https://docs.rs/matchy)**。
### C/C++ 库
```
#include
matchy_t *db = matchy_open("threats.mxy");
matchy_result_t result = matchy_query(db, "1.2.3.4");
matchy_close(db);
```
亦提供兼容 MaxMind 的 API。集成指南请参阅 **[The Matchy Book](https://matchylabs.github.io/matchy/)**。
## 文档
- **[The Matchy Book](https://matchylabs.github.io/matchy/)** - 完整的 CLI 指南和示例
- **[API 参考](https://docs.rs/matchy)** - Rust 库文档
- **[DEVELOPMENT.md](DEVELOPMENT.md)** - 架构和性能细节
## 项目信息
**许可证**:Apache-2.0
**贡献指南**:[CONTRIBUTING.md](CONTRIBUTING.md)
Matchy 扩展了 MaxMind 的 MMDB 格式,增加了 [Paraglob](https://github.com/zeek/paraglob)-风格的 glob 匹配和字面量字符串匹配,从而创建了一种统一的 IoC 数据库格式。标签:C2检测, DAST, Glob匹配, IoC匹配, IP 地址批量处理, IP查询, PB级数据处理, Rust, SIEM增强, 内存映射, 可视化界面, 域名检测, 威胁情报, 安全运维, 开发者工具, 性能优化, 恶意活动检测, 恶意软件分析, 情报消费, 文件哈希, 文档结构分析, 日志扫描, 时序数据库, 检测绕过, 离线分析, 网络信息收集, 网络安全, 网络流量审计, 通知系统, 隐私保护