Spora - der Wurm, der auch Ransomware ist

19.01.2017
G DATA Blog

Spora verbreitet sich über USB-Speicher, so wie Gamarue und Dinihou (auch bekannt als Jenxcus). Aber: Spora verschlüsselt auch Dateien. Diese Raffinesse könnte es glatt zum neuen Locky machen. Wir analysieren Sporas Infektions- und Verschlüsselungsprozess. Außerdem zeigen wir, wie es statistische Werte über die verschlüsselten Dateien benutzt, um die Höhe des Lösegeldes zu berechnen.

HTA-Datei als Anhang einer E-Mail, ein gewöhnlicher Infektionsvektor

Das Erpresserschreiben von Spora wurde zuerst von den Betreibern von ID Ransomware gesichtet und vom MalwareHunterTeam über Twitter bekanntgemacht. Viele Malware-Forscher und Twitter-Nutzer zeigten sich beeindruckt von der gut aussehenden und professionell gemachten Erpresser-Webseite und dem dazu gehörigen Erpresserschreiben. Nach unseren Erfahrungen sind die meisten solcher Webseiten schlecht gemacht. Die erste Schaddatei wurde von einem Forenmitglied von Bleepingcomputer bereitgestellt und im Support-Thread für Spora besprochen.

Beim vorliegenden Sample handelt es sich um eine HTA-Anwendung mit verschleiertem VBScript. Laut Bleepingcomputer wird sie in einem ZIP-Archiv als E-Mai-Anhang verschickt. Einsendungen bei VirusTotal zeigen den Dateinamen Скан-копия _ 10 января 2017г. Составлено и подписано главным бухгалтером. Экспорт из 1С.a01e743_рdf.hta.

Die HTA-Datei schreibt eine JScript-Datei in %TEMP%\close.js und führt diese aus. Die JScript-Datei ist wiederum der Dropper für ein Word-Dokument, welches in %TEMP%\doc_6d518e.docx gespeichert wird sowie für eine PE-Datei, die unter %TEMP%\81063163ded.exe gespeichert wird. Beide Dateien werden vom Skript close.js geöffnet. Das Word-Dokument wird mit einem Parameter gestartet, welcher das Programmfenster im Vordergrund öffnet; das Fenster der PE-Datei wird hingegen versteckt. Die .EXE-Datei hingegen wird versteckt geöffnet. Das Dokument wird also mit der Standardanwendung für .DOCX-Dateien geöffnet (z.B. Microsoft Word), es wird allerdings sofort eine Fehlermeldung angezeigt, die darauf hinweist, dass die Datei beschädigt ist. Der Name der PE-Datei 81063163ded.exe wirkt zufallsgeneriert, ist aber im Dropper hartkodiert. Die PE-Datei wurde mit UPX gepackt und enthält die eigentliche Payload.

Verhaltensweise als Wurm ähnelt Dinihou und Gamarue

Zwar galt ZCryptor bereits als eine Kombination aus Wurm und Ransomware, da er eine autorun.inf benutzt, allerdings geht Spora noch einen Schritt weiter und bedient sich ähnlicher Techniken wie Gamarue und Dinihou. Die Funktionalität der autorun.inf wurde bereits vor sieben Jahren per Update unter Windows XP und Windows Vista deaktiviert und in Windows 7 entfernt. Daher ist diese Art der Verbreitung durch Speichermedien für Malware nicht mehr effektiv. Stattdessen setzt Spora ebenso wie Dinihou und Gamarue auf die Verwendung von Verknüpfungen (Dateiendung .LNK in Windows), um sich zu verbreiten.

