Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
EfiGuard — बूट समय पर PatchGuard और Driver Signature Enforcement अक्षम करें | Kitploit
उपकरण/GitHubGitHub/mattiwatti/efiguard
रक्षात्मक उपकरणशोषणरिवर्स इंजीनियरिंगबाइनरी विश्लेषण
GitHubmattiwatti/efiguard

EfiGuard

बूट समय पर PatchGuard और Driver Signature Enforcement अक्षम करें

रिपॉजिटरी देखें
2.5k4092 महीने पहलेKitploit द्वारा समीक्षित

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

अवलोकन

EfiGuard एक पोर्टेबल x64 UEFI बूटकिट है जो Windows बूट मैनेजर, बूट लोडर और कर्नेल को बूट समय पर पैच करता है ताकि PatchGuard और Driver Signature Enforcement (DSE) को अक्षम किया जा सके।

यदि आप केवल EfiGuard आज़माना चाहते हैं, तो उपयोग पर जाएं।

विशेषताएँ

  • वर्तमान में Vista SP1 से Windows 11 तक जारी सभी EFI-संगत Windows x64 संस्करणों का समर्थन करता है।

  • उपयोग में आसान: एक लोडर के माध्यम से USB स्टिक या Windows EFI विभाजन से बूट किया जा सकता है जो स्वचालित रूप से Windows को ढूंढता और बूट करता है। ड्राइवर को UEFI शेल या लोडर का उपयोग करके मैन्युअल रूप से भी लोड और कॉन्फ़िगर किया जा सकता है।

  • Zydis डिसेसम्बलर लाइब्रेरी का व्यापक उपयोग करता है ताकि फास्ट रनटाइम इंस्ट्रक्शन डिकोडिंग के लिए सिग्नेचर मैचिंग की तुलना में अधिक मजबूत विश्लेषण का समर्थन किया जा सके, जिसमें अक्सर नए OS अपडेट के साथ बदलाव की आवश्यकता होती है।

  • निष्क्रिय रूप से काम करता है: ड्राइवर Windows बूट मैनेजर को लोड या शुरू नहीं करता है। इसके बजाय यह फर्मवेयर बूट मैनेजर द्वारा bootmgfw.efi के लोड होने पर कार्य करता है, बूट चयन मेनू या लोडर जैसे EFI एप्लिकेशन के माध्यम से। यदि गैर-Windows OS बूट किया जाता है, तो ड्राइवर स्वचालित रूप से स्वयं को अनलोड कर देगा।

  • चार-चरणीय पैचिंग का समर्थन करता है जब bootmgfw.efi bootmgr.efi शुरू करता है, winload.efi के बजाय। यह तब होता है जब WinPE, Windows Setup या Windows Recovery मोड को बूट करने के लिए WIM फ़ाइल लोड की जाती है।

  • सुगम पुनर्प्राप्ति: पैच विफलता की स्थिति में, ड्राइवर त्रुटि जानकारी प्रदर्शित करेगा और बूट जारी रखने या ESC दबाकर रीबूट करने का संकेत देगा। यह अंतिम कर्नेल पैच चरण तक भी सच है, क्योंकि अंतिम पैच चरण ExitBootServices कॉल करने से पहले होता है। कई UEFI Windows बूटकिट OslArchTransferToKernel को हुक करते हैं, जबकि पैटर्न मैचिंग द्वारा खोजना आसान है, यह एक फ़ंक्शन है जो ExitBootServices के बाद संरक्षित मोड में निष्पादित होता है। इसका मतलब है कि उपयोगकर्ता को यह बताने के लिए कोई बूट सेवाएँ उपलब्ध नहीं हैं कि कुछ गलत हो गया है। bsod

    त्रुटि जानकारी के साथ अनुकरित पैच विफलता

  • डीबग करने योग्य: कर्नेल पैचिंग चरण के दौरान कर्नेल डीबगर और स्क्रीन पर संदेश आउटपुट कर सकता है (हालांकि बफर किए गए), और बूट मैनेजर और बूट लोडर पैचिंग चरणों के दौरान सीरियल पोर्ट या अनबफर्ड स्क्रीन पर। यदि ड्राइवर PDB डीबग जानकारी के साथ संकलित किया गया है, तो HAL आरंभीकरण के बाद किसी भी बिंदु पर वर्चुअल DXE ड्राइवर बेस निर्दिष्ट करके और इसे सामान्य NT ड्राइवर की तरह डीबग करके डीबग प्रतीकों को लोड करना संभव है।

  • DSE बाईपास: बूट समय पर सीधे UPGDSED-शैली DSE अक्षम करने के रूप में या SetVariable() EFI रनटाइम सेवा पर हुक के रूप में उपलब्ध। बाद वाला एक मनमाना कर्नेल मोड रीड/राइट बैकडोर के रूप में कार्य करता है जिसे Windows से NtSetSystemEnvironmentValueEx का उपयोग करके कॉल किया जा सकता है और g_CiEnabled/g_CiOptions को वांछित मान पर सेट करने की अनुमति देता है। एक छोटा DSEFix-शैली एप्लिकेशन जिसका नाम EfiDSEFix.exe है, प्रदान किया गया है जिसका उपयोग ऐसा करने के लिए किया जा सकता है। DSE को सक्षम छोड़ना और केवल PatchGuard को अक्षम करना भी संभव है। लोडर डिफ़ॉल्ट रूप से SetVariable हुक विधि का उपयोग करेगा, इस तथ्य के कारण कि कुछ एंटी-चीट और एंटी-वायरस प्रोग्राम चीट या मैलवेयर और सामान्य रूप से स्व-हस्ताक्षरित ड्राइवरों के बीच अंतर नहीं समझते हैं और UPGDSED फिक्स को लक्षित करते हैं।

  • हर चरण पर ImgpValidateImageHash के साथ-साथ ImgpFilterValidationFailure को पैच करके डिस्क पर संशोधित कर्नेल और बूट लोडर का समर्थन करता है, जो चुपचाप TPM या SI लॉग फ़ाइल में कुछ प्रकार के उल्लंघनों की रिपोर्ट कर सकता है।

  • Windows 7 के साथ Secure Boot को काम करने की अनुमति देता है (मज़ाक नहीं!)। Windows 7 स्वयं Secure Boot से अनजान है क्योंकि यह इसका समर्थन नहीं करता है, या (आधिकारिक तौर पर) CSM के बिना बूट भी नहीं करता है। यह उन लोगों के लिए उपयोगी है जो एक लॉक डाउन डिवाइस पर Windows 7 का उपयोग करना चाहते हैं जिसके लिए WHQL Secure Boot की आवश्यकता है। इसे काम करने के तरीके पर विकी प्रविष्टि यहाँ है। win7_secureboot

    Secure Boot सक्षम के साथ Windows 7 पर WinObjEx64

