15 de julio de 2025

Ransomware SafePay: la amenaza emergente que acecha a los MSP

Resumen

  • En el primer trimestre de 2025, un grupo de ransomware pasó rápidamente del anonimato a convertirse en uno de los grupos delictivos más activos y peligrosos del panorama global de amenazas: SafePay. Ha ganado impulso de forma sigilosa pero agresiva, atacando a más de 200 víctimas a nivel mundial, entre las que se incluyen proveedores de servicios gestionados (MSP) y pymes de diversos sectores.
  • La Unidad de investigación de amenazas (TRU) de Acronis analizó varias muestras de SafePay y confirmó que este grupo de ransomware emplea tácticas recicladas pero altamente eficaces, como desactivar la protección de endpoints, eliminar instantáneas y borrar registros para evadir las funciones de detección y respuesta.
  • A diferencia de muchos grupos de ransomware que dependen de afiliados en un modelo de ransomware como servicio (RaaS), SafePay parece operar con una administración centralizada, ya que gestiona sus propias operaciones, infraestructuras y negociaciones.
  • El grupo emplea técnicas clásicas pero eficaces: intrusión basada en RDP y VPN, robo de credenciales, elevación de privilegios y uso de binarios legítimos del sistema ("living-off-the-land") para moverse sin levantar sospechas a través de las redes de las víctimas, extraer sus datos confidenciales y posteriormente cifrar sus archivos.
  • Recientemente, se descubrió que SafePay fue el autor de un ataque de ransomware que interrumpió las operaciones de Ingram Micro, un distribuidor global que presta servicio a miles de partners y MSP.

Ransomware SafePay: ¿el heredero de Lockbit?

SafePay apareció por primera vez en 2024. Durante su primer año de actividad, atacó a más de 20 víctimas. Aunque se desconoce si SafePay es un nuevo grupo de ransomware o el mismo grupo anterior con nombre diferente, sus muestras comparten muchas similitudes con la familia de ransomware LockBit, un conocido generador de ransomware. En 2022, se filtró el código fuente del generador de LockBit 3.0. Después de la filtración, aparecieron variedades nuevas de ransomware. La versión 3.0 del generador también se conoce como "LockBit Black" porque comparte muchas similitudes con el ransomware BlackByte.

La muestra del ransomware SafePay que ha analizado la TRU es una DLL PE32 con una fecha/hora de compilación falsa.

Acronis
Acronis

Ransomware SafePay: ¿el heredero de Lockbit?

SafePay apareció por primera vez en 2024. Durante su primer año de actividad, atacó a más de 20 víctimas. Al igual que Akira y Lynx, SafePay podría ser una versión de otro ransomware. Las muestras de SafePay comparten similitudes con la familia de malware LockBit 3.0, un conocido generador de ejecutables personalizados de ransomware que opera como ransomware como servicio (RaaS). Hoy en día, el principal objetivo de SafePay son empresas del sector privado de varios países. En 2022, se filtró el código fuente del generador de LockBit 3.0 que empleaba SafePay. Después de la filtración, aparecieron variedades nuevas de ransomware. La versión 3.0 del generador de LockBit también se conoce como "LockBit Black" porque comparte similitudes con el ransomware BlackByte.

Detalles técnicos

Descripción general

La muestra del ransomware SafePay es una DLL PE32 con una fecha/hora de compilación falsa. La primera similitud con LockBit es una función ficticia que tiene una serie de llamadas secuenciales a la API de Windows. Escribir llamadas de esa manera no tiene ningún sentido, ya que no se pasan argumentos a esas funciones, lo que causará errores. De hecho, en ambos casos, nunca se llamará a esas funciones, ya que la ejecución se terminaría antes de que la muestra pueda entrar en esta sección.

Otras similitudes con LockBit:

●      Requiere contraseña para la ejecución completa.

●      Todas las cadenas están codificadas.

●      Todas las direcciones de WinAPI se resuelven durante la ejecución.

●      Evasión de sistemas con el mismo idioma.

●      Abuso de la interfaz COM CMSTPLUA para la elevación de privilegios.

●      Los hilos creados tienen el indicador "ThreadHideFromDebugger".

●      Incluye una lista de procesos y servicios que deben terminarse.

 

Aunque la muestra no sea una copia completa de LockBit 3.0 y presenta algunas diferencias, es común que los ciberdelincuentes cambien el código fuente para hacer que su malware sea más único y, lo que es más importante, para añadir nuevas funciones y mejorar su capacidad de evasión frente a los mecanismos de detección.

Entrega y exfiltración

