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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
RemotePSpy — أداة مراقبة مباشرة لجلسات PowerShell عن بُعد باستخدام ETW لالتقاط وفك ترميز بروتوكول WinRM/PSRP، مما يوفر تتبعات تنفيذ الأوامر وتسجيلها لتحليل الأمن. | Kitploit
أدوات/GitHubGitHub/withsecurelabs/remotepspy
أدوات دفاعيةأمن الشبكاتالتحاليل الرقمية الجنائيةاستخبارات التهديداتالاستجابة للحوادثتحليل السجلات
GitHubwithsecurelabs/remotepspy

RemotePSpy

أداة مراقبة مباشرة لجلسات PowerShell عن بُعد باستخدام ETW لالتقاط وفك ترميز بروتوكول WinRM/PSRP، مما يوفر تتبعات تنفيذ الأوامر وتسجيلها لتحليل الأمن.

عرض المستودع
1989منذ 6 سنواتلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

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

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

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

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

RemotePSpy

توفر RemotePSpy مراقبة مباشرة لجلسات PowerShell عن بُعد، وهو مفيد بشكل خاص للإصدارات الأقدم (ما قبل 5.0) من PowerShell التي لا تتضمن مرافق تسجيل شاملة مدمجة.

تستخدم تتبع الأحداث لنظام Windows (ETW) للحصول على بيانات الرسائل من بروتوكول WinRM المستخدم كوسيلة نقل لـ PowerShell عن بُعد، وتقوم بفك ترميز طبقات البروتوكول المختلفة لتوفير تتبع لأوامر البرامج النصية المنفذة ومدخلاتها/مخرجاتها.

هذه حاليًا نسخة بحثية مبكرة، وبالتالي لا تدعم كل جوانب بروتوكول PowerShell عن بُعد (PSRP). ومع ذلك، يمكنها تقديم رؤى مفيدة حول ما يحدث في جلسة PowerShell عن بُعد.

التثبيت

أسهل طريقة للتثبيت هي باستخدام pip:

root@kitploit:~
pip install remotepspy

التبعيات

