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检测, 恶意域名检测, 情报采集, 文件解析, 缓存, 网络安全, 网络安全工具, 网络捕获, 网络流量分析, 自动化查询, 逆向工具, 隐私保护