El ransomware SafePay se entregó a las víctimas mediante conexiones RDP. Aunque se desconoce cómo los ciberdelincuentes obtuvieron las credenciales, la técnica les permitió desactivar Windows Defender y cargar archivos al servidor C2 antes de cifrarlos. Antes de exfiltrar archivos, los atacantes ejecutaron el script "ShareFinder.ps1", que encuentra todos los recursos compartidos de red disponibles en el dominio local. Dicho script se tomó del siguiente proyecto de código abierto:

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

 

Este script encuentra recursos compartidos de red en hosts del dominio local. Anteriormente se detectó en ataques de Emotet, así como durante la campaña C0015, que se utilizó para desplegar el ransomware Conti.

Para recopilar archivos en el sistema, se utilizó el programa WinRar con el siguiente comando:

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\

Después de archivar los archivos, se desplegó un cliente FileZilla para exfiltrar archivos al servidor C2. Una vez finalizado el proceso, tanto WinRar como FileZilla se eliminaron de los objetivos.

Acronis

Ejecución

Al inicio de la ejecución, SafePay descifra cadenas. Utiliza un bucle, donde realiza la operación XOR tres veces en cada byte. Cada operación utiliza una clave diferente. La primera emplea el valor actual del índice. La segunda utiliza el primer símbolo de "kernel32.dll", que siempre es "M". La última clave es un valor constante, que es diferente para cada cadena cifrada. Esta rutina de descifrado no está implementada como una función separada, sino que se utiliza para descifrar cada cadena que contiene la muestra. La muestra contiene cadenas solo en formato cifrado.

Acronis

La muestra tampoco contiene la tabla de funciones de importación. Descifra los nombres de las bibliotecas y los carga mediante la importación "LoadLibrary"; además, resuelve y guarda las direcciones de sus funciones de exportación mediante "GetProcAddress". A continuación se muestra una lista de nombres de bibliotecas que SafePay almacena en un formato cifrado:

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

Después de obtener las importaciones adicionales, la muestra de SafePay obtiene la fecha/hora actual y el idioma de la interfaz de usuario de Windows. A continuación, comprueba si el número ID del idioma del sistema es mayor o menor que los guardados. Después la muestra saltará a una sección particular con otra comparación de números.

Acronis

Mediante la instrucción "switch-case", SafePay puede continuar la ejecución o saltar a la función de salida cuando el valor obtenido coincida con uno de los siguientes números:

Código
Descripción
Código BCP 47
1049
Ruso
ru-RU
1058
Ucraniano
uk-UA
1059
Bielorruso
be-BY
1064
Tayiko
tg-Cyrl-TJ
1067
Armenio – Armenia
hy-AM
1068
Azerbaiyano (Latino)
az-Latn-AZ
1079
Georgiano
ka-GE

A continuación, la muestra de SafePay obtiene argumentos de línea de comando y descodifica cadenas adicionales. Esas cadenas son argumentos admitidos:

Argumento
Descripción
<-uac>
Indicador de evasión de UAC.
<-network>
Propagación de red.
<-selfdelete>
Autoeliminación después de la ejecución.
<-log>
Habilitar registro.
<-netdrive>
Cifrar unidades de red.
<-pass=>
Proporcionar contraseña.
<-path=>
Proporcionar una ruta para el cifrado.
<-enc=>
Proporcionar nivel de cifrado.

Para analizar argumentos, la muestra de SafePay captura la línea de comando que se utilizó para ejecutarse y la almacena como una matriz ("array") de argumentos, que en el bucle se comparará con la lista guardada. Cuando un elemento de una matriz se compara con una lista guardada, la muestra añade "1" al valor del índice de la matriz. Cuando coincide algún argumento, se establece el valor correspondiente a "1".

Acronis

Mientras que algunos argumentos son solo indicadores establecidos, otros deben contener información adicional. Por ejemplo, un argumento de contraseña debe constar de 38 símbolos, incluida la subcadena "-pass=". De lo contrario, el programa se cerrará. La contraseña debe tener 32 bytes de longitud y utilizarse para descodificar información adicional en el código. Si la contraseña es desconocida, no se puede realizar todo el proceso de ejecución.

Acronis

El argumento de nivel de cifrado debe tener seis símbolos, incluida la subcadena "-enc=". Este argumento acepta números del "1" al "9". Este valor se multiplicará por 10 y servirá como porcentaje de cifrado del archivo. Por ejemplo, proporcionar el valor "5" obligará a la muestra a cifrar el 50 % del archivo.

Acronis

Después de analizar los argumentos, la muestra de SafePay creará una nueva lista de control de acceso (ACL) y añadirá una entrada de control de acceso (ACE) con acceso denegado. Esta lista se utiliza en la función "SetSecurityInfo".

Acronis

A continuación, la muestra intenta obtener "SeDebugPrivilege".

Acronis

Después de obtener este privilegio, la muestra crea una instantánea de todos los procesos en ejecución en el sistema. Posteriormente, compara sus nombres con una lista propia almacenada en formato codificado. Cuando encuentra el proceso correspondiente, lo finaliza.

