Análisis de malware

Troyano Stantinko: qué es, cómo funciona y cómo prevenirlo | Destacado malware

17 de febrero de por Pedro Tavares

La cantidad de amenazas que atacan a los sistemas Linux se ha disparado en los últimos días. En este contexto, una botnet que afectó a varios países en el pasado, incluidos Rusia, Ucrania, Bielorrusia y Kazajstán, ahora ha vuelto a pasar desapercibida. El troyano Stantinko, documentado por ESET en un documento técnico completo en, es una variante reciente (versión: 2.17) de un troyano que ha estado atacando sistemas Linux desde.

En este artículo, analizaremos esta amenaza, brindaremos detalles detallados sobre cómo revertirla y exploraremos cómo proteger nuestros activos contra malware de esta naturaleza.

Introducción

Según el análisis de Intezer que documentó por primera vez esta amenaza: «El grupo Stantinko es conocido por atacar los sistemas operativos Windows con campañas en curso que se remontan a. El malware del grupo se compone principalmente de botnets de mineros de monedas y de adware».

En, ESET escribió sobre una variante de Linux que actúa como proxy detrás de las operaciones del grupo Stantinko. En una campaña reciente, los investigadores de Intezer encontraron una nueva variante de este troyano proxy disfrazado de servicio httpd. La versión de la muestra es 2.17 y la versión anterior es 1.2.

Entrando en detalle, vemos que la muestra fue subida el 7 de noviembre de desde Rusia, uno de los principales países objetivo de Stantinko.

1: Informe de detección de la muestra en VirusTotal (7d2a840048f32e487f8a61d7fc1a0c39)

A primera vista, la muestra es un binario ELF de 64 bits sin descomprimir, probablemente creado utilizando el compilador GCC en un entorno Red Hat.

2: Detalles de la compilación: Stantinko Trojan

Como se observa en el diagrama de PortEx en la 3, el binario no está empaquetado y no está protegido contra técnicas anti-reversas y anti-VM; no se detectaron regiones empaquetadas. Algunas cadenas se pueden identificar dentro de la sección .rodata, que contiene constantes estáticas codificadas en binario.

3: Diagrama PortEx y cadenas presentes en la sección .rodata del troyano Stantinko

Cómo funciona el troyano Stantinko

El malware se utiliza como agente proxy y se activa a través de algunos clientes (los bots) que también se instalan en servidores web o computadoras de usuarios comprometidos en todo el mundo.

Aunque a continuación se exploran detalles específicos de este malware, nos gustaría centrarnos en este diagrama que presenta el flujo de trabajo general de cómo funciona Stantinko. En resumen, un cliente infectado envía una solicitud POST o NOTIFY HTTP al proxy (1) que luego analiza la solicitud y pasa una solicitud POST al servidor del atacante (2). Después de eso, el servidor del atacante responde al proxy y el proxy pasa la respuesta al cliente (3). A continuación, una máquina no infectada envía una solicitud GET al proxy (4) y el proxy responde rápidamente con una redirección 301 a una URL preconfigurada (5).

4: Diagrama de alto nivel del troyano Stantinko

Sin embargo, el malware tiene que pasar por algunas etapas de validación para ejecutarse sin restricciones y ejecutarse. Todos los detalles del análisis se muestran a continuación.

Profundizando en los detalles de reversión

El siguiente diagrama presenta el flujo de trabajo general del malware Stantinko. Un detalle interesante a observar es que muchas verificaciones se ejecutan cuando se inicia el malware. Si uno de ellos devuelve falso, el malware finaliza (la función resaltada en color rojo en el lado izquierdo de abajo).

5: Bloques de código de la función main() del troyano Stantinko

En detalle, todas las verificaciones mencionadas se realizan basándose en el análisis de un archivo de configuración probablemente implantado por delincuentes en el sistema junto con el archivo troyano. Como se muestra en la 6 a continuación, tras la ejecución, el malware validará el archivo de configuración disponible en la ruta /etc/pd.d/proxy.conf (consulte la línea 10).

6: función main() y archivo de configuración

Después de ejecutar y el archivo de configuración existe, se invoca una función interesante responsable de analizar el archivo dentro de la llamada LoadConfigFromFile(). Esta función específica, ParseConfigElement(), revela en parte la estructura del archivo de configuración que se espera que tenga las siguientes claves:

7: Función responsable de analizar el archivo de configuración

Después de cargar la configuración en la memoria, el demonio se inicia, como se presenta en la 6 anterior ( función start_demon() ). Se crean un socket y un oyente para aceptar nuevos clientes. En las siguientes imágenes se presentan la creación de socket (8) y la función de escucha (9).

8: función create_socket ()

9: función listening_socket()

Cada vez que se recibe un nuevo cliente, se llama a la función “listen_socket()”. El cliente crea un nuevo hilo (9 – línea 33) y se ejecuta el código dentro de la función «on_client_connect». El código malicioso Stantinko está aquí.

10: Código fuente de la función » on_client_connect «

Esta función verifica, en primer lugar, si el método de solicitud es GET, POST o NOTIFY como se explica en el diagrama de alto nivel de la 4.

11: El malware detecta si la solicitud es GET , POST o NOTIFY

Si el método de solicitud es GET, el programa responderá con una respuesta HTTP de redireccionamiento 301 que contiene el parámetro redirección_url del archivo de configuración. Esto significa que si se busca la dirección IP de CC, por ejemplo, utilizando un navegador web, la solicitud podría redirigirse a un sitio web arbitrario, sin dejar rastros ni artefactos maliciosos.

Por otro lado, si el método de solicitud es POST o NOTIFY, el troyano generará una solicitud POST para enviarla al servidor CC basándose en el encabezado y el contenido de la solicitud HTTP del cliente, utilizando la función create_post_data() (10, línea 38). .

Posteriormente, el programa malicioso llamará a la función “mysql_server_do_request()”, que se encarga de enviar la solicitud POST al servidor CC.

12: función mysql_server_do_request().

La solicitud POST se envía a una de las siguientes rutas en el servidor CC:

13: Detalles del servidor CC extraídos del código fuente del malware

La ruta del servidor CC se selecciona en la función detect_proxy_script(), en función de los datos enviados desde el cliente. La dirección IP del servidor CC es un parámetro cargado desde el archivo de configuración.

14: función detect_proxy_script

Según el análisis de Intezer, «creen que cada ruta ofrece una carga útil diferente como parte de la cadena de ataque de la campaña».

Pensamientos finales

Durante los últimos meses, se han desarrollado y mejorado varios subprocesos para aprovechar los sistemas Linux. De hecho, los sistemas operativos Unix tienen un papel importante en las infraestructuras y las empresas hoy en día, y una gran parte de los recursos web disponibles online se ejecutan bajo sistemas operativos Linux ya que los costes asociados son más económicos que utilizar un entorno Windows.

De esta manera, Stantinko es el último malware dirigido a servidores Linux que pasa desapercibido, uniéndose a otras amenazas como RansomEXX.

Para combatir este tipo de amenazas, se debe implementar monitoreo como medida obligatoria para activar alarmas o notificar a los administradores sobre actividades anormales, como conexiones a ubicaciones desconocidas o que no son de confianza. Además, se puede detectar un volumen grande o poco común de tráfico de Internet utilizando algún software de análisis de red.

La supervisión del host también es una buena forma de detectar tráfico poco común o escuchas sospechosas activas en sistemas Linux en una etapa temprana.

¡Sea proactivo y comience a tomarse en serio la protección contra malware!

Fuentes

Proxy de Stantinko después de su servidor Apache , Intezer

Stantinko Botnet ahora apunta a servidores Linux para esconderse detrás de servidores proxy , The Hacker News

Stantinko: Osito de peluche navegando fuera de la vista , WeLiveSecurity