El Laboratorio de Investigación de ESET Latinoamérica ha analizado un código malicioso que afecta a sistemas operativos Windows, detectado por nuestras soluciones de seguridad como Python/PSW.Agent.BHH.

Se ha observado que los cibercriminales intentan comprometer sistemas que utilizan versiones antiguas (legacy) del sistema operativo Windows Server, como Windows Server 2008 o Windows Server 2012, versiones que ya no reciben actualizaciones de seguridad por parte de Microsoft, lo que representa un riesgo potencial para sus usuarios.

Además, pueden escanear y comprometer otros equipos en la red interna explotando la vulnerabilidad ZeroLogon. Un binario malicioso programado en Python se utiliza para realizar capturas de pantalla de la máquina de la víctima y enviarlas a los cibercriminales mediante un bot hacia un canal de Telegram.

Otra de sus funcionalidades es leer la información contenida en el portapapeles de la víctima con el fin de detectar datos de una billetera virtual (wallet) de la víctima para luego modificarla por una perteneciente a los cibercriminales.

Los accesos, en esta ocasión, fueron utilizados para ejecutar criptomineros o códigos maliciosos que reemplazan las billeteras electrónicas de las víctimas por unas pertenecientes a los cibercriminales, lo que deja abierta la posibilidad de sufrir ataques más complejos.

Los cibercriminales tienden a seleccionar víctimas en sectores como la construcción o la educación y, si bien los ataques detectados fueron a nivel global, se han centrado especialmente en Latinoamérica, sobre todo en México, Argentina, Colombia y Perú. Según la investigación, es altamente probable que los cibercriminales obtengan acceso no autorizado a sus víctimas mediante la explotación de vulnerabilidades o ataques de fuerza bruta.

En el siguiente diagrama se ilustra el proceso de infección de este código malicioso, que comienza con el acceso no autorizado a un servidor de Windows y termina con la ejecución de un archivo malicioso en Python, que descarga y ejecuta otros componentes, como herramientas tipo mimikatz o nmap, así como archivos autoextraíbles que finalmente ejecutan criptomineros en la víctima. 

infostealer-diagrama-infeccion-1-
Ilustración 1. Diagrama de infección

Actividades Maliciosas

Este código malicioso posee características de downloader e infostealer. Por un lado este código malicioso es capaz de escanear la red interna de la víctima y por medio de la explotación de una vulnerabilidad, llamada ZeroLogon, comprometer e instalarse en otros equipos que estén dentro de la red.

A su vez es capaz de descargar en la víctima diferentes herramientas y otros códigos maliciosos para poder lograr realizar su cometido.

Durante el proceso de escaneo de la red interna de la víctima, o durante la ejecución de alguna de las herramientas utilizadas, el código malicioso va recolectando información de estos procesos para enviárselo a los cibercriminales utilizando un canal de Telegram, aprovechando un bot creado para la aplicación mencionada.

Acceso inicial

Como se mencionó anteriormente, la amenaza parece afectar a sus víctimas mediante la explotación de vulnerabilidades conocidas, las cuales podrían contar con exploits alojados en repositorios públicos en internet o a través de ataques de fuerza bruta.

Esta suposición se fundamenta en las detecciones observadas en los sistemas de telemetría de ESET, las cuales están relacionadas con la explotación de la vulnerabilidad EternalBlue o con la vulnerabilidad CVE-2021-31166. Al analizar información de sitios públicos como Shodan o Censys, se identifican que los servidores donde fue encontrada la amenaza tenían servicios sensible expuestos a Internet, como los puertos 88 (Kerberos), 389 (LDAP), 445 (SMB) y 3389 (RDP).

El aprovechamiento de alguno de estos servicios por parte de los cibercriminales podría facilitar ataques de fuerza bruta o la explotación de vulnerabilidades, permitiendo así el acceso no autorizado al servidor de la víctima y su posterior compromiso mediante la ejecución de comandos o la instalación de código malicioso adicional.

Una vez que los cibercriminales logran acceder al servidor de una víctima, proceden a descargar y ejecutar el código malicioso Python/PSW.Agent.BHH. A continuación, se detallará su comportamiento malicioso. Python/PSW.Agent.BHH.

Este código malicioso es un binario compilado específicamente para sistemas operativos Windows y programado en Python. Su funcionalidad incluye la capacidad de descargar y ejecutar herramientas o códigos maliciosos adicionales desde un servidor controlado por los cibercriminales. Además, puede escanear la red de la víctima en busca de otros equipos activos, explotar vulnerabilidades conocidas en dichos equipos, recibir actualizaciones desde el servidor de comando y control, entre otras acciones.