A continuación se muestra una lista de los procesos que deben finalizarse:

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

Además de los procesos, la muestra también finaliza algunos servicios. Primero, abre el administrador de servicios y luego comienza de nuevo a buscar nombres de servicios que coincidan con su propia lista. La muestra procederá entonces a terminar los servicios mediante la función "ControlService" y el valor "1" en el argumento "dwControl".

Acronis

A continuación se incluye la lista de los servicios que se terminarán:

vss, sqlsvc, memtas, mepocs, msexchange, Sophos, Veeam, backup, GxVss, GxBlr, GxFWD, GxCVD, GxCIMgr

Después de vaciar la Papelera de reciclaje mediante la función "SHEmptyRecycleBinW", la muestra carga la ruta del registro "Software\Microsoft\Windows\CurrentVersion\Run" y crea una nueva clave con un comando que se utilizó para ejecutar la muestra, incluidos todos los argumentos. Esto hará que SafePay se ejecute cada vez que Windows se inicie.

Si se pasa el indicador "-uac", la muestra abusa de la interfaz COM CMSTPLUA para ejecutar comandos con permisos elevados mediante la función de la API "ShellExecuteW":

/c vssadmin delete shadows /all /quiet

/c wmic shadowcopy delete

/c bcdedit / set{default} bootstatuspolicy ignoreallfailures

/c bcdedit / set{default} recoveryenabled no

Si se proporciona el argumento "-log", la muestra creará un archivo de registro: "C:\ProgramData\auto.log". Dicho archivo contiene el PID (identificador de proceso), la hora y la descripción de la operación realizada.

Cifrado de archivos

Antes de iniciar la rutina de cifrado, la muestra de SafePay abre el identificador al proveedor de servicios criptográficos predeterminado del sistema con tipo RSA_AES.

Acronis

Cada hilo de cifrado se creará en modo suspendido. Después de la creación del hilo, la muestra establece el indicador "ThreadHideFromDebugger" en el hilo para evitar su depuración y establece la información del token previamente duplicado.

Para encontrar unidades en el sistema, la muestra utiliza las importaciones "GetVolumePathNamesForVolumeNameW" y "GetLogicalDrives". Cada unidad se verifica según su tipo. La muestra de SafePay cifrará la unidad solo si es de tipo 2 (DRIVE_REMOVABLE) o 3 (DRIVE_FIXED). Se obtendrá información adicional del disco mediante "DeviceIoControl" con el código de control "IOCTL_DISK_GET_PARTITION_INFO". Si encuentra una unidad desmontada, la muestra la montará mediante la función "SetVolumeMountPoint".

Acronis

Para buscar archivos en el sistema, la muestra carga los nombres de las unidades encontradas y utiliza las funciones "FindFirstFile" y "FindNextFile". Para cada archivo, comprueba el parámetro "dwFileAttributes". Si el parámetro coincide con "16", que es un directorio, la muestra llamará a la misma función con la ruta de la carpeta encontrada.

Acronis

Cuando la muestra abre un archivo mediante "CreateFileW", establece el valor "dwFlagsAndAttributes" a "0x04000000", que es el indicador "FILE_FLAG_DELETE_ON_CLOSE". A continuación, la muestra eliminará el archivo abierto justo después de que la muestra cierre su identificador.

Acronis

La muestra genera 32 bytes aleatorios para cada archivo, que se utilizan como clave AES. Posteriormente, la clave AES se cifrará mediante el algoritmo RSA.

Acronis

Después de cifrar cada archivo en el directorio, la muestra utiliza las API "CreateIOCompletionPort" y "PostQueuedCompletionStatus" para gestionar el cifrado multiproceso de forma segura. Por último, la muestra cambia el nombre del archivo, añadiéndole la extensión ".safepay".

Acronis

Conclusión

El ransomware SafePay utiliza la doble extorsión para asegurarse de que las víctimas paguen sus rescates. Al exfiltrar archivos primero, los atacantes despliegan malware para cifrar los archivos de los usuarios mediante una fuerte combinación de cifrados AES y RSA. La muestra de SafePay es un archivo DLL, que requiere las utilidades "regsvr32.exe" o "rundll32.dll" para su ejecución. La muestra acepta múltiples argumentos, pero siempre requiere el argumento "-pass=", ya que esta contraseña se utiliza para descodificar información adicional en el código. Todas las cadenas guardadas y los nombres de importación se almacenan en un formato cifrado, lo que hace que SafePay sea difícil de detectar antes de que se ejecute.

Detectado por Acronis

Acronis

Indicadores de compromiso

Archivos

SHA256

a0dc80a37eb7e2716c02a94adc8df9baedec192a77bde31669faed228d9ff526

Indicadores de redes

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