
Windows CLFS LPE exploit PoC सुरक्षा अनुसंधान के लिए
🚨 EXPLOIT PoC — केवल सुरक्षा अनुसंधान, भेद्यता विश्लेषण और रक्षात्मक उद्देश्यों के लिए
🚨 PoC DE EXPLOIT — SOLO PARA INVESTIGACIÓN DE SEGURIDAD, ANÁLISIS DE VULNERABILIDADES Y FINES DEFENSIVOS
CVE-2025-60709 विंडोज CLFS.sys (सामान्य लॉग फ़ाइल सिस्टम) ड्राइवर में एक स्थानीय विशेषाधिकार वृद्धि (LPE) भेद्यता है। यह एक हमलावर को स्थानीय कोड निष्पादन के साथ मानक उपयोगकर्ता से NT AUTHORITY\SYSTEM तक बढ़ाने की अनुमति देता है, CLFS कंटेनर पार्सिंग में बफर ओवरफ्लो के माध्यम से, कर्नेल मेमोरी में एक मनमाना लेखन प्रिमिटिव प्राप्त करता है।
इस रिपॉजिटरी में दो कार्यान्वयन शामिल हैं:
| फ़ील्ड | विवरण |
|---|---|
| CVE ID | CVE-2025-60709 |
| प्रकार | स्थानीय विशेषाधिकार वृद्धि (LPE) |
| घटक | CLFS.sys (सामान्य लॉग फ़ाइल सिस्टम ड्राइवर) |
| लक्ष्य OS | विंडोज 11 24H2 (बिल्ड 26100.3485+) |
| आर्किटेक्चर | केवल x64 |
| वेक्टर | CLFS कंटेनर पार्सिंग में बफर ओवरफ्लो |
| प्रभाव | NT AUTHORITY\SYSTEM तक वृद्धि |
| पूर्वापेक्षाएँ | स्थानीय कोड निष्पादन (मानक उपयोगकर्ता) |
CVE-2025-60709/
├── CVE-2025-60709.c (5.3 KB, 157 पंक्तियाँ) — मूल C शोषण
├── CVE-2025-60709.go (9.2 KB, 285 पंक्तियाँ) — Go पोर्ट (शैक्षिक डेमो)
└── README.txt (4.2 KB, 132 पंक्तियाँ) — मूल दस्तावेज़ीकरण
[1] रक्षा चोरी
├─ KillETW() → ntdll में EtwEventWrite को RET (0xC3) से पैच करता है
└─ KillAMSI() → amsi.dll में AmsiScanBuffer को RET (0xC3) से पैच करता है
[2] हीप ग्रूमिंग (मेमोरी तैयारी)
└─ GroomLookaside()
├─ 4096 फ़ाइलें बनाता है: C:\Windows\Temp\groom_00000.blf
├─ प्रत्येक के लिए CreateLogFile() + AddLogContainer() कॉल करता है
└─ लुकअसाइड सूचियों को समाप्त करता है → पूर्वानुमेय हीप लेआउट की गारंटी देता है
[3] मनमाना लेखन प्रिमिटिव — ClfsArbWrite(पता, मान)
├─ दूषित CLFS बफर बनाता है (0x102010 बाइट्स)
│ ├─ +0x00 पर मान्य CLFS हस्ताक्षर: 0x0201
│ ├─ +0x14 पर सेक्टर आकार शिफ्ट: 2
│ ├─ +0x28 पर पहला क्लाइंट क्षेत्र: 0x100
│ ├─ +0x100 पर अतिरिक्त बड़ा cbRecord: 0xFF00 (64 KB > वास्तविक डेटा)
│ ├─ +0x9A8 पर छाया क्षेत्र मार्कर: 0x13371337
│ └─ ऑफसेट (0xFF00 + 0x100) पर नकली CClfsContainerContext:
│ ├─ pContainer = TargetAddress - 0x10
│ └─ cbContainer = मान (लिखने के लिए डेटा)
├─ सही CLFS चेकसम की गणना करता है (ड्राइवर मान्य करता है)
├─ दूषित कंटेनर लिखता है → C:\Windows\Temp\evil.blf
├─ evil.blf की ओर इशारा करते हुए लॉग बनाता है
├─ ClfsReadRestartArea() कॉल करता है → कर्नेल पार्सिंग ट्रिगर करता है
└─ ड्राइवर बफर को ओवरफ्लो करता है → पते पर मान लिखता है ✓
[4] सिस्टम टोकन चोरी
├─ PsInitialSystemProcess के माध्यम से SYSTEM प्रक्रिया का EPROCESS पढ़ता है
└─ EPROCESS + EPROCESS_TOKEN (ऑफसेट 0x4c0) पर टोकन निकालता है
[5] विशेषाधिकार वृद्धि
└─ ClfsArbWrite(CurrentEprocess + 0x4c0, SystemToken)
└─ वर्तमान प्रक्रिया टोकन को SYSTEM टोकन से अधिलेखित करता है ✓
[6] C2 पेलोड निष्पादन
├─ VirtualAlloc(PAGE_EXECUTE_READWRITE)
├─ 1789 बाइट शेलकोड बीकन कॉपी करता है
├─ CreateThread() → NT AUTHORITY\SYSTEM के रूप में चलता है
└─ बीकन C2: IPv6 + DoH → Gmail ड्राफ्ट फ़ॉलबैक
└─ sRDI + नींद अस्पष्टता + ETW/AMSI पहले से पैच किए गए
[7] स्थायित्व
└─ Sleep(INFINITE) → प्रक्रिया SYSTEM टोकन बनाए रखती है
| फ़ील्ड | ऑफसेट | विवरण |
|---|---|---|
EPROCESS_TOKEN | 0x4C0 | प्रक्रिया सुरक्षा टोकन |
EPROCESS_PID | 0x440 | प्रक्रिया आईडी (PID) |
EPROCESS_LINKS | 0x448 | सक्रिय प्रक्रियाओं की लिंक की गई सूची |
EPROCESS_NAME | 0x5A8 | प्रक्रिया नाम (ImageFileName) |
⚠️ ये ऑफसेट विंडोज बिल्ड के बीच भिन्न होते हैं। अन्य संस्करणों के लिए अद्यतन करने की आवश्यकता है।
वैध CLFS कंटेनर:
[हेडर 0x100 बाइट्स][रिकॉर्ड: cbRecord बाइट्स वास्तविक डेटा]
दूषित कंटेनर (evil.blf):
[मान्य हेडर][cbRecord=0xFF00 → कर्नेल 65,280 बाइट्स पढ़ता है]
↓
कर्नेल ओवरफ्लो → नकली CClfsContainerContext तक पहुंचता है
↓
pContainer = TargetKernelAddress - 0x10
cbContainer = ValueToWrite
↓
ड्राइवर नकली संरचना का उपयोग करता है → ValueToWrite को TargetKernelAddress पर लिखता है
CVE-2025-60709.c| फ़ंक्शन | उद्देश्य |
|---|---|
GetKernelBase() | ZwQuerySystemInformation(SystemModuleInformation) → ntoskrnl.exe बेस |
KillETW() | VirtualProtect + ntdll.dll में EtwEventWrite को 0xC3 (RET) से अधिलेखित करता है |
KillAMSI() | amsi.dll लोड करता है + AmsiScanBuffer को 0xC3 (RET) से अधिलेखित करता है |
GroomLookaside() | लुकअसाइड सूचियों को समाप्त करने के लिए 4096 CLFS लॉग बनाता है → नियतात्मक हीप |
ClfsArbWrite() | शोषण का मूल — मनमाना कर्नेल मेमोरी लेखन प्रिमिटिव |
main() | हमले का आयोजन करता है: ETW→AMSI→ग्रूम→टोकन चोरी→आर्ब राइट→बीकन |
| पहलू | C संस्करण | Go संस्करण |
|---|---|---|
| प्रकार | कार्यात्मक शोषण (दस्तावेज़ के अनुसार) | केवल शैक्षिक डेमो |
| APIs | प्रत्यक्ष (ntdll, clfsw32, advapi32) | syscall.NewLazyDLL() रैपर |
| CLFS चेकसम | पूर्ण एल्गोरिदम | सरलीकृत प्लेसहोल्डर |
| कर्नेल पते | वास्तविक | हार्डकोडेड प्लेसहोल्डर (0x123456) |
| C2 पेलोड | 1789-बाइट शेलकोड | NOP बाइट्स (0x90) |
| अपेक्षित परिणाम | SYSTEM तक वृद्धि | संदेश "Arb write failed (yeah)" |
C संस्करण (Visual Studio Build Tools + Windows SDK आवश्यक):
cl /O1 /MT /link ntdll.lib advapi32.lib clfsw32.lib CVE-2025-60709.c
Go संस्करण (विंडोज x64 पर Go 1.19+ आवश्यक):
go build -ldflags="-s -w" -o CVE-2025-60709.exe CVE-2025-60709.go
| शमन | प्रभावशीलता |
|---|---|
| HVCI (हाइपरवाइज़र-संरक्षित कोड अखंडता) | उच्च — कर्नेल मेमोरी लेखन को रोकता है |
| kCFI (कर्नेल नियंत्रण प्रवाह अखंडता) | उच्च — ROP/JOP श्रृंखलाओं को अवरुद्ध करता है |
| CFG (नियंत्रण प्रवाह गार्ड) | मध्यम — शेलकोड निष्पादन में बाधा डालता है |
| विंडोज डिफेंडर | मध्यम — ज्ञात तकनीकों का पता लगाता है |
| विंडोज अपडेट | उच्च — आधिकारिक पैच भेद्यता को समाप्त करता है |