Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
CVE-2024-51324 — Dissertação de Mestrado sobre CVE-2024-51324 (BYOVD). Exploit avançado com 4 modos operacionais (SCANNER, LOADER, KILLER, CLEANUP), verificação de driver SHA-256 e documentação acadêmica completa. Peça de portfólio que cobre segurança de drivers do kernel do Windows, engenharia reversa de IOCTL e exploração Bring Your Own Vulnerable Driver. | Kitploit
Ferramentas/GitHubGitHub/devianntsec/cve-2024-51324
Ferramentas DefensivasAnálise de VulnerabilidadesExploraçãoEngenharia ReversaAnálise ForenseTestes de PenetraçãoPapers e PesquisaAprendizado e EducaçãoRed Teaming

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Exploração de Binários
GitHubdevianntsec/cve-2024-51324

CVE-2024-51324

Ver Repositório
13há 4 mesesAinda não revisado

Sobre

Dissertação de Mestrado sobre CVE-2024-51324 (BYOVD). Exploit avançado com 4 modos operacionais (SCANNER, LOADER, KILLER, CLEANUP), verificação de driver SHA-256 e documentação acadêmica completa. Peça de portfólio que cobre segurança de drivers do kernel do Windows, engenharia reversa de IOCTL e exploração Bring Your Own Vulnerable Driver.

Compartilhar

CVE-2024-51324 — BYOVD: BdApiUtil64.sys · Pesquisa de Tese de Mestrado

Platform Language License: MIT Research CVSS

Bring Your Own Vulnerable Driver (BYOVD) — Baidu Antivirus BdApiUtil64.sys
Três primitivas de kernel não documentadas: término de processo, exclusão arbitrária de arquivos e exclusão de arquivo em uso com bypass de SectionObjectPointer
Afetado: Baidu Antivirus v5.2.3.116083 (BdApiUtil64.sys)


Carregando o driver vulnerável no kernel (modo LOADER)

Descrição

Este repositório contém minha pesquisa de Tese de Mestrado sobre CVE-2024-51324, uma vulnerabilidade Bring Your Own Vulnerable Driver (BYOVD) no driver de kernel BdApiUtil64.sys do Baidu Antivirus.

O registro NVD atribui uma pontuação base CVSS v3.1 de 3.8 (Baixa) com vetor AV:N/AC:L/PR:H/UI:N/S:U/C:L/I:L/A:N e CWE-269 (Gerenciamento de Privilégio Impropriamente Controlado). Esta pontuação não reflete a realidade de ataque local documentada nesta pesquisa: uma vez que o driver é carregado por um administrador (uma etapa única realizável via engenharia social ou qualquer escalação de privilégio local), qualquer processo subsequente — incluindo processos em sandbox ou de usuário padrão — pode enviar IOCTLs sem verificações de privilégio adicionais. Uma pontuação CVSS v3.1 avaliada pelo pesquisador de 7.8 (Alta) com vetor AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H captura com mais precisão a realidade de exploração pós-carregamento. Ambas as pontuações são discutidas na documentação técnica.

O driver cria o objeto de dispositivo \Device\BdApiUtil com SecurityDescriptor = NULL, permitindo que qualquer processo, independentemente do nível de integridade, abra um handle e envie IOCTLs. A análise estática via Ghidra 11.0.3 revela que o mecanismo interno é mais significativo do que documentado anteriormente: o driver usa PsLookupProcessByProcessId + ObOpenObjectByPointer(KernelMode) em vez de ZwOpenProcess, ignorando SeAccessCheck completamente. Três primitivas IOCTL foram completamente caracterizadas, duas das quais não têm documentação pública prévia.

Minha Contribuição

AspectoDescrição
Correção técnicaZwOpenProcess está ausente da tabela de importação; o mecanismo real é PsLookupProcessByProcessId + ObOpenObjectByPointer(KernelMode), que ignora SeAccessCheck incondicionalmente
Três primitivas documentadasTérmino de processo (0x800024B4), exclusão arbitrária de arquivos (0x80002648) e exclusão de arquivo em uso com bypass de SectionObjectPointer (0x8000264C) — as duas últimas não têm documentação pública prévia
Quatro modos de operaçãoLOADER, KILLER, SCANNER e CLEANUP — gerenciamento completo do ciclo de vida
Verificação SHA-256Hash do driver verificado antes de qualquer tentativa de carregamento
Teste empírico de PPL10 tentativas por categoria de processo confirmando PPL como a única mitigação em tempo de execução
Análise forenseEvent ID 7045 persistente pós-limpeza; Event ID 1102 como artefato autoincriminatório de limpeza de log
Regras de detecçãoRegra Sigma e configuração do Sysmon (Event ID 6 por hash + Event ID 13 por chave de registro)
Reavaliação CVSSDiscrepância documentada entre a pontuação oficial do NVD (3.8 Baixa) e a gravidade de exploração local avaliada pelo pesquisador (7.8 Alta)

Estrutura do Repositório

root@kitploit:~
CVE-2024-51324/
├── README.md
├── LICENSE
│
├── drivers/
│   └── BdApiUtil64.sys              # Driver (não distribuído)
│
├── exploit/
│   ├── exploit-explanation.md
│   └── byovd_killer.py              # Exploit principal — 4 modos operacionais
│
└── docs/
    ├── screenshots/
    │   ├── 01-byovd-scan.png
    │   ├── 02-byovd-scan-target.png
    │   ├── 03-byovd-load.png
    │   ├── 04-byovd-load-custom.png
    │   ├── 05-kill-name.gif
    │   ├── 06-kill-pid.gif
    │   ├── 07-kill-limit.gif
    │   ├── 08-dry-run.gif
    │   └── 09-byovd-cleanup.png
    │
    └── analysis/
        ├── 01-root-cause.md
        ├── 02-driver-analysis.md    # RE completa em Ghidra, três primitivas, teste PPL
        └── 03-timeline.md

Início Rápido

Pré-requisitos

  • Windows 10/11 (qualquer compilação)
  • Python 3.6+
  • BdApiUtil64.sys (SHA-256: 47EC51B5F0EDE1E70BD66F3F0152F9EB536D534565DBB7FCC3A05F542DBE4428)
  • Conta de administrador (apenas modos LOADER e CLEANUP)
  • Conta de usuário padrão suficiente para o modo KILLER após o carregamento do driver

Passo 1 — Escaneie o sistema

root@kitploit:~
python exploit/byovd_killer.py --scan
python exploit/byovd_killer.py --scan --target lsass.exe

Passo 2 — Carregue o driver (Administrador necessário)

root@kitploit:~
python exploit/byovd_killer.py --load
python exploit/byovd_killer.py --load --driver C:\path\to\BdApiUtil64.sys
python exploit/byovd_killer.py --load --service-name MyService

Passo 3 — Mate processos (Administrador não necessário)

root@kitploit:~
python exploit/byovd_killer.py --kill notepad.exe
python exploit/byovd_killer.py --pid 1234
python exploit/byovd_killer.py --kill notepad.exe --max-instances 2
python exploit/byovd_killer.py --kill notepad.exe --dry-run

Passo 4 — Limpeza (Administrador necessário)

root@kitploit:~
python exploit/byovd_killer.py --cleanup
python exploit/byovd_killer.py --cleanup --service-name MyService

Modos Operacionais

ModoComandoPrivilégiosDescrição
SCANNER--scanQualquer usuárioInformações do sistema e status do driver
LOADER--loadAdministradorCarregar driver via criação de serviço de kernel
KILLER--kill / --pidQualquer usuárioFinalizar processos via IOCTL
CLEANUP--cleanupAdministradorParar e excluir serviço do driver

Demonstrações

Modo SCANNER — Informações do Sistema

Modo SCANNER

Modo SCANNER — Busca por Processo Alvo

Alvo SCANNER

Modo LOADER — Carregando Driver

Modo LOADER

Modo LOADER — Caminho Personalizado e Nome do Serviço

LOADER Personalizado

Modo KILLER — Matar por Nome do Processo

Matar por Nome

Modo KILLER — Matar por PID

Matar por PID

Modo KILLER — Limitar Instâncias

Limitar Instâncias

Modo KILLER — Dry Run (Simulação)

Dry Run

Modo CLEANUP — Descarregar Driver

Modo CLEANUP


Visão Geral Técnica

Superfície de Ataque IOCTL — Três Primitivas

A engenharia reversa do BdApiUtil64.sys via Ghidra 11.0.3 identificou uma superfície de ataque mais ampla do que qualquer fonte pública anterior documenta:

IOCTLManipuladorPrimitivaDocumentação prévia
0x800024B4FUN_000152b0Término de processoParcial (mecanismo incorreto)
0x80002648FUN_00013bb0Exclusão arbitrária de arquivosNenhuma
0x8000264CFUN_00013850Exclusão de arquivo em uso (bypass SectionObjectPointer)Nenhuma

Primitiva 1 — Término de Processo (0x800024B4)

A cadeia de despacho tem três níveis:

root@kitploit:~
IOCTL 0x800024B4
  └─ FUN_00028630  (despachante IRP_MJ_DEVICE_CONTROL)
       └─ FUN_00015230  (wrapper: valida código IOCTL e tamanho do buffer = 4 bytes)
            └─ FUN_000152b0  (manipulador kill — local da vulnerabilidade)

Manipulador reconstruído (Ghidra):

root@kitploit:~
if ((param_1 != 0) && (param_1 != 4)) {
    PsLookupProcessByProcessId(param_1, &local_res10);
    ObOpenObjectByPointer(
        local_res10,
        0x200,      // OBJ_KERNEL_HANDLE
        0,          // PassedAccessState: NULL
        0x1fffff,   // PROCESS_ALL_ACCESS
        0,          // ObjectType: NULL
        0,          // AccessMode: KernelMode  ← ignora SeAccessCheck
        local_res18
    );
    ZwTerminateProcess(local_res18[0], 0);
}

Por que KernelMode ignora SeAccessCheck:

root@kitploit:~
Caminho ZwOpenProcess:
  NtOpenProcess → ObOpenObjectByName → SeAccessCheck
                                        (verifica DACL, token do chamador, nível de integridade)
                                        pode retornar STATUS_ACCESS_DENIED

Caminho ObOpenObjectByPointer(KernelMode):
  SeAccessCheck  ← NÃO é invocado
  → Handle PROCESS_ALL_ACCESS concedido incondicionalmente

ZwOpenProcess está ausente da tabela de importação do driver. A descrição baseada em ZwOpenProcess presente em fontes anteriores é tecnicamente incorreta.

Primitiva 2 — Exclusão Arbitrária de Arquivos (0x80002648)

O manipulador FUN_00013bb0 recebe um caminho Unicode, valida InputBufferLength ≥ 0x208 e delega para FUN_00013c10. O sub-manipulador abre o arquivo em modo kernel (sem SeAccessCheck no token do chamador) e despacha um IRP IRP_MJ_SET_INFORMATION com FileInformationClass = 0xD (FileDispositionInformation), marcando o arquivo para exclusão. Qualquer arquivo acessível ao kernel pode ser excluído independentemente das permissões NTFS.

Primitiva 3 — Exclusão de Arquivo em Uso (0x8000264C)

O manipulador FUN_000139d0 acessa FileObject->SectionObjectPointer (offset 0x28 no FILE_OBJECT) e anula temporariamente dois campos antes de despachar o IRP de exclusão:

root@kitploit:~
plVar1 = FileObject->SectionObjectPointer;
plVar1[2] = 0;  // DataSectionObject  → NULL
plVar1[0] = 0;  // ImageSectionObject → NULL

IofCallDriver(device, irp);
KeWaitForSingleObject(...);

// Restaurar após conclusão
plVar1[2] = DataSectionObject_backup;
plVar1[0] = ImageSectionObject_backup;

IopDeleteFile verifica esses ponteiros antes de honrar FileDispositionInformation. Ao anulá-los, o manipulador faz o arquivo parecer não mapeado, ignorando a proteção de arquivo em uso. Esta primitiva pode excluir o binário de um agente EDR em execução do disco sem primeiro finalizar o processo.

Cadeia completa de eliminação de EDR:

root@kitploit:~
1. Finalizar processo EDR     (IOCTL 0x800024B4)
2. Excluir binário EDR no disco (IOCTL 0x8000264C) ← funciona mesmo se mapeado em memória
3. Impedir reinicialização    ← executável não existe mais no disco

Teste Empírico

Resistência PPL (10 tentativas por categoria de processo)

ProcessoPPL ativoFinalizávelCausa
notepad.exeNão✅ 10/10Sem proteção
regedit.exeNão✅ 10/10Sem proteção
spoolsv.exeNão✅ 9/10SCM reinicia em 1 caso
MsMpEng.exeNão (sem PPL no ambiente de teste)✅ 8/10Leve variabilidade de tempo
lsass.exeNão (RunAsPPL ausente)✅ 6/10Variabilidade de estado
csrss.exeSim (PPL incondicional)❌ 0/10STATUS_ACCESS_DENIED

PPL (Protected Process Light) é a única mitigação em tempo de execução que resiste à finalização baseada em ObOpenObjectByPointer(KernelMode) deste driver.

Análise da Tabela de Importação

PresenteAusente
PsLookupProcessByProcessIdZwOpenProcess
ObOpenObjectByPointerSeAccessCheck
ZwTerminateProcessSePrivilegeCheck
PsGetCurrentProcess
IoGetRequestorProcess

Cenários de Pós-Exploração

CenárioAlvoImpacto
Finalização de EDR/AVMsMpEng.exe, SentinelAgent.exeEvasão de defesa
Exclusão de binário EDR (em uso)Executável EDR no discoImpedir reinicialização após finalização
Interrupção de log de auditoriaServiço EventLogAdulterar forense
Bypass de processo protegidolsass.exe (sem RunAsPPL)Facilitador de acesso a credenciais
Preparação pré-criptografia de ransomwareAgentes de segurançaCadeia completa de evasão de defesa

Artefatos Forenses

O que persiste após --cleanup

ArtefatoEstado pós-limpeza
Serviço no SCMRemovido
Driver no driverqueryRemovido
Objeto de dispositivoInacessível
Chave de registroRemovida
Event ID 7045Persiste — não pode ser removido por sc delete

Event ID 7045 é o único artefato que sobrevive a um ciclo de ataque completo com limpeza. Ele contém nome do serviço, ImagePath (caminho completo do binário), tipo de serviço e timestamp de criação.

Limpeza de log é autoincriminatória

Executar wevtutil cl System para remover o Event ID 7045 gera Event ID 1102 no canal Security, registrando quem limpou o log e quando. Isso torna a adulteração de log detectável mesmo que o artefato original seja destruído.

Ação do atacanteArtefato resultanteCanalPersistência
wevtutil cl SystemEvent ID 7045 deletadoSystem—
wevtutil cl SystemEvent ID 1102 geradoSecurityPermanente

Regras de Detecção

Regra Sigma

root@kitploit:~
title: Ataque BYOVD via BdApiUtil64.sys (CVE-2024-51324)
id: a3f7c2e1-8b4d-4f9a-b6e3-2d1c9f8a7b5e
status: experimental
logsource:
  product: windows
  service: system
detection:
  selection_eventid:
    EventID: 7045
  selection_driver:
    - ServiceName|contains: 'BdApi'
    - ImagePath|contains: 'BdApiUtil64.sys'
  condition: selection_eventid and selection_driver
level: high
tags:
  - attack.defense_evasion
  - attack.t1562.001
  - attack.privilege_escalation
  - attack.t1068

Regra Sigma completa e configuração do Sysmon (Event ID 6 por hash SHA-256 + Event ID 13 por chave de registro) disponíveis em docs/detection/.


Documentação Técnica

DocumentoDescrição
Análise de Causa RaizControle de acesso ausente no manipulador IRP_MJ_DEVICE_CONTROL
Análise do DriverRE completa em Ghidra, três primitivas IOCTL, teste PPL, análise da tabela de importação
Linha do Tempo CVECronologia de descoberta, divulgação e patch

Contexto Acadêmico

Esta pesquisa faz parte da minha Tese de Mestrado em Cibersegurança (UCAM — Campus Internacional de Ciberseguridad), analisando vulnerabilidades N-Day em múltiplos ambientes.

Este CVE representa o vetor Windows kernel driver / BYOVD dentro da tese, demonstrando:

  • Análise de superfície de ataque de driver de kernel via enumeração completa de IOCTL
  • Correção técnica de descrições públicas anteriores (ZwOpenProcess ausente; mecanismo real é ObOpenObjectByPointer(KernelMode))
  • Descoberta de duas primitivas anteriormente não documentadas (IOCTLs de exclusão de arquivo)
  • Caracterização empírica de resistência PPL
  • Análise de artefatos forenses através de ciclo completo de pós-limpeza
  • Crítica de pontuação CVSS: lacuna documentada entre a pontuação oficial do NVD e a gravidade de exploração local

Palavras-chave: BYOVD · Kernel Driver · IOCTL · Ghidra · Process Termination · File Deletion · SectionObjectPointer · ObOpenObjectByPointer · Defense Evasion · CVE-2024-51324


Autor

Annais Molina (devianntsec) — Estudante de Mestrado em Cibersegurança

GitHub LinkedIn Email


Agradecimentos

  • NVD / NIST — Registro e pontuação CVE
  • loldrivers.io — Índice de drivers vulneráveis mantido pela comunidade
  • BlackSnufkin — Referência PoC original
  • Cisco Talos — Análise BYOVD do ransomware DeadLock (dezembro de 2025)

Licença

Licença MIT — veja LICENSE


Aviso Legal

Este repositório é fornecido apenas para fins educacionais e de pesquisa em segurança, como parte de uma Tese de Mestrado acadêmica. Todos os testes foram realizados em máquinas virtuais isoladas, sem exposição à rede. O driver vulnerável (BdApiUtil64.sys) não é distribuído neste repositório — ele deve ser obtido de forma independente. Use apenas em sistemas que você possui ou possui autorização explícita por escrito para testar. O uso não autorizado contra sistemas é ilegal e pode resultar em processo criminal.

© 2026 Annais Molina · Tese de Mestrado em Cibersegurança
UCAM Universidad Católica San Antonio de Murcia · Campus Internacional de Ciberseguridad
Baixar ferramenta