Um framework de exploração para CVE-2018-19323 - vulnerabilidade de escalonamento de privilégios GIGABYTE GDrv com suporte multi-arquitetura e integração com framework
Este repositório contém um framework de exploração completo e avançado para a CVE-2018-19323, uma vulnerabilidade crítica no driver gdrv.sys da GIGABYTE. Esta vulnerabilidade permite que usuários não privilegiados leiam e escrevam em Model-Specific Registers (MSRs) arbitrários, resultando em um comprometimento total do Ring-0 (kernel) e escalada de privilégios para NT AUTHORITY\SYSTEM.
O framework foi projetado para ser modular, robusto e rico em funcionalidades, fornecendo uma ferramenta abrangente para pesquisa de segurança, operações de red team e análise de vulnerabilidades.
IA32_LSTAR e executando um shellcode de roubo de token.core, payloads, evasion, monitor, multiarch, framework) para fácil extensão e manutenção..
├── exploit.py # Framework principal de exploração e CLI
├── core.py # Interação principal com o driver e primitivas do exploit
├── payloads.py # Geração de shellcodes, payloads personalizados e codificação
├── evasion.py # Técnicas anti-VM, anti-debugging e persistência
├── monitor.py # Logging, monitoramento de desempenho e relatórios
├── multiarch.py # Suporte multi-arquitetura (x86/x64/ARM64)
├── framework.py # Integração com Metasploit, Cobalt Strike, etc.
├── tests.py # Testes unitários, de integração e de desempenho abrangentes
└── README.md # Este arquivo de documentação
gdrv.sys deve estar presente no sistema alvo.psutil, cryptography, requests# Instalar pacotes Python necessários
pip install psutil cryptography requests
O framework principal de exploração é executado através do exploit.py. Ele fornece várias opções de linha de comando para diferentes modos operacionais.
# Exibir ajuda e todas as opções disponíveis
python exploit.py --help
# Modo furtivo padrão (recomendado)
# Executa todas as verificações de evasão antes da exploração.
python exploit.py
# Modo agressivo
# Ignora verificações de evasão para execução mais rápida em ambientes controlados.
python exploit.py --aggressive
# Modo debug
# Fornece logging detalhado para desenvolvimento e análise.
python exploit.py --debug
# Executar suíte completa de testes
# Valida todos os componentes do framework sem executar o exploit.
python exploit.py --test-only
[!WARNING] Este software é destinado apenas para fins educacionais e de pesquisa de segurança autorizada. O uso não autorizado em qualquer sistema é ilegal e estritamente proibido. O autor, kali, não se responsabiliza por qualquer dano ou uso indevido deste framework.
O driver gdrv.sys expõe um IOCTL 0xC3502580 que pode ser chamado por qualquer aplicação em modo de usuário. Este IOCTL recebe uma estrutura contendo um tipo de operação (leitura/escrita), um índice de registro MSR e um valor. O driver não realiza nenhuma verificação de controle de acesso, permitindo que qualquer processo leia ou escreva em qualquer MSR.
Esta é uma falha crítica porque os MSRs controlam operações fundamentais da CPU. Especificamente, o MSR IA32_LSTAR (no endereço 0xC0000082) armazena o endereço do manipulador de chamadas de sistema no kernel. Ao ler este MSR, podemos contornar o Kernel Address Space Layout Randomization (KASLR) e calcular o endereço base do kernel. Ao escrever nele, podemos redirecionar chamadas de sistema para nosso próprio shellcode, obtendo execução arbitrária de código no Ring-0.
\\.\GIO.IA32_LSTAR para obter um ponteiro dentro do kernel, contornando o KASLR.EPROCESS do processo atual, localizar o EPROCESS do processo SYSTEM (PID 4) e copiar seu token de segurança para o nosso processo.IA32_LSTAR é sobrescrito com o endereço do nosso shellcode.NT AUTHORITY\SYSTEM.IA32_LSTAR é restaurado para evitar instabilidade do sistema.evasion.py inclui verificações de número de núcleos da CPU, tamanho do disco, atividade recente de arquivos, programas instalados e detecção avançada de temporização/hooking para criar uma impressão digital ambiental mais robusta.payloads.py permite a geração dinâmica de vários payloads (shells reversos, Meterpreter, beacons do Cobalt Strike) para diferentes arquiteturas, com múltiplas camadas de codificação.multiarch.py fornece uma camada de abstração abrangente para lidar com diferenças entre x86, x64 e ARM64, incluindo tamanhos de ponteiro, convenções de chamada, estruturas do kernel e conjuntos de instruções.framework.py pode gerar módulos prontos para uso no Metasploit (.rb), Cobalt Strike (.cna), Empire (.py) e Sliver (.go), automatizando o processo de integração para operações de red team.O framework inclui uma suíte de testes abrangente em tests.py. Você pode executar todos os testes para garantir a integridade e funcionalidade de todos os componentes.
# Executar todos os testes unitários, de integração e de desempenho
python tests.py --all
# Executar apenas testes unitários
python tests.py --unit
Este projeto é uma demonstração de técnicas avançadas de exploração e deve ser usado com responsabilidade.