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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
Crassus — أداة اكتشاف تصعيد الامتيازات في ويندوز تقوم بتحليل سجلات التمهيد من Process Monitor لتحديد اختطاف DLL، و ACLs الضعيفة، ومسارات تصعيد أخرى، مع إنشاء تلقائي لرمز مصدر DLL وكيل. | Kitploit
أدوات/GitHubGitHub/vu-ls/crassus
تصعيد الامتيازاتالاستغلالاختبار الاختراقتحليل الملفات الثنائية
GitHubvu-ls/crassus

Crassus

أداة اكتشاف تصعيد الامتيازات في ويندوز تقوم بتحليل سجلات التمهيد من Process Monitor لتحديد اختطاف DLL، و ACLs الضعيفة، ومسارات تصعيد أخرى، مع إنشاء تلقائي لرمز مصدر DLL وكيل.

عرض المستودع
63364منذ 6 أشهرتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

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

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

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

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

Crassus أداة اكتشاف تصعيد الامتيازات لنظام Windows

بداية سريعة

  1. في مراقب العمليات، حدد خيار Enable Boot Logging. "خيار تسجيل التمهيد في مراقب العمليات"
  2. أعد تشغيل النظام.
  3. بمجرد تسجيل الدخول واستقرار ويندوز، قم بتشغيل مراقب العمليات مرة أخرى.
  4. عند المطالبة، احفظ سجل التمهيد، مثلاً في raw.PML.
  5. أعد تعيين عامل التصفية الافتراضي لمراقب العمليات باستخدام Ctrl-R.
  6. احفظ ملف السجل هذا، مثلاً في boot.PML.
  7. شغّل Crassus.exe boot.PML.
  8. افحص النتائج الملونة باللون الأخضر والإدخالات المقابلة في results.csv.

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

  • لماذا "Crassus"
    • هل قمت حقًا بصنع أداة اكتشاف تصعيد امتيازات أخرى؟
    • الميزات
    • مخطط الانسياب
  • لقطات الشاشة
    • تشغيل Crassus
    • مخرجات CSV
    • الصادرات
    • وظائف DLL المُصدّرة
    • الأرقام الترتيبية لـ DLL المُصدّرة
  • الحصول على Crassus.exe
    • البناء باستخدام Visual Studio
    • استخدام Crassus.exe المُجمّع مسبقًا
  • الاستخدام
    • سير التنفيذ
    • وسائط سطر الأوامر
    • أمثلة
    • قالب الـ Proxy DLL
    • قالب openssl.cnf
  • تجميع الـ Proxy DLLs
    • Visual Studio
    • MinGW
  • أمثلة من العالم الحقيقي
    • Acronis True Image
    • Atlassian Bitbucket
    • McAfee
    • Microsoft SQL Server 2022
  • استكشاف الأخطاء وإصلاحها
    • الملف المفقود لم يُنفّذ
    • الكود نُفّذ بامتيازات غير متوقعة
    • النتائج تختفي بعد إعادة التشغيل
  • المساهمات
  • الإسنادات

لماذا "Crassus"؟

صنعت Accenture أداة تُسمى Spartacus، والتي تكتشف فرص اختطاف DLL على ويندوز. باستخدام Spartacus كنقطة انطلاق، أنشأنا Crassus لتوسيع قدرات اكتشاف تصعيد الامتيازات في ويندوز إلى ما هو أبعد من مجرد البحث عن الملفات المفقودة. يمكن لـ ACLs التي تستخدمها ملفات وأدلة العمليات ذات الامتيازات أن تجد أكثر من مجرد البحث عن الملفات المفقودة لتحقيق الهدف.

هل قمت حقًا بصنع أداة اكتشاف تصعيد امتيازات أخرى؟

... ولكن مع لمسة مختلفة حيث أن Crassus يستخدم مراقب عمليات SysInternals ويقوم بتحليل ملفات PML الأولية. الاستخدام النموذجي هو إنشاء سجل تمهيد باستخدام مراقب العمليات ثم تحليله باستخدام Crassus. سيقوم أيضًا بإنشاء كود مصدر تلقائيًا لـ Proxy DLLs مع جميع الصادرات ذات الصلة لـ DLLs الضعيفة.

