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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
InlineExecute-Assembly — Cobalt Strike BOF لتنفيذ تجميعات .NET داخل العملية مع تجاوز AMSI/ETW، ونطاق تطبيق مخصص، وإعادة توجيه الإخراج عبر الأنابيب المسماة/فتحات البريد. | Kitploit
أدوات/GitHubGitHub/anthemtotheego/inlineexecute-assembly
ما بعد الاستغلالالفريق الأحمر
GitHubanthemtotheego/inlineexecute-assembly

InlineExecute-Assembly

Cobalt Strike BOF لتنفيذ تجميعات .NET داخل العملية مع تجاوز AMSI/ETW، ونطاق تطبيق مخصص، وإعادة توجيه الإخراج عبر الأنابيب المسماة/فتحات البريد.

عرض المستودع

الأكثر شعبية

عرض الكل →

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

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

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

عرض جميع الأدوات →
مشاركة
766140منذ 5 سنواتتمت المراجعة من قبل Kitploit

InlineExecute-Assembly

InlineExecute-Assembly هو ملف كائن منارة (BOF) إثبات مفهوم يسمح لمختصي الأمن بتنفيذ تجميعات .NET داخل العملية كبديل لوحدة execute-assembly التقليدية في Cobalt Strike التي تعتمد على fork-and-run. يقوم InlineExecute-Assembly بتنفيذ أي تجميع بنقطة دخول Main(string[] args) أو Main(). وهذا يتيح لك تشغيل معظم الأدوات المنشورة دون الحاجة إلى أي تعديل مسبق.

سيقوم BOF تلقائيًا بتحديد إصدار CLR (v2.0.50727 أو v4.0.30319) المطلوب تحميله في العملية من أجل التجميع الخاص بك قبل التنفيذ، وفي معظم الحالات، يجب أن يخرج بأمان في حالة ظهور أي مشاكل. كما يدعم BOF عدة أعلام تسمح للمشغل بالتحكم في سلوكيات معينة قبل تنفيذ .NET، وتشمل تعطيل AMSI عبر التصحيح داخل الذاكرة، تعطيل واستعادة ETW عبر التصحيح داخل الذاكرة، تخصيص اسم نطاق تطبيق CLR الذي سيتم إنشاؤه، سواء لإنشاء وتوجيه المخرجات النصية للتجميع الخاص بك إلى named pipe أو mailslot، كما يسمح للمشغل بتبديل نقطة الدخول الافتراضية من Main(string[] args) إلى Main(). يمكن العثور على مزيد من التفاصيل حول الاستخدام وحالات الاستخدام والكشف المحتمل أدناه وعلى الرابط https://securityintelligence.com/posts/net-execution-inlineexecute-assembly/.

أخيرًا، تتمثل ميزة تنفيذ تجميعات .NET في نفس عملية beacon الخاصة بنا في أننا نتجنب السلوك الافتراضي لوحدة execute-assembly في Cobalt Strike والتي تنشئ عملية جديدة لتحميل/حقن CLR/.NET assembly. ومع ذلك، لا تزال هناك اعتبارات أخرى متعلقة بالأمن التشغيلي، على سبيل المثال، هل العملية التي ننفذ داخلها تقوم عادةً بتحميل CLR؟ أو هل يحتوي التجميع .NET الذي ننفذه على أي توقيعات معروفة؟ لذلك، العيب هو أنه إذا تم اكتشاف وقتل شيء ما، على سبيل المثال بواسطة AMSI، فسيتم قتل beacon الخاص بك أيضًا.

المراجع الموضوعية

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

  • HostingCLR - هنا - منطق تنفيذ CLR/التجميعات
  • Dotnet-Loader-Shellcode - (بواسطة @modexpblog) - هنا - بحث رائع شامل بما في ذلك واجهات COM لتنفيذ .NET في C -> Real MVP
  • Donut - (بواسطة @TheRealWover و @modexpblog) - هنا - ملف رأس واجهات COM
  • Memory Patching AMSI Bypass - (بواسطة @_RastaMouse) - هنا - بحث التصحيح داخل الذاكرة لـ AMSI
  • Metasploit-Execute-Assembly - (بواسطة @b4rtik) - هنا - تصحيح AMSI معدل واستخدام دالة العثور على إصدار .NET
  • ExecuteAssembly - (بواسطة @med0x2e)- هنا - سكريبت Aggressor معدل
  • Hiding Your .NET ETW - (بواسطة @xpn) - هنا - بحث رائع حول ETW
  • ETW BOF - (بواسطة @ajpc500)- هنا - تصحيح ETW معدل
  • ExecuteAssembly_Mailslot - (بواسطة @N4k3dTurtl3)- هنا - استخدام mailslots معدل لإعادة توجيه المخرجات النصية
  • @freefirex2 - لطفًا شارك بعض الآليات الداخلية الجيدة لـ BOF والمزالق.

