Entre los incidentes de ciberseguridad relacionados con malware más importantes de los últimos años está el ataque contra la red eléctrica de Ucrania (el cual derivó en apagones sin precedentes durante dos años seguidos) y el devastador brote del ransomware NotPetya. A continuación, te invitamos a ver detenidamente la relación entre estos dos importantes incidentes.

El primer apagón de la historia provocado por un malware tuvo lugar en diciembre de 2015 y fue causado por el paquete de herramientas maliciosas con características de APT conocida como BlackEnergy. Los investigadores de ESET han estado siguiendo la actividad del grupo detrás de BlackEnergy tanto antes como después del evento histórico. Luego del apagón de 2015, el grupo parece haber dejado de utilizar de manera activa BlackEnergy y evolucionó a lo que llamamos TeleBots.

Es importante aclarar que cuando nos referimos a “grupos de APT” establecemos conexiones sobre la base de indicadores técnicos, como pueden ser similitudes de código, infraestrucutra C&C compartida, cadenas de ejecución de malware, entre otras características. Por lo general, no nos involucramos directamente en la investigación y la identificación de quienes desarrollan el malware y/o que luego lo implementan o interactúan con ellos. Dado que el término “grupo de APT” suele estar más asociado con los indicadores del malware anteriormente mencionados y frecuentemente se utiliza simplemente para categorizar, nos mantenemos al margen de la especulación con respecto a la atribución de ataques a países o gobiernos.

Dicho esto, hemos observado y documentado lazos entre el ataque BlackEnergy (no solo los realizados contra la red eléctrica de Ucrania, sino contra varios sectores y blancos de gran valor) y una serie de campañas, en su mayoría contra el sector financiero ucraniano, por el grupo TeleBots. En junio de 2017, cuando muchas grandes corporaciones a lo largo del mundo fueron impactadas por el ransomware Diskcoder.C (también conocido como Petya y NotPetya) descubrimos que el brote comenzó a propagarse desde compañías que habían sido afectadas con el backdoor TeleBots, como consecuencia de haberse comprometido un popular software financiero M.E.Doc.

Entonces, ¿cómo es que Industroyer, el sofisticado malware utilizado para causar el apagón de diciembre de 2016, tiene que ver con todo esto? Poco después de que informamos públicamente nuestro hallazgo, algunas compañías de seguridad y medios de comunicación comenzaron a especular con que Industroyer fue creado por el grupo BlackEnergy/Telebots. Sin embargo, ninguna evidencia concreta había sido divulgada públicamente hasta ahora.

En abril de 2018, descubrimos nueva actividad del grupo TeleBots: un intento de desplegar un nuevo backdoor, detectado por ESET como Win32/Exaramel. Nuestro análisis sugiere que este backdoor de TeleBot es una versión mejorada del backdoor Industroyer –la primera pieza de evidencia que estaba faltando.

Análisis del backdoor Win32/Exaramel 

El backdoor Exaramel es inicialmente desplegado por un dropper. Metadatos en este dropper sugieren que el backdoor es compilado utilizando Microsoft Visual Studio justo antes de desplegarse en la computadora de una víctima.

Imagen 1. PE timestamp en el dropper del backdoor Win32/Exaramel.

Una vez ejecutado, el dropper despliega el binario del backdoor Exaramel dentro del directorio Windows system y crea e inicia un servicio de Windows llamado wsmproav con la descripción “Windows Check AV”. El nombre del archivo y la descripción del servicio de Windows están hardcodeados en el dropper.

Imagen 2. Detalles de la configuración en el registro del servicio de Windows creado por el backdoor Win32/Exaramel.

Adicionalmente, el dropper escribe la configuración del backdoor, dentro del registro de Windows, en formato XML.

Imagen 3. Configuración XML del backdoor Win32/Exaramel.

La configuración contiene varios bloques:

Interval – tiempo utilizado para la función “sleep”, en milisegundos

Servers – lista de servidores de comando y control (C&C)

Check – sitio web utilizado para determinar si el host tiene disponible una conexión a Internet

Proxy – servidor proxy en la red host

Storage – ruta utilizada para almacenar archivos programados para ser filtrados

Como se puede apreciar en la primera línea de la configuración, los atacantes están agrupando sus blancos de ataque según la solución de seguridad que utilizan. Un comportamiento similar puede encontrarse en el set de herramientas de Industroyer – específicamente, algunos backdoors de Industroyer se hacían pasar por servicios de antivirus (desplegados bajo el nombre de avtask.exe) y utilizaban la misma forma de agrupación.