الميزات

  • تحليل ملفات ProcMon PML بشكل أصلي. تم تنفيذ محلل السجل (PML) عن طريق ترحيل وظائف جزئية إلى C# من https://github.com/eronnen/procmon-parser/. يمكنك العثور على مواصفات التنسيق هنا.
  • سيقوم Crassus بإنشاء كود مصدر لـ Proxy DLLs لجميع ملفات DLL المفقودة التي تم تحديدها. على سبيل المثال، إذا كان التطبيق عرضة لاختراق DLL عبر version.dll، فسوف ينشئ Crassus ملفي version.cpp و version.def لك مع جميع الصادرات المضمنة فيه. بشكل افتراضي، سيقوم الـ Proxy DLLs بتشغيل calc.exe. يتم تضمين نصوص بناء لبناء الـ DLLs على Visual Studio أو MinGW.
  • بالنسبة للأحداث الأخرى المهمة، مثل إنشاء عملية أو تحميل مكتبة، يتم التحقق من قدرة المستخدمين غير المميزين على تعديل الملف أو أي جزء من المسار إلى الملف.
  • قادر على معالجة ملفات PML كبيرة وتخزين جميع الأحداث المهمة في ملف CSV مخرجات.

مخطط الانسياب

يمكن تلخيص الفكرة العامة لكيفية عمل Crassus في هذا المخطط الانسيابي: مخطط Crassus

لقطات الشاشة

تشغيل Crassus

تشغيل Crassus

مخرجات CSV

مخرجات CSV

الصادرات المخرجة

الصادرات

وظائف DLL المُصدّرة

وظائف DLL

الأرقام الترتيبية لـ DLL المُصدّرة

الأرقام الترتيبية لـ DLL

الحصول على Crassus.exe

البناء باستخدام Visual Studio

تم تطوير Crassus كمشروع Visual Studio 2019. لبناء Crassus.exe:

  1. افتح Crassus.sln
  2. اضغط Ctrl+Shift+B على لوحة المفاتيح

استخدام Crassus.exe المُجمّع مسبقًا

إذا كنت تثق في تشغيل كود الآخرين دون معرفة ما يفعله، فإن Crassus.exe متوفر في هذا المستودع.

الاستخدام

سير التنفيذ

  1. في مراقب العمليات، حدد خيار Enable Boot Logging. "خيار تسجيل التمهيد في مراقب العمليات"
  2. أعد تشغيل النظام.
  3. بمجرد تسجيل الدخول واستقرار ويندوز، قم اختياريًا أيضًا بتشغيل المهام المجدولة التي قد تكون مهيأة للتشغيل بامتيازات.
  4. شغّل مراقب العمليات مرة أخرى.
  5. عند المطالبة، احفظ سجل التمهيد.
  6. أعد تعيين عامل التصفية الافتراضي لمراقب العمليات باستخدام Ctrl-R.
  7. احفظ ملف السجل هذا، مثلاً في boot.PML. سبب إعادة حفظ ملف السجل ذو شقين:
    1. الإصدارات الأقدم من مراقب العمليات لا تحفظ سجلات التمهيد كملف واحد.
    2. سجلات التمهيد بشكل افتراضي ستكون غير مفلترة، مما قد يحتوي على ضوضاء إضافية، مثل اختطاف DLL لمستخدم محلي عند تشغيل مراقب العمليات نفسه.

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

الوسيطةالوصف
<PMLFILE>موقع (ملف) ملف سجل أحداث ProcMon الموجود.
--verboseتفعيل الإخراج المفصل.
--debugتفعيل إخراج التصحيح.

أمثلة

قم بتحليل سجل تمهيد مراقب العمليات المحفوظ في boot.PML. سيتم حفظ جميع المسارات الضعيفة كـ results.csv وجميع ملفات مصدر الـ Proxy DLL في الدليل الفرعي stubs.

root@kitploit:~
C:\tmp> Crassus.exe boot.PML

قالب الـ Proxy DLL

أدناه هو القالب المستخدم عند إنشاء Proxy DLLs. بالنسبة لـ DLLs التي يعثر عليها Crassus، سيحتوي الـ Proxy DLL على نفس أسماء الصادرات كما هو محدد في %_EXPORTS_%، بالإضافة إلى نفس الأرقام الترتيبية كما هو محدد في ملف .def. سيكتشف Crassus ما إذا كان الـ DLL يحتاج إلى البناء كمكتبة 32 بت أم 64 بت من خلال النظر في بنية العملية الأم، ووضع علامة على الكود المصدري في حقل %_BUILD_AS_% وفقًا لذلك.

