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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
أدوات/GitHubGitHub/accenture/spartacus
أدوات دفاعيةتوليد الحمولةتحليل الكودالاستغلالالهندسة العكسيةاختبار الاختراقتحليل الملفات الثنائيةالفريق الأحمرArchived
GitHubaccenture/spartacus

Spartacus

Spartacus: مجموعة أدوات اختطاف DLL/COM

عرض المستودع
1.1k153منذ 2 سنواتتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

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

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

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

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

[!CAUTION] هذا المستودع غير مُدار، قم بزيارة https://github.com/sadreck/Spartacus للحصول على أحدث إصدار.

مجموعة أدوات اختطاف DLL/COM من Spartacus version

لماذا "Spartacus"؟

إذا شاهدت فيلم Spartacus من عام 1960، ستتذكر المشهد حيث يطلب الرومان من Spartacus تسليم نفسه. في اللحظة التي وقف فيها Spartacus الحقيقي، وقف العديد من الآخرين أيضًا وادعوا أنه هم باستخدام عبارة "I AM SPARTACUS".

عندما تطلب عملية معرضة لاختطاف DLL تحميل DLL، فإنها تسأل نوعًا ما "من هو VERSION.DLL؟" وتبدأ الدلائل العشوائية في الادعاء "أنا VERSION.DLL" و"لا، أنا VERSION.DLL". وهكذا، Spartacus.

كيف تختلف هذه الأداة عن جميع أدوات الاختطاف الأخرى الموجودة؟

  • يقوم Spartacus بأتمتة معظم العملية. يقوم بتحليل سجلات Process Monitor من SysInternals الأولية، ويمكنك ترك ProcMon قيد التشغيل لساعات واكتشاف ثغرات اختطاف DLL/COM من المستوى الثاني والثالث (أي تطبيق يقوم بتحميل DLL آخر يقوم بتحميل DLL آخر عند استخدام ميزة معينة من التطبيق الأصلي).
  • إنشاء حلول Visual Studio تلقائيًا لـ DLLs المعرضة للخطر.
  • قادر على معالجة ملفات PML كبيرة وتخزين جميع الأحداث المهمة في ملف CSV. معيار محلي عالج ملفًا بحجم 3 جيجابايت يحتوي على 8 ملايين حدث في 45 ثانية.
  • يدعم فحص ثغرات اختطاف DLL و COM.
  • يدعم إنشاء شهادات موقعة ذاتيًا وتوقيع ملفات DLL.
  • باستخدام وظائف Ghidra، استخراج تواقيع الدوال التصديرية وتنفيذ الحمولة عبر دوال مفردة موكَّلة بدلاً من تشغيل كل شيء من DllMain. هذه التقنية مستوحاة ومنفذة من الشرح الموصوف على https://www.redteam.cafe/red-team/dll-sideloading/dll-sideloading-not-by-dllmain، بواسطة Shantanu Khandelwal.
  • [دفاعي] وضع المراقبة الذي يحاول تحديد التطبيقات قيد التشغيل التي تقوم بتوكيل المكالمات، كما في "اختطاف DLL قيد التنفيذ". هذا فقط للحصول على أي نتائج سهلة ولا ينبغي الاعتماد عليه.

جدول المحتويات

  • التثبيت
  • الوظائف المدعومة
    • اختطاف DLL
      • الاستخدام
    • اختطاف COM
      • الاستخدام
    • توليد وكيل DLL
      • الاستخدام
    • توقيع ملفات DLL
      • الاستخدام لتوقيع ملفات DLL
    • كشف اختطاف DLL
  • وسائط سطر الأوامر
  • المساهمات
  • الإسناد

التثبيت

ابحث عن أحدث إصدار من Spartacus وقم بتنزيله ضمن الإصدارات. بخلاف ذلك، قم ببساطة باستنساخ هذا المستودع وبناء من المصدر.

