SOC Prime Bias: Alto

13 Jan 2026 13:41 UTC

EDRStartupHinder: Bloqueador de Processo de Inicialização do EDR

Author Photo
Ruslan Mikhalov Chief of Threat Research at SOC Prime linkedin icon Seguir
EDRStartupHinder: Bloqueador de Processo de Inicialização do EDR
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Resumo

O artigo descreve uma ferramenta de pesquisa chamada EDRStartupHinder que abusa do mecanismo Windows Bindlink para redirecionar uma carga crítica de DLL do System32, fazendo com que um processo EDR protegido trave durante a inicialização. Instalando um serviço de maior prioridade e fornecendo uma DLL de substituição não assinada, o método impede que o componente EDR inicialize, efetivamente despojando o host de proteção de endpoint na inicialização.

Investigação

O autor determinou que o Microsoft Defender carrega msvcp_win.dll durante a inicialização e que um serviço associado ao grupo TDI é iniciado antes do Defender. A ferramenta copia a DLL legítima, altera o cabeçalho PE para criar uma variante adulterada, registra um serviço chamado DusmSVC-01 e monitora o processo do Defender (MsMpEng.exe). Em seguida, usa Bindlink para redirecionar a resolução da DLL para que o Defender tente carregar a DLL não assinada. Como o processo é executado sob proteção PPL, o carregamento do módulo não assinado aciona a terminação do processo do Defender.

Mitigação

Monitore a criação de serviços suspeitos ou inesperados e telemetria indicando o uso de bindlink.dll. Aplique validação de integridade para DLLs do System32 e alerte sobre duplicatas inesperadas, mutações ou redirecionamentos de caminhos de carregamento. Reduza a viabilidade do ataque restringindo permissões de escrita que poderiam permitir o redirecionamento de DLL, apertando os controles em torno dos KnownDLLs e aplicando políticas de assinatura de código onde operacionalmente viável.

Resposta

Se um novo serviço chamado DusmSVC-01 ou comportamento anômalo do Bindlink for detectado, isole o endpoint e valide a integridade das principais DLLs do System32. Restaure quaisquer arquivos alterados a partir de fontes confiáveis ou backups, em seguida, remova o serviço malicioso e quaisquer artefatos relacionados. Complete uma revisão forense para identificar persistência adicional, escalonamento de privilégios ou atividades subsequentes associadas ao desvio de proteção no momento da inicialização.

Fluxo de Ataque

Execução da Simulação

Pré-requisito: O Checagem Prévia de Telemetria & Base deve ter sido aprovada.

Narrativa do Ataque & Comandos

O adversário visa incapacitar a plataforma de detecção de endpoint entregando uma cópia adulterada de msvcp_win.dll. Os passos são:

  1. Localize a DLL confiável in C:WindowsSystem32.
  2. Copie para um diretório controlado pelo atacante oculto cujo nome inclui “FakeLib” (e.g., C:ProgramDataFakeLib).
  3. Corrupção da assinatura adicionando bytes arbitrários ao final do arquivo, garantindo que o hash binário mude e a assinatura Authenticode se torne inválida.
  4. Dispare o caminho de carregamento do EDR (não simulado aqui) – a presença da DLL malformada fará com que o EDR falhe durante sua inicialização.

Script de Teste de Regressão

# ---------------------------------------------------------------
# Simulação EDRStartupHinder – copia & corrompe msvcp_win.dll
# ---------------------------------------------------------------

# 1. Defina a origem e o destino malicioso
$src  = "$env:SystemRootSystem32msvcp_win.dll"
$dstDir = "C:ProgramDataFakeLib"
$dst  = Join-Path $dstDir "msvcp_win.dll"

# 2. Crie a pasta de destino (oculta)
if (-not (Test-Path $dstDir)) {
    New-Item -Path $dstDir -ItemType Directory | Out-Null
    # Oculte a pasta para mimetizar furtividade
    (Get-Item $dstDir).Attributes += 'Hidden'
}

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

# 4. Corrompa a DLL – anexe 4 bytes aleatórios
$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 "Simulação EDRStartupHinder concluída. DLL copiada para $dst e corrompida."

Comandos de Limpeza

# Remova a cópia maliciosa e opcionalmente a pasta oculta
$dstDir = "C:ProgramDataFakeLib"
if (Test-Path $dstDir) {
    Remove-Item -Path $dstDir -Recurse -Force
    Write-Host "Diretório FakeLib limpo."
}

Fim do Relatório