Spora fügt nun allen Dateien und Ordnern auf dem Desktop sowie den Hauptverzeichnissen von Speichermedien und dem Systemlaufwerk das Dateiattribut „Hidden“ (versteckt) hinzu. Diese Dateien und Ordner sind mit den Standardeinstellungen im Windows Explorer nicht mehr sichtbar. Um keinen Verdacht zu erregen, ersetzt Spora die versteckten Elemente durch gleichnamige Verknüpfungen mit den gleichen Icons. Beim Öffnen verhalten sich die .LNK Ersatzdateien unauffällig, allerdings wird neben der Originaldatei auch die Malware im Hintergrund gestartet. Beispielsweise wird der Ordner C:\Windows versteckt, stattdessen wird eine Datei namens C:\Windows.lnk erstellt. Diese sieht ebenso aus wie der echte Ordner, den man in der Standardanzeige unter Windows zu sehen bekommt.

Die .LNK-Dateien benutzen den folgenden Befehl, um sowohl die Originaldatei zu öffnen als auch den Wurm auszuführen. Handelt es sich bei der Originaldatei eigentlich um einen Ordner, wird dieser im Windows Explorer angezeigt:

/c explorer.exe "<originalfile>" & type "<worm>" > "%%tmp%%\<worm>" & start "<originalfile>" "%%tmp%%\<worm>"

Der Wurm kopiert sich selbst als versteckte Datei in das gleiche Verzeichnis wie die .LNK-Dateien. Der Dateiname wird aus der CRC32-Prüfsumme der VolumeSerialNumber generiert. Das Ergebnis folgt dem Muster %08x-%04x-%04x-%02x%02x-%02x%02x%02x%02 (Siehe Adresse 0x405492). Das bedeutet, dass der Name der Schaddatei beispielsweise a277a133-ecde-c0f5-1591-ab36e22428bb.exe lautet). 

Zusätzlich löscht Spora auch den Registry-Wert HKCR\lnkfile\isShortcut. Dieser Wert ist normalerweise dafür zuständig, dass eine Verknüpfung mit dem charakteristischen, gebogenen Pfeil in der unteren linken Ecke auf dem Icon gekennzeichnet wird. Wenn dieser Pfeil zu sehen wäre, könnte dies beim Benutzer den Verdacht aufkommen lassen, dass etwas nicht stimmt.

Selbst wenn man einfach nur einen (vermeintlichen) Ordner auf dem Desktop öffnet, wird der Wurm ausgeführt. Mit dieser Strategie kann sich die Ransomware nicht nur über mobile Speichermedien wie USB-Sticks verbreiten, sondern wird auch neu erstellte Dateien verschlüsseln. Dadurch wird das System für die Bearbeitung und Speicherung von Bildern und Dokumenten unbenutzbar, bis es bereinigt wird.

Verschlüsselung

Spora ändert die Namen verschlüsselter Dateien nicht und konzentriert sich auch sonst auf eine begrenzte Anzahl von Dateitypen: .backup, .7z, .rar, .zip, .tiff, .jpeg, .jpg, .accdb, .sqlite, .dbf, .1cd, .mdb, .cd, .cdr, .dwg, .psd, .pdf, .odt, .rtf, .docx, .xlsx, .doc, .xls

Spora generiert ein RSA-Schlüsselpaar (C1 und C2) mit einer Länge von 1024 Bit. Der öffentliche RSA-Schlüssel C2 wird benutzt, um die AES-Schlüssel, die jeweils pro Datei verwendet und ebenfalls von Spora generiert werden, zu verschlüsseln.  Der private RSA-Schlüssel C1 hingegen wird in der .KEY-Datei abgelegt. Diese .KEY-Datei wird wiederum mit dem neu erstellten AES-Schlüssel B (Länge: 256 Bit) verschlüsselt. Der öffentliche RSA-Schlüssel A2 des Angreifers wird benutzt, um den AES-Key B zu verschlüsseln. Der so verschlüsselte Key B wird an die .KEY-Datei angehängt. Das unten stehende Diagramm zeigt den Code, der den Inhalt der .KEY-Datei auf die Platte schreibt, inklusive des verschlüsselten AES-Keys B.

