Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
siofra — يحاكي مُحمِّل PE الخاص بنظام ويندوز لتحديد ثغرات اختطاف DLL، ويُنشئ ملفات DLL مسلَّحة بحمولات shellcode، ويكتشف تجاوزات الترقية التلقائية لـ UAC. | Kitploit
أدوات/GitHubGitHub/cybereason/siofra
تصعيد الامتيازاتماسحات الثغرات الأمنيةتوليد الحمولةتحليل الثغرات الأمنيةتحليل الملفات الثنائيةتوليد شيفرة القشرةاستغلال الملفات الثنائية
GitHubcybereason/siofra

siofra

يحاكي مُحمِّل PE الخاص بنظام ويندوز لتحديد ثغرات اختطاف DLL، ويُنشئ ملفات DLL مسلَّحة بحمولات shellcode، ويكتشف تجاوزات الترقية التلقائية لـ UAC.

عرض المستودع
511856منذ 8 سنواتتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

الملخص

Siofra هي أداة مصممة لتحديد واستغلال ثغرات اختطاف DLL في برامج Windows. وهي قادرة على محاكاة محمّل Windows لإعطاء رؤية حول جميع التبعيات (والثغرات المقابلة) لملف PE على القرص، أو بدلاً من ذلك ملف صورة في الذاكرة يقابل عملية نشطة. والأهم من ذلك، أن الأداة لديها القدرة على إنشاء ملفات DLL بسهولة لاستغلال هذه الأنواع من الثغرات عبر عدوى PE مع إنشاء شيلكود ديناميكي. تحتفظ ملفات DLL المصابة هذه بالكود (DllMain، الدوال المُصدَّرة) بالإضافة إلى موارد DLL للحفاظ بسلاسة على وظائف التطبيق الذي يقوم بتحميلها، وفي الوقت نفسه تسمح للباحث بتحديد حمولة قابلة للتنفيذ إما لتُشغَّل كعملية منفصلة أو لتُحمَّل في الهدف كوحدة نمطية. بالإضافة إلى ذلك، تحتوي الأداة على طرق آلية لدمج معايير الارتقاء التلقائي في UAC مع الوظائف المذكورة أعلاه من أجل فحص ثغرات تجاوز UAC.

الثغرات

في الوقت الحالي، هناك عدد كبير جداً من الثغرات التي تكشفها هذه الأداة. أثناء اختبار هذه الأداة، واجهت فقط عدداً قليلاً من التطبيقات التي لم تكن معرضة للخطر من بين مئات التطبيقات التي اختبرتها. لاحظ أن هذه الثغرات يمكن استغلالها على الرغم من SafeDllSearchMode. من المفاهيم الخاطئة الشائعة الخلط بين "الدليل الحالي" (الذي يتم تثبيته مع SafeDllSearchMode) و"دليل التطبيق" (المجلد الذي يحتوي على ملف .exe نفسه). الغالبية العظمى من ثغرات اختطاف DLL الموجودة حالياً في برامج Windows تنبع من دليل التطبيق (الذي يأتي أولاً في ترتيب بحث Windows). فيما يلي بعض النقاط البارزة في المخرجات التي ينتجها الماسح الضوئي في الأداة. آخر مرة اختُبرت فيها هذه الثغرات كانت في منتصف يوليو 2017.

  • اسم التطبيق: Internet Explorer
  • تم الاختبار على نظام التشغيل: Windows 10 x64 Home/Pro
  • الأمر/المخرجات:

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)

  • اسم التطبيق: Windows Defender
  • تم الاختبار على نظام التشغيل: Windows 10 x64 Home/Pro
  • الأمر/المخرجات:

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)

  • اسم التطبيق: WMI
  • تم الاختبار على نظام التشغيل: Windows 10 x64 Home/Pro
  • الأمر/المخرجات:

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)

  • اسم التطبيق: Windows Search Indexer/Search Protocol Host
  • تم الاختبار على نظام التشغيل: Windows 10 x64 Home/Pro
  • الأمر/المخرجات:

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 فئات منفصلة، تتوافق كل منها مع أحد أوضاع التشغيل لهذه الأداة.

وضع العدوى

