一个受 Petya 勒索软件启发的概念验证型 Bootkit 和 UEFI 启动应用程序,使用 Assembly、C 和 C++ 编写
如果您觉得这个项目有帮助或具有参考价值,我将非常感谢您为仓库点一个 ⭐。您的支持将是我继续改进这个工具的巨大动力。
OpenPetya 是一个教育项目,旨在研究 bootkit 和底层勒索软件的内部运作方式。
该项目专注于:
OpenPetya 并非旨在精确复刻 Petya 或 NotPetya。相反,它是一个为学习和研究目的而设计的简化概念验证。
值得一提的是,OpenPetya 不包含命令与控制(C2)功能。此外,OpenPetya 在加密后将明文 MFT 备份数据存储在隐藏扇区中。这一行为是出于教育目的而特意设计的,因为与该项目中实现的核心引导加载程序和加密机制相比,这些功能相对简单。不过,您仍然可以根据需要修改或移除这些功能。
注意:在 2.0.0 版本中,我选择不为 UEFI 实现该功能,因为担心它可能被滥用而破坏现代 Windows 操作系统。
在过去的几个月里,我一直在研究:
在研究 Petya 和 NotPetya 时,我意识到许多在线资源只是简要解释整体工作流程,而没有演示底层启动过程实际上是如何运作的。
此外,许多现有的 Petya 相关项目依赖于提取的引导加载程序二进制文件或修改过的原始组件,而不是从头实现逻辑。
因此,我决定开发 OpenPetya 作为一个实践项目,以理解:
该项目也是我对 bootkit、底层恶意软件和操作系统内部机制持续研究的一部分。
相关文章:
在 2.0.0 版本中,我对现代 bootkit 的工作方式产生了好奇(如 Alex Matrosov、Eugene Rodionov 和 Sergey Bratus 所著《Rootkits and Bootkits》最后几章所述)。因此,我决定从头开始学习 EFI 应用程序编程。随后我发现这比我预期的要困难得多(尤其是在调试方面)。
无论如何,在编写了一些简单的 EFI 应用程序之后,我发布了 OpenPetya v2.0.0!
自定义 MBR
OpenPetya 使用自定义主引导记录(MBR)来加载第二阶段负载。
自定义第二阶段引导加载程序
第二阶段引导加载程序包含该项目的核心功能,包括:
保护模式切换
引导加载程序在执行更高级逻辑之前,会从 16 位实模式切换到 32 位保护模式。
MFT 加密
与原始 Petya 类似,OpenPetya 使用 Salsa20 加密 NTFS 主文件表(MFT)的关键部分。
密码验证
OpenPetya 在解密前验证输入的密码,以防止因无效密钥导致的不可逆损坏。
自动恢复
一旦输入正确的密码:
OpenPetya v2.0.0 不包含自定义 EFI 应用程序(petya.efi)中的 MFT 加密功能。它提供一个简单的登录面板,并在密码正确时执行链式加载。
我选择不在 EFI 应用程序中实现 MFT 加密,因为它可能被滥用而破坏现代 Windows 操作系统,而我在 v1.0.0 中实现了该功能,因为威胁行为者已在 2016 年演示过这一技术。
OpenPetya.exe用户模式安装程序和控制器应用程序。
功能:
mbr.bin自定义主引导记录(MBR)代码,负责:
stage2.binOpenPetya 的核心负载。
职责:
petya.efiOpenPetya 的核心负载。
功能:
OpenPetya(MBR + 引导加载程序)的工作流程总结如下。
OpenPetya.exe 安装 OpenPetya 并选择一个密码。NtRaiseHardError)机制重启。与原始 Petya 勒索软件不同,OpenPetya 不会尝试用虚假的 CHKDSK 屏幕或社会工程行为来欺骗用户。该项目纯粹为教育和研究目的而设计。
OpenPetya(UEFI)的工作流程总结如下:
您可以使用以下命令构建该项目。
make # 构建 mbr.bin 和 stage2.bin
./build.sh # 构建 OpenPetya.exe
警告:请在您的虚拟机中执行!
以下命令展示了如何安装自定义 MBR 和第二阶段引导加载程序(需要管理员权限):
传统 BIOS:
OpenPetya.exe --list
OpenPetya.exe --drive 0 --install mbr.bin stage2.bin
UEFI:
OpenPetya.exe --is-admin
OpenPetya.exe --firmware
OpenPetya.exe --uefi-secure
OpenPetya.exe --drive 0 --uefi-install petya.efi
OpenPetya.exe --drive 0 --uefi-restore
关于以下内容的详细解释:
NtRaiseHardError)已记录在这篇文章中。
该项目纯粹为教育和研究目的而开发。
OpenPetya 的目标是研究:
请不要将该项目用于非法活动,或针对您不拥有或未经明确授权测试的系统。
作者对任何滥用本软件的行为不承担任何责任。
感谢您查看这个项目。欢迎提供反馈和建议。