SOC Prime Bias: Alta

07 Abr 2026 19:57

Cadeia de Infecção do Qilin EDR Killer

Author Photo
Ruslan Mikhalov Chefe de Pesquisa de Ameaças na SOC Prime linkedin icon Seguir
Cadeia de Infecção do Qilin EDR Killer
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Resumo

O relatório abrange um carregador multiestágio entregue como um msimg32.dll trojanizado, que pode desativar ou remover mais de 300 produtos de detecção e resposta de endpoints. O carregador combina abuso avançado de SEH/VEH, técnicas de driver de kernel e breakpoints de hardware para evadir hooks em modo de usuário e eliminar processos de segurança. A atividade está vinculada ao ecossistema de ransomware Qilin e inclui um driver personalizado derivado da ferramenta ThrottleStop. O resultado final é uma carga útil dedicada para eliminar EDRs que termina serviços de segurança e pode reativar o controle do invasor restaurando ou neutralizando a lógica de callback de integridade de código.

Investigação

Pesquisadores fizeram engenharia reversa do DLL malicioso, seu carregador PE e dois drivers auxiliares, rwdrv.sys e hlpdrv.sys. A análise detalha como o carregador constrói uma tabela de política de slot de syscall, manipula o despachante de exceções e realiza o hook do IAT para redirecionar a execução. Em seguida, utiliza o manuseio de exceções vetorizadas para preparar e lançar uma carga útil baseada em shell32. A camada do driver expõe acesso bruto à memória física e é utilizada para remover ou desativar callbacks de kernel relacionados a EDR, bem como terminar processos protegidos por meio de uma interface IOCTL personalizada.

Mitigação

Use defesas em camadas e evite depender de um único controle EDR. Monitore atividades anormais de carregamento de drivers, uso suspeito de IOCTL de memória física e mudanças inesperadas em estruturas de callback de kernel. Prevenha carregamento lateral de DLLs onde atacantes substituem bibliotecas do sistema legítimas, e adicione cobertura para evasão do tipo de breakpoint de hardware. Mantenha assinaturas de rede e endpoint atualizadas, incluindo conjuntos de regras de ferramentas como ClamAV e Snort.

Resposta

Se detectado, isole o endpoint, pare o processo malicioso e descarregue drivers suspeitos. Capture imagens completas de memória para perícia, verifique explicitamente por rwdrv.sys e hlpdrv.sys, e valide a integridade dos callbacks de kernel e a telemetria de segurança relacionada. Implante detecções atualizadas para o nome de arquivo msimg32.dll, eventos de carregamento do driver, e o padrão IOCTL 0x2222008. Complete uma revisão de integridade do sistema e recupere de backups confiáveis se a confiança no host não puder ser restabelecida.

"graph TB %% Class definitions classDef technique fill:#ffcc99 %% Node definitions tech_initial_appinit["<b>Técnica</b> – <b>T1546.010 AppInit DLLs</b>: Carregar lado-malicioso msimg32.dll<br/><b>Descrição</b>: Use o valor de registro AppInit_DLLs para causar o carregamento de uma DLL maliciosa em cada processo de modo de usuário que carrega User32.dll."] class tech_initial_appinit technique tech_obfuscation["<b>Técnica</b> – <b>T1027 Arquivos ou Informações Ofuscadas</b>: Payload criptografado com truques de SEH/VEH<br/><b>Descrição</b>: Encriptar ou esconder de outra forma código malicioso e empregar truques de Tratamento Estruturado de Exceções ou Tratamento Vetorizado de Exceções para evadir análise estática."] class tech_obfuscation technique tech_dll_injection["<b>Técnica</b> – <b>T1055.001 Injeção de DLL</b>: Hook de IAT de ExitProcess<br/><b>Descrição</b>: Injetar uma DLL maliciosa em um processo alvo e modificar sua Tabela de Endereço de Importação para sequestrar chamadas de ExitProcess."] class tech_dll_injection technique tech_hijack_flow["<b>Técnica</b> – <b>T1574 Sequestrar Fluxo de Execução</b>: Manuseadores VEH/SEH e breakpoints de hardware<br/><b>Descrição</b>: Substituir ou adicionar handles de exceção e configurar breakpoints de hardware para redirecionar a execução para código malicioso."] class tech_hijack_flow technique tech_reflective_load["<b>Técnica</b> – <b>T1620 Carregamento de Código Reflexivo</b>: Descriptografia e execução de PE em memória<br/><b>Descrição</b>: Descriptografar um Executável Portátil em memória e executá-lo sem gravar no disco."] class tech_reflective_load technique tech_elev_control["<b>Técnica</b> – <b>T1548 Abuso do Mecanismo de Controle de Elevação</b>: Carregar driver rwdrv.sys para leitura/gravação de memória física<br/><b>Descrição</b>: Instalar um driver assinado ou vulnerável para obter acesso de leitura/gravação à memória física."] class tech_elev_control technique tech_priv_esc["<b>Técnica</b> – <b>T1068 Exploração para Escalação de Privilégio</b>: Manipular objetos de kernel e desativar callbacks de EDR<br/><b>Descrição</b>: Usar o driver carregado para alterar estruturas de kernel e neutralizar hooks de detecção e resposta de endpoint."] class tech_priv_esc technique tech_persistence_appinit["<b>Técnica</b> – <b>T1546.010 AppInit DLLs (Persistência)</b>: Manter estado de EDR desativado<br/><b>Descrição</b>: Manter a DLL maliciosa registrada via AppInit_DLLs para persistir após reinicializações enquanto EDR permanece desativado."] class tech_persistence_appinit technique tech_sandbox_evasion["<b>Técnica</b> – <b>T1497.002 Evasão de Virtualização/Sandbox</b>: Verificação de localidade e detecção de breakpoints<br/><b>Descrição</b>: Detectar ambientes de análise verificando configurações de localidade do sistema e sondando por breakpoints de depurador."] class tech_sandbox_evasion technique %% Connections showing attack flow tech_initial_appinit –>|leads_to| tech_obfuscation tech_obfuscation –>|leads_to| tech_dll_injection tech_dll_injection –>|leads_to| tech_hijack_flow tech_hijack_flow –>|leads_to| tech_reflective_load tech_reflective_load –>|leads_to| tech_elev_control tech_elev_control –>|leads_to| tech_priv_esc tech_priv_esc –>|leads_to| tech_persistence_appinit tech_persistence_appinit –>|leads_to| tech_sandbox_evasion "

Fluxo de Ataque

Execução de Simulação

Pré-requisito: A Verificação Pré-voo de Telemetria & Linha de Base deve ter sido aprovada.

Racionalização: 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 objetivam gerar a telemetria exata esperada pela lógica de detecção.

  • Narração & Comandos do Ataque:

    Um atacante cria um binário C nativo mínimo que carrega explicitamente ntdll.dll e chama NtTraceEvent via seu nome exportado. O binário é compilado no host de destino usando as Ferramentas de Compilação do Visual C++, então executado. Como a chamada é feita através da superfície regular da API do Windows, o evento de criação do processo registra a imagem (ntdll.dll) e o CallTrace campo contém a string “NtTraceEvent”, satisfazendo a condição Sigma. O atacante então exclui o binário para reduzir os artefatos forenses.

  • Script de Teste de Regressão:

    # ---------------------------------------------------------
    # Passo 1 – Crie uma fonte C temporária que chama NtTraceEvent
    # ---------------------------------------------------------
    $src = @"
    #include <windows.h>
    typedef NTSTATUS (NTAPI *pNtTraceEvent)(HANDLE, ULONG, PVOID, ULONG);
    int main() {
        HMODULE hNtdll = LoadLibraryA("ntdll.dll");
        if (!hNtdll) return 1;
        pNtTraceEvent NtTraceEvent = (pNtTraceEvent)GetProcAddress(hNtdll, "NtTraceEvent");
        if (!NtTraceEvent) return 1;
        // Chamada mínima – os argumentos são amplamente ignorados para esta demonstração
        NtTraceEvent(NULL, 0, NULL, 0);
        return 0;
    }
    "@
    $tmpPath = "$env:TEMPNtTraceDemo.c"
    $exePath = "$env:TEMPNtTraceDemo.exe"
    $src | Set-Content -Path $tmpPath -Encoding ASCII
    
    # ---------------------------------------------------------
    # Passo 2 – Compile usando cl.exe (presume que Ferramentas de Compilação do Visual C++ estejam instaladas)
    # ---------------------------------------------------------
    $vcVars = "$env:ProgramFiles(x86)Microsoft Visual Studio2019BuildToolsVCAuxiliaryBuildvcvars64.bat"
    if (Test-Path $vcVars) {
        & cmd /c "`"$vcVars`" && cl /nologo /O2 /Fe:`"$exePath`" `"$tmpPath`""
    } else {
        Write-Error "Ferramentas de Compilação do Visual C++ não encontradas. Instale-as antes de executar este script."
        exit 1
    }
    
    # ---------------------------------------------------------
    # Passo 3 – Execute o binário (isso deve acionar a regra)
    # ---------------------------------------------------------
    & $exePath
    
    # ---------------------------------------------------------
    # Passo 4 – Limpar artefatos
    # ---------------------------------------------------------
    Remove-Item -Force $tmpPath, $exePath
  • Comandos de Limpeza:

    # Certifique-se de que quaisquer arquivos remanescentes sejam removidos (execute como admin)
    Get-ChildItem "$env:TEMPNtTraceDemo.*" -ErrorAction SilentlyContinue | Remove-Item -Force