Los investigadores de ESET están monitoreando activamente los casos de malware que atacan a dispositivos integrados, como el router. Hace poco descubrimos un bot de IRC que combina las habilidades de Linux/Tsunami (también conocido como Kaiten) y Linux/Gafgyt, incorporando además algunas mejoras y un par de funcionalidades nuevas.
A esta nueva amenaza la llamamos Linux/Remaiten. Hasta el momento, detectamos tres versiones de Linux/Remaiten: 2.0, 2.1 y 2.2. Debido a los objetos presentes en el código, los autores llaman a este nuevo malware "KTN-Remastered"o "KTN-RM".
En este post describiremos el mecanismo único de propagación de Linux/Remaiten, sus diversas funcionalidades y las diferencias entre sus distintas versiones.
Mejoras en el mecanismo de propagación
La característica más prominente de Linux/Gafgyt es la exploración mediante telnet. Cuando recibe instrucciones para realizarla, intenta conectarse a direcciones IP públicas aleatorias con el puerto 23. Si la conexión tiene éxito, intenta adivinar las credenciales de inicio de sesión siguiendo una serie de combinaciones predefinidas de nombre de usuario y contraseña, que están incrustadas en el archivo binario.
Una vez que logra iniciar la sesión, emite un comando de shell para descargar archivos bot ejecutables correspondientes a múltiples arquitecturas y luego intenta ejecutarlos. Esta es una táctica simple (pero estrepitosa a la vez) de infectar a la nueva víctima, ya que es muy probable que uno de los archivos binarios coincida con la plataforma utilizada.
Linux/Remaiten mejora este mecanismo de propagación, ya que también incluye archivos binarios ejecutables downloader para plataformas integradas, tales como ARM y MIPS. Luego de iniciar sesión desde el comando Telnet en el dispositivo de la víctima, intenta averiguar la plataforma y solo transfiere el archivo downloader apropiado. La tarea de este downloader es pedirle al servidor de C&C el bot binario Linux/Remaiten específico para la arquitectura empleada por el sistema. A continuación, se ejecuta y crea otro bot que será utilizado por los operadores maliciosos.
Análisis técnico del downloader
El downloader Linux/Remaiten es un pequeño archivo ejecutable ELF incrustado en el archivo binario bot. Cuando se ejecuta en un servidor de la víctima, se conectarán al mismo servidor de C&C en un puerto diferente y enviarán uno de estos comandos, seguido de una nueva línea:
- “mips”
- “mipsel”
- “armeabi”
- “armebeabi”
El servidor de C&C responderá con un archivo binario bot ELF para la plataforma requerida.
La única tarea del downloader es enviar el comando "mips" al servidor de C&C y escribir la respuesta a stdout.
Análisis del bot
El bot se ejecuta como un daemon en forma predeterminada. Si se ejecuta con el modificador "-d", indica que debe permanecer en primer plano. Una vez iniciado, el nombre del proceso se cambiará por algo que parezca legítimo, como "-bash" o "-sh". Encontramos instancias en las que se usaba "-bash" en la versión 2.1 y "-sh" en la 2.2.
La función create_daemon creará un archivo llamado ".kpid" en uno de los directorios predefinidos de daemon, siempre y cuando pueda escribir dentro de él e insertar su PID en el archivo.
Si el archivo ".kpid" ya existe, el PID se leerá desde él; entonces el proceso finaliza y se elimina el archivo.
Conexión al servidor de C&C
El bot elegirá un servidor de C&C al azar a partir de una lista de direcciones IP cifradas en forma rígida y se conectará a él por el puerto definido.
El bot luego se registrará en el servidor de IRC. El servidor de C&C responderá con un mensaje de bienvenida y enviará más instrucciones. El dispositivo infectado analizará y ejecutará dichas instrucciones.
Respuesta a los comandos
El bot puede responder a varios comandos de IRC generales. Dichos comandos se encuentran enumerados en una matriz junto con su controlador de función:
Lo que resulta más interesante aquí es el comando "PRIVMSG". Se utiliza para darle instrucciones al bot para que lleve a cabo sus diferentes acciones maliciosas, como los ataques de desbordamiento, la descarga de archivos, la exploración mediante telnet, etc. Los comandos que se pueden enviar a través de "PRIVMSG" también se encuentran en una matriz estática.
La mayoría de sus capacidades provienen de Linux/Tsunami y una parte de Linux/Gafgyt. Estos son algunos ejemplos de las cadenas en el archivo binario que tienen que ver con el comportamiento malicioso. Incluyen una descripción detallada, por lo que es muy fácil entender su propósito.
Downloader incrustado
Como mencionamos antes, Linux/Remaiten es único porque incluye varios downloaders pequeños y puede cargarlos en el dispositivo de la víctima si la arquitectura de su sistema coincide con uno de los downloaders disponibles. Cuando se ejecuta, el downloader le solicitará al servidor de C&C un archivo binario bot.
Exploración mediante telnet
El servidor de C&C emite el comando "QTELNET" para iniciar la exploración mediante telnet. La descripción del autor del malware sobre su creación es cierta: realmente es una versión mejorada del explorador para telnet Gafgyt.
La exploración mediante telnet se lleva a cabo en etapas. Dichas etapas se pueden resumir en las siguientes:
- Elegir una dirección IP pública al azar y conectarse a ella por el puerto 23
- Intentar combinaciones de nombre de usuario y contraseña
- Descubrir la arquitectura del sistema de la víctima
- Enviar y ejecutar el downloader correcto
Para descubrir la arquitectura, ejecuta el comando "cat $SHELL" en el dispositivo de la víctima y analiza el resultado. La variable de entorno SHELL contiene la ruta al ejecutable ELF que actúa como el intérprete real de línea de comandos. El bot buscará en el encabezado de ELF para encontrar el downloader correspondiente.
El bot luego elegirá el payload correcto para enviarlo a la nueva víctima.
Infección del otro dispositivo
El primer paso consiste en encontrar un directorio con permiso de escritura. Linux/Remaiten tiene una lista de las rutas más populares donde debería poder escribir.
Entonces, por una razón inexplicable, se crean los archivos ejecutables vacíos ".t", "retrieve" y "binary". El archivo "retrieve" contendrá el downloader y el archivo "binary", el bot solicitado por el servidor de C&C. Al parecer, el archivo ".t" no se usa.
Linux/Remaiten tiene una extraña manera de crear el archivo ejecutable vacío: copia el archivo binario busybox (que se encuentra en la mayoría de los dispositivos integrados) y luego lo vacía con el comando ">file".
El downloader se transfiere a través de telnet mediante el comando echo, donde cada byte se codifica con la secuencia de escape "\xHH". Ya conocíamos esta técnica, antes utilizada por Linux/Moose para propagar las infecciones.
Ejecución del downloader y del bot de IRC
Ahora que el downloader ya ha sido transferido, se iniciará para completar el payload Linux/Remaiten. El downloader le pide un archivo bot binario al servidor de C&C y lo escribe en la salida estándar. Una vez iniciado, la salida estándar redirije al archivo binario "binary". Por último, se inicia el archivo binario"binary" y se activa el bot de IRC.
Envío del estado al servidor de C&C
El último paso es informar al servidor de C&C si se ha infectado con éxito o no otro dispositivo. En ambos casos, también enviará las credenciales válidas. Quizás los operadores infecten el dispositivo en forma manual si falla el método automático.
Finalizar los procesos de otros bots
Otro comando interesante es "KILLBOTS". Una vez ejecutado, el bot enumera los procesos activos y decide cuáles va a ignorar y cuáles va a finalizar; para ello se basa en varios criterios, principalmente en sus nombres. Estos nombres de procesos pueden diferir entre las dos versiones.
Linux/Remaiten solamente finalizará los procesos que se iniciaron a partir de una shell interactiva; para ello se fija en el número de dispositivo TTY del proceso. También informará el nombre del proceso finalizado, quizá para mejorar su lista blanca y negra de nombres de procesos.
Historial de cambios de Linux/Remaiten
Las diferencias que existen entre las versiones del cliente bot en su mayoría son solo menores, como el agregado de nombres de procesos que se deben finalizar/ignorar, o de directorios para el downloader. Es razonable suponer que estos y otros cambios pueden aparecer en cada generación, aunque la versión siga siendo la misma. Los binarios del downloader continúan siendo los mismos, a excepción de la dirección IP y del puerto, que están codificados en forma rígida.
Una diferencia importante en la versión 2.2 es el hecho de que también ejecuta un comando wget/tftp para descargar un script de shell que descarga los archivos binarios bot. Es lo mismo que suele hacer Gafgyt. Si este comando wget/tftp no funciona, intentará transferir un downloader.
El script de shell se distribuye a través de otro servidor, que suministraba el popular Gafgyt.
Luego de ver el archivo al.sh, notamos que es la primera vez que encontramos bots para plataformas como PowerPC y SuperH.
El servidor de C&C utilizado en la versión 2.0 tenía un mensaje de bienvenida extraño. Contenía una referencia al blog MalwareMustDie.
Tal vez es una manera de vengarse: MalwareMustDie está publicando muchos detalles sobre malware como Gafgyt, Tsunami, entre otros.
Indicadores de sistemas comprometidos
Versión 2.0
SHA-1 | Detección de ESET |
---|---|
2ff0b69bc5aaca82edb6a364ee9f6ad3c5fdd71c | Linux/Remaiten.A |
bd8256d469aa42c6c57e8e6f91ef5b4782bd2cb7 | Linux/Remaiten.A |
3b233834ee962adb111a002bb64e594175e7c1e2 | Linux/Remaiten.A |
52210b49c47c6ad6fe34c70d6faf49e2763c0d9d | Linux/Remaiten.A |
11807e5aa5dc1c14f8d509ea410eeb778896830d | Linux/Remaiten.A |
Versión 2.1
SHA-1 | Detección de ESET |
---|---|
e097c882eda2bd508dd9a3be72efce6fd2971f11 | Linux/Remaiten.B |
d4d70d0022e06b391b31195c030ac9bc6e716cce | Linux/Remaiten.B |
2e901502263d50c1ab65e7516bb8534c28d41265 | Linux/Remaiten.B |
b9d8b993943872a19a1d4838570d7dcc9f374c20 | Linux/Remaiten.B |
977efab8a7cce22530c3bdeca860a342e232eeb3 | Linux/Remaiten.B |
Versión 2.2
SHA-1 | Detección de ESET |
---|---|
0e5b982c8d55b78582da733d31e8b652c9da9f6e | Linux/Remaiten.C |
4e2dfcd4a3e14b05b268b4a6df76479984932675 | Linux/Remaiten.C |
9f5f24bda7af3ed95c72c9b77d5a9c5807ca1be9 | Linux/Remaiten.C |
35b00e2243157171be6a7d7bc9b32f98805dcd35 | Linux/Remaiten.C |
537f8847d786923a9401889e6ee23675d96f2692 | Linux/Remaiten.C |
eefa249de2f7f08bcf4629d3e2055b06f1d74ae3 | Linux/Remaiten.C |
f3c4a7e8785355894482bce4f791d92e1c1da5b2 | Linux/Remaiten.C |
46cd369bce4f6a41d8863c46dd778c1b1c4f8df0 | Linux/Remaiten.C |
efd3a698dda376333c2dd84714f92f25539d4589 | Linux/Remaiten.C |
f8354d8cc946e8b137f9013fc3d44720f321dc48 | Linux/Remaiten.C |
b912a07528e1afabbaa01d99bcbb66498dee0406 | Linux/Remaiten.C |
359dd2f9646eb3fad979f4a658bc2ff74488c457 | Linux/Remaiten.C |
898e2d91d64ebb26cc049d78bdeeda87f2bc4f1a | Linux/Remaiten.C |
17d3c799e7f1c77be5d7b3d03eaa630a2f261449 | Linux/Remaiten.C |
17dcfdcc39b21ad64864a386070cc633e9965c3d | Linux/Remaiten.C |
d1c6511a84ca27e2c08b89a683db9878e83c8637 | Linux/Remaiten.C |
024136cbc562cff6f3ce31d213fc9fe7a78510f9 | Linux/Remaiten.C |
a2432461d56c7beec98e4a15ddf91a1ea6d41c1b | Linux/Remaiten.C |
9f795334a7201b2c6c0ad9ffeb2103ed464f0c5f | Linux/Remaiten.C |
e375ecd544368b77f686fb3f3a000844782a647b | Linux/Remaiten.C |
0ca049baf56a6c4d01c6d183ef1acfa65d2be1e3 | Linux/Remaiten.C |
Muestras de downloaders
Versión 2.0
SHA-1 | Detección de ESET |
---|---|
25a7cf2969ce154aa90891e844a6af84fc89d396 | Linux/Remaiten.A |
1fe1872cf18cd0101f0870ca58f68d6686010326 | Linux/Remaiten.A |
1cc2b57978ba2e611403ba11bf9129fb810fae5c | Linux/Remaiten.A |
c552edd72495514765f6a8f26aee8a6da2a57992 | Linux/Remaiten.A |
Versión 2.1
SHA-1 | Detección de ESET |
---|---|
e875f54b7bd967c4f9ae59d85ed60991561b097b | Linux/Remaiten.A |
ebf2bc43b6b5a4b8933f4ed8ed4a4beaceaecff5 | Linux/Remaiten.A |
11a13d2eeb71573178d7686930340c51c8f3ce26 | Linux/Remaiten.A |
8d26cd7d34d84745a897d474aa2ac9b8d1943d68 | Linux/Remaiten.A |
Versión 2.2
SHA-1 | Detección de ESET |
---|---|
e80aba63ba30a2048ba780c35eae65e8b95627f7 | Linux/Remaiten.A |
e280b220c2ea2668d1a2ad82bdc64922e8b9ec86 | Linux/Remaiten.A |
8decb1f0e94497ef31f13c6e07ff2a021cf0972f | Linux/Remaiten.A |
17006c899fbce3f86ddfb93539033c363816ad19 | Linux/Remaiten.A |
C&C
Versión 2.0
Bot | 185.130.104.131:443 |
---|---|
Downloader | 185.130.104.131:25566 |
Versión 2.1
Bot | 185.130.5.201:53 |
---|---|
Downloader | 185.130.5.201:25566 |
Versión 2.2
Bot | 185.130.5.202:23 |
---|---|
Downloader | 185.130.5.202:443 |