समस्याएं और सीमाएं

  • EfiGuard हाइपरवाइज़र-प्रवर्तित कोड अखंडता (HVCI या HyperGuard) को अक्षम नहीं कर सकता क्योंकि HVCI अधिक विशेषाधिकार स्तर पर चलता है। EfiGuard HVCI के साथ सह-अस्तित्व में रह सकता है और सामान्य कर्नेल में PatchGuard को सफलतापूर्वक अक्षम भी कर सकता है, लेकिन यह व्यवहार में उपयोगी नहीं है क्योंकि HVCI वह पकड़ लेगा जो PatchGuard पहले करता था। दोनों प्रकार के DSE बाईपास HVCI द्वारा बेकार कर दिए जाते हैं: बूट समय पैच का कोई प्रभाव नहीं होता क्योंकि कर्नेल अखंडता जांच के लिए सुरक्षित कर्नेल को स्थगित कर देता है, और SetVariable हुक यदि g_CiOptions में लिखने के लिए उपयोग किया जाता है तो SECURE_KERNEL_ERROR बगचेक का कारण बनेगा।
  • चेक किए गए कर्नेल समर्थित नहीं हैं क्योंकि अक्षम ऑप्टिमाइज़ेशन और जोड़े गए असर्ट के कारण PatchGuard और DSE आरंभीकरण कोड में अंतर हैं, साथ ही चेक किए गए कर्नेल में PatchGuard में अतिरिक्त परिवर्तन भी हैं। यह कोई समस्या नहीं होनी चाहिए क्योंकि चेक किए गए कर्नेल आम तौर पर कर्नेल डीबगर के बिना उपयोगी नहीं होते हैं, जो PatchGuard को अक्षम करता है।

उपयोग

