La semana pasada, los analistas de Sophos descubrieron un nuevo ransomware escrito en el lenguaje de programación Go que se llama a sí mismo Epsilon Red. El malware se entregó como la carga útil ejecutable final en un ataque controlado manualmente contra una empresa con sede en EEUU del sector hotelero en la que todos los demás componentes de la etapa inicial eran un script de PowerShell.
Según la dirección de la criptomoneda proporcionada por los atacantes, parece que al menos una de sus víctimas pagó un rescate de 4.29 BTC el 15 de mayo (valorado en aproximadamente 210.000 $ en esa fecha).
Si bien el nombre y las herramientas eran exclusivos de este atacante, la nota de rescate dejada en los ordenadores infectados, se parece a la nota dejada por el ransomware REvil, pero agrega algunas correcciones gramaticales. No existen otras similitudes obvias entre el ransomware Epsilon Red y REvil.
Parece que un servidor Microsoft Exchange de la empresa fue el punto inicial de entrada de los atacantes. No está claro si este fue habilitado por el exploit ProxyLogon u otra vulnerabilidad, pero parece probable que la causa principal fuera un servidor sin parches. Desde esa máquina, los atacantes utilizaron WMI para instalar otro software en las máquinas dentro de la red a las que podían acceder desde el servidor de Exchange.
El nombre Epsilon Red, como muchos acuñados por los creadores de ransomware, es una referencia a la cultura pop. El personaje Epsilon Red era un adversario relativamente oscuro de algunos de los X-Men en el universo de Marvel, un “súper soldado” supuestamente de origen ruso, luciendo cuatro tentáculos mecánicos y una mala actitud.
Sentar las bases con PowerShell
Durante el ataque, los ciberdelincuentes lanzaron una serie de scripts de PowerShell, numerados del 1.ps1 al 12.ps1 (así como algunos que solo fueron nombrados con una sola letra del alfabeto), que prepararon las máquinas atacadas para la carga útil final del ransomware y, finalmente, lo entregó e inició.
La orquestación de PowerShell fue, en sí misma, creada y activada por un script de PowerShell llamado RED.ps1 que se ejecutó en las máquinas de destino mediante WMI. El script recupera y descomprime en la carpeta system32 un archivo .7z que contiene el resto de los scripts de PowerShell, el ejecutable del ransomware y otro ejecutable.
También configura tareas programadas que ejecutan los scripts numerados del 1 al 12 pero omite el 7 y el 8, también crea tareas para los scripts denominados “S” y “C”.
Un comando típico de tarea programada se veía así:
C:\Windows\system32\schtasks.exe /create /tn Microsoft\Windows\TASK12 /tr "powershell -file c:\windows\system32\RED\12.ps1" /sc minute /mo 2 /ru SYSTEM /f
Por ejemplo, cuando los atacantes ejecutaron el script 2.ps1 en una máquina, ejecutaron un comando que borró las instantáneas de volumen de la computadora. Este es un precursor importante del ataque, ya que estos archivos podrían usarse para recuperar algunos o todos los archivos cifrados por los atacantes.
Un script de PowerShell llamado c.ps1 parece ser un clon de una herramienta de código abierto llamada Copy-VSS, parte de un conjunto de herramientas de prueba de penetración llamado Nishang. El script Copy-VSS permite a un atacante copiar el archivo SAM, que un atacante podría usar para recuperar y descifrar las contraseñas guardadas en el ordenador.
Escondido solo lo necesario
Los scripts de PowerShell también usan una forma rudimentaria de ofuscación en la que los ciberdelincuentes parecen haber agregado algunos corchetes y llaves al azar en el script, dividiendo las líneas del código de script de PowerShell y utilizando luego un comando que elimina esos corchetes.
Si bien esta técnica no tiene mucho efecto en nuestra capacidad para analizar los archivos, podría ser lo suficientemente buena como para evadir la detección de una herramienta anti-malware que está escaneando los archivos en el disco duro durante unos minutos, que es todo lo que realmente necesitan los atacantes.
Pudimos usar las mismas reglas que los atacantes establecieron para crear una receta usando CyberChef que elimina los caracteres extraños y hace que el guión sea legible por humanos.
Puertos de firewall bloqueados y borrado de pistas
La secuencia de comandos red.ps1 descomprime RED.7z en el directorio % SYSTEM%\RED, luego crea tareas programadas que ejecutan las secuencias de comandos descomprimidas. Pero luego, espera una hora y ejecuta comandos que modifican las reglas del Firewall de Windows de manera que el firewall bloquea las conexiones entrantes en todos los puertos TCP, excepto el 3389/tcp del protocolo de escritorio remoto y el puerto de comunicaciones utilizado por una herramienta comercial llamada Remote Utilities, 5650/tcp.
Curiosamente, lo hace bloqueando primero el tráfico entrante a los puertos 80 y 443, luego bloquea de forma redundante rangos grandes completos de puertos que incluyen 80 y 443, pero también excluye los puertos RDP y Remote Utilities: 1-3388, 3390-5649 y 5651 -65352.
Tras un análisis más profundo, una de las primeras cosas que hicieron los atacantes después de obtener acceso a la red del objetivo fue descargar e instalar una copia de Remote Utilities y Tor Browser, por lo que parece una forma de asegurarse de que tendrán un punto de apoyo alternativo si el punto de acceso inicial se bloquea.
Una herramienta comercial de acceso remoto inusual
El software comercial Remote Utilities, utilizado por los delincuentes, tiene varias características que pueden resultar útiles.
Por un lado, pueden usarlo gratis. Cualquiera puede enviar una dirección de correo electrónico a través del sitio web de la empresa y recibir una clave de licencia gratuita por correo electrónico que le permite utilizar toda la capacidad del producto en hasta 10 máquinas, a perpetuidad.
El software “Viewer” de la misma empresa incluye la posibilidad que un usuario con licencia genere un instalador ejecutable firmado digitalmente, preconfigurado con una contraseña y otras preferencias incrustadas en el .exe. Los usuarios eligen sus opciones, que se transmiten a la empresa a través de la aplicación para generar un ejecutable único “instalador de un clic” que el programa luego descarga. El atacante puede implementar este instalador, que se ejecuta sin supervisión y se sincroniza automáticamente con la consola del visor de utilidades remotas.
La consola también sirve como una utilidad de cliente de Escritorio remoto.
Descubrimos que los atacantes habían generado al menos dos de estos ejecutables del “instalador de un clic”, que descargaron en varias máquinas en la red objetivo y ejecutaron. El instalador se llamó rutserv.exe y los atacantes lo almacenaron en diferentes ubicaciones en diferentes máquinas en las que lo descargaron.
Ejecutando los scripts de orquestación
Inicialmente, el malware ejecuta los scripts numerados 9 y 12, a esto le sigue una espera de 180 segundos, antes de crear las tareas de 1 a 6, 10, 11 y S.ps1 y C.ps1. Por defecto, los atacantes extrajeron estos archivos a una carpeta llamada RED bajo la ruta % SYSTEM%. Cada uno de estos scripts realiza una tarea específica que los ciberdelincuentes utilizan para preparar el sistema antes de lanzar el ransomware. Muchas de estas tareas implican obstaculizar la seguridad o las herramientas de copia de seguridad, pero también implican desactivar o eliminar procesos que, si estuvieran en ejecución, podrían impedir un cifrado completo de los valiosos datos del disco duro.
No está claro si los atacantes solo estaban siendo minuciosos o si no estaban seguros de poder hacer lo que se propusieron, pero en varios casos los scripts crean comandos redundantes para lograr el mismo objetivo utilizando métodos ligeramente diferentes.
Por ejemplo, el archivo 1.ps1 busca procesos que contengan cualquiera de las siguientes cadenas en su nombre de proceso e intenta eliminarlos:
'sql','Sql','SQL','BASup','Titan','SBAM','sbam','vipre','Vipre','Cylance','cylance','Senti','senti','sql','backup','veeam','outlook','word','excel','office','ocomm','dbsnmp','onenote','firefox','xfssvccon','infopath','wordpa','isqlplussvc','sql','dbeng50','mspub','mydesktopqos','ocautoupds','thunderbird','encsvc','oracle','mydesktopservice','thebat','agntsvc','steam','ocssd','tbirdconfig','synctime','visio','sqbcoreservice','winword','msaccess','powerpnt','mepocs','memtas','svc$','vss','sophos','crm','quickbooks','pos','qb','sage','SQL','prc','w3wp','java','store','ax32','dbs','wordpad','VeeamAgent','Backup','Cloud','Mbae','MB3','WRSA','rsa','wrsa'
Estas cadenas indican que los atacantes no solo están tratando de cerrar las herramientas de seguridad, sino también los servicios de bases de datos, programas de respaldo, aplicaciones de oficina, clientes de correo electrónico, QuickBooks e incluso Steam, la plataforma de juegos.
2.ps1 elimina todas las instantáneas de volumen en el sistema ejecutando un solo comando (vssadmin.exe delete shadows /all /quiet), mientras que 3.ps1 deshabilita las reparaciones automáticas que Windows podría intentar ejecutar al reiniciar.
4.ps1 luego intenta eliminar las instantáneas de volumen usando un método diferente:
wmic shadowcopy delete /nointeractive
Get-WmiObject Win32_ShadowCopy | % { $_.Delete() }
Get-WmiObject Win32_ShadowCopy | Remove-WmiObject
Get-WmiObject Win32_Shadowcopy | ForEach-Object { $_Delete(); }
Get-CimInstance Win32_ShadowCopy | Remove-CimInstance
5.ps1 ejecuta dos comandos que, entre ellos, eliminan los registros de eventos de Windows, lo que dificultaría una investigación.
De manera similar a 1.ps1, 6.ps1 intenta matar no procesos sino servicios, basándose en una lista de cadenas que pueden aparecer en los nombres de los servicios:
‘sql’, ‘Sql’, ‘SQL’, ‘BASup’, ‘Titan’, ‘Cylance’, ‘cylance’, ‘Defend’, ‘NisSvc’, ‘Veeam’, ‘veeam’, ‘backup’, ‘Backup ‘,’ rsa ‘,’ wrsa ‘,’ WRSA ‘,’ RSA ‘
También deshabilita Windows Defender configurando la siguiente clave de registro de Windows:
reg add “HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Defender” /f /v DisableAntiSpyware /t REG_DWORD /d
9.ps1, que se ejecuta primero, intenta llamar al desinstalador para el software de seguridad de Sophos, Trend Micro, Cylance, MalwareBytes, Sentinel One, Vipre, Webroot y varios agentes de copia de seguridad en la nube.
10.ps1 luego, de forma redundante, ejecuta el ejecutable p.exe eliminado, que suspende los procesos que contienen las siguientes cadenas y borra sus registros:
'MpCmd','MsMp','Senti','senti','sql','backup','veeam','outlook','word','excel','office','ocomm','dbsnmp','onenote','firefox','xfssvccon','infopath','wordpa','isqlplussvc','sql','dbeng50','mspub','mydesktopqos','ocautoupds','thunderbird','encsvc','oracle','mydesktopservice','thebat','agntsvc','steam','ocssd','tbirdconfig','synctime','visio','sqbcoreservice','winword','msaccess','powerpnt','mepocs','memtas','svc$','vss','sophos','crm','quickbooks','pos','qb','sage','SQL','prc','w3wp','java','store','ax32','dbs','wordpad','VeeamAgent','Backup','Cloud','Mbae','MB3'
Y 11.ps1 agrega otra capa de redundancia, ejecutando los siguientes comandos que eliminan las instantáneas de volumen (¡nuevamente, por tercera vez!), Así como cambiando las opciones de recuperación y borrando los registros de eventos de otra manera.
‘vssadmin.exe Delete Shadows /All /Quiet’,
‘bcdedit /set {default} recoveryenabled no’,
‘wmic shadowcopy delete’,
‘wbadmin delete backup’,
‘wbadmin delete systemstatebackup -keepversions:0’,
‘bcdedit /set {default} bootstatuspolicy ignoreallfailures’,
‘bcdedit /set {default} recoveryenabled no’,
‘wevtutil.exe clear-log Application’,
‘wevtutil.exe clear-log Security’,
‘wevtutil.exe clear-log System’,
‘wbadmin delete systemstatebackup’,
‘wbadmin delete catalog -quiet’,
‘bootstatuspolicy ignoreallfailures’
Este nivel de redundancia puede ser una indicación de que este actor de amenazas no está seguro de las capacidades de sus propias herramientas, pero no está dispuesto a correr riesgos.
12.ps1 concede permisos de acceso de grupo “Todos” a cada letra de unidad que pueda existir en la máquina para garantizar que se cifren tantos archivos como sea posible.
El script red.ps1 también se borra a sí mismo, el archivo .7z y la copia local de 7zip del sistema cuando se ejecuta, eliminando la evidencia clave.
Además del ejecutable ransomware en sí, Labs recuperó y analizó otro ejecutable auxiliar que los ciberatacantes implementaron en las máquinas objetivo. El archivo, llamado p.exe, parece ser una versión compilada a medida de una herramienta de código abierto llamada EventCleaner, que se creó para borrar o manipular el contenido de los registros de eventos de Windows. Los atacantes utilizaron el componente p.exe para limpiar la evidencia de lo que habían hecho.
También mencionamos que había otros scripts de PowerShell entregados en el archivo .7z que los atacantes colocaron en las máquinas objetivo. Si bien no vimos evidencia de que fueran ejecutados en el contexto de este ataque, los guiones numerados 7, 8 y 9 tienen propósitos importantes. 7.ps1 cierra prácticamente todas las sesiones abiertas en el ordenador, 8.ps1 es una copia redundante del mismo script de reglas de firewall incluido en RED.ps1.
Ransomware básico
El ransomware en sí, llamado RED.exe, es un ejecutable de Windows de 64 bits programado en el lenguaje Go, compilado con una herramienta llamada MinGW y empaquetado con una versión modificada del empaquetador de tiempo de ejecución UPX.
El ejecutable contiene un código tomado de un proyecto de código abierto llamado godirwalk, que le da la capacidad de escanear el disco duro en el que se está ejecutando en busca de rutas de directorio y compilarlas en una lista. El ransomware genera un nuevo proceso secundario que cifra cada subcarpeta por separado, lo que después de un corto período de tiempo da como resultado una gran cantidad de copias del proceso de ransomware que se ejecutan simultáneamente.
El ransomware en sí es bastante pequeño, ya que solo se usa para realizar el cifrado de los archivos en el sistema de destino. No establece conexiones de red, y debido a que funciones como matar procesos o eliminar las instantáneas de volumen se han subcontratado a los scripts de PowerShell, es realmente un programa bastante simple.
En la muestra que hemos visto, ni siquiera contiene una lista de tipos de archivo o extensiones de archivo segmentados. De hecho, cifrará todo dentro de las carpetas que decida cifrar, incluidos otros ejecutables y DLL, que pueden hacer que los programas o todo el sistema no sean funcionales, si el ransomware decide cifrar la ruta de la carpeta incorrecta. Después de cifrar cada archivo, agrega el sufijo de archivo “.epsilonred” a los archivos y coloca una nota de rescate en cada carpeta.
Curiosamente, la nota de rescate se parece mucho a la nota utilizada por REvil, un ransomware mucho más utilizado. Pero la nota REvil suele estar plagada de errores ortográficos y gramaticales, sin embargo la nota entregada por Epsilon Red ha pasado por algunas ediciones para hacer que su texto sea más legible para una audiencia de hablantes nativos de inglés.
Se anima a las víctimas a visitar una URL especial en un sitio web operado en la web normal (epsilons[.]red) para interactuar con los atacantes.
Detecciones
Los productos de endpoint de Sophos, como Intercept X, detectarán de forma conductual varias de las acciones realizadas por los scripts de PowerShell o la carga útil del ransomware. La función CryptoGuard bloquea el acto de intentar cifrar archivos. Dado que el punto de entrada de este ataque parece haber sido un servidor de Exchange vulnerable por ProxyLogon, se insta a los clientes a que apliquen parches a los servidores de Exchange conectados a Internet lo antes posible. Los productos de endpoint de Sophos pueden proteger servidores Exchange, así como controladores de dominio o estaciones de trabajo.
Los indicadores de compromiso para esta amenaza se pueden encontrar en el Github de SophosLabs.
Agradecimientos
SophosLabs reconoce el trabajo de Anand Ajjan, Richard Cohen, Fraser Howard, Elida Leite, Mark Loman, Andrew Ludgate, Peter Mackenzie, Nirav Parekh y Gabor Szappanos para realizar un análisis completo de la amenaza y mejorar nuestra capacidad para detectar y bloquear malware como Epsilon Red en el futuro.