
Windows kernel driver utility जो DSE को bypass करने, unsigned drivers को load करने, protected processes को hijack करने, और process memory को dump करने के लिए vulnerable signed drivers (BYOVD) का दुरुपयोग करती है।
इस टूल का उद्देश्य Windows कर्नेल/घटकों का पता लगाने का एक सरल तरीका प्रदान करना है, बिना व्यापक सेटअप या स्थानीय डीबगर की आवश्यकता के। इसमें निम्नलिखित विशेषताएँ हैं:
उदाहरण:
Windows 11 24H2* पर चलाएँ
Windows 10 20H2* पर चलाएँ
Windows 8.1* पर संकलित और चलाया गया
Windows 7 SP1 पूरी तरह पैच किए गए (प्रीकंपाइल्ड संस्करण)* पर चलाएँ
Windows 10 19H2 (प्रीकंपाइल्ड संस्करण, SecureBoot सक्षम)* पर चलाएँ
लोडिंग के असामान्य तरीके के कारण जो मानक कर्नेल लोडर को शामिल नहीं करता, बल्कि पहले से लोड किए गए मॉड्यूल को शेलकोड से ओवरराइट करने का उपयोग करता है, कुछ सीमाएँ हैं:
इसका मतलब है कि आप अपने DriverEntry में निर्दिष्ट पैरामीटर का उपयोग नहीं कर सकते क्योंकि वे मान्य नहीं होंगे। इसका यह भी मतलब है कि आप कोई भी ड्राइवर लोड नहीं कर सकते, बल्कि केवल विशेष रूप से डिज़ाइन किए गए ड्राइवर ही लोड कर सकते हैं, या आपको शेलकोड रूटीन को संशोधित करने की आवश्यकता होगी।
x64 में कोई SEH कोड नहीं है। इसके बजाय, आपके पास try/except/finally क्षेत्रों की एक तालिका होती है जिसे PE हेडर में एक पॉइंटर द्वारा वर्णित किया जाता है। यदि कोई अपवाद होता है, तो यह BSOD का कारण बन सकता है।
मैप किया गया कोड स्वयं को अनलोड नहीं कर सकता; हालाँकि, आप अपने मैप किए गए कोड द्वारा आवंटित सभी संसाधनों को जारी कर सकते हैं। DRIVER_OBJECT->DriverUnload को NULL पर सेट किया जाना चाहिए।
यदि आपके प्रोजेक्ट को किसी अन्य मॉड्यूल निर्भरता की आवश्यकता है, तो आपको इस लोडर भाग को फिर से लिखना होगा।
लोडिंग के असामान्य तरीके के कारण, मैप किया गया ड्राइवर PsLoadedModulesList के अंदर नहीं होगा। इसका मतलब है कि ऐसे कोड द्वारा पंजीकृत कोई भी कॉलबैक का हैंडलर इस सूची के बाहर मेमोरी में स्थित होगा। PatchGuard इसका पता लगा सकता है और सिस्टम को क्रैश कर सकता है।
सामान्य तौर पर, यदि आप जानना चाहते हैं कि कर्नेल में आपको क्या नहीं करना चाहिए, तो https://github.com/hfiref0x/KDU/tree/master/Source/Examples/BadRkDemo देखें जिसमें निषिद्ध चीजों के कुछ उदाहरण हैं।
यह टूल MmUnloadedDrivers और/या PiDDBCacheTable की आंतरिक Windows संरचनाओं को नहीं बदलता (और भविष्य में नहीं बदलेगा)। इसका कारण यह है:
आप इसे अपने जोखिम पर उपयोग करते हैं। कुछ आलसी AV इस टूल को hacktool/malware के रूप में फ़्लैग कर सकते हैं।
सभी मेटाडेटा सहित पूरी सूची यहाँ उपलब्ध है:
भविष्य में और प्रदाता जोड़े जा सकते हैं।
यह वैध सॉफ़्टवेयर से ज्ञात कमजोर (या डिज़ाइन द्वारा वर्महोल) ड्राइवरों का उपयोग करके रीड/राइट प्रिमिटिव्स के साथ मनमानी कर्नेल मेमोरी तक पहुँचता है।
कमांड के आधार पर, KDU या तो TDL/DSEFix के रूप में काम करेगा या कर्नेल मोड प्रोसेस ऑब्जेक्ट्स (EPROCESS) को संशोधित करेगा।
-map मोड में, अधिकांश उपलब्ध प्रदाताओं के लिए KDU डिफ़ॉल्ट रूप से SysInternals Process Explorer से एक तृतीय-पक्ष हस्ताक्षरित ड्राइवर का उपयोग करेगा और इसके IRP_MJ_DEVICE_CONTROL रूटीन के अंदर एक छोटा लोडर शेलकोड रखकर इसे हाईजैक करेगा।
KDU इनपुट ड्राइवरों को मैप करने और उनके DriverEntry को निष्पादित करने के लिए शेलकोड का उपयोग करता है। KDU में कुछ शेलकोड वेरिएंट एम्बेडेड हैं। शेलकोड V1, V2, और V3 का उपयोग तृतीय-पक्ष विक्टिम ड्राइवर (Process Explorer, आदि) के साथ किया जाता है।
KDU पूर्ण स्रोत कोड के साथ आता है। स्रोत से बिल्ड करने के लिए, आपको Microsoft Visual Studio 2019 या बाद का संस्करण चाहिए। ड्राइवर बिल्ड के लिए, आपको Microsoft Windows Driver Kit 10 और/या उससे ऊपर चाहिए।