Lors d'une visite de Pâques chez son beau-père, leo-stone a trouvé une famille en difficulté face au ransomware Petya. Quelqu'un postulait à un emploi et l'hôte avait vraiment besoin de lire son CV ; il a donc saisi le mot de passe administrateur — et au lieu des fichiers, il a obtenu le crâne rouge de Petya, signe que la table de fichiers maîtresse du disque avait été chiffrée. La seule issue proposée était de payer pour obtenir une clé. L'auteur a formulé l'alternative sans détour : « payer une rançon n'a rien de bien difficile » ; le défi consistait à forcer le verrou sans payer.
Plutôt que d'attaquer le chiffrement de front, leo-stone s'est attaqué à la manière dont Petya vérifie lui-même une clé saisie. Il a réimplémenté le hachage de vérification et publié l'essentiel : Salsa sur des mots de 16 bits au lieu de 32, exécutant dix tours (Salsa10), et non vingt (Salsa20). Les données de test restent sur le disque de la victime — un nonce de 8 octets au secteur 54 et un secteur de vérification chiffré de 512 octets au secteur 55. Son programme en Go lit ces 512 octets, applique un XOR avec 0x37 sur les mots intéressants pour récupérer la sortie cible du hachage, lit le nonce et lance un solveur génétique sur le problème.
Le solveur a trouvé la clé en quelques secondes — de 10 à 30 dans son propre cas — et il l'a publiée sous forme du dépôt open source hack-petya avec des instructions simples : extraire le nonce et le secteur de vérification du disque chiffré, les enregistrer sous les noms nonce.txt et src.txt, exécuter le programme, attendre, puis utiliser la clé, idéalement sur une image disque dans une machine virtuelle. Il s'est excusé pour le code brouillon (« j'étais un peu pressé ») et a corrigé la bibliothèque génétique après qu'elle a paniqué sur des lectures concurrentes de map sous Go 1.6. Le lancement a recueilli 451 points et 79 commentaires sur Hacker News le 11 avril 2016 ; le dépôt affiche 612 étoiles et 80 forks.
Réimplémenter la vérification de clé de Petya, puis laisser un solveur génétique trouver la clé — sans payer de rançon
Il a attaqué la vérification de clé plutôt que le chiffrement : le secteur de vérification se trouve sur le disque même de la victime, ce qui transforme la conception de Petya en un oracle testable que n'importe qui pouvait reconstruire
Un solveur génétique a rendu la recherche rapide : les clés candidates ont évolué contre le hachage réimplémenté jusqu'à ce que la bonne émerge, en 10 à 30 secondes au lieu d'une attente par force brute
Le correctif a été diffusé gratuitement avec des étapes de récupération précises, afin que d'autres victimes puissent déchiffrer sans payer et sans envoyer leurs disques où que ce soit
La publication sur GitHub et Hacker News a donné de la portée à l'outil : 451 points et 79 commentaires au lancement, et un dépôt qui affiche encore 612 étoiles et 80 forks
Un verrou qui doit vérifier sa propre clé laisse un oracle du côté de la victime : reconstruire la vérification et chercher contre elle au lieu de payer, puis diffuser l'outil pour que le correctif se propage.
leo-stone a récupéré sa propre clé en 10 à 30 secondes et a publié l'outil ouvertement. Le lancement sur Hacker News le 11 avril 2016 a recueilli 451 points et 79 commentaires, et le dépôt tel qu'archivé affiche 612 étoiles, 80 forks et 34 observateurs. La page ne consigne aucune affirmation concernant des variantes ultérieures de Petya ; ce qu'elle laisse derrière elle, c'est le schéma réutilisable — extraire les données de vérification présentes sur le disque, reconstruire la vérification et laisser une recherche trouver la clé.
VÉRIFIEZ LES SOURCES
Les sources
- leo-stone/hack-petya — search key to restore petya encrypted mft GitHub · github.com
- Hack-petya mission accomplished — Petya ransomware decryptor (Hacker News discussion) Hacker News · news.ycombinator.com ·