
.NET/PowerShell/VBA مبهم الأمان الهجومي
[!CAUTION] هذا المستودع غير مُدار، يُرجى زيارة https://github.com/sadreck/Codecepticon للحصول على أحدث إصدار.
Codecepticon هو تطبيق .NET يتيح لك إخفاء كود المصدر للغات C# و VBA/VB6 (وحدات ماكرو) و PowerShell، وقد تم تطويره لاستخدامات الاختبارات الأمنية الهجومية مثل فرق الأحمر/الأرجواني. ما يميز Codecepticon عن أدوات الإخفاء الأخرى هو أنه يستهدف كود المصدر بدلاً من الملفات التنفيذية المترجمة، وقد تم تطويره خصيصًا لتجنب برامج مكافحة الفيروسات وأدوات الكشف والاستجابة (AV/EDR).
يتيح لك Codecepticon إخفاء وإعادة كتابة الكود، كما يوفر ميزات مثل إعادة كتابة سطر الأوامر أيضًا.
! قبل أن نبدأ !
هذه الوثائق تتعلق فقط بكيفية تثبيت واستخدام Codecepticon. لن يتم تقديم معلومات حول تجميع أو استخدام أو دعم أدوات مثل Rubeus و SharpHound. يُرجى الرجوع إلى مستودع كل مشروع على حدة لمزيد من المعلومات.
يتم تطوير واختبار Codecepticon بشكل نشط في VS2022، ولكن من المفترض أن يعمل أيضًا في VS2019. لن يتم التحقيق في أي طلبات أو مشكلات تخص VS2019 والإصدارات الأقدم، ما لم تكن المشكلة قابلة للتكرار في VS2022. لذا يُرجى استخدام أحدث إصدار VS2022.
الحزم التالية يجب أن تكون الإصدار 3.9.0، لأن الإصدارات الأحدث تحتوي على المشكلة التالية والتي لا تزال مفتوحة: https://github.com/dotnet/roslyn/issues/58463
يتحقق Codecepticon من إصدار هذه الحزم أثناء التشغيل وسيخبرك إذا كان الإصدار مختلفًا عن 3.9.0.
لا يمكن التأكيد على هذا بما فيه الكفاية: قم دائمًا باختبار الكود المُخفى محليًا أولاً.


افتح Codecepticon، انتظر حتى يتم تنزيل جميع حزم NuGet ثم قم ببناء الحل.
هناك طريقتان لاستخدام Codecepticon، إما بوضع جميع الوسائط في سطر الأوامر أو بتمرير ملف تكوين XML واحد. نظرًا لمستوى التخصيصات العالي المدعوم، لا يُنصح بالمرور يدويًا عبر مخرجات --help لمحاولة معرفة أي المعاملات يجب استخدامها وكيف. استخدم CommandLineGenerator.html لتوليد الأمر بسرعة:

يمكن أن يكون تنسيق مخرجات مولد الأوامر إما Console أو XML حسب ما تفضل. يمكن تنفيذ أوامر الكونسول كالتالي:
Codecepticon.exe --action obfuscate --module csharp --verbose ...إلخ
أما عند استخدام ملف تكوين XML، فكالتالي:
Codecepticon.exe --config C:\مسار\إلى\الملف.xml
إذا كنت ترغب في التعمق في وظائف Codecepticon، اطلع على هذا المستند.
للحصول على نصائح يمكنك استخدامها، اطلع على هذا المستند.
إخفاء مشروع C# بسيط، فقط قم بتحديد الحل الذي ترغب في استهدافه. لاحظ أنه لن يتم أخذ نسخة احتياطية من الحل نفسه، وسيتم إخفاء الحل الحالي. تأكد من أنه يمكنك تجميع المشروع المستهدف بشكل مستقل قبل محاولة تشغيل Codecepticon عليه.
يعمل إخفاء VBA على كود المصدر نفسه بدلاً من مستند Microsoft Office. هذا يعني أنه لا يمكنك تمرير ملف doc(x) أو xls(x) إلى Codecepticon. يجب أن يكون كود المصدر للوحدة نفسها (اضغط Alt-F11 وانسخ الكود من هناك).
نظرًا لتعقيد نصوص PowerShell، إلى جانب الحرية التي توفرها في كيفية كتابة النصوص، فمن الصعب تغطية جميع الحالات الطرفية وضمان أن النتيجة المُخفاة ستكون كاملة الوظائف. على الرغم من أنه من المتوقع أن يعمل Codecepticon بشكل جيد مع النصوص/الوظائف البسيطة، إلا أن تشغيله ضد نصوص معقدة مثل PowerView لن يعمل - هذا قيد التطوير.
بعد إخفاء تطبيق أو نص، من المحتمل جدًا أن يتم أيضًا إعادة تسمية وسائط سطر الأوامر. الحل لذلك هو استخدام ملف تعيين HTML لمعرفة الأسماء الجديدة. على سبيل المثال، لنقم بتحويل سطر الأوامر التالي:
SharpHound.exe --CollectionMethods DCOnly --OutputDirectory C:\temp\
من خلال البحث في ملف تعيين HTML عن كل وسيط، نحصل على:



