EDRStartAbHinder: EDR-Startprozess-Blocker
Detection stack
- AIDR
- Alert
- ETL
- Query
Zusammenfassung
Der Artikel beschreibt ein Forschungstool namens EDRStartupHinder, das den Windows Bindlink-Mechanismus ausnutzt, um das Laden einer kritischen System32-DLL umzuleiten, was dazu führt, dass ein geschützter EDR-Prozess während des Startvorgangs abbricht. Durch die Installation eines höher priorisierten Dienstes und das Bereitstellen einer unsignierten Ersatz-DLL verhindert die Methode die Initialisierung der EDR-Komponente, wodurch der Host beim Booten effektiv seines Endpunktschutzes beraubt wird.
Untersuchung
Der Autor stellte fest, dass Microsoft Defender msvcp_win.dll während des Startvorgangs lädt und dass ein mit der TDI-Gruppe verbundener Dienst früher als Defender startet. Das Tool kopiert die legitime DLL, ändert den PE-Header, um eine manipulierte Variante zu erstellen, registriert einen Dienst namens DusmSVC-01 und überwacht den Defender-Prozess (MsMpEng.exe). Anschließend verwendet es Bindlink, um die DLL-Resolution umzuleiten, sodass Defender versucht, die unsignierte DLL zu laden. Da der Prozess unter PPL-Schutz läuft, führt das Laden des unsignierten Moduls zur Beendigung des Defender-Prozesses.
Minderung
Überwachen Sie auf verdächtige oder unerwartete Ereignisse bei der Dienst-Erstellung und auf Telemetrie, die die Nutzung von bindlink.dll anzeigt. Erzwingen Sie die Integritätsvalidierung für System32-DLLs und warnen Sie bei unerwarteten Duplikaten, Veränderungen oder Pfad-Umleitungen beim Laden. Reduzieren Sie die Angriffsanfälligkeit, indem Sie Schreibberechtigungen einschränken, die eine DLL-Umleitung ermöglichen könnten, und verschärfen Sie die Kontrollen um KnownDLLs sowie die Durchsetzung von Code-Signatur-Richtlinien, wo dies möglich ist.
Reaktion
Wenn ein neuer Dienst namens DusmSVC-01 oder ein anomales Bindlink-Verhalten erkannt wird, isolieren Sie den Endpunkt und validieren Sie die Integrität der wichtigsten System32-DLLs. Stellen Sie gegebenenfalls veränderte Dateien aus vertrauenswürdigen Quellen oder Backups wieder her, entfernen Sie dann den bösartigen Dienst und jegliche damit verbundenen Artefakte. Führen Sie eine forensische Überprüfung durch, um zusätzliche Persistenz, Privileg-Eskalation oder Folgeaktivitäten im Zusammenhang mit der Umgehung des Schutzes zur Startzeit zu identifizieren.
„graph TB %% Class Definitions classDef action fill:#99ccff classDef technique fill:#ffcc99 classDef operator fill:#ff9900 %% Nodes step_create_service[„<b>Aktion</b> – <b>T1542 Voru2011OS Boot</b><br/>Erstellen eines bösartigen Windows-Dienstes (EDRStartupHinder), der vor dem Ziel-EDR-Dienst starten soll.“] class step_create_service action step_modify_registry[„<b>Aktion</b> – <b>T1484 Änderung der Domänen- oder Mandantenrichtlinie</b><br/>Ändern der Dienstgruppenordnung und der Bindlink-Konfiguration im Register, um den bösartigen Dienst zu priorisieren und die DLL-Umleitung zu ermöglichen.“] class step_modify_registry action step_hijack_dll[„<b>Aktion</b> – <b>T1574.001 DLL-Suchreihenfolge-Entführung</b> & <b>T1055.001 Dynamischeu2011Link-Bibliothek-Injektion</b><br/>Umleiten einer Kern-DLL (z.B. msvcp_win.dll) über Bindlink, damit der EDR-Prozess eine bösartige Kopie lädt.“] class step_hijack_dll action step_corrupt_dll[„<b>Aktion</b> – <b>T1574.001 DLL-Umleitung u2013 PE-Header-Korruption</b><br/>Ändern des PE-Headers der kopierten DLL, um deren Signatur ungültig zu machen, damit der geschützte EDR-Prozess die Bibliothek ablehnt.“] class step_corrupt_dll action step_dos[„<b>Aktion</b> – <b>T1499.004 Endpunkt-Dienstverweigerung</b><br/>Der EDR-Dienst kann die erforderliche DLL nicht laden und beendet sich, was zu einer Dienstverweigerung der Sicherheitskomponente führt.“] class step_dos action %% Edges step_create_service u002du002d>|führt zu| step_modify_registry step_modify_registry u002du002d>|ermöglicht| step_hijack_dll step_hijack_dll u002du002d>|verursacht| step_corrupt_dll step_corrupt_dll u002du002d>|resultiert in| step_dos „
Angriffsablauf
Erkennungen
Mögliche AV-Prozess-Aufzählung / Manipulation (über Kommandozeile)
Anzeigen
Verdächtiger Shell-Befehl im Dienstpfad (über System)
Anzeigen
Verdächtiger Shell-Befehl im Dienstpfad (über Audit)
Anzeigen
EDRStartupHinder-DLL-Signatur-Invalidierung [Windows-Datei-Ereignis]
Anzeigen
Simulationsausführung
Voraussetzung: Die Telemetrie- & Baseline-Vorabkontrolle muss bestanden sein.
Angriffsgeschichte & Befehle
Der Angreifer beabsichtigt, die Endpunkt-Erkennungsplattform zu lähmen, indem er eine manipulierte Kopie von msvcp_win.dllliefert. Die Schritte sind:
- Lokalisieren Sie die vertrauenswürdige DLL in
C:WindowsSystem32. - Kopieren Sie sie in ein verstecktes, vom Angreifer kontrolliertes Verzeichnis, dessen Name „FakeLib“ enthält (z.B.
C:ProgramDataFakeLib). - Signatur beschädigen durch Anhängen beliebiger Bytes am Ende der Datei, um sicherzustellen, dass sich der Binär-Hash ändert und die Authenticode-Signatur ungültig wird.
- Auslösen des Ladevorgangs des EDR (hier nicht simuliert) – die Anwesenheit der fehlerhaften DLL wird dazu führen, dass der EDR während der Initialisierung fehlschlägt.
Regressionstest-Skript
# ---------------------------------------------------------------
# EDRStartupHinder-Simulation – kopiert & beschädigt msvcp_win.dll
# ---------------------------------------------------------------
# 1. Quelle und bösartiges Ziel definieren
$src = "$env:SystemRootSystem32msvcp_win.dll"
$dstDir = "C:ProgramDataFakeLib"
$dst = Join-Path $dstDir "msvcp_win.dll"
# 2. Zielordner erstellen (versteckt)
if (-not (Test-Path $dstDir)) {
New-Item -Path $dstDir -ItemType Directory | Out-Null
# Ordner verstecken, um Tarnung nachzuahmen
(Get-Item $dstDir).Attributes += 'Hidden'
}
# 3. Legitime DLL kopieren
Copy-Item -Path $src -Destination $dst -Force
# 4. DLL beschädigen – 4 zufällige Bytes anhängen
$rand = -join ((65..90) + (97..122) | Get-Random -Count 4 | % {[char]$_})
[IO.File]::OpenWrite($dst).Seek(0, [IO.SeekOrigin]::End) | Out-Null
[IO.File]::WriteAllBytes($dst, [byte[]]($rand.ToCharArray() | ForEach-Object {[byte][char]$_}))
Write-Host "EDRStartupHinder-Simulation abgeschlossen. DLL in $dst kopiert und beschädigt."
Aufräumbefehle
# Entfernen der bösartigen Kopie und optional des versteckten Ordners
$dstDir = "C:ProgramDataFakeLib"
if (Test-Path $dstDir) {
Remove-Item -Path $dstDir -Recurse -Force
Write-Host "FakeLib-Verzeichnis aufgeräumt."
Ende des Berichts