إذا تعذر العثور على الـ DLL الحقيقي باستخدام سجل مراقب العمليات، أو إذا كان اسم التصدير إشكاليًا، فستتراجع نصوص البناء إلى إنشاء DLL بدون صادرات محددة.

root@kitploit:~
#pragma once

//%_BUILD_AS%

#include <windows.h>;

extern "C" {

  VOID Payload() {
      // قم بتشغيل الحمولة الخاصة بك هنا.
      WinExec("calc.exe", 1);
  }

  BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpReserved)
  {
      switch (fdwReason)
      {
      case DLL_PROCESS_ATTACH:
          Payload();
          break;
      case DLL_THREAD_ATTACH:
          break;
      case DLL_THREAD_DETACH:
          break;
      case DLL_PROCESS_DETACH:
          break;
      }
      return TRUE;
  }

  #ifdef ADD_EXPORTS
  %_EXPORTS_%
  #endif
}

قالب openssl.cnf

بالنسبة للتطبيقات التي تستخدم قيمة متغير OPENSSLDIR بشكل غير آمن، يمكن وضع ملف openssl.cnf مخصص في الموقع المشار إليه. في هذا المثال، سيقوم البرنامج بتحميل C:\tmp\calc.dll. تأكد من استخدام مكتبة 32 بت لاستهداف العمليات 32 بت، ومكتبة 64 بت لاستهداف العمليات 64 بت.

root@kitploit:~
openssl_conf = openssl_init
[openssl_init]
# سيحاول هذا تحميل الملف c:\tmp\calc.dll كجزء من تهيئة OpenSSL
# يجب أن تكتشف نصوص البناء ما إذا كانت مكتبة calc.dll بحاجة إلى البناء كـ 32 بت أم 64 بت
/tmp/calc = asdf

تجميع الـ Proxy DLLs

Visual Studio

التجميع ممكن باستخدام ملف cl.exe المضمن مع Visual Studio. بالتحديد:

root@kitploit:~
cl.exe /DADD_EXPORTS /D_USRDLL /D_WINDLL <target>.cpp /LD /Fe<target>.dll /link /DEF:<target>.def

لأتمتة عملية البناء، بما في ذلك تحديد ما إذا كانت المكتبة يجب أن تكون 64 بت أم 32 بت:

  1. افتح موجه أوامر مطور Visual Studio.
  2. قم ببناء الـ DLLs باستخدام السكريبت build.bat.
  3. أعد تسمية الملف المُجمّع حسب الضرورة إذا كان اسم الملف الضعيف ينتهي بشيء آخر غير .dll.

ملاحظة: نظرًا لسلوك مؤسف مع vcvarsall.bat، والذي ليس بالتأكيد خطأ، قد تواجه مشكلة عند محاولة تشغيل build.bat أكثر من مرة في نفس جلسة موجه أوامر مطور Visual Studio. إذا واجهت خطأ، فقط أغلق النافذة وأعد فتحها مرة أخرى.

MinGW

إذا لم يكن Visual Studio متاحًا بسهولة، يمكن تجميع الـ Proxy DLLs باستخدام MinGW-w64 بدلاً من ذلك. على منصة Ubuntu على سبيل المثال، يمكن تثبيت MinGW عبر الأمر التالي: sudo apt install g++-mingw-w64-x86-64-win32 g++-mingw-w64-i686-win32

root@kitploit:~
# إنشاء DLL 32 بت
i686-w64-mingw32-g++ -c -o <target>.o <target>.cpp -D ADD_EXPORTS
i686-w64-mingw32-g++ -o <target>.dll <target>.o <target>.def -s -shared -Wl,--subsystem,windows

# إنشاء DLL 64 بت
x86_64-w64-mingw32-g++ -c -o <target>.o <target>.cpp -D ADD_EXPORTS
x86_64-w64-mingw32-g++ -o <target>.dll <target>.o <target>.def -s -shared -Wl,--subsystem,windows

