SOC Prime Bias: Alto

13 Ene 2026 16:41

EDRStartupHinder: Bloqueador de Procesos de Inicio de EDR

Author Photo
Ruslan Mikhalov Chief of Threat Research at SOC Prime linkedin icon Seguir
EDRStartupHinder: Bloqueador de Procesos de Inicio de EDR
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Resumen

El artículo describe una herramienta de investigación llamada EDRStartupHinder que abusa del mecanismo Bindlink de Windows para redirigir la carga de una DLL crítica de System32, provocando que un proceso EDR protegido se bloquee durante el inicio. Al instalar un servicio de mayor prioridad y proporcionar una DLL de reemplazo no firmada, el método impide que el componente EDR se inicie, despojando efectivamente al host de protección de endpoint al arrancar.

Investigación

El autor determinó que Microsoft Defender carga msvcp_win.dll durante el inicio y que un servicio asociado con el grupo TDI se inicia antes que Defender. La herramienta copia la DLL legítima, altera el encabezado PE para crear una variante manipulada, registra un servicio llamado DusmSVC-01 y monitorea el proceso Defender (MsMpEng.exe). Luego utiliza Bindlink para redirigir la resolución de la DLL de modo que Defender intente cargar la DLL no firmada. Debido a que el proceso se ejecuta bajo protección PPL, la carga del módulo no firmado provoca la terminación del proceso Defender.

Mitigación

Monitoree la creación de servicios sospechosos o inesperados y para la telemetría que indica el uso de bindlink.dll. Imponga la validación de integridad para las DLL de System32 y alerte sobre duplicados inesperados, mutaciones o redirecciones del camino de carga. Reduzca la viabilidad del ataque restringiendo los permisos de escritura que podrían permitir la redirección de DLL, ajustando controles en torno a KnownDLLs y aplicando políticas de firma de código donde sea operativamente viable.

Respuesta

Si se detecta un nuevo servicio llamado DusmSVC-01 o un comportamiento anómalo de Bindlink, aísle el terminal y valide la integridad de las DLL clave de System32. Restaure cualquier archivo alterado de fuentes confiables o copias de seguridad, luego elimine el servicio malicioso y cualquier artefacto relacionado. Realice una revisión forense para identificar persistencia adicional, escalada de privilegios o actividad posterior asociada con el bypass de protección en el tiempo de inicio.

«graph TB %% Class Definitions classDef action fill:#99ccff classDef technique fill:#ffcc99 classDef operator fill:#ff9900 %% Nodes step_create_service[«<b>Acción</b> – <b>T1542 Inicio Preventivo de OS</b><br/>Crear servicio malicioso de Windows (EDRStartupHinder) configurado para comenzar antes que el servicio EDR objetivo.»] class step_create_service action step_modify_registry[«<b>Acción</b> – <b>T1484 Modificación de Política de Dominio o Inquilino</b><br/>Modificar el orden del grupo de servicios y la configuración de Bindlink en el registro para priorizar el servicio malicioso y habilitar la redirección de DLL.»] class step_modify_registry action step_hijack_dll[«<b>Acción</b> – <b>T1574.001 Secuestro del Orden de Búsqueda de DLL</b> & <b>T1055.001 Inyección de Biblioteca de Enlace Dinámico</b><br/>Redirigir un núcleo DLL (e.g., msvcp_win.dll) a través de Bindlink para que el proceso EDR cargue una copia maliciosa.»] class step_hijack_dll action step_corrupt_dll[«<b>Acción</b> – <b>T1574.001 Redirección de DLL – Corrupción de Encabezado PE</b><br/>Alterar el encabezado PE de la DLL copiada para invalidar su firma, asegurando que el proceso EDR protegido rechace la biblioteca.»] class step_corrupt_dll action step_dos[«<b>Acción</b> – <b>T1499.004 Denegación de Servicio de Punto Final</b><br/>El servicio EDR no carga la DLL requerida y termina, logrando la denegación de servicio en el componente de seguridad.»] class step_dos action %% Edges step_create_service u002du002d>|conduce_a| step_modify_registry step_modify_registry u002du002d>|habilita| step_hijack_dll step_hijack_dll u002du002d>|causa| step_corrupt_dll step_corrupt_dll u002du002d>|resulta_en| step_dos «

Flujo de Ataque

Ejecución de Simulación

Prerrequisito: El Control de Telemetría y Línea Base de Prevuelo debe haber pasado.

Narrativa del Ataque y Comandos

El adversario apunta a incapacitar la plataforma de detección de endpoint al entregar una copia alterada de msvcp_win.dll. Los pasos son:

  1. Localizar la DLL de confianza in C:WindowsSystem32.
  2. Copiar a un directorio oculto controlado por el atacante cuyo nombre incluya “FakeLib” (por ej., C:ProgramDataFakeLib).
  3. Corromper la firma añadiendo bytes arbitrarios al final del archivo, asegurando que el hash binario cambie y la firma Authenticode se vuelva inválida.
  4. Activar la ruta de carga del EDR (no simulado aquí) – la presencia de la DLL malformada causará que el EDR falle durante su inicialización.

Script de Prueba de Regresión

# ---------------------------------------------------------------
# Simulación de EDRStartupHinder – copia y corrompe msvcp_win.dll
# ---------------------------------------------------------------

# 1. Definir fuente y destino malicioso
$src  = "$env:SystemRootSystem32msvcp_win.dll"
$dstDir = "C:ProgramDataFakeLib"
$dst  = Join-Path $dstDir "msvcp_win.dll"

# 2. Crear carpeta de destino (oculta)
if (-not (Test-Path $dstDir)) {
    New-Item -Path $dstDir -ItemType Directory | Out-Null
    # Ocultar la carpeta para imitar el sigilo
    (Get-Item $dstDir).Attributes += 'Hidden'
}

# 3. Copiar la DLL legítima
Copy-Item -Path $src -Destination $dst -Force

# 4. Corromper la DLL – añadir 4 bytes aleatorios
$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 "Simulación de EDRStartupHinder completada. DLL copiada a $dst y corrompida."

Comandos de Limpieza

# Eliminar la copia maliciosa y opcionalmente la carpeta oculta
$dstDir = "C:ProgramDataFakeLib"
if (Test-Path $dstDir) {
    Remove-Item -Path $dstDir -Recurse -Force
    Write-Host "Directorio de FakeLib limpiado."

Fin del Informe