
एक स्वचालित DLL हाइजैकिंग भेद्यता खोज उपकरण जो API हुकिंग के माध्यम से लोड-टाइम और रनटाइम पर PE बाइनरी का विश्लेषण करता है, लापता DLLs की गणना करता है और दुर्भावनापूर्ण प्रतिरूपण का परीक्षण करता है।
aDLL एक बाइनरी विश्लेषण उपकरण है जो DLL हाईजैकिंग कमजोरियों की स्वचालित खोज पर केंद्रित है। यह उपकरण मेमोरी में लोड किए गए बाइनरी की इमेज का विश्लेषण करता है ताकि लोड-टाइम पर लोड किए गए DLLs की खोज की जा सके, और LoadLibrary/LoadLibraryEx फंक्शन्स के कॉल को इंटरसेप्ट करने के लिए Microsoft Detours लाइब्रेरी का उपयोग करता है ताकि रन-टाइम पर लोड किए गए DLLs का विश्लेषण किया जा सके। इसका उद्देश्य उन DLLs की सूची प्राप्त करना है जो निष्पादन योग्य फ़ाइल द्वारा उन फ़ोल्डरों में नहीं पाए जाते जहाँ उन्हें खोजा जाता है।
aDLL का उपयोग शुरू करने के लिए Binaries फ़ोल्डर में एक संकलित निष्पादन योग्य फ़ाइल उपलब्ध है। यह अनुशंसा की जाती है कि उस संस्करण का उपयोग करें जिसकी आर्किटेक्चर (32-बिट या 64-बिट) विश्लेषण किए जाने वाले निष्पादन योग्य के संस्करण से मेल खाती हो।
उपकरण के सही कामकाज के लिए, यह आवश्यक है कि DLLs "hook32", "hook64", "informer32" और "informer64" निष्पादन योग्य aDLL.exe के समान निर्देशिका में स्थित हों।
aDLL को Windows 10 सिस्टम पर विकसित और परीक्षण किया गया है। यदि सिस्टम पुराना है और/या Visual Studio स्थापित नहीं है, तो संभव है कि उपकरण "VCRUNTIME140.dll not found" जैसी त्रुटि दे। इस मामले में Visual C++ Redistributable अपडेट स्थापित किया जाना चाहिए। अपडेट यहाँ पाया जा सकता है: https://www.microsoft.com/es-ES/download/details.aspx?id=49984
उपकरण को संशोधित/पुनः संकलित करने के लिए Visual Studio 2015 या बाद के संस्करण का उपयोग अनुशंसित है। Visual Studio समाधान में तीन प्रोजेक्ट शामिल हैं: aDLL, Hook और Informer। _ -aDLL: एक निष्पादन योग्य के रूप में संकलित किया जाना चाहिए। यदि लिंकिंग त्रुटियाँ होती हैं, तो Visual Studio लिंकर का उपयोग करके shlwapi.lib लाइब्रेरी को अतिरिक्त निर्भरता के रूप में जोड़ना आवश्यक होगा।_ _ -Hook: विश्लेषण किए जाने वाले निष्पादन योग्य के समान आर्किटेक्चर के साथ DLL के रूप में संकलित किया जाना चाहिए। परिणामी Hook फ़ाइल को उचित रूप से hook32.dll या hook64.dll नाम दिया जाना चाहिए। यदि आप दोनों आर्किटेक्चर के निष्पादन योग्य का विश्लेषण करना चाहते हैं, तो दोनों DLLs को aDLL.exe के समान निर्देशिका में होना आवश्यक होगा।_ _ -Informer: Hook के समान। DLL के रूप में संकलित किया जाना चाहिए और informer32.dll या informer64.dll नाम दिया जाना चाहिए।_
उपकरण में उपलब्ध विकल्पों का संक्षिप्त विवरण स्क्रीन पर प्रिंट करने के लिए -h विकल्प है।
.\aDLL -h
एक सामान्य उपयोग उदाहरण के रूप में, aDLL को कम से कम विश्लेषण किए जाने वाले निष्पादन योग्य का पथ प्राप्त करना चाहिए।
.\aDLL -e "C:\System32\notepad.exe"
विकल्प:
-h Displays the tool's help with a brief description of each option.
-e Specifies the path to the executable to be analyzed by aDLL.
-t Specifies a path to a text file with a list of executable paths.
-o Specifies a path to a directory in which a report will be stored for each executable scanned.
-m Searches for the executable's manifest and displays it on the screen. aDLL searches for the manifest embedded in the binary, it will not find the manifest if it exists as an external file.
-w Defines the number of seconds the executable process will be kept open while searching for DLLs loaded at runtime. The default time is 20 seconds.
-aDLL will automatically test if a malicious DLL is executed by impersonating the legitimate DLL in the search order if a candidate DLL has been found.
-d Used in conjunction with the -a option, this option allows you to select a path to a DLL that will be used as the malicious DLL.
-r Each DLL imported by the executable can in turn import other DLLs as dependencies. A search "n" times recursive will be made on all those DLLs found by aDLL that are not redirected (ApiSetSchema or WinSxS) and do not belong to the list of Known DLL of the system.
Hook DLL, ctxis के DLLHSC के विचार पर आधारित है: https://github.com/ctxis/DLLHSC
आप लाइसेंस के बारे में अधिक जानकारी यहाँ पा सकते हैं: licenses.txt
सॉफ़्टवेयर "जैसा है" प्रदान किया गया है, बिना किसी प्रकार की वारंटी, व्यक्त या निहित, जिसमें व्यापारिकता, किसी विशेष उद्देश्य के लिए उपयुक्तता और उल्लंघन न होने की वारंटी शामिल है लेकिन इन्हीं तक सीमित नहीं है। किसी भी स्थिति में लेखक या कॉपीराइट धारक किसी भी दावे, क्षति या अन्य देयता के लिए उत्तरदायी नहीं होंगे, चाहे वह अनुबंध की कार्रवाई में हो, अपकृत्य में हो या अन्यथा, सॉफ़्टवेयर से या सॉफ़्टवेयर के उपयोग या अन्य लेन-देन से उत्पन्न हो। जब भी आप किसी लाइसेंस की सूचना वाले रिपॉजिटरी में योगदान करते हैं, तो आप अपने योगदान को उन्हीं शर्तों के तहत लाइसेंस देते हैं, और आप सहमत हैं कि आपके पास उन शर्तों के तहत अपने योगदान को लाइसेंस देने का अधिकार है। यदि आपके पास अपने योगदान को अलग-अलग शर्तों के तहत लाइसेंस देने के लिए कोई अलग समझौता है, जैसे कि योगदानकर्ता लाइसेंस समझौता, तो वह समझौता प्रबल होगा।