J5osully/email-security-analyzer
GitHub: J5osully/email-security-analyzer
一款Bash脚本工具,用于自动化钓鱼邮件的初始分析,提供威胁情报查询和风险评分。
Stars: 0 | Forks: 0
# 电子邮件安全分析器
一款基于 Bash 的钓鱼邮件分类工具,专为在混合 Windows/Linux 环境中工作的安全分析师设计。它将钓鱼调查的初始步骤自动化,包括邮件头解析、IoC 提取、威胁情报查询、风险评分以及 KQL 狩猎查询,全部集成到单一命令中。
## 功能特性
- **多格式输入** — 支持 `.eml`、`.msg` 或粘贴的原始邮件头
- **邮件头分析** — SPF、DKIM、DMARC 结果,检测 From/Reply-To/Return-Path 域名不匹配
- **IoC 提取** — 从 Received 链中提取发送 IP,从邮件头和正文中提取 URL、附件名称
- **威胁情报** — 针对 IP 和 URL 使用 AbuseIPDB 和 VirusTotal 进行查询(需要 API 密钥)
- **风险评分** — 0–100 分评分及贡献因素分解
- **附件标记** — 检测可疑扩展名(exe、ps1、vbs、docm 等)
- **Markdown 报告** — 保存分析师报告,并内置 KQL 狩猎查询
- **KQL 查询** — 可直接用于在您的租户中进行狩猎的 Sentinel/Defender 查询
## 前置条件
### 必需项
```
sudo apt install -y jq curl python3
```
### 验证
```
for tool in jq curl python3 msgconvert; do
command -v $tool &>/dev/null && echo "✓ $tool" || echo "✗ $tool — NOT FOUND"
done
```
## API 密钥(免费层级)
两项服务均提供免费 API 层级。
### AbuseIPDB
1. 在 [abuseipdb.com](https://www.abuseipdb.com) 注册
2. 前往 **Account -> API**
3. 创建一个密钥
### VirusTotal
1. 在 [virustotal.com](https://www.virustotal.com) 注册
2. 前往 **Profile -> API Key**
3. 复制您的密钥
### 设置密钥
添加到您的 `~/.bashrc` 文件末尾,以在会话间持久保存(推荐):
```
export ABUSEIPDB_KEY="your_abuseipdb_key_here"
export VIRUSTOTAL_KEY="your_virustotal_key_here"
source ~/.bashrc
```
或为单次运行内联导出(不推荐):
```
ABUSEIPDB_KEY="your_key" VIRUSTOTAL_KEY="your_key" ./phishing-analyzer.sh suspicious.eml
```
## 安装说明
```
git clone https://github.com/J5osully/email-security-analyzer.git
cd phishing-analyzer
chmod +x phishing-analyzer.sh
```
## 使用方法
```
# 分析一个 .eml 文件 (自动检测)
./phishing-analyzer.sh suspicious.eml
# 分析一个从 Outlook 导出的 .msg 文件
./phishing-analyzer.sh exported.msg
# 手动指定类型
./phishing-analyzer.sh --type eml suspicious.eml
# 交互式粘贴原始邮件头
./phishing-analyzer.sh --paste
# 通过文件管道传输邮件头
cat headers.txt | ./phishing-analyzer.sh --paste
# 自定义输出目录
./phishing-analyzer.sh --outdir ~/investigations suspicious.eml
```
## 输出结果
### 终端摘要
彩色编码的输出涵盖:
- 邮件元数据
- 带标志的认证结果
- 带威胁情报评分的发送 IP
- 带 VirusTotal 结果的提取 URL
- 附件列表及可疑扩展名警告
- 风险评分与结论
### Markdown 报告
保存至 `./phishing_reports/phishing__.md`
包含终端摘要中的所有内容,并附加:
- 预置的用于 Sentinel / Defender 365 的 KQL 查询
- 分析师备注部分
- 推荐行动清单
## 每份报告包含的 KQL 查询
每份生成的报告都包含预填充了所分析邮件 IoC 的 Sentinel/Defender KQL 查询:
| 查询 | 目的 |
|---|---|
| 按发件人狩猎 | 查找来自相同发件人地址的所有邮件 |
| 按主题狩猎 | 在租户中查找主题匹配的邮件 |
| 按发送 IP 狩猎 | 识别来自标记 IP 地址的所有邮件 |
| 狩猎点击的 URL | 查找点击了提取 URL 的用户 |
| 狩猎已投递邮件 | 查找过去 30 天内投递的类似邮件 |
## 风险评分
| 因素 | 加分 |
|---|---|
| SPF 失败 | +25 |
| SPF 软失败 | +15 |
| DKIM 失败/无 | +20 |
| DMARC 失败/无 | +20 |
| From/Reply-To 域名不匹配 | +20 |
| From/Return-Path 域名不匹配 | +20 |
| 可疑附件扩展名 | +30 |
| 存在 URL | +10 |
| 评分 | 结论 |
|---|---|
| 70–100 | 高风险 |
| 40–69 | 可疑 |
| 0–39 | 低风险 |
## 可疑附件扩展名
以下扩展名会被自动标记:
`.exe` `.bat` `.ps1` `.vbs` `.js` `.jar` `.zip` `.rar` `.7z` `.iso` `.lnk` `.hta` `.docm` `.xlsm` `.pptm`
## GCC-H / M365 备注
- KQL 查询兼容 **Microsoft Sentinel** 和 **Microsoft Defender XDR** 的高级狩猎
- 查询使用 M365 Defender 中可用的 `EmailEvents` 和 `UrlClickEvents` 表
- 对于 GCC-H 租户,请确保您的 Sentinel 工作区通过 M365 Defender 连接器连接到您的 Defender XDR 实例
- 安全链接阻止列表更新可通过 **Microsoft 365 Defender 门户 → 策略 → 安全链接** 进行
## NIST 800-171 映射
| 控制项 | 描述 | 本工具如何提供帮助 |
|---|---|---|
| 3.6.1 | 建立 IR 能力 | 自动化事件响应的初始分类阶段 |
| 3.6.2 | 跟踪和报告事件 | 为每个事件生成有记录的证据 |
| 3.13.1 | 边界保护 | 浮现出用于防火墙阻止的 IP/域名 |
| 3.14.3 | 攻击告警 | 提供用于持续检测的 KQL 查询 |
## 项目结构
```
phishing-analyzer/
- phishing-analyzer.sh # Main script
- README.md # This file
- phishing_reports/ # Generated reports (created on first run)
└── phishing__.md
```
## 发展路线图
- [ ] 用于 VT 文件查询的附件 SHA256 哈希
- [ ] 集成 URLScan.io 进行 URL 截图/分析
- [ ] 报告中 HTML 正文链接的脱敏处理
- [ ] 处理多封邮件的批处理模式
- [ ] 集成 Microsoft Graph API 以直接提取邮箱邮件
_为在混合 Windows/Linux 和 GCC-H M365 环境中工作的安全分析师打造。_
标签:Azure Sentinel, bash脚本, curl调用, DKIM签名检查, DMARC策略评估, IoC提取, IP地址信誉, jq使用, KQL查询语言, Markdown报告, Microsoft Defender, python3依赖, shell编程, SPF验证, URL安全扫描, 威胁情报API, 威胁情报集成, 威胁狩猎查询, 安全事件响应, 安全分析师工具, 应用安全, 电子邮件安全, 网络安全自动化, 自动化调查, 邮件头部解析, 邮件安全分析, 钓鱼攻击防御, 钓鱼邮件分析, 附件扩展名检测, 风险评分系统