يجب تثبيت التبعيات تلقائيًا عند التثبيت عبر pip، ولكن في حال رغبت في التثبيت من المصدر فهي مدرجة هنا:

  • Python 3.7
  • pywintrace (https://github.com/fireeye/pywintrace أو https://pypi.org/project/pywintrace/)
  • psutils (https://pypi.org/project/pywintrace/)
  • libwim-15.dll من https://wimlib.net/ (مضمن في حزمة RemotePSpy للراحة)

ملف libwim-15.dll مطلوب فقط عند استخدام مزود ETW الخاص بـ Microsoft-Windows-WinRM (الموصى به والافتراضي) كمصدر بيانات. يُستخدم لفك ضغط كائنات تدفق معينة في بروتوكول WinRM/WSMan تحتوي على أجزاء رسائل PSRP. فقط ضعه في نفس الدليل الذي يحتوي على سكربت Python الرئيسي.

الاستخدام

ما عليك سوى تنفيذ RemotePSpy لبدء المراقبة والتسجيل، ثم اضغط على مفتاح الإدخال (Return) عند الانتهاء. سيتم كتابة السجل في دليل العمل الحالي، باسم RemotePSpy.log.

ستقوم الأداة أيضًا بطباعة نسخة تقريبية لما سيراه مستخدم PowerShell عن بُعد على شاشته إلى stdout جنبًا إلى جنب مع المعلومات الأكثر تفصيلاً في ملف السجل. يتوفر تسجيل أكثر تعقيدًا، انظر "التسجيل" أدناه.

إذا قمت بتثبيت Python ليكون في PATH الخاص بك، فستكون نصوص RemotePSpy القابلة للتنفيذ أيضًا في PATH الخاص بك. وإلا فقد تحتاج إلى البحث عنها في دليل حزم موقع Python الخاص بك.

إصدار مزود ETW الخاص بـ PowerShell

يستخدم RemotePSpy الافتراضي مزود ETW الخاص بـ WinRM (الموصى به) كمصدر بيانات. إذا كنت ترغب في استخدام مزود ETW الخاص بـ PowerShell بدلاً من ذلك، يمكنك تنفيذ RemotePSpy_powershell_prov.

قد ينتج هذا الإصدار بعض التحذيرات غير الضرورية بسبب التعقيد الإضافي لتتبع حالات معينة بناءً على كيفية تقديم البيانات في مزود ETW هذا تحديدًا.

التفاصيل الداخلية

يتكون الكود من عدد من الفئات المعيارية إلى حد ما والتي يمكنها قبول المدخلات على طبقات مختلفة في حزمة البروتوكول. وهذا يسمح بتوصيلها معًا بطرق مختلفة قليلاً اعتمادًا على مصدر البيانات وشكلها. تقبل معظم الفئات دالة استدعاء (callback) تستخدمها لتمرير النتيجة التي تنتجها إلى الطبقة التالية في الحزمة.

فيما يلي وصف للفئات الرئيسية المستخدمة، متبوعًا ببعض تدفقات المعالجة التي توضح أي فئة تغذي أي فئة أخرى في سيناريوهات مختلفة.

  • ETWWinRM – يحصل على أحداث ETW من مزود WinRM.

  • ETWPowerShell – يحصل على أحداث ETW من مزود PowerShell.

  • PowerShellETWParser – يحدد سياق Shell لأحداث ETW الخاصة بـ PowerShell، ويمرر بيانات الأجزاء إلى PSRPDefragmenter. كما يوفر مزامنة للخيوط.

  • SoapDefragmenter – يعيد تجميع رسائل WSMan SOAP الكاملة من أحداث ETW الخاصة بـ WinRM، ويمرر SOAP الكامل إلى WSManPS.

  • WSManPS – يقوم بتصفية WinRM غير المرتبط بـ PowerShell، ويتتبع سياق Shell، ويستخرج بيانات أجزاء PSRP من WSMan SOAP، ويمرر بيانات الأجزاء إلى PSRPDefragmenter.

  • PSRPDefragmenter – يعيد تجميع أجزاء PSRP إلى رسائل PRSP كاملة. يتم تجميع الأجزاء حسب ObjectID، ويتم ضمان تفرد ObjectID من خلال مراعاة سياق Shell. يمرر رسائل PSRP النهائية إلى PSRPParser.

  • PSRPParser – يفك ترميز رسالة PSRP الثنائية الخام، مستخرجًا تفاصيل الرأس مثل RPID وPipeline ID وMessageType. يمرر الرسائل المفكوكة إلى SimpleCommandTracer.

  • SimpleCommandTracer – يفسر رسائل PSRP باستخدام MessageType، ويستخرج ويطبع/يسجل الأوامر والوسائط ومخرجاتها. يتضمن فك ترميزًا جزئيًا لكائنات PowerShell المسلسلة. ليس تنفيذًا كاملاً لكل ميزة ممكنة، ولكنه يحاول تغطية معظم الحالات الشائعة للسماح بتتبع التنفيذ.

تدفق المعالجة عند استخدام مزود ETW الخاص بـ Microsoft-Windows-WinRM:

ETWWinRM -> SoapDefragmenter -> WSManPS -> PSRPDefragmenter -> PSRPParser -> SimpleCommandTracer

تدفق المعالجة عند استخدام مزود ETW الخاص بـ Microsoft-Windows-PowerShell:

ETWPowerShell -> PowerShellETWParser -> PSRPDefragmenter -> PSRPParser -> SimpleCommandTracer

التسجيل

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

حاليًا، يجب تعديل الكود المصدري في نهاية السكربت حيث يتم تكوين المسجلات (loggers) لتغيير التسجيل. نأمل أن توفر الإصدارات المستقبلية طريقة أفضل لمثل هذا التكوين.

يتم تعريف كل اسم مسجل بواسطة ثابت، LOGGER_NAME، في الفئة التي تستخدمه. يتم تعريف كل مسجل كطفل لـ "RemotePSpy" (مثل RemotePSpy.etw). برمجيًا، يمكن تكوين المسجلات باستخدام logging.getLogger() مع اسم السجل المناسب.

كمرجع سريع، ستوفر لك المسجلات والمستويات التالية تتبعات للبروتوكول على طبقات مختلفة في البروتوكول:

لاحظ أن SimpleCommandTracer يخرج تتبعًا على stdout أيضًا، وهذا يحاول إلى حد ما محاكاة العرض كما سيراه مستخدم PowerShell عن بُعد. وهذا يختلف عن سجل تتبع الأوامر الذي يسجل كل أمر واستدعاء طريقة خط أنابيب ومخرجات خط الأنابيب بطريقة أكثر دقة، بما في ذلك سياق إضافي مثل RPID وPipeline ID.

فيما يلي ملخص أكثر اكتمالاً لما يظهر في كل سجل وفي أي مستوى:

SimpleCommandTracer.LOGGER_NAME

ERROR:

  • أخطاء التحليل

WARNING:

  • مواجهة نوع أو استدعاء طريقة خط أنابيب غير مدعوم

INFO:

  • تتبع الأوامر الفعلي

DEBUG:

  • استدعاء طريقة خط أنابيب بدون وسائط

PSRPParser.LOGGER_NAME

DEBUG:

  • تتبع كامل لرسائل PSRP

PSRPDefragmenter.LOGGER_NAME

ERROR:

  • استلام جزء خارج الترتيب

WARNING:

  • حالات شاذة غير حرجة في تتبع Shell

INFO:

  • العثور على الجزء النهائي
  • تتبع معرف Shell الموجود في بيانات الأجزاء الذي لم يتم تتبعه صراحةً من قبل

DEBUG:

  • تتبع كامل لكل جزء PSRP

WSManPS.LOGGER_NAME

ERROR:

  • أخطاء تحليل خطيرة

WARNING:

  • أخطاء تحليل أقل خطورة
  • الكتابة فوق سياقات تتبع shell/command الموجودة

INFO:

  • معلومات تتبع Shell والأوامر

DEBUG:

  • تتبع كامل لرسائل WSMan التي يتم تجاهلها لعدم ارتباطها بـ PowerShell

SoapDefragmenter.LOGGER_NAME

INFO:

  • تتبع كامل لرسائل WSMan SOAP

DEBUG:

  • معالجة جزء SOAP

PowerShellETWParser.LOGGER_NAME

DEBUG:

  • معلومات تتبع Shell

ERROR:

  • أخطاء تحديد سياق Shell
  • استثناءات شاملة من الطبقات السفلية

ETWWinRM.LOGGER_NAME

DEBUG:

  • تتبع كامل لأحداث ETW

INFO:

  • بدء/إيقاف جلسة ETW
تنزيل الأداة
بيانات السجل الرئيسيةثابت اسم المسجلالمستوى
تتبع الأوامرSimpleCommandTracer.LOGGER_NAMEINFO
تتبع كامل لأحداث ETWETWWinRM.LOGGER_NAMEDEBUG
تتبع كامل لرسائل WSMan SOAPSoapDefragmenter.LOGGER_NAMEINFO
تتبع كامل لكل جزء PSRPPSRPDefragmenter.LOGGER_NAMEDEBUG
تتبع كامل لرسائل PSRPPSRPParser.LOGGER_NAMEDEBUG