EfiGuard का उपयोग करने के दो तरीके हैं: लोडर एप्लिकेशन को बूट करना, जो आपके लिए ड्राइवर को लोड करेगा और Windows शुरू करेगा, या ड्राइवर को UEFI ड्राइवर प्रविष्टि के रूप में स्थापित करना ताकि यह फर्मवेयर द्वारा स्वचालित रूप से लोड हो जाए।

कुछ उन्नत कॉन्फ़िगरेशन में जैसे कि मल्टी-बूटिंग करते समय ड्राइवर स्थापित करना बेहतर हो सकता है, लेकिन लोडर का उपयोग करना सबसे आसान है और सभी कॉन्फ़िगरेशन में अच्छी तरह से काम करना चाहिए। दो विधियों के बीच सबसे महत्वपूर्ण अंतरों के लिए नीचे दी गई तालिका देखें। यदि अनिश्चित हैं, तो लोडर एप्लिकेशन चुनें।

स्थानस्थापनाछोड़ने योग्य?कौन सा OS बूट होता है?
UEFI ड्राइवर प्रविष्टिESP पर होना चाहिएUEFI शेल के माध्यम से❌

लोडर बनाम UEFI ड्राइवर प्रविष्टि तुलना

लोडर बूट करना

  1. EfiGuard डाउनलोड करें और EFI/Boot/Loader.efi का नाम बदलकर bootx64.efi करें।
  2. फ़ाइलों को एक बूट ड्राइव पर रखें जैसे कि FAT32 फ़ॉर्मेटेड USB स्टिक (भौतिक मशीनों के लिए) या ISO/वर्चुअल डिस्क (VMs के लिए)। ड्राइव X: मानते हुए, दो फ़ाइलों के पथ अब X:/EFI/Boot/{bootx64|EfiGuardDxe}.efi होने चाहिए।
  3. चरण 2 में उपयोग की गई ड्राइव से मशीन को बूट करें। अधिकांश फर्मवेयर F8/F10/F11/F12 के माध्यम से ऐसा करने के लिए बूट मेनू प्रदान करते हैं। यदि नहीं, तो आपको नई ड्राइव से बूट करने के लिए BIOS को कॉन्फ़िगर करने की आवश्यकता होगी।
  4. Windows अब बूट होना चाहिए, और आपको बूट के दौरान EfiGuard संदेश दिखाई देने चाहिए।
  5. यदि आपने SetVariable हुक (डिफ़ॉल्ट) के साथ बूट किया है, तो बूट के बाद DSE को अक्षम करने के लिए एक व्यवस्थापक कमांड प्रॉम्प्ट से EfiDSEFix.exe -d चलाएं, या विकल्पों की पूरी सूची देखने के लिए EfiDSEFix.exe चलाएं।

ध्यान दें कि आपको लोडर के लिए एक अलग ड्राइव का उपयोग करने की आवश्यकता नहीं है। यदि पसंद किया जाए, तो आप EfiGuard को उस ESP पर स्थापित कर सकते हैं जिस पर Windows पहले से स्थापित है। हालांकि, यह कुछ अधिक जटिल है क्योंकि आपको लोडर के लिए एक UEFI बूट प्रविष्टि जोड़ने की आवश्यकता होगी।

ऐसा करने के लिए, mountvol X: /S का उपयोग करके ESP को X: पर माउंट करें और उपरोक्त चरणों का पालन करें, लेकिन लोडर का नाम न बदलें और बस दोनों फ़ाइलों को X:/EFI/Boot में कॉपी करें। उसके बाद, आपको UEFI Shell से bcfg boot addp 0 Loader.efi "EfiGuard" का उपयोग करके मैन्युअल रूप से एक UEFI बूट प्रविष्टि जोड़ने की आवश्यकता होगी, या वैकल्पिक रूप से efibootmgr (Linux), EasyUEFI (Windows), या इसी तरह का उपयोग करें।

