GlassWorm versteckt einen RAT in einer bösartigen Chrome-Erweiterung
Detection stack
- AIDR
- Alert
- ETL
- Query
Zusammenfassung
GlassWorm nutzt kompromittierte npm-, PyPI-, GitHub- und OpenVSX-Pakete aus, um eine mehrstufige Malware-Plattform zu verbreiten. Die erste Stufe startet einen Loader, der ein Solana-Blockchain-Memo abfragt, um Kommando- und Kontrolladressen zu erhalten, und lädt dann eine verschlüsselte Nutzlast herunter. Die zweite Stufe stiehlt Anmeldedaten, Kryptowährungs-Wallet-Dateien und Hostdaten, während die dritte Stufe ein permanentes WebSocket-basiertes RAT zusammen mit einer bösartigen Chrome-Erweiterung bereitstellt, die darauf abzielt, Browserdaten zu erfassen. Die Operation richtet sich hauptsächlich an Entwickler und Kryptowährungsinhaber.
Untersuchung
Analysten führten den anfänglichen Kompromiss auf bösartige Pre-Install-Skripte und auf Unicode basierende Loader zurück, die in ansonsten legitime Pakete eingebettet waren. Sie entdeckten zwei Solana-Wallet-Adressen, die als Dead-Drop-Standorte für C2-URLs fungierten und beobachteten, dass der Loader mehrere Solana-RPC-Endpunkte polled. Das RAT der dritten Stufe verlässt sich auf DHT-Bootstrap-Knoten und kehrt zur Solana-basierten Abfrage zurück, wenn die DHT-Auflösung fehlschlägt. Forscher identifizierten auch die Exfiltrationsinfrastruktur und ordneten die bösartige Chrome-Erweiterung zu, die in der Kampagne verwendet wurde.
Abschwächung
Organisationen sollten Supply-Chain-Scans für npm und andere Paketökosysteme durchsetzen, die Integrität von Paketen und das Vertrauen der Herausgeber überprüfen sowie bekannte bösartige IPs und Domains blockieren. Endpunktverteidigungen sollten auf Rogue-Node.js-Runtimes, unerwartete geplante Aufgaben und verdächtige Registry-Run-Keys überwachen. Browser-Anmeldedaten-Speicher sollten gestärkt werden, und Kryptowährungsnutzer sollten, sofern möglich, die Überprüfung von Hardware-Wallets übernehmen.
Reaktion
Wenn GlassWorm entdeckt wird, isolieren Sie den betroffenen Endpunkt, stoppen Sie die bösartigen Prozesse und entfernen Sie alle abgelegten Dateien und Persistenzmechanismen wie geplante Aufgaben. Widerrufen Sie kompromittierte npm-Token, ändern Sie die Anmeldedaten von Kryptowährungs-Wallets und setzen Sie im Browser gespeicherte Passwörter zurück. Führen Sie eine vollständige forensische Überprüfung der Hostprotokolle durch, um die Ausführung des Loaders nachzuvollziehen, und aktualisieren Sie die Sicherheitskontrollen, um das Risiko künftiger Supply-Chain-Kompromisse zu verringern.
"graph TB %% Class Definitions classDef technique fill:#ffcc99 classDef persistence fill:#99ffcc classDef exfil fill:#ff9999 classDef credential fill:#ccccff classDef execution fill:#ffdb4d classDef collection fill:#c2f0c2 classDef command fill:#ffd699 %% Nodes u2013 Attack Steps step1_initial_access["<b>Technik</b> – <b>T1195.001 Kompromittierung der Lieferkette</b><br/>Bösartige npm/pyPI-Pakete und kompromittierte GitHub-Repositories liefern einen Loader."] class step1_initial_access technique step2_obfuscation["<b>Technik</b> – <b>T1027 Verschleierte Dateien oder Informationen</b><br/>Loader-Code wird nach der Lieferung verschleiert und kompiliert (T1027.004)."] class step2_obfuscation execution step3_guardrails["<b>Technik</b> – <b>T1480 Ausführungs-Geländer</b><br/>Loader überprüft Gebietsschema, Sprache und Zeitzone und bricht die Ausführung außerhalb der Zielregionen in Russland ab."] class step3_guardrails execution step4_dead_drop["<b>Technik</b> – <b>T1102.001 Dead Drop Resolver</b><br/>Der Loader fragt Solana-Blockchain-Transaktionsmemos ab, um die C2-URL zu erhalten."] class step4_dead_drop command step5_cred_files["<b>Technik</b> – <b>T1552.001 Anmeldedaten in Dateien</b><br/>Erntet .npmrc, NPM_TOKEN, Cloud-Anbieter-Konfigurationen und private SSH-Schlüssel."] class step5_cred_files credential step6_browser_creds["<b>Technik</b> – <b>T1555.003 Anmeldedaten aus Webbrowsern</b><br/>Extrahiert Passwörter, Cookies, Autofill-Daten und Zahlungskarten aus Chrome, Edge, Firefox; umgeht App-gebundene Verschlüsselung."] class step6_browser_creds credential step7_private_keys["<b>Technik</b> – <b>T1552.004 Private Schlüssel</b><br/>Kopiert Kryptowährungs-Wallet-Dateien und Screenshots von Seed-Phrasen."] class step7_private_keys credential step8_exfil_webhook["<b>Technik</b> – <b>T1567.004 Exfiltration über Webhook</b><br/>Zips gestellte Daten und postet sie an von Angreifern kontrollierte HTTP-Endpunkte."] class step8_exfil_webhook exfil step9_persistence_rc["<b>Technik</b> – <b>T1037.004 RC-Skripte</b><br/>Erstellt HKCUSoftwareMicrosoftWindowsCurrentVersionRun-Eintrag und geplante Aufgabe, um PowerShell-Launcher beim Start zu starten."] class step9_persistence_rc persistence step10_wmi_event["<b>Technik</b> – <b>T1546.003 WMI-Ereignisabonnement</b><br/>Registriert WMI-Ereignisse, um USB-Hardware-Wallets zu erkennen und Phishing-UIs zu starten."] class step10_wmi_event persistence step11_ps_profile["<b>Technik</b> – <b>T1546.013 PowerShell-Profil</b><br/>Fügt Persistenz durch PowerShell-Profilskript hinzu."] class step11_ps_profile persistence step12_vnc["<b>Technik</b> – <b>T1021.005 VNC</b><br/>Lädt das native VNC-Modul (HVNC) für unsichtbaren Fernzugriff."] class step12_vnc command step13_multi_stage["<b>Technik</b> – <b>T1104 Multistufige Kanäle</b><br/>Richtet einen bidirektionalen Socket.IO-WebSocket-Kanal für C2-Befehle ein."] class step13_multi_stage command step14_input_injection["<b>Technik</b> – <b>T1674 Input-Injektion</b><br/>Führt vom Angreifer bereitgestelltes JavaScript via eval() innerhalb des RAT aus."] class step14_input_injection execution step15_keylog_clip["<b>Technik</b> – <b>T1056.001 Tasten-Logging</b> & <b>T1115 Zwischenablage-Daten</b><br/>Bösartige Chrome-Erweiterung protokolliert Tastenanschläge, erfasst Zwischenablage-Text und macht Screenshots."] class step15_keylog_clip collection step16_browser_hijack["<b>Technik</b> – <b>T1185 Browser-Sitzungshijacking</b><br/>Erweiterung sammelt Cookies und Sitzungstoken und kann aktive Tabs auf von Angreifern kontrollierte URLs umleiten."] class step16_browser_hijack collection %% Connections u2013 Attack Flow step1_initial_access –>|führt zu| step2_obfuscation step2_obfuscation –>|führt zu| step3_guardrails step3_guardrails –>|führt zu| step4_dead_drop step4_dead_drop –>|führt zu| step5_cred_files step5_cred_files –>|führt zu| step6_browser_creds step6_browser_creds –>|führt zu| step7_private_keys step7_private_keys –>|führt zu| step8_exfil_webhook step8_exfil_webhook –>|führt zu| step9_persistence_rc step9_persistence_rc –>|führt zu| step10_wmi_event step10_wmi_event –>|führt zu| step11_ps_profile step11_ps_profile –>|führt zu| step12_vnc step12_vnc –>|führt zu| step13_multi_stage step13_multi_stage –>|führt zu| step14_input_injection step14_input_injection –>|führt zu| step15_keylog_clip step15_keylog_clip –>|führt zu| step16_browser_hijack "
Angriffsablauf
Erkennungen
NodeJS-Binary wird aus ungewöhnlichem Standort ausgeführt (via cmdline)
Ansicht
Möglicher Versuch der Domänenkommunikation bei IP-Lookup (via dns)
Ansicht
Mögliche Persistenzpunkte [ASEPs – Software/NTUSER Hive] (via registry_event)
Ansicht
Möglicher Missbrauch von Publicnode Ethereum als C2-Kanal (via dns_query)
Ansicht
IOCs (DestinationIP) zum Erkennen: GlassWorm versteckt ein RAT in einer bösartigen Chrome-Erweiterung
Ansicht
IOCs (HashMd5) zum Erkennen: GlassWorm versteckt ein RAT in einer bösartigen Chrome-Erweiterung
Ansicht
IOCs (HashSha256) zum Erkennen: GlassWorm versteckt ein RAT in einer bösartigen Chrome-Erweiterung
Ansicht
IOCs (HashSha1) zum Erkennen: GlassWorm versteckt ein RAT in einer bösartigen Chrome-Erweiterung
Ansicht
IOCs (SourceIP) zum Erkennen: GlassWorm versteckt ein RAT in einer bösartigen Chrome-Erweiterung
Ansicht
IOCs (Emails) zum Erkennen: GlassWorm versteckt ein RAT in einer bösartigen Chrome-Erweiterung
Ansicht
GlassWorm-RAT und Datenausleitungs-Erkennung [Windows-Netzwerkverbindung]
Ansicht
Erkennung der Ausführung von Ledger/Trezor-Phishing-Binary [Windows-Prozesserstellung]
Ansicht
Simulationsausführung
Voraussetzung: Der Telemetrie- & Baseline-Pre‑flight-Check muss bestanden sein.
Rationale: Dieser Abschnitt beschreibt die genaue Ausführung der Angreifertechnik (TTP), die darauf abzielt, die Erkennungsregel auszulösen. Die Befehle und Erzählungen MÜSSEN die identifizierten TTPs direkt widerspiegeln und zielen darauf ab, die genaue Telemetrie zu erzeugen, die von der Erkennungslogik erwartet wird.
-
Angriffserzählung und Befehle:
Ein Angreifer hat eine bösartige Binärdatei erhalten, die sich als Ledger Live/Trezor-Wallet-Client ausgibt. Die Binärdatei ist benanntAssaac.exeum ein legitimes ausführbares Programm nachzuahmen. Es wird im Benutzerverzeichnis%APPDATA%abgelegt und eine begleitende JavaScript-Datei (index.js) wird in einem versteckten Unterordner abgelegtQtCvyfVWKH. Der Angreifer führt dann die Binärdatei aus, wodurch Windows ein Prozesserstellungsereignis mit genau dem Bildnamen und dem Befehlspfad protokolliert, den die Sigma-Regel überwacht.Schritt-für-Schritt:
- Erstellen Sie den versteckten Ordner und legen Sie das bösartige Skript ab.
- Kopieren Sie die bösartige ausführbare Datei (
Assaac.exe) in den AppData-Ordner des Benutzers. - Starten Sie die ausführbare Datei, die
index.jsliest und führt Anmeldediebstahlroutinen aus.
-
Regression Test Script:
# ------------------------------------------------------------ # Malicious files einrichten # ------------------------------------------------------------ $appData = $env:APPDATA $folder = Join-Path $appData "QtCvyfVWKH" $exePath = Join-Path $appData "Assaac.exe" $jsPath = Join-Path $folder "index.js" # Stellen Sie sicher, dass der versteckte Ordner vorhanden ist New-Item -ItemType Directory -Path $folder -Force | Out-Null # Verstecken Sie den Ordner (optional) (Get-Item $folder).Attributes += 'Hidden' # Dummy-bösartige ausführbare Datei bereitstellen (für Demo verwenden wir eine Kopie von calc.exe) Copy-Item -Path "$env:SystemRootSystem32calc.exe" -Destination $exePath -Force # Dummy-JavaScript-Payload bereitstellen (Inhalt ist für die Erkennung irrelevant) @" // Placeholder für bösartige Nutzlast console.log('Kryptowährungs-Wallet-Diebstahl ausgeführt'); "@ | Set-Content -Path $jsPath -Encoding UTF8 # ------------------------------------------------------------ # Die bösartige Binärdatei ausführen (dies sollte die Sigma-Regel auslösen) # ------------------------------------------------------------ & $exePath "$jsPath" # ------------------------------------------------------------ # Ende des Skripts – Artefakte für manuelle Bereinigung zurücklassen # ------------------------------------------------------------ -
Bereinigungskommandos:
# Beenden Sie den bösartigen Prozess, falls er noch läuft Get-Process -Name "Assaac" -ErrorAction SilentlyContinue | Stop-Process -Force # Entfernen Sie die erstellten Dateien und Ordner Remove-Item -Path $exePath -Force -ErrorAction SilentlyContinue Remove-Item -Path $jsPath -Force -ErrorAction SilentlyContinue Remove-Item -Path $folder -Recurse -Force -ErrorAction SilentlyContinue