Überblick
Als Anfang des Monats das Necurs-Botnet ausging, hörten auch E-Mail-Kampagnen auf, mit denen die Ransomware Locky und Dridex verbreitet wurden. Beobachter fragten sich, welches die Gründe für diese Pause sein könnten und wie lang sie wohl dauern würde. Für die zweite Frage scheint es nun eine Antwort zu geben: Am 21. Juni beobachteten Forscher von Proofpoint die erste E-Mail-Kampagne seit dem 31. Mai, die mehrere Millionen Locky-Nachrichten umfasste. Wiederverwendete IP-Adressen lassen vermuten, dass diese Kampagne vom Necurs-Botnet ausging. Zum Zeitpunkt der Niederschrift dieses Blogs am 22. Juni war eine zweite, viel größere Locky-Kampagne im Gange, die eindeutig auf die Rückkehr von Locky und dem Necurs-Botnet hindeutete.
Kurz vor der Unterbrechung des Necurs-Botnets hatten Locky-Autoren neue Verfahren gegen Sandboxes sowie zur Umgehung von Sicherheitsmaßnahmen eingeführt. Diese Verfahren kommen in den neuen Kampagnen zum Einsatz und werden unten ausführlich dargestellt.
E-Mail-Kampagne
Am 21. Juni entdeckte Proofpoint eine große Locky-Kampagne mit Zip-Anhängen, die JavaScript-Code enthielten. Wenn Sie geöffnet werden, laden diese Anhänge Locky mit einer Affiliate-ID von „1“ und einem DGA-Seed von 7743 herunter und installieren ihn. Die Nachrichten in dieser Kampagne hatten die folgenden Betreffzeilen: „Re:“ und den Anhang „services_[Name]_[6 Zufallsziffern].zip“, „[Name]_addition_[6 Zufallsziffern].zip“ oder „[Name]_invoice_[6 Zufallsziffern].zip“. Die Zip-Dateien enthielten JavaScript-Dateien mit dem Namen „addition-[Zufallsziffern].js.“
Abbildung 1: E-Mail, die die gezippte JavaScript-Datei ausliefert, mit der die Ransomware Locky verteilt wird
Abbildung 2: Obfuskierter JavaScript-Anhang
Analyse
Ende Mai erhielt Locky einen neuen Loader, der mindestens drei neue Verfahren zum Schutz vor Analysen implementierte. Das erste Verfahren zielt auf virtuelle Maschinen (VMs) ab, bei denen realistische Werte des Zeitstempel-Zählers im Prozessor schlecht gepflegt sind. Die Malware vergleicht die Anzahl der CPU-Zyklen, die nötig sind, um bestimmte Windows-APIs auszuführen. Erwartungsgemäß sind in einer VM-Umgebung mehr Zyklen nötig, um die meisten Windows-Funktionen auszuführen. Allerdings ist die Zunahme nicht gleichmäßig, und manche Anweisungen brauchen viel länger als andere; so können Malware-Autoren diese Verhältnisse messen und Virtualisierung erkennen.
Beim zweiten Verfahren geht es um die Ausführung von JavaScript durch Locky. Es wird mit dem Argument „123“ ausgeführt, das im Code des Loaders in eine ganze Zahl umgewandelt und für dessen Laufzeit-Obfuskation verwendet wird. Insbesondere ist dieses spezifische Argument dafür nötig, bestimmten laufzeit-deobfuskierten Code im Loader ordnungsgemäß zu deobfuskieren. Da dieser Code zur Laufzeit beschreibbar und ausführbar ist, wird eine Ausnahme verursacht und die Malware beendet, wenn nicht die korrekten Instruktionen vorhanden sind. Mit diesen Prozessabhängigkeiten zurechtzukommen, könnte für manche Analyseplattform zu einem Problem werden.
Abbildung 3: JavaScript startet (nach Deobfuskation) den heruntergeladenen Locky-Loader mit dem Argument „123“
Das dritte Verfahren hilft, einige Geheimnisse des Loaders vor einer oberflächlichen Prüfung zu verstecken und verwendet ein interessantes Verfahren modulübergreifender Ausführung. Wenn der Loader seine Prüfungen abgeschlossen hat, entpackt er die Locky-Binärdatei via RtlDecompressBuffer und überschreibt das ursprüngliche Loader-Image. Nachdem er einige Laufzeit manuell geladen hat, führt er den Einsprungpunkt der Locky-Binärdatei aus, die schließlich die Funktion in Abbildung 4 aufruft. Diese Funktion sucht nach Hooks in NtQueryVirtualMemory; wenn keine vorhanden sind, hookt es NtQueryVirtualMemory, um vorzutäuschen, dass Allokationen für ausführbare Dateien vom Typ MEM_IMAGE seien. Sie erstellt dann eine beschreibbare und ausführbare Kopie der Locky-Binärdatei, die sich in der ausführbaren Hauptdatei befindet, wendet Relokationen auf sie an und ruft dann eine Funktion auf, die den gespeicherten Instruktionszeiger modifiziert, damit er zu dem relozierten Image zurückkehrt. Da der gespeicherte Instruktionszeiger auf Code im Einsprungpunkt der ausführbaren Hauptdatei noch im Stapel vorhanden ist, reloziert sie diesen Zeiger ebenfalls vor der Rückkehr von dieser Funktion. Nun wird die ausführbare Hauptdatei nicht benötigt, daher nullt sie mit Ausnahme des PE-Headers alles aus, sodass eine manuelle Analyse von Speicherdumps erschwert wird.
Abbildung 4: Der dritte Trick zum Schutz vor Analyse, den Locky verwendet, ist ein interessantes Verfahren modulübergreifender Ausführung
Schluss
Zwar betrug die Menge der E-Mail-Nachrichten bei der Kampagne vom 21. Juni gerade einmal zehn Prozent der Mengen, die vor der Unterbrechung des Necurs-Botnets beobachtet worden waren, doch ist sie damit im Vergleich zu den Kampagnen der letzten drei Wochen immer noch sehr umfangreich. Gleichzeitig entstehen durch die Einführung neuer Verfahren gegen virtuelle Maschinen und neuer Umgehungstechniken im Loader der Locky-Ransomware neue Herausforderungen für Analytiker, Sandboxes und Anbieter, die versuchen, die neueste Version von Locky zu erkennen und zu entschärfen.
Die Analyse der mit dieser Kampagne verbundenen Absender-IPs lässt vermuten, dass die Necurs-Spamkanone wieder funktioniert, und leider müssen wir davon ausgehen, dass sowohl Dridex- als auch Locky-E-Mail-Kampagnen bald wieder ernsthaft einsetzen werden. Wir verfolgen bereits am zweiten Betriebstag eine viel größere Locky-Kampagne und werden die Lage weiter beobachten.
Hinweise auf Angriffe (Indicators of Compromise, IOC)
IOC |
IOC Type |
Description |
4292f8dbbd6823bf5693e52c79ac70b81a8d97e1a2f1b939c12a1170018c04c8 |
SHA256 |
addition-365.js email attachment |
[hxxp://yourworshipspace[.]com/a3py3w] |
URL |
Locky payload URL |
[hxxp://51.254.240[.]48/upload/_dispatch.php] |
URL |
Locky hard-coded C&C |
[hxxp://185.82.216[.]55/upload/_dispatch.php] |
URL |
Locky hard-coded C&C |
[hxxp://91.219.29[.]41/upload/_dispatch.php] |
URL |
Locky hard-coded C&C |
[hxxp://217.12.223[.]83/upload/_dispatch.php] |
URL |
Locky hard-coded C&C |
[http://kjvacahtvb.work/upload/_dispatch.php] |
URL |
Locky DGA C&C |
[http://rhvpwqledatdxerrx.info/upload/_dispatch.php] |
URL |
Locky DGA C&C |
[hxxp://sonuh5glplozcs2m[.]tor2web[.]org] |
URL |
Locky payment portal |
[hxxp://sonuh5glplozcs2m[.]onion[.]to] |
URL |
Locky payment portal |
sonuh5glplozcs2m[.]onion |
URL |
Locky payment portal (TOR) |
Ausgewählte ET-Signaturen, die bei derartigem Datenverkehr ansprechen würden:
2820401 || ETPRO TROJAN Ransomware Locky CnC Beacon 21 May