البدء

  1. انسخ مجلد inlineExecute-Assembly مع جميع محتوياته إلى نظام تخطط للاتصال به عبر تطبيق Cobalt Strike GUI.
  2. قم بتحميل سكريبت Aggressor inlineExecute-Assembly.cna
  3. قم بتشغيل inlineExecute-Assembly --dotnetassembly /path/to/assembly.exe للتنفيذ الأساسي (انظر حالات الاستخدام أدناه لأمثلة محددة على الأعلام)

بناء بنفسك

قم بتشغيل الأمر أدناه داخل مجلد src عبر موجه أوامر الأدوات الأصلية x64 لـ VS 2019

root@kitploit:~
cl.exe /c inlineExecute-Assembly.c /GS- /FoinlineExecute-Assemblyx64.o

قم بتشغيل الأمر أدناه داخل مجلد src عبر موجه أوامر الأدوات الأصلية x86 لـ VS 2019

root@kitploit:~
cl.exe /c inlineExecute-Assembly.c /GS- /FoinlineExecute-Assemblyx86.o

الأعلام

root@kitploit:~
--dotnetassembly        Directory path to your assembly **required**
--assemblyargs          Assembly arguments to pass
--appdomain             Change default name of AppDomain sent (default value is totesLegit and is set via the included aggressor script) *Domain always unloaded*
--amsi                  Attempts to disable AMSI via in memory patching (If successful AMSI will be disabled for the entire life of process)
--etw                   Attempts to disable ETW via in memory patching (If successful ETW will be disabled for the entire life of process unless reverted)
--revertetw             Attempts to disable ETW via in memory patching and then repatches it back to original state
--pipe                  Change default name of named pipe (default value is totesLegit and is set via the included aggressor script)
--mailslot              Switches to using mailslots to redirect console output. Changes default name of mailslot (If left blank, default value is totesLegit and is set via the included aggressor script)
--main                  Changes entry point to Main() (default value is Main(string[] args))

حالة الاستخدام

تنفيذ تجميع .NET

الصيغة

root@kitploit:~
beacon> inlineExecute-Assembly --dotnetassembly /root/Desktop/Seatbelt.exe

حالة الاستخدام

تنفيذ تجميع .NET مع وسائط

الصيغة

root@kitploit:~
beacon> inlineExecute-Assembly --dotnetassembly /root/Desktop/Seatbelt.exe --assemblyargs AntiVirus AppLocker

حالة الاستخدام

تنفيذ تجميع .NET مع وسائط وتعطيل AMSI

الصيغة

root@kitploit:~
beacon> inlineExecute-Assembly --dotnetassembly /root/Desktop/Seatbelt.exe --assemblyargs AntiVirus AppLocker --amsi

حالة الاستخدام

تنفيذ تجميع .NET مع وسائط وتعطيل ETW

الصيغة

root@kitploit:~
beacon> inlineExecute-Assembly --dotnetassembly /root/Desktop/Seatbelt.exe --assemblyargs AntiVirus AppLocker --etw

حالة الاستخدام

تنفيذ تجميع .NET مع وسائط وإعادة توجيه المخرجات عبر mailslots بدلاً من named pipe الافتراضي

الصيغة

root@kitploit:~
beacon> inlineExecute-Assembly --dotnetassembly /root/Desktop/Seatbelt.exe --mailslot

حالة الاستخدام

تنفيذ تجميع .NET مع وسائط وتغيير اسم named pipe الافتراضي المحدد في سكريبت aggressor

الصيغة

root@kitploit:~
beacon> inlineExecute-Assembly --dotnetassembly /root/Desktop/Seatbelt.exe --pipe forRealLegit

حالة الاستخدام

تنفيذ تجميع .NET وتغيير نطاق التطبيق الافتراضي المحدد في سكريبت aggressor

الصيغة

root@kitploit:~
beacon> inlineExecute-Assembly --dotnetassembly /root/Desktop/Seatbelt.exe --appdomain forRealLegit

حالة الاستخدام

تنفيذ تجميع .NET بنقطة دخول Main() بدلاً من Main(string[] args) الافتراضية

الصيغة

root@kitploit:~
beacon> inlineExecute-Assembly --dotnetassembly /root/Desktop/simpleMain.exe --main