En base al análisis realizado sobre la muestra 1D3BB7A9F5F9E59C93A4B3A2D52BC7964AE99326, se encontró que para poder ejecutarse, este código malicioso necesita por argumento alguna de las siguientes cadenas de caracteres:

‒ ping_s

‒ zero

‒ rych

Dependiendo de que cadena de caracteres suministrada al código malicioso, este va a realizar alguna de las acciones maliciosas mencionadas anteriormente. La siguiente captura de pantalla, muestra la lógica utilizada por los cibercriminales para ejecutar ciertas acciones maliciosas dependiendo de la cadena de caracteres suministrada.

infostealer-logica-codigo-2-
Ilustración 2. Lógica empleada por el código malicioso para ejecutar acciones con base en un argumento.

 A continuación, se detalla la actividad maliciosa que es realizada por este código malicioso cuando se le suministra alguna de estas cadenas

ping_s

Básicamente los cibercriminales utilizan esta lógica para confirmar si una dirección IP de la red interna de la víctima esta activa o no. Para ello, itera sobre un archivo de texto llamado dump.txt alojado en la misma ruta donde persiste este código malicioso, C:\ProgramaData\Universal_map, obteniendo direcciones de IP del mismo. Para chequear si una IP está activa utiliza el método ping de la librería ping3 de Python.

En el caso de que la dirección IP este activa, se va a agregar a una lista junto con el nombre del equipo asociado a esa dirección IP y esa lista es enviada, por medio de un bot, hacia un grupo de Telegram controlado por los cibercriminales. A su vez, también envía la dirección IP con la que la víctima sale a internet y el nombre de la ciudad donde se encuentra. Esta información es obtenida a través de una solicitud que hace el código malicioso hacia la siguiente URL legítima: https://ipinfo.io/ip.

Aclaración: el archivo dump.txt es creado durante la ejecución del método explicado a continuación.

zero

En este caso, primero va a ejecutar una rutina encargada de actualizar el código malicioso. Básicamente, el código malicioso se conectaba hacia el servidor 2.57.122[.]159 controlado por los cibercriminales, y obtiene un numero de versión. Luego, ese número es comparado con otro número harcodeado en el código malicioso y si llegan a ser diferentes, el mismo procede a crear archivo batch el cual se va a conectar a la misma dirección IP y va a descargar de la misma la última versión del código malicioso. Finalizada la actualización elimina el archivo batch creado previamente.

Finalizada la parte de actualización, procede a chequear que estén instaladas diferentes herramientas y códigos maliciosos dentro de la misma carpeta donde se ejecuta este código malicioso. En caso de no existir alguna o todas, el código malicioso procede a descargarlas desde la dirección IP mencionada anteriormente.

A continuación, se listan algunas de las herramientas que se ha visto que fueron descargadas por el código malicioso:

nmap

masscan

mimikatz (compilado en diferentes versiones, archivo ejecutable, librería o driver )

secretsdump

wmiexec

SharpGPOAbuse

‒ Un instalador de archivos extraíbles con nombre “mig.exe”

Habiendo descargado estas herramientas, procede a crear un rango de direcciones IP tomando, 2 valores aleatorios para los primero valores de la dirección IP y, para los últimos 2 valores usa el 0.0 y el 255.255. Sobre ese rango de direcciones IP procede a ejecutar la herramienta masscan sobre el puerto 389 y se va a guardar en una lista las direcciones IP que contengan ese puerto abierto. La siguiente captura de pantalla muestra la lógica utilizada por los cibercriminales para generar de forma aleatoria un rango de direcciones IP.

infostealer-logica-rangos-IP-3-
Ilustración 3. Lógica utilizada por el código malicioso para la generación de un rango de direcciones IP

Por cada dirección IP alojada en ese listado, el código malicioso va a proceder a realizar las siguientes acciones:

  1. Escanear de nuevo la dirección IP en el puerto 389 para confirmar que el mismo este activo.
  2. Si el host está activo, ejecuta elscript secretsdump para realizar un volcado de hashes de un equipo remoto u obtener credenciales de hash alojadas en el Security Account Manager (SAM) o LSA secrets.
  3. Si secretdumps no logra obtener resultados, intenta explotar la vulnerabilidad CVE-2020-1472, también conocida como ZeroLogon, en el host.
  4. Si pudo obtener algún resultado mediante secretsdump o por medio de la explotación de la vulnerabilidad ZeroLogon, procede a utilizar la herramienta wmiexec para autenticarse en ese equipo.
  5. Si la autenticación fue exitosa, procede a realizar las siguientes acciones maliciosas en el nuevo equipo:

