15. Juli 2025

Die Ransomware SafePay: Eine schnell wachsende Bedrohung für MSPs

Zusammenfassung

  • Im ersten Quartal 2025 ist eine Ransomware-Gruppe namens „SafePay“ wie aus dem Nichts aufgetaucht und wurde innerhalb kürzester Zeit zu einem der aktivsten und gefährlichsten Akteure in der globalen Bedrohungslandschaft. Die Ransomware hat sich still, aber aggressiv ausgebreitet und weltweit bereits über 200 Opfer gefunden, darunter MSPs (Managed Service Provider) und KMUs (kleine bis mittelständische Unternehmen) aus diversen Branchen.
  • Die Acronis Threat Research Unit (TRU) hat mehrere Samples von SafePay analysiert und konnte bestätigen, dass die Gruppe bereits bekannte, hocheffiziente Taktiken einsetzt (wie etwa Schutzlösungen auf dem Endpunkt zu deaktivieren, vorhandene Schattenkopien zu löschen oder Systemprotokolle zu bereinigen), um Erkennungs- und Abwehrmaßnahmen zu unterlaufen.
  • Im Gegensatz zu vielen Ransomware-Gruppen, die auf Partner im Rahmen eines RaaS-Modells (Ransomware as a Service) angewiesen sind, scheint SafePay zentral zu operieren und seine Infrastruktur, Vorgehensweisen und Verhandlungen selbst zu verwalten.
  • Die Gruppe verwendet klassische, aber effektive Angriffsmethoden: durch RDP- und VPN-basierte Eindringtechniken, das Stehlen von Zugangsdaten, die Ausweitung von Berechtigungen und das Missbrauchen von systemeigenen Programm-Dateien („Living-Off-the-Land Binaries“) können sich die Angreifer unauffällig durch die infiltrierten Netzwerke bewegen, vertrauliche Daten exfiltrieren und anschließend ausgewählte Dateien verschlüsseln.
  • Unlängst wurde SafePay mit einem bekannten Ransomware-Angriff in Verbindung gebracht, der Ingram Micro (einen global agierenden Distributor, der mit Tausenden von Partnern und MSPs zusammenarbeitet) lahmlegte.

Ist die Ransomware SafePay ein Ableger von „Lockbit“?

SafePay tauchte erstmals im Jahr 2024 auf. Im ersten Jahr seiner Aktivität forderte die Ransomware mehr als 20 Opfer. Obwohl nicht genau bekannt ist, ob SafePay ein ganz neuer oder eher ein umbenannter alter Akteur ist, weisen die Samples viele Ähnlichkeiten mit „LockBit“ auf, bei dem es sich um einen bekannten Ransomware-Builder handelt. Im Jahr 2022 wurde der Quellcode des LockBit 3.0-Builders geleakt. Nach diesem Leak tauchte eine Vielzahl neuer Ransomware-Varianten auf. Die Version 3.0 des Builders ist auch als „LockBit Black“ bekannt, weil sie viele Ähnlichkeiten mit der Ransomware „BlackByte“ aufweist.

Das von der TRU analysierte Sample der Ransomware SafePay ist eine PE32-DLL mit einem gefälschten Kompilierungszeitstempel.

Acronis
Acronis

Überblick

Das Sample der Ransomware SafePay ist eine PE32-DLL mit einem gefälschten Kompilierungszeitstempel. Die erste Ähnlichkeit mit LockBit besteht in einer Dummy-Funktion, die eine Reihe von aufeinanderfolgenden Windows-API-Aufrufen enthält. Das Schreiben von Aufrufen auf diese Weise ist unsinnig, weil keine Argumente an diese Funktionen übergeben werden, was zu Fehlern führt. Tatsächlich werden diese Funktionen in beiden Fällen nie aufgerufen, da die Ausführung beendet wird, bevor das Sample in diesen Abschnitt gelangen kann.

 Andere Ähnlichkeiten mit LockBit:

●      Zur vollständige Ausführung ist ein Kennwort erforderlich.

●      Alle Zeichenfolgen sind codiert.

●      Alle WinAPI-Adressen werden während der Ausführung aufgelöst.

●      Vermeidung gleicher Systemsprachen.

●      Ausnutzung der CMSTPLUA-COM-Schnittstelle, um höhere Berechtigungen zu erlangen.

●      Erstellte Threads erhalten das Flag 'ThreadHideFromDebugger'.

●      Die Liste der Prozesse und Dienste, die beendet werden müssen.

 

Obwohl das Sample keine direkte Kopie von LockBit 3.0 ist und einige Unterschiede aufweist, ist es für Cyberkriminelle üblich, den Quellcode zu ändern, um ihre Malware einzigartiger zu machen und – was noch wichtiger ist – neue Funktionen hinzuzufügen und ihre Erkennung zu erschweren.

