Lockige Kameraden: Abnormale Hyper-V-Aktivierung
Detection stack
- AIDR
- Alert
- ETL
- Query
Abnormaler Hyper-V-Aktivierung
Die Forschung deckt einen neuen Bedrohungsakteur auf, Curly COMrades, der Windows Hyper‑V nutzt, um eine versteckte Alpine Linux-VM auf kompromittierten Windows 10-Hosts zu erstellen. Die VM führt benutzerdefinierte Malware (CurlyShell und CurlCat) aus, um persistente Reverse-Shell- und Proxy-Funktionen bereitzustellen und gleichzeitig typische EDR-Erkennung zu umgehen. Zusätzliche Techniken umfassen PowerShell-basierte Kerberos-Ticket-Injektionen, die Erstellung lokaler Konten durch Gruppenrichtlinien und die Verwendung von Open-Source-Proxy-Tools.
Wie verstecken Curly COMrades Malware in Linux-VMs?
Curly COMrades verstecken Malware, indem sie kleine Alpine Linux-Instanzen innerhalb von Microsoft Hyper-V auf kompromittierten Windows-Hosts erstellen, benutzerdefinierte Installationen (als CurlyShell und CurlCat gemeldet) in diesen versteckten VMs ausführen und das Hyper-V-Netzwerk (Standard-Switch) nutzen, so dass ausgehender Traffic vom Host zu kommen scheint.
Sie setzen PowerShell-Helper und curl.exe auf dem Host ein, geben irreführende VM-Namen und beschränken die Hyper-V-Verwaltungsschnittstellen, um Erkennung zu verhindern, und wurden in einer Bitdefender-Analyse mit technischen Indikatoren und Abhilfemaßnahmen dokumentiert.
Minderung
Setzen Sie host-basierte Netzwerküberwachung ein (z. B. Bitdefender NAD), um anomalen ausgehenden Traffic vom Host-Netzwerkstapel zu erkennen. Härten Sie Windows, indem Sie Hyper-V aktivierungsweise deaktivieren oder streng kontrollieren und die Verwendung von DISM und PowerShell-Cmdlets einschränken, die VMs importieren/starten. Wenden Sie proaktive Härtung und Angriffsflächenreduzierung (PHASR) an, um die unbefugte Nutzung nativer Binärdateien (curl, rar, Import-VM, Start-VM) zu blockieren. Überwachen Sie die Erstellung neuer Hyper-V-VMs, ungewöhnliche VHDX/VMCX-Dateien in ProgramData und Crontab-Änderungen auf Linux-VMs. Erkennen Sie LSASS-Zugriff und Kerberos-Ticket-Injektion mit EDR/XDR-Zugriffsbenachrichtigungen. Erzwingen Sie das Prinzip des geringsten Privilegs für Gruppenrichtlinienskripte und prüfen Sie die Erstellung lokaler Konten. Verwenden Sie signaturbasierte und verhaltensbasierte Erkennung für benutzerdefinierte Implantate CurlyShell/CurlCat und bekannte Proxy-Tools.
Reaktion
Isolieren Sie betroffene Hosts, deaktivieren Sie Hyper-V und entfernen Sie die versteckten VM-Dateien und zugehörigen VHDX/VMCX-Bilder. Führen Sie einen vollständigen Datei- und Registrierungsscan für die PowerShell-Skripte (kb_upd.ps1, screensaver.ps1, locals.ps1) durch und löschen Sie diese. Setzen Sie nicht autorisierte lokale Konten zurück oder entfernen Sie sie und ändern Sie Passwörter. Blockieren Sie ausgehende Verbindungen zu den identifizierten C2-IPs (z. B. 45.43.91.10, 88.198.91.116) und aktualisieren Sie die Firewall-Regeln. Setzen Sie Erkennungsregeln für die speziellen DLL/ELF-Signaturen von CurlyShell und CurlCat sowie für die beobachteten Proxy-Tools ein. Führen Sie eine Bedrohungssuche mit IOCs aus dem öffentlichen GitHub-Repository durch. Arbeiten Sie mit CERTs für den Informationsaustausch zusammen und überwachen Sie weitere Aktivität. Wenden Sie Patches an und aktualisieren Sie, um eventuell ausgenutzte CVEs zu beheben (sofern welche identifiziert wurden).
graph TB %% Class definitions classDef action fill:#99ccff classDef tool fill:#ffcc99 classDef malware fill:#ff9999 classDef process fill:#ccccff %% Nodes – Actions action_initial_setup[„<b>Aktion</b> – Initiale Einrichtung<br /><b>Techniken</b>: T1564.006 Artefakte verbergen: Virtuelle Instanz ausführen, T1497 Virtualisierungs-/Sandbox-Evasion, T1059.012 Hypervisor-CLI<br />Aktiviert Hyper‑V über DISM und deaktiviert Verwaltungsklienten“] class action_initial_setup action action_vm_deployment[„<b>Aktion</b> – VM-Bereitstellung<br /><b>Techniken</b>: T1059.012 Hypervisor-CLI<br />Lädt Alpine-Linux-VHDX mit curl herunter, entpackt mit WinRAR, importiert und startet die VM über PowerShell“] class action_vm_deployment action action_vm_persistence[„<b>Aktion</b> – Persistenz in der VM<br /><b>Techniken</b>: T1037.004 RC-Skripte, T1543 Systemprozess erstellen/ändern<br />Cron-Job startet alle 4 Stunden /bin/alpine_init, um CurlyShell zu starten“] class action_vm_persistence action action_c2_communication[„<b>Aktion</b> – C2-Kommunikation<br /><b>Techniken</b>: T1071.001 Webprotokolle, T1102.002 Bidirektionaler Webdienst<br />CurlyShell kontaktiert HTTPS-Endpunkt mit libcurl (GET/POST)“] class action_c2_communication action action_proxy_tunneling[„<b>Aktion</b> – Proxy & Tunneling<br /><b>Techniken</b>: T1090.001 Interner Proxy, T1090.003 Multi‑Hop‑Proxy<br />SSH-Reverse-Proxy über ProxyCommand konfiguriert, leitet Verkehr über lokalen SOCKS‑Proxy weiter“] class action_proxy_tunneling action action_credential_abuse[„<b>Aktion</b> – Missbrauch von Anmeldeinformationen<br /><b>Techniken</b>: T1550.003 Pass-the-Ticket, T1059.001 PowerShell<br />PowerShell-Skript kb_upd.ps1 injiziert gefälschte Kerberos-Tickets in LSASS“] class action_credential_abuse action action_lateral_movement[„<b>Aktion</b> – Laterale Bewegung<br /><b>Techniken</b>: T1021.002 SMB/Windows-Adminfreigaben, T1135 Netzwerkfreigaben-Erkennung<br />Verwendet injizierte Tickets mit net use und SMB-Befehlen zur Enumeration von Freigaben und Ausführung entfernter Befehle“] class action_lateral_movement action action_persistence_accounts[„<b>Aktion</b> – Persistenz über lokale Konten<br /><b>Techniken</b>: T1136.001 Lokales Konto erstellen, T1037.003 Netzwerk-Anmeldeskript<br />Gruppenrichtlinien-Skripte erstellen oder setzen lokale Konten (z. B. camera) für dauerhaften Zugriff zurück“] class action_persistence_accounts action action_defense_evasion[„<b>Aktion</b> – Umgehung von Abwehrmaßnahmen<br /><b>Techniken</b>: T1059.003 Windows-Befehlszeile, T1202 Indirekte Befehlsausführung, T1001.003 Protokoll-Imitation, T1599 Überbrückung von Netzwerkgrenzen<br />Führt alle bösartigen Binärdateien innerhalb einer versteckten VM aus, verwendet benutzerdefinierte Base64-Kodierung zur Reduzierung von Forensikspuren“] class action_defense_evasion action %% Nodes – Tools / Processes / Malware tool_dism[„<b>Tool</b> – DISM<br /><b>Beschreibung</b>: Stellt Windows-Funktionen wie Hyper‑V bereit“] class tool_dism tool tool_powershell[„<b>Tool</b> – PowerShell<br /><b>Beschreibung</b>: Skriptumgebung für VM-Import, Ticket-Injektion und weitere Automatisierung“] class tool_powershell tool process_curl[„<b>Prozess</b> – curl<br /><b>Beschreibung</b>: Lädt Alpine-VHDX herunter und führt HTTPS‑C2‑Anfragen aus“] class process_curl process process_winrar[„<b>Prozess</b> – WinRAR<br /><b>Beschreibung</b>: Entpackt das heruntergeladene VHDX‑Archiv“] class process_winrar process malware_curlyshell[„<b>Malware</b> – CurlyShell<br /><b>Beschreibung</b>: Benutzerdefinierte Backdoor, die innerhalb einer versteckten Alpine‑VM läuft“] class malware_curlyshell malware malware_ssh_reverse[„<b>Malware</b> – SSH‑Reverse‑Proxy<br /><b>Beschreibung</b>: Über ~/.ssh/config konfiguriert, tunnelt Verkehr über SOCKS“] class malware_ssh_reverse malware script_kb_upd[„<b>Malware</b> – kb_upd.ps1<br /><b>Beschreibung</b>: PowerShell‑Skript, das Kerberos‑Tickets fälscht und in LSASS injiziert“] class script_kb_upd malware %% Connections – Flow action_initial_setup u002du002d>|verwendet| tool_dism action_initial_setup u002du002d>|verwendet| tool_powershell action_vm_deployment u002du002d>|lädt herunter mit| process_curl action_vm_deployment u002du002d>|entpackt mit| process_winrar action_vm_deployment u002du002d>|importiert/startet über| tool_powershell action_vm_persistence u002du002d>|erstellt Cron-Job in| malware_curlyshell action_c2_communication u002du002d>|kommuniziert über| process_curl action_c2_communication u002du002d>|Backdoor| malware_curlyshell action_proxy_tunneling u002du002d>|etabliert| malware_ssh_reverse action_credential_abuse u002du002d>|führt aus| script_kb_upd action_credential_abuse u002du002d>|verwendet| tool_powershell action_lateral_movement u002du002d>|nutzt Tickets aus| script_kb_upd action_lateral_movement u002du002d>|verwendet SMB‑Befehle| tool_powershell action_persistence_accounts u002du002d>|erstellt Konten über| tool_powershell action_defense_evasion u002du002d>|führt Binärdateien aus in| action_vm_deployment action_defense_evasion u002du002d>|verschleiert Daten mit| process_curl %% End of diagram
Versteckte Hyper-V-VM-Angriffskette
Erkennungsregeln
Erkennung von PowerShell-basiertem Hyper-V-VM-Import und -Start [Windows Powershell]
Ansehen
Möglicher IP-Lookup-Domain-Kommunikationsversuch (via DNS)
Ansehen
IOCs (ip) zur Erkennung: Curly COMrades: Umgehung und Persistenz über versteckte Hyper-V Virtual…
Ansehen
IOCs (hash) zur Erkennung: Curly COMrades: Umgehung und Persistenz über versteckte Hyper-V Virtual…
Ansehen
Verdächtige CURL-Verwendung (via cmdline)
Ansehen
Simulationsanweisungen
Simulationsausführung
Voraussetzung: Die Telemetrie- & Basislinien-Prüfung vor dem Flug muss bestanden haben.
Begründung: Dieser Abschnitt beschreibt die genaue Ausführung der Angreifertechnik (TTP), die darauf abzielt, die Erkennungsregel auszulösen. Die Befehle und die Erzählung MÜSSEN direkt den identifizierten TTPs entsprechen und zielen darauf ab, genau die Telemetrie zu generieren, die von der Erkennung vorgesehen ist. Abstrakte oder nicht zusammenhängende Beispiele führen zu einer Fehldiagnose.
-
Angriffsablauf & Befehle:
Der Angreifer hat bereits ein Konto mit geringem Privileg kompromittiert und auf ein Dienstkonto eskaliert, das über Administratorrechte für Hyper-V verfügt. Um die unauffällige Persistenz aufrechtzuerhalten, erstellt er ein verstecktes VM-Abbild im AppV-Cache-Verzeichnis (c:programdatamicrosoftAppVappVirtual Machines1DBCC80B-5803-4AF1-8772-712C688F408A.vmcx). Mithilfe von PowerShell importieren sie diese VM leise und starten sie mit dem Namen WSL, getarnt als legitime Windows Subsystem for Linux-Instanz. Diese exakte Befehlszeile stimmt mit den fest codierten Zeichenfolgen der Sigma-Regel überein und stellt sicher, dass der Alarm ausgelöst wird. -
Regressionstest-Skript:
# ------------------------------------------------- # Simulation der Curly COMrades Hyper‑V-Persistenz # ------------------------------------------------- # Variablen (genaue Zeichenfolgen aus der Regel spiegeln) $vmPath = 'c:programdatamicrosoftAppVappVirtual Machines1DBCC80B-5803-4AF1-8772-712C688F408A.vmcx' $vmName = 'WSL'