gurs1mr4n/PhishGuard

GitHub: gurs1mr4n/PhishGuard

PhishGuard 是一个基于 Python 的钓鱼邮件分析工具,帮助 SOC 分析师自动化提取威胁指标、验证邮件认证并评估风险。

Stars: 1 | Forks: 0

# PhishGuard ![Python](https://img.shields.io/badge/Python-3.8+-blue) ![License](https://img.shields.io/badge/license-MIT-green) ![SOC](https://img.shields.io/badge/role-SOC%20Analyst-red) ![Version](https://img.shields.io/badge/version-0.2.0-orange) ## 功能描述 给定一个 `.eml` 文件,PhishGuard 将会: 1. **解析** 所有邮件头信息 — 发件人、回复地址、接收链、消息ID、原始IP 2. **验证** 来自邮件头的 SPF、DKIM 和 DMARC 身份验证结果 3. **DNS 检查** — 通过 `dnspython` 实时查询 SPF 和 DMARC 记录,以验证域名实际发布的内容 4. **提取 IOC** — 从邮件正文中提取 URL、IPv4 地址和附件元数据 5. **威胁情报** — 使用 AbuseIPDB 检查提取的 IP,使用 VirusTotal 检查 URL 6. **风险评分** — 使用加权标志系统进行评分(SPF 失败、DKIM 缺失、回复地址不匹配、可疑 URL、高风险附件、高恶意 IP、恶意 URL) 7. **输出** 结构化的报告,格式为人类可读的文本或 JSON(兼容 SIEM) ## 项目结构 ``` PhishGuard/ ├── main.py # CLI entry point ├── requirements.txt # Dependencies ├── phishguard/ │ ├── email_parser.py # .eml parsing & IOC extraction │ ├── threat_intel.py # AbuseIPDB & VirusTotal API integrations │ └── dns_validator.py # Live SPF & DMARC DNS lookups └── samples/ └── phishing_test.eml # Sample phishing email for testing ``` ## 安装指南 ``` git clone https://github.com/psycho-manav/PhishGuard.git cd PhishGuard pip install -r requirements.txt ``` ### API 密钥(可选) 将这些设置为环境变量以启用实时威胁情报查询: ``` # 免费层级:https://www.abuseipdb.com/api export ABUSEIPDB_API_KEY="your_key_here" # 免费层级:https://www.virustotal.com/gui/join-us export VIRUSTOTAL_API_KEY="your_key_here" ``` 没有密钥,该工具仍可在离线模式下完全运行。 ## 使用方法 ``` # 人类可读报告(默认) python main.py -f samples/phishing_test.eml # JSON 输出(SIEM 就绪) python main.py -f samples/phishing_test.eml -o json # 离线模式(跳过 API 调用) python main.py -f samples/phishing_test.eml --no-intel ``` ### CLI 选项 | 标志 | 描述 | |------|------| | `-f`, `--file` | `.eml` 文件的路径(必需) | | `-o`, `--output` | 输出格式:`text`(默认)或 `json` | | `--no-intel` | 跳过 AbuseIPDB / VirusTotal 查询(离线模式) | ## 风险评分 PhishGuard 基于加权标志计算风险分数: | 检查项 | 分数 | |--------|------| | SPF 失败 / 软失败 | +30 | | SPF 头缺失 | +15 | | DKIM 签名缺失 | +20 | | DMARC 失败 | +25 | | DMARC 结果缺失 | +10 | | 域名无 SPF DNS 记录 | +10 | | 域名无 DMARC DNS 记录 | +10 | | 回复地址不匹配 | +20 | | 可疑 URL 关键词 | 每个 URL +10(最多 30) | | 高风险附件扩展名 | +40 | | 被报告的 IP(AbuseIPDB > 0) | +15 | | 高恶意 IP(AbuseIPDB >= 50) | +35 | | 恶意 URL(VirusTotal) | +40 | | 分数 | 风险等级 | |------|----------| | 0–34 | 低 | | 35–69 | 中 | | 70+ | 高 | ## JSON 输出示例 ``` { "tool": "PhishGuard", "version": "0.2.0", "risk_level": "HIGH", "risk_score": 120, "flags": [ "SPF check failed", "DKIM signature missing", "DMARC check failed", "Reply-To mismatch: sender=billing@paypal.com, reply_to=collect@evil.ru", "Suspicious URLs found: ['http://paypal-verify.login.evil.ru/account']", "High-abuse IP detected: 185.220.101.47 (score: 98, Frantech Solutions)" ], "iocs": { "urls": ["http://paypal-verify.login.evil.ru/account"], "ips": ["185.220.101.47"], "attachments": [] }, "threat_intel": { "ip_checks": [{"ip": "185.220.101.47", "abuse_confidence_score": 98, "total_reports": 847, "is_tor": true}], "url_checks": [{"url": "http://paypal-verify.login.evil.ru/account", "malicious": 12, "suspicious": 3}] } } ``` ## 技术栈 - **Python 3** — `email`、`re`、`argparse`、`json`、`datetime` - **requests** — AbuseIPDB & VirusTotal API 调用 - **dnspython** — 实时 SPF/DMARC DNS 查询 - **ipwhois** — IP 地理位置/ASN(未来使用) ## 开发路线图 - [x] `.eml` 解析 — 头部、正文、URL、IP、附件 - [x] SPF / DKIM / DMARC 头验证 - [x] 实时 DNS SPF/DMARC 记录验证(`dns_validator.py`) - [x] 风险评分引擎 - [x] JSON + 文本报告输出 - [x] AbuseIPDB API 集成,用于 IP 信誉检查 - [x] VirusTotal API 集成,用于 URL/域名检查 - [x] 示例钓鱼 `.eml` 测试文件 - [x] `--no-intel` 离线模式 - [ ] HTML 报告输出 - [ ] 批量分析(分析一个文件夹中的 `.eml` 文件) - [ ] 将警报导出为 CSV / 兼容 SIEM 的 CEF 格式 ## 免责声明 此工具仅用于**教育和防御性安全目的**。请使用它来分析您拥有或拥有明确分析权限的电子邮件。 *作为 SOC 分析师投资组合项目的一部分而构建。*
标签:API集成, DKIM验证, DMARC验证, DNS验证, IOC提取, IP检查, SIEM集成, SOC工具, SPF验证, 二进制发布, 可观测性, 域名检查, 威胁情报, 子域名暴力破解, 开发者工具, 开源工具, 漏洞发现, 结构化报告, 网络安全, 自动化检测, 逆向工具, 邮件安全, 邮件解析, 钓鱼邮件分析, 隐私保护, 风险评分