SOC Prime Bias: Kritisch

12 Jun 2026 18:43 UTC

Massiver PyPI-Lieferkettenangriff erntet Cloud-Anmeldeinformationen über Python-Startup-Hooks

Author Photo
SOC Prime Team linkedin icon Folgen
Massiver PyPI-Lieferkettenangriff erntet Cloud-Anmeldeinformationen über Python-Startup-Hooks
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Zusammenfassung

Eine koordinierte Supply-Chain-Operation, bekannt als die Hades-Kampagne, hat 26 PyPI-Pakete kompromittiert, um Cloud-Zugangsdaten zu stehlen. Der Angriff missbraucht Python .pth -Dateien, um bösartigen Code beim Start des Interpreters auszulösen und die Bun JavaScript-Laufzeit zu nutzen, um die Nutzlast auszuführen. Es ist darauf ausgelegt, Geheimnisse im Zusammenhang mit AWS, GCP, Azure, Kubernetes und GitHub über mehrere Betriebssysteme hinweg zu ernten.

Untersuchung

Orca Security identifizierte 37 bösartige Wheel-Dateien, die über bioinformatische und Entwickler-Tool-Plattformen verteilt waren. Ihre Analyse enthüllte eine Cross-Runtime-Technik, bei der die Malware Bun herunterlädt, um verschleierte JavaScript-Nutzlasten auszuführen. Die Kampagne erzeugt auch Ablenkungsverkehr zu Anthropic AI-Diensten und verwendet Prompt-Injektions-Techniken, um die Effektivität von LLM-basierten Sicherheitsüberprüfungen zu verringern.

Abschwächung

Organisationen sollten die betroffenen Pakete sofort entfernen oder auf sichere Versionen fixieren und alle potenziell exponierten Zugangsdaten rotieren. Dazu gehören Cloud-Zugangs-Token, GitHub-Persönliche-Zugangs-Token, SSH-Schlüssel und Docker-Registry-Zugangsdaten. Sicherheitsteams sollten auch nach bekannten Persistenz-Artefakten auf Linux-, macOS- und Windows-Hosts suchen.

Reaktion

Bei Verdacht auf eine Kompromittierung sollte das betroffene System isoliert werden, bevor Zugangsdaten rotiert werden, um das Risiko einer Erpressung durch den gh-token-monitor -Daemon zu verringern. Entwickler-Workstations und CI/CD-Runner, die die vergifteten Pakete ausgeführt haben, sollten neu aufgebaut werden. GitHub-Repositories sollten auf unautorisierte Commits und neu erstellte Repositories überprüft werden, die zu den Namensmustern der Angreifer passen.

"graph TB %% Klassendefinitionen Abschnitt classDef technique fill:#99ccff %% Blau für MITRE ATT&CK Techniken classDef tool fill:#cccccc %% Grau für Tools und Software classDef action fill:#ff99cc %% Pink für spezifische Aktionen oder Verhaltensweisen classDef persistence fill:#ccffcc %% Grün für Persistenzmechanismen %% Knotendefinitionen %% Erste Zugang und Ausführungsphase tech_supply_chain["<b>Technik</b> – <b>T1195.001 Supply-Chain-Komplikation: Kompromittierung von Softwareabhängigkeiten und Entwicklungstools</b><br/>Bösartige Wheel-Dateien, die über PyPI verteilt werden."] class tech_supply_chain technique tech_user_exec["<b>Technik</b> – <b>T1204.005 Benutzer-Ausführung: Bösartige Bibliothek</b><br/>Ausgelöst während der Python-Interpreter-Initialisierung über *-setup.pth-Dateien."] class tech_user_exec technique tech_poison_pipeline["<b>Technik</b> – <b>T1677 Vergiftete Pipeline-Ausführung</b><br/>Code wird automatisch in Entwickler- und CI-Umgebungen ausgeführt."] class tech_poison_pipeline technique %% Nutzlast- und Ausführungsphase tool_bun["<b>Tool</b> – <b>Name</b>: Bun JavaScript Laufzeit<br/>Heruntergeladen, um verschleierte Nutzlast auszuführen."] class tool_bun tool tech_ipc["<b>Technik</b> – <b>T1559.003 Inter-Prozess-Kommunikation: XPC-Dienste</b><br/>Verwendet, um die verschleierte _index.js-Nutzlast auszuführen."] class tech_ipc technique payload_js["<b>Datei</b> – <b>Name</b>: _index.js<br/>Verschleierte JavaScript-Nutzlast."] class payload_js tool %% Persistenzphase tech_persistence["<b>Technik</b> – <b>Persistenz</b><br/>Zugriff auf das kompromittierte System aufrechterhalten."] class tech_persistence technique tech_launch_daemon["<b>Technik</b> – <b>T1543.004 Systemprozess erstellen oder ändern: Launch Daemon</b><br/>Verwendet systemd-Dienste auf Linux und LaunchAgents auf macOS."] class tech_launch_daemon technique svc_monitor["<b>Prozess/Service</b> – <b>Name</b>: gh-token-monitor.service<br/>Beispiel für einen Persistenzmechanismus."] class svc_monitor persistence %% Zugang zu Zugangsdaten und Exfiltration-Phase tech_cred_access["<b>Technik</b> – <b>T1212 Ausnutzung für Zugangsdatenzugang</b><br/>Abgreifen des Prozessspeichers, um AWS-, GCP-, Azure- und GitHub-Token zu ernten."] class tech_cred_access technique tech_archive["<b>Technik</b> – <b>T1560 Gesammelte Daten archivieren</b><br/>Komprimieren gestohlener Geheimnisse mit gzip."] class tech_archive technique tech_exfil["<b>Technik</b> – <b>T1567.001 Exfiltration über Webdienst: Exfiltration zu Code-Repository</b><br/>Senden verschlüsselter Daten an angreiferkontrollierte GitHub-Repositories."] class tech_exfil technique %% Verbindungen %% Supply Chain führt zu Benutzerausführung tech_supply_chain –>|führt zu| tech_user_exec %% Benutzerausführung führt zu vergifteter Pipeline tech_user_exec –>|löst aus| tech_poison_pipeline %% Vergiftete Pipeline löst die Nutzlastausführung aus tech_poison_pipeline –>|führt aus| tool_bun %% Tooling verwendet IPC, um die JS-Nutzlast auszuführen tool_bun –>|nutzt| tech_ipc tech_ipc –>|führt aus| payload_js %% Nutzlast führt zu Persistenz payload_js –>|etabliert| tech_persistence tech_persistence –>|implementiert| tech_launch_daemon tech_launch_daemon –>|erstellt| svc_monitor %% Persistenz ermöglicht Zugangsdatenzugang svc_monitor –>|ermöglicht| tech_cred_access %% Zugangsdatenzugang führt zu Archivierung tech_cred_access –>|resultiert in| tech_archive %% Archivierung führt zur finalen Exfiltration tech_archive –>|bereitet Daten vor für| tech_exfil "

