Zunächst sah es nach einem schnellen Zugriff aus: Huntress stellte fest, dass die Angreifer auf kompromittierten Systemen Webshells und den Krypto-Miner XMRig ablegten. „Dieser Vorfall ist jedoch Teil eines deutlich größeren und geduldigeren Eindringens. Der Akteur platzierte Shells an mehreren Stellen, betrieb zwei verschiedene Miner, legte Tunneling-Werkzeuge bereit und installierte ein eigenes Implantat – und das alles auf Servern, deren Aufgabe es ist, Backups vorzuhalten“, sagte Huntress-Forscher Jonathan Semon.

Insgesamt fanden die Forscher fünf Familien von Webshells auf Basis von Jakarta Server Pages (JSP, früher JavaServer Pages):

  • nsmind.jsp: eine signierte API mit Befehlsausführung und Dateiübertragung über die Parameter exec, cd, upload und download
  • AhsayCBS.jsp: ein Loader, der verschlüsselte Nutzlasten in den Pixeldaten von PNG-Bildern versteckt und sie im Arbeitsspeicher ausführt
  • eine Befehls-Shell mit Schlüssel, die einen fest codierten Schlüssel mit ihrer eigenen Kopie vergleicht und bei Übereinstimmung den Befehl über „cmd.exe“ ausführt
  • eine erweiterte Variante dieser Shell, die zusätzlich Base64-dekodierte Bytes in jeden für das Dienstkonto erreichbaren Pfad schreiben und weitere Werkzeuge ausbringen kann
  • status_<sechs zufällige Buchstaben>.jsp bzw. st_<sechs zufällige Buchstaben>.jsp (etwa st_jgaejj.jsp), die über die Parameter cmd, del und rm Befehle ausführen, übergebene Pfade rekursiv löschen und sich selbst entfernen

Zur Tarnung von AhsayCBS.jsp erklärte Huntress, die Verkleidung als interner Bildvorschau-Dienst reiche bis zu einem Kommentarblock, der einen Wasserzeichen-Endpunkt beschreibt. Da die Webshell nur implizite JSP-Objekte und vollqualifizierte Klassennamen verwende, lasse sie sich auf jedem Servlet-Container und ab dem Java Development Kit (JDK) 6 kompilieren.

Ein XMRig-Miner gab sich als Microsoft Edge aus. Ein zweiter XMRig-Miner („kvm-agent.exe“) nutzte eine andere Wallet und einen anderen Mining-Pool und wurde über eine geplante Aufgabe mit SYSTEM-Rechten jede Minute neu gestartet.

Am auffälligsten ist die Python-Backdoor „main.py“. Sie ist so gebaut, dass sie ausschließlich auf dem Host läuft, auf dem sie abgelegt wurde, und nicht in einer Sandbox oder auf dem Rechner eines Analysten. Dazu berechnet sie den SHA-256-Hash der MachineGuid des Systems und sucht im eigenen Verzeichnis nach einer Markierungsdatei mit diesem Namen. Erst dann lädt sie eine eingebettete x64-DLL in den Arbeitsspeicher, die Kontakt zum Command-and-Control-Server creepexplosiondarknight[.]com aufnimmt.

Um unentdeckt zu bleiben, richteten die Angreifer Ausnahmen in Microsoft Defender ein. Für dauerhaften Zugang brachten sie die Tunneling-Werkzeuge GOST und Chisel sowie legitime Fernwartungssoftware wie AnyDesk, Atera und Splashtop auf die Systeme.

Hinweise deuten darauf hin, dass die Täter gezielt Server ins Visier nahmen, die Backups speichern oder verwalten. „Auf einem zugehörigen Veeam-Server in derselben Umgebung sahen wir zudem einen Befehl, der zum Veeam-Modul von NetExec für den Diebstahl von Zugangsdaten passt: ein PowerShell-Skript, offenbar per WMI aus der Ferne gestartet, das die PostgreSQL-Datenbank VeeamBackup nach gespeicherten Zugangsdaten abfragte und diese mit DPAPI entschlüsselte“, sagte Semon. Backup-Software speichere Zugangsdaten für Hypervisoren, Repositories und Domänenkonten. Wie viele davon abgegriffen wurden, könne man nicht sagen, so Semon. Die Kombination aus einem Brückenkopf in Ahsay und einer Abfrage von Veeam-Zugangsdaten lege aber nahe, dass sich der Akteur absichtlich und nicht zufällig für Backup-Infrastruktur interessierte.