Erst kürzlich erregte die Petya-ähnliche Ransomware viel Aufmerksamkeit in den Medien. Die Angriffswelle ist dabei kein Einzelfall, sondern steht in Verbindung mit einer Reihe ähnlicher Angriffe in der Ukraine. Dieser Blogpost erläutert jede Menge Details über Diskcoder.C (aka ExPetr, PetrWrap, Petya oder NotPetya) und informiert über bisher unveröffentlichte Attacken.
TeleBots
Im Dezember 2016 veröffentlichten wir zwei detaillierte Blogposts über schädliche Angriffe, welche eine Gruppe aus ESET-Forschern TeleBots taufte. Damals berichteten wir sowohl über Attacken gegen Finanzinstitutionen als auch über eine Linux Version der KillDisk-Malware, welche die Cyber-Kriminellen einsetzten. Die Gang vollzog Cyberattacken gegen verschiedene Computersysteme in der Ukraine. Darunter befanden sich auch kritische Infrastrukturen. Außerdem konnte den Mitgliedern eine Verbindung zur berüchtigten BlackEnergy-Gang, die für die Stromausfälle im Dezember 2015 in der Ukraine verantwortlich war, nachgewiesen werden.
Im letzten Schritt der Cyberattacke gebrauchte die TeleBots-Gang immer die KillDisk-Malware, um Dateien mit einer bestimmten Dateierweiterung auf den Datenträgern der Opfer zu überschreiben. In Wahrheit stand das Sammeln von Lösegeld für die TeleBots-Gang nie an erster Stelle. Die KillDisk-Malware, die im Dezember 2016 in der ersten Angriffswelle verwendet wurde, überschrieb gezielte Dateien, anstatt sie zu verschlüsseln. Ferner gab es keine Kontaktinformationen für eine etwaige Kommunikation mit den Angreifern. Die Malware zeigte lediglich ein Bild der TV Show Mr. Robot:
In einer zweiten Angriffswelle hinterlegten die Cyber-Kriminellen dann Kontaktinformationen in der KillDisk-Malware, sodass alles wie ein typischer Ransomware-Angriff anmutete. Allerdings forderten die Malware-Entwickler ein ungewöhnlich hohes Lösegeld von 222 BTC. Damals waren das rund 250.000 US-Dollar. Die außergewöhnlich hohe Summe spricht dafür, dass es der Gang nie um den Erhalt möglichst vieler Bitcoin, als um das bloße Anrichten von Schaden ging.
In 2017 stoppten die Cyber-Kriminellen ihre Cyberattacken nicht, sondern sie entwickelten sich weiter. In der Zeit zwischen Januar und März 2017 kompromittierten die TeleBots-Angreifer ein Softwareunternehmen in der Ukraine (keine Verbindungen zu M.E. Doc) und nutzten den dortigen VPN-Tunnel, um sich Zugang zu den internen Netzwerken mehrerer Finanzinstitute zu verschaffen.
Zwischenzeitlich rüsteten die Cyber-Kriminellen ihr Cyberwaffen-Arsenal mit zwei weiteren Ransomware auf und aktualisierten eingesetzte Tools, die wir bereits in vergangen Blogposts erwähnten.
Python/TeleBot.A ist die erste Backdoor, auf welche sich die TeleBots-Gang verstärkt verlässt. Diese Hintertür wurde aus Python mithilfe der Rust Programmiersprache umgeschrieben. Die Funktionalität bleibt allerdings die gleiche. Es handelt sich um eine Standard-Backdoor, welche die Telegram Bot API verwendet, um Befehle zu empfangen und Antworten an den Malware-Operator zu senden.
Die zweite Backdoor ist in VBS geschrieben und mithilfe von script2exe gepackt. Die Malware-Entwickler gaben sich hier größte Mühe, deren Funktionalität zu verschleiern. Letztendlich blieb sie aber die gleiche wie bei vorherigen Cyberattacken.
Dieses Mal benutzt die VBS-Backdoor den C&C-Server, der unter 130.185.250[.]171 erreicht wurde. Um Verbindungen in Firewall-Logs weniger verdächtig erscheinen zu lassen, registrierten die Malware-Entwickler die Domain transfinance.com[.]ua und hosteten sie unter der oben genannten IP-Adresse. Wie aus Abbildung 6 hervorgeht, lief auf dem Server außerdem das TOR-Relay severalwdadwajunior.
Darüber hinaus benutzten die Angreifer folgende Werkzeuge:
- CredRaptor (um Passwörter zu stehlen)
- Plainpwd (modifiziertes Mimikatz, um Windows-Anmeldeinformationen aus dem Arbeitsspeicher wiederherzustellen)
- SysInternals’ PsExec
Im letzten Schritt des Angriffs forcierten die TeleBots-Mitglieder eine erfolgreiche Kompromittierung durch die Benutzung von gestohlenen Windows-Anmeldeinformationen und SysInternals’ PsExec. Diese neue Ransomware wird von ESET Antivirensoftware als Win32/Filecoder.NKH erkannt.
Ist die Ransomware erst einmal ausgeführt, beginnt die Verschlüsselung aller Dateien (ausgenommen das Windows C:\ -Verzeichnis) mithilfe von AES-128- und RSA-1024-Algorithmen. Die Malware fügt jeder verschlüsselten Datei die Erweiterung .xcrypted an.
Ist die Verschlüsselung beendet, erzeugt die Ransomware die Textdatei !readme.txt mit folgendem Inhalt:
„Bitte kontaktieren Sie uns: openy0urm1nd@protonmail.ch“
Neben dieser Windows-Malware, setzt die TeleBots-Gang auch noch auf eine Linux-Variante für Linux-betriebene Server. Diese Ransomware erkennen ESET-Antivirenprogramme als Python/Filecoder.R. Diese Malware ist wie zu erwarten in Python geschrieben. Bei dieser Ransomware-Variante gebrauchen die Entwickler Drittanbieter-Dienstprogramme wie openssl, um die Dateiverschlüsselung zu realisieren. Für die Verschlüsselung sind RSA-2048- und AES-256-Algorithmen zuständig.
Im Code des Python-Skripts hinterließen die Angreifer einen Kommentar mit folgendem Text:
feedback: openy0urm1nd[@]protonmail.ch
Win32/Filecoder.AESNI.C
Am 18. Mai 2017 bemerkten wir neue Aktivitäten einer anderen Ransomware-Familie namens Win32/Filecoder.AESNI.C (Bezug zu XData).
Diese Ransomware verteilte sich meist in der Ukraine. Das liegt an dem initialen Ausbreitungsvektor. Anhand von ESET-LiveGrid®-Telemetriedaten muss die Malware direkt nach der Ausführung der M.E.Doc-Software, die in Buchhaltungen in der Ukraine weit verbreitet ist, entstanden sein.
Die Win32/Filecoder.AESNI.C Ransomware besaß einen Verteilungsmechanismus, welcher der Malware erlaubte, sich auch seitlich im Unternehmens-LAN zu bewegen. Das Schadprogramm benutzte eine eingebette Mimikatz-DLL, um Windowsanmeldeinformationen aus dem Arbeitsspeicher eines kompromittierten Computers zu lesen. Mit diesen Anmeldedaten begann sich die Malware mithilfe von SysInternals’ PsExec innerhalb des Host-Netzwerks zu verbreiten.
Es scheint allerdings so, als ob die TeleBots-Gang entweder ihr Ziel nicht erreichte oder das ganze nur ein Test für einen noch größeren Angriff war. Die Malware-Entwickler veröffentlichten jedenfalls die Master-Entschlüsselungsschlüssel im BleepingComputer Forum. Das geschah zusammen mit der Behauptung, der ursprüngliche Malware-Entwickler hätte die Quelle gestohlen und im Ukraine-Vorfall eingesetzt.
ESET veröffentlichte sogar ein Entschlüsselungs-Tool für die Win32/Filecoder.AESNI Ransomware. Trotzdem erregte dieses Ereignis nicht viel Aufmerksamkeit in den Medien.
Diskcoder.C (aka Petya-ähnliche) Angriffswelle
Dahingegen erzeugte die Petya-ähnliche Angriffswelle vom 27. Juni 2017 viel Resonanz bei den Medien. Das lag wohl nicht zuletzt daran, dass viele kritische Infrastrukturen und andere Branchen in der Ukraine betroffen waren.
Die bei der Cyberattacke eingesetzte Malware besitzt die Möglichkeit, den Master Boot Record (MBR) mit eigenem Schadcode zu ersetzen. Diesen Code lieh man sich von der Win32/Diskcoder.Petya-Ransomware. Das ist auch der Grund, warum einige andere Malware-Forscher von ExPetr, PetrWrap, Petya, oder NotPetya sprechen. Im Gegensatz zur ursprünglichen Petya-Ransomware haben die Malware-Entwickler von Diskcoder.C den MBR-Code so modifiziert, dass eine Wiederherstellung nicht möglich ist. Insbesondere kann der Angreifer keinen Entschlüsselungsschlüssel bereitstellen und der Entschlüsselungsschlüssel kann auch nicht in den Lösegeld-Bildschirm eingegeben werden, da der generierte Schlüssel nicht akzeptierte Zeichen enthält.
Optisch sieht der MBR-Teil von Diskcoder.C wie eine leicht modifizierte Version von Petya aus: Zuerst wird eine Meldung angezeigt, die das Microsofts Disk Checking Utility (CHKDSK), imitiert. Während des gefälschten CHKDSK-Scans verschlüsselt Diskcoder.C tatsächlich Dateien.
Sobald die Verschlüsselung abgeschlossen ist, benachrichtigt der MBR-Code den User darüber, dass alle seine Dateien unbrauchbar sind und er nur wieder an seine Daten gelangt, wenn er einen Entschlüsselungsschlüssel erwirbt. Wie bereits erwähnt, würde eine Eingabe jedoch niemals funktionieren.
Der restliche Code wurde anders als der „geliehene“ MBR von den Malware-Entwicklern selbst implementiert. Das beinhaltet auch eine Dateiverschlüsselung, die als Ersatz zur MBR-Verschlüsselung zur Verfügung stehen würde. Für die Dateiverschlüsselung benutzt die Malware AES-128- und RSA-2048-Algorithmen. An dieser Stelle wollen wir anmerken, dass die Malware-Entwickler einen Fehler eingebaut haben, der das Entschlüsseln der Dateien erheblich erschwert. Insbesondere verschlüsselt die Ransomware lediglich den ersten MB einer Datei, ohne Header und Footer zu hinterlassen. Verschlüsselte Daten werden nicht umbenannt, weshalb nicht genau festgestellt werden kann, welche Daten verschlüsselt sind und welche nicht. Außerdem enthalten Dateien, die nach der Verschlüsselung größer als ein Megabyte sind, kein Padding. Bei diesen Dateien ist es unmöglich, einen etwaigen Entschlüsselungsschlüssel zu verifizieren.
Interessanterweise ist die Liste der zu verschlüsselnden Datei-Endungen nicht identisch, aber sehr ähnlich der Dateierweiterungsliste aus der KillDisk-Malware, die bei Cyberattacken im Dezember 2016 verwendet wurde.
Ist die Malware erst einmal ausgeführt, versucht sie sich durch das berüchtigte EternalBlue Exploit zu verbreiten. Dazu wird die DoublePulsar Kernel-Mode Backdoor genutzt. Dieselbe Methode verwendeten Cyber-Kriminelle in der WannaCryptor.D Ransomware. Auch Diskcoder.C adaptierte das Vorgehen der Win32/Filecoder-AESNI.C (aka XData) Ransomware: Hier kommt eine Light-Version von Mimikatz zum Einsatz, um Anmeldeinformationen zu erhalten und die Malware dann mithilfe SysInternals‘ PsExec auf anderen Computern im LAN zu verteilen. Darüber hinaus haben die Malware-Entwickler eine dritte Methode der Verbreitung, über den WMI-Mechanismus, implementiert.
Über alle drei genannten Methoden lässt sich die Malware-Verbreitung innerhalb LANs realisieren. Anders als bei der berüchtigten WannaCryptor-Malware wird der EternalBlue-Exploit von Diskcoder.C nur gegen Computer im lokalen Netzwerkadressraum verwendet.
Warum beobachteten wir dann Kompromittierungen in anderen Ländern als der Ukraine? ESETs Untersuchungen ergaben, dass betroffene Unternehmen in anderen Ländern VPN-Verbindungen zu kompromittierten ukrainischen Unternehmen, Filialen oder Geschäftspartnern unterhielten.
Initialer Infektionsvektor
Sowohl Diskcoder.C als auch Win32/Filecoder.AESNI.C verwendeten eine Supply-Chain-Attack als initialen Infektionsvektor. Die Verbreitung der Malware-Familien fand letztendlich über die ukrainische Buchhaltungssoftware M.E.Doc statt.
Es existieren mehrere Möglichkeiten, einen solchen Angriff umzusetzen. M.E.Doc besitzt beispielsweise einen internen Nachrichten- und Dokumentenaustausch-Dienst. Die Malware-Operatoren könnten bestimmten Personen im Unternehmen also Spearphishing-Mails zuschicken. Allerdings wäre danach ein Eingreifen des Users (z.B. Herunterladen des schädlichen E-Mail-Anhangs) erforderlich. Somit wären unter Umständen Social Engineering Techniken notwendig gewesen. Da sich Win32/Filecoder.AESNI.C nicht so weit verbreitete, nahmen wir fälschlicherweise an, dass diese Techniken in diesem Fall verwendet wurden.
Die darauffolgende Verbreitung von Diskcoder.C deutet jedoch darauf hin, dass die Angreifer Zugriff auf den Update-Server der M.E.Doc Software hatten. Mit dem Zugriff auf diesen Server haben die Malware-Operatoren ein bösartiges Update angestoßen, das automatisch und ohne Benutzerinteraktion heruntergeladen und angewendet wurde. Deshalb waren so viele Systeme in der Ukraine von diesem Angriff betroffen. Uns scheint es allerdings so, als ob die Malware-Entwickler die Ausbreitungsfähigkeiten von Diskcoder.C unterschätzt hätten.
ESET-Forscher fanden Beweise, welche die Theorie stützen. Genauer gesagt, haben sie eine bösartige PHP-Backdoor identifizieren können, die unter medoc_online.php in einem der FTP-Verzeichnisse auf dem Server von M.E.Doc bereitlag. Diese Hintertür war über das HTTP zugänglich; Allerdings war es verschlüsselt, sodass der Angreifer im Besitz des Passworts sein musste, um es zu benutzen.
An dieser Stelle sollten wir erwähnen, dass es Anzeichen dafür gibt, dass Diskcoder.C und Win32/Filecoder.AESNI.C nicht die einzigen Malware-Familien sind, die mit diesem Infektionsvektor eingesetzt wurden. Wir können spekulieren, dass die schädlichen Updates heimlich in Computernetzwerke eingeschleust wurden, die hochrangige Ziele darstellen.
Das VBS-Backdoor der TeleBots-Gang war eine Schadsoftware, welche über den kompromittierten M.E.Doc Update Server verteilt werden konnte. Diesmal benutzten der Cyber-Kriminellen wieder einen im finanziellen Kontext stehenden Domain-Namen: bankstat.kiev[.]ua.
Am Tag der Diskcoder.C-Angriffswelle wurde der A-Record dieser Domain auf 10.0.0.1 geändert.
Schlussfolgerungen
Die TeleBots-Gruppe entwickelt sich weiter, um massive Cyberattacken gegen die Ukraine zu starten. Anstatt E-Mails mit bösartigen Makros zu versenden, etablieren sie nun anspruchsvollere Schemata, wie die Durchführung einer Supply-Chain-Attack. Vor der letzten Angriffswelle zielte die TeleBots-Gang eher auf den Finanzsektor. Die jüngsten Cyberattacken trafen diesmal allerdings ungerichtet, viele ukrainische Unternehmen. Scheinbar unterschätzten die Malware-Operatoren die Ausbreitungsfähigkeiten der Malware. Deshalb ist die Malware außer Kontrolle geraten.
Indicators of Compromise (IoC)
ESET Erkennungsnamen:
Win32/TeleBot trojan
VBS/Agent.BB trojan
VBS/Agent.BD trojan
VBS/Agent.BE trojan
Win32/PSW.Agent.ODE trojan
Win64/PSW.Agent.K trojan
Python/Filecoder.R trojan
Win32/Filecoder.AESNI.C trojan
Win32/Filecoder.NKH trojan
Win32/Diskcoder.C trojan
Win64/Riskware.Mimikatz application
Win32/RiskWare.Mimikatz application
C&C-Server:
transfinance.com[.]ua (IP: 130.185.250.171)
bankstat.kiev[.]ua (IP: 82.221.128.27)
www.capital-investing.com[.]ua (IP: 82.221.131.52)
Legitime Server, die von den Malware-Entwicklern missbraucht wurden:
api.telegram.org (IP: 149.154.167.200, 149.154.167.197, 149.154.167.198, 149.154.167.199)
VBS Backdoor:
1557E59985FAAB8EE3630641378D232541A8F6F9
31098779CE95235FED873FF32BB547FFF02AC2F5
CF7B558726527551CDD94D71F7F21E2757ECD109
Mimikatz:
91D955D6AC6264FBD4324DB2202F68D097DEB241
DCF47141069AECF6291746D4CDF10A6482F2EE2B
4CEA7E552C82FA986A8D99F9DF0EA04802C5AB5D
4134AE8F447659B465B294C131842009173A786B
698474A332580464D04162E6A75B89DE030AA768
00141A5F0B269CE182B7C4AC06C10DEA93C91664
271023936A084F52FEC50130755A41CD17D6B3B1
D7FB7927E19E483CD0F58A8AD4277686B2669831
56C03D8E43F50568741704AEE482704A4F5005AD
38E2855E11E353CEDF9A8A4F2F2747F1C5C07FCF
4EAAC7CFBAADE00BB526E6B52C43A45AA13FD82B
F4068E3528D7232CCC016975C89937B3C54AD0D1
Win32/TeleBot:
A4F2FF043693828A46321CCB11C5513F73444E34
5251EDD77D46511100FEF7EBAE10F633C1C5FC53
Win32/PSW.Agent.ODE (CredRaptor):
759DCDDDA26CF2CC61628611CF14CFABE4C27423
77C1C31AD4B9EBF5DB77CC8B9FE9782350294D70
EAEDC201D83328AF6A77AF3B1E7C4CAC65C05A88
EE275908790F63AFCD58E6963DC255A54FD7512A
EE9DC32621F52EDC857394E4F509C7D2559DA26B
FC68089D1A7DFB2EB4644576810068F7F451D5AA
Win32/Filecoder.NKH:
1C69F2F7DEE471B1369BF2036B94FDC8E4EDA03E
Python/Filecoder.R:
AF07AB5950D35424B1ECCC3DD0EEBC05AE7DDB5E
Win32/Filecoder.AESNI.C:
BDD2ECF290406B8A09EB01016C7658A283C407C3
9C694094BCBEB6E87CD8DD03B80B48AC1041ADC9
D2C8D76B1B97AE4CB57D0D8BE739586F82043DBD
Win32/Diskcoder.C:
34F917AABA5684FBE56D3C57D48EF2A1AA7CF06D
PHP shell:
D297281C2BF03CE2DE2359F0CE68F16317BF0A86