Blog

VoidLink: Sezieren eines AI-generierten C2-Implantats

Zusammenfassung

VoidLink ist ein Linux-C2-Framework, das Implantat-Binärdateien für den Einsatz in Cloud- und Unternehmensumgebungen erzeugen kann. Diese Analyse konzentriert sich auf das Implantat “die Agentenkomponente”, die für langfristigen Zugriff, Diebstahl von Anmeldeinformationen und Datenexfiltration konzipiert ist. Unsere Analyse ergab deutliche Hinweise darauf, dass das Implantat mit einem LLM-Codierungsagenten erstellt wurde. Strukturierte “Phase X:”-Beschriftungen, ausführliche Debug-Protokollierung und Dokumentationsmuster in der Produktions-Binärdatei deuten auf eine automatische Codegenerierung mit minimaler menschlicher Überprüfung hin.

Nichtsdestotrotz ist VoidLink technisch sehr leistungsfähig. Es erstellt Fingerabdrücke von Cloud-Umgebungen in AWS, GCP, Azure, Alibaba Cloud und Tencent Cloud und sammelt Anmeldeinformationen aus Umgebungsvariablen, Konfigurationsverzeichnissen und Instanz-Metadaten-APIs. Es erkennt Container-Laufzeiten und enthält Plugins für Container-Escape und Kubernetes-Privilegieneskalation. Ein Rootkit auf Kernel-Ebene passt seinen Stealth-Ansatz je nach Kernel-Version des Hosts an.

Die C2-Kommunikation verwendet AES-256-GCM über HTTPS, getarnt als normaler Webverkehr, und folgt Mustern, die mit der Cobalt Strike-Beacon-Architektur übereinstimmen. VoidLink zeigt ein wachsendes Problem auf: LLM-generierte Implantate, die Multi-Cloud-Targeting, Container-Awareness und Stealth auf Kernel-Ebene kombinieren und so die Qualifikationshürde senken, die für die Herstellung funktionaler, schwer zu entdeckender Malware erforderlich ist.

Binäre Übersicht

FeldWert
Dateinameimplant.bin
Datei TypLinux ELF64 Ausführbare Datei
Architekturx86-64
SpracheZig
SHA19cdbc16912dcf188a0f0765ac21777b23b4b2bea
SHA25605eac3663d47a29da0d32f67e10d161f831138e10958dcd88b9dc97038948f69
Einstiegspunkt0x0112c490
Entropie7.24/8.0 (Hoch - gepackt/verschlüsselt)
Kampagne/FamilieVoidLink

VoidLink verwendet eine modulare Architektur, bei der jede Komponente als unabhängiges Plugin innerhalb eines gemeinsamen Registrierungsrahmens arbeitet, so dass das Implantat seine Fähigkeiten je nach Zielumgebung und Einsatzkontext anpassen kann.

Ein Flussdiagramm, das die Initialisierungsphase eines Systems veranschaulicht. Es enthält eine 'VoidLink Implant ELF64 Executable' am Anfang, die zu 'Module Registry Initialization' führt, die mit 'Load Core Modules' verbunden ist und in vier Module verzweigt: task_router', 'stealth_manager', 'injection_manager' und 'debugger_detector'. Der Hintergrund ist dunkelviolett gefärbt.

Die Ausführung löst die Initialisierung der Modulregistrierung aus, woraufhin vier Kernkomponenten geladen werden: der Task-Router für die Befehlsverteilung, der Stealth-Manager für die Umgehung, der Injektionsmanager für die Codeausführung und der Debugger-Detektor für die Anti-Analyse.

Ein Code-Editor, der dekompilierten Code mit hervorgehobenen Abschnitten anzeigt. Der obere Teil zeigt die Initialisierung einer Modulregistrierung, während der untere Teil das Laden der Kernmodule auflistet. Anmerkungen verweisen auf bestimmte Zeilen und geben deren Funktionen an.

Intelligente Umgebungserfassung

VoidLink erstellt ein detailliertes Host-Profil, bevor es operative Fähigkeiten aktiviert, den Ausführungskontext identifiziert und feststellt, welche Stealth- und Exploitation-Mechanismen für die Zielumgebung geeignet sind.

