dbshakil/Phishing-email-analyzer-artifact-first-decision-support

GitHub: dbshakil/Phishing-email-analyzer-artifact-first-decision-support

一款面向蓝队分析师的钓鱼邮件辅助分析平台,整合本地启发式分析与外部威胁情报,以工件优先方式呈现证据,辅助人工研判决策。

Stars: 0 | Forks: 0

# 钓鱼邮件分析器:以工件优先的决策支持 一个基于 Python/Flask 的 Web 应用程序,用于分析电子邮件以检测钓鱼攻击。它将本地启发式分析与外部威胁情报服务相结合,为分析师提供以工件优先的决策支持视图,而非单一的武断风险评分。 ## 功能特性 ### 本地分析 - **发件人分析** – 伪造域名、可疑 TLD、滥用免费邮箱 - **主题分析** – 紧急性关键词、威胁性语言、钓鱼模式 - **正文分析** – 可疑关键词、个人身份信息 (PII) 请求、语法问题 - **URL 分析** – URL 缩短服务、基于 IP 的链接、可疑子域名、HTTP 链接 - **附件分析** – 危险文件类型、可疑扩展名、SHA-256 哈希计算 ### 威胁情报集成 - **VirusTotal** – 域名信誉、URL 扫描以及附件的文件哈希查询 - **URLhaus (Abuse.ch)** – 实时发件人域名黑名单检查(无需 API 密钥) - **Browserless** – 无头浏览器截图及邮件中发现 URL 的内容预览 ### AI 辅助分析 - **Ollama** – 本地 LLM(默认:`qwen2-vl:7b`)以自然语言总结分析结果 ### 分析师决策支持 - 需决策模式:无自动判定——分析师需审查阻断指标、依据及建议操作 - 证据快照将所有工件结果(VT、黑名单、截图)集中展示 - 多语言报告导出 - 分析历史 / 记录标签页 ## 项目结构 ``` . ├── web_app.py # Flask routes and entry point ├── phish_analyzer.py # Core analysis engine ├── external_services.py # VT, URLhaus, Browserless, Ollama integrations ├── header_analyzer.py # Raw email header parsing ├── config.py # All configuration constants ├── cli.py # Command-line interface ├── batch_analyze.py # Batch analysis of multiple emails ├── requirements.txt ├── .env.example # Environment variable template ├── templates/ # Jinja2 HTML templates ├── static/ # CSS / JS assets ├── records/ # Saved analysis records (auto-created) ├── sample-emails/ # .eml sample files for testing └── test_files/ # Sample attachments for upload testing ``` ## 安装 有关完整的环境设置说明,请参阅 [setup.md](setup.md)。 ### 快速设置(推荐) ``` git clone cd phishing-email-analyzer-artifact-first-decision-support chmod +x setup.sh ./setup.sh ``` ### 手动设置 ``` git clone cd phishing-email-analyzer-artifact-first-decision-support python -m venv .venv source .venv/bin/activate # Windows: .venv\Scripts\activate pip install -r requirements.txt ``` ## 配置 将 `.env.example` 复制为 `.env` 并填写您需要的值: ``` cp .env.example .env ``` | 变量 | 默认值 | 描述 | |---|---|---| | `VIRUSTOTAL_API_KEY` | *(VT 必需)* | VirusTotal v3 API 密钥 | | `OLLAMA_BASE_URL` | `http://localhost:11434` | Ollama API 基础 URL | | `OLLAMA_MODEL` | `qwen2-vl:7b` | Ollama 模型名称 | | `OLLAMA_TIMEOUT` | `30` | Ollama 请求超时时间(秒) | | `BROWSERLESS_BASE_URL` | `http://localhost:3000` | Browserless 实例 URL | | `BROWSERLESS_API_KEY` | *(可选)* | 如有需要,填入 Browserless API 密钥 | | `BROWSERLESS_TIMEOUT` | `15` | 截图请求超时时间(秒) | | `MAX_ATTACHMENT_SIZE_MB` | `50` | 最大上传附件大小 | | `LOG_LEVEL` | `INFO` | Python 日志级别 | VirusTotal 重试行为可在 `config.py` 中调整: - `VIRUSTOTAL_MAX_RETRIES`(默认 2) - `VIRUSTOTAL_RETRY_BACKOFF`(默认 0.75 秒) - `VIRUSTOTAL_RETRY_JITTER`(默认 0.3) - `VIRUSTOTAL_FAILURE_CACHE_TTL`(默认 180 秒) ## 运行 Web 应用 ``` source .venv/bin/activate python web_app.py ``` 然后在浏览器中打开 **http://127.0.0.1:8080**。 Web 界面允许您: - 粘贴发件人、主题和正文文本 - 上传附件文件(计算哈希并在 VirusTotal 中检查) - 提供原始电子邮件标头 - 切换外部服务(Ollama、Browserless、VirusTotal、URLhaus) - 查看带有逐项工件证据的分析师决策支持页面 - 导出完整的文本报告 ## 命令行界面 从 JSON 文件分析单封电子邮件: ``` python cli.py --file email.json ``` 交互模式(手动输入字段): ``` python cli.py --interactive ``` 将报告保存到文件: ``` python cli.py --file email.json --output report.txt ``` JSON 输出: ``` python cli.py --file email.json --json-output ``` 批量分析文件夹中的 `.eml` 文件: ``` python batch_analyze.py --dir sample-emails/ ``` ## JSON 电子邮件输入格式 ``` { "sender": "support@example.com", "subject": "Urgent: Account Verification Required", "body": "Dear User, please verify your account immediately...", "headers": { "Received": "from mail.example.com ...", "X-Mailer": "PHPMailer" }, "attachments": ["invoice.pdf"] } ``` `headers` 和 `attachments` 为可选项。 ## Python API ``` from phish_analyzer import PhishingAnalyzer analyzer = PhishingAnalyzer(use_external_services=True) email = { 'sender': 'unknown@suspicious.xyz', 'subject': 'You have won a prize!', 'body': 'Click here to claim your reward: http://bit.ly/abc123', 'attachments': [] } results = analyzer.analyze_email(email) report = analyzer.generate_report(results) print(report) ``` ## 外部服务设置 ### VirusTotal 1. 在 https://www.virustotal.com 注册并获取免费的 API 密钥。 2. 在您的 `.env` 文件中设置 `VIRUSTOTAL_API_KEY`。 ### Ollama (本地 LLM) 1. 从 https://ollama.com 安装 Ollama。 2. 拉取模型:`ollama pull qwen2-vl:7b` 3. Ollama 默认运行在 `http://localhost:11434`。 ### Browserless (无头浏览器) 运行本地 Browserless 容器: ``` docker run -p 3000:3000 ghcr.io/browserless/chromium ``` 或者使用托管的 Browserless 实例,并设置 `BROWSERLESS_BASE_URL` 和 `BROWSERLESS_API_KEY`。 ### URLhaus 无需设置——该集成使用公共的 Abuse.ch URLhaus API。 ## 依赖项 主要软件包(完整列表请参见 `requirements.txt`): | 软件包 | 用途 | |---|---| | Flask | Web 框架 | | requests | 用于外部 API 的 HTTP 客户端 | | python-magic | 附件的文件类型检测 | | beautifulsoup4 | HTML 正文解析 | | python-dotenv | `.env` 文件加载 | ## 许可证 MIT
标签:Abuse.ch, AI风险缓解, Ask搜索, Browserless, Flask, LLM评估, Ollama, PII检测, Python, qwen2-vl, SHA-256, SOC工具, Splunk, URLhaus, URL安全分析, VirusTotal, Web应用程序, 人工智能辅助分析, 决策支持, 域名欺骗检测, 多元语言报告, 威胁情报, 威胁语言检测, 安全分析师, 开发者工具, 批量分析, 文件哈希, 无后门, 无头浏览器, 本地启发式分析, 本地大语言模型, 漏洞发现, 电子邮件安全, 网络安全, 网络钓鱼检测, 请求拦截, 逆向工具, 钓鱼邮件分析, 附件沙箱分析, 隐私保护, 黑白名单