Skip to content
KitploitKITPLOIT
أدواتعمليات الاستغلالالمدونة
Log in
إرسال
أدواتعمليات الاستغلالالمدونة
إرسال

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
Inline-Execute-PE — تنفيذ ملفات ويندوز التنفيذية غير المُدارة في بيقون CobaltStrike | Kitploit
أدوات/GitHubGitHub/octoberfest7/inline-execute-pe
تصعيد الامتيازات
GitHuboctoberfest7/inline-execute-pe

Inline-Execute-PE

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

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

الأكثر شعبية

عرض الكل →

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

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

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

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

Inline-Execute-PE

إخلاء المسؤولية:

هذا المشروع معقد، وقد يؤدي عدم فهم كيفية عمله واختباره بشكل كافٍ إلى تعطل الـ Beacons وفقدان الوصول!

أنصح بشدة بقراءة جميع الوثائق حتى قسم "اعتبارات التصميم والتعليقات"!

مقدمة

Inline-Execute-PE هي مجموعة من ملفات Beacon Object Files (BOFs) وسكريبت Aggressor لـ CobaltStrike، تتيح للمشغلين تحميل برامج ويندوز القابلة للتنفيذ غير المُدارة (unmanaged executables) إلى ذاكرة Beacon وتنفيذها، واسترجاع المخرجات وعرضها في وحدة تحكم Beacon.

يمكّن ذلك المشغلين من استخدام العديد من الأدوات الخارجية (Mimikatz, Dsquery, أدوات Sysinternals, إلخ) دون الحاجة إلى إسقاطها على القرص، أو إعادة تنسيقها إلى كود مستقل عن الموضع (position independent code) باستخدام أداة مثل Donut، أو إنشاء عملية جديدة لتشغيلها.

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

البرامج القابلة للتنفيذ المحملة في Beacons يمكن الوصول إليها وتشغيلها من قبل جميع عملاء CobaltStrike المتصلين بخادم CobaltStrike Team Server.

تم تصميم Inline-Execute-PE لـ Beacons 64 بت وبرامج ويندوز C أو C++ القابلة للتنفيذ 64 بت والمجمعة باستخدام Mingw أو Visual Studio. لا يدعم هذا المشروع برامج 32 بت أو برامج 64 بت المكتوبة بلغة أخرى أو المترجمة باستخدام مترجم مختلف.

الإعداد

استنساخ المستودع، وتشغيل make اختياريًا لإعادة ترجمة الـ BOFs.

قم بتحميل Inline-Execute-PE.cna إلى عميل CobaltStrike. تأكد من أن الدليل الذي يعمل منه CobaltStrike قابل للكتابة بواسطة المستخدم الخاص بك؛ يقوم Inline-Execute-PE بإنشاء ملف نصي هناك (petable.txt) لضمان توفر البيانات المطلوبة لتشغيل Inline-Execute-PE.

الأوامر

يتكون Inline-Execute-PE من 3 أوامر موجهة للهدف تقوم بتشغيل الـ BOFs، و3 أوامر داخلية تتعامل مع بنية بيانات المشروع:

موجهة للهدف:

  1. peload
  2. perun
  3. peunload

بنية البيانات الداخلية:

  1. petable
  2. peconfig
  3. pebroadcast

peload

peload هو البداية لـ Inline-Execute-PE. يُستخدم هذا الأمر لتحميل PE في ذاكرة Beacon. يقوم بالإجراءات الرئيسية التالية:

  1. إرسال الـ PE المحدد عبر الشبكة إلى Beacon أو إرسال اسم الـ PE لقراءته من القرص على الجهاز الهدف
  2. إنشاء هيكل في ذاكرة Beacon لحفظ المؤشرات والمقابض المختلفة المطلوبة من Inline-Execute-PE طوال دورة حياته
  3. تخصيص ذاكرة في Beacon وكتابة الـ PE إليها بحماية RW
  4. تشفير الـ PE في الذاكرة باستخدام مفتاح يحدده المستخدم (XOR)
  5. تخصيص قطعة أخرى من الذاكرة ونسخ الـ PE المشفر بـ XOR إليها. هذا ضروري للتمكن من "إعادة" الـ PE للتنفيذات اللاحقة
  6. إنشاء عملية فرعية conhost.exe تحت Beacon لتهيئة stdin/stdout/stderr
  7. إعادة توجيه stdout و stderr إلى أنبوب مجهول (anonymous pipe) بحيث يمكن التقاط مخرجات الـ PE

perun

perun هو الخطوة الثانية في Inline-Execute-PE. يقوم بالإجراءات الرئيسية التالية:

  1. إرسال وسائط سطر الأوامر عبر الشبكة إلى Beacon
  2. فك تشفير الـ PE في الذاكرة باستخدام XOR
  3. إصلاح جدول عناوين الاستيراد (IAT) للـ PE، مع ربط بعض API المتعلقة بوسائط سطر الأوامر والخروج من العمليات
  4. تغيير حماية ذاكرة الـ PE إلى RWX
  5. تشغيل الـ PE في سلسلة محادثات (thread) خاصة به
  6. التقاط المخرجات من الـ PE وإعادتها إلى CobaltStrike
  7. إعادة حماية ذاكرة الـ PE إلى RW
  8. استبدال الـ PE في الذاكرة بالنسخة المشفرة بـ XOR التي تم إنشاؤها أثناء peload

