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.
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