Die zweite entscheidende Datei ist eine .LST-Datei, die alle verschlüsselten Dateien auflistet. Diese ist nach dem gleichen Prinzip verschlüsselt wie die .KEY-Datei. Für die Verschlüsselung der .LST-Datei wird ein neuer AES-Schlüssel generiert. Dieser wird vom öffentlichen RSA-Schlüssel A2 verschlüsselt und in dieser Form an die .LST-Datei angehängt.

Durch dieses Verschlüsselungsschema muss Spora keinen Schlüssel von einem C&C-Server beziehen, und ist darum in der Lage offline zu arbeiten. Betroffene Benutzer müssen die .KEY-Datei auf der Webseite der Ransomware hochladen.

Die .KEY-Datei kann ausschließlich von den Autoren der Ransomware entschlüsselt werden. Mit ihrem privaten RSA-Schlüssel A1 können diese AES-Schlüssel B entschlüsseln, welcher an die .KEY-Datei angehängt wurde. Dann können sie mit AES-Schlüssel B den restlichen Inhalt der .KEY-Datei wieder lesbar machen, inklusive des privaten RSA-Schlüssels C1. Den für jeden infizierten PC einmaligen privaten RSA-Schlüssel C1 kann der Angreifer dann in einen Decrypter einbauen, den das Opfer nach erfolgter Zahlung erhält. Mit dieser Vorgehensweise muss der Angreifer seinen privaten Schlüssel A1 nicht exponieren und stellt sicher, dass ein Decrypter nur auf einem infizierten Rechner funktioniert. Dies bedeutet andererseits auch, dass es nur einen RSA-Schlüssel A1 für mehrere Infizierte Maschinen gibt. Gelangt dieser Schlüssel an die Öffentlichkeit oder wird im Zuge einer Strafverfolgung beschlagnahmt, wäre man in der Lage, alle Dateien zu entschlüsseln, die mit dieser Variante von Spora verschlüsselt worden sind. Man könnte ihn daher als Master-Key betrachten.

Statistiken zu verschlüsselten Dateien

Spora zählt die Anzahl der verschlüsselten Dateien für sechs verschiedene Kategorien, die unten aufgelistet werden.

Position/ID Ketagorie Dateiendung
1 Office Dokument .odt, .rtf, .docx, .xlsx, .doc, .xls
2 PDF .pdf
3 CorelDraw, AutoCAD, Photoshop .cdr, .dwg, .psd
4 Datenbanken .accdb, .sqlite, .dbf, .1cd, .mdb, .cd
5 Bilder .tiff, .jpeg, .jpg
6 Archive .backup, .7z, .rar, .zip

Diese statistischen Informationen sind in der Form Datum|Nutzername|Sprachumgebung|Kat1|Kat2|Kat3|Kat4|Kat5|Kat6, zum Beispiel 13.1.2017|horst|USA|10|2|3|0|103|51 in der .KEY-Datei hinterlegt.

Diese Statistiken werden auch für das Namensschema der Einträge in der .LST-Datei, der .KEY-Datei und auch im Erpresser-Schreiben verwendet.

  • RU302-15XRK-GXTFO-GZTET-KTXFF-ORTXA-AYYYY.LST
  • RU302-15XRK-GXTFO-GZTET-KTXFF-ORTXA-AYYYY.KEY
  • RU302-15XRK-GXTFO-GZTET-KTXFF-ORTXA-AYYYY.HTML

Die ersten zwei Buchstaben stellen die Systemsprache dar (in unserem Falle RU = russisch). Die nächsten fünf Buchstaben bestehen aus den ersten Zeichen der MD5-Prüfsumme des Inhalts der .KEY-Datei, in unserem Beispiel "30215". Die eigentlichen Zahlen beginnen direkt nach dem Teil der MD5-Prüfsumme, mit dem achten Zeichen. Diese können mit Hilfe der folgenden Substitutionstabelle entschlüsselt werden:

  1 2 3 4 5 6 7 8 9 | Füller
Z X R O A H F G E K T Y