Otro hecho interesante es que el backdoor utiliza servidores C&C con nombres de dominio que imitan a dominios que pertenecen a ESET. En este sentido, además de esetsmart[.]org en la configuración del backdoor, encontramos otro dominio similar: um10eset[.]net, el cual fue utilizado por la recientemente descubierta versión del Malware de Telebots para Linux. Es importante mencionar que estos servidores controlados por los atacantes no tienen ningún tipo de relación con la infraestructura de servidores legítima de ESET.  Hasta el momento no hemos visto que Exaramel use dominios que se hicieran pasar por otras compañías de seguridad.

Una vez que el backdoor se ejecuta, se conecta al servidor C&C y recibe comandos para ser ejecutadas. A continuación, una lista de los comandos disponibles:

  • Ejecutar procesos
  • Ejecutar procesos como usuario de Windows específico
  • Escribir datos en un archivo ubicado en una ruta específica
  • Copiar archivos dentro de un subdirectorio de almacenamiento (Upload file)
  • Ejecutar shell command
  • Ejecutar shell command de un usuario de Windows específico
  • Ejecutar código VBS utilizando MSScriptControl.ScriptControl.1

El código del bucle de comando y la implementación de los primeros seis comandos es muy parecido a los que se encontró en un backdoor utilizado en el set de herramientas de Industroyer.

Imagen 4. Comparación entre el código de descompilación del backdoor Win32/Exaramel (a la izquierda) y el del backdoor Win32/Industroyer (a la derecha).

Ambas familias de malware utilizan un archivo de reporte para almacenar el resultado saliente de comandos shell ejecutados y de procesos iniciados. En el caso del backdoor Win32/Industroyer, el archivo de reporte es almacenado en una carpeta temporal bajo un nombre de archivo aleatorio. En el caso del backdoor Win32/Exaramel, el archivo de reporte es nombrado report.txt y su ruta de almacenamiento es definida en el archivo de configuración del backdoor.

Con el objetivo de redirigir un estándar saliente (stdout) y un estándar de error (stderr) al archivo de reporte, ambos backdoors establecen los parámetros hStdOutput  y  hStdError para una manipulación del archivo de reporte. Esta es otra similitud de diseño entre esta familia de malware.

Imagen 5. Comparación entre el código descompilado del backdoor Win32/Exaramel (en la parte superior) y el backdoor Win32/Industroyer (en la parte inferior).

Si los operadores del malware desean exfiltrar archivos de la computadora de una víctima, solo necesitan copiar esos archivos en el subdirectorio data de la ruta de almacenamiento definida en la configuración. Una vez que el backdoor está a punto de realizar una nueva conexión con el servidor C&C de manera automática comprimirá y cifrará todos esos archivos antes de enviarlos.

La principal diferencia entre el backdoor usado por Industroyer y este nuevo backdoor de TeleBots, es que este último utiliza el formato XML para la comunicación y configuración en lugar de un formato binario personalizado.

Herramientas maliciosas para robar contraseñas

Junto con el backdoor Exaramel, este grupo utiliza algunas de sus antiguas herramientas, incluyendo algunas para robar contraseñas (conocido internamente por los atacantes como CredRaptor o PAI) y Mimikatz ligeramente modificado.

CredRaptor, la herramienta para robar contraseñas que se conoce desde 2016, fue ligeramente mejorada. A diferencia de versiones anteriores, recopila contraseñas guardadas no solo de los navegadores, sino también de Outlook y varios clientes de FTP. A continuación, una lista de las funcionalidades que tiene:

  • BitKinex FTP
  • BulletProof FTP Client
  • Classic FTP
  • CoffeeCup
  • Core FTP
  • Cryer WebSitePublisher
  • CuteFTP
  • FAR Manager
  • FileZilla
  • FlashFXP
  • Frigate3
  • FTP Commander
  • FTP Explorer
  • FTP Navigator
  • Google Chrome
  • Internet Explorer 7 – 11
  • Mozilla Firefox
  • Opera
  • Outlook 2010, 2013, 2016
  • SmartFTP
  • SoftX FTP Client
  • Total Commander
  • TurboFTP
  • Windows Vault
  • WinSCP
  • WS_FTP Client

Estas mejoras permiten a los atacantes recopilar credenciales de webmasters para sitios web y credenciales para servidores en infraestructuras internas. Una vez que logan el acceso a estos servidores, los atacantes podrían plantar backdoors adicionales ahí. Con frecuencia estos servidores son operados por sistemas operativos diferentes que Windows, por lo que los atacantes deben adaptar sus backdoors.

De hecho, durante nuestra respuesta a incidentes, descubrimos un backdoor para Linux utilizado por TeleBots, el cual nombramos Linux/Exaramel.A.

Analysis del backdoor Linux/Exaramel

El backdoor es escrito en el lenguaje de programación Go y compilado como un binario ELF en 64-bit. Los atacantes pueden desplegar el backdoor en un directorio elegido bajo cualquier nombre.

