
UEFI-आधारित प्लेटफार्मों के लिए पहला ओपन सोर्स और सार्वजनिक रूप से उपलब्ध System Management Mode बैकडोर। विभिन्न SMM प्रयोगों के लिए एक सामान्य-उद्देश्य प्लेग्राउंड के रूप में उपयोगी।
SMM बैकडोर UEFI आधारित प्लेटफ़ॉर्म के लिए
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
यह एक पुराना (legacy) परित्यक्त प्रोजेक्ट है, बैकडोर के वर्तमान संस्करण के लिए SMM Backdoor Next Gen प्रोजेक्ट पेज और उसका दस्तावेज़ देखें:
https://github.com/Cr4sh/SmmBackdoorNg
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
इस प्रोजेक्ट के बारे में अधिक जानकारी के लिए कृपया निम्नलिखित लेख पढ़ें:
http://blog.cr4.sh/2015/07/building-reliable-smm-backdoor-for-uefi.html
रिपॉज़िटरी सामग्री:
SmmBackdoor.py -- Python प्रोग्राम जो UEFI DXE ड्राइवर की PE छवि को बैकडोर कोड से संक्रमित करने, SMRAM पढ़ने के लिए स्थापित बैकडोर के साथ संवाद करने और कुछ अन्य उपयोगी कार्य करने की अनुमति देता है।
SmmBackdoor/ -- UEFI भाग का स्रोत कोड जो सिस्टम मैनेजमेंट मोड में चलता है।
SmmBackdoor.efi, SmmBackdoor.pdb -- UEFI भाग बाइनरी और उसके डिबग प्रतीक।
smm_call/ -- प्रूफ ऑफ कॉन्सेप्ट Linux प्रोग्राम जो स्थापित बैकडोर के साथ इंटरैक्ट करके अपनी प्रक्रिया के लिए रूट विशेषाधिकार प्राप्त करता है।
SmmBackdoor प्रोजेक्ट बनाने के लिए आपके पास Visual Studio 2008 वाली Windows मशीन और EDK2 स्रोत कोड (https://github.com/tianocore/edk2) होना चाहिए।
चरण-दर-चरण निर्देश:
SmmBackdoor उपनिर्देशिका को EDK2 स्रोत कोड निर्देशिका में कॉपी करें।
Conf/target.txt फ़ाइल को संपादित करें और ACTIVE_PLATFORM प्रॉपर्टी का मान OvmfPkg/OvmfPkgX64.dsc पर सेट करें।
OvmfPkg/OvmfPkgX64.dsc को संपादित करें और फ़ाइल के अंत में निम्नलिखित पंक्तियाँ जोड़ें:
#
# 3-rd party drivers
#
SmmBackdoor/SmmBackdoor.inf {
<LibraryClasses>
DebugLib|OvmfPkg/Library/PlatformDebugLibIoPort/PlatformDebugLibIoPort.inf
MemoryAllocationLib|MdePkg/Library/UefiMemoryAllocationLib/UefiMemoryAllocationLib.inf
}
4. Visual Studio 2008 कमांड प्रॉम्प्ट चलाएँ और EDK2 निर्देशिका पर cd करें।
बिल्ड वातावरण कॉन्फ़िगर करने और आवश्यक बाइनरी डाउनलोड करने के लिए Edk2Setup.bat --pull निष्पादित करें।
cd SmmBackdoor && build
संकलन के बाद परिणामी PE छवि फ़ाइल Build/OvmfX64/DEBUG_VS2008x86/X64/SmmBackdoor/SmmBackdoor/OUTPUT/SmmBackdoor.efi पर बनाई जाएगी।
Intel DQ77KB मदरबोर्ड के उदाहरण पर SmmBackdoor.efi को इन्फेक्टर पेलोड के रूप में चलाने के लिए:
हार्डवेयर SPI प्रोग्रामर का उपयोग करके मदरबोर्ड फ़र्मवेयर डंप करें।
डंप की गई फ़्लैश छवि को UEFITool में खोलें।
GUID = 26A2481E-4424-46A2-9943-CC4039EAD8F8 वाली FFS फ़ाइल की PE छवि निकालें और इसे extracted.bin फ़ाइल में सहेजें।
SmmBackdoor.py का उपयोग करके निकाली गई छवि को SmmBackdoor.efi से संक्रमित करें:
$ python SmmBackdoor.py --infect extracted.bin --output infected.bin --payload SmmBackdoor.efi
UEFITool में मूल PE छवि को infected.bin से बदलें।
संशोधित फ़्लैश छवि को फ़ाइल में सहेजें और इसे प्रोग्रामर के साथ मदरबोर्ड ROM में लिखें।
बैकडोर में डिबग आउटपुट क्षमताएँ भी हैं जो स्क्रीन पर DXE चरण डिबग संदेश देखने और COM पोर्ट पर रनटाइम चरण डिबग संदेश प्राप्त करने की अनुमति देती हैं।
SmmBackdoor.py का उपयोग करने के लिए आपको pefile Python लाइब्रेरी (https://pypi.python.org/pypi/pefile) और CHIPSEC फ्रेमवर्क (https://github.com/chipsec/chipsec) को Python बाइंडिंग सहित स्थापित करना होगा।
समर्थित कमांड:
SmmBackdoor.py --infect <source_path> --output <dest_path> --payload <payload_path> - निर्दिष्ट बैकडोर कोड के साथ DXE ड्राइवर की PE छवि को संक्रमित करें।
SmmBackdoor.py --test - बैकडोर की उपस्थिति की जाँच करें और BACKDOOR_INFO संरचना से स्थिति जानकारी प्रिंट करें।
SmmBackdoor.py --dump-smram - सभी उपलब्ध SMRAM क्षेत्रों को फ़ाइलों में डंप करें।
SmmBackdoor.py --read-phys
- दिए गए पते पर भौतिक मेमोरी पेज का हेक्साडेसिमल डंप प्रिंट करें।SmmBackdoor.py --read-virt
- दिए गए पते पर वर्चुअल मेमोरी पेज का हेक्साडेसिमल डंप प्रिंट करें।SmmBackdoor.py --timer-enable - आवधिक टाइमर SMI सक्षम करें जो smm_call के लिए आवश्यक है (डिफ़ॉल्ट रूप से यह सक्षम है)।
SmmBackdoor.py --timer-disable - आवधिक टाइमर SMI अक्षम करें।
smm_call उपयोग:
smm_call [<arg_1> [<arg_2>]] - निर्दिष्ट नियंत्रण कोड और तर्क SMM बैकडोर को भेजें।
-
smm_call --privesc - बैकडोर से कॉलर प्रक्रिया के लिए रूट विशेषाधिकार देने और कमांड शेल चलाने के लिए कहें।
कृपया ध्यान दें, यह कोड केवल Intel DQ77KB मदरबोर्ड के साथ परीक्षण किया गया था। आप इसे किसी अन्य UEFI संगत हार्डवेयर पर चलाने का प्रयास कर सकते हैं, लेकिन बैकडोर की कुछ विशेषताएँ काम नहीं कर सकती हैं।
द्वारा लिखित:
Dmytro Oleksiuk (aka Cr4sh)