useru1k/email-analysis

GitHub: useru1k/email-analysis

一个用于检测钓鱼和恶意邮件的邮件分析工具,通过威胁评分和安全检查识别风险。

Stars: 2 | Forks: 3

# 用于检测钓鱼与恶意邮件的邮件分析系统 一个具备威胁评分、URL/附件安全检查及全面安全分析的邮件分析工具,用于检测钓鱼和恶意邮件。 ## 功能 - **威胁评分计算**:基于多个安全因素,进行综合的 0-100 威胁评分 - **邮件认证分析**:SPF、DKIM 与 DMARC 验证 - **IP 分析**: - 地理位置追踪 - 集成 AbuseIPDB 进行黑名单检查 - IP 信誉评分 - **URL 分析**: - 短链接展开 - 集成 VirusTotal 扫描 URL 与文件哈希 - 可疑链接检测 - 使用 `tldextract`、`python-whois` 和 `dnspython` 进行域名情报分析(WHOIS、DNS 记录) - **附件分析**: - 高风险文件类型检测 - 集成 MalwareBazaar 进行恶意软件检测 - SHA-256 哈希计算 - **本地哈希缓存**:存储之前的 VirusTotal 结果(加速重复扫描) - **恶意软件报告搜索**:自动查找并链接到已标记文件的分析报告 - **邮件头分析**:提取并验证邮件头 - **双模式运行**:在线模式(需API集成)与离线模式 ## 安装说明 ### 前置条件 - Python 3.8 或更高版本 - pip(Python 包安装器) - Git(用于克隆仓库) ### 分步安装指南 1. **克隆仓库** ``` git clone https://github.com/useru1k/email-analysis.git cd email-analysis ``` 2. **创建虚拟环境**(推荐) Windows 系统: ``` python -m venv venv venv\Scripts\activate ``` Linux/Mac 系统: ``` python3 -m venv venv source venv/bin/activate ``` 3. **安装依赖项** ``` pip install -r app/requirement.txt ``` 4. **配置环境变量**(可选,用于在线模式) 在根目录下创建一个 `.env` 文件: ``` VIRUSTOTAL_API_KEY=your_virustotal_api_key_here ABUSEIPDB_API_KEY=your_abuseipdb_api_key_here IPAPI_URL=http://ip-api.com/json/ ``` **注意**: - VirusTotal API 密钥可选,但建议用于 URL 和文件哈希扫描 - AbuseIPDB API 密钥可选,但建议用于 IP 信誉检查 - 即使没有 API 密钥,您也可以使用应用程序的离线模式 ## 运行应用程序 ### 运行测试 项目包含一个小型的 pytest 测试套件,用于测试核心服务功能。 ``` pip install pytest # or use your environment's dependency manager pytest -q ``` ### 启动服务器 **运行 FastAPI 服务器** ``` uvicorn app.main:app --reload ``` 或指定特定主机和端口: ``` uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload ``` **访问应用程序** - 打开您的网页浏览器 - 访问地址:`http://localhost:8000` ## 威胁评分计算 威胁评分在 0-100 的尺度上计算,分数越高表示威胁程度越大。该评分系统会评估多个安全因素: ## 配置 ### 环境变量 | 变量名 | 描述 | 是否必需 | 默认值 | |--------|------|----------|--------| | `VIRUSTOTAL_API_KEY` | 用于 URL 和文件(哈希查找)扫描的 VirusTotal API 密钥 | 是 | 空 | | `ABUSEIPDB_API_KEY` | 用于 IP 信誉检查的 AbuseIPDB API 密钥 | 否 | 空 | | `GOOGLE_SEARCH_API_KEY` | 用于恶意软件报告搜索的 Google 自定义搜索 API 密钥 | 否 | 空 | | `GOOGLE_SEARCH_CX` | 用于恶意软件报告搜索的 Google 自定义搜索引擎 ID | 否 | 空 | | `IPAPI_URL` | IP 地理位置 API 端点 | 否 | `http://ip-api.com/json/` | | `HASH_CACHE_PATH` | 存储/检索缓存哈希报告的文件路径 | 否 | `hash_cache.json` | ### 分析模式 - **在线模式**: - 展开缩短的 URL - 通过 AbuseIPDB 检查 IP - 使用 VirusTotal 扫描 URL 和附件哈希 - 执行 WHOIS 和 DNS 查询 - 完整功能需要 API 密钥 - **离线模式**: - 分析邮件结构和头部 - 检测高风险附件和链接 - 基于本地分析计算威胁评分 - 无需外部 API 调用 ## 项目结构 ``` email-analysis/ ├── app/ │ ├── __pycache__/ │ ├── main.py # FastAPI application and routes (thin, orchestrates services) │ ├── config.py # application configuration and settings │ ├── services/ # business logic modules (parsers, analysis, scoring) │ │ ├── parser.py │ │ ├── ip_analysis.py │ │ ├── url_analysis.py │ │ ├── attachment_analysis.py │ │ ├── auth_analysis.py │ │ └── threat_scoring.py │ ├── requirement.txt # Python dependencies │ ├── static/ │ │ └── style.css # Application styles │ ├── templates/ │ │ ├── index.html # Main upload interface │ │ └── result.html # Analysis results page │ └── venv/ # Virtual environment ├── sample/ # Sample email files for testing ├── .env # Environment variables (create this) └── README.md # This file ``` ## 使用的技术 - **FastAPI**:用于构建 API 的现代 Web 框架 - **Jinja2**:用于 HTML 渲染的模板引擎 - **dnspython**:用于域名查询的 DNS 工具包 - **requests/httpx**:用于 API 集成的 HTTP 客户端库 - **tldextract**:从 URL 中提取域名 - **python-dotenv**:环境变量管理 ## 外部集成 - **VirusTotal**:URL 和域名信誉检查 - **AbuseIPDB**:IP 地址信誉和滥用报告 - **ip-api.com**:IP 地理位置服务 - **Whois/DNS**:使用 `python-whois` 和 `dnspython` 进行本地查询 ## 使用示例 ### 分析邮件文件 1. 将邮件保存为 `.eml` 格式 2. 通过网页界面上传文件 3. 选择分析模式 4. 查看全面的威胁分析和评分 ### 分析原始邮件内容 1. 复制原始邮件头和正文 2. 粘贴到网页界面的文本区域 3. 选择分析模式 4. 即时获取安全分析结果 ## 贡献 欢迎贡献!请随时提交 Pull Request。 ## 免责声明 本工具仅用于安全分析和教育目的。请务必通过多个来源核实结果,并在处理潜在恶意邮件时保持谨慎。
标签:运行时操纵, 逆向工具