عند التشغيل في وضع العدوى، تكون الأداة قادرة على إنشاء نسخ مصابة من ملفات DLL ذات 32 و64 بت. يمكن لهذه الملفات المصابة اختطاف تدفق التنفيذ لتطبيق مستهدف عند تحميلها أثناء تهيئة العملية، مما يؤدي إما إلى تحميل حمولة DLL أو تشغيل ملف تنفيذي للحمولة قبل تنفيذ نقطة دخول التطبيق المستهدف.

وضع فحص الملفات

عند تشغيل وضع فحص الملفات، يمكن تمرير مسار ملف تنفيذي أو مجلد (سيتم البحث فيه عن ملفات تنفيذية، بشكل اختياري مع التكرار) إلى الأداة، والذي سيتم من خلاله تعداد ومعالجة واردات PE، وواردات التأخير، ومجموعات API، وتبعيات التجميع، والمكتبات المحمّلة صراحةً بشكل متكرر لتحديد المسار الذي سيتم التحميل منه لكل منها أثناء تهيئة العملية في وقت التشغيل. وبهذه المعلومات، تستطيع الأداة تحديد الوحدات النمطية المعرضة للاختطاف. وأثناء معالجة PE ومحاكاة المحمّل، تستطيع الأداة التعامل مع: 1. الوحدات النمطية المستوردة عبر قسم واردات PE الرئيسي. 2. الوحدات النمطية المستوردة عبر التأخير في التحميل (delay load). 3. حل تبعيات تجميع WinSxS (يتم تحليل مورد بيان PE، واستخراج معرفات تبعيات التجميع، وتحديد مسار وحدة WinSxS باستخدام تنفيذ مخصص). 4. الوحدات النمطية المحمّلة صراحةً، والمستوردة عبر LoadLibrary في وقت التشغيل. 5. تعيين مجموعات API لجميع أنواع الواردات المذكورة أعلاه. ويتم ذلك عبر تنفيذ مخصص لمحلل لهياكل البيانات غير الموثقة الموجودة في ApiSetSchema.dll (لاحظ أنه تم اختبار الإصدارات 2 و4 و6 فقط). 6. البحث عن وحدات نمطية مستوردة محددة بالاسم. 7. تحديد مكونات Windows التي يمكن استخدامها لهجمات تجاوز UAC (يتم تطبيق معايير الارتقاء التلقائي في UAC على PE مستهدف محدد بطريقة آلية، ثم استخدامها بالتزامن مع هجوم اختطاف إذا وُجد). 8. اكتشاف وتصفية تبعيات الوحدات النمطية غير المعرضة للخطر تلقائياً استناداً إلى: * KnownDLLs * حالة DLL المعفاة ("Base"). Kernelbase.dll وntdll.dll وما إلى ذلك. * آلية أمان تجاوز البيان (التي تستخدمها Microsoft في sysprep.exe).

وضع فحص الذاكرة

عند تشغيل وضع فحص الذاكرة، يمكن للأداة إما تعداد أسماء/معرفات العمليات المحلية أو يمكن إعطاؤها معرف عملية لفحصه. بدلاً من تحليل ملف الصورة المقابل لـ PID معين على القرص، ستقوم الأداة بتعداد الوحدات النمطية المحمّلة حالياً في العملية وتحديد أي منها قد يكون معرضاً للاختطاف. وهذا مفيد في الحالات التي يكون فيها الملف التنفيذي على القرص معبأً/مشوّشاً (packed/obfuscated) ولا يمكن تحديد وارداته من خلال تحليل رأس PE.

الاستخدام

من أجل عرض معلومات استخدام الأداة، ببساطة قم بتشغيله بدون معاملات (المخرجات موضحة أدناه). من المهم جداً استخدام البنية المناسبة للأداة (32 أو 64 بت) للهدف المطلوب اعتماداً على ما إذا كان ملف PE بـ 32 بت أو 64 بت. وبالمثل، يمكن لإصدار 32 بت من الأداة تعداد و/أو استهداف عمليات 32 بت فقط (Wow64 على نظام تشغيل x64)، ويمكن لإصدار 64 بت تعداد و/أو استهداف عمليات 64 بت فقط. ينطبق هذا المبدأ على الفحص (سيتخطى Siofra64.exe ملفات PE ذات 32 بت وسيتخطى Siofra32.exe ملفات PE ذات 64 بت) وعلى عدوى PE. يجب استخدام Siofra32.exe لإصابة ملفات DLL ذات 32 بت، بينما يجب استخدام Siofra64.exe لإصابة ملفات DLL ذات 64 بت.

