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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
BOF_RunPe — BOF لتشغيل PE في Cobalt Strike Beacon بدون إنشاء وحدة تحكم | Kitploit
أدوات/GitHubGitHub/ntdallas/bof_runpe
تحليل الذاكرة الجنائيشيل كودما بعد الاستغلالالفريق الأحمر
GitHubntdallas/bof_runpe

BOF_RunPe

BOF لتشغيل PE في Cobalt Strike Beacon بدون إنشاء وحدة تحكم

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

الأكثر شعبية

عرض الكل →

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

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

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

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

BOF_RunPE

BOF RunPE هو ملف كائن منارة (Beacon Object File) لـ Cobalt Strike يقوم بتشغيل ملفات PE بالكامل في الذاكرة داخل عملية المنارة. على عكس fork&run التقليدي، لا يتم إنشاء عملية فرعية، ولا يتم إنشاء وحدة تحكم، ولا يتم استخدام أنبوب - يتم التقاط جميع المخرجات عبر ربط IAT وإعادة توجيهها إلى وحدة تحكم المنارة.

الهندسة: x64 فقط

نظرة عامة

root@kitploit:~
┌──────────────────────────────────────────────────────────────┐
│                   Cobalt Strike Beacon                       │
│                    (Current Process)                         │
└────────────────────────┬─────────────────────────────────────┘
                         │
                         │  beacon_inline_execute()
                         │
                         ▼
┌──────────────────────────────────────────────────────────────┐
│                    BOF RunPE                                 │
│  ┌────────────────────────────────────────────────────────┐  │
│  │  VxTable + Draugr Initialization                       │  │
│  │  (Syscall Resolution + Stack Spoofing)                 │  │
│  └──────────────────────┬─────────────────────────────────┘  │
│                         │                                    │
│  ┌──────────────────────▼─────────────────────────────────┐  │
│  │  PE Mapping                                            │  │
│  │  - Section Copy    - IAT Patching (with hooks)         │  │
│  │  - Relocations     - Memory Protection                 │  │
│  └──────────────────────┬─────────────────────────────────┘  │
│                         │                                    │
│  ┌──────────────────────▼─────────────────────────────────┐  │
│  │  Thread Execution                                      │  │
│  │  - Spoofed Start Address                               │  │
│  │  - RIP Hijacking to Entry Point                        │  │
│  │  - Output Redirection via Hooks                        │  │
│  └────────────────────────────────────────────────────────┘  │
└──────────────────────────────────────────────────────────────┘

الميزات الرئيسية

  • لا إنشاء عملية: يتم تشغيل PE داخل عملية المنارة
  • لا وحدة تحكم/أنبوب: يتم التقاط المخرجات عبر خطافات printf/WriteConsole
  • طرق تخصيص متعددة: Heap, VirtualAlloc, Module Stomping
  • تحميل وكيل: Timer Queue, RegisterWait، أو استدعاءات مباشرة
  • إلغاء ربط Ntdll: نسخة جديدة اختيارية من القرص
  • RWX: تخصيص ذاكرة في RWX بشكل اختياري
  • تزييف بداية الخيط: عنوان بداية شرعي مع اختطاف RIP

خيارات التكوين

يمكن تعديل سلوك BOF في Additionals postex -> RunPe Config

BOF مخصص

طرق الوكيل

الطريقةالوصف
Noneاستدعاءات API مباشرة
Draugrاستدعاءات API مزيفة المكدس
Regwait

طرق التخصيص

الطريقةالوصف
Heapكومة خاصة عبر RtlCreateHeap مع Draugr
VirtualAllocNtAllocateVirtualMemory مع Draugr
Module stompingاستبدال قسم .text الخاص بـ DLL شرعي

الخيارات العامة

الخيارالوصف

تزييف الخيط

الخيارالوصف
ModuleNameوحدة شرعية لعنوان البداية (مثال: Kernel32.dll)
ProcedureNameاسم الدالة داخل الوحدة (مثال: BaseThreadInitThunk)

التقاط المخرجات

يتم إعادة توجيه جميع مخرجات PE إلى وحدة تحكم المنارة عبر ربط IAT. لا يتم إنشاء نافذة وحدة تحكم أو أنبوب مسمى.

تقنيات التهرب

ناقلات الكشف

