11 Punkte von GN⁺ 2025-03-16 | 1 Kommentare | Auf WhatsApp teilen
  • Dem Autor gelang es, die Daten eines mit Akira-Ransomware infizierten Unternehmens ohne Zahlung von Lösegeld wiederherzustellen
  • Der im Wiederherstellungsprozess verwendete Quellcode ist auf GitHub verfügbar
  • Von Akira-Ransomware existieren verschiedene Varianten; die hier behandelte Variante ist seit Ende 2023 aktiv
  • In früheren Versionen (vor Mitte 2023) gab es einen Bug, der Avast die Entwicklung eines Entschlüsselungs-Tools ermöglichte, doch nachdem dies veröffentlicht wurde, aktualisierten die Angreifer die Verschlüsselung
  • Hashes von Ransomware-Samples sind auf GitHub einsehbar

Zusammenfassung der Wiederherstellung von Dateien der Akira-Ransomware (Linux/ESXI-Variante 2024)

Lösungsansatz

Erste Analyse

  • Die Ransomware verwendet die aktuelle Zeit im Nanosekundenbereich als Seed
  • Da Linux-Dateiänderungszeiten eine Auflösung im Nanosekundenbereich haben, wurde die Möglichkeit zur Rekonstruktion des Seeds erkannt
  • Auf Basis der Zeitstempel modifizierter Dateien wurde ein Brute-Force-Ansatz versucht

Komplexer Verschlüsselungsprozess

  • Die Ransomware verwendet 4 Seed-Werte (Zeit im Nanosekundenbereich)
  • Die Schlüsselerzeugung verarbeitet den SHA-256-Hash 1500-mal iterativ
  • Das VMware-VMFS-Dateisystem speichert Änderungszeiten nur mit Sekundenauflösung
  • Durch die multithreadbasierte Verschlüsselung ist eine exakte Rekonstruktion des Timings schwierig

Reverse Engineering

  • Der Code ist in C++ geschrieben und dadurch schwer zu analysieren, aber nicht obfuskiert
  • Anhand von Fehlermeldungen wurde die Verwendung der Nettle-Bibliothek bestätigt
  • Der Zufallsgenerator basiert auf dem Yarrow256-Algorithmus und verwendet folgenden Code
void generate_random(char *buffer, int size)  
{  
    uint64_t t = get_current_time_nanosecond();  
    char seed[32];  
    snprintf(seed, sizeof(seed), "%lld", t);  
    struct yarrow256_ctx ctx;  
    yarrow256_init(&ctx, 0, NULL);  
    yarrow256_seed(&ctx, strlen(seed), seed);  
    yarrow256_random(&ctx, size, buffer);   
}  
  • Bei der Schlüsselerzeugung wird generate_random() viermal aufgerufen
    • chacha8_key (32 Byte)
    • chacha8_nonce (16 Byte)
    • kcipher2_key (16 Byte) × 2

Prüfung der Brute-Force-Möglichkeit

Hauptstrategie

  • Zwei Zeitstempel (t3, t4) erzeugen, in Seeds umwandeln und daraus Zufallszahlen generieren
  • Die Zufallszahlen als KCipher2-Schlüssel und IV zur Verschlüsselung verwenden und das Ergebnis mit der verschlüsselten Datei vergleichen

Leistungsanalyse

  • Die Umwandlung von 100 Millionen Zeitstempeln dauert 3 Stunden (CPU-basiert)
  • Mit GPU-Einsatz verkürzt sich die Umwandlungszeit auf unter 6 Minuten
  • Für einen Bereich von 1 Sekunde gibt es etwa 500 Billionen mögliche Paare
  • Nach GPU-Optimierung sind auf einer RTX 3090 1,5 Milliarden Verschlüsselungsvorgänge pro Sekunde möglich

VMware-Dateitypen und Wiederherstellungsstrategie