عند تشغيل إصدار 32 بت من الأداة على أنظمة x64، يتم تعطيل إعادة توجيه مسار Wow64 بواسطة الأداة بشكل صريح، مما يعني أنه إذا استهدفت \Windows\System32\notepad.exe فسيكون ملف PE بـ 64 بت (وبالتالي يجب استخدام \Windows\Syswow64\notepad.exe بدلاً من ذلك). وبالمثل، إذا استهدفت \Program Files\Common Files\microsoft shared\MSInfo\msinfo32.exe فسيكون ملف PE بـ 64 بت، وبالتالي يجب استخدام \Program Files (x86)\Common Files\microsoft shared\MSInfo\msinfo32.exe بدلاً من ذلك.

استخدام Siofra الإصدار 1.13: Siofra32.exe --mode [الأنماط المدعومة: "file-scan" و"mem-scan" و"infect"] -v [اختياري. مستوى تفاصيل المخرجات] مستويات التفاصيل: 0 - لا مخرجات 1 - حالة النجاح/الفشل الحرجة فقط (الافتراضي) 2 - تفاصيل حالة إضافية للنجاح/الفشل، بما في ذلك ملفات PE المهملة 3 - كل شيء وضع فحص الملفات: -f [ملف أو مجلد لفحصه] -r [اختياري. فحص تكراري] --signed [اختياري. معالجة الملفات الثنائية الموقعة فقط] --delayload [اختياري. تضمين واردات التأخير في قائمة التبعيات] --explicit-loadlibrary [اختياري. تضمين الواردات الصريحة المحتملة في قائمة التبعيات (هذه هي سلاسل *.dll التي ربما تم استدعاؤها عبر LoadLibrary(Ex)A/W] --auto-elevate [اختياري. فحص الملفات الثنائية ذات الارتقاء التلقائي فقط] وضع فحص الذاكرة: --pid [معرف العملية المستهدف لفحصه. عندما لا يتم تحديده، سيتم تعداد قائمة بأسماء/معرفات العمليات إما 32 أو 64 بت (المقابلة لإصدار 32 أو 64 بت من هذه الأداة)] وضع الفحص العام: --enum-dependency [تعداد التبعيات] --show-unmapped-apiset [اختياري. تضمين مجموعات API التي فشل تعيينها إلى وحدة نمطية في المخرجات (يتم تجاهلها افتراضياً)] --dll-hijack [تعداد ثغرات اختطاف DLL] --find-module [اختياري. فحص التبعيات بحثاً عن وحدة نمطية محددة. لاحظ أن هذا يستثني KnownDLLs] وضع العدوى: -f [ملف DLL المراد إصابته] -o [ملف المخرجات] --payload-path [مسار DLL الذي سيتم تحميله في DLL المصاب وقت التشغيل، أو مسار ملف تنفيذي سيتم تشغيله وقت التشغيل] --payload-type [نوع الحمولة المحددة في مسار الحمولة الطفيلية. يمكن أن يكون "process" (يشير عموماً إلى ملف exe) أو "library" (يشير عموماً إلى DLL)]

أمثلة

  1. فحص محرك الأقراص الرئيسي بالكامل بحثاً عن برامج 32 بت المعرضة لاختطاف DLL باستخدام واردات التحميل القياسية أو المؤجلة عبر رؤوس PE الخاصة بها.

    Siofra32.exe --mode file-scan -f "C:/" -r --enum-dependency --dll-hijack --delayload

  2. فحص مجلد تطبيق Windows Defender على إصدار x64 من Windows بحثاً عن الوحدات النمطية المعرضة للخطر والمحمّلة عبر جدول الواردات القياسي في رأس PE الخاص بها.

    Siofra64.exe --mode file-scan -f "C:\Program Files\Windows Defender" -r --enum-dependency --dll-hijack

  3. فحص برنامج Java Update Scheduler ذو 32 بت على إصدار x64 من Windows بحثاً عن الوحدات النمطية المعرضة للخطر والمحمّلة عبر أي قناة معروفة (واردات قياسية أو تأخير، WinSxS، LoadLibrary).

    Siofra32.exe --mode file-scan -f "C:\Program Files (x86)\Common Files\Java\Java Update\jusched.exe" --enum-dependency --dll-hijack --delayload --explicit-loadlibrary

  4. فحص مجلد Windows (وجميع مجلداته الفرعية) بحثاً عن الوحدات النمطية المعرضة للخطر (المستوردة عبر جدول الواردات القياسي في رأس PE) في برامج 64 بت التي يمكن استخدامها لهجوم تجاوز UAC (موقعة من Microsoft مع بيان الارتقاء التلقائي).

    Siofra64.exe --mode file-scan -f "C:\Windows" -r --enum-dependency --dll-hijack --auto-elevate --signed

  5. إصابة نسخة 32 بت من WININET.dll (منسوخة من \Windows\SysWOW64\WININET.dll إلى .\WININET_original.dll) بزرع سيطلق عملية notepad جديدة عند تحميلها أثناء تهيئة العملية بواسطة برنامج معرض للخطر. من المهم ملاحظة أن مجرد تحميل نسخة مصابة من ملف DLL هذا (عبر LoadLibrary على سبيل المثال) لن يؤدي إلى تشغيل الحمولة. تم تصميم ملفات DLL المصابة للعمل فقط في سياق وحدة معرضة للخطر محمّلة عبر قسم الواردات القياسي للعملية المضيفة.

    Siofra32.exe --mode infect -f WININET_original.dll -o WININET.dll --payload-type process --payload-path c:\windows\system32\notepad.exe

  6. إصابة نسخة 64 بت من USERENV.dll (منسوخة من \Windows\System32\USERENV.dll إلى .\USERENV_original.dll) بزرع سيحمّل حمولة DLL افتراضية مخزنة في C:\Payload.dll. من المهم ملاحظة أن جميع ملفات DLL المحمّلة بواسطة عملية 64 بت يجب أن تكون DLL ذات 64 بت، وجميع ملفات DLL المحمّلة بواسطة عملية 32 بت يجب أن تكون DLL ذات 32 بت. لذلك في هذا السيناريو الافتراضي، يجب أن يكون Payload.dll ملف PE بـ 64 بت حتى يتم تحميله بنجاح بواسطة الزرع في USERENV.dll.

    Siofra64.exe --mode infect -f USERENV_original.dll -o USERENV.dll --payload-type library --payload-path "C:\Payload.dll"

تحسينات مستقبلية

  • دمج إصداري الأداة 32 و64 بت في ملف تنفيذي واحد.
  • القدرة على تنفيذ عدوى PE يمكنها تحميل حمولات DLL/ملفات تنفيذية بنجاح داخل ملفات DLL مصابة محمّلة صراحةً عبر LoadLibrary أو عبر واردات التأخير.
  • دعم جميع إصدارات مجموعات API.

الكود المصدري

قررت جعل جزء من هذه الأداة مفتوح المصدر لمساعدة باحثي الأمن الآخرين على فهم التفاصيل الفنية لهذا المشروع. وتحديداً، قمت بتوفير كود مصدر بلغة التجميع (assembler) لإحدى شيلكودات الزرع ذات 64 بت (لعدوى DLL PE ذات 64 بت عند تحديد نوع حمولة "process").

يمكن العثور على التفاصيل المحيطة بالجوانب التقنية الأخرى للأداة وتفاصيل نظام التشغيل المتعلقة بمحمّل/ترتيب بحث Windows، وUAC، وWinSxS وما إلى ذلك في ملف PDF الخاص بهذا المشروع.

الترخيص

Siofra مرخصة بموجب رخصة GPL 3. راجع LICENSE.MD للتفاصيل.

التواصل

Forrest Williams - [email protected] / [email protected]

تنزيل الأداة