gurs1mr4n/PhishGuard
GitHub: gurs1mr4n/PhishGuard
PhishGuard 是一个基于 Python 的钓鱼邮件分析工具,帮助 SOC 分析师自动化提取威胁指标、验证邮件认证并评估风险。
Stars: 1 | Forks: 0
# PhishGuard
   
## 功能描述
给定一个 `.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验证, 二进制发布, 可观测性, 域名检查, 威胁情报, 子域名暴力破解, 开发者工具, 开源工具, 漏洞发现, 结构化报告, 网络安全, 自动化检测, 逆向工具, 邮件安全, 邮件解析, 钓鱼邮件分析, 隐私保护, 风险评分