In diesem Falle bedeutet das: der Dateiname RU302-15XRK-GXTFO-GZTET-KTXFF-ORTXA-AYYYY dekodiert sich zu russischer Sprachumgebung, die Zahlenfolge 30215 ist der Beginn der MD5-Prüfsumme, und listet 12971 verschlüsselte Office-Dokumente, 6370 verschlüsselte PDF-Dateien, 8 CorelDraw/AutoCAD/Photoshop-Dateien, 9 Datenbankdateien, 16632 Bilder sowie 144 Archive, die verschlüsselt wurden.

Nach dem Upload der .KEY-Datei auf die Bezahlseite von Spora wird das zu zahlende Lösegeld berechnet, abhängig von der Anzahl der verschlüsselten Dateien. Die nachfolgende Tabelle listet einige Beispiele auf, sortiert nach Höhe der Forderungen (Dank an dieser Stelle an xXToffeeXx  für das Bereitstellen dieser Daten):

Office Dokumente PDF CorelDraw/AutoCAD/Photoshop Datenbanken Bilder Archive Lösegeld in USD
2284 1550     1211 89 79 bis zu 110
489 471   4 796 6 79 bis zu 110
5223 374 206 12 12694 198 90 bis zu 120
7791 7341   2194 8587 782 128 bis zu 170
11160 9354 24 69 9774 242 146 bis zu 190
12851 5188 1851 51 331031 1281 199 bis zu 250
21173 7087 5 149 7069 730 214 bis zu 270
25146 25829 29598 5463 105943 5818 280 bis zu 350
138964 95087 218249 846 277541 22449 280 bis zu 350
11810 7272 15306 10 27651 1471 280 bis zu 350
30503 2135 40098 37 25271 1580 280 bis zu 350
26375 20505 12178 3016 31505 2487 280 bis zu 350
82319 40707 16931 114 38520 3607 280 bis zu 360

Weitere Verhaltensweisen

Spora umgeht nicht die Benutzerkontensteuerung (UAC). Das bedeutet, der Benutzer muss Änderungen am System zustimmen, bevor die Malware starten kann. Außerdem löscht Spora die Schattenkopien und deaktiviert die Systemwiederherstellung:

Liste der beteiligten Dateien

Dateiname Beschreibung SHA256 Erkannt als
Скан-копия _ 10 января 2017г. Составлено и подписано главным бухгалтером. Экспорт из 1С.a01e743_рdf.hta HTA dropper 3fb2e50764dea9266ca8c20681a0e0bf60feaa34a52699cf2cf0c07d96a22553 Script.Trojan-Dropper.Spora.A
close.js JScript Dropper e2fe74d890ddb516b4f21a6588c6e0bdbf3dd6f8c5116d707d08db7ebddf505a Script.Trojan-Dropper.Spora.G
81063163ded.exe, a277a133-ecde-c0f5-1591-ab36e22428bb.exe Spora PE Datei, UPX gepackt dbfd24cd70f02ddea6de0a851c1ef0f45f18b4f70e6f3d0f2e2aec0d1b4a2cbf Win32.Worm.Spora.B
doc_6d518e.docx Korruptes Word Dokument 0ba39054a70802d0b59a18b873aab519e418dc9b0c81400d27614c9c085409ad -
Windows.lnk Bösartige Verknüpfung - Win32.Worm.SporaLnk.A
RU302-15XRK-GXTFO-GZTET-KTXFF-ORTXA-AYYYY.HTML Erpresser-Schreiben - -
RU302-15XRK-GXTFO-GZTET-KTXFF-ORTXA-AYYYY.KEY Enthält Statistiken, Kampagnen-ID, Benutzername, Systemsprache, Zeitstempel und den privaten RSA Schlüssel C1; verschlüsselt - -
RU302-15XRK-GXTFO-GZTET-KTXFF-ORTXA-AYYYY.LST Liste der verschlüsselten Dateien; verschlüsselt - -

Wichtige IT-Security-News per E-Mail

  • Aktuelle IT-Gefahren
  • Schutz-Tipps für Privatkunden
  • 15 % Willkommensgutschein