peunload

يتم استدعاء peunload لإزالة الـ PE من ذاكرة Beacon عندما ينتهي المشغل منه أو يرغب في تحميل PE مختلف. يقوم بالإجراءات الرئيسية التالية:

  1. إغلاق المقابض ومؤشرات الملفات التي تم إنشاؤها أثناء peload
  2. إنهاء عملية conhost.exe التي تم إنشاؤها أثناء peload
  3. تصفير ثم تحرير كلتا نسختي الـ PE في الذاكرة
  4. محاولة تفريغ أي DLLs تم تحميلها بواسطة الـ PE في عملية Beacon (اختياري)

petable

يتم استخدام petable لعرض معلومات حول جميع الـ PEs المحملة حاليًا في Beacons.

كل عميل CobaltStrike لديه petable خاص به؛ يبذل Inline-Execute-PE جهودًا كبيرة لضمان تزامن بياناته بين جميع عملاء CobaltStrike المتصلين بحيث يمكن لجميع المشغلين استخدام الـ PEs. لمزيد من المعلومات، راجع "اعتبارات التصميم والتعليقات".

image

peconfig

يتم استخدام peconfig لتكوين الخيارات المتعلقة بكيفية عمل Inline-Execute-PE. الخياران الحاليان اللذان يمكن تغييرهما هما:

  1. المهلة الزمنية (Timeout). تحدد المدة التي سينتظرها perun حتى يكتمل تنفيذ الـ PE قبل إنهائه. يوجد هذا كإجراء أمان في حالة تمرير وسائط غير صحيحة إلى PE تتسبب في عدم عودته/إنهاء التنفيذ أبدًا. الإعداد الافتراضي هو 60 ثانية ولكن يمكن تعديله لاستيعاب الـ PEs ذات التشغيل الطويل.
  2. UnloadLibraries. يتحكم هذا الخيار في ما إذا كان peunload سيحاول تحرير DLLs من عملية Beacon التي تم تحميلها بواسطة الـ PE. الإعداد الافتراضي هو TRUE. بعض الـ PEs تسبب مشاكل عند تفريغ الـ DLLs من عملية Beacon وقد تؤدي إلى تعطل Beacon، وفي هذه الحالة من الأفضل ترك جميع الـ DLLs التي تم تحميلها بواسطة الـ PE في عملية Beacon. لوحظ ذلك عند استخدام powershell.exe (ربما بسبب تحميل .Net CLR في عملية Beacon).

pebroadcast

يمكن استخدام pebroadcast لنشر محتويات petable الخاص بأحد العملاء يدويًا إلى جميع عملاء CobaltStrike الآخرين المتصلين.

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

الاستخدام

استخدم peload لتحميل PE في ذاكرة Beacon
image

بدلاً من ذلك، إذا كان هناك PE على الجهاز الهدف ترغب في استخدامه دون إنشاء عملية جديدة، فقدم المسار والمفتاح --local
image

اتصل بـ perun، مررًا أي وسائط إلى الـ PE المحمل
image

يجب الهروب من علامات الاقتباس المزدوجة في الوسائط باستخدام الخطوط المائلة العكسية
image

إذا اكتشفت أن PE يسبب مشاكل عند محاولة تحرير الـ DLLs أثناء التفريغ، استخدم peconfig لضبط unloadlibraries على false
image

بمجرد الانتهاء من استخدام PE، اتصل بـ peunload لتنظيفه من Beacon
image

يمكن الآن تحميل PE مختلف إلى Beacon
image

مهلة perun

يجب أن تكون حذرًا بشأن وسائط سطر الأوامر التي تمررها إلى الـ PE؛ بعض الـ PEs ستعطل تمامًا إذا أعطيت وسائط خاطئة، بينما سيعمل البعض الآخر إلى ما لا نهاية مما يؤدي إلى عدم عودة Beacon أبدًا على الرغم من أن العملية لا تزال قيد التشغيل.

يمكن رؤية ذلك مع Mimikatz.exe عندما لا يتم تحديد 'exit' في نهاية قائمة الوسائط
image

...

image

سيقوم Inline-Execute-PE بإنهاء سلسلة محادثات الـ PE الجاري تشغيله بعد الوصول إلى قيمة المهلة المحددة. يتيح ذلك لـ Beacon استئناف الاتصالات العادية (لا يتصل Beacon مرة أخرى حتى يكتمل تنفيذ BOF perun). بينما لا يزال من الممكن استخدام أوامر CobaltStrike العادية و BOFs الأخرى في هذا Beacon، فإن Inline-Execute-PE معطل الآن؛ عندما يتم إنهاء PE قيد التشغيل بهذه الطريقة، يبدو أنه يعطل stdout و stderr في عملية Beacon، ولا تعمل الـ PEs المحملة لاحقًا بشكل صحيح.

تنزيل الأداة