
يحاكي مُحمِّل PE الخاص بنظام ويندوز لتحديد ثغرات اختطاف DLL، ويُنشئ ملفات DLL مسلَّحة بحمولات shellcode، ويكتشف تجاوزات الترقية التلقائية لـ UAC.
Siofra هي أداة مصممة لتحديد واستغلال ثغرات اختطاف DLL في برامج Windows. وهي قادرة على محاكاة محمّل Windows لإعطاء رؤية حول جميع التبعيات (والثغرات المقابلة) لملف PE على القرص، أو بدلاً من ذلك ملف صورة في الذاكرة يقابل عملية نشطة. والأهم من ذلك، أن الأداة لديها القدرة على إنشاء ملفات DLL بسهولة لاستغلال هذه الأنواع من الثغرات عبر عدوى PE مع إنشاء شيلكود ديناميكي. تحتفظ ملفات DLL المصابة هذه بالكود (DllMain، الدوال المُصدَّرة) بالإضافة إلى موارد DLL للحفاظ بسلاسة على وظائف التطبيق الذي يقوم بتحميلها، وفي الوقت نفسه تسمح للباحث بتحديد حمولة قابلة للتنفيذ إما لتُشغَّل كعملية منفصلة أو لتُحمَّل في الهدف كوحدة نمطية. بالإضافة إلى ذلك، تحتوي الأداة على طرق آلية لدمج معايير الارتقاء التلقائي في UAC مع الوظائف المذكورة أعلاه من أجل فحص ثغرات تجاوز UAC.
في الوقت الحالي، هناك عدد كبير جداً من الثغرات التي تكشفها هذه الأداة. أثناء اختبار هذه الأداة، واجهت فقط عدداً قليلاً من التطبيقات التي لم تكن معرضة للخطر من بين مئات التطبيقات التي اختبرتها. لاحظ أن هذه الثغرات يمكن استغلالها على الرغم من SafeDllSearchMode. من المفاهيم الخاطئة الشائعة الخلط بين "الدليل الحالي" (الذي يتم تثبيته مع SafeDllSearchMode) و"دليل التطبيق" (المجلد الذي يحتوي على ملف .exe نفسه). الغالبية العظمى من ثغرات اختطاف DLL الموجودة حالياً في برامج Windows تنبع من دليل التطبيق (الذي يأتي أولاً في ترتيب بحث 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-0.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 فئات منفصلة، تتوافق كل منها مع أحد أوضاع التشغيل لهذه الأداة.