الوظائف المدعومة

فيما يلي وصف لكل وضع يدعمه Spartacus.

ملاحظة: تغيرت وسائط سطر الأوامر بشكل كبير من الإصدار 1 إلى الإصدار 2.

اختطاف DLL

الوظيفة الأصلية لـ Spartacus كانت فقط إيجاد ثغرات اختطاف DLL. طريقة عمله هي:

  1. إنشاء ملف تكوين ProcMon (PMC) بسرعة، بناءً على الوسائط التي تم تمريرها. المرشحات التي سيتم تعيينها هي:
    • العملية هي CreateFile.
    • المسار ينتهي بـ .dll.
    • اسم العملية ليس procmon.exe أو procmon64.exe.
    • تمكين Drop Filtered Events لضمان الحد الأدنى من حجم إخراج PML.
    • تعطيل Auto Scroll.
  2. تنفيذ Process Monitor والتوقف حتى يضغط المستخدم على ENTER.
  3. يقوم المستخدم بتشغيل/إنهاء العمليات، أو اتركه قيد التشغيل للمدة التي يحتاجها.
  4. إنهاء Process Monitor عند ضغط المستخدم على ENTER.
  5. تحليل ملف سجل الأحداث الناتج (PML).
    1. إنشاء ملف CSV يحتوي على جميع DLLs من نوع NAME_NOT_FOUND و PATH_NOT_FOUND.
    2. مقارنة الـ DLLs المذكورة أعلاه ومحاولة تحديد الـ DLLs التي تم تحميلها بالفعل.
    3. لكل DLL "موجودة"، يتم إنشاء حل Visual Studio لتوكيل جميع دوال التصدير المحددة للـ DLL.

استخدام اختطاف DLL

جمع جميع الأحداث وحفظها في C:\Data\logs.pml. سيتم حفظ جميع الـ DLLs المعرضة للخطر في C:\Data\VulnerableDLLFiles.csv وجميع حلول الـ DLL الوكيلة في C:\Data\Solutions.

root@kitploit:~
--mode dll --procmon C:\SysInternals\Procmon.exe --pml C:\Data\logs.pml --csv C:\Data\VulnerableDLLFiles.csv --solution C:\Data\Solutions --verbose

تحليل ملف سجل أحداث PML موجود، حفظ المخرجات إلى CSV، وإنشاء حلول Visual Studio وكيلة.

root@kitploit:~
--mode dll --existing --pml C:\MyData\SomeBackup.pml --csv C:\Data\VulnerableDLLFiles.csv --solution C:\Data\Solutions --verbose

لقطات الشاشة

DLL Runtime

مخرجات CSV

اختطاف COM

وظيفة جديدة في Spartacus هي تحديد ثغرات اختطاف COM المحلية. طريقة عمله هي:

  1. إنشاء ملف تكوين ProcMon (PMC) بسرعة، بناءً على الوسائط التي تم تمريرها. المرشحات التي سيتم تعيينها هي:
    • العملية هي RegOpenKey.
    • اسم العملية ليس procmon.exe أو procmon64.exe.
    • تمكين Drop Filtered Events لضمان الحد الأدنى من حجم إخراج PML.
    • تعطيل Auto Scroll.
  2. تنفيذ Process Monitor والتوقف حتى يضغط المستخدم على ENTER.
  3. يقوم المستخدم بتشغيل/إنهاء العمليات، أو اتركه قيد التشغيل للمدة التي يحتاجها.
  4. إنهاء Process Monitor عند ضغط المستخدم على ENTER.
  5. تحليل ملف سجل الأحداث الناتج (PML).
    1. تحديد جميع مفاتيح التسجيل المفقودة التي تنتهي بـ InprocServer32 ونتيجتها هي NAME_NOT_FOUND.
    2. إذا كان المفتاح المحدد موجودًا تحت HKEY_CURRENT_USER، فابحث عن GUID الخاص به تحت HKEY_CLASSES_ROOT وقم بتضمين تفاصيله في ملف CSV المصدر (إذا تم العثور عليه).

