Recentemente, ricercatori di sicurezza informatica hanno scoperto una nuova campagna di cryptojacking che prende di mira l'API del Docker Engine con l'obiettivo di cooptare le istanze per unirsi a uno swarm Docker controllato da attori malevoli. Questo attacco sfrutta le funzionalità di orchestrazione di Docker Swarm per scopi di comando e controllo (C2). Gli aggressori utilizzano Docker per ottenere l'accesso iniziale, distribuendo un miner di criptovalute sui container compromessi e recuperando payload aggiuntivi per eseguire movimenti laterali verso altri host che eseguono Docker, Kubernetes o SSH.
Il processo inizia con l'identificazione di endpoint Docker API non autenticati e esposti utilizzando strumenti di scansione Internet come masscan e ZGrab. Su questi endpoint vulnerabili, l'API Docker viene utilizzata per generare un container Alpine e recuperare uno script shell di inizializzazione (init.sh) da un server remoto. Questo script verifica se l'utente è root e se strumenti come curl e wget sono installati prima di scaricare il miner XMRig. Come in altre campagne di cryptojacking, utilizza il rootkit libprocesshider per nascondere il processo del miner.
Lo script di inizializzazione scarica anche altri tre script shell – kube.lateral.sh, spread_docker_local.sh e spread_ssh.sh – per movimenti laterali verso endpoint Docker, Kubernetes e SSH sulla rete. Spread_docker_local.sh usa masscan e zgrab per scansionare gli stessi intervalli di LAN alla ricerca di nodi con porte aperte associate a Docker Engine o Docker Swarm. Per qualsiasi IP scoperto con le porte target aperte, il malware tenta di generare un nuovo container chiamato alpine, basato su un'immagine denominata upspin, ospitata su Docker Hub. Questa immagine esegue lo script init.sh, permettendo al malware di propagarsi ad altri host Docker in modo simile a un worm.
Il terzo script, spread_ssh.sh, è in grado di compromettere server SSH aggiungendo una chiave SSH e creando un nuovo utente ftp che consente agli attori malevoli di connettersi da remoto agli host e mantenere l'accesso persistente. Cerca anche file di credenziali relativi a SSH, Amazon Web Services (AWS), Google Cloud e Samba nei percorsi di file hard-coded all'interno dell'ambiente GitHub Codespaces e, se trovati, li carica sul server C2.
Nella fase finale, i payload per il movimento laterale Kubernetes e SSH eseguono un altro script chiamato setup_mr.sh che recupera e lancia il miner di criptovalute. Datadog ha scoperto altri tre script ospitati sul server C2: ar.sh, che modifica le regole iptables e cancella log e cron job per evitare la rilevazione; TDGINIT.sh, che scarica strumenti di scansione e rilascia un container malevolo su ogni host Docker identificato; pdflushs.sh, che installa un backdoor persistente aggiungendo una chiave SSH controllata dagli attori malevoli al file /root/.ssh/authorized_keys.
TDGINIT.sh è particolarmente significativo per la sua capacità di manipolare Docker Swarm, costringendo l'host a lasciare qualsiasi swarm esistente e unirsi a uno nuovo sotto il controllo dell'attaccante. Questo permette agli attori malevoli di espandere il controllo su più istanze Docker in modo coordinato, trasformando i sistemi compromessi in una botnet per ulteriori sfruttamenti.
Non è ancora chiaro chi sia dietro questa campagna, sebbene le tattiche e le tecniche utilizzate sembrino sovrapporsi a quelle di un gruppo noto come TeamTNT. Questa campagna dimostra che servizi come Docker e Kubernetes rimangono obiettivi fruttuosi per attori malevoli che conducono cryptojacking su larga scala.