Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
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.

FeedsContatoPrivacidade© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
CVE-2024-30051 — Pesquisa de tese de mestrado sobre CVE-2024-30051 (Windows DWM Heap Overflow). Apresenta um exploit de alta confiabilidade com otimização automatizada de heap spray, registro em tempo real e análise empírica de taxa de sucesso. Peça de portfólio demonstrando exploração avançada de binários Windows, manipulação de layout de heap e LPE via Desktop Window Manager. | Kitploit
Ferramentas/GitHubGitHub/devianntsec/cve-2024-30051
Escalada de PrivilégiosForensia de MemóriaAnálise de VulnerabilidadesExploraçãoEngenharia ReversaPapers e PesquisaAprendizado e EducaçãoDesenvolvimento de PayloadsExploração de Binários

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 →

Sobre

Pesquisa de tese de mestrado sobre CVE-2024-30051 (Windows DWM Heap Overflow). Apresenta um exploit de alta confiabilidade com otimização automatizada de heap spray, registro em tempo real e análise empírica de taxa de sucesso. Peça de portfólio demonstrando exploração avançada de binários Windows, manipulação de layout de heap e LPE via Desktop Window Manager.

GitHubdevianntsec/cve-2024-30051

CVE-2024-30051

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

CVE-2024-30051 — Estouro de Heap no DWM do Windows para EoP · Pesquisa de Tese de Mestrado

Platform Language License: MIT Research CVSS

Estouro de Buffer Baseado em Heap no Gerenciador de Janelas da Área de Trabalho do Windows (dwmcore.dll)
Escalação de Privilégio Local → Nível de Integridade SYSTEM via processo DWM
Alvo de compilação: Windows 11 22H2 (10.0.22621.3447) · Patch: KB5037771


Descrição

Este repositório contém minha pesquisa de Tese de Mestrado sobre CVE-2024-30051, uma vulnerabilidade de Escalação de Privilégio de alta severidade (CVSS 7.8) na Biblioteca Principal do Gerenciador de Janelas da Área de Trabalho do Windows (dwmcore.dll).

A vulnerabilidade se origina de um erro de cálculo de tamanho na divisão inteira em CCommandBuffer::Initialize. O tamanho usado para new() e o tamanho usado para memcpy() divergem devido a esse erro, produzindo um estouro de heap de 0x8F bytes. Uma exploração bem-sucedida faz com que dwm.exe carregue uma DLL controlada pelo atacante, executando código arbitrário sob a conta window manager\dwm-1 com Nível de Integridade SYSTEM.

Minha Contribuição

AspectoDescrição
Diferenciação de patchAnálise completa de BinDiff identificando CCommandBuffer::Initialize como o lócus exato da vulnerabilidade (pontuação de similaridade 0,32 vs. global 0,98 em 14.062 funções correspondentes)
Análise dinâmica com WinDbgVerificação passo a passo de todos os 4 hooks, substituição do campo de tamanho e construção do payload
Análise empírica de heap spray50 sessões controladas em duas configurações de RAM (8.192 MB e 4.096 MB) com testes estatísticos formais
Resultados estatísticosMann-Whitney U (p = 0,031) e teste t de Welch (p = 0,011) confirmam efeito da RAM; médias observadas 12,9–19× melhores que a previsão teórica de ~64 tentativas
Caminho da DLL de payload centralizadoCaminho codificado extraído para a constante de pré-processador #define PAYLOAD_DLL_PATH
Registro de sessãoLog completo com timestamp por sessão escrito em %TEMP%\cve_30051_log.txt
Documentação acadêmicaCausa raiz, análise de heap spray de 50 sessões e cronologia do CVE

Estrutura do Repositório

CVE-2024-30051-Masters-Thesis/
├── README.md
├── LICENSE
├── setup.bat                        # Copia s11.dll para o local necessário
│
├── exploit/
│   ├── C21.sln                      # Solução Visual Studio 2022
│   ├── exploit_src/
│   │   ├── c26f.vcxproj
│   │   ├── c26f.filters
│   │   └── main.cpp                 # Exploit — heap spray + hook + estouro
│   └── payload/
│       ├── payload.vcxproj
│       ├── payload.vcxproj.filters
│       ├── dllmain.cpp              # DLL de payload — spawna shell SYSTEM + limpeza
│       ├── framework.h
│       ├── pch.h
│       └── pch.cpp
│
└── docs/
    ├── screenshots/                 # Capturas de diferenciação de patch, WinDbg e forense
    └── analysis/
        ├── 01-root-cause.md         # Bug de divisão inteira em CCommandBuffer::Initialize
        ├── 02-heap-spray.md         # Dados empíricos de 50 sessões e resultados estatísticos
        └── 03-timeline.md           # Cronologia de descoberta, divulgação e patch

Início Rápido

Pré-requisitos

  • Windows 11 22H2 (build 22621.3447, sem patch — sem KB5037771)
  • Visual Studio 2022 com carga de trabalho C++ Desktop
  • VM com snapshot recomendado (necessário para estado de heap reproduzível)

Passo 1 — Compilar a DLL de payload

Abra C21.sln no Visual Studio 2022. Compile o projeto payload em Release x64.

Passo 2 — Colocar a DLL

Execute setup.bat a partir da raiz do repositório. Ele copia s11.dll para C:\Users\Public\Documents\s11.dll (o caminho definido por PAYLOAD_DLL_PATH).

⚠️ A DLL deve estar neste caminho exato antes de executar C26f.exe. Colocá-la junto ao executável não funcionará.

Passo 3 — Compilar o exploit

Compile o projeto C26f em Release x64.

Passo 4 — Executar

x64\Release\C26f.exe

Execute a partir de um CMD padrão (não elevado). O exploit tenta automaticamente novamente até 10 vezes. Em caso de sucesso, dwm.exe carrega s11.dll e spawna um CMD com Nível de Integridade SYSTEM. Um log de sessão é escrito em %TEMP%\cve_30051_log.txt.


Configuração do Exploit

#define MAX_ATTEMPTS        10      // Máx. de tentativas automáticas por sessão
#define SPRAY_STEP          0x10    // Índice de espaçamento de buracos (1024 buracos)
#define SPRAY_RANGE_START   0x3000  // Índice inicial do intervalo de spray
#define SPRAY_RANGE_END     0x7000  // Índice final do intervalo de spray
#define SLEEP_POST_SPRAY    0xC8    // ms de espera após spray (200ms)
#define SLEEP_POST_HOLES    0xC8    // ms de espera após liberar buracos (200ms)
#define PAYLOAD_DLL_PATH    "C:\\Users\\Public\\Documents\\s11.dll"

Visão Técnica

Causa Raiz da Vulnerabilidade

Em CCommandBuffer::Initialize (dwmcore.dll 10.0.22621.3447), CD2DSharedBuffer::GetBufferSize é chamado duas vezes. O tamanho passado para new() sofre divisão inteira por 0x90 antes da multiplicação, enquanto memcpy() usa o valor bruto:

buffer_size = GetBufferSize()   → ex. 0x23F

size_new    = (0x23F / 0x90) * 0x90  = 0x1B0   ← alocado
size_memcpy = 0x23F                             ← copiado

estouro    = 0x23F - 0x1B0 = 0x8F bytes

Resultados da Diferenciação de Patch

Comparação BinDiff entre o build 10.0.22621.3447 (vulnerável) e 10.0.22621.3593 (corrigido):

MétricaValor
Similaridade global0,98
Confiança0,99
Funções correspondentes14.062 (99,1%)
Similaridade de CCommandBuffer::Initialize0,32
Blocos básicos — versão vulnerável4
Blocos básicos — versão corrigida20 (16 blocos de validação adicionados)

A pontuação anômala de 0,32 contra uma similaridade global de 0,98 é a assinatura direta do lócus da vulnerabilidade.

Cadeia de Exploração

1. Hook RtlCreateHeap               → capturar handle do heap do dwmcore
2. Hook RtlAllocateHeap             → capturar endereço base do chunk
3. Hook NtDCompositionCreateChannel → capturar MappedAddress (região de memória compartilhada)
4. Hook NtDCompositionCommitChannel → sobrescrever campo de tamanho (0x120 → 0x23F)
                                      injetar comandos de lote adicionais
5. Heap spray de 0x10000 objetos CHolographicInteropTexture (tamanho=0x1B0)
6. Liberar buracos a cada 0x10 índices → criar lacunas para o pouso do estouro
7. Escrever payload no buffer de estouro → KCBTable+0x388 + LoadLibraryA + caminho da DLL
8. Liberar todos os objetos do spray → acionar estouro → LoadLibraryA("s11.dll")
9. dwm.exe carrega DLL de payload → spawna CMD como integridade SYSTEM

Análise Empírica de Heap Spray (50 Sessões)

Pergunta de Pesquisa

A RAM disponível influencia o número de tentativas necessárias para um heap spray bem-sucedido?

Desenho Experimental

Dois blocos de 25 sessões cada. Protocolo por sessão: restaurar snapshot limpo pós-inicialização → aguardar 100 segundos de estabilização → lançar exploit → registrar tentativa bem-sucedida.

BlocoRAMSessõesSucessosFalhas
A8.192 MB25241
B4.096 MB25241

Resultados

Baixar ferramenta