تتبع النواة (ETW-TI)

NtGetContextThread / NtSetContextThread:

  • معالجة سياق الخيط على الخيوط المعلقة ثم استئنافها

عمليات الذاكرة:

  • تخصيص NtAllocateMemory، يمكن أن يكون في RWX (اعتمادًا على التكوين)
  • انتقالات NtProtectVirtualMemory (RW → RX)
  • الذاكرة القابلة للتنفيذ في مناطق الكومة تعتبر مشبوهة (اعتمادًا على التكوين)
  • Module stomping يمكن كشفه عبر عدم تطابق تجزئة القسم (اعتمادًا على التكوين)

المؤشرات السلوكية

  • يتم إنشاء خيط معلق، أخذ السياق ثم تغيير قيمة RIP
  • ذاكرة الكومة المميزة كقابلة للتنفيذ (إذا كان مخصص الذاكرة هو الكومة)
  • تحميل DLL مع DONT_RESOLVE_DLL_REFERENCES (إذا كان مخصص الذاكرة هو module stomping)
  • تعديل قسم .text من Ntdll (إذا تم تمكين إلغاء الربط)

الاستخدام

تحميل السكريبت

root@kitploit:~
Cobalt Strike → Script Manager → Load → BOF_RunPe.cna

أوامر Aggressor

root@kitploit:~
beacon> runpe /path/to/binary.exe --arg1 value1

Mimikatz

root@kitploit:~
beacon> help runpe

Help

التجميع

يتطلب GCC 13 (mingw-w64). استخدم Dockerfile المقدم:

root@kitploit:~
sudo docker build -t ubuntu-gcc-13 .
sudo docker run --rm -it -v "$PWD":/work -w /work ubuntu-gcc-13:latest make

المخرجات: Bin/runpe.o

القيود

القيدالوصف
CETتقنية تطبيق تدفق التحكم (Control-flow Enforcement Technology) قد تمنع الأطر المكدسة الاصطناعية
x64 فقط

الإسناد / المصادر المستخدمة للتطوير

المستودعات / المقالات

  • https://github.com/susMdT/LoudSunRun
  • https://github.com/Octoberfest7/Inline-Execute-PE
  • https://www.coresecurity.com/core-labs/articles/running-pes-inline-without-console
  • https://0xdarkvortex.dev/proxying-dll-loads-for-hiding-etwti-stack-tracing/

الكتب

  • Windows Native API Programming by Pavel Yosifovich
  • Windows Internals, Part 1 by Pavel Yosifovich
  • Windows Internals, Part 2 by Andrea Allievi
تنزيل الأداة
رد اتصال RegisterWaitForSingleObject
Timerرد اتصال Timer Queue
AllocRWX
التخصيص كـ RWX (مقابل انتقال RW→RX)
UnhookNtdllاستبدال قسم .text من ntdll.dll بنسخة جديدة من القرص
Timeoutمهلة التنفيذ بالمللي ثانية (0 = غير محدود)
StompModuleمسار DLL للـ module stomping (مثال: chakra.dll)
Offsetالإزاحة من بداية الدالة
الدالة المربوطةالهدف
GetCommandLineA/Wإرجاع وسائط مزيفة
__getmainargs / __wgetmainargsتهيئة وسائط CRT
printf / wprintfإعادة توجيه BeaconPrintf
WriteConsoleA/Wإعادة توجيه BeaconPrintf
__stdio_common_vfprintfدوال الطباعة في UCRT
ExitProcess / exitتحويل إلى ExitThread
التقنيةما تتجاوزه
الاستدعاءات غير المباشرة (Indirect Syscalls)خطافات API في وضع المستخدم (EDR/AV)
تزييف مكدس Draugrفحص مكدس الاستدعاءات
تزييف بداية الخيطتحليل عنوان بداية الخيط
Module Stompingكشف الذاكرة غير المدعومة
تخصيص الكومة الخاصةمراقبة VirtualAlloc
إلغاء ربط Ntdllاستبدال ntdll في الذاكرة بـ Ntdll من القرص
ربط IAT (بدون أنابيب)مراقبة الأنابيب المسماة
لا يدعم x86/WoW64
رؤية النواةإنشاء الخيط مرئي لاستدعاءات النواة
.NETالملفات التنفيذية المُدارة غير مدعومة