بالنسبة لاختطاف COM، يدعم Spartacus أيضًا فحص النظام المحلي للبحث عن إدخالات COM غير المضبوطة:

  1. تعداد جميع المفاتيح HKEY_CLASSES_ROOT و HKEY_CURRENT_USER و HKEY_LOCAL_MACHINE.
  2. البحث عن مفاتيح التسجيل المسماة InProcServer أو InProcServer32 أو LocalServer أو LocalServer32.
  3. تحديد أي مواقع EXE/DLL مفقودة، إلى جانب أي أخطاء في تكوين ACL مثل القدرة على تعديل أو حذف الملف بواسطة المستخدم الحالي.

استخدام اختطاف COM

جمع جميع الأحداث وحفظها في C:\Data\logs.pml. سيتم حفظ جميع معلومات COM المعرضة للخطر في C:\Data\VulnerableCOM.csv.

root@kitploit:~
--mode com --procmon C:\SysInternals\Procmon.exe --pml C:\Data\logs.pml --csv C:\Data\VulnerableCOM.csv --verbose

معالجة ملف PML موجود لتحديد إدخالات COM المعرضة للخطر.

root@kitploit:~
--mode com --existing --pml C:\Data\logs.pml --csv C:\Data\VulnerableCOM.csv --verbose

تعداد سجل النظام المحلي لتحديد مكتبات وبرامج COM المفقودة/غير المضبوطة.

root@kitploit:~
--mode com --acl --csv C:\Data\VulnerableCOM.csv --verbose

لقطات الشاشة

COM Runtime

مخرجات CSV

توليد وكيل DLL

يدعم Spartacus توليد حلول Visual Studio عن طريق إنشاء مشاريع هيكلية لاستخدامك، بناءً على الـ DLL الذي ترغب في استغلاله.

  • إعادة توجيه جميع المكالمات عن طريق تصدير الدوال إلى الـ DLL الشرعي.
    • هذا يعني أنه يجب عليك تنفيذ الحمولة من دالة DllMain.
  • باستخدام Ghidra، استخراج أكبر عدد ممكن من تواقيع/تعريفات الدوال من الـ DLL المستهدف، وإنشاء دوال وكيلة لهذه.
    • بالنسبة لأي دالة تعذر استخراج توقيعها، سيتم إعادة توجيهها مباشرة إلى الـ DLL/الدالة الشرعية.
    • هذا يعني أنه يمكنك تنفيذ الحمولة من دالة خارج DllMain.
    • على سبيل المثال، إذا كنت ترغب في استغلال version.dll، يمكنك تشغيل الغرسة الخاصة بك من GetFileVersionInfoExW إذا تم استدعاء هذه الدالة بواسطة التطبيق المعرض للخطر.

استخدام توليد وكيل DLL

توليد حل يعيد توجيه جميع التصديرات (بدون توكيل الدوال).

root@kitploit:~
--mode proxy --dll C:\Windows\System32\version.dll --solution "C:\data\tmp\refactor-version" --overwrite --verbose --external-resources

من الممكن إدخال عدة DLLs في وقت واحد.

root@kitploit:~
--mode proxy --dll C:\Windows\System32\version.dll --dll C:\Windows\System32\userenv.dll --solution "C:\data\tmp\dll-collection" --overwrite --verbose --external-resources

إنشاء وكلاء لأكبر عدد ممكن من الدوال (بناءً على مخرجات Ghidra).

root@kitploit:~
--mode proxy --ghidra C:\ghidra\support\analyzeHeadless.bat --dll C:\Windows\System32\userenv.dll --solution C:\Projects\spartacus-userenv --overwrite --verbose

نفس ما سبق، ولكن استخدام ملفات الأصول الخارجية لتوليد الحل (إذا كنت بحاجة إلى تعديلها).

