matchylabs/matchy

GitHub: matchylabs/matchy

基于 Rust 的高性能威胁情报匹配工具,支持从日志中快速检索 IP、域名、哈希等 IoC 指标。

Stars: 12 | Forks: 1

Matchy Logo

# Matchy [![CI](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/a8977bcde0082323.svg)](https://github.com/matchylabs/matchy/actions/workflows/ci.yml) [![Crates.io](https://img.shields.io/crates/v/matchy.svg)](https://crates.io/crates/matchy) [![Documentation](https://docs.rs/matchy/badge.svg)](https://docs.rs/matchy) [![License](https://img.shields.io/badge/license-Apache--2.0-blue.svg)](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增强, 内存映射, 可视化界面, 域名检测, 威胁情报, 安全运维, 开发者工具, 性能优化, 恶意活动检测, 恶意软件分析, 情报消费, 文件哈希, 文档结构分析, 日志扫描, 时序数据库, 检测绕过, 离线分析, 网络信息收集, 网络安全, 网络流量审计, 通知系统, 隐私保护