5.1. Ejecutar un comando de PowerShellpara agregar un nuevo usuario de perfil administrador en el equipo:

Nombre usuario: krbrtgt

Contraseña: Pass32552!!!! 

5.2. Ejecutar un comando de PowerShellpara obtenerinformación del nuevo equipo de la víctima: nombre del equipo, cantidad de procesadores, BIOS, configuración de la dirección IP del equipo, listar los grupos del controlador de dominio, entre otros.

5.3. Crear la carpeta universal_map dentro de la ruta C:\ProgramData\

5.4. Instalar dentro de universal_map, todo el conjunto de herramientas mencionadas anteriormente.

5.5. Descargar y ejecutar un binario llamado mig.exe en el nuevo equipo. Este binario va a ser explicado en la siguiente sección de este documento.

5.6. Enviar toda la información recolectada de la ejecución de los puntos anterior con la información recolectada de la nueva víctima hacia los atacantes, por medio de un bot de Telegram.

rych

Realiza la actividad listada en el punto anterior, pero en vez de utilizar un rango de direcciones IPs, utilizada una sola IP que es suministrada por el atacante por parámetro

Evolución del malware, exploits y Telegram

Durante la etapa de análisis se identificaron varios métodos y funcionalidades que no son invocadas por este código malicioso, a pesar de que la lógica reside en el mismo. Un ejemplo de esto, es un método llamado brut_local, el cual tiene una lógica similar a la mencionada anteriormente, pero con el agregado de realizar ataques de fuerza bruta sobre el protocolo SMBen el puerto 445 sobre rangos de IPs predefinidos en el código malicioso. Algunos de estos rangos son:

‒ 192.168.0.0 – 192.168.255.255

‒ 172.16.0.0 – 172.16.255.255

‒ 10.10.0.0 – 10.10.255.255

Esto es un indicador de que los cibercriminales que están detrás de este código malicioso, le han hecho modificaciones al mismo intentando buscar la mejor forma de poder infectar a sus víctimas.

Por otro lado, como se mencionó anteriormente intentan explotar la vulnerabilidad ZeroLogon en la víctima. Esta vulnerabilidad descubierta en el año 2020 posee diferentes pruebas de concepto que pueden ser encontradas en repositorios públicos.

Esto es un indicador de que los cibercriminales no están interesados en el descubrimiento y explotación de vulnerabilidades nuevas o desconocidas, sino de buscar víctimas que no posean equipos actualizados o con los respectivos parches de seguridad.

Con respecto a la exfiltración de datos, esta se realiza utilizando un bot de Telegram. Los cibercriminales crean un bot utilizando un token que se encuentra hardcodeado en el código, 6822550062:AAEmTB3wsREcKnsg9x4Zt7VTlIP9rw7qx4Y.

Por otro lado, se encontró también en el código malicioso el identificador del grupo de Telegram al cual el bot le envía la información, -1002087927440. La siguiente captura de pantalla muestra la información oficial obtenida del bot utilizado por los cibercriminales, a través de la API oficial de Telegram.

infostealer-datos-bot-telegram-4-
Ilustración 4. Datos del bot utilizado para exfiltrar información

 

La siguiente captura de pantalla muestra la información oficial relacionada con el grupo utilizado por el bot para enviarle la información de la víctima a través de la API oficial de Telegram.

infostealer-datos-grupo-telegram-5-
Ilustración 5. Datos del grupo de Telegram utilizado para alojar la información exfiltrada

A continuación se explica el funcionamiento del archivo malicioso mig.exe, utilizado para las acciones relacionadas con la criptominería

Archivo autoextraíble SFX

El binario nombrado como mig.exe, 559686155E5672F81CC12B9473F1C3D2C9713D77, corresponde con un archivo auto extraíble que al ser ejecutado en la máquina de una víctima va a ejecutar cuatro archivos diferentes. La siguiente captura de pantalla muestra los archivos que contenía este binario auto extraíble y la carpeta donde se van a instalar los mismos.

infostealer-archivos-mg-6-
Ilustración 6. Archivos contenidos dentro de mig.exe