root@kitploit:~
--mode proxy --ghidra C:\ghidra\support\analyzeHeadless.bat --dll C:\Windows\System32\userenv.dll --solution C:\Projects\spartacus-userenv --overwrite --verbose --external-resources

استخدام نماذج دوال مولدة مسبقًا للدوال التي لم يتمكن Ghidra من استخراج تعريفات دوال لها.

root@kitploit:~
--mode proxy --ghidra C:\ghidra\support\analyzeHeadless.bat --dll C:\Windows\System32\userenv.dll --solution C:\Projects\spartacus-userenv --overwrite --verbose --external-resources --prototypes C:\data\prototypes.csv

توليد وكلاء فقط للدوال GetFileVersionInfoExW و GetFileVersionInfoExA.

root@kitploit:~
--mode proxy --ghidra C:\ghidra\support\analyzeHeadless.bat --dll C:\Windows\System32\version.dll --solution C:\Projects\spartacus-version --verbose --overwrite --external-resources --only "GetFileVersionInfoExW, GetFileVersionInfoExA"

توليد قاعدة بيانات لنماذج الدوال من ملفات *.h الموجودة، مما يساعد في إنشاء دوال وكيلة لتلك التي لم يتمكن Ghidra من استخراج تعريف دالتها.

root@kitploit:~
--mode proxy --action prototypes --path "C:\Program Files (x86)\Windows Kits" --csv C:\data\prototypes.csv --verbose

سرد تصديرات DLL والتحقق مما إذا كانت كل دالة تحتوي على نموذج مولَّد مسبقًا.

root@kitploit:~
--mode proxy --action exports --dll C:\Windows\System32\version.dll --dll C:\Windows\System32\amsi.dll --prototypes ./Assets/prototypes.csv

توقيع ملفات DLL

يدعم Spartacus الآن توليد شهادات موقعة ذاتيًا (مع نسخ الخصائص من الملفات الموجودة)، وتوقيع ملفات DLL.

الاستخدام لتوقيع ملفات DLL

إنشاء شهادة توقيع، باستخدام الخصائص من C:\Windows\System32\version.dll (يجب أن يكون DLL موقعًا).

root@kitploit:~
--mode sign --action generate --pfx "C:\Output\certificate.pfx" --password "Welcome1" --not-before "2022-12-31 00:00:55" --not-after "2026-01-01 00:00:01" --copy-from C:\Windows\System32\version.dll --verbose

توقيع DLL باستخدام شهادة موجودة/مولدة.

root@kitploit:~
--mode sign --action sign --pfx "C:\Output\certificate.pfx" --password "Welcome1" --path "C:\Input\MyFakeVersion.dll" --algorithm SHA256 --verbose

كشف اختطاف DLL

لدى Spartacus أيضًا وضع --detect، والذي يحاول تحديد توكيل DLL النشط. المنطق وراء ذلك هو:

  • تعداد جميع العمليات.
  • لكل عملية، تحميل الـ DLLs (الوحدات) التي تم تحميلها في الذاكرة (بافتراض أن لديك الصلاحيات المناسبة للقيام بذلك).
  • إذا وجدت DLL بنفس الاسم:
    • إذا كان كلا الملفين في مسار نظام تشغيل (أي Windows، System32، Program Files)، تجاهل.
    • إذا كان أحد الملفين فقط في مسار نظام تشغيل والآخر في موقع قابل للكتابة بواسطة المستخدم، قم بوضع علامة على الملف.

لاستخدام هذه الميزة، قم ببساطة بتشغيل Spartacus مع --detect.

التوقيع الذاتي للبرامج القابلة للتنفيذ/DLLs

يدعم Spartacus وضع --sign الذي يسمح لك بتوليد شهادات موقعة ذاتيًا، وكذلك توقيع DLLs المترجمة بها.

