Durante una visita de Pascua a su suegro, leo-stone encontró a una familia en apuros por el ransomware Petya. Alguien estaba solicitando un empleo y el anfitrión realmente necesitaba leer su CV, así que introdujo la contraseña de administrador, y en lugar de los archivos apareció la calavera roja de Petya, la señal de que la tabla maestra de archivos del disco había sido cifrada. La salida ofrecida era pagar por una clave. El autor planteó la alternativa sin rodeos: «pagar el rescate no es un desafío tan grande»; el desafío era romper el candado sin pagar.

En lugar de atacar el cifrado de frente, leo-stone se centró en cómo Petya verifica una clave introducida. Reimplementó el hash de verificación y publicó lo esencial: Salsa sobre palabras de 16 bits en lugar de 32, ejecutando diez rondas (Salsa10), no veinte (Salsa20). Los datos de prueba permanecen en el disco de la víctima: un nonce de 8 bytes en el sector 54 y un sector de verificación cifrado de 512 bytes en el sector 55. Su programa en Go lee esos 512 bytes, aplica XOR a las palabras relevantes con 0x37 para recuperar la salida objetivo del hash, lee el nonce y lanza un solucionador genético contra el problema.

El solucionador encontró la clave en segundos —de 10 a 30 en su propio caso— y la publicó como el repositorio de código abierto hack-petya con instrucciones sencillas: extraer el nonce y el sector de verificación del disco cifrado, guardarlos como nonce.txt y src.txt, ejecutar el programa, esperar y luego usar la clave, idealmente en una imagen de disco en una VM. Se disculpó por el código desordenado («tenía algo de prisa») y parcheó la biblioteca genética después de que entrara en pánico por lecturas concurrentes de mapas en Go 1.6. El lanzamiento atrajo 451 puntos y 79 comentarios en Hacker News el 11 de abril de 2016; el repositorio muestra 612 estrellas y 80 bifurcaciones.

Reimplementar la verificación de clave de Petya y luego dejar que un solucionador genético encontrara la clave, sin pagar rescate

Atacó la verificación de clave en lugar del cifrado: el sector de verificación está en el propio disco de la víctima, lo que convierte el diseño de Petya en un oráculo comprobable que cualquiera podía reconstruir

Un solucionador genético hizo rápida la búsqueda: las claves candidatas evolucionaron contra el hash reimplementado hasta que surgió la correcta, en 10-30 segundos en lugar de una espera de fuerza bruta

La solución se distribuyó gratis con pasos de recuperación exactos, para que otras víctimas pudieran descifrar sin pagar y sin enviar sus discos a ningún lado

Publicar en GitHub y Hacker News dio alcance a la herramienta: 451 puntos y 79 comentarios en el lanzamiento, y un repositorio que aún muestra 612 estrellas y 80 bifurcaciones

Un candado que debe verificar su propia clave deja un oráculo del lado de la víctima: reconstruir la verificación y buscar contra ella en lugar de pagar, y luego regalar la herramienta para que la solución se propague.

leo-stone recuperó su propia clave en 10-30 segundos y publicó la herramienta abiertamente. El lanzamiento en Hacker News el 11 de abril de 2016 atrajo 451 puntos y 79 comentarios, y el repositorio tal como está archivado muestra 612 estrellas, 80 bifurcaciones y 34 observadores. La página no registra ninguna afirmación sobre variantes posteriores de Petya; lo que deja es el patrón reutilizable: extraer los datos de verificación del disco, reconstruir la verificación y dejar que una búsqueda encuentre la clave.

CONSULTA LAS PRUEBAS

Las fuentes

  1. leo-stone/hack-petya — search key to restore petya encrypted mft GitHub · github.com
  2. Hack-petya mission accomplished — Petya ransomware decryptor (Hacker News discussion) Hacker News · news.ycombinator.com ·