حالة الاستخدام

اذهب بقوة

الصيغة

root@kitploit:~
beacon> inlineExecute-Assembly --dotnetassembly /root/Desktop/Seatbelt.exe --assemblyargs AntiVirus AppLocker --amsi --etw --appdomain forRealLegit --mailslot forRealLegit

تحذيرات

  1. بينما حاولت جعل هذا مستقرًا قدر الإمكان، لا توجد ضمانات بأن الأمور لن تتعطل أبدًا وأن beacons قد لا تموت. ليس لدينا الرفاهية الإضافية لـ fork-and-run حيث إذا حدث خطأ ما، يبقى beacon على قيد الحياة. هذه هي المقايضة مع BOFs. ومع ذلك، لا أستطيع التأكيد بما يكفي على أهمية اختبار تجميعاتك مسبقًا للتأكد من أنها ستعمل بشكل صحيح مع الأداة.
  2. نظرًا لأن BOF يتم تنفيذه داخل العملية ويستحوذ على beacon أثناء التشغيل، يجب أخذ هذا في الاعتبار قبل استخدامه للتجميعات طويلة الأمد. إذا اخترت تشغيل شيء يستغرق وقتًا طويلاً للحصول على النتائج، فلن يكون beacon نشطًا لتشغيل المزيد من الأوامر حتى تعود النتائج وينتهي تشغيل التجميع. وهذا أيضًا لا يلتزم بإعداد sleep. على سبيل المثال، إذا كانت فترة sleep مضبوطة على 10 دقائق وقمت بتشغيل BOF، ستحصل على النتائج فور انتهاء BOF.
  3. ما لم يتم إجراء تعديل على الأدوات التي تقوم بتحميل PE في الذاكرة (مثل SafetyKatz)، فمن المرجح أن تقتل هذه الأدوات beacon الخاص بك. تعمل الكثير من هذه الأدوات بشكل جيد مع execute-assembly لأنها تستطيع إرسال مخرجاتها النصية من العملية القربانية قبل الخروج. عندما تخرج عبر BOF الداخلي لدينا، فإنها تقتل عمليتنا، مما يقتل beacon الخاص بنا. يمكن تعديلها لتعمل ولكنني أنصح بتشغيل هذه الأنواع من التجميعات عبر execute-assembly لأن أشياء أخرى غير آمنة أمنيًا قد تُحمل في عمليتك ولا تُزال.
  4. إذا كان التجميع الخاص بك يستخدم Environment.Exit، فيجب إزالة ذلك لأنه سيقتل العملية وbeacon.
  5. يجب أن تكون أسماء named pipes وmail slots فريدة. إذا لم تستلم بيانات وكان beacon لا يزال حيًا، فالمشكلة على الأرجح هي أنك تحتاج إلى اختيار اسم مختلف لـ named pipe أو mail slot.

الكشف

بعض استراتيجيات الكشف والتخفيف التي يمكن استخدامها:

  1. يستخدم PAGE_EXECUTE_READWRITE عند إجراء تصحيح الذاكرة لـ AMSI و ETW. تم ذلك عن قصد ويجب أن يكون علامة حمراء حيث أن عددًا قليلًا جدًا من البرامج تحتوي على نطاقات ذاكرة بحماية PAGE_EXECUTE_READWRITE.
  2. الاسم الافتراضي لـ named pipe الذي تم إنشاؤه هو totesLegit. تم ذلك عن قصد ويمكن استخدام كشف التوقيع للإبلاغ عن ذلك.
  3. الاسم الافتراضي لـ mailslot الذي تم إنشاؤه هو totesLegit. تم ذلك عن قصد ويمكن استخدام كشف التوقيع للإبلاغ عن ذلك.
  4. الاسم الافتراضي لـ AppDomain الذي تم تحميله هو totesLegit. تم ذلك عن قصد ويمكن استخدام كشف التوقيع للإبلاغ عن ذلك.
  5. نصائح جيدة حول كشف الاستخدام الخبيث لـ .NET (بواسطة @bohops) هنا، (بواسطة F-Secure) هنا، و هنا
  6. البحث عن تحميل .NET CLR في عمليات مشبوهة، مثل العمليات غير المُدارة التي لا ينبغي أن تحمل CLR أبدًا.
  7. تتبع الأحداث هنا
  8. البحث عن مؤشرات IOC أخرى معروفة لـ Cobalt Strike Beacon أو مؤشرات IOC للاتصال الصادر/الاتصال بـ C2.
تنزيل الأداة