ड्राइवर स्थापित करना

  1. mountvol X: /S का उपयोग करके ESP को X: पर माउंट करें।
  2. EfiGuardDxe.efi को X:/EFI/Boot/EfiGuardDxe.efi पर कॉपी करें।
  3. UEFI Shell में बूट करें और एक UEFI ड्राइवर प्रविष्टि जोड़ें: bcfg driver add 0 EfiGuardDxe.efi "EfiGuardDxe"।
  4. Windows अब बूट होना चाहिए, और आपको बूट के दौरान EfiGuard संदेश दिखाई देने चाहिए।
  5. यदि आपने SetVariable हुक (डिफ़ॉल्ट) के साथ बूट किया है, तो बूट के बाद DSE को अक्षम करने के लिए एक व्यवस्थापक कमांड प्रॉम्प्ट से EfiDSEFix.exe -d चलाएं, या विकल्पों की पूरी सूची देखने के लिए EfiDSEFix.exe चलाएं।

नोट: आपके फर्मवेयर के आधार पर, आपको चरण 3 में "add" के बजाय "addp" का उपयोग करने की आवश्यकता हो सकती है। VirtualBox को इसकी आवश्यकता होने के लिए जाना जाता है, और संभवतः कुछ मदरबोर्ड फर्मवेयर भी ऐसा करते हैं।

नोट: कुछ बहुत पुराने या गैर-अनुपालक फर्मवेयर इस स्थापना विधि का बिल्कुल भी समर्थन नहीं कर सकते हैं। ऐसे सिस्टम पर आपके पास लोडर का उपयोग करने के अलावा कोई विकल्प नहीं होगा।

संकलन

EfiGuardDxe और लोडर संकलित करना

EfiGuard को बनाने के लिए EDK2 की आवश्यकता होती है। यदि आपने EDK2 स्थापित नहीं किया है, तो पहले Getting Started with EDK2 में दिए गए चरणों का पालन करें क्योंकि EDK2 बिल्ड सिस्टम सेट अप करना काफी जटिल है। यह खंड मानता है कि आपके पास एक workspace निर्देशिका है जिस पर आपका WORKSPACE पर्यावरण चर इंगित करता है, जिसमें workspace/edk2 में EDK2 की एक प्रति चेक आउट की गई है। समर्थित कंपाइलर MSVC, Clang, GCC और ICC हैं।

  1. EfiGuard रिपॉजिटरी को workspace/edk2/EfiGuardPkg में क्लोन करें।
  2. एक प्रॉम्प्ट या शेल खोलें जो EDK2 के लिए पर्यावरण चर सेट करता है।
  3. build -a X64 -t VS2019 -p EfiGuardPkg/EfiGuardPkg.dsc -b RELEASE चलाएं, VS2019 के लिए अपने टूलचेन को प्रतिस्थापित करें।

यह workspace/Build/EfiGuard/RELEASE_VS2019/X64 में EfiGuardDxe.efi और Loader.efi उत्पन्न करेगा।

EfiDSEFix संकलित करना

EfiDSEFix को बनाने के लिए Visual Studio की आवश्यकता होती है।

  1. EfiGuard.sln खोलें और समाधान बनाएं।

आउटपुट बाइनरी EfiDSEFix.exe Application/EfiDSEFix/bin में होगी।

Visual Studio समाधान में EfiGuardDxe.efi और Loader.efi के लिए प्रोजेक्ट भी शामिल हैं जिनका उपयोग VisualUefi के साथ किया जा सकता है, लेकिन ये प्रोजेक्ट डिफ़ॉल्ट रूप से नहीं बनाए जाते हैं क्योंकि वे अतिरिक्त कोड के बिना लिंक नहीं होंगे, और बिल्ड आउटपुट EDK2 द्वारा उत्पादित की तुलना में निम्न (बड़ा) होगा। Loader.efi VisualUefi में UefiBootManagerLib की कमी के कारण बिल्कुल भी लिंक नहीं होगा। इस प्रकार ये प्रोजेक्ट फ़ाइलें केवल विकास सहायता के रूप में अभिप्रेत हैं और EFI फ़ाइलों को अभी भी EDK2 के साथ संकलित किया जाना चाहिए। इस उद्देश्य के लिए VisualUefi सेट अप करने के लिए, रिपॉजिटरी को workspace/VisualUefi में क्लोन करें और EfiGuard.sln खोलें।

आर्किटेक्चर