Angriffsfluss

Simulation der Ausführung

Voraussetzung: Die Telemetrie- & Basislinien-Vorabkontrolle muss bestanden haben.

Begründung: Dieser Abschnitt beschreibt die genaue Ausführung der Gegnertaktik (TTP), die darauf ausgelegt ist, die Erkennungsregel auszulösen. Die Befehle und der Ablauf MÜSSEN die identifizierten TTPs direkt widerspiegeln und darauf abzielen, die genaue von der Erkennungslogik erwartete Telemetrie zu erzeugen. Abstrakte oder nicht verwandte Beispiele führen zu Fehldiagnosen.

  • Angriffsnarrativ & Befehle: Der Angreifer hat erfolgreich die Arbeitsstation eines Entwicklers über ein bösartiges PyPI-Paket (Hades-Kampagne) kompromittiert. Ein Python-Start-Hook wurde ausgeführt und hat erfolgreich ein Azure-Authentifizierungs-Token aus dem lokalen Speicher/Cache abgezapft. Um die Erkennung dieser Aktivität in den Azure-Audit-Protokollen zu simulieren, werden wir die Erzeugung eines Audit-Protokolleintrags simulieren, der die spezifische Zeichenfolge „Azure-Authentifizierungs-Token“ im Beschreibungsfeld enthält, um das Ereignistelemetrie zu mimizieren, das ein automatisiertes System möglicherweise meldet, wenn es eine solche Exfiltration erkennt.

  • Regressionstests-Skript: Da wir das tatsächliche Azure-Backend nicht leicht dazu veranlassen können, eine spezifische bösartige Beschreibungszeichenfolge zu erzeugen, ohne einen realen Einbruch, simulieren wir die Anwesenheit des Protokolls im Telemetriestrom (oft in BAS durch Injektion eines synthetischen Protokolls in den Arbeitsbereich erledigt).

    # Synthetische Protokollinjektion, um die Erkennung des Token-Exfiltration zu simulieren
    # Dies simuliert, dass das 'Description'-Feld mit der Zielzeichenfolge ausgefüllt wird.
    $LogEntry = @{
        TimeGenerated = (Get-Date).ToString("yyyy-MM-ddTHH:mm:ssZ")
        OperationName = "TokenExfiltrationDetected"
        Result = "Success"
        Description = "Malware-Aktivität erkannt: Azure-Authentifizierungstoken wurden von einem lokalen Prozess exfiltriert."
        Identity = "malicious-python-hook@attacker.com"
    }
    
    Write-Host "Synthetische Telemetrie zur Validierung der Erkennungsregel einspritzen..."
    # In einem realen BAS würde dies die Log Analytics Data Collector API aufrufen
    # Zu Simulationszwecken stellen wir den resultierenden Protokolleintrag dar:
    $LogEntry | ConvertTo-Json
  • Aufräum-Befehle:

    # Wenn synthetische Protokolle über die API injiziert wurden, löschen Sie die spezifische Korrelations-ID
    # Für diese Simulation wurden keine dauerhaften Änderungen am Azure-Tenant vorgenommen.
    Write-Host "Aufräumen abgeschlossen. Keine dauerhaften Angreifer-Artefakte verbleiben."