
विंडोज पीई लोडर का अनुकरण करके DLL हाईजैकिंग कमजोरियों की पहचान करता है, शेलकोड पेलोड के साथ हथियारबंद DLL उत्पन्न करता है, और UAC ऑटो-एलिवेशन बाईपास का पता लगाता है।
Siofra एक उपकरण है जिसे Windows प्रोग्रामों में DLL हाइजैकिंग (DLL hijacking) कमजोरियों की पहचान करने और उनका शोषण करने के लिए डिज़ाइन किया गया है। यह Windows लोडर का अनुकरण करने में सक्षम है ताकि डिस्क पर मौजूद PE के सभी निर्भरताओं (और संबंधित कमजोरियों) की दृश्यता प्राप्त हो सके, या वैकल्पिक रूप से एक सक्रिय प्रक्रिया के अनुरूप मेमोरी में मौजूद इमेज फ़ाइल की। अधिक महत्वपूर्ण बात यह है कि इस उपकरण में डायनेमिक शेलकोड निर्माण के साथ PE संक्रमण के माध्यम से इस प्रकार की कमजोरियों का शोषण करने के लिए DLL आसानी से उत्पन्न करने की क्षमता है। ये संक्रमित DLL, कोड (DllMain, निर्यातित फ़ंक्शन) के साथ-साथ किसी DLL के संसाधनों को बनाए रखते हैं ताकि उन्हें लोड करने वाले एप्लिकेशन की कार्यक्षमता निर्बाध रूप से संरक्षित रहे, साथ ही शोधकर्ता को एक निष्पादन योग्य पेलोड निर्दिष्ट करने की अनुमति मिलती है जिसे या तो एक अलग प्रक्रिया के रूप में चलाया जा सकता है या लक्ष्य में एक मॉड्यूल के रूप में लोड किया जा सकता है। इसके अतिरिक्त, उपकरण में UAC बाइपास कमजोरियों को स्कैन करने के लिए UAC ऑटो-एलिवेशन मानदंडों को उपरोक्त कार्यक्षमता के साथ संयोजित करने की स्वचालित विधियाँ शामिल हैं।
वर्तमान में, बहुत बड़ी संख्या में कमजोरियाँ हैं जिन्हें यह उपकरण उजागर करता है। इस उपकरण का परीक्षण करते समय मुझे केवल कुछ ही एप्लिकेशन मिले जो कमजोर नहीं थे, उन सैकड़ों में से जिनके विरुद्ध मैंने परीक्षण किया। ध्यान दें कि SafeDllSearchMode के बावजूद इन कमजोरियों का शोषण किया जा सकता है। एक सामान्य ग़लतफ़हमी "वर्तमान निर्देशिका" (जो SafeDllSearchMode के साथ तय होती है) को "एप्लिकेशन निर्देशिका" (वह फ़ोल्डर जिसमें .exe स्वयं होता है) के साथ भ्रमित करने से उत्पन्न होती है। Windows प्रोग्रामों में वर्तमान में मौजूद DLL हाइजैकिंग कमजोरियों का विशाल बहुमत एप्लिकेशन निर्देशिका से उत्पन्न होता है (जो Windows खोज क्रम में पहले आती है)। कुछ मुख्य बातें नीचे उपकरण में स्कैनर द्वारा उत्पादित आउटपुट में सूचीबद्ध हैं। इन कमजोरियों का अंतिम बार परीक्षण जुलाई 2017 के मध्य में किया गया था।
Siofra64.exe --mode file-scan -f "c:\Program Files\Internet Explorer\iexplore.exe" --enum-dependency --dll-hijack
======== c:\Program Files\Internet Explorer\iexplore.exe [64-bit PE] ======== iexplore.exe USER32.dll [KnownDLL] win32u.dll [Base] api-ms-win-core-privateprofile-l1-1-1.dll [API set] kernel32.dll [KnownDLL] GDI32.dll [KnownDLL] api-ms-win-gdi-internal-uap-l1-1-0.dll [API set] gdi32full.dll [Base] msvcp_win.dll [Base] api-ms-win-crt-string-l1-1-0.dll [API set] ucrtbase.dll [Base] msvcrt.dll [KnownDLL] api-ms-win-downlevel-shell32-l1-1-0.dll [API set] shcore.dll [KnownDLL] RPCRT4.dll [KnownDLL] combase.dll [KnownDLL] bcryptPrimitives.dll [Base] ADVAPI32.dll [KnownDLL] api-ms-win-eventing-controller-l1-1-0.dll [API set] sechost.dll [KnownDLL] iertutil.dll [!]
[!] Module iertutil.dll vulnerable at c:\Program Files\Internet Explorer\iertutil.dll (real path: C:\WINDOWS\system32\iertutil.dll)
Siofra64.exe --mode file-scan -f "c:\Program Files\Windows Defender\MpCmdRun.exe" --enum-dependency --dll-hijack
======== c:\Program Files\Windows Defender\MpCmdRun.exe [64-bit PE] ======== MpCmdRun.exe msvcrt.dll [KnownDLL] KERNEL32.dll [KnownDLL] OLEAUT32.dll [KnownDLL] msvcp_win.dll [Base] api-ms-win-crt-string-l1-1-0.dll [API set] ucrtbase.dll [Base] combase.dll [KnownDLL] RPCRT4.dll [KnownDLL] bcryptPrimitives.dll [Base] ADVAPI32.dll [KnownDLL] api-ms-win-eventing-controller-l1-1-0.dll [API set] sechost.dll [KnownDLL] OLE32.dll [KnownDLL] GDI32.dll [KnownDLL] api-ms-win-gdi-internal-uap-l1-1-0.dll [API set] gdi32full.dll [Base] USER32.dll [KnownDLL] win32u.dll [Base] SspiCli.dll [!] mpclient.dll [!] CRYPT32.dll [Base] MSASN1.dll [Base] WINTRUST.dll [Base]
[!] Module SspiCli.dll vulnerable at c:\Program Files\Windows Defender\SspiCli.dll (real path: C:\WINDOWS\system32\SspiCli.dll)
Siofra64.exe --mode file-scan -f "c:\WINDOWS\System32\wbem\wmiprvse.exe" --enum-dependency --dll-hijack
======== c:\WINDOWS\System32\wbem\wmiprvse.exe [64-bit PE] ======== wmiprvse.exe msvcrt.dll [KnownDLL] FastProx.dll [!] wbemcomn.dll [!] bcrypt.dll [!] WS2_32.dll [KnownDLL] api-ms-win-eventing-obsolete-l1-1-0.dll [API set] sechost.dll [KnownDLL] RPCRT4.dll [KnownDLL] api-ms-win-core-heap-obsolete-l1-1-0.dll [API set] kernel32.dll [KnownDLL] NCObjAPI.DLL [!]
[!] Module wbemcomn.dll vulnerable at c:\WINDOWS\System32\wbem\wbemcomn.dll (real path: C:\WINDOWS\system32\wbemcomn.dll) [!] Module bcrypt.dll vulnerable at c:\WINDOWS\System32\wbem\bcrypt.dll (real path: C:\WINDOWS\system32\bcrypt.dll) [!] Module NCObjAPI.DLL vulnerable at c:\WINDOWS\System32\wbem\NCObjAPI.DLL (real path: C:\WINDOWS\system32\NCObjAPI.DLL)
Siofra64.exe --mode file-scan -f "c:\WINDOWS\System32\SearchProtocolHost.exe" --enum-dependency --dll-hijack --explicit-loadlibrary
======== c:\WINDOWS\System32\SearchProtocolHost.exe [64-bit PE] ======== SearchProtocolHost.exe msvcrt.dll [KnownDLL] TQUERY.DLL [!] OLEAUT32.dll [KnownDLL] msvcp_win.dll [Base] api-ms-win-crt-string-l1-1-0.dll [API set] ucrtbase.dll [Base] combase.dll [KnownDLL] RPCRT4.dll [KnownDLL] api-ms-win-core-heap-obsolete-l1-1-0.dll [API set] kernel32.dll [KnownDLL] bcryptPrimitives.dll [Base] cryptdll.dll [!] api-ms-win-security-lsalookup-l2-1-1.dll [API set] advapi32.dll [KnownDLL] api-ms-win-eventing-controller-l1-1-0.dll [API set] sechost.dll [KnownDLL] api-ms-win-shell-namespace-l1-1-0.dll [API set] windows.storage.dll [Base] api-ms-win-shlwapi-winrt-storage-l1-1-1.dll [API set] shlwapi.dll [KnownDLL] GDI32.dll [KnownDLL] api-ms-win-gdi-internal-uap-l1-1-0.dll [API set] gdi32full.dll [Base] USER32.dll [KnownDLL] win32u.dll [Base] api-ms-win-appmodel-state-l1-2-0.dll [API set] kernel.appcore.dll [Base] api-ms-win-shcore-path-l1-1-0.dll [API set] shcore.dll [KnownDLL] api-ms-win-power-base-l1-1-0.dll [API set] powrprof.dll [Base] profapi.dll [Base] msfte.dll [Potential explicit Unicode] [!] msTracer.dll [Potential explicit Unicode] [!] Msidle.dll [Potential explicit Unicode] [!] winhttp.dll [Potential explicit Unicode] [!]
[!] Module msfte.dll vulnerable at C:\WINDOWS\system32\msfte.dll (real path: Unknown) [!] Module msTracer.dll vulnerable at C:\WINDOWS\system32\msTracer.dll (real path: Unknown)
इस उपकरण की क्षमताओं को 3 अलग-अलग श्रेणियों में विभाजित किया जा सकता है, जिनमें से प्रत्येक इस उपकरण के निष्पादन मोड में से एक के अनुरूप है।