guilhermegui08/pcap2api
GitHub: guilhermegui08/pcap2api
一款无需 SIEM 的命令行工具,从 PCAP 提取网络可观测对象并与七种免费威胁情报源比对以发现潜在威胁。
Stars: 0 | Forks: 0
# pcap2api
`pcap2api` 从一个或多个 PCAP/CAP 文件中提取 IP、域名和 URL,并将它们与七个公共威胁情报源以及可选的商业 API 进行交叉比对。其设计旨在以单个独立的命令行工具镜像 **IntelMQ Collector → Parser → Output** 管道。
```
$ pcap2api capture.pcap
Loading 6 threat feed(s)…
[cache] URLhaus (4m ago) ips:12482 domains:8741 urls:51203
[fetch] FeodoTracker ips:892 domains:0 urls:0
...
Unique observables: 134 (89 ips, 31 domains, 14 urls)
Running lookups across 7 backend(s)…
┌─────────────────────┬──────────┬─────────────────┬──────────────────┬───────┐
│ Observable │ Kind │ TI Source │ Class. Type │ Conf. │
├─────────────────────┼──────────┼─────────────────┼──────────────────┼───────┤
│ 185.220.101.47 │ ip │ FeodoTracker │ c2-server │ 95% │
│ malware-cdn.xyz │ domain │ URLhaus │ malware-distrib… │ 90% │
│ 94.102.49.190 │ ip │ Blocklist.de │ brute-force │ 80% │
└─────────────────────┴──────────┴─────────────────┴──────────────────┴───────┘
```
## 功能特性
### 七个内置威胁情报源
该工具为每个源模拟 IntelMQ 的 **Collector → Parser → Expert → Output** 管道,下载、解析并本地缓存数据。这些源均无需 API 密钥。
| 源 | 检测内容 | TTL |
|---|---|---|
| **URLhaus** (Abuse.ch) | 恶意分发 URL 及其托管 IP | 60 分钟 |
| **Feodo Tracker** (Abuse.ch) | 活动僵尸网络 C2 IP(Emotet、TrickBot、QakBot 等) | 60 分钟 |
| **PhishTank** | 已验证的钓鱼 URL 和域名 | 60 分钟 |
| **Bambenek Consulting** | C2 域名与 DGA(域名生成算法)主列表 | 60 分钟 |
| **Blocklist.de** | 曾有 SSH/FTP/SMTP 暴力破解或扫描历史的 IP | 12 小时 |
| **Emerging Threats** (Proofpoint) | 包含 CIDR 感知的综合僵尸网络与 C2 IP 封堵列表 | 24 小时 |
| **AlienVault OTX** | 社区威胁脉冲:IP、域名、URL(*需免费 API 密钥*) | 30 分钟 |
### 从 PCAP 提取可观测对象
- **IP** — 来自 IPv4 与 IPv6 头部(源地址与目的地址)
- **域名** — 来自 DNS 查询名称(DNSQR 层)
- **URL** — 从 HTTP 载荷重建(`Host:` + 请求行)
- **端口** — 对照已知恶意端口列表标记
### 本地磁盘缓存与 TTL 管理
各源数据下载后以 JSON 格式存储在 `~/.cache/pcap2api/` 中。自动遵循各提供方推荐的刷新间隔;后续运行将复用缓存。如需强制立即重新下载,可使用 `--refresh-feeds` 参数。
### 可选的远程 API 后端
在拥有 API 密钥时可进行更深度的增强:
| 后端 | 检查项 |
|---|---|
| **AbuseIPDB** | 带可配置置信度阈值的 IP 信誉 |
| **VirusTotal** | 覆盖 70 多个安全引擎的 IP、域名、URL 检测 |
| **Shodan** | 开放端口、危险主机标签及基础设施上下文 |
| **IntelMQ REST API** | 直接查询活动的 IntelMQ 事件存储 |
### 本地启发式规则(无需联网)
- DGA 风格域名检测(长随机标签、低成本 TLD 如 `.xyz`、`.tk`、`.ml`)
- 可疑端口标记(如 4444、1337、31337、9050 等)
### 输出格式
- **富终端表格** — 颜色编码的严重等级(高 / 中 / 低)
- **JSON** — 包含元数据的完整结构化报告
- **CSV** — 仅匹配结果,便于导入电子表格或 SIEM
- **退出码 1** 表示发现威胁,`0` 表示无威胁 — 适用于 CI/CD 流水线
## 安装
### 系统要求
- Python 3.10 或更高版本
- `pip`(随 Python 提供)
- `libpcap` 开发头文件(由 Scapy 依赖)
### Ubuntu / Debian
```
sudo apt update
sudo apt install -y python3 python3-pip libpcap-dev
pip3 install scapy requests rich
```
### Fedora / RHEL / CentOS Stream
```
sudo dnf install -y python3 python3-pip libpcap-devel
pip3 install scapy requests rich
```
### Arch Linux / Manjaro
```
sudo pacman -Sy python python-pip libpcap
pip install scapy requests rich
```
### 获取脚本
```
curl -O https://raw.githubusercontent.com/guilhermegui08/pcap2api/refs/heads/main/pcap2api.py
chmod +x pcap2api.py
```
或克隆仓库:
```
git clone https://github.com/guilhermegui08/pcap2api
cd pcap2api
pip3 install -r requirements.txt
```
## 使用方法
### 基础用法 — 仅使用源,无需密钥
```
python pcap2api.py capture.pcap
```
### 处理多个文件
```
python pcap2api.py morning.pcap afternoon.cap night.pcapng
```
### 强制刷新源下载(忽略缓存)
```
python pcap2api.py capture.pcap --refresh-feeds
```
### 添加 AlienVault OTX(免费用账户:otx.alienvault.com)
```
python pcap2api.py capture.pcap --otx-key YOUR_OTX_KEY
```
### 添加商业 API 后端
```
python pcap2api.py capture.pcap \
--abuseipdb-key YOUR_AIPDB_KEY \
--virustotal-key YOUR_VT_KEY \
--shodan-key YOUR_SHODAN_KEY
```
### 导出结果
```
python pcap2api.py capture.pcap \
--output-json report.json \
--output-csv report.csv
```
### 完整示例 — 启用所有源与 API 并导出
```
python pcap2api.py a.pcap b.cap \
--otx-key OTX_KEY \
--abuseipdb-key AIPDB_KEY \
--virustotal-key VT_KEY \
--output-json report.json \
--output-csv report.csv \
--verbose
```
### CI/CD — 发现威胁时返回非零退出码
```
python pcap2api.py capture.pcap --quiet
echo "Exit code: $?" # 0 = clean, 1 = threats detected
```
### 禁用不需要的特定源
```
python pcap2api.py capture.pcap \
--no-blocklist-de \
--no-emerging-threats
```
### 使用自定义缓存目录
```
python pcap2api.py capture.pcap --cache-dir /var/cache/pcap-intel
```
## 环境变量
所有 API 密钥均可通过环境变量设置,而无需在命令行中传递:
| 变量 | 后端 |
|---|---|
| `OTX_KEY` | AlienVault OTX |
| `PHISHTANK_KEY` | PhishTank(可选,提高速率限制) |
| `ABUSEIPDB_KEY` | AbuseIPDB |
| `VIRUSTOTAL_KEY` | VirusTotal |
| `SHODAN_KEY` | Shodan |
```
export ABUSEIPDB_KEY=your_key
python pcap2api.py capture.pcap
```
## 设计说明
**为何不直接使用 IntelMQ?**
IntelMQ 是一个完整的流水线平台,需要 Redis、多个进程和配置文件。该工具面向希望快速进行临时 PCAP 分析且无需搭建基础设施的分析师。
**源选择依据**
这七个源覆盖了主要威胁类别且彼此不重叠:
- 恶意分发(URLhaus)
- 活动僵尸网络 / C2(Feodo Tracker、Bambenek)
- 钓鱼(PhishTank)
- 机会型攻击者(Blocklist.de)
- 广泛覆盖(Emerging Threats)
- 社区情报(OTX)
**缓存行为**
每个源以 JSON 文件形式缓存到磁盘。TTL 设置较为保守,以匹配各提供方的推荐更新频率,并避免对志愿运营服务造成过大压力(如 Blocklist.de 的 12 小时与 Emerging Threats 的 24 小时)。
**分类体系**
所有匹配项均使用 [IntelMQ 数据协调](https://docs.intelmq.org/latest/dev/data-format/) / [RSIT](https://github.com/enisaeu/Reference-Security-Incident-Taxonomy-Task-Force/) 本体(`classification.type` 与 `classification.taxonomy`)标记,使输出兼容 IntelMQ 事件存储与 MISP。
**退出码**
| 代码 | 含义 |
|---|---|
| `0` | 未检测到威胁 |
| `1` | 发现一个或多个威胁匹配 |
| `2` | 参数或文件错误 |
## 完整选项参考
```
usage: pcap2api [-h] [--version]
[--no-urlhaus] [--no-feodo] [--no-phishtank]
[--no-bambenek] [--no-blocklist-de]
[--no-emerging-threats]
[--otx-key KEY] [--phishtank-key KEY]
[--refresh-feeds] [--cache-dir DIR]
[--abuseipdb-key KEY] [--abuseipdb-min-score N]
[--virustotal-key KEY] [--virustotal-min-detections N]
[--shodan-key KEY]
[--intelmq-url URL] [--intelmq-user USER]
[--intelmq-pass PASS]
[--no-heuristics]
[--include-private] [--kinds KIND [KIND ...]]
[--output-json FILE] [--output-csv FILE]
[--rate-limit SECS]
[-v] [-q]
FILE.pcap [FILE.pcap ...]
```
## 许可证
GPLV3 — 参见 [LICENSE](LICENSE)。
## 感谢
- [IntelMQ](https://github.com/certtools/intelmq) — 提供数据协调本体与流水线架构启发
- [Abuse.ch](https://abuse.ch) — URLhaus、Feodo Tracker、MalwareBazaar
- [PhishTank](https://www.phishtank.com)
- [Bambenek Consulting](https://osint.bambenekconsulting.com)
- [Blocklist.de](https://www.blocklist.de)
- [Proofpoint Emerging Threats](https://rules.emergingthreats.net)
- [AlienVault OTX](https://otx.alienvault.com)
## 备注
本工具由 Claude AI(Sonnet 4.6)构建。
标签:AMSI绕过, DNS枚举, IntelMQ, IOC, PB级数据处理, PCAP分析, TTP, URL信誉, 多馈源查询, 威胁情报, 威胁情报管道, 威胁情报馈源, 威胁检测, 字符串匹配, 安全运维, 开发者工具, 恶意IP检测, 恶意域名检测, 情报采集, 文件解析, 缓存, 网络安全, 网络安全工具, 网络捕获, 网络流量分析, 自动化查询, 逆向工具, 隐私保护