Von W-2 zu BYOVD: Wie eine Steuersuche zu Kernelmodus-AV/EDR-Schaltungen führt
Detection stack
- AIDR
- Alert
- ETL
- Query
Zusammenfassung
Eine umfassende Malvertising-Operation missbraucht Google Ads, die mit Steuerformularsuchen verbunden sind, um einen gefälschten ScreenConnect-Installer zu vertreiben. Dieser Installer setzt einen mehrstufigen Crypter ein, der dann ein BYOVD-Dienstprogramm namens HwAudKiller lädt. Das Tool installiert einen signierten Huawei-Audiotreiber und nutzt den Zugriff auf Kernel-Ebene, um AV- und EDR-Prozesse zu beenden. Sobald die Sicherheitskontrollen deaktiviert sind, werfen die Angreifer LSASS-Anmeldeinformationen aus und sammeln Anmeldeinformationen im gesamten Netzwerk mit NetExec. Die Aktivität zeigt, wie die Bereitstellung von Standard-Malware mit einem benutzerdefinierten Kernel-Treiber kombiniert werden kann, um unauffälligen Zugriff zu erhalten, Abwehrmechanismen zu unterdrücken und die Persistenz aufrechtzuerhalten.
Untersuchung
Huntress-Forscher verfolgten den Umleitungspfad von anukitax.com to bringetax.com und bestätigten die Lieferung eines gefälschten ScreenConnect-MSI-Pakets. Die abgelegte Datei crypteds.exe nutzt einen 2-GB-Speicherzuweisungstrick zur Tarnung und startet Shellcode indirekt über timeSetEvent, bevor HwAudKiller geladen wird. Diese Nutzlast schreibt Havoc.sys in %TEMP% und registriert einen Kernel-Dienst namens Havoc, um eine fest kodierte Liste von Sicherheitsprozessen zu beenden. In einer zweiten Infektion erlangten die Angreifer über einen VPN-Kompromiss Zugriff, verwendeten denselben Treiber erneut, erweiterten die Kill-Liste, um FortiEDR-Prozesse einzuschließen, warfen LSASS mit comsvcs.dll aus und bewegten sich seitwärts mit NetExec.
Minderung
Organisationen sollten legitime ScreenConnect-Deployments blockieren oder streng erlauben und auf unbekannte Testinstanz-* Relay-Hostnamen überwachen. Sicherheitsteams sollten auf Kernel-Treiber achten, die aus temporären Pfaden geladen werden, und bei Sysmon Ereignis-ID 6 und Aktivität bei der Installation von Windows-Diensten alarmieren. Strenge Ausführungskontrollen sollten für Dateien durchgesetzt werden, die in C:WindowsSystemTempScreenConnect und %TEMP% geschrieben werden. Anwender-Bewusstseinsmaßnahmen sollten ebenfalls verstärken, dass Google Ads-Suchergebnisse keine vertrauenswürdigen Quellen für steuerbezogene Downloads sind.
Reaktion
Wenn ein bösartiger ScreenConnect-Installer gefunden wird, isolieren Sie sofort den Endpunkt, sammeln crypteds.exe und jeden abgelegten Havoc.sys-Treiber und stoppen den Havoc-Dienst. Beginnen Sie mit Verfahren zum Zurücksetzen von Anmeldeinformationen für potenziell kompromittierte Konten und widerrufen Sie exponierten Zugriff. Scannen Sie anschließend das gesamte Netzwerk auf zusätzliche ScreenConnect-Relay-Verbindungen, NetExec-Ausführungen und Anzeichen von LSASS-Dumping. Schließlich dokumentieren und teilen Sie entdeckte IOCs mit internen und externen Bedrohungsintelligenzkanälen.
"graph TB %% Klassendefinitionen classDef action fill:#99ccff classDef tool fill:#ffcc99 classDef malware fill:#ff9999 classDef process fill:#ccccff classDef driver fill:#ffddaa %% Knotendefinitionen initial_access["<b>Technik</b> – T1659 Inhaltseinschleusung<br/><b>Beschreibung</b>: Bösartige Google Ads leiten Benutzer, die nach Steuerformularen suchen, auf eine verborgene Zielseite um, die einen bösartigen ScreenConnect-MSI-Installer bereitstellt."] class initial_access action tool_google_ads["<b>Tool</b> – Name: Google Ads<br/><b>Zweck</b>: Bereitstellung bösartiger Anzeige, die auf Zielseite verweist."] class tool_google_ads tool malware_screenconnect["<b>Malware</b> – Name: ScreenConnect MSI<br/><b>Typ</b>: Fernzugriffsinstaller."] class malware_screenconnect malware user_execution["<b>Technik</b> – T1204 Benutzeraktion<br/><b>Beschreibung</b>: Opfer führt das heruntergeladene form_w9.msi aus und installiert ScreenConnect."] class user_execution action remote_desktop["<b>Technik</b> – T1219.002 Remote-Desktop-Software<br/><b>Beschreibung</b>: Angreifer erlangt interaktive Fernsteuerung über kompromittierte ScreenConnect-Sitzung."] class remote_desktop action obfuscation["<b>Technik</b> – T1027 Verschleierte Dateien oder Informationen<br/><b>Beschreibung</b>: Nutzlast verwendet XOR-verschlüsselten Shellcode, benutzerdefinierte Komprimierung und reflektierendes Laden."] class obfuscation action compile_after_delivery["<b>Technik</b> – T1027.004 Nach der Lieferung kompilieren<br/><b>Beschreibung</b>: Nutzlast wird nach der Lieferung kompiliert, um statische Erkennung zu vermeiden."] class compile_after_delivery action reflective_loader["<b>Prozess</b> – Name: Reflektierender Loader<br/><b>Beschreibung</b>: Lädt verschlüsselten Shellcode zur Laufzeit."] class reflective_loader process persistence_service["<b>Technik</b> – T1543 Systemprozess erstellen oder ändern<br/><b>Beschreibung</b>: Malware erstellt Windows-Dienst, der signierten Huawei-Treiber lädt, um mit SYSTEM zu laufen."] class persistence_service action driver_havoc["<b>Treiber</b> – Name: Havoc.sys<br/><b>Beschreibung</b>: Signierter Huawei-Kernel-Treiber, geladen von %TEMP%."] class driver_havoc driver credential_dump["<b>Technik</b> – T1547.008 LSASS-Treiber<br/><b>Beschreibung</b>: Treiber verwendet comsvcs.dll via rundll32, um LSASS-Speicher auszugeben."] class credential_dump action tool_comsvcs["<b>Tool</b> – Name: comsvcs.dll<br/><b>Zweck</b>: Von rundll32 für LSASS-Dump aufgerufen."] class tool_comsvcs tool process_rundll["<b>Prozess</b> – Name: rundll32.exe<br/><b>Beschreibung</b>: Führt comsvcs.dll für Anmeldeinformationsausgabe aus."] class process_rundll process discovery_netscan["<b>Technik</b> – T1018 Remote-Systemermittlung<br/><b>Beschreibung</b>: NetScan überprüft interne Hosts."] class discovery_netscan action tool_netscan["<b>Tool</b> – Name: NetScan<br/><b>Zweck</b>: Netzwerk auf aktive Hosts scannen."] class tool_netscan tool lateral_rdp["<b>Technik</b> – T1021.001 Remote-Dienste RDP<br/><b>Beschreibung</b>: RDP für laterale Bewegung verwenden."] class lateral_rdp action tool_rdp["<b>Tool</b> – Name: RDP<br/><b>Zweck</b>: Fernzugriffsprotokoll für laterale Bewegungen."] class tool_rdp tool lateral_nxc["<b>Technik</b> – T1210 Ausnutzung von Remote-Diensten<br/><b>Beschreibung</b>: Nutze NetExec (nxc), um Befehle auf entfernten Maschinen auszuführen."] class lateral_nxc action tool_nxc["<b>Tool</b> – Name: NetExec (nxc)<br/><b>Zweck</b>: Befehle über SMB oder RDP ausführen."] class tool_nxc tool defense_terminate["<b>Technik</b> – T1027 Zusätzliche Abwehrumgehung<br/><b>Beschreibung</b>: Kernel-Treiber beendet Sicherheitsprozesse wie Defender, Kaspersky, SentinelOne."] class defense_terminate action %% Verbindungen initial_access –>|nutzt| tool_google_ads tool_google_ads –>|liefert| malware_screenconnect malware_screenconnect –>|installiert via| user_execution user_execution –>|ermöglicht| remote_desktop remote_desktop –>|bietet Kanal für| obfuscation obfuscation –>|nutzt| compile_after_delivery compile_after_delivery –>|lädt über| reflective_loader reflective_loader –>|erstellt| persistence_service persistence_service –>|lädt Treiber| driver_havoc driver_havoc –>|ermöglicht| credential_dump credential_dump –>|nutzt| tool_comsvcs tool_comsvcs –>|ausgeführt von| process_rundll process_rundll –>|ermöglicht| discovery_netscan discovery_netscan –>|nutzt| tool_netscan discovery_netscan –>|ermöglicht| lateral_rdp lateral_rdp –>|nutzt| tool_rdp lateral_rdp –>|ermöglicht| lateral_nxc lateral_nxc –>|nutzt| tool_nxc driver_havoc –>|führt aus| defense_terminate "
Angriffsablauf
Erkennungen
Möglicher IP Lookup-Domänenkommunikationsversuch (via DNS)
Ansehen
Möglicher BYOVD – Bring Your Own Vulnerable Driver Angriff (via Audit)
Ansehen
Mögliche Dateninfiltration / -exfiltration / C2 über Drittanbieterdienste / -tools (via DNS)
Ansehen
Alternative Fernzugriffs- / Management-Software (via Prozess-Erstellung)
Ansehen
Mögliches Anmeldeauslesen mit Comsvcs.dll (via CMD-Line)
Ansehen
Möglicher BYOVD – Bring Your Own Vulnerable Driver Angriff (via Dateiereignis)
Ansehen
Mögliche Systemprozess-Aufzählung (via CMD-Line)
Ansehen
Möglicher Telegram-Missbrauch als Kommunikationskanal (via DNS-Anfrage)
Ansehen
Windows-Dienst, der auf einen Treiber an einem verdächtigen Ort verweist, wurde erstellt (via CMD-Line)
Ansehen
Mögliche Dateninfiltration / -exfiltration / C2 über Drittanbieterdienste / -tools (via Proxy)
Ansehen
Windows-Dienst, der auf einen Treiber verweist, wurde erstellt (via CMD-Line)
Ansehen
Mögliche Lsass-Prozess-Aufzählung (via CMD-Line)
Ansehen
IOCs (Ziel-IP) zur Erkennung: Vom W-2 zu BYOVD: Wie eine Steuersuche zu Kernel-Modus AV / EDR Kill führt
Ansehen
IOCs (HashSha256) zur Erkennung: Vom W-2 zu BYOVD: Wie eine Steuersuche zu Kernel-Modus AV / EDR Kill führt
Ansehen
IOCs (Quell-IP) zur Erkennung: Vom W-2 zu BYOVD: Wie eine Steuersuche zu Kernel-Modus AV / EDR Kill führt
Ansehen
Malvertising-Kampagne, die bösartige Software liefert und Anmeldeinformationen erntet [Windows Prozess-Erstellung]
Ansehen
Simulationsausführung
Voraussetzung: Die Telemetrie- und Basislinien-Vorprüfung muss bestanden sein.
Begründung: Dieser Abschnitt beschreibt die genaue Ausführung der gegnerischen Technik (TTP), die entworfen wurde, um die Erkennungsregel auszulösen. Die Befehle und die Erzählung müssen direkt die identifizierten TTPs widerspiegeln und darauf abzielen, genau die Telemetrie zu erzeugen, die durch die Erkennungslogik erwartet wird.
-
Angriffs-Narrativ & Befehle:
- Erster Zugriff via Malvertising: Das Opfer klickt auf eine bösartige Anzeige, während es nach Steuerformularen sucht, was einen Drive-by-Download von
form_w9.msi. - Installation von bösartiger Software: Das MSI installiert stillschweigend ein ScreenConnect-ähnliches Fernunterstützungs-Tool und legt
crypteds.exeandsent.exeim%TEMP%Verzeichnis ab. - Anmeldeinformationen ernten:
crypteds.exewird gestartet, um LSA Secrets zu dumpen. - DLL-Seitenladen via Rundll32: Um statische Erkennung zu umgehen, lädt der Angreifer eine bösartige DLL mit
rundll32.exemit der System-DLLcomsvcs.dllals Einstiegspunkt, welcher die eingebettete Nutzlast ausführt.
Die genauen Befehle (simuliert auf einem Testgerät) sind:
# 1. Das bösartige MSI bereitstellen (simuliert) Start-Process -FilePath "C:Tempform_w9.msi" -ArgumentList "/quiet" -Wait # 2. Das Tool zum Dumpen der Anmeldeinformationen starten Start-Process -FilePath "$env:TEMPcrypteds.exe" -ArgumentList "/dump" -Wait # 3. Die bösartige Nutzlast über rundll32 mit comsvcs.dll laden rundll32.exe "C:windowsSystem32comsvcs.dll",LaunchApplication "$env:TEMPsent.exe" - Erster Zugriff via Malvertising: Das Opfer klickt auf eine bösartige Anzeige, während es nach Steuerformularen sucht, was einen Drive-by-Download von
-
Regressionstest-Skript: Das Skript unten automatisiert die obigen Schritte und stellt sicher, dass die generierte Telemetrie den Erwartungen der Erkennungsregel entspricht.
# Regression Test Script – Simuliert die Malvertising-Kampagne # ----------------------------------------------------------- # 0. Voraussetzung: Stellen Sie sicher, dass Sysmon mit aktivierter Befehlszeilenprotokollierung läuft. # Variablen $msiPath = "$env:TEMPform_w9.msi" $dumpTool = "$env:TEMPcrypteds.exe" $payload = "$env:TEMPsent.exe" $dllPath = "C:windowsSystem32comsvcs.dll" # Helfer: Dummy-Dateien erstellen, um die bösartigen Binärdateien zu imitieren New-Item -Path $msiPath -ItemType File -Force | Out-Null New-Item -Path $dumpTool -ItemType File -Force | Out-Null New-Item -Path $payload -ItemType File -Force | Out-Null Write-Host "[*] Installation des bösartigen MSI (simuliert)..." Start-Process -FilePath "msiexec.exe" -ArgumentList "/i `"$msiPath`" /quiet" -Wait Write-Host "[*] Ausführen des Anmeldeinformationen-Dumping-Tools..." Start-Process -FilePath $dumpTool -ArgumentList "/dump" -Wait Write-Host "[*] Durchführung von DLL-Seitenladen über rundll32..." rundll32.exe "`"$dllPath`"",LaunchApplication "`"$payload`"" Write-Host "[+] Simulation abgeschlossen. Überprüfen Sie die Erkennung über das SIEM." -
Aufräumbefehle: Entfernen Sie die Dummy-Artefakte und stoppen Sie alle verbleibenden Prozesse.
# Aufräumskript $paths = @("$env:TEMPform_w9.msi","$env:TEMPcrypteds.exe","$env:TEMPsent.exe") foreach ($p in $paths) { if (Test-Path $p) { Remove-Item -Path $p -Force } } # Beenden Sie alle während des Tests gestarteten rundll32-Prozesse Get-Process -Name rundll32 -ErrorAction SilentlyContinue | Where-Object {$_.Path -eq "$env:SystemRootSystem32rundll32.exe"} | Stop-Process -Force