لأتمتة عملية البناء، بما في ذلك تحديد ما إذا كانت المكتبة يجب أن تكون 64 بت أم 32 بت:

  1. افتح محطة طرفية.
  2. قم بتشغيل bash ./build.sh
  3. أعد تسمية الملف المُجمّع حسب الضرورة إذا كان اسم الملف الضعيف ينتهي بشيء آخر غير .dll.

أمثلة من العالم الحقيقي

Acronis True Image

تحليل Crassus

كما هو موضح في VU#114757، تحتوي إصدارات Acronis الأقدم على ثغرات متعددة لتصعيد الامتيازات.

  1. وضع openssl.cnf في موقع يمكن إنشاؤه بواسطة مستخدم غير مميز.
  2. ACLs غير مناسبة في دليل C:\ProgramData\Acronis.

يجد Crassus هاتين المشكلتين تلقائيًا. مخرجات Crassus لـ Acronis

اختطاف DLL

عن طريق زرع ملف curl.dll المُجمّع لدينا في الدليل C:\ProgramData\Acronis\Agent\var\atp-downloader\ وإعادة التشغيل مع سجل تمهيد جديد لمراقب العمليات، يمكننا رؤية أن الحمولة الخاصة بنا التي تشغل calc.exe تعمل بامتيازات SYSTEM. "سجل مراقب العمليات لـ curl.dll المزروع"

وضع openssl.cnf

يحاول برنامج Acronis الضعيف تحميل openssl.cnf من موقعين مختلفين. سنضع ملف openssl.cnf النموذجي الخاص بنا في c:\jenkins_agent\workspace\tp-openssl-win-vs2013\17\product\out\standard\vs_2013_release\openssl\ssl، وحمولة calc.dll 32 بت في c:\tmp. "سجل مراقب العمليات لـ openssl.cnf المزروع"

Atlassian Bitbucket

تحليل Crassus

كما هو موضح في VU#240785، فإن إصدارات Atlassian Bitbucket الأقدم عرضة لتصعيد الامتيازات بسبب ACLs الضعيفة لدليل التثبيت. كما هو الحال مع أي برنامج ويندوز يتم تثبيته في موقع خارج C:\Program Files\ أو مواقع أخرى مقيدة بـ ACL، فإن الأمر متروك لمثبت البرنامج لتعيين ACLs بشكل صريح على الدليل الهدف.

يجد Crassus العديد من الطرق لتحقيق تصعيد الامتيازات مع هذا البرنامج، بما في ذلك:

  • وضع ملفات DLL المفقودة في مواقع قابلة للكتابة من قبل المستخدم.
  • وضع ملفات EXE المفقودة في مواقع قابلة للكتابة من قبل المستخدم.
  • إعادة تسمية دليل EXE مميز للسماح للمستخدم بوضع EXE بنفس الاسم.

مخرجات Crassus لـ Atlassian Bitbucket

اختطاف EXE

في مخرجات Crassus، يمكننا رؤية أن c:\atlassian\bitbucket\7.9.1\elasticsearch\bin\elasticsearch-service-x64.exe مميز، ولكن نظرًا لأنه قيد التشغيل، لا يمكننا ببساطة استبداله. ومع ذلك، يمكننا استخدام خدعة أخرى لاختراقه. قد نتمكن ببساطة من إعادة تسمية الدليل الذي يعيش فيه، وإنشاء دليل جديد بنفس الاسم، وزرع الحمولة الخاصة بنا بنفس الاسم. "إعادة تسمية الدليل الذي تعمل منه عملية مميزة"

بمجرد إعادة التشغيل مع سجل تمهيد لمراقب العمليات، يمكننا رؤية أن ملف elasticsearch-service-x64.exe المزروع لدينا يعمل بدلاً من الحقيقي، بناءً على أيقونة حاسبة ويندوز. "زرع calc.exe كـ elasticsearch-service-x64.exe"

McAfee

كما هو موضح في VU#287178، فإن الإصدارات الأقدم من برنامج McAfee عرضة لتصعيد الامتيازات عبر openssl.cnf. دعنا نلقي نظرة: مخرجات Crassus لـ McAfee

لمعرفة سبب وجود مرجعين مختلفين لـ openssl.cnf في سجل التمهيد هذا، يمكننا الرجوع إلى ملف results.csv: results.csv لـ McAfee