توليد شهادة موقعة ذاتيًا، مع نسخ المُصدر/الموضوع من ملف موجود:

root@kitploit:~
--mode sign --action generate --pfx "C:\Output\myCertificate.pfx" --password "Welcome1" --not-before "2023-01-01 00:00:04" --not-after "2025-01-01 00:00:42" --copy-from C:\Windows\System32\version.dll --verbose

واستخدام تلك الشهادة لتوقيع ملفك المترجم:

root@kitploit:~
--mode sign --action sign --pfx "C:\Output\myCertificate.pfx" --password "Welcome1" --path "C:\Projects\Spartacus-AMSI\amsi.dll" --algorithm SHA256 --verbose

وسائط سطر الأوامر

لتسهيل الأمور عليك، استخدم ملف CommandLineGenerator.html.

المساهمات

سواء كان خطأ إملائيًا، أو خطأ برمجيًا، أو ميزة جديدة، فإن Spartacus منفتح جدًا للمساهمات طالما أننا نتفق على ما يلي:

  • أنت موافق على ترخيص MIT لهذا المشروع.
  • قبل إنشاء طلب سحب، قم بإنشاء مشكلة (issue) حتى يمكن مناقشتها قبل القيام بأي عمل، لأن التطوير الداخلي لا يتم تتبعه عبر مستودع GitHub العام. وإلا فإنك تخاطر برفض طلب السحب إذا كنا، على سبيل المثال، نعمل بالفعل على نفس الميزة أو ميزة مماثلة، أو لأي سبب آخر.

الإسناد

  • https://github.com/eronnen/procmon-parser/
  • https://www.redteam.cafe/red-team/dll-sideloading/dll-sideloading-not-by-dllmain
  • https://stmxcsr.com/persistence/com-hijacking.html
  • أيقونة Spartacus من أيقونات خوذة من Darius Dan - Flaticon | https://dariusdan.com/
  • https://github.com/Danielku15/SigningServer
