SOC Prime Bias: Alto

13 Gen 2026 16:41

EDRStartupOstacolatore: Blocco del Processo di Avvio EDR

Author Photo
Ruslan Mikhalov Chief of Threat Research at SOC Prime linkedin icon Segui
EDRStartupOstacolatore: Blocco del Processo di Avvio EDR
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Riepilogo

L’articolo descrive uno strumento di ricerca chiamato EDRStartupHinder che abusa del meccanismo Bindlink di Windows per reindirizzare il caricamento di una DLL critica di System32, causando un arresto del processo EDR protetto durante l’avvio. Installando un servizio a prioritĂ  piĂą alta e fornendo una DLL sostitutiva non firmata, il metodo impedisce l’inizializzazione del componente EDR, spogliando efficacemente l’host della protezione degli endpoint all’avvio.

Indagine

L’autore ha determinato che Microsoft Defender carica msvcp_win.dll durante l’avvio e che un servizio associato al gruppo TDI si avvia prima di Defender. Lo strumento copia la DLL legittima, altera l’intestazione PE per creare una variante manomessa, registra un servizio chiamato DusmSVC-01 e monitora il processo Defender (MsMpEng.exe). Quindi utilizza Bindlink per reindirizzare la risoluzione della DLL affinchĂ© Defender tenti di caricare la DLL non firmata. PoichĂ© il processo viene eseguito sotto protezione PPL, il caricamento del modulo non firmato provoca la terminazione del processo Defender.

Mitigazione

Monitora eventi di creazione del servizio sospetti o inaspettati e telemetria che indichi l’uso di bindlink.dll. Imporre la convalida dell’integritĂ  per le DLL di System32 e avvisare in caso di duplicati, mutazioni o reindirizzamenti del percorso di caricamento inaspettati. Ridurre la fattibilitĂ  dell’attacco limitando i permessi di scrittura che potrebbero abilitare il reindirizzamento delle DLL, stringendo i controlli attorno a KnownDLLs e applicando politiche di firma del codice laddove operativamente possibile.

Risposta

Se viene rilevato un nuovo servizio chiamato DusmSVC-01 o un comportamento anomalo di Bindlink, isola l’endpoint e convalida l’integritĂ  delle principali DLL di System32. Ripristina eventuali file alterati da fonti affidabili o backup, quindi rimuovi il servizio dannoso e tutti gli artefatti correlati. Completa una revisione forense per identificare ulteriori persistenze, escalation di privilegi o attivitĂ  successive associate alla violazione della protezione all’avvio.

“graph TB %% Class Definitions classDef action fill:#99ccff classDef technique fill:#ffcc99 classDef operator fill:#ff9900 %% Nodes step_create_service[“<b>Azione</b> – <b>T1542 Avvio Prima del Sistema</b><br/>Crea un servizio Windows dannoso (EDRStartupHinder) impostato per avviarsi prima del servizio EDR target.”] class step_create_service action step_modify_registry[“<b>Azione</b> – <b>T1484 Modifica delle Politiche di Dominio o Tenant</b><br/>Modifica l’ordine dei gruppi di servizio e la configurazione di Bindlink nel registro per dare prioritĂ  al servizio dannoso e abilitare il reindirizzamento DLL.”] class step_modify_registry action step_hijack_dll[“<b>Azione</b> – <b>T1574.001 Dirottamento dell’Ordine di Ricerca DLL</b> & <b>T1055.001 Iniezione di Libreria a Link Dinamico</b><br/>Reindirizza una DLL centrale (ad es. msvcp_win.dll) tramite Bindlink in modo che il processo EDR carichi una copia dannosa.”] class step_hijack_dll action step_corrupt_dll[“<b>Azione</b> – <b>T1574.001 Reindirizzamento DLL – Corruzione Intestazione PE</b><br/>Altera l’intestazione PE della DLL copiata per invalidarne la firma, assicurando che il processo EDR protetto rifiuti la libreria.”] class step_corrupt_dll action step_dos[“<b>Azione</b> – <b>T1499.004 Negazione del Servizio all’Endpoint</b><br/>Il servizio EDR fallisce nel caricare la DLL richiesta e si termina, ottenendo una negazione del servizio sul componente di sicurezza.”] class step_dos action %% Edges step_create_service u002du002d>|porta_a| step_modify_registry step_modify_registry u002du002d>|abilita| step_hijack_dll step_hijack_dll u002du002d>|provoca| step_corrupt_dll step_corrupt_dll u002du002d>|risultato_in| step_dos “

Flusso di Attacco

Esecuzione della Simulazione

Prerequisito: Il Controllo di Telemetria & Baseline Pre‑volo deve essere stato completato.

Narrazione dell’Attacco e Comandi

L’avversario mira a paralizzare la piattaforma di rilevamento dell’endpoint consegnando una copia manomessa di msvcp_win.dll. I passaggi sono:

  1. Individua la DLL affidabile in C:WindowsSystem32.
  2. Copiala in una directory nascosta controllata dall’attaccante il cui nome include “FakeLib” (es., C:ProgramDataFakeLib).
  3. Corrompere la firma aggiungendo byte arbitrari alla fine del file, assicurando che l’hash binario cambi e che la firma Authenticode diventi non valida.
  4. Innescare il percorso di caricamento dell’EDR (non simulato qui) – la presenza della DLL malformata farĂ  fallire l’EDR durante l’inizializzazione.

Script di Test di Regressione

# ---------------------------------------------------------------
# Simulazione EDRStartupHinder – copia e corrompe msvcp_win.dll
# ---------------------------------------------------------------

# 1. Definire la sorgente e la destinazione maliziosa
$src  = "$env:SystemRootSystem32msvcp_win.dll"
$dstDir = "C:ProgramDataFakeLib"
$dst  = Join-Path $dstDir "msvcp_win.dll"

# 2. Creare la cartella di destinazione (nascosta)
if (-not (Test-Path $dstDir)) {
    New-Item -Path $dstDir -ItemType Directory | Out-Null
    # Nascondere la cartella per imitare la furtivitĂ 
    (Get-Item $dstDir).Attributes += 'Hidden'
}

# 3. Copiare la DLL legittima
Copy-Item -Path $src -Destination $dst -Force

# 4. Corrompere la DLL – aggiungere 4 byte casuali
$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 "Simulazione EDRStartupHinder completata. DLL copiata a $dst e corrotta."

Comandi per la Pulizia

# Rimuovere la copia dannosa e opzionalmente la cartella nascosta
$dstDir = "C:ProgramDataFakeLib"
if (Test-Path $dstDir) {
    Remove-Item -Path $dstDir -Recurse -Force
    Write-Host "Direttorio FakeLib ripulito."

Fine del Rapporto