ALCARED, Centro Autorizado de Servicios de FLUKE Networks en Perú
Análisis de ELF/Sshdinjector.A!tr con un analista humano y uno artificial
4 de febrero de 2025
Plataforma afectada: Linux
Usuarios afectados: Dispositivos de red basados en Linux o IoT
Impacto: Exfiltración de datos
Nivel de gravedad: Medio
ELF/Sshdinjector.A!tr es una colección de malware que puede inyectarse en el demonio SSH. Muestras de esta colección de malware aparecieron a mediados de noviembre de 2024. Si bien disponemos de bastante información sobre amenazas (por ejemplo, se atribuyen al grupo de espionaje DaggerFly ), nadie parece haber investigado su verdadero propósito. En esta entrada del blog, nos centraremos en la ingeniería inversa de los binarios del ataque y cómo se logró.
Ingeniería inversa de ELF/Sshdinjector.A!tr
El ataque utiliza varios binarios:
- Un dropper comprueba si el host está infectado. De no ser así, descarga todos los binarios maliciosos (véase la Figura 1) en los lugares adecuados.
- Una biblioteca SSH maliciosa llamada libsshd.so se comunica con un bot maestro remoto y normalmente filtra información.
- Varios otros binarios infectados ( mainpasteheader , selfrecoverheader, …) garantizan que el host permanezca infectado (persistencia del malware).
Figura 1: Descripción general de ELF/Sshdinjector
Más precisamente, el dropper comprueba si se está ejecutando con privilegios de root y, de no ser así, cierra. A continuación, comprueba si el host está infectado buscando un archivo llamado /bin/lsxxxssswwdd11vv que contenga la palabra WATERDROP . Si el host aún no está infectado, intenta sobrescribir los binarios legítimos ls , netstat y crond con binarios infectados.
( /bin/lsxxxssswwdd11vv , selfrecoverheader , mainpasteheade,r …). Finalmente, busca el demonio SSH y, si es necesario, lo infecta con libsshd.so .
La carga maliciosa se encuentra en libsshd.so . El elemento principal se encuentra en una función llamada » haha «. También crea dos subprocesos adicionales a partir de las funciones » heihei » y » xixi «. Estos tres nombres hacen referencia a la risa en chino. La función » xixi » comprueba si tiene acceso a /root/intensify-mm-inject/xxx ; en ese caso, detendrá y reiniciará los daemons SSH y Cron. La función » heihei » se conecta al C2 remoto (dirección IP 45.125.64[.]200, puerto 33200 o 33223) y escucha los comandos entrantes.
| Id. de comando | Descripción |
| 1 | SERVER_REQ_BASE_INFO. Exfiltra uname, dirección MAC, etc. a C2. |
| 2 | Enumere los servicios en ejecución, enumerando los archivos en /etc/init.d |
| 3 | Lee los usuarios de /etc/shadow |
| 4 | Enumera los procesos en ejecución |
| 5 | Prueba el acceso a /var/log/dmesg |
| 6 | Prueba el acceso a /tmp/fcontr.xml |
| 7 | Enumera un directorio determinado |
| 8 | Transferencia de archivos |
| 9 | Abre una terminal de shell |
| 10 | Ejecuta un comando en la terminal |
| 11 | Descarga y sale del proceso malicioso. |
| 12 | Elimina un archivo |
| 13 | Renombra un archivo |
| 1000 | RECONOCIMIENTO DE RETIRO EN LÍNEA DEL SERVIDOR |
| 0x80000001 | Notificación de cambio de estado del cliente. Envía información base, lista de servicios y lee /etc/shadow . |
La comunicación con el C2 utiliza su propio protocolo. Todos los paquetes incluyen un UUID codificado ( a273079c-3e0f-4847-a075-b4e1f9549e88 ), un identificador ( afa8dcd81a854144 ) y la respuesta al comando.
Análisis de malware asistido por IA
La ingeniería inversa se realizó utilizando Radare2, asistida por IA generativa a través de la extensión de Radare2 “r2ai”.
Este estudio demuestra que la IA proporciona información excelente sobre el malware y proporciona un código fuente de alta calidad que complementa el resultado obtenido de un descompilador estándar.
Por ejemplo, usé r2ai en modo «automático» . En este modo, el usuario formula una pregunta a la IA y esta realiza automáticamente los pasos necesarios con el desensamblador de Radare2 para responder. Esto es especialmente útil para usuarios que no conocen bien Radare2.
Figura 2: r2ai se ejecuta en modo automático y emite automáticamente el comando r2 “iz” para comenzar a trabajar en la pregunta.
En esta captura de pantalla, vemos que la IA busca automáticamente cadenas en el binario, a través del comando “iz” de r2.
La visión general del cuentagotas es excelente. La IA es excelente para leer grandes cantidades de información y resumirla.
Figura 3: La IA resume bastante bien el comportamiento del malware.
Podemos entonces pedirle a la IA que descompile el código principal. Si bien el código fuente generado por la IA es fácil de entender, sus detalles no siempre son correctos . En comparación, el código fuente generado por los descompiladores suele ser difícil de leer, pero es preciso. Por ello, es importante recordar que estos enfoques se complementan y, idealmente, se consideran en paralelo.
Figura 4: Este código fuente fue generado por la IA mediante r2ai. Es globalmente correcto, legible y útil. Solo los comentarios marcados como «AXELLE REMARK» son míos y señalan algunos errores de la IA.
Si bien la IA funciona muy bien, hay muchos casos en los que no produce una respuesta satisfactoria, al menos no al principio.
El problema más común es la alucinación , en la que la IA inventa algo que no es cierto. Peor aún, no siempre es fácil para un analista humano detectar las alucinaciones, ya que la IA puede parecer muy convincente. Por ejemplo, en el código generado por la IA a continuación, esta creó un comando de carga y otro de descarga que es pura invención.
Figura 5: Un ejemplo de alucinación de IA: la botnet no tiene ningún comando FILE_DOWNLOAD ni FILE_UPLOAD. Esto es una invención que malinterpreta una función existente de «copia de archivos».
Otro problema frecuente es la extrapolación , donde la IA no inventa algo completamente, sino que lo extrapola . Por ejemplo, la IA afirma que el malware «manipula» la dirección MAC. Esto es improbable. Si bien crea una cadena con la dirección MAC del host y la exfiltra, no se modifica la dirección MAC. En un ejemplo relacionado, la IA afirma que el malware oculta sus comunicaciones de red. No es así. Se oculta en el sistema operativo infectando binarios comunes como netstat, pero no intenta ocultar la comunicación en sí.
Figura 6: Extrapolación de la IA. Las frases resaltadas en rojo han sido ampliamente exageradas por la IA.
Otro problema son las omisiones . Las omisiones son la desventaja del poder de la IA para resumir situaciones. Sus resúmenes a menudo carecen de los detalles que un humano consideraría importantes. Por ejemplo, en algún momento, el malware prueba el acceso a un archivo llamado /tmp/fcontr.xml . A pesar de que esto está absolutamente claro en el ensamblado, la primera versión del código generado por la IA eludió completamente esta parte . La solución a este problema es volver a preguntar modificando la pregunta /solicitud para la IA. En este caso, simplemente añadí al final de la solicitud: «Por favor, preste atención a lo que hay alrededor de fcontr.xml» y se solucionó el problema. Por supuesto, esto requiere saber que algo se había omitido en primer lugar.
De hecho, las interacciones con la IA rara vez son perfectas de una sola vez . Más bien, podrían compararse con una conversación con un colega competente con conocimientos e inteligencia impresionantes, pero con menos intuición y experiencia. Para esta investigación, mantuve abierto mi desensamblador. Lo usé varias veces para detectar alucinaciones, ayudar a la IA (!) cuando no encontraba direcciones o referencias cruzadas correctas, o guiarla para que buscara partes interesantes.
Conclusión
Si bien los desensambladores y descompiladores han mejorado en la última década, esto no se compara con el nivel de innovación que vemos en la IA. ¡Es excepcional !
La IA es especialmente eficaz para proporcionar descripciones generales de muestras y generar código fuente fácil de entender. Afortunadamente —¿o no?—, la IA no puede trabajar sola y debe ser pilotada y complementada por un análisis humano competente para detectar alucinaciones (los problemas más peligrosos), refinar preguntas, identificar omisiones o guiarla hacia la dirección más interesante.
Aún no he analizado los modelos de lenguaje . Obviamente, los resultados de r2ai dependen del modelo de lenguaje utilizado. Los modelos de lenguaje son configurables y podemos cambiar fácilmente de uno a otro, ya sea local o remoto, de acceso gratuito o de pago. Los resultados de este artículo se obtuvieron principalmente con Claude 3.5 Sonnet (22/10/2024).
Por último, pero no por ello menos importante, esta entrada del blog se escribió sin la ayuda de IA 😉
Protecciones de Fortinet
Los clientes de Fortinet ya están protegidos contra esta variante de malware a través de nuestro AntiVirus de la siguiente manera: FortiGuard Labs detecta la muestra con las siguientes firmas de AV:
ELF/Sshdinjector.A !tr y Linux/Agent.ACQ!tr
El servicio antivirus FortiGuard es compatible con FortiGate, FortiMail, FortiClient y FortiEDR. Los clientes de Fortinet EPP que tengan las actualizaciones de antivirus actualizadas también están protegidos.
Fuente:
