
Un bootkit de prueba de concepto y una aplicación de arranque UEFI inspirados en el ransomware Petya, escritos en Assembly, C y C++.
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.
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:
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.
Durante los últimos meses, he estado estudiando:
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:
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:
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!
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:
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:
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.
OpenPetya.exeAplicación instaladora y controladora en modo usuario.
Funciones:
mbr.binCódigo personalizado del Registro de Arranque Maestro (MBR) responsable de:
stage2.binLa carga útil central de OpenPetya.
Responsabilidades:
petya.efiLa carga útil central de OpenPetya.
Funciones:
El flujo de trabajo de OpenPetya (MBR + Bootloader) se resume a continuación.
OpenPetya.exe y eligen una contraseña.NtRaiseHardError) proporcionado por el instalador.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.
El flujo de trabajo de OpenPetya (UEFI) se resume a continuación:
Puedes compilar el proyecto usando los comandos a continuación.
make # Compila mbr.bin y stage2.bin
./build.sh # Compila OpenPetya.exe
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
Explicaciones detalladas sobre:
NtRaiseHardError)Están documentadas en este artículo.
Este proyecto fue desarrollado puramente con fines educativos y de investigación.
El objetivo de OpenPetya es estudiar:
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.
Gracias por revisar este proyecto. Los comentarios y sugerencias son bienvenidos.