Jagd auf Bedrohungen mit Zscaler deckt und rekonstruiert die Water Gamayun APT-Kampagne auf
Detection stack
- AIDR
- Alert
- ETL
- Query
Zusammenfassung
Der Bericht behandelt einen mehrstufigen Einbruch, der der Water Gamayun APT-Gruppe zugeschrieben wird. Diese nutzt eine Zero-Day-MMC-Schwachstelle (CVE-2025-26633) aus, um PowerShell-Nutzlasten in einem doppelten RAR-Archiv zu liefern.
Untersuchung
Zscaler rekonstruierte die Kill Chain von einem Bing-Redirect zu einer kompromittierten Website, dem Herunterladen einer .pdf.rar-Datei, der Ausnutzung von MSC EvilTwin, gestellten PowerShell-Skripten und der Ausführung der ItunesC.exe-Hintertür.
Minderung
Die Anleitung umfasst das Überwachen von doppelten Erweiterungsarchiven, das Überprüfen von Weiterleitungen, das Erkennen von kodierten PowerShell-Befehlen und das Blockieren der bösartigen IP und Domains.
Reaktion
Bei Erkennung Alarm auslösen bei mmc.exe, das PowerShell mit -EncodedCommand ausführt, Datei isolieren, ausgehende Verbindungen zu 103.246.147.17 blockieren und Vorfallreaktionsprozeduren aktivieren.
mermaid graph TB %% Klassendefinitionen classDef action fill:#99ccff classDef tool fill:#ffcc99 classDef malware fill:#ff9999 classDef process fill:#ccccff classDef file fill:#ffff99 classDef c2 fill:#ffccff %% Knotendefinitionen node_initial_access[„<b>Aktion</b> – <b>T1659 Inhaltseinspeisung</b><br/><b>Beschreibung</b>: Kompromittierung einer legitimen Seite zur Einspeisung bösartiger Redirects“] class node_initial_access action node_malicious_domain[„<b>Datei</b> – <b>Name</b>: Bösartige nachgeahmte Domain<br/><b>Zweck</b>: Bereitstellung eines doppelten Erweiterungsarchivs“] class node_malicious_domain file node_pdf_rar[„<b>Datei</b> – <b>Name</b>: broschuere.pdf.rar<br/><b>Typ</b>: Doppel-Erweiterungsarchiv als PDF getarnt“] class node_pdf_rar file node_user_execution[„<b>Aktion</b> – <b>T1204.001 Bösartiger Link</b><br/><b>Beschreibung</b>: Opfer klickt auf Link und lädt Archiv herunter“] class node_user_execution action node_exploit_client[„<b>Aktion</b> – <b>T1203 Ausnutzung für Client-Ausführung</b><br/><b>Beschreibung</b>: Archiv wirft .msc ab, das mmc.exe über MSC EvilTwin kapert“] class node_exploit_client action node_cve[„<b>Tool</b> – <b>Name</b>: MSC EvilTwin Exploit (CVE‑2025‑26633)<br/><b>Ziel</b>: mmc.exe“] class node_cve tool node_mmc[„<b>Prozess</b> – <b>Name</b>: mmc.exe“] class node_mmc process node_powershell[„<b>Prozess</b> – <b>Name</b>: powershell.exe“] class node_powershell process node_ps_command[„<b>Aktion</b> – <b>T1059.001 PowerShell</b><br/><b>Beschreibung</b>: EncodedCommand Base64 UTF‑16LE Nutzlast“] class node_ps_command action node_obfuscation[„<b>Aktion</b> – <b>T1027 Verschleierung</b> und <b>T1140 Dekodierung</b><br/><b>Beschreibung</b>: Doppelt-kodierten PowerShell-Befehl“] class node_obfuscation action node_unrar[„<b>Tool</b> – <b>Name</b>: UnRAR.exe“] class node_unrar tool node_rar_payload[„<b>Datei</b> – <b>Name</b>: Passwortgeschützte RAR-Nutzlasten“] class node_rar_payload file node_hidden_window[„<b>Aktion</b> – <b>T1564.003 Verstecktes Fenster</b><br/><b>Beschreibung</b>: .NET-Klasse WinHpXN ruft ShowWindow auf, um Konsole zu verbergen“] class node_hidden_window action node_itunesc[„<b>Malware</b> – <b>Name</b>: ItunesC.exe<br/><b>Funktion</b>: Loader und Hintertür“] class node_itunesc malware node_c2[„<b>C2</b> – <b>IP</b>: 103.246.147.17<br/><b>Protokoll</b>: HTTPS“] class node_c2 c2 %% Verbindungen node_initial_access u002du002d>|leitet_weiter zu| node_malicious_domain node_malicious_domain u002du002d>|bedient| node_pdf_rar node_pdf_rar u002du002d>|wird_heruntergeladen von| node_user_execution node_user_execution u002du002d>|löst aus| node_exploit_client node_exploit_client u002du002d>|wirft ab| node_cve node_cve u002du002d>|kapert| node_mmc node_mmc u002du002d>|lädt| node_powershell node_powershell u002du002d>|führt aus| node_ps_command node_ps_command u002du002d>|verwendet| node_obfuscation node_ps_command u002du002d>|lädt herunter| node_unrar node_unrar u002du002d>|extrahiert| node_rar_payload node_rar_payload u002du002d>|führt zu| node_hidden_window node_hidden_window u002du002d>|startet| node_itunesc node_itunesc u002du002d>|kommuniziert mit| node_c2
Angriffsablauf
Erkennungen
Bösartige MMC- und PowerShell-Ausführung durch Water Gamayun APT [Windows-Prozesserstellung]
Anzeigen
Erkennung von PowerShell-Verschleierungsmustern von Water Gamayun [Windows Powershell]
Anzeigen
IOCs (DestinationIP) zur Erkennung: Zscaler Threat Hunting entdeckt und rekonstruiert einen raffinierten Water Gamayun APT-Gruppenangriff
Anzeigen
IOCs (SourceIP) zur Erkennung: Zscaler Threat Hunting entdeckt und rekonstruiert einen raffinierten Water Gamayun APT-Gruppenangriff
Anzeigen
IOCs (HashMd5) zur Erkennung: Zscaler Threat Hunting entdeckt und rekonstruiert einen raffinierten Water Gamayun APT-Gruppenangriff
Anzeigen
Simulationsausführung
Voraussetzung: Der Telemetrie- & Basisflugcheck muss bestanden sein.
Begründung: Dieser Abschnitt beschreibt die genaue Ausführung der vom Gegner angewendeten Technik (TTP), die darauf abzielt, die Erkennungsregel auszulösen. Die Befehle und Erzählungen MÜSSEN die identifizierten TTPs direkt widerspiegeln und darauf abzielen, genau die Telemetrie zu erzeugen, die die Erkennungslogik erwartet. Abstrakte oder nicht verwandte Beispiele führen zu Fehldiagnosen.
-
Angriffserzählung & Befehle:
Der Angreifer, der auf die Methodik von Water Gamayun zurückgreift, bereitet eine bösartige PowerShell-Nutzlast vor, die einen neuen lokalen Admin-Benutzer erstellt und ihn zur Administratorengruppe hinzufügt. Um die Nutzlast zu verschleiern, führt der Angreifer folgende Schritte aus:- Schreibt das PowerShell-Skript im Klartext.
- Kodiert es zu UTF‑16LE Base64.
- Fügt nach jeweils 4 Zeichen einen Unterstrich (
_) ein, um die Entropie zu erhöhen. - Verkettet eine
|Replace('_','')Operation, damit die LaufzeitPowerShell die Unterstriche vor dem Dekodieren entfernt, um das Erkennungssignatur-Match zu erzeugen.
Der finale Ausführungsbefehl ist:
powershell.exe -EncodedCommand <Base64StringWithUnderscores> | Replace('_','')Diese genaue Befehlszeile erfüllt die beiden Bedingungen der Sigma-Regel (
-EncodedCommandand|Replace('_','')), und erzeugt Einträge Sysmon EventID 1 und Security EventID 4688, die die Regel markieren wird. -
Regression Test Script:
Das Skript unten automatisiert die Erstellung der verschleierten Nutzlast und führt sie aus. Es kann auf jedem Windows-Host mit PowerShell 5.1+ ausgeführt werden.# Water Gamayun style PowerShell-Verschleierungssimulation # Schritt 1: Definiere die bösartige PowerShell-Nutzlast (fügt einen lokalen Admin-Benutzer hinzu) $payload = @' $user = "tempAdmin" $pwd = ConvertTo-SecureString "P@ssw0rd!" -AsPlainText -Force New-LocalUser -Name $user -Password $pwd -FullName "Temp Admin" -Description "Test admin account" Add-LocalGroupMember -Group "Administrators" -Member $user '@ # Schritt 2: Kodierung zu UTF-16LE und dann Base64 $bytes = [System.Text.Encoding]::Unicode.GetBytes($payload) $b64 = [Convert]::ToBase64String($bytes) # Schritt 3: Einspeisung von Unterstrichen alle 8 Zeichen (simulieren des Gruppenmusters) $b64Underscored = ($b64 -split '(.{8})' | Where-Object {$_} | ForEach-Object { $_ + '_' }) -join '' # Schritt 4: Ausführen mit der erforderlichen Replace('_','') Pipeline powershell.exe -EncodedCommand $b64Underscored | Replace('_','') -
Bereinigungskommandos:
Die folgenden Befehle entfernen den Testbenutzer und stellen die Umgebung wieder her.# Bereinigung: Entfernen des durch den Test erstellten temporären Admin-Kontos $user = "tempAdmin" if (Get-LocalUser -Name $user -ErrorAction SilentlyContinue) { Remove-LocalUser -Name $user Write-Host "Gelöschter Testbenutzer $user." } else { Write-Host "Testbenutzer $user existiert nicht." }