FLAT-VMDK

  • Die ersten 8 Byte einer VMDK lassen sich aus dem Bootloader wiederherstellen
  • Die OS-Informationen können aus der VMX-Datei entnommen werden; dafür muss dasselbe OS installiert werden

SESPARSE

  • Das Dateikopfmuster wurde im QEMU-Quellcode bestätigt
  • Der Header beginnt mit 0x00000000cafebabe

Sonstige Dateien

  • In NVRAM-Dateien, VMX-Dateien, Log-Dateien usw. lassen sich frühe Zeitstempel finden

Wiederherstellung der Zeitstempel

ESXi-Logs

  • In ESXi-Logs werden Ausführungszeiten mit Millisekundenauflösung aufgezeichnet
  • Falls keine Millisekunden-Logs vorhanden sind, kann von Zeiten mit Sekundenauflösung aus geschätzt werden

Änderungszeiten des Dateisystems

  • Bei ESXi ist wegen der Sekundenauflösung eine genaue Zeitschätzung schwierig

Multithread-Verschlüsselung

  • Die Dateiverschlüsselung wird parallel entsprechend der Anzahl der CPU-Kerne verarbeitet
  • Die Änderungszeit einer Datei liegt nahe am Zeitpunkt, zu dem die Verschlüsselung abgeschlossen wurde

Implementierung des Brute-Force-Tools

KCipher2-Algorithmus

  • Es wird keine Standardversion von KCipher2 verwendet, sondern eine modifizierte Version (einschließlich Endian-Verarbeitung)
  • Zur GPU-Optimierung wurde CUDA eingesetzt

Leistungsverbesserungen

  • Leistungssteigerung durch Einsatz von Shared Memory
  • Höhere Geschwindigkeit durch Entfernung von Speicherkopiervorgängen
  • Parallele Dateiverarbeitung implementiert → etwa 1,5 Milliarden Vorgänge pro Sekunde möglich

RTX 3090 vs RTX 4090

  • Die RTX 4090 ist etwa 2,3-mal schneller7 Tage Laufzeit
  • RTX 3090 → etwa 16 Tage Laufzeit

Schritte der Wiederherstellung

1. Zeitstempel extrahieren

  • Änderungszeiten mit dem Befehl stat prüfen
  • Startzeit der Ausführung aus ESXi-Logs extrahieren

2. Verschlüsselte Daten extrahieren

  • Verschlüsselte Blöcke aus VMDK, SESPARSE usw. extrahieren

3. Servergeschwindigkeit messen

  • Das Tool timing-patch auf GitHub verwenden

4. Arbeit aufteilen

  • Konfigurationsdatei erstellen und aufteilen
  • So einrichten, dass parallele Ausführung auf GPUs möglich ist

5. GPU mieten und ausführen

  • Runpod → Kosten von etwa 116 US-Dollar für 7 Tage
  • Vast.ai → günstiger, aber je nach Gerätezustand sind Geschwindigkeitsunterschiede möglich

6. KCipher2-Brute-Force ausführen

./akira-bruteforce run2 config.json  

7. Chacha8-Brute-Force ausführen

  • Bei großen Dateien erforderlich

8. Entschlüsselung ausführen

./decrypt filename.vmdk <t1> <t2> <t3> <t4>  

Leistungsergebnisse

  • RTX 3090 → 1,5 Milliarden Vorgänge pro Sekunde
  • RTX 4090 → 3,5 Milliarden Vorgänge pro Sekunde
  • Mit 16 RTX 4090 → Wiederherstellung in unter 10 Stunden möglich

Wiederherstellungschancen und Grenzen

  • Die Erfolgswahrscheinlichkeit einer Ransomware-Wiederherstellung liegt bei unter 0,1 %
  • Wenn bestimmte Bedingungen erfüllt sind, besteht eine Wiederherstellungschance
  • Je nach Ransomware-Variante kann sich die Verschlüsselungsmethode ändern

