cybernexuslabs-research/Trawl

GitHub: cybernexuslabs-research/Trawl

一款支持布尔查询和并发处理的 RSS 威胁情报搜索工具,帮助安全人员从多个网络安全资讯源快速筛选相关情报。

Stars: 0 | Forks: 0

# 🔍 Trawl — 用于威胁情报的 RSS Feed 搜索工具 一款强大、并发的 RSS feed 搜索工具,专为收集威胁情报而设计。支持通过高级布尔逻辑、日期过滤和灵活的输出格式在多个网络安全 RSS feed 中进行搜索。 ## ✨ 功能特性 - 🚀 **并发处理**:同时搜索多个 Feed - 🧠 **布尔搜索逻辑**:支持 AND、OR、精确短语和复杂的布尔表达式 - 📅 **日期过滤**:使用灵活的格式按发布日期过滤文章 - 📊 **多种输出格式**:支持 Text、JSON 和 CSV 输出 - 🎯 **智能缓存**:通过智能缓存避免重复获取 Feed - 🛡️ **健壮的错误处理**:优雅地处理网络故障和格式错误的 Feed - ⚙️ **可配置**:支持外部配置文件和丰富的 CLI 选项 - 🔍 **正则表达式支持**:支持使用正则表达式进行高级模式匹配 - 📬 **通知功能**:通过 Slack webhook 或电子邮件 (SMTP) 发送结果 ## 📦 安装 ### 基本安装 ``` git clone cd trawl ``` ### 前置条件 ``` # 必需 pip install -r requirements.txt ``` ## 🚀 快速开始 ### 默认搜索 ``` # 不带参数运行以进行默认勒索软件搜索 python trawl.py # 使用多个关键词的基本搜索(OR 逻辑) python trawl.py ransomware malware phishing ``` ## 📖 用法 ``` python trawl.py [search_terms] [options] ``` ### 搜索词与表达式 | 方法 | 描述 | 示例 | |--------|-------------|---------| | **多个词** | 空格分隔的词 | `python trawl.py ransomware malware` | | **布尔表达式** | 使用 --expression 进行复杂逻辑搜索 | `python trawl.py --expression "(APT OR advanced) AND persistent"` | ## 🔧 命令行选项 ### 搜索参数 | 选项 | 短参数 | 描述 | 示例 | |--------|-------|-------------|---------| | `--mode` | | 搜索模式: `or`, `and`, `exact`, `boolean` | `--mode and` | | `--expression` | `-e` | 布尔搜索表达式 | `-e "(malware OR virus) AND NOT test"` | | `--regex` | `-r` | 启用正则表达式模式匹配 | `-r` | | `--since` | `-s` | 按发布日期过滤 | `--since 7d` | ### 输出、格式与通知 | 选项 | 短参数 | 描述 | 示例 | |--------|-------|-------------|---------| | `--format` | | 输出格式: `text`, `json`, `csv` | `--format json` | | `--output` | `-o` | 将结果保存到文件 | `-o results.json` | | `--notify` | | 通过 `slack` 或 `email` 发送结果 (抑制 stdout 输出) | `--notify email` | | `--verbose` | `-v` | 启用详细日志记录 | `-v` | ### 性能与来源 | 选项 | 短参数 | 描述 | 示例 | |--------|-------|-------------|---------| | `--feeds` | `-f` | 自定义 Feed URL | `-f "https://example.com/feed"` | | `--config` | `-c` | JSON 配置文件 | `-c feeds.json` | | `--max-results` | `-m` | 限制每个 Feed 的结果数 | `-m 10` | | `--workers` | `-w` | 并发 Worker 数 (默认: 10) | `-w 20` | | `--timeout` | `-t` | 请求超时时间 (秒) (默认: 30) | `-t 60` | | `--no-cache` | | 禁用 Feed 缓存 | `--no-cache` | ## 🔍 搜索模式 ### 1. OR 模式 (默认) 查找包含**任意**搜索词的文章。 ``` python trawl.py ransomware malware --mode or # 包含 "ransomware" OR "malware" 的文章 ``` ### 2. AND 模式 查找包含**所有**搜索词的文章。 ``` python trawl.py ransomware attack --mode and # 包含 "ransomware" AND "attack" 的文章 ``` ### 3. EXACT 模式 查找包含**精确短语**的文章。 ``` python trawl.py "advanced persistent threat" --mode exact # 包含确切短语 "advanced persistent threat" 的文章 ``` ### 4. BOOLEAN 模式 使用括号和运算符的复杂布尔表达式。 ``` # 使用分组的复杂搜索 python trawl.py --expression "(ransomware OR malware) AND (attack OR breach)" # 排除误报 python trawl.py --expression "APT AND NOT (simulation OR test)" # 嵌套条件 python trawl.py --expression "(CVE AND critical) OR (0-day AND exploit)" ``` #### 布尔运算符 - **AND**:两个词都必须存在 - **OR**:任一词存在即可 - **NOT**:排除词 - **括号**:分组表达式 ## 📅 日期过滤 ### 相对日期 ``` # 过去 7 天 python trawl.py malware --since 7d # 过去 24 小时 python trawl.py CVE --since 24h # 过去 2 周 python trawl.py APT --since 2w # 过去一个月 python trawl.py phishing --since 1m ``` ### 日期快捷方式 ``` # 今天的文章 python trawl.py ransomware --since today # 昨天的文章 python trawl.py malware --since yesterday # 本周的文章 python trawl.py APT --since "this week" # 本月的文章 python trawl.py phishing --since "this month" ``` ### 绝对日期 ``` # 特定日期 python trawl.py ransomware --since "2024-01-01" # 带时间的日期 python trawl.py malware --since "2024-01-15 09:00:00" # 支持多种格式 python trawl.py APT --since "02/15/2024" ``` ## 📊 输出格式 ### Text 格式 (默认) 带表情符号和格式的人类可读输出。 ``` python trawl.py ransomware --format text ``` ### JSON 格式 用于编程处理的结构化数据。 ``` python trawl.py malware --format json --output results.json ``` ### CSV 格式 兼容电子表格的格式。 ``` python trawl.py APT --format csv --output report.csv ``` ## ⚙️ 配置 ### 配置文件 创建一个 `config.json` 文件来管理 Feed URL、性能设置和通知渠道: ``` { "feeds": [ "https://www.bleepingcomputer.com/feed/", "https://feeds.feedburner.com/TheHackersNews", "https://www.darkreading.com/rss.xml", "https://custom-security-blog.com/feed/" ], "timeout": 30, "workers": 10, "retries": 1, "slack": { "webhook_url": "https://hooks.slack.com/services/XXX/YYY/ZZZ" }, "email": { "smtp_host": "smtp.gmail.com", "smtp_port": 465, "smtp_user": "user@gmail.com", "smtp_password": "app-password", "from_addr": "user@gmail.com", "to_addrs": ["recipient@example.com"] } } ``` 配合使用: ``` python trawl.py ransomware --config config.json ``` ## 🎯 高级示例 ### 复杂威胁狩猎 ``` # 最近的 APT 活动 python trawl.py --expression "(APT OR 'advanced persistent') AND (threat OR attack)" --since 3d # 关键漏洞 python trawl.py --expression "(CVE AND critical) OR (0-day AND exploit)" --since 1w # 勒索软件情报 python trawl.py --expression "ransomware AND (group OR gang OR family)" --since 2w ``` ### 监控特定威胁 ``` # 监控特定恶意软件家族 python trawl.py --expression "(Conti OR LockBit OR BlackCat) AND ransomware" --since today # 跟踪漏洞利用 python trawl.py --expression "exploit AND (CVE OR vulnerability)" --since 24h ``` ### 研究与分析 ``` # 特定行业威胁 python trawl.py --expression "(healthcare OR medical) AND (breach OR attack)" --since 1m # 供应链攻击 python trawl.py --expression "'supply chain' AND (attack OR compromise)" --since 2w ``` ### 导出与报告 ``` # 每日威胁摘要 python trawl.py --expression "critical OR high" --since today --format csv --output daily_threats.csv # 每周 APT 报告 python trawl.py APT --since 7d --format json --output apt_weekly.json ``` ### 通知 ``` # 发送结果到 Slack (需要在 config.json 中配置 slack.webhook_url) python trawl.py ransomware --notify slack --config config.json # 通过电子邮件发送结果 (需要在 config.json 中配置电子邮件设置) python trawl.py ransomware --notify email --config config.json # 与其他选项结合使用 — 文件保存仍可与 --notify 一起使用 python trawl.py malware --notify email --output results.json --format json --since 7d ``` ## 🚀 性能调优 ### 优化速度 ``` # 增加并发工作线程 python trawl.py ransomware --workers 20 # 减少 timeout 以加快处理速度 python trawl.py malware --timeout 15 # 限制每个 feed 的结果数 python trawl.py APT --max-results 5 ``` ### 优化准确性 ``` # 禁用 caching 以获取实时数据 python trawl.py phishing --no-cache # 对缓慢的 feeds 使用更长的 timeout python trawl.py ransomware --timeout 60 # 启用 verbose logging 以进行调试 python trawl.py malware --verbose ``` ## 🔍 正则表达式示例 ### 模式匹配 ``` # IP 地址 python trawl.py --regex --expression "\\b(?:[0-9]{1,3}\\.){3}[0-9]{1,3}\\b" # 电子邮件模式 python trawl.py --regex --expression "[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}" # Hash 模式 (MD5/SHA) python trawl.py --regex --expression "[a-fA-F0-9]{32,64}" ``` ## 🛠️ 故障排除 ### 常见问题 **日期解析错误:** ``` # 安装增强的日期解析 pip install python-dateutil ``` **网络超时:** ``` # 增加 timeout python trawl.py ransomware --timeout 60 ``` **结果过多:** ``` # 限制每个 feed 的结果数 python trawl.py malware --max-results 10 ``` **Feed 错误:** ``` # 启用 verbose logging python trawl.py APT --verbose ``` ## 📬 通知设置 ### Slack 1. 在你的 Slack 工作区创建一个 [Incoming Webhook](https://api.slack.com/messaging/webhooks) 2. 将 Webhook URL 添加到 `config.json` 中的 `slack.webhook_url` 3. 长结果将自动分块为多条消息发送(每条约 4K 字符) ### 电子邮件 1. 将你的 SMTP 设置添加到 `config.json` 中的 `email` 2. 端口 **465** 使用直接 SSL (`SMTP_SSL`),端口 **587** 使用 STARTTLS 3. 对于 Gmail,请使用 [应用专用密码](https://support.google.com/accounts/answer/185833) (需要两步验证) 4. `to_addrs` 接受收件人列表 ## 🔒 安全注意事项 - 该工具向 RSS feed 发起 HTTP 请求 - `config.json` 中的 SMTP 凭证和 Slack webhook URL 应保密 — 将 `config.json` 添加到 `.gitignore` - Feed 缓存是临时的(默认为 5 分钟) - 所有网络请求均遵守标准超时设置 ## 🤝 贡献 1. Fork 本仓库 2. 创建一个特性分支 3. 进行更改 4. 为新功能添加测试 5. 提交 Pull Request ## 📄 许可证 本项目采用 MIT 许可证授权 - 详情请参阅 LICENSE 文件。 ## 🆘 支持 如有问题和疑问: - 使用 `-v` 标志检查详细输出 - 确保已安装所有依赖项 - 验证与 RSS feed 的网络连接 - 查看上面的故障排除部分 **祝威胁狩猎愉快! 🕵️‍♂️🔍**
标签:APT 检测, BSD, CSV, DAST, EDR, ESC4, JSON, Linux安全, OSINT, Python, RSS 订阅, Slack 通知, 勒索软件, 威胁情报, 安全运营, 实时处理, 布尔逻辑, 开发者工具, 恶意软件分析, 扫描框架, 搜索引擎, 数据挖掘, 无后门, 脆弱性评估, 自动化搜索, 赛博安全, 逆向工具