marichu-kt/email-header-forensics-lab

GitHub: marichu-kt/email-header-forensics-lab

一款用于电子邮件头部可视化检查、取证分析以及在受控环境中生成仿真测试邮件的桌面应用程序。

Stars: 4 | Forks: 0

# 📧 电子邮件头部取证实验室

Application Icon

**一款用于电子邮件头部检查、取证审查和受控身份验证测试的桌面应用程序** *加载邮件,生成用于实验室场景的逼真头部集合,审查投递链,并验证常见的电子邮件身份验证信号。* ![应用程序图标](https://raw.githubusercontent.com/marichu-kt/email-header-forensics-lab/main/images/demo.png) ## 概述 **Email Header Forensics Lab** 是一款桌面应用程序,专为需要在受控环境中**检查、理解和测试电子邮件头部**的分析师、防御者、学生和研究人员而构建。 该应用程序并未仅关注原始头部文本,而是提供了一种可视化工作流,用于: - 打开和查看 `.eml` 文件 - 根据常见的邮件客户端配置文件生成逼真的头部集合 - 编辑和重新组织 `Received` 头部 - 针对当前邮件运行取证检查 - 保存可重复使用的模板用于反复测试 - 加载示例邮件用于学习和比较 - 在授权环境中通过 SMTP 发送测试邮件 该项目特别适用于: - 取证分析 - 蓝队训练 - 电子邮件身份验证故障排除 - 安全实验室模拟 - 分析师培训和演示 ## 应用程序的功能 在其核心,该应用程序管理着一个电子邮件对象,并允许您通过 GUI 处理其头部。 您可以: 1. **加载现有的 `.eml` 文件** 2. **在文本视图中检查所有当前的头部** 3. **使用选定的配置文件生成逼真的头部集合** 4. **审查与身份验证相关的字段,如 SPF、DKIM 和 DMARC** 5. **可视化地编辑 `Received` 链** 6. **运行取证验证检查** 7. **将当前的头部集合保存为可重复使用的模板** 8. **打开示例邮件以研究逼真的格式** 9. **通过 SMTP 发送邮件,用于获批的内部测试** ## 主要功能 ### 1. 打开、查看和保存 `.eml` 文件 该应用程序可以加载现有的电子邮件文件,并在中央文本区域显示所有当前的头部。 这使得以下操作变得简单: - 检查原始头部值 - 在一处查看邮件元数据 - 比较原始版本和修改后的版本 - 将当前邮件保存回新的 `.eml` 文件 这对取证审查和可重复的测试工作流都很有帮助。 ### 2. 基于配置文件的头部生成 该工具的主要功能之一是能够根据常见的电子邮件客户端和平台生成逼真的头部集合。 生成器包含以下配置文件: - Gmail Web - Gmail App Android - Gmail App iOS - Outlook Desktop - Outlook Web - Outlook Mobile - iPhone with iCloud - iPhone with Gmail - Exchange On-Premise - Zimbra 应用配置文件时,应用程序会构建一组逼真的头部组合,例如: - `From` - `To` - `Subject` - `Date` - `Message-ID` - `Received` - `Authentication-Results` - `DKIM-Signature` - `X-Mailer` - 其他特定于平台的 `X-*` 头部 这使得该项目可用于: - 分析师培训 - 了解不同邮件生态系统如何构建头部 - 为检测工程创建实验室场景 - 将可疑邮件与预期的客户端模式进行比较 ### 3. 身份验证结果模拟 配置文件生成器还可以模拟不同的身份验证结果,以供实验室使用。 可用的模式包括: - `none` - `spf_fail` - `dkim_fail` - `dmarc_fail` - `mixed` 这允许您研究在不同条件下与身份验证相关的头部可能是什么样子,以及您的分析工作流如何响应它们。 此功能旨在用于: - 培训分析师 - 验证内部规则 - 演示发件人域与身份验证结果之间的关系 - 在研究过程中重现受控的失败场景 ### 4. 取证分析引擎 该应用程序包含一个内置的取证分析器,可审查当前的头部并生成结构化的结果,例如 **PASS**、**WARN** 和 **FAIL**。 分析器检查的问题包括: - 缺少必需的头部 - `Message-ID` 和 `From` 域不匹配 - `Received` 链中存在可疑或私有 IP 地址 - 头部日期的顺序不一致 - SPF、DKIM 或 DMARC 结果中的身份验证失败 - 异常的 `X-Mailer` 值 这为分析师提供了一种快速识别可疑模式的方法,而无需手动检查每个字段。 在以下情况下,取证选项卡非常有用: - 对可疑邮件进行分类 - 教导学生如何阅读头部 - 测试修改后的头部如何影响验证结果 - 记录邮件看起来合法或可疑的原因 ### 5. Received 头部编辑器 **Received** 选项卡提供了一种可视化处理投递链的方法。 您无需手动编辑所有内容,您可以: - 列出所有当前的 `Received` 头部 - 添加新头部 - 删除选定的头部 - 上移头部 - 下移头部 这非常有用,因为 `Received` 链通常反映了邮件在基础架构中传输的过程。 在实验室或教育环境中,这有助于用户: - 了解邮件路由在头部中的表现 - 比较正常和异常的投递链 - 创建用于培训的受控示例 - 针对不同的路由模式测试取证逻辑 ### 6. 模板和活动管理 该应用程序允许您将当前的头部集合保存为可重复使用的模板。 通过此系统,您可以: - 将模板保存到 `campaigns` 文件夹 - 列出以前保存的模板 - 将模板重新加载到应用程序中 - 删除不再需要的模板 还有一个插入 `X-Campaign-ID` 头部的选项,这对于组织内部演练或在测试数据集中识别特定场景非常有用。 当您需要以下内容时,应用程序的这部分非常有用: - 可重复的实验室案例 - 可重复使用的演示场景 - 用于团队培训的一致样本集 - 用于内部使用的有组织的头部库 ### 7. 示例电子邮件库 如果项目包含带有 `.eml` 文件的 `examples/` 目录,则应用程序可以直接从 GUI 列出并加载它们。 此功能可用于: - 新分析师入职培训 - 查看示例头部结构 - 比较多种邮件类型 - 了解不同平台如何格式化电子邮件元数据 用户无需从头开始构建每个场景,而是可以从准备好的示例邮件开始并立即进行研究。 ### 8. 用于受控测试的 SMTP 发送 该应用程序包含一个 SMTP 发送选项卡,以便在获批的环境中发送当前邮件。 SMTP 工作流支持: - SMTP 服务器和端口配置 - 用户名和密码字段 - 可选 TLS - 可选发送延迟 - 可选中继列表输入 这对于内部验证和受控测试非常有用,团队希望在这些测试中查看邮件在通过真实 SMTP 路径传递后的行为。 此功能应仅在以下环境中使用: - 自有基础架构 - 批准的安全实验室 - 内部测试环境 - 授权的培训演练 ### 9. 使用 CustomTkinter 构建的桌面界面 GUI 使用 **CustomTkinter** 构建,并组织到单独的选项卡中,以便工作流的每个部分都更容易理解。 主界面包括: - 顶部横幅 - 用于加载、保存、刷新和验证的工具栏 - 中央头部查看器 - 用于配置文件、SMTP、取证分析、Received 链编辑、模板和示例的选项卡 - 用于反馈消息的状态栏 与在文本编辑器中手动编辑原始电子邮件文件相比,这种结构使应用程序更易于使用。 ## 应用程序选项卡说明 ### Profiles (配置文件) 使用此选项卡可根据选定的电子邮件客户端配置文件生成逼真的头部集合。 您需要提供: - 发件人姓名 - 发件人电子邮件 - 收件人电子邮件 - 主题 - 身份验证错误模式 然后应用程序生成相应的头部并更新当前邮件。 ### SMTP Send (SMTP 发送) 使用此选项卡可在授权环境中通过 SMTP 服务器发送当前邮件。 您可以配置: - 服务器 - 端口 - 用户名 - 密码 - TLS - 延迟 - 可选中继 ### Forensic (取证) 使用此选项卡可对当前头部运行结构化分析。 结果将显示在带有可视化状态指示器的可读文本面板中。 ### Received (已接收) 使用此选项卡可检查和重新排列 `Received` 头部。 这是用于了解邮件路由和邮件跃点顺序的最有用的选项卡之一。 ### Campaigns (活动) 使用此选项卡可保存或加载可重复使用的模板,并可选择插入 `X-Campaign-ID`。 ### Examples (示例) 使用此选项卡可从 `examples/` 目录加载 `.eml` 样本。 ## 项目结构 典型的存储库布局如下所示: ``` . ├── main_gui.py ├── modifier.py ├── realistic_generator.py ├── forensic_analyzer.py ├── campaign_manager.py ├── app_icon.ico ├── campaigns/ ├── examples/ └── requirements.txt ``` ### 文件作用 #### `main_gui.py` 包含图形界面并将所有功能连接在一起。 #### `modifier.py` 用作加载电子邮件、编辑头部、应用配置文件、通过 SMTP 发送、运行取证分析以及处理模板的主控制器。 #### `realistic_generator.py` 生成逼真的头部集合、`Received` 链、`Message-ID` 值、身份验证结果以及特定于配置文件的元数据。 #### `forensic_analyzer.py` 实现验证系统使用的取证检查。 #### `campaign_manager.py` 处理模板的保存、加载、列出和删除。 ## 安装说明 ### 前置条件 - Python 3.8 或更高版本 - `pip` ### 从源代码安装 ``` git clone https://github.com/marichu-kt/email-header-forensics-lab.git cd email-header-forensics-lab pip install -r requirements.txt ``` ### 主要依赖项 - `customtkinter` 用于桌面界面 - `pillow` 用于图像相关支持 如果您在 Windows 上使用 **MSYS2/MinGW** 的 Python,请使用以下命令安装 Pillow: ``` pacman -S mingw-w64-x86_64-python-pillow ``` ## 运行说明 ### 启动应用程序 ``` python main_gui.py ``` ### 典型工作流 1. 启动应用程序 2. 加载 `.eml` 文件或从 **Profiles** 选项卡创建新场景 3. 在主文本区域中查看生成或加载的头部 4. 如果需要,调整 `Received` 链 5. 运行 **Validate** 或打开 **Forensic** 选项卡 6. 将邮件保存为新的 `.eml` 文件 7. 可选择将结果存储为可重复使用的模板 8. 可选择在获批的测试环境中通过 SMTP 发送邮件 ## 构建独立的 Windows 可执行文件 要将应用程序打包为单个 Windows 可执行文件: ``` pip install pyinstaller pyinstaller --onefile --windowed --icon=app_icon.ico --add-data "campaigns;campaigns" --add-data "examples;examples" main_gui.py ``` 生成的可执行文件将放置在 `dist/` 目录中。 ### 备注 - `--add-data` 将 `campaigns` 和 `examples` 文件夹包含在构建中 - `app_icon.ico` 用作可执行文件图标 - 如果您想要不同的视觉标识,可以替换图标文件 ## 为什么这个项目很有用 这个项目之所以有用,是因为电子邮件头部通常很难手动阅读、比较和解释。 通过将该过程转变为可视化工作流,该应用程序帮助用户: - 了解邮件客户端如何格式化头部 - 更轻松地检查投递链 - 更快地发现可疑的元数据 - 创建可重复的测试用例 - 使用受控示例培训他人 - 在实验室中验证电子邮件身份验证场景 ## 道德与法律声明 本软件仅适用于: - 教育 - 防御性安全研究 - 取证分析 - 受控环境中的授权测试 严禁用于: - 未经授权的冒充 - 网络钓鱼 - 绕过安全控制 - 欺诈或非法活动
标签:DKIM验证, DMARC验证, EML文件解析, GUI应用, Python开发, SMTP测试, SPF验证, 威胁情报, 安全分析工具, 安全实验室, 开发者工具, 数字取证, 桌面应用, 欺诈防护, 电子邮件取证, 网络安全, 网络安全教育, 自动化脚本, 蓝军工具, 蓝队训练, 身份认证测试, 逆向工具, 邮件头分析, 邮件安全, 钓鱼邮件分析, 隐私保护