De la captura de pantalla anterior podemos ver unas palabrs en ruso, lo que podría indicar que los atacantes tiene procedencia de los países de Europa del este o utilizan artefactos desarrollados en esta región.

Una vez ejecutado, procede a invocar los archivos ru.bat y st.bat en ese orden. Estos archivos se encargan de instalar los archivos MicrosoftPrt.exe y migrate.exe en la máquina de la víctima.

Previo a la instalación de los archivos, el archivo ru.bat procede a invocar el binario legítimo de Windows icacls para modificar los permisos de las carpetas C:\Windows\Tasks y C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\, dándole acceso de solo lectura para todos los usuarios en la máquina víctima.

El archivo migrate.exe, 77EDD32104AE8622E568D1BF401EA24365A672E4, se trata de otro archivo auto extraíble, protegido con la contraseña 4432, el cual tiene como finalidad instalar y ejecutar aplicaciones que abusan de los recursos de la máquina de la víctima para minar criptomonedas. La siguiente captura de pantalla muestra de este archivo:

infostealer-migrated-7-
Ilustración 7. Archivos contenidos dentro de migrate.exe

A su vez, se identificó que este archivo posee un script de batch llamado run.bat, el cual crea un servicio de Windows llamado WMService, utilizado para que los criptomineros persistan en la máquina de la víctima.

Por otro lado, el archivo MicrosoftPtr.exe, D855E2C9338B1508577B3E831CC89838C2768647, un binario malicioso programado en Python, es utilizado para realizar capturas de pantalla de la máquina de la víctima y enviarlas a los cibercriminales utilizando un bot hacia un canal de Telegram. Otra de sus funcionalidades es leer la información contenida en el portapapeles de la víctima y con el fin de detectar cuando la víctima tenga copiada en el mismo una billetera virtual (wallet), para ser modificada por una perteneciente a los cibercriminales.

A continuación, se listan las wallets encontradas en el código malicioso:

‒ BTC: bc1qnk3kx4at30gtm0v8jfc8egdu4flmn4txtth5gy

‒ ETH: 0x59Bc7A9B7e8bcE676EEE2ABE8A75fE99c40d0C17

‒ ETHBEP2: bnb15r7jdgnurw0qrlxhxypqy0key8957wxpv95ze7

‒ LTC: ltc1qr7d5ge4fh9klt9d8nygj66rve0yxytxf6ma2mz

‒ DOGE: DTX9xhTdQGRnHPfPobqRTdD8fy4XY2MYkF

‒ TRON: TNwZyt9U5EYVrQoed5mxYDWvkcfAoXjcGj

Por último, se encontró en el código malicioso un token utilizado para crear el bot de Telegram que envía las capturas de pantalla a los cibercriminales: 6114976417:AAELsO_lvdyvXRwFwj5RmwJFc81WkgJOYI

La siguiente captura de pantalla muestra la información relacionada al bot a través de la API oficial de Telegram:

infostealer-info-bot-telegram-8-
Ilustración 8. Información básica del bot utilizado para exfiltrar capturas de pantalla a un chat de Telegram

Con este este bot se envía la información hacia un chat el cual tenía su ID configurado en el código malicioso, el mismo era 552691400.

La siguiente captura de pantalla muestra información perteneciente al grupo de Telegram con ID 552691400

infostealer-exfiltra-capturas.pantalla-9-
Ilustración 9. Información básica del chat utilizado para exfiltrar capturas de pantalla

Combinando toda la información recolectada en base a tokens y grupos de chat de Telegram, se pudo determinar un usuario que no es un bot y que está detrás de esta campaña.

infostealer-usuario.telegram-10-
Ilustración 10. Información básica del usuario de Telegram utilizado por los cibercriminales

Consejos para protegerse

Dado que hemos visto que esta amenaza se distribuye sobre servidores de Windows y otros equipos que se ubiquen en la misma red, enumeramos distintas recomendaciones para tener en cuenta y evitar ser una posible víctima:

  • Mantener los equipos y aplicaciones actualizados a la versión más reciente.
  • Mantener actualizadas las soluciones de seguridad instaladas en el o los dispositivos.
  • Realizar un monitoreo de la red buscando anomalías:

Múltiples intentos de accesos sobre un servicio en particular.

Múltiples intentos de inicio de sesión con un mismo usuario.

  • Evitar el uso de contraseñas triviales como: password, p@ssw0rd, etc.