تنزيل الأداة
  • إنشاء مخرجات CSV تحتوي على جميع المعلومات التي تم جمعها.
  • لا يقوم Spartacus تلقائيًا بإنشاء حل Visual Studio لاختطاف COM، ومع ذلك إذا كنت بحاجة إلى إنشاء DLL وكيل، يمكنك استخدام وضع proxy.
  • الوضعالوسيطالوصف
    --modeتحديد الوضع المراد استخدامه، أحد: dll، proxy، com، و detect.
    الكل--verboseتمكين المخرجات التفصيلية.
    الكل--debugتمكين مخرجات التصحيح.
    الكل--external-resourcesافتراضيًا، يستخدم Spartacus الموارد المضمنة لتوليد ملفات حلول VS إلخ. إذا كنت بحاجة إلى تعديل القوالب، استخدم هذه الوسيطة لجعل Spartacus يقوم بتحميل جميع الملفات من مجلد ./Assets.
    dll، com--procmonموقع (ملف) مراقب عمليات SysInternals procmon.exe أو procmon64.exe
    dll، com--pmlموقع (ملف) لتخزين ملف سجل أحداث ProcMon. إذا كان الملف موجودًا، فسيتم الكتابة فوقه. عند استخدامه مع --existing، سيشير إلى ملف سجل الأحداث الذي سيتم القراءة منه ولن يتم الكتابة فوقه.
    dll، com--pmcتحديد ملف ProcMon (PMC) مخصص لاستخدامه. لن يتم تعديل هذا الملف وسيتم استخدامه كما هو.
    dll، com--csvموقع (ملف) لتخزين مخرجات CSV للتنفيذ.
    dll، proxy--solutionالمسار إلى الدليل حيث سيتم تخزين حلول الـ DLLs الوكيلة.
    dll، com--existingمفتاح للإشارة إلى أنه يجب على Spartacus معالجة ملف سجل أحداث ProcMon موجود (PML). للإشارة إلى ملف سجل الأحداث، استخدم --pml، مفيد عندما كنت قد قمت بتشغيل ProcMon لساعات أو استخدمته في تسجيل التمهيد.
    dll--allافتراضيًا، سيتم تخطي أي DLLs في أدلة Windows أو Program Files. استخدم هذا لتضمين تلك الأدلة في المخرجات.
    proxy--ghidraالمسار إلى ملف analyzeHeadless.bat الخاص بـ Ghidra. يستخدم عندما تريد توكيل دوال محددة بدلاً من مجرد DllMain.
    proxy--dllالمسار إلى الـ DLL الذي تريد توكيله، ويمكن تضمين عدة نسخ من هذه الوسيطة. بالإضافة إلى ذلك، يمكن أن يحتوي على أحرف بدل مثل C:\Windows\System32\*.dll - لكن يجب أن تنتهي جميع المسارات بـ *.dll.
    proxy، sign--overwriteإذا كان ملف --solution (proxy) أو --pfx (sign) موجودًا بالفعل، استخدم هذه العلامة للكتابة فوقه.
    proxy--onlyتوليد دوال وكيلة فقط للدوال المحددة في هذا المتغير. القيم مفصولة بفواصل مثل 'WTSFreeMemory,WTSFreeMemoryExA,WTSSetUserConfigA'.
    proxy--actionالإجراء الافتراضي هو توليد حل VS. --action prototypes، يأخذ كمدخل مجلد Windows SDK ويقوم بتحليل ملفات *.h من أجل توليد قاعدة بيانات لنماذج الدوال. --action exports يعرض دوال التصدير للـ DLL وعند دمجه مع --prototypes سيعرض ما إذا كان تعريف الدالة قد تم توليده مسبقًا.
    sign--actionعند استخدام --action مع وحدة sign، فإنه يأخذ أحد خيارين، generate لإنشاء PFX و sign لتوقيع ملف.
    proxy--pathحاليًا يعمل فقط مع --action prototypes وهو موقع دليل Windows SDK.
    proxy--prototypesموقع prototypes.csv (حاليًا داخل مجلد ./Assets).
    com--aclتعداد النظام المحلي للبحث عن مكتبات وبرامج COM المفقودة/غير المضبوطة.
    sign--subjectيستخدم مع --action generate لتحديد موضوع الشهادة.
    sign--issuerيستخدم مع --action generate لتحديد مُصدر الشهادة.
    sign--copy-fromيستخدم مع --action generate لتحديد ملف موقع موجود لنسخ المُصدر والموضوع منه.
    sign--not-beforeيستخدم مع --action generate لتحديد التاريخ الذي ستصبح منه الشهادة الجديدة صالحة، التنسيق هو YYYY-MM-DD HH:MM:SS.
    sign--not-afterيستخدم مع --action generate لتحديد التاريخ الذي ستظل فيه الشهادة الجديدة صالحة حتى، التنسيق هو YYYY-MM-DD HH:MM:SS.
    sign--pfxعند استخدامه مع --action generate، هذا هو المكان الذي سيتم حفظ ملف pfx فيه. عند استخدامه مع --action sign، هذا هو المكان الذي سيتم تحميل ملف pfx منه.
    sign--passwordعند استخدامه مع --action generate، يحدد كلمة المرور لملف --pfx.
    sign--pathعند استخدامه مع --action sign، يحدد موقع ملف البرنامج القابل للتنفيذ/DLL الذي سيتم توقيعه.
    sign--algorithmعند استخدامه مع --action sign، يحدد خوارزمية التجزئة التي سيتم استخدامها للتوقيع. الخيارات هي: MD5، SHA1، SHA256، SHA384، SHA512.
    sign--timestampعند استخدامه مع --action sign، يحدد خادم الطابع الزمني، مثل http://timestamp.sectigo.com أو http://timestamp.digicert.com.