De W-2 a BYOVD: Como uma busca por impostos leva ao kill de AV/EDR em modo de kernel
Detection stack
- AIDR
- Alert
- ETL
- Query
Resumo
Uma ampla operação de malvertising abusa do Google Ads atrelado a pesquisas de formulários fiscais para distribuir um instalador falso do ScreenConnect. Esse instalador implanta um crypter de múltiplos estágios, que então carrega um utilitário BYOVD chamado HwAudKiller. A ferramenta instala um driver de áudio da Huawei assinado e usa acesso ao nível do kernel para terminar processos de AV e EDR. Uma vez que os controles de segurança são desabilitados, os atacantes despejam credenciais do LSASS e coletam credenciais pela rede com o NetExec. A atividade destaca como a entrega de malware de commodities pode ser combinada com um driver de kernel personalizado para obter acesso furtivo, suprimir defesas e manter a persistência.
Investigação
Pesquisadores da Huntress seguiram o caminho de redirecionamento de anukitax.com to bringetax.com e confirmaram a entrega de um pacote MSI fraudulento do ScreenConnect. O crypteds.exe descartado usa um truque de alocação de memória de 2 GB para evasão e lança shellcode indiretamente através de timeSetEvent antes de carregar o HwAudKiller. Esse payload escreve Havoc.sys em %TEMP% e registra um serviço de kernel chamado Havoc para terminar uma lista codificada de processos de segurança. Em uma segunda intrusão, os atacantes ganharam acesso através de um comprometimento de VPN, reutilizaram o mesmo driver, expandiram a lista de eliminação para incluir processos do FortiEDR, despejaram o LSASS usando comsvcs.dll e moveram-se lateralmente com o NetExec.
Mitigação
As organizações devem bloquear ou permitir strictamente implantações legítimas do ScreenConnect e monitorar por nomes de host de instância de teste-* desconhecidos. As equipes de segurança devem observar drivers de kernel carregados de caminhos temporários e alertar sobre a Atividade de Instalação de Serviço do Windows e o Evento de Sysmon ID 6. Controles estritos de execução devem ser impostos em arquivos escritos em C:WindowsSystemTempScreenConnect e %TEMP%. Esforços de conscientização do usuário também devem reforçar que resultados de pesquisa do Google Ads não devem ser fontes confiáveis para downloads relacionados a impostos.
Resposta
Se um instalador do ScreenConnect desonesto for encontrado, isole imediatamente o endpoint, colete o crypteds.exe e qualquer driver Havoc.sys descartado e pare o serviço Havoc. Inicie procedimentos de reinicialização de credenciais para contas potencialmente comprometidas e revogue o acesso exposto. Em seguida, escaneie o ambiente mais amplo para conexões de retransmissão adicionais do ScreenConnect, execução do NetExec e sinais de despejo do LSASS. Finalmente, documente e compartilhe os IOCs descobertos com canais de inteligência de ameaças internos e externos.
"gráfico TB %% Definições de classe classDef action fill:#99ccff classDef tool fill:#ffcc99 classDef malware fill:#ff9999 classDef process fill:#ccccff classDef driver fill:#ffddaa %% Definições de nó authenticated_access["<b>Técnica</b> – Injeção de conteúdo T1659<br/><b>Descrição</b>: Google Ads malicioso redireciona usuários que procuram por formulários fiscais para uma página de destino oculta que serve um instalador MSI do ScreenConnect desonesto."] class authenticated_access action ferramenta_google_ads["<b>Ferramenta</b> – Nome: Google Ads<br/><b>Propósito</b>: Entregar anúncio malicioso ligando para página de destino."] class ferramenta_google_ads tool malware_screenconnect["<b>Malware</b> – Nome: MSI do ScreenConnect<br/><b>Tipo</b>: Instalador de acesso remoto."] class malware_screenconnect malware execucao_usuario["<b>Técnica</b> – Execução do usuário T1204<br/><b>Descrição</b>: Vítima executa o form_w9.msi baixado instalando o ScreenConnect."] class execucao_usuario action desktop_remoto["<b>Técnica</b> – Software de Desktop Remoto T1219.002<br/><b>Descrição</b>: O invasor obtém controle remoto interativo via sessão do ScreenConnect comprometida."] class desktop_remoto action ofuscacao["<b>Técnica</b> – Arquivos obfuscados ou informações T1027<br/><b>Descrição</b>: Payload usa shellcode criptografado por XOR, compressão personalizada e carregamento reflexivo."] class ofuscacao action desafio_pos_compilacao["<b>Técnica</b> – Compilar após entrega T1027.004<br/><b>Descrição</b>: Payload compilado após a entrega para evitar detecção estática."] class desafio_pos_compilacao action carregador_refletivo["<b>Processo</b> – Nome: Carregador Refletivo<br/><b>Descrição</b>: Carrega shellcode criptografado em tempo de execução."] class carregador_refletivo process servico_persistente["<b>Técnica</b> – Criar ou Modificar Processo de Sistema T1543<br/><b>Descrição</b>: Malware cria serviço do Windows que carrega driver da Huawei assinado para rodar com SYSTEM."] class servico_persistente action driver_havoc["<b>Driver</b> – Nome: Havoc.sys<br/><b>Descrição</b>: Driver de kernel da Huawei assinado carregado de %TEMP%."] class driver_havoc driver despejo_credencial["<b>Técnica</b> – Driver LSASS T1547.008<br/><b>Descrição</b>: Driver usa comsvcs.dll via rundll32 para despejar memória do LSASS."] class despejo_credencial action ferramenta_comsvcs["<b>Ferramenta</b> – Nome: comsvcs.dll<br/><b>Propósito</b>: Invocado pelo rundll32 para despejo do LSASS."] class ferramenta_comsvcs tool processo_rundll["<b>Processo</b> – Nome: rundll32.exe<br/><b>Descrição</b>: Executa comsvcs.dll para despejo de credenciais."] class processo_rundll process descoberta_netscan["<b>Técnica</b> – Descoberta de Sistema Remoto T1018<br/><b>Descrição</b>: NetScan enumera hosts internos."] class descoberta_netscan action ferramenta_netscan["<b>Ferramenta</b> – Nome: NetScan<br/><b>Propósito</b>: Escanear rede para hosts ativos."] class ferramenta_netscan tool rdp_lateral["<b>Técnica</b> – Serviços Remotos RDP T1021.001<br/><b>Descrição</b>: Usar RDP para mover lateralmente."] class rdp_lateral action ferramenta_rdp["<b>Ferramenta</b> – Nome: RDP<br/><b>Propósito</b>: Protocolo de desktop remoto para movimento lateral."] class ferramenta_rdp tool ebc_exploracao["<b>Técnica</b> – Exploração de Serviços Remotos T1210<br/><b>Descrição</b>: Usar NetExec (nxc) para executar comandos em máquinas remotas."] class ebc_exploracao action ferramenta_nxc["<b>Ferramenta</b> – Nome: NetExec (nxc)<br/><b>Propósito</b>: Executar comandos sobre SMB ou RDP."] class ferramenta_nxc tool defesa_terminate["<b>Técnica</b> – Evasão de Defesa Adicional T1027<br/><b>Descrição</b>: Driver de kernel termina processos de segurança como Defender, Kaspersky, SentinelOne."] class defesa_terminate action %% Conexões initial_access –>|usa| ferramenta_google_ads ferramenta_google_ads –>|entrega| malware_screenconnect malware_screenconnect –>|instalado via| execucao_usuario execucao_usuario –>|habilita| desktop_remoto desktop_remoto –>|fornece canal para| ofuscacao ofuscacao –>|usa| desafio_pos_compilacao desafio_pos_compilacao –>|carrega via| carregador_refletivo carregador_refletivo –>|cria| servico_persistente servico_persistente –>|carrega driver| driver_havoc driver_havoc –>|habilita| despejo_credencial despejo_credencial –>|usa| ferramenta_comsvcs ferramenta_comsvcs –>|executado por| processo_rundll processo_rundll –>|facilita| descoberta_netscan descoberta_netscan –>|usa| ferramenta_netscan descoberta_netscan –>|habilita| rdp_lateral rdp_lateral –>|usa| ferramenta_rdp rdp_lateral –>|habilita| ebc_exploracao expansao_nxc –>|usa| ferramenta_nxc driver_havoc –>|realiza| defesa_terminate "
Fluxo de Ataque
Detecções
Possível Tentativa de Comunicações de Domínio de Pesquisa de IP (via dns)
Ver
Possível BYOVD – Ataque Traga Seu Próprio Driver Vulnerável (via auditoria)
Ver
Possível Infiltração / Exfiltração de Dados / C2 via Serviços / Ferramentas de Terceiros (via dns)
Ver
Software Alternativo de Acesso / Gerenciamento Remoto (via criação de processo)
Ver
Possível Despejo de Credenciais Usando Comsvcs.dll (via cmdline)
Ver
Possível BYOVD – Ataque Traga Seu Próprio Driver Vulnerável (via evento de arquivo)
Ver
Possível Enumeração de Processo do Sistema (via cmdline)
Ver
Possível Abuso do Telegram como Canal de Comando e Controle (via consulta dns)
Ver
Serviço do Windows Apontando para um Driver em uma Localização Suspeita foi Criado (via cmdline)
Ver
Possível Infiltração / Exfiltração de Dados / C2 via Serviços / Ferramentas de Terceiros (via proxy)
Ver
Serviço do Windows Apontando para um Driver Foi Criado (via cmdline)
Ver
Possível Enumeração de Processo Lsass (via cmdline)
Ver
IOCs (DestinationIP) para detectar: De W-2 a BYOVD: Como uma Busca Fiscal Leva a Matar Kernel-Mode de AV/EDR
Ver
IOCs (HashSha256) para detectar: De W-2 a BYOVD: Como uma Busca Fiscal Leva a Matar Kernel-Mode de AV/EDR
Ver
IOCs (SourceIP) para detectar: De W-2 a BYOVD: Como uma Busca Fiscal Leva a Matar Kernel-Mode de AV/EDR
Ver
Campanha de Malvertising Entregando Software Desonesto e Coleta de Credenciais [Criação de Processo do Windows]
Ver
Execução da Simulação
Pré-requisito: O Check de Pré-voo de Telemetria e de Linha de Base deve ter passado.
Justificativa: Esta seção detalha a execução precisa da técnica do adversário (TTP) projetada para acionar a regra de detecção. Os comandos e a narrativa DEVEM refletir diretamente os TTPs identificados e ter como objetivo gerar a telemetria exata esperada pela lógica de detecção.
-
Narrativa e Comandos de Ataque:
- Acesso Inicial via Malvertising: A vítima clica em um anúncio malicioso ao procurar formulários fiscais, o que aciona um download drive-by de
form_w9.msi. - Instalação de Software Desonesto: O MSI instala silenciosamente uma ferramenta de suporte remoto semelhante ao ScreenConnect e descarta
crypteds.exeandsent.exepara o%TEMP%diretório. - Coleta de Credenciais:
crypteds.exeé lançado para despejar Segredos LSA. - DLL Side-Loading via Rundll32: Para evadir detecção estática, o invasor carrega uma DLL maliciosa usando
rundll32.execom a DLL do sistemacomsvcs.dllcomo o ponto de entrada, que executará o payload embutido.
Os comandos exatos (simulados em uma máquina de teste) são:
# 1. Implantar o MSI malicioso (simulado) Start-Process -FilePath "C:Tempform_w9.msi" -ArgumentList "/quiet" -Wait # 2. Lançar a ferramenta de despejo de credenciais Start-Process -FilePath "$env:TEMPcrypteds.exe" -ArgumentList "/dump" -Wait # 3. Carregar o payload malicioso via rundll32 usando comsvcs.dll rundll32.exe "C:windowsSystem32comsvcs.dll",LaunchApplication "$env:TEMPsent.exe" - Acesso Inicial via Malvertising: A vítima clica em um anúncio malicioso ao procurar formulários fiscais, o que aciona um download drive-by de
-
Script de Teste de Regressão: O script abaixo automatiza as etapas acima e garante que a telemetria gerada corresponda às expectativas da regra de detecção.
# Script de Teste de Regressão – Simula a Campanha de Malvertising # ----------------------------------------------------------- # 0. Pré-requisito: Garantir que o Sysmon esteja rodando com o registro de linha de comando habilitado. # Variáveis $msiPath = "$env:TEMPform_w9.msi" $dumpTool = "$env:TEMPcrypteds.exe" $payload = "$env:TEMPsent.exe" $dllPath = "C:windowsSystem32comsvcs.dll" # Helper: Criar arquivos fictícios para imitar os binários maliciosos New-Item -Path $msiPath -ItemType File -Force | Out-Null New-Item -Path $dumpTool -ItemType File -Force | Out-Null New-Item -Path $payload -ItemType File -Force | Out-Null Write-Host "[*] Instalando MSI malicioso (simulado)..." Start-Process -FilePath "msiexec.exe" -ArgumentList "/i `"$msiPath`" /quiet" -Wait Write-Host "[*] Executando ferramenta de despejo de credenciais..." Start-Process -FilePath $dumpTool -ArgumentList "/dump" -Wait Write-Host "[*] Performando DLL side-loading via rundll32..." rundll32.exe "`"$dllPath`"",LaunchApplication "`"$payload`"" Write-Host "[+] Simulação completa. Verifique a detecção via o SIEM." -
Comandos de Limpeza: Remova os artefatos fictícios e pare quaisquer processos remanescentes.
# Script de Limpeza $paths = @("$env:TEMPform_w9.msi","$env:TEMPcrypteds.exe","$env:TEMPsent.exe") foreach ($p in $paths) { if (Test-Path $p) { Remove-Item -Path $p -Force } } # Terminar quaisquer processos rundll32 remanescentes gerados pelo teste Get-Process -Name rundll32 -ErrorAction SilentlyContinue | Where-Object {$_.Path -eq "$env:SystemRootSystem32rundll32.exe"} | Stop-Process -Force