وباستبدال جميع السلاسل النصية تكون النتيجة:
ObfuscatedSharpHound.exe --AphylesPiansAsp TurthsTance --AnineWondon C:\temp\
ومع ذلك، قد توجد بعض القيم في أكثر من فئة واحدة:

لذلك من الضروري دائمًا اختبار نتيجتك في بيئة محلية أولاً.
من الممكن أيضًا استخدام Codecepticon لتوقيع الملفات التنفيذية رقميًا (المخرجات المترجمة). يمكن لـ Codecepticon إنشاء شهادة توقيع لك، واستخدامها (أو أي شهادة أخرى قد توفرها) لتوقيع الملف المستهدف.
المخرجات المترجمة تتضمن العديد من مكتبات DLL التابعة، والتي بسبب متطلبات الترخيص لا يمكننا إعادة توزيعها دون موافقة كتابية.
لا، يجب أن يعمل Codecepticon مع كل شيء. ملفات التعريف هي مجرد تحسينات إضافية يتم إجراؤها على المشروع المستهدف لجعله أكثر موثوقية وسهولة في العمل.
ولكن نظرًا لأن كل كود فريد من نوعه، ستكون هناك حالات ينتهي فيها إخفاء مشروع بخطأ أو اثنين يمنع تجميعه أو تنفيذه. في هذه الحالة قد يكون من الضروري إنشاء ملف تعريف جديد - يرجى فتح مشكلة جديدة إذا كان هذا هو الحال.
نفس المبدأ ينطبق على كود PowerShell/VBA - على الرغم من أنه لا توجد حاليًا ملفات تعريف تأتي مع Codecepticon، إلا أنها مهمة سهلة الإضافة إذا لزم الأمر.
للإبلاغ عن الأخطاء واقتراح ميزات جديدة، يرجى إنشاء مشكلة.
لتقديم طلبات السحب، يرجى الاطلاع على قسم المساهمات.
قبل تشغيل Codecepticon، تأكد من أنه يمكنك تجميع نسخة نظيفة من المشروع المستهدف. غالبًا عندما تظهر هذه المشكلة، يكون السبب هو التبعيات المفقودة للحل المستهدف وليس Codecepticon. ولكن إذا لم يتم تجميعه بعد:
سأبذل قصارى جهدي، ولكن نظرًا لأن نصوص PowerShell يمكن أن تكون معقدة جدًا وأن PSParser ليس متقدمًا مثل Roslyn لـ C#، فلا يمكن تقديم وعود. نفس الشيء ينطبق على VBA/VB6.
قد تواجه في مرحلة ما الخطأ التالي:

لا زلت أحاول الوصول إلى جذور هذه المشكلة، الحل السريع هو إلغاء تثبيت وإعادة تثبيت حزمة System.Collections.Immutable من مدير حزم NuGet.
سواء كان خطأ إملائيًا، أو خللًا، أو ميزة جديدة، يرحب Codecepticon بالمساهمات بشدة طالما أننا نتفق على ما يلي: