
Un framework de explotación para CVE-2018-19323 - Vulnerabilidad de escalada de privilegios GIGABYTE GDrv con soporte multiarquitectura e integración con framework
Este repositorio contiene un framework de explotación completo y avanzado para CVE-2018-19323, una vulnerabilidad crítica en el controlador gdrv.sys de GIGABYTE. Esta vulnerabilidad permite a usuarios no privilegiados leer y escribir Registros Específicos del Modelo (MSR) arbitrarios, lo que lleva a un compromiso total del Ring-0 (kernel) y una escalada de privilegios a NT AUTHORITY\SYSTEM.
El framework está diseñado para ser modular, robusto y rico en funciones, proporcionando una herramienta integral para la investigación de seguridad, operaciones de equipo rojo y análisis de vulnerabilidades.
IA32_LSTAR y ejecutando un shellcode de robo de tokens.core, payloads, evasion, monitor, multiarch, framework) para facilitar la extensión y el mantenimiento..
├── exploit.py # Framework de explotación principal y CLI
├── core.py # Interacción central con el controlador y primitivas de exploit
├── payloads.py # Generación de shellcodes, payloads personalizados y codificación
├── evasion.py # Técnicas antivirtualización, antidetección y persistencia
├── monitor.py # Registro, monitoreo de rendimiento e informes
├── multiarch.py # Soporte multiarquitectura (x86/x64/ARM64)
├── framework.py # Integración con Metasploit, Cobalt Strike, etc.
├── tests.py # Pruebas unitarias, de integración y rendimiento exhaustivas
└── README.md # Este archivo de documentación
gdrv.sys debe estar presente en el sistema objetivo.psutil, cryptography, requests# Instalar los paquetes Python requeridos
pip install psutil cryptography requests
El framework de explotación principal se ejecuta mediante exploit.py. Proporciona varias opciones de línea de comandos para diferentes modos operativos.
# Mostrar ayuda y todas las opciones disponibles
python exploit.py --help
# Modo sigiloso por defecto (recomendado)
# Ejecuta todas las comprobaciones de evasión previas a la explotación.
python exploit.py
# Modo agresivo
# Omite las comprobaciones de evasión para una ejecución más rápida en entornos controlados.
python exploit.py --aggressive
# Modo depuración
# Proporciona registro detallado para desarrollo y análisis.
python exploit.py --debug
# Ejecutar el conjunto completo de pruebas
# Valida todos los componentes del framework sin ejecutar el exploit.
python exploit.py --test-only
[!WARNING] Este software está destinado únicamente a fines educativos y de investigación de seguridad autorizados. El uso no autorizado en cualquier sistema es ilegal y está estrictamente prohibido. El autor, kali, no se hace responsable de ningún daño o mal uso de este framework.
El controlador gdrv.sys expone un IOCTL 0xC3502580 que puede ser llamado por cualquier aplicación en modo usuario. Este IOCTL toma una estructura que contiene un tipo de operación (lectura/escritura), un índice de registro MSR y un valor. El controlador no realiza ninguna comprobación de control de acceso, lo que permite a cualquier proceso leer o escribir en cualquier MSR.
Esto es un fallo crítico porque los MSR controlan operaciones fundamentales de la CPU. Específicamente, el MSR IA32_LSTAR (en la dirección 0xC0000082) almacena la dirección del manejador de llamadas al sistema en el kernel. Al leer este MSR, podemos derrotar la Aleatorización del Espacio de Direcciones del Kernel (KASLR) y calcular la dirección base del kernel. Al escribirlo, podemos redirigir las llamadas al sistema a nuestro propio shellcode, logrando la ejecución de código arbitrario en Ring-0.
\\.\GIO.IA32_LSTAR para obtener un puntero dentro del kernel, evitando KASLR.EPROCESS del proceso actual, localizar la EPROCESS del proceso SYSTEM (PID 4) y copiar su token de seguridad a nuestro proceso.IA32_LSTAR se sobrescribe con la dirección de nuestro shellcode.NT AUTHORITY\SYSTEM.IA32_LSTAR se restaura para evitar la inestabilidad del sistema.evasion.py incluye comprobaciones de número de núcleos de CPU, tamaño del disco, actividad reciente de archivos, programas instalados y detección avanzada de temporización/hooking para crear una huella ambiental más robusta.payloads.py permite la generación dinámica de varios payloads (shells inversas, Meterpreter, balizas de Cobalt Strike) para diferentes arquitecturas, con múltiples capas de codificación.multiarch.py proporciona una capa de abstracción integral para manejar las diferencias entre x86, x64 y ARM64, incluyendo tamaños de puntero, convenciones de llamada, estructuras del kernel y conjuntos de instrucciones.framework.py puede generar módulos listos para usar para Metasploit (.rb), Cobalt Strike (.cna), Empire (.py) y Sliver (.go), automatizando el proceso de integración para operaciones de equipo rojo.El framework incluye un conjunto completo de pruebas en tests.py. Puede ejecutar todas las pruebas para asegurar la integridad y funcionalidad de todos los componentes.
# Ejecutar todas las pruebas unitarias, de integración y rendimiento
python tests.py --all
# Ejecutar solo las pruebas unitarias
python tests.py --unit
Este proyecto es una demostración de técnicas avanzadas de explotación y debe ser utilizado de forma responsable.