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


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

يمكن أن يكون تنسيق مخرجات مُولِّد الأوامر إما Console أو XML، حسب ما تفضله. يمكن تنفيذ أوامر Console على النحو التالي:
Codecepticon.exe --action obfuscate --module csharp --verbose ...etc
عند استخدام ملف تكوين XML، كما في:
Codecepticon.exe --config C:\Your\Path\To\The\File.xml
إذا كنت ترغب في التعمق في وظائف Codecepticon، راجع هذا المستند.
للحصول على نصائح يمكنك استخدامها، راجع هذا المستند.
تعتبر عملية تشويش مشروع C# بسيطة، ما عليك سوى اختيار الحل (solution) الذي ترغب في استهدافه. لاحظ أنه لن يتم أخذ نسخة احتياطية من الحل نفسه، وسيكون الحل الحالي هو الذي سيتم تشويشه. تأكد من قدرتك على ترجمة المشروع المستهدف بشكل مستقل قبل محاولة تشغيل 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 لهما، فإن إضافتها مهمة سهلة إذا لزم الأمر.