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 通知, 勒索软件, 威胁情报, 安全运营, 实时处理, 布尔逻辑, 开发者工具, 恶意软件分析, 扫描框架, 搜索引擎, 数据挖掘, 无后门, 脆弱性评估, 自动化搜索, 赛博安全, 逆向工具