
Obfuscador de Segurança Ofensiva .NET/PowerShell/VBA
O Codecepticon é uma aplicação .NET que permite ofuscar código-fonte C#, VBA/VB6 (macros) e PowerShell, e foi desenvolvida para engajamentos de segurança ofensiva, como Red/Purple Teams. O que diferencia o Codecepticon de outros ofuscadores é que ele atua sobre o código-fonte em vez dos executáveis compilados, e foi desenvolvido especificamente para evasão de AV/EDR.
O Codecepticon permite ofuscar e reescrever código, mas também oferece recursos como a reescrita da linha de comando.
! Antes de começarmos !
Esta documentação trata apenas de como instalar e usar o Codecepticon. Compilação, uso e suporte para ferramentas como Rubeus e SharpHound não serão fornecidos. Consulte o repositório de cada projeto separadamente para mais informações.
O Codecepticon é ativamente desenvolvido/testado no VS2022, mas deve funcionar também no VS2019. Quaisquer tickets/issues criados para VS2019 e anteriores não serão investigados, a menos que o problema seja reproduzível no VS2022. Portanto, use o VS2022 mais recente e atualizado.
Os seguintes pacotes DEVEM ser v3.9.0, pois versões mais recentes apresentam o seguinte problema, que ainda está aberto: https://github.com/dotnet/roslyn/issues/58463
O Codecepticon verifica a versão desses pacotes em tempo de execução e informará caso a versão seja diferente da v3.9.0.
Não é possível enfatizar isso o suficiente: sempre teste seu código ofuscado localmente primeiro.


Abra o Codecepticon, aguarde até que todos os pacotes NuGet sejam baixados e então compile a solução. Você também pode baixar um Release pré-compilado.
Há duas formas de usar o Codecepticon: colocando todos os argumentos na linha de comando ou passando um único arquivo de configuração XML. Devido ao alto nível de customizações suportadas, não é recomendável percorrer manualmente a saída de --help para tentar descobrir quais parâmetros usar e como. Use o CommandLineGenerator.html e gere seu comando rapidamente:

O formato de saída do gerador de comandos pode ser Console ou XML, dependendo da sua preferência. Comandos de console podem ser executados como:
Codecepticon.exe --action obfuscate --module csharp --verbose ...etc
Ao usar um arquivo de configuração XML, como:
Codecepticon.exe --config C:\Your\Path\To\The\File.xml
Se você quiser se aprofundar na funcionalidade do Codecepticon, consulte este documento.
Para dicas que você pode usar, consulte este documento.
Ofuscar um projeto C# é simples, basta selecionar a solução que você deseja atingir. Observe que um backup da própria solução não será feito, e a atual será a que será ofuscada. Certifique-se de que você consegue compilar o projeto alvo de forma independente antes de tentar executar o Codecepticon contra ele.
A ofuscação de VBA funciona contra o próprio código-fonte, e não contra um documento do Microsoft Office. Isso significa que você não pode passar um arquivo doc(x) ou xls(x) para o Codecepticon. Terá de ser o código-fonte do próprio módulo (pressione Alt-F11 e copie o código a partir daí).
Devido à complexidade dos scripts PowerShell, juntamente com a liberdade que ele proporciona na forma de escrever scripts, é desafiador cobrir todos os casos extremos e garantir que o resultado ofuscado será totalmente funcional. Embora se espere que o Codecepticon funcione bem com scripts/funcionalidades simples, executá-lo contra scripts complexos como o PowerView não funcionará — isto é um trabalho em andamento.
Após ofuscar uma aplicação ou um script, é muito provável que os argumentos de linha de comando também tenham sido renomeados. A solução para isso é usar o arquivo de mapeamento HTML para descobrir quais são os novos nomes. Por exemplo, vamos converter a seguinte linha de comando:
SharpHound.exe --CollectionMethods DCOnly --OutputDirectory C:\temp\
Ao pesquisar no arquivo de mapeamento HTML cada argumento, obtemos:



E ao substituir todas as strings, o resultado é:
ObfuscatedSharpHound.exe --AphylesPiansAsp TurthsTance --AnineWondon C:\temp\
No entanto, alguns valores podem existir em mais de uma categoria:

Portanto, é crítico sempre testar o seu resultado primeiro em um ambiente local.