iss4cf0ng/OpenPetya

GitHub: iss4cf0ng/OpenPetya

一個受Petya勒索軟體啟發、從零實作啟動工具包核心機制的教育性概念驗證專案,用於研究自訂MBR、保護模式切換及NTFS MFT加密的底層運作。

Stars: 237 | Forks: 43

# OpenPetya 一个受 Petya 勒索软件启发的概念验证启动工具包,使用汇编、C 和 C++ 编写

# 概述 OpenPetya 是一个教育项目,旨在研究启动工具包和低级勒索软件的内部运作方式。

该项目专注于: - 自定义 MBR 启动加载 - 多阶段启动过程 - 保护模式切换 - NTFS 主文件表(MFT)加密 - 基于 Salsa20 的加密技术 - 密码验证与恢复流程 OpenPetya **不** 是 Petya 或 NotPetya 的精确复制品,而是一个简化的概念验证,专为学习和研究目的设计。 值得一提的是,OpenPetya 不包含命令与控制(C2)功能。此外,OpenPetya 在加密后将明文 MFT 备份数据存储在隐藏扇区中。这一行为是特意为教育目的设计的,因为这些功能相对于本项目实现的核心启动加载器和加密机制来说相对简单。不过,你仍然可以根据需要修改或移除这些功能。 # 项目动机 在过去的几个月里,我一直在研究: - 恶意软件分析 - 启动加载器 - 根工具包和启动工具包 - Windows 内部机制 - 操作系统基础 - 低级汇编编程 在研究 Petya 和 NotPetya 的过程中,我意识到许多在线资源只是简要介绍整体工作流程,而没有实际演示底层启动过程是如何运作的。 此外,许多现有的 Petya 相关项目依赖于提取的启动加载器二进制文件或修改过的原始组件,而不是从头实现逻辑。 因此,我决定开发 OpenPetya 作为一个实践项目,以理解: - 自定义 MBR 启动工具包的工作原理 - 第二阶段启动加载器的运作方式 - 磁盘加密工作流程的实现 - 密码验证与恢复机制的实现 该项目也是我正在进行中的启动工具包、低级恶意软件和操作系统内部机制研究的一部分。 相关文章: - [分析 Petya](https://iss4cf0ng.github.io/2026/04/12/2026-4-12-Petya/) - [分析 NotPetya](https://iss4cf0ng.github.io/2026/04/13/2026-4-13-NotPetya/) - [简单 MBR 和启动加载器](https://iss4cf0ng.github.io/2026/04/08/2026-4-8-MbrAndBootLoader/) - [OpenBootloader](https://iss4cf0ng.github.io/2026/05/10/2026-5-10-OpenBootloader/) - [根工具包和启动工具包笔记](https://iss4cf0ng.github.io/2026/04/28/2026-4-28-RootkitAndBootkit/) - [PC 汇编语言笔记](https://iss4cf0ng.github.io/2026/04/21/2026-4-21-PcAsmLang/) - [严肃密码学笔记](https://iss4cf0ng.github.io/2026/05/16/2026-5-16-SeriousCryptography/) # 功能特性 - **自定义 MBR** OpenPetya 使用自定义的主引导记录(MBR)来加载第二阶段负载。 - **自定义第二阶段启动加载器** 第二阶段启动加载器包含项目的核心功能,包括: - Salsa20 加密/解密 - 密码验证 - 恢复逻辑 - 用户界面 - **保护模式切换** 启动加载器在执行高级逻辑之前,从 16 位实模式切换到 32 位保护模式。 - **MFT 加密** 与原始 Petya 类似,OpenPetya 使用 Salsa20 加密 NTFS 主文件表(MFT)的关键部分。 - **密码验证** OpenPetya 在解密前验证输入的密码,以防止因无效密钥导致不可逆的损坏。 - **自动恢复** 一旦输入正确密码: - 加密数据被恢复 - 原始启动链被恢复 - OpenPetya 自动移除自身 # 组件 ## `OpenPetya.exe` 用户模式安装器和控制器应用程序。 功能: - 磁盘选择 - 安装 - 触发重启 - 工具界面 ## `mbr.bin` 自定义主引导记录(MBR)代码,负责: - 加载第二阶段 - 早期启动执行 ## `stage2.bin` OpenPetya 的核心负载。 职责: - 保护模式切换 - Salsa20 加密操作 - MFT 加密/解密 - 密码验证 - 恢复 - 启动时界面 # 工作流程 OpenPetya 的工作流程总结如下。 1. 用户使用 `OpenPetya.exe` 安装 OpenPetya,并选择一个密码。 2. 机器通过手动重启或安装程序提供的蓝屏死机机制(通过 `NtRaiseHardError`)重启。 3. 引导过程中,自定义 MBR 加载第二阶段负载。 4. 第二阶段负载将 CPU 切换到保护模式。 5. OpenPetya 加密 NTFS 主文件表(MFT)的选定部分。 6. 加密完成后,机器再次重启。 7. 启动时界面提示用户输入密码。 8. 如果密码正确: - 加密数据被解密 - 原始启动链被恢复 - OpenPetya 自动移除自身 9. Windows 正常启动。 # 构建 你可以使用以下命令构建项目。 ``` make # Build mbr.bin and stage2.bin ./build.exe # Build OpenPetya.exe ``` # 使用方法

以下命令展示了如何安装自定义 MBR 和第二阶段启动加载器(需要管理员权限): ``` OpenPetya.exe --list OpenPetya.exe --drive 0 --install mbr.bin stage2.bin ``` # 技术说明 关于以下内容的详细解释: - MBR 启动过程 - 实模式和保护模式 - Salsa20 实现 - MFT 加密工作流程 - 启动工具包设计 - 关于 Petya 和 NotPetya 的更多讨论 - 如何使用未文档化的 API(例如 `NtRaiseHardError`) 已在 [本文](https://iss4cf0ng.github.io/2026/05/23/2026-5-23-OpenPetya/) 中记录。 # 免责声明 本项目纯粹出于教育和研究目的开发。 OpenPetya 的目标是研究: - 启动工具包 - 操作系统内部机制 - 低级恶意软件技术 - 启动加载器架构 **不得**将本项目用于非法活动,或针对你不拥有或未经明确授权的系统。 作者对任何滥用本软件的行为**概不负责**。 # 演示(Windows 7) ## 截图

## 运行时演示

# 未来计划 - 改进的恢复工作流程 - 更好的 NTFS 解析 - 更精确的 Petya 行为模拟 - UEFI 实验 - 额外的启动工具包研究 - 全屏图形模式 - Windows 10 支持 # 致谢 感谢你关注本项目。欢迎反馈和建议。
标签:C++, MBR, MFT加密, NTFS, Petya, Salsa20, Windows内部, Windows引导, 保护模式, 勒索软件, 备份, 多阶段启动, 客户端加密, 密码验证, 引导区病毒, 引导程序, 快速连接, 恶意分析, 操作系统基础, 教育项目, 数据恢复, 数据擦除, 概念验证, 汇编语言, 磁盘加密, 自动回退, 自定义MBR, 隐藏扇区