Si el backdoor es ejecutado por los atacantes con el string “none” como argumento en la línea de comando, entonces intenta utilizar mecanismos de persistencia con el objetivo de iniciar automáticamente luego del reboot. Si el backdoor no es ejecutado bajo la cuenta raíz, entonces utiliza el archivo crontab. Igualmente, si corre como raíz soportará diferentes sistemas init de Linux . Determinará cuál sistema init es el que está actualmente en uso mediante la ejecución del comando:

strings /sbin/init |  awk 'match($0, /(upstart|systemd|sysvinit)/){ print substr($0, RSTART, RLENGTH);exit; }'

Basados en los resultados de este comando, utiliza las siguientes ubicaciones hardcodeadas para su persistencia:

Init system Location
sysvinit /etc/init.d/syslogd
upstart /etc/init/syslogd.conf
systemd /etc/systemd/system/syslogd.service

Durante el inicio, el backdoor intent abrir un archive de configuración que está almacenado en el mismo directorio que el backdoor bajo el nombre config.json. Si este archivo de configuración no existe, entonces un nuevo archivo se crea. La configuración es cifrada utilizando la llave s0m3t3rr0r a través del algoritmo RC4.

Imagen 6. Configuración de descifrado JSON del backdoor Linux/Exaramel.

El backdoor se conecta al servidor C&C hardcodeado (por defecto es 176.31.225[.]204 según la muestra que hemos visto hasta la fecha) o al servidor C&C listado en los archivos de configuración Hosts.La comunicación es enviada sobre HTTPS. El backdoor soporta los siguientes comandos:

Command Purpose
App.Update Updates itself to a newer version
App.Delete Deletes itself from the system
App.SetProxy Sets proxy in configuration
App.SetServer Updates C&C server in configuration
App.SetTimeout Sets timeout value (time between connections to C&C server)
IO.WriteFile Downloads a file from a remote server
IO.ReadFile Uploads a file from local disk to C&C server
OS.ShellExecute Executes a shell command

Conclusión

El descubrimiento de Exaramel muestra que el grupo TeleBots sigue activo en 2018 y que los atacantes se mantienen trabajando en mejorar sus herramientas y tácticas.

La fuerte similitud a nivel de código entre Exaramel y el principal backdoor Industroyer es la primera evidencia que se presenta de manera pública y que vincula Industroyer con TeleBots, y por lo tanto, NotPetya con BlackEnergy. Si bien la posibilidad de una falsa advertencia (o la coincidencia de que se comparta código con otro actor del cibercrimen) siempre debe tenerse presente al momento de hacer una atribución de esta naturaleza, en este caso lo consideramos improbable.

Asimismo, es de particular interés el hecho de que los atacantes comenzaron a utilizar dominios temáticos de ESET en sus operaciones. Debe tenerse en cuenta que estos dominios fueron utilizados por los cibercriminales con el objetivo de ocultar la actividad maliciosa de su red de los defensores, y que de ninguna manera existe relación alguna con la infraestructura de servidores de ESET. La lista de dominios legítimos usados por los productos de ESET puede verse aquí.

Deberá tenerse presente que estos backdoor Exaramel para Windows y Linux fueron descubiertos en una organización y no en una industria. ESET compartió sus hallazgos previamente con autoridades de investigación de Ucrania y gracias a esta cooperación se logró localizar y prevenir el ataque satisfactoriamente. Igualmente, los investigadores de ESET continuarán monitoreando la actividad de este grupo.

Indicadores de Compromiso (IoCs)

ESET detection names
Win32/Exaramel trojan
Win32/Agent.TCD trojan
Linux/Agent.EJ trojan
Linux/Exaramel.A trojan
Win32/PSW.Agent.OEP trojan
Win32/RiskWare.Mimikatz.Z application
Win64/Riskware.Mimikatz.AI application

SHA-1 HASHES
TeleBots Win32/Exaramel backdoor
65BC0FF4D4F2E20507874F59127A899C26294BC7
3120C94285D3F86A953685C189BADE7CB575091D
Password Stealer
F4C4123849FDA08D1268D45974C42DEB2AAE3377
970E8ACC97CE5A8140EE5F6304A1E7CB56FA3FB8
DDDF96F25B12143C7292899F9D5F42BB1D27CB20
64319D93B69145398F9866DA6DF55C00ED2F593E
1CF8277EE8BF255BB097D53B338FC18EF0CD0B42
488111E3EB62AF237C68479730B62DD3F52F8614
Mimikatz
458A6917300526CC73E510389770CFF6F51D53FC
CB8912227505EF8B8ECCF870656ED7B8CA1EB475
Linux/Exaramel
F74EA45AD360C8EF8DB13F8E975A5E0D42E58732

C&C servers
um10eset[.]net (IP: 176.31.225.204)
esetsmart[.]org (IP: 5.133.8.46)