
Обфускатор для наступательной безопасности на .NET/PowerShell/VBA
Codecepticon — это .NET-приложение, позволяющее обфусцировать исходный код C#, VBA/VB6 (макросы) и PowerShell, разработанное для задач наступательной безопасности, таких как Red/Purple Teams. Отличие 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, а затем соберите решение. Вы также можете скачать предварительно скомпилированный Release.
Есть два способа использования Codecepticon: либо указав все аргументы в командной строке, либо передав один XML-файл конфигурации. Из-за высокого уровня поддерживаемых настроек не рекомендуется вручную изучать вывод --help, чтобы попытаться понять, какие параметры использовать и как. Используйте CommandLineGenerator.html и быстро сгенерируйте свою команду:

Формат вывода генератора команд может быть Console или XML, в зависимости от ваших предпочтений. Команды консоли можно выполнить так:
Codecepticon.exe --action obfuscate --module csharp --verbose ...etc
При использовании XML-файла конфигурации, например:
Codecepticon.exe --config C:\Your\Path\To\The\File.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 может как сгенерировать для вас сертификат подписи, так и использовать его (или любой другой, который вы предоставите) для подписи целевого файла.