Einschleusung und Exfiltration

Die Ransomware SafePay wurde über RDP-Verbindungen an die Opfer übermittelt. Es ist zwar nicht bekannt, wie die Angreifer an die entsprechenden Anmeldedaten gekommen sind, doch dank dieser Technik konnten sie Windows Defender deaktivieren und Dateien auf einen C2-Server hochladen, bevor die Dateien dann verschlüsselt wurden. Vor dem Exfiltrieren von Dateien haben die Angreifer:innen das Skript 'ShareFinder.ps1' ausgeführt, das alle verfügbaren Netzwerkfreigaben in der lokalen Domain ermittelt. Es wurde aus diesem Open Source-Projekt entnommen:

https://github.com/darkoperator/Veil-PowerView/blob/master/PowerView/functions/Invoke-ShareFinder.ps1

Dieses Skript findet Netzwerk-Freigaben auf Hosts in der lokalen Domain. Es wurde zuvor schon bei Angriffen mit Emotet und während der C0015-Kampagne entdeckt, bei der die Ransomware Conti eingesetzt wurde.

Um Dateien auf dem System zu sammeln, wurde das Programm WinRar mit folgendem Befehl verwendet:

WinRAR.exe a -v5g -ed -r -tn1000d -m0 -mt5 -x*.rar -x*.JPEG -x*.RAW -x*.PSD -x*.TIFF -x*.BMP -x*.GIF -x*.JPG -x*.MOV -x*.pst -x*.FIT -x*.FIL -x*.mp4 -x*.avi -x*.mov -x*.mdb -x*.iso -x*.exe -x*.dll -x*.bak -x*.msg -x*.png -x*.zip -x*.ai -x*.7z -x*.DPM -x*.log -x*.dxf -x*.insp -x*.upd -x*.db -x*.dwg -x*.nc1 -x*.metadata -x*.dg -x*.inp -x*.dat -x*.TIFF -x*.tiger -x*.pcp -x*.rvt -x*.rws -x*.nwc -x*.tif -x*.frx -x*.dyf -x*.rcs -x*.diff C:\[redacted].rar \\[redacted]\C$\Users\

Nach der Archivierung der Dateien wurde ein FileZilla-Client eingesetzt, um Dateien zu einem C2-Server zu exfiltrieren. Nachdem der Prozess abgeschlossen wurde, wurden sowohl WinRar als auch FileZilla von den Zielen wieder entfernt.

Acronis

Ausführung

Zu Beginn der Ausführung entschlüsselt SafePay einige Zeichenfolgen. Es verwendet eine Schleife, in der es dreimal eine XOR-Operation für jedes Byte ausführt. Für jede Operation wird ein anderer Schlüssel verwendet. Der erste verwendet den aktuellen Indexwert. Der zweite verwendet das erste Symbol aus der Datei 'kernel32.dll', das immer 'M' ist. Der letzte Schlüssel ist ein konstanter Wert, der für jede verschlüsselte Zeichenfolge unterschiedlich ist. Diese Entschlüsselungsroutine ist nicht als separate Funktion implementiert, sondern wird verwendet, um jede Zeichenfolge zu entschlüsseln, die das Sample enthält. Das Sample enthält nur Zeichenfolgen in verschlüsselter Form.

Acronis

Das Sample enthält zudem nicht die Importfunktionen-Tabelle. Es entschlüsselt Bibliotheksnamen und lädt diese mithilfe des Imports 'LoadLibrary', während die Adressen ihrer Exportfunktionen mithilfe von 'GetProcAddress' aufgelöst und gespeichert werden. Hier ist die Liste der Bibliotheksnamen, die SafePay in verschlüsselter Form speichert:

advapi32.dll, rstrtmgr.dll, ole32.dll, shell32.dll, ntdll.dll, mpr.dll, user32.dll

Nachdem die zusätzlichen Importe abgerufen wurden, ruft das SafePay-Sample das aktuelle Datum, die aktuelle Uhrzeit und die Sprache der Windows-Benutzeroberfläche ab. Als Nächstes wird überprüft, ob die ID-Nummer der Systemsprache größer oder kleiner ist als die gespeicherten Nummern. Das Sample springt dann zu einem bestimmten Abschnitt mit anderen Zahlenvergleichen.

Acronis

Mit der Anweisung 'switch-case' kann SafePay die Ausführung fortsetzen oder zur Exit-Funktion springen, wenn der erhaltene Wert mit einer der folgenden Zahlen übereinstimmt:

Code
Beschreibung
BCP 47-Code
1049
Russisch
ru-RU
1058
Ukrainisch
uk-UA
1059
Belarussisch
be-BY
1064
Tadschikisch
tg-Cyrl-TJ
1067
Armenisch – Armenien
hy-AM
1068
Aserbaidschanisch (lateinische Schrift)
az-Latn-AZ
1079
Georgisch
ka-GE