En el caso que dé haya ciertos equipos que no puedan ser actualizados a la versión más actual de Windows Server, recomendamos asegurarse que la protección de ataques de red está habilitada en el ESET Server Security (disponible en el producto a partir de versiones 8 en adelante) ya que en versiones antiguas de Windows Server este componente no viene por defecto. Para más información de como habilitar esta capa de protección revisar los pasos para la instación de ESET Server Security.

Conclusión

El archivo malicioso detectado por las soluciones de seguridad de ESET como Python/PSW.Agent.BHH es otro ejemplo de cómo herramientas legítimas utilizadas muchas veces para la realización de pruebas de intrusión o para realizar escaneos de redes son utilizadas también con un fin malicioso por parte de cibercriminales. A su vez, se encontró evidencia de que los cibercriminales utilizan exploits públicos para ganar accesos privilegiados en las redes de sus víctimas; lo cual abre el interrogante sobre el estado de las infraestructuras en la región y las posibilidades que tienen los atacantes.

En este caso puntual, los accesos fueron utilizados para ejecutar criptomineros o códigos maliciosos que reemplazan las billeteras electrónicas de las víctimas por unas pertenecientes a los cibercriminales, pero a su vez deja expuesta la posiblidad de sufrir ataques más complejos.

El uso de la aplicación Telegram para el exfiltrado de información sensible de las víctimas, nos muestra otra alternativa que puede ser utilizada los cibercriminales, los cuales tal vez no posean interés o recursos para montar sus propias infraestructuras maliciosas.

Por último, en base a lo encontrado y explicado en los puntos anteriores de este documento, tenemos la sospecha de que la persona/s que están detrás de esta actividad cibercriminal, son procedentes o tienen relación con grupos ruso parlantes

Indicadores de compromiso

Persistencia

A continuación, se listan las rutas creadas por los códigos maliciosos para persistir en la máquina de una víctima:

‒ C:\ProgramData\Universal_map\

Hashes, URLs y C&C

Hashes de muestras encontradas durante el análisis:

‒ 1D3BB7A9F5F9E59C93A4B3A2D52BC7964AE99326

– Python/PSW.Agent.BHH ‒ 4ECFA3B988CB51C13A229EA3AA9469A2652FAB98

– MSIL/Riskware.SharpGPOAbuse.A

‒ B82787DC098EEFA8BF917F76CFB294AC3F8349F0

– Win64/Riskware.Mimikatz.U

‒ 70DF765F554ED7392200422C18776B8992C09231

– Win64/Riskware.Mimikatz.G

‒ C66A1C6FBEACAF2DB288BFF8C064DFE775FD1508

– Win64/Riskware.Mimikatz.I

‒ 559686155E5672F81CC12B9473F1C3D2C9713D77

– RAR/KillAV.A

‒ C1D8DD5AFCBDAFEEC10BF82E1A570855076910E2

– Python/Riskware.WMIExec.B

‒ AF7C73C47C62D70C546B62C8E1CC707841EC10E3

– Python/Impacket.A

‒ D855E2C9338B1508577B3E831CC89838C2768647

– Python/ClipBanker.GP

‒ C15CDEC3288769F43CE5BEB0B830B8CBEA2D5E4D

– BAT/Agent.QCM

‒ 77EDD32104AE8622E568D1BF401EA24365A672E4

– Win64/CoinMiner.RK

Dominios e IPs detectados en las muestras analizadas:

‒ 2[.]57.122.159 

Técnicas MITRE ATT&CK

A continuación, se listan las técnicas de MITRE ATT&CK vistas en las muestras analizadas:

Táctica

Técnica (ID)

Nombre

Resource Development

T1588.005

Obtain Capabilities: Exploits

T1588.001

Obtain Capabilities: Malware

Execution

T1059.003

Command and Scripting Interpreter: Windows Command Shell

T1059.001

Command and Scripting Interpreter: PowerShell

Persistence

T1098

Account Manipulation

Privilege Escalation

 T1068

Explotation for Privilege Escalation

Defense Evasion

T1140

Deobfuscate/Decode Files or Information

Credential Access

T1110.001

Brute Force: Password Guessing

Discovery

T1049

System Network Connections Discovery

T1087

Account Discovery

Lateral Movement

T1021.006

Remote Services: Windows Remote Management

Collection

T1119

Automated Collection

T1113

Screen Capture

Command and Control

T1105

Ingress Tool Transfer

Exfiltration

T1020

Automated Exfiltration

T1567

Exfiltration Over Web Service