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 | ||
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 | 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 | - | - |