Ein Flussdiagramm zur Veranschaulichung verschiedener Cloud-Dienste, einschließlich Cloud-Infrastruktur, benutzerdefinierte Lösungen und Sicherheits-Hosting, mit Unterkategorien, die unter jeder Hauptüberschrift in einem strukturierten Format aufgeführt sind.

Die Malware sucht nach Cloud-Metadaten-APIs (AWS, GCP, Azure, Alibaba, Tencent), Container-Umgebungen (Docker, Kubernetes) und Sicherheitsstatus (EDR/AV-Erkennung, Kernel-Version). Diese Intelligenz steuert das adaptive Verhalten und wählt Tarnmechanismen auf der Grundlage der entdeckten Daten.

Multi-Cloud Credential Harvesting & Environment Fingerprinting

VoidLink hat es nicht nur auf einen Cloud-Anbieter abgesehen, sondern auf alle. Das Implantat sucht aktiv nach Anmeldeinformationen aus mehreren Quellen und exfiltriert diese:

Cloud-Umgebungsvariablen:

  • Amazon Web Services (AWS) - AWS_ACCESS_KEY, AWS_SECRET_ACCESS_KEY
  • Google Cloud-Plattform (GCP) - GOOGLE_CLOUD_PROJECT, GOOGLE_CLOUD_REGION

Lokale Beglaubigungsstellen:

  • SSH-Schlüssel - /root/.ssh/id_rsa, id_ecdsa, id_ed25519, und known_hosts
  • Git-Anmeldeinformationen - .git-credentials-Dateien
  • Shell-Verlauf - .bash_history, .zsh_history für die Weitergabe von Anmeldeinformationen
  • Browser-Zugangsdaten - gespeicherte Kennwörter und Sitzungsdaten

Kubernetes-Geheimnisse:

  • Dienstkonto-Token aus “/var/run/secrets/kubernetes.io/serviceaccount/”
  • Namespace-Informationen für den Kontext der lateralen Bewegung

Cloud-Fingerprinting:

  • Alibaba Cloud & Tencent Cloud - Metadaten-API-Abfragen zur Umgebungsidentifizierung
Ein Screenshot, der Code in einer Programmierumgebung anzeigt, mit rot hervorgehobenen Abschnitten. Der Code zeigt verschiedene Case-Anweisungen, die sich auf bestimmte Parameter beziehen, darunter Verweise auf Metadaten und Netzwerkadressen.

VoidLink fragt Cloud-Metadaten-APIs unter 169.254.169.254 (AWS, Azure, Alibaba) und anbieterspezifische Endpunkte (metadata.google.internal, metadata[.]tencentyun[.]com) für das Environment Fingerprinting ab. Das Implantat ruft ab:

  • Region und Verfügbarkeitszone
  • Instanz-ID und Instanztyp
  • Identifizierung des Cloud-Anbieters

Diese Erkundung ermöglicht es VoidLink, sein Verhalten an die Zielumgebung anzupassen und für jeden Cloud-Anbieter geeignete Tarnmechanismen und Persistenzmethoden auszuwählen. Insbesondere fragt das Implantat nicht den AWS IAM-Endpunkt “/latest/meta-data/iam/security-credentials/” ab, d. h., es verlässt sich auf Umgebungsvariablen und nicht auf Instanzrollen-Anmeldeinformationen für den AWS-Zugriff.

Container-Flucht & Kubernetes-Ausbeutung

VoidLink führt eine Laufzeiterkennung in Docker-, Podman- und Kubernetes-Container-Umgebungen durch. Wenn eine Container-Grenze identifiziert wird, lädt das Implantat dedizierte Escape-Plugins aus der Modulregistrierung, um zu versuchen, die Privilegiengrenze zu verletzen:

docker_escape_v3 - Ausnutzung von Fehlkonfigurationen des Containers für den Zugriff auf das Hostsystem

k8s_privesc_v3 - Eskaliert Privilegien innerhalb von Kubernetes-Clustern