Fazit

  • Die Wiederherstellung nach Ransomware ist sehr schwierig, kann unter bestimmten Bedingungen aber erfolgreich sein
  • GPU-basierte Brute-Force ist das zentrale Werkzeug
  • Der Autor hat den Wiederherstellungscode als Open Source veröffentlicht, kann aber kaum zusätzliche Unterstützung leisten

Zusätzliche Hinweise

  • Siehe die Datei README.md auf GitHub
  • Der Code wurde auf die Situation eines bestimmten Kunden zugeschnitten und ist kein allgemeines Werkzeug
  • Für das Erstellen von Konfigurationsdateien, Timing-Anpassungen usw. sind Kenntnisse auf Systemadministrator-Niveau erforderlich

1 Kommentare

 
GN⁺ 2025-03-16
Hacker-News-Kommentare
  • Jemand erwähnte die „begrenzte Lebensdauer“ der Ransomware. Das führte dazu, dass ein Kommentar gelöscht wurde, der meinte, dies habe keine Auswirkungen auf andere Opfer, aber es wurde eine Antwort darauf gepostet.

    • Das ist Fehlinformation. Begrenzt ist die Anzahl der Angriffe, bei denen Opfer ihre Dateien wiederherstellen können.
    • Wenn man denkt, der Autor sei die einzige Person, die diesen Angriff verwendet hat, ist das ebenfalls falsch.
    • Empfohlen wurde das Buch The Ransomware Hunting Team. Es ist ein interessantes Buch über die Hintergründe, wie Opfer ihre Dateien wiederherstellen.
  • Es gab eine Frage dazu, warum Zeitstempel verwendet werden.

    • Nicht falsch verstehen: Ich bin froh, dass sie es nicht tun, aber es wirkt wie ein Anfängerfehler.
    • Ich frage mich, ob mir etwas entgangen ist oder ob es einfach mehr Menschen gibt, die sich nicht für Kriminalität entscheiden.
  • Dieser Beitrag ließ sich gut lesen und enthielt genau die richtige Menge an Details, um die Neugier auf den Ablauf zu befriedigen.

    • Großes Lob an den Autor dafür, dass er diesen Prozess entwickelt und interessante Details geliefert hat.
  • Wenn Anwendungen standardmäßig sandboxed wären, würde das Ransomware-Problem geringer ausfallen.

  • „Ich habe geschätzt, dass meine Mini-PC-CPU 100.000 Zeitstempel pro Sekunde mit Zufallsbytes berechnen kann (unter Nutzung aller Kerne)“

    • Ich hätte gern mehr Details zu dem Mini-PC: Prozessor, RAM, Preis und ob er lüfterlos ist.
  • Ich frage mich, warum die ersten 65k mit KCipher2 verschlüsselt werden und der Rest mit etwas anderem. Das wirkt seltsam.

  • „Ich erwarte, dass die Angreifer die Verschlüsselung erneut ändern werden, nachdem dies veröffentlicht wurde“

    • Falls sie das bemerken, frage ich mich, warum man es dann veröffentlicht. Einen so detaillierten Decryptor aus Internetruhm bereitzustellen, wirkt unverantwortlich.
    • Es ist interessant zu lesen und intellektuell anregend, aber es wäre für die Gemeinschaft insgesamt besser, die Details nicht öffentlich zu machen.
  • „Jedes Mal, wenn ich in meinem indonesischen Blog über Ransomware schreibe, bitten mich viele Leute um Hilfe bei Ransomware“

    • Allein zu prüfen, ob eine Ransomware wiederherstellbar ist, kann schon Stunden an Aufwand und Zeit kosten (z. B. wenn die Malware obfuskiert/geschützt ist).
    • Daher die Meinung: Bitte nicht darum bitten, dass es kostenlos gemacht wird.
    • Darauf die Meinung: Dann sollte man eben Geld dafür verlangen.