لاحظ أن تحميل ملف openssl.cnf من المسار D:\ سيتطلب مزيدًا من التحقيق اليدوي، حيث أن جدوى تحميل مثل هذا المسار تعتمد على النظام الأساسي المعني، وما هو الوصول إلى النظام المتاح. قد يكون من الممكن إنشاء قرص ضوئي يوفر ملف openssl.cnf يشير أيضًا إلى مسار يحل إلى محرك الأقراص الضوئي أيضًا.

Microsoft SQL Server 2022

SQL Server 2022 ليس من الواضح أنه عرضة لتصعيد الامتيازات بسبب ضعف ACLs إلا إذا تم تثبيته في موقع غير قياسي. إذا تم تثبيته في موقع خارج C:\Program Files، فسيكشف Crassus عن عدة احتمالات لتصعيد الامتيازات. معظم تطبيقات ويندوز التي تتضمن مكونًا مميزًا تبدو قابلة للاستغلال بهذه الطريقة إذا تم تثبيتها في دليل لا يحتوي بالفعل على ACLs آمنة بطبيعتها. "Microsoft SQL Server 2022 مثبت في دليل غير آمن"

استكشاف الأخطاء وإصلاحها

الملف المفقود لم يُنفّذ

إذا أبلغ Crassus عن تحميل مميز لملف يمكن للمستخدم زرعه أو تعديله، فهذا لا يعني بالضرورة أنه سيناريو قابل للاستغلال. بينما يبحث Crassus عن أنواع الملفات المحتمل أن تكون مثيرة للاهتمام، فإن ملف سجل مراقب العمليات لن يشير مباشرةً إلى ما كانت العملية المرتبطة ستفعله بالملف إذا كان موجودًا. قد يكون الأمر بسيطًا مثل استخراج أيقونة برنامج. قد يعطي التحقيق في مكدس الاستدعاءات لعملية الملف في مراقب العمليات تلميحًا حول ما كان سيتم فعله. أو ببساطة ضع الملف وحقق في السلوك باستخدام سجل تمهيد جديد لمراقب العمليات، إذا كنت تفضل المسار الأسهل بالقوة الغاشمة. قد تواجه أيضًا مكتبة مفقودة حيث إما أن Crassus لا يمكنه العثور على المكتبة لمعرفة الصادرات التي يجب أن تكون موجودة، أو أن الصادرات التي وجدها Crassus تتعارض بطريقة تمنع التجميع السليم لـ DLL. في مثل هذه الحالات، سيعود Crassus إلى إنشاء DLL لا يصدر أي أسماء وظائف. اعتمادًا على كيفية تحميل التطبيق الهدف للمكتبة، قد يمنع غياب أسماء الوظائف المتوقعة و/أو الأرقام الترتيبية التطبيق الهدف من تحميل المكتبة بنجاح. سيتطلب هذا السيناريو جهدًا يدويًا لتحديد الشكل الذي يجب أن يبدو عليه الـ Proxy DLL.

الكود نُفّذ بامتيازات غير متوقعة

سيبحث Crassus عن عمليات ملفات مميزة لاكتشاف المسارات المهمة. قد تواجه سيناريو حيث تصل كل من عملية مميزة وأخرى غير مميزة إلى مسار، ولكن فقط العملية غير المميزة هي التي تقوم بتنفيذ ما قد يكون موجودًا. بدلاً من ذلك، قد تواجه سيناريو حيث تعمل عملية أصل بامتيازات، ولكنها قد تبدأ بشكل صريح عمليات فرعية بامتيازات أقل.

النتائج تختفي بعد إعادة التشغيل

خاصة عند تثبيت البرنامج لأول مرة، أو عند تثبيت التحديثات، قد يسجل مراقب العمليات عملية ملف تبدو قابلة للاستغلال ولكنها لا تحدث في كل مرة يتم فيها تشغيل النظام. قد يكون استغلال هذه العمليات ممكنًا في أول إعادة تشغيل بعد حدوث مثل هذا الحدث. لتجنب مثل هذه الحالات الحدودية، تأكد من أن سجلات التمهيد اللاحقة تحتوي على نفس عمليات الملف المبلغ عنها في عمليات إعادة التشغيل اللاحقة.

المساهمات

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

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

الإسنادات

  • https://github.com/eronnen/procmon-parser/
تنزيل الأداة