Codeschnipsel, der einen C2-Opcode-Dispatcher mit Bedingungen für Container-Flucht zeigt. Betont die Verwendung des Escape-Plugins (docker_escape_v3/k8s_privesc_v3) in plugin_load.

Die Malware zielt speziell auf Token für Kubernetes-Dienstkonten ab, die unter /var/run/secrets/kubernetes.io/serviceaccount/ gespeichert sind. Diese Token können einen clusterweiten Zugriff ermöglichen, der laterale Bewegungen über containerisierte Workloads hinweg erlaubt.

Ein Screenshot von Codeschnipseln, die Variablenzuweisungen und Funktionsaufrufe in einem Programmierkontext zeigen, wobei mehrere Zeilen rot hervorgehoben sind. Der Code scheint Kubernetes und Linux-Dateipfade zu beinhalten.

Rootkit-Fähigkeiten auf Kernel-Ebene

Der vielleicht technisch beeindruckendste Aspekt von VoidLink ist seine adaptive Rootkit-Funktionalität. Die Malware setzt je nach erkannter Kernel-Version unterschiedliche Tarnmechanismen ein:

Ein Flussdiagramm zur Veranschaulichung der adaptiven Geschäftsumgebung. Es enthält Verzweigungen für den API-Modus und den UI-Modus, die Aktionen wie das Anzeigen von Daten, das Laden von Layouts und das Ändern von Ausgaben detailliert beschreiben.
  • Kernel ≥ 5.5: eBPF-Modus - Moderne Tarnung mit hide_ss.bpf.o zum Abfangen von Systemaufrufen
  • Kernel 4.x - 5.x: LKM-Modus - Ladbare Kernel-Module (vl_stealth.ko, stealth_netstat.ko)
  • Kernel < 4.0: LD_PRELOAD-Modus - Userland Hooking über Shared Object Injection

Befehls- und Kontrollinfrastruktur

Flussdiagramm zur Veranschaulichung der C2-Kommunikation mit C2-Server, Agent mit Heartbeat- und Task Poll-APIs und Traffic Camouflage mit gefälschten JS-Anfragen, API-Mimikry und Cookie-Sitzungen.

AES-256-GCM-Verschlüsselung für die gesamte C2-Kommunikation

  • HTTP/HTTPS-Protokoll-Tarnung mit rechtmäßig aussehenden API-Endpunkten
  • Verkehrstarnung: Gefälschte JS-Anfragen, API-Nachahmung, Cookie-Sitzungen
Eine Computercodeanzeige, die eine dekompilierte Funktion mit Variablenzuweisungen und Stapeloperationen zeigt. Der Code erscheint in einer Programmier- oder Debugging-Oberfläche, die auf eine technische Entwicklungsumgebung hinweist.

Wir haben eine fest codierte C2-IP-Adresse identifiziert: 8.149.128[.]10

Ein Screenshot des Codes in einem Dekompilierungstool mit hervorgehobenem Text, der eine fest kodierte IP-Adresse '128.128.120.107' und Port '8080' anzeigt. Der Code enthält hexadezimale Werte und Variablenzuweisungen, die Programmierelemente zeigen.

Das Rootkit stellt eine Befehlsschnittstelle zur Verfügung, die es den Anwendern ermöglicht, bestimmte Ports, Prozesse und Dateien während des Betriebs dynamisch vor forensischen Tools zu verbergen, so dass eine selektive Verschleierung statt eines pauschalen Verbergens möglich ist.

AI-gestützte Malware-Entwicklung

Bei der Analyse haben wir eine in die Initialisierungssequenz des Binärprogramms eingebettete Phasenroutine identifiziert, deren Phasen mit bis zu 8 gekennzeichnet sind. Phase 7 fehlt in der Sequenz völlig, und Phase 5 ist zwei verschiedenen Funktionen zugeordnet. In Kombination mit der ausführlichen Debug-Protokollierung und der strukturierten Dokumentation, die in der Produktions-Binärdatei verbleibt, stimmen diese Artefakte mit LLM-generiertem Code überein, der über verschiedene Eingabeaufforderungen ohne erzwungene Kontinuität zwischen den Ausgaben erzeugt wurde.