Als Nächstes ruft das SafePay-Sample Befehlszeilenargumente ab und decodiert zusätzliche Zeichenfolgen. Diese Zeichenfolgen sind unterstützte Argumente:

Argument
Beschreibung
<-uac>
UAC-Umgehungsflag
<-network>
Netzwerk-Ausbreitung
<-selfdelete>
Selbstlöschung nach Ausführung
<-log>
Protokollierung aktivieren
<-netdrive>
Netzwerk-Laufwerke verschlüsseln
<-pass=>
Kennwort bereitstellen
<-path=>
Einen Pfad zum Verschlüsseln bereitstellen
<-enc=>
Verschlüsselungsstufe bereitstellen

Zum Parsing der Argumente greift das SafePay-Sample auf die Befehlszeile zu, die schon zur Ausführung des Samples verwendet wurde, und speichert sie als Array von Argumenten, das in der Schleife mit der gespeicherten Liste verglichen wird. Wenn ein Element eines Arrays mit einer gespeicherten Liste verglichen wird, addiert das Sample '1' zum Array-Indexwert. Wenn ein Argument übereinstimmt, wird der entsprechende Wert auf '1' gesetzt.

Acronis

Während einige Argumente nur gesetzte Flags sind, müssen andere zusätzliche Informationen enthalten. Ein Kennwort-Argument muss beispielsweise aus 38 Zeichen bestehen, einschließlich der Teilzeichenfolge '-pass='. In jedem anderen Fall wird das Programm beendet. Das Kennwort muss 32 Byte lang sein und wird dazu verwendet, zusätzliche Informationen im Code zu entschlüsseln. Wenn das Kennwort unbekannt ist, kann der gesamte Prozess nicht ausgeführt werden.

Acronis

Das Argument für die Verschlüsselungsstufe muss aus sechs Zeichen bestehen, einschließlich der Teilzeichenfolge '-enc='. Für dieses Argument werden Zahlen von '1' bis '9' akzeptiert. Dieser Wert wird mit 10 multipliziert und dient als Prozentsatz für die Dateiverschlüsselung. Beispielsweise zwingt der Wert '5' das Sample, 50 % der Datei zu verschlüsseln.

Acronis

Nachdem die Argumente analysiert wurden, legt das SafePay-Beispiel eine neue Zugriffssteuerungsliste (ACL) an und ergänzt sie um einen ACE (Zugriffssteuerungseintrag), der den Zugriff verweigert. Diese Liste wird in der Funktion 'SetSecurityInfo' verwendet.

Acronis

Als Nächstes versucht das Sample, die Berechtigung 'SeDebugPrivilege' zu erhalten.

Acronis

Nachdem diese Berechtigung erlangt wurde, erstellt das Sample einen Snapshot aller laufenden Prozesse im System. Das Sample vergleicht dann deren Namen mit denen in der eigenen gespeicherten Liste, die ebenfalls in verschlüsselter Form vorliegt. Wenn der entsprechende Prozess gefunden wurde, wird er beendet.

Hier ist eine Liste der Prozesse, die beendet werden müssen:

sql, oracle, ocssd, dbsnmp, synctime, agntsvc, isqlplussvc, xfssvccon, mydesktopservice, ocautoupds, encsvc, firefox, tbirdconfig, mydesktopqos, ocomm, dbeng50, sqbcoreservice, excel, infopath, msaccess, mspub, far, onenote, outlook, powerpnt, steam, thebat, thunderbird, visio, winword, wordpad, notepad, wuauclt, onedrive, sqlmangr

Neben den Prozessen beendet das Sample auch einige Dienste. Zunächst öffnet es den Dienst-Manager und sucht dann erneut nach Dienst-Namen, die mit seiner eigenen Liste übereinstimmen. Das Sample beendet dann Dienste mit der Funktion 'ControlService' und dem Wert '1' im Argument 'dwControl'.

Acronis

Die Liste der Dienste, die beendet werden:

Nach dem Leeren des Papierkorbs mit der Funktion 'SHEmptyRecycleBinW' lädt das Sample den Registry-Pfad 'Software\Microsoft\Windows\CurrentVersion\Run' und erstellt einen neuen Schlüssel mit einem Befehl, der zur Ausführung des Samples verwendet wurde (einschließlich aller Argumente). Dadurch wird SafePay bei jedem Start von Windows ausgeführt.

Wenn das Flag '-uac' übergeben wird, missbraucht das Sample die CMSTPLUA-COM-Schnittstelle, um Befehle mit erhöhten Berechtigungen mithilfe der API-Funktion 'ShellExecuteW' auszuführen:

/c vssadmin delete shadows /all /quiet

/c wmic shadowcopy delete

/c bcdedit / set{default} bootstatuspolicy ignoreallfailures

/c bcdedit / set{default} recoveryenabled no

Wenn das Argument '-log' angegeben wird, erstellt das Sample eine Protokolldatei namens 'C:\ProgramData\auto.log'. Es enthält die PID (Prozess-ID), die entsprechende Zeit und eine Beschreibung der durchgeführten Operation.

Datei-Verschlüsselung

Bevor die Verschlüsselungsroutine gestartet wird, öffnet das SafePay-Sample einen Handle zum vom System standardmäßig verwendeten Kryptografiedienstanbieter (CSP) vom Typ 'RSA_AES'.

Acronis

Jeder Verschlüsselungs-Thread wird im angehaltenen Modus erstellt. Nach der Thread-Erstellung setzt das Sample das Flag 'ThreadHideFromDebugger' auf den Thread, um ein Debugging zu verhindern, und legt die zuvor duplizierte Token-Informationen fest.

Um Laufwerke auf dem System zu finden, verwendet das Sample die Importe 'GetVolumePathNamesForVolumeNameW' und 'GetLogicalDrives'. Bei jedem Laufwerk wird dessen Typ überprüft. Das SafePay-Sample wird ein Laufwerk nur dann verschlüsseln, wenn es den Typ 2 (DRIVE_REMOVABLE) oder 3 (DRIVE_FIXED) hat. Zusätzliche Laufwerksinformationen werden über 'DeviceIoControl' mit dem Steuercode 'IOCTL_DISK_GET_PARTITION_INFO' abgerufen. Wenn ein nicht gemountetes Laufwerk gefunden wird, wird es vom Sample mit der Funktion 'SetVolumeMountPoint' gemountet.

Acronis

Um Dateien auf dem System zu finden, lädt das Sample die gefundenen Laufwerksnamen und verwendet die Funktionen 'FindFirstFile' und 'FindNextFile'. Für jede Datei wird der Parameter 'dwFileAttributes' überprüft. Wenn der Parameter mit 16 übereinstimmt (was für einen Ordner steht), wird das Sample dieselbe Funktion mit dem gefundenen Ordnerpfad aufrufen.

Acronis

Wenn das Sample eine Datei mit 'CreateFileW' öffnet, setzt es den Wert 'dwFlagsAndAttributes' auf '0x04000000', was dem Flag 'FILE_FLAG_DELETE_ON_CLOSE' entspricht. Das Sample wird dann die geöffnete Datei löschen, sobald das Sample seinen Handle schließt.

Acronis

Das Sample generiert für jede Datei 32 zufällige Bytes, die als AES-Schlüssel verwendet werden. Dann wird der AES-Schlüssel mit dem RSA-Algorithmus verschlüsselt.

Acronis

Nachdem jede Datei im Verzeichnis verschlüsselt wurde, verwendet das Sample die APIs 'CreateIOCompletionPort' und 'PostQueuedCompletionStatus', um die Multithread-Verschlüsselung sicher durchzuführen. Abschließend wird die Datei durch das Sample umbenannt, wobei die Erweiterung '.safepay' an die Datei angehängt wird.

Acronis

Fazit

Die Ransomware SafePay setzt auf doppelte Erpressung, um sicherzustellen, dass die betreffenden Opfer eine Lösegeldzahlung leisten müssen. Nachdem die Angreifer:innen zuerst bestimmte Dateien exfiltriert haben, schleusen sie eine Malware ein, um die Dateien der Benutzer:innen mit einer wirksamen Kombination aus AES- und RSA-Algorithmus zu verschlüsseln. Das SafePay-Sample ist eine DLL-Datei, für deren Ausführung die Hilfsprogramme 'regsvr32.exe' oder 'rundll32.dll' erforderlich sind. Das Sample akzeptiert mehrere Argumente, erfordert jedoch immer das Argument '-pass=', weil das damit verknüpfte Kennwort verwendet wird, um zusätzliche Informationen im Code zu dechiffrieren. Alle gespeicherten Zeichenfolgen und Importnamen werden in verschlüsselter Form gespeichert, sodass SafePay vor seiner Ausführung nur schwer zu erkennen ist.

Von Acronis erkannt

Acronis

Kompromittierungsindikatoren (Indicators of Compromise, IoCs)

Dateien

SHA256

a0dc80a37eb7e2716c02a94adc8df9baedec192a77bde31669faed228d9ff526

Netzwerk-Indikatoren

URL
http://nz4z6ruzcekriti5cjjiiylzvrmysyqwibxztk6voem4trtx7gstpjid.onion
VanessaCooke94@protonmail.com