architecture जबकि EfiGuard एक UEFI बूटकिट है, यह एक के रूप में शुरू नहीं हुआ था। EfiGuard मूल रूप से NT पर चलने वाला एक ऑन-डिस्क पैचर था (UPGDSED के समान), जिसका उद्देश्य PDB प्रतीकों और संस्करण-विशिष्ट हस्ताक्षरों के उपयोग के विपरीत, एक डिसेसम्बलर-आधारित दृष्टिकोण की व्यवहार्यता का परीक्षण करना था। PatchNtoskrnl.c अभी भी इस मूल डिज़ाइन जैसा दिखता है। केवल इस दृष्टिकोण के सफल साबित होने के बाद, एक वर्ष से अधिक के Windows अपडेट में कोड में कोई संशोधन की आवश्यकता नहीं थी, तब UEFI क्षमताओं और उपयोग में आसानी को और बेहतर बनाने के तरीके के रूप में चित्र में आया।

बूटकिट दृष्टिकोण द्वारा प्रदान किए गए कुछ लाभों में शामिल हैं:

  • कर्नेल या बूटलोडर में डिस्क पर कोई संशोधन आवश्यक नहीं।
  • bcdedit का उपयोग करके बूट कॉन्फ़िगरेशन स्टोर को संशोधित करने की आवश्यकता नहीं।
  • ImgpValidateImageHash को पैच करने की आवश्यकता नहीं (हालांकि यह अभी भी वैकल्पिक रूप से किया जाता है)।
  • विडंबना यह है कि बूटकिट का उपयोग Secure Boot को सक्षम करने की अनुमति देता है, बशर्ते आपके पास प्लेटफ़ॉर्म कुंजी हो और आप अपने व्यक्तिगत प्रमाणपत्र को db स्टोर में जोड़ने में सक्षम हों।

बूटकिट के रूप में EfiGuard का प्रारंभिक अवतार dude719 के UEFI-Bootkit को Windows 10 के हाल के संस्करणों के साथ काम करने का एक प्रयास था, क्योंकि यह पुराना हो गया था और नवीनतम संस्करणों पर काम नहीं करता (UPGDSED की तरह, जो अक्सर संस्करण-संवेदनशील पैटर्न स्कैन के कारण होता है)। जबकि मैंने अंततः इसे काम करवा लिया, मैं परिणाम से असंतुष्ट था, मुख्यतः OslArchTransferToKernel को हुक करने के विकल्प के कारण, जो जैसा कि ऊपर बताया गया है, संरक्षित मोड में और ExitBootServices कॉल होने के बाद निष्पादित होता है। इसके अलावा, मैं केवल Windows 10 के कुछ संस्करणों को पैच करने में सक्षम होने से संतुष्ट नहीं था; मैं चाहता था कि बूटकिट आज तक जारी Windows x64 के हर EFI-संगत संस्करण पर काम करे। इस कारण से, मैंने निम्नलिखित उद्देश्यों के साथ बूटकिट को खरोंच से फिर से लिखा:

  • बूट के प्रत्येक चरण में पैच जानकारी प्रदान करना जिसमें स्वयं कर्नेल पैच भी शामिल है।
  • Windows संस्करणों के सभी EFI-संगत संस्करणों का समर्थन करना (लेखन के समय)।
  • बूटकिट और वैकल्पिक रूप से कर्नेल बैकडोर के आलसी तत्कालीकरण को सक्षम करना, जो EFI सिस्टम टेबल हुक द्वारा प्राप्त किया गया है।

अंतिम EfiGuard बूट प्रवाह का एक बड़ा चित्र अवलोकन ऊपर दिए गए आरेख में दिखाया गया है। व्यक्तिगत घटक-विशिष्ट हुक और पैच के लिए, स्रोत फ़ाइलों में EfiGuardPkg/PatchXxx.c देखें। ड्राइवर आरंभीकरण/अनलोडिंग और EFI बूट और रनटाइम सेवाओं के हुक के लिए, EfiGuardDxe.c देखें।

श्रेय

  • UPGDSED hfiref0x और Fyyre द्वारा
  • Zydis zyantific द्वारा
  • Uninformed द्वारा PatchGuard v1, v2 और v3 पर लेख, Skywing द्वारा
  • UEFI-Bootkit dude719 द्वारा
  • ReactOS

लाइसेंस

EfiGuard GPLv3 के तहत लाइसेंस प्राप्त है। EfiGuardDxe/Zydis उपमॉड्यूल में फ़ाइलें MIT लाइसेंस के तहत लाइसेंस प्राप्त हैं।

टूल डाउनलोड करें
पहले जैसा ही
लोडरकहीं भीआवश्यक नहीं✔️Windows