AI-Pattern-Matching-Ergebnisse

Ein Screenshot einer Codierungsschnittstelle, der die Protokollausgaben im Zusammenhang mit den Modulinitialisierungs- und Bereinigungsprozessen zeigt. Jede Zeile enthält einen Phasenstatus mit entsprechenden Codes und Meldungen, die den Systemstatus angeben.

Ein weiterer Indikator ist die übermäßige Verwendung des Gleichheitszeichens. Der generierte Code fügt manchmal mehrere Gleichheitszeichen für Kommentare ein, wie in der folgenden Abbildung zu sehen ist. Mithilfe eines anderen Skripts zur Mustererkennung habe ich weitere potenzielle Indikatoren im Binärcode identifiziert, die demselben Muster folgen.

AI-Mustervergleichstrennzeichen

Ein Screenshot des dekompilierten Codes mit hervorgehobenen Abschnitten, die Fehler im Zusammenhang mit dem Laden von Plugins und Ausführungsrouten anzeigen. Der Text enthält Code-Anmerkungen und Fehlermeldungen über fehlende Plugin-Daten.

Dies lässt mich vermuten, dass die Entwicklung der erzeugten Implantate kaum überwacht wird.

Professionelle Malware-Entwickler in der Regel:

  • Minimale oder kryptische Protokollierung verwenden
  • Vermeiden Sie strukturierte Dokumentation im Code
  • Vorrang der Tarnung vor der Lesbarkeit
  • Debug-Informationen ausblenden

Bei VoidLink ist das Muster umgekehrt:

  • Ausführliche, beschreibende Phasenbezeichnungen
  • Vollständige Dokumentation der Initialisierungssequenz
  • Debug-Protokollierung in der Produktions-Binärdatei belassen
  • Formale Statusmeldungen (“erfolgreich”, “initialisiert”, etc.)

Schlussfolgerung

VoidLink ist ein voll funktionsfähiges Linux-Implantat, das die wichtigsten Anforderungen für ein nachhaltiges Eindringen in die Cloud erfüllt: Auslesen von Anmeldeinformationen, Container-bewusstes laterales Verschieben, adaptive Stealth auf Kernel-Ebene und verschlüsselte C2-Kommunikation. Es zielt auf fünf große Cloud-Anbieter ab, überwindet Container-Grenzen und verbirgt seine Präsenz vor Standard-Forensik-Tools.

Das Besondere daran ist die Art und Weise, wie es erstellt wurde. Die Kennzeichnungen “Phase X:”, die ausführliche Protokollierung und die strukturierte Dokumentation, die in die Binärdatei eingebettet sind, stehen im Einklang mit LLM-generiertem Code. Professionelle Malware-Entwickler entfernen diese Art von Artefakten. Ihr Vorhandensein in einem Produktionsimplantat deutet darauf hin, dass sich der Autor in hohem Maße auf einen KI-Codierungsagenten mit wenig manueller Bereinigung verlassen hat.

Das ist wichtig, denn VoidLink ist kein Proof of Concept. Es handelt sich um ein einsatzfähiges Implantat mit einer echten C2-Infrastruktur dahinter. Die Hürde für die Herstellung dieser Fähigkeiten ist gesunken. Verteidiger sollten damit rechnen, dass mehr Implantate auf diese Weise gebaut werden, die funktional und modular sind und schneller zusammengebaut werden können, als es die herkömmliche Entwicklung erlaubt.

Indikatoren für Kompromisse

GitHub-Link

Teilen

Artikel von

Rhys Downing

Bedrohungsforscher

Rhys ist ein Bedrohungsforscher bei Ontinue. Rhys begann seine Karriere im IT-Bereich als Techniker, wo er die Welt der Cybersicherheit entdeckte. Schließlich entschied er sich, sein Studium im Bereich Cybersecurity abzuschließen, und erhielt 2021 seine erste Stelle als Analyst bei SOC.

Er sagte, dass er sich am meisten für Sicherheit interessiert, wenn es um Malware geht. Er liebt es, sie zu analysieren und aufzuschlüsseln, um ihre Fähigkeiten aufzudecken.

Schlüsselwörter