EN | EtherCAT Terminals: The fast all-in-one system

Oppent – Mobile Robots for any kind of need

VÍDEOS DESTACADOS

Skip to main content

Qualys está rastreando activamente las amenazas que se dirigen a los contenedores. En nuestro análisis reciente, hemos identificado algunas instancias de docker que ejecutan un malware que denominamos «LibMiner». Este malware tiene la capacidad de implementar y ejecutar Cryptominer. Utiliza una técnica única para el movimiento lateral a través de los contenedores y los sistemas Linux, ejecutándose en servidores Redis desprotegidos e iniciando la extracción en ellos. El malware tiene la capacidad de proteger su terminación, lo que hace que sea imposible obtener el control sobre él. Esta publicación de blog descubre las técnicas y tácticas únicas utilizadas por LibMiner.

Detalles técnicos

El diagrama en la Figura 1 a continuación muestra el flujo de ejecución completo para LibMiner. Los diversos componentes del malware están alojados en servidores de acceso público. Los componentes incluyen scripts de shell bash, archivos ELF, scripts de python y un archivo de configuración. El ataque funciona en dos etapas: en la primera etapa, LibMiner se instala mediante el script de shell bash «lib_tmp», que inicia la siguiente etapa y lanza el componente de criptominería «glib» que extrae la criptomoneda Monero. LibMiner lanza varios otros componentes como lib_config_t, sider_t, lib_rook_t, etc., cada uno utilizado para un propósito específico durante la ejecución.

Aunque no se conoce el mecanismo de infección inicial, identificamos algunos contenedores que tienen una sección ENTRYPOINT establecida para ejecutar un script de shell bash. La sección ENTRYPOINT de docker actúa como un punto de ejecución inicial para un docker en tiempo de ejecución. Ejecuta el contenido del script de shell que se muestra en la Figura 2 a continuación.

Este script de shell programa un CronJob para ejecutar un conjunto de comandos después de un intervalo de tiempo específico. Restablece el contenido en el archivo / etc / hosts para desbloquear el acceso al servidor del atacante. Además, utiliza paquetes de terceros como cURL o Wget para descargar el archivo «lib_tmp» del servidor del atacante.

El archivo lib_tmp es un script de shell. Comprueba la presencia de herramientas de seguridad como Tencent’s Cloud Aegis y Alibaba’s Server Guard, elimina los procesos y elimina los archivos asociados.

Actualiza el servidor de nombres en /etc/resolv.conf al DNS público de Google. También mata los procesos asociados a sí mismo y descarga el último binario «lib» del servidor del atacante, que es el malware LibMiner guardado con un nombre aleatorio de 4 caracteres en el directorio / var / lib.

LibMiner es un componente de malware ELF que se empaqueta con UPX Packer. Las rutinas en este binario se ejecutan en un bucle infinito y obtienen varios archivos del servidor del atacante, como se muestra en la Figura-1 anterior. Entre estos archivos, los componentes que no son ELF contienen el contenido codificado que se recupera en forma de texto sin cifrar aplicando Caesar Cipher con «-3» (menos 3) como clave, seguido de la decodificación Base64.

Componentes de LibMiner

La siguiente sección ofrece información sobre cada uno de estos componentes y detalla su importancia y función en el curso de la ejecución de LibMiner:

lib_rook_t / lib_kill_t: Módulo de limpieza para LibMiner

La ejecución de LibMiner se inicia buscando, decodificando y ejecutando cualquiera de estos scripts de shell bash. El script es responsable de limpiar todos los rastros anteriores de la ejecución de este malware. Para este propósito, realiza las siguientes tareas:

  • Enumere los nombres de los procesos y elimine los procesos asociados con este minero
  • Abortar las conexiones de red para una lista predefinida de direcciones IP y puertos

lib_boot_t: actualización y persistencia de LibMiner

La rutina Boot_Monitor () en LibMiner descarga este componente. Los datos decodificados en este componente son un script de shell (Figura-5) que se encarga de descargar la última copia del archivo LibMiner, guardarlo con un nombre aleatorio en la carpeta / tmp y luego ejecutarlo.

Este archivo también se copia como /etc/init.d/symcfget. La Figura 6 a continuación muestra el desensamblaje del código que crea el servicio «symcfget» para la persistencia. Este servicio ejecuta el archivo / usr / bin / symcfget.

lib_config_t y glib: XMRIG Miner y sus configuraciones son Payload for LibMiner

La rutina Down_Miner () en LibMiner descarga ambos componentes. Glib es el binario XMRIG de carga útil utilizado para extraer la criptomoneda Monero en el sistema infectado. Los datos decodificados en el componente lib_config_t incluyen el dominio del grupo de minería y la dirección de la billetera. Esta información se pasa como parámetros mientras se ejecuta el binario XMRIG. El minero usa la dirección de la billetera:

«41mu5eUMztFdnKBMauwjpXAY1auz9SgJ4XVR67zRCXzTG8rbo9UsnrWSCRMdynPKm5aewxHzuwxCEQ3DAH62HtJaGAHcogM» y se conecta a «pool [.] Minexmr [mining] .com. Los ingresos totales asociados con esta dirección de billetera durante los últimos 6 meses es de hasta 40.41 XMR con un valor de aproximadamente US $ 2,146 a partir de enero de 2020.

sider_t: Movimiento lateral con Redis

La rutina Redis () en LibMiner descarga este componente. Los datos decodificados en este componente son un script de Python que es responsable de apuntar al contenedor que ejecuta Redis en modo desprotegido e infectarlo con LibMiner.

Este script usa ifconfig para obtener la dirección IP del contenedor y prepara la lista de IP de destino utilizando el fragmento de código en la Figura-7. El siguiente código bruto fuerza las dos últimas secciones de la dirección IP, lo que amplía el alcance de la infección desde los contenedores acoplables que exponen el puerto 6379 al puerto de exposición del sistema Linux 6379.

Para cada dirección IP en la lista de IP, intenta crear una conexión remota en el puerto 6379, que es el puerto de escucha predeterminado para el servidor Redis. Ejecuta de forma remota el código que se muestra en la Figura 8 a continuación una vez que la conexión se establece con éxito. Almacena el contenido del shell bash como un valor en la entrada ‘clave-valor’ en Redis, y luego configura los campos ‘dbfilename’ y ‘dir’. La API de guardado para RedisServer volca el contenido del shell bash en la raíz ‘dbfilename’ en la ruta / var / spool / cron. De manera similar, se descargan dos archivos más como / var / spool / crontabs / root y /etc/cron.d/root

El punto notable aquí es que el contenido que se descarga en las rutas de archivos mencionadas anteriormente a través de Redis es el mismo desde donde se inició nuestro análisis para esta amenaza de acoplador. Así es como el LibMiner intenta extenderse lateralmente y extraer criptomonedas para obtener la máxima ganancia. En nuestro análisis y observación, el intento de ejecutar este contenido cron volcado en un sistema remoto no se ejecuta según lo previsto, debido a la presencia de bytes específicos de Redis DB.

Ejecución evasiva para LibMiner

Las rutinas ChangeName () y ChangePid () en «lib» son responsables de mantener el comportamiento evasivo. Por lo tanto, no utiliza ningún componente especial para disfrazar su ejecución. ChangePid bifurca a un niño, sale del padre y luego continúa la ejecución con un nuevo PID. El proceso recién bifurcado se ejecuta con un nombre diferente que se selecciona aleatoriamente de una lista predefinida de rutas de archivos que se muestra en la Figura-9 a continuación. Las rutas de archivo son las rutas de las aplicaciones incluidas en la lista blanca o genuinas.

Las técnicas de evasión van acompañadas de algunas técnicas anti-análisis que colaborativamente hacen que la identificación manual y la terminación de LibMiner sean más difíciles. Algunas técnicas se enumeran a continuación:

  • El atributo de archivo está configurado como inmutable para evitar modificaciones o cambiar el nombre de las operaciones en el archivo.
  • El tiempo de espera para la consola raíz es muy bajo.
  • Los comandos escritos en la consola no son visibles.

Conclusión

La entrega de Cryptominers probablemente sigue siendo la fuente de ingresos favorita de los atacantes. Los atacantes han cambiado su enfoque para apuntar a contenedores acoplados mal configurados y desprotegidos e instalar mineros para lograr la máxima ganancia. Esperamos presenciar el uso generalizado de tales ataques.

Detección y remediación

Qualys recomienda las siguientes mejores prácticas de seguridad para clientes con inquietudes sobre estos últimos tipos de ataques de contenedores.

  1. Utilice QID 19994: Redis Server accesible sin autenticación con  Qualys Vulnerability Management para detectar sistemas vulnerables.
  2. Use paquetes y aplicaciones actualizados en sus hosts.
  3. Use Redis DB en modo protegido para evitar el acceso de clientes externos y aplique políticas para restringir el acceso de root. El cumplimiento de la política de Qualys lo ayuda a verificar si hay configuraciones incorrectas en torno a los hosts Docker abiertos.
  4. Qualys aborda los casos de uso para la seguridad del contenedor a través de la tubería del contenedor. En particular, Qualys Container Security proporciona un inventario completo de contenedores a través de varios sensores y realiza una evaluación de seguridad de los contenedores y la protección del tiempo de ejecución.

www.qualys.com