Algunos de los códigos utilizados en el ransomware se parecen a los utilizados en el malware Dridex, lo que sugiere un origen común
Un par de incidentes en diferentes organizaciones en los que los atacantes desplegaron un ransomware llamado Entropy fueron precedidos por infecciones con herramientas que proporcionaron a los atacantes acceso remoto – balizas Cobalt Strike y malware Dridex – en algunos de los ordenadores de los objetivos, antes de que los atacantes lanzaran el ransomware.
Los analistas de Sophos no habían encontrado a Entropy antes de estos incidentes. En particular, hubo diferencias significativas en las metodologías empleadas por los atacantes en ambos casos: La forma en que los atacantes se hicieron con los objetivos, el tiempo que pasaron dentro de la red del objetivo y el malware que se utilizó para preparar la fase final del ataque fueron sustancialmente diferentes.
Algunos aspectos de los ataques eran consistentes: En ambos casos, los atacantes recurrieron en gran medida a Cobalt Strike como medio para infectar más máquinas, obteniendo niveles de éxito variables en función de si el objetivo tenía protección instalada en una determinada máquina. Los atacantes también realizaron una exfiltración redundante de datos privados a más de un proveedor de almacenamiento en la nube. Durante un análisis forense, encontramos múltiples instancias de Dridex, el conocido malware de propósito general que sus operadores pueden utilizar para distribuir otro malware.
En el primer incidente, los atacantes se aprovecharon de la vulnerabilidad ProxyShell en la red perteneciente a una organización de medios de comunicación norteamericana, para instalar un shell remoto en el servidor Exchange del objetivo, y lo aprovecharon para propagar las balizas Cobalt Strike a otros ordenadores. Durante un período de cuatro meses, los atacantes se tomaron su tiempo para sondear la organización y robar datos, antes de lanzar el ataque a principios de diciembre. Los análisis forenses posteriores al ataque revelaron varias cargas útiles de Dridex en algunas de las máquinas infectadas.
El análisis del segundo ataque de Entropy -esta vez contra una organización gubernamental regional- reveló que un archivo adjunto de correo electrónico malicioso había infectado el ordenador de un usuario con el troyano de la red de bots Dridex, y que los atacantes utilizaron Dridex para entregar malware adicional (así como la utilidad comercial de acceso remoto ScreenConnect) y moverse lateralmente dentro de la red del objetivo. Es significativo que en este segundo ataque, sólo pasaron unas 75 horas entre la detección inicial de un intento de inicio de sesión sospechoso en una sola máquina y el inicio de la exfiltración de datos del objetivo por parte de los atacantes, que instalaron y utilizaron WinRAR para comprimir los archivos y luego los subieron a diversos proveedores de almacenamiento en la nube, como privatlab.com, dropmefiles.com y mega.nz.
Y aunque no todos los equipos de las redes de ambas organizaciones tenían instalada la protección de puntos finales antes del ataque, en los que existía la protección, los atacantes intentaron sin éxito ejecutar el ransomware y encontraron una firma de detección intrigantemente coincidente: El código empaquetador utilizado para proteger el ransomware Entropy fue recogido por una firma de detección (Mal/EncPk-APX) que los analistas habían creado previamente para detectar el código empaquetador empleado por Dridex.
Bajo un escrutinio adicional de ingeniería inversa, los analistas de SophosLabs descubrieron que algunas de las otras subrutinas que el ransomware utiliza para ofuscar su comportamiento (y dificultar su estudio por parte de los analistas) recordaban a las subrutinas utilizadas para funciones similares en Dridex, aunque no de forma concluyente, y no sin un gran esfuerzo para eliminar otras ofuscaciones que complicaban el proceso de comparación de códigos.
Comportamiento de los atacantes y uso de herramientas gratuitas y comerciales
En ambos casos, los atacantes del ransomware utilizaron herramientas de libre acceso, como las herramientas PsExec y PsKill de Windows Sysinternals, y la utilidad AdFind, diseñada para que los administradores de TI puedan consultar los servidores de Active Directory. También utilizaron la utilidad de compresión gratuita WinRAR para empaquetar las colecciones de datos privados que robaron, y luego las subieron a una variedad de proveedores de almacenamiento en la nube utilizando el navegador Chrome.
Estas tácticas son, por desgracia, bastante comunes entre los actores de amenazas de ransomware. Las herramientas de protección de puntos finales no suelen bloquear el uso de estos y otros programas de utilidad, ya que tienen usos legítimos.
Los atacantes, en ambos casos, intentaron repetidamente (y sin éxito) cargar y lanzar las herramientas de control remoto Cobalt Strike en las máquinas durante la fase final del ataque. En el segundo ataque, tras múltiples intentos fallidos de utilizar Cobalt Strike, también intentaron instalar Meterpreter de Metasploit en algunas máquinas, y finalmente decidieron instalar una herramienta comercial de acceso remoto llamada ScreenConnect. Los atacantes intentaron utilizar herramientas de intercambio de archivos dentro de ScreenConnect para empujar Cobalt Strike a las máquinas protegidas, pero finalmente fracasaron.
Finalmente, los atacantes dejaron caer un conjunto de archivos en un servidor de Active Directory del que habían tomado el control. El actor de la amenaza dejó caer estos archivos en C:\share$:
- comps.txt – List of hosts to attack.
- pdf.dll – The ransomware payload
- PsExec.exe – a legitimate application by Microsoft
- COPY.bat – Instructions to copy pdf.dll to all the hosts using PsExec
- EXE.bat – Instructions to execute pdf.dll to all the hosts using PsExec
Luego ejecutó el A continuación, ejecutaron la secuencia de comandos por lotes COPY, seguida de la secuencia de comandos por lotes EXE.
Comparación de subrutinas en Dridex y Entropy
Las muestras de Entropy en ambos casos se entregaron en forma de archivos DLL de Windows compilados para una arquitectura de 32 bits. Las cargas útiles de Dridex se recuperaron de varios sistemas tanto en formato EXE como DLL, compilados para arquitecturas de 32 y 64 bits. Para nuestra comparación, nos fijamos en los bots Dridex de 32 bits.
Los actores de la amenaza habían compilado versiones personalizadas de la DLL del ransomware Entropy para cada organización objetivo. El malware contiene referencias codificadas a la organización objetivo en su código, incluido el texto y las imágenes que posteriormente se utilizan en una nota de rescate HTML que se deja caer en las máquinas infectadas.
La nota de rescate advierte a las víctimas de que no contacten con la policía o el FBI («No te escucharán ni se preocuparán por tu negocio») ni contraten a negociadores de rescates o empresas de recuperación de datos («Creen que son buenos en las negociaciones, pero no lo son. Cogerán tu dinero, tendrán una pequeña charla con nosotros con sus patéticos guiones (oh sí, nos sabemos casi todas sus líneas) y FALLARÁN») con la palabra FALLAR enlazando con una investigación de ProPublica de 2019 que informaba de cómo algunas empresas que dicen estar especializadas en la recuperación de datos de ransomware se limitan a pagar el rescate.
Los atacantes lo ejecutaron utilizando una línea de comandos que pasaba dos parámetros a la DLL; El primero es una llamada a una función estándar, DllRegisterServer, pero el segundo parámetro era una cadena de caracteres de aspecto aleatorio que sirve como una especie de contraseña: el ransomware no se ejecutaría correctamente sin ella.
Afortunadamente, pudimos encontrar el comando preciso que los atacantes utilizaron para lanzar el malware, por lo que pudimos estudiar las muestras en un entorno controlado. El comando de ejecución de Entropy tenía este aspecto:
regsvr32 c:\users\public\xyz.dll DllRegisterServer <20 random characters>
El ransomware tendría necesariamente diferencias funcionales significativas con respecto a un botnet de propósito más general como Dridex, lo que complica una comparación línea por línea. En su lugar, estudiamos aspectos del código que aparentemente utilizan ambos malware en un intento de complicar el análisis: El código del empaquetador, que impide un fácil análisis estático del malware subyacente; una subrutina que los programas utilizan para ocultar las llamadas a la API que realizan; y una subrutina que descifra las cadenas de texto cifradas incrustadas dentro del malware.
Desciframiento de cadenas de entropía y subrutinas de resolución de la API
También examinamos otros dos aspectos del comportamiento del ransomware y lo comparamos con subrutinas similares encontradas en Dridex. Una de estas subrutinas se utiliza para descifrar las cadenas cifradas incrustadas en el malware.
En esta comparación, la forma Dridex de esta subrutina aparece a la izquierda, y la forma Entropy aparece a la derecha. El analista que examinó estos ejemplos tuvo que limpiar significativamente el código para producir esta comparación. Describieron la lógica de descifrado de cadenas como un flujo de código y una lógica fundamentalmente similares, pero «con un poco de optimización» en la versión de Entropy.
Asimismo, el analista comparó el código fuente de las subrutinas que Dridex y Entropy utilizan para resolver las llamadas a la API. Aunque hay pequeñas diferencias (Dridex toma dos valores hash como entrada, mientras que Entropy sólo toma uno), los analistas dicen que la lógica para «caminar» (navegar a través de todas las API disponibles) y luego analizar el Bloque de Entorno de Proceso (PEB) y la lista de módulos, parece notablemente similar.
En resumen, este comportamiento de recorrer las estructuras para obtener el nombre de la DLL base, y eventualmente sus direcciones de función – usando PEB_LDR_DATA y LDR_DATA_TABLE_ENTRY – es un rasgo de comportamiento compartido tanto por Entropy como por Dridex.
Detección y orientación
En ambos casos, los atacantes se basaron en una falta de diligencia: ambos objetivos tenían sistemas Windows vulnerables que carecían de parches y actualizaciones actuales. Unas máquinas debidamente parcheadas, como el servidor Exchange, habrían obligado a los atacantes a esforzarse más para lograr su acceso inicial a las organizaciones en las que penetraron. El requisito de utilizar la autenticación multifactor, si hubiera estado en vigor, habría creado más dificultades para que los usuarios no autorizados pudieran acceder a esas u otras máquinas.
Las infecciones del ransomware Entropy fueron precedidas por detecciones de balizas Cobalt Strike (ATK/Tlaboc-A), el malware Dridex (Mal/EncPk-APX, Troj/Dridex-AIZ) y los scripts por lotes (Troj/Agent-BCJY) que finalmente se utilizaron para propagar el ransomware a otras máquinas. Los componentes del ransomware se detectan de varias maneras: en la memoria, en el comportamiento y mediante la detección estática del empaquetador en tiempo de ejecución.
SophosLabs desea agradecer las contribuciones de Anand Ajjan, Colin Cowie, Abhijit Gupta, Steven Lott, Rahil Shah, Vikas Singh, Felix Weyne, Syed Zaidi y Xiaochuan Zhang a nuestro análisis de Dridex y Entropy, y a la metodología de los atacantes.