19.01.2017 | Bochum, Autor: Karsten Hahn

Spora - der Wurm, der auch Ransomware ist

Eine ausgeklügelte Gefahr mit interessantem Geschäftsmodell - mehr verschlüsselte Dateien = höheres Lösegeld

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/IDKetagorieDateiendung
1Office Dokument.odt, .rtf, .docx, .xlsx, .doc, .xls
2PDF.pdf
3CorelDraw, AutoCAD, Photoshop.cdr, .dwg, .psd
4Datenbanken.accdb, .sqlite, .dbf, .1cd, .mdb, .cd
5Bilder.tiff, .jpeg, .jpg
6Archive.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:

0123456789|Füller
ZXROAHFGEKTY

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 DokumentePDFCorelDraw/AutoCAD/PhotoshopDatenbankenBilderArchiveLösegeld in USD
22841550 0 012118979 bis zu 110
489471 04796679 bis zu 110
5223374206121269419890 bis zu 120
77917341 021948587782128 bis zu 170
11160935424699774242146 bis zu 190
1285151881851513310311281199 bis zu 250
21173708751497069730214 bis zu 270
25146258292959854631059435818280 bis zu 350
1389649508721824984627754122449280 bis zu 350
1181072721530610276511471280 bis zu 350
3050321354009837252711580280 bis zu 350
2637520505121783016315052487280 bis zu 350
823194070716931114385203607280 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

DateinameBeschreibungSHA256Erkannt als
Скан-копия _ 10 января 2017г. Составлено и подписано главным бухгалтером. Экспорт из 1С.a01e743_рdf.htaHTA dropper3fb2e50764dea9266ca8c20681a0e0bf60feaa34a52699cf2cf0c07d96a22553Script.Trojan-Dropper.Spora.A
close.jsJScript Droppere2fe74d890ddb516b4f21a6588c6e0bdbf3dd6f8c5116d707d08db7ebddf505aScript.Trojan-Dropper.Spora.G
81063163ded.exe, a277a133-ecde-c0f5-1591-ab36e22428bb.exeSpora PE Datei, UPX gepacktdbfd24cd70f02ddea6de0a851c1ef0f45f18b4f70e6f3d0f2e2aec0d1b4a2cbfWin32.Worm.Spora.B
doc_6d518e.docxKorruptes Word Dokument0ba39054a70802d0b59a18b873aab519e418dc9b0c81400d27614c9c085409ad-
Windows.lnkBösartige Verknüpfung-Win32.Worm.SporaLnk.A
RU302-15XRK-GXTFO-GZTET-KTXFF-ORTXA-AYYYY.HTMLErpresser-Schreiben--
RU302-15XRK-GXTFO-GZTET-KTXFF-ORTXA-AYYYY.KEYEnthält Statistiken, Kampagnen-ID, Benutzername, Systemsprache, Zeitstempel und den privaten RSA Schlüssel C1; verschlüsselt--
RU302-15XRK-GXTFO-GZTET-KTXFF-ORTXA-AYYYY.LSTListe der verschlüsselten Dateien; verschlüsselt--

Share this article

G DATA | SIMPLY SECURE