
OpenPetya v2.0.0
Un bootkit de prueba de concepto y una aplicación de arranque UEFI inspirados en el ransomware Petya, escritos en Assembly, C y C++.
OpenPetya
Un bootkit de Prueba de Concepto y una aplicación de arranque UEFI inspirados en el ransomware Petya, escritos en Assembly, C y C++
Si encuentras este proyecto útil o informativo, agradecería mucho una ⭐ en el repositorio. Tu apoyo sería una gran motivación para que siga mejorando esta herramienta.
Descripción General
OpenPetya es un proyecto educativo diseñado para estudiar cómo funcionan internamente los bootkits y el ransomware de bajo nivel.
El proyecto se centra en:
- carga de arranque MBR personalizada
- proceso de arranque en múltiples etapas
- transición al Modo Protegido
- cifrado de la Tabla de Archivos Maestra (MFT) de NTFS
- criptografía basada en Salsa20
- validación de contraseña y flujo de restauración
- programación UEFI
OpenPetya NO pretende ser una reimplementación exacta de Petya o NotPetya. En cambio, es una Prueba de Concepto simplificada diseñada con fines educativos y de investigación.
Cabe mencionar que OpenPetya no incluye funcionalidad de Comando y Control (C2). Además, OpenPetya almacena datos de respaldo de la MFT en texto plano dentro de sectores ocultos después del cifrado. Este comportamiento está diseñado intencionalmente con fines educativos porque esas características son relativamente triviales en comparación con los mecanismos centrales del bootloader y criptográficos implementados en este proyecto. Sin embargo, puedes modificar o eliminar estas características si es necesario.
Nota: En la versión 2.0.0, decidí no implementarlo para UEFI por la preocupación de que pudiera ser utilizado indebidamente para dañar sistemas operativos Windows modernos.
Motivación del Proyecto
v1.0.0
Durante los últimos meses, he estado estudiando:
- análisis de malware
- bootloaders
- rootkits y bootkits
- internals de Windows
- fundamentos de sistemas operativos
- programación en Assembly de bajo nivel
Mientras investigaba Petya y NotPetya, me di cuenta de que muchos recursos en línea solo explican brevemente el flujo de trabajo general sin demostrar cómo funciona realmente el proceso de arranque subyacente.
Además, muchos proyectos existentes relacionados con Petya dependen de binarios de bootloader extraídos o de componentes originales modificados en lugar de implementar la lógica desde cero.
Por lo tanto, decidí desarrollar OpenPetya como un proyecto práctico para comprender:
- cómo funcionan los bootkits MBR personalizados
- cómo operan los bootloaders de etapa 2
- cómo funcionan los flujos de cifrado de disco
- cómo se implementan los mecanismos de validación de contraseña y restauración
El proyecto también forma parte de mi investigación en curso sobre bootkits, malware de bajo nivel e internals de sistemas operativos.
Artículos relacionados:
- Analizando Petya
- Analizando NotPetya
- MBR y Bootloader Simples
- OpenBootloader
- Notas sobre Rootkits y Bootkits
- Notas sobre Lenguaje Assembly para PC
- Notas sobre Criptografía Seria
v2.0.0
En la versión 2.0.0, sentí curiosidad por saber cómo funcionan los bootkits modernos (como se cubre en los últimos capítulos de "Rootkits and Bootkits" de Alex Matrosov, Eugene Rodionov y Sergey Bratus). Por lo tanto, decidí estudiar la programación de aplicaciones EFI desde cero. Luego descubrí que era mucho más difícil de lo que esperaba (en cuanto a depuración).
De todos modos, después de escribir algunas aplicaciones EFI simples, ¡publiqué OpenPetya v2.0.0!
Características
v1.0.0
-
MBR Personalizado
OpenPetya utiliza un Registro de Arranque Maestro (MBR) personalizado para cargar la carga útil de etapa 2.
-
Bootloader Personalizado de Etapa 2
El bootloader de etapa 2 contiene la funcionalidad central del proyecto, incluyendo:
- cifrado/descifrado Salsa20
- validación de contraseña
- lógica de restauración
- interfaz de usuario
-
Transición al Modo Protegido
El bootloader cambia del Modo Real de 16 bits al Modo Protegido de 32 bits antes de ejecutar la lógica de nivel superior.
-
Cifrado de MFT
Similar al Petya original, OpenPetya cifra partes críticas de la Tabla de Archivos Maestra (MFT) de NTFS usando Salsa20.
-
Validación de Contraseña
OpenPetya valida la contraseña ingresada antes del descifrado para evitar corrupción irreversible causada por claves inválidas.
-
Restauración Automática
Una vez que se ingresa la contraseña correcta:
- se restauran los datos cifrados
- se recupera la cadena de arranque original
- OpenPetya se elimina automáticamente
v2.0.0
OpenPetya v2.0.0 NO incluye cifrado de MFT en la aplicación EFI personalizada (petya.efi). Ofrece un panel de inicio de sesión simple y realiza chainloading una vez que la contraseña es correcta.
Decidí no implementar el cifrado de MFT en la aplicación EFI porque podría ser utilizado indebidamente para dañar sistemas operativos Windows modernos, mientras que lo implementé en v1.0.0 ya que los actores de amenazas ya lo habían demostrado en 2016.
Componentes
OpenPetya.exe
Aplicación instaladora y controladora en modo usuario.
Funciones:
- selección de unidad
- instalación
- activación de reinicio
- interfaz de utilidades
mbr.bin
Código personalizado del Registro de Arranque Maestro (MBR) responsable de:
- carga de etapa 2
- ejecución temprana del arranque
stage2.bin
La carga útil central de OpenPetya.
Responsabilidades:
- transición al Modo Protegido
- operaciones criptográficas Salsa20
- cifrado/descifrado de MFT
- validación de contraseña
- restauración
- interfaz en tiempo de arranque
petya.efi
La carga útil central de OpenPetya.
Funciones:
- validación de contraseña
- chainloading
Flujo de Trabajo
BIOS
El flujo de trabajo de OpenPetya (MBR + Bootloader) se resume a continuación.
- Los usuarios instalan OpenPetya usando
OpenPetya.exey eligen una contraseña. - La máquina se reinicia manualmente o mediante el mecanismo BSOD (a través de
NtRaiseHardError) proporcionado por el instalador. - Durante el arranque, el MBR personalizado carga la carga útil de etapa 2.
- La carga útil de etapa 2 cambia la CPU al Modo Protegido.
- OpenPetya cifra partes seleccionadas de la Tabla de Archivos Maestra (MFT) de NTFS.
- Después del cifrado, la máquina se reinicia nuevamente.
- Una interfaz en tiempo de arranque solicita la contraseña al usuario.
- Si la contraseña es correcta:
- se descifran los datos cifrados
- se restaura la cadena de arranque original
- OpenPetya se elimina automáticamente
- Windows arranca normalmente nuevamente.
A diferencia del ransomware Petya original, OpenPetya no intenta engañar a los usuarios con pantallas falsas de CHKDSK o comportamiento de ingeniería social. El proyecto está diseñado puramente con fines educativos y de investigación.
UEFI
El flujo de trabajo de OpenPetya (UEFI) se resume a continuación:
- Una interfaz en tiempo de arranque solicita la contraseña al usuario.
- Si la contraseña es correcta:
- el sistema realiza chainloading
- Los usuarios eliminan el programa EFI personalizado manualmente
Compilación
Puedes compilar el proyecto usando los comandos a continuación.
make # Compila mbr.bin y stage2.bin
./build.sh # Compila OpenPetya.exe
Uso
Advertencia: ¡Ejecútalo en tu máquina virtual!
Los comandos a continuación muestran cómo instalar el MBR personalizado y el bootloader de etapa 2 (se requieren privilegios de Administrador):
BIOS heredado:
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
Notas Técnicas
Explicaciones detalladas sobre:
- proceso de arranque MBR
- Modo Real y Modo Protegido
- implementación de Salsa20
- flujo de cifrado de MFT
- diseño de bootkits
- más discusiones sobre Petya y NotPetya
- cómo usar APIs no documentadas (como
NtRaiseHardError)
Están documentadas en este artículo.
Aviso Legal
Este proyecto fue desarrollado puramente con fines educativos y de investigación.
El objetivo de OpenPetya es estudiar:
- bootkits
- internals de sistemas operativos
- técnicas de malware de bajo nivel
- arquitectura de bootloaders
NO utilices este proyecto para actividades ilegales o contra sistemas que no poseas o para los que no tengas permiso explícito de prueba.
El autor NO es responsable de cualquier uso indebido de este software.
Demostración (Windows 7)
Capturas de Pantalla
Demo en Tiempo de Ejecución
Planes Futuros
- Flujo de recuperación mejorado
- Mejor análisis de NTFS
- Simulación más precisa del comportamiento de Petya
- Investigación adicional sobre bootkits
- Modo Gráfico a pantalla completa
- Soporte para Linux
Agradecimientos
Gracias por revisar este proyecto. Los comentarios y sugerencias son bienvenidos.