
Obfuscador de seguridad ofensiva para .NET/PowerShell/VBA
Codecepticon es una aplicación .NET que permite ofuscar código fuente de C#, VBA/VB6 (macros) y PowerShell, y está desarrollada para compromisos de seguridad ofensiva como los Red/Purple Teams. Lo que diferencia a Codecepticon de otros ofuscadores es que se dirige al código fuente en lugar de a los ejecutables compilados, y fue desarrollada específicamente para la evasión de AV/EDR.
Codecepticon permite ofuscar y reescribir código, pero también proporciona características como la reescritura de la línea de comandos.
! Antes de comenzar !
Esta documentación trata únicamente sobre cómo instalar y usar Codecepticon. No se proporcionará compilación, uso ni soporte para herramientas como Rubeus y SharpHound. Consulte el repositorio de cada proyecto por separado para más información.
Codecepticon se desarrolla y prueba activamente en VS2022, pero debería funcionar también en VS2019. Cualquier ticket/issue creado para VS2019 y versiones anteriores no será investigado a menos que el problema sea reproducible en VS2022. Por lo tanto, utilice la última y mejor versión de VS2022.
Los siguientes paquetes DEBEN ser v3.9.0, ya que las versiones más recientes tienen el siguiente problema que sigue abierto: https://github.com/dotnet/roslyn/issues/58463
Codecepticon comprueba la versión de estos paquetes en tiempo de ejecución y le informará si la versión es diferente a la v3.9.0.
No se puede insistir lo suficiente en esto: pruebe siempre su código ofuscado localmente primero.


Abra Codecepticon, espere hasta que todos los paquetes NuGet se hayan descargado y luego compile la solución. También puede descargar un Release precompilado.
Hay dos formas de usar Codecepticon: ya sea colocando todos los argumentos en la línea de comandos o pasando un único archivo de configuración XML. Debido al alto nivel de personalizaciones admitidas, no se recomienda revisar manualmente la salida de --help para intentar averiguar qué parámetros usar y cómo. Utilice CommandLineGenerator.html y genere su comando rápidamente:

El formato de salida del generador de comandos puede ser Console o XML, según su preferencia. Los comandos de consola se pueden ejecutar como:
Codecepticon.exe --action obfuscate --module csharp --verbose ...etc
Al usar un archivo de configuración XML, como:
Codecepticon.exe --config C:\Your\Path\To\The\File.xml
Si quieres profundizar en la funcionalidad de Codecepticon, consulta este documento.
Para consejos que puedes utilizar, consulta este documento.
Ofuscar un proyecto de C# es sencillo, simplemente selecciona la solución que deseas objetivo. Ten en cuenta que no se realizará una copia de seguridad de la solución en sí, y la actual será la que se ofusque. Asegúrate de que puedes compilar el proyecto objetivo de forma independiente antes de intentar ejecutar Codecepticon contra él.
La ofuscación de VBA funciona contra el código fuente en sí en lugar de contra un documento de Microsoft Office. Esto significa que no puedes pasar un archivo doc(x) o xls(x) a Codecepticon. Tendrá que ser el código fuente del módulo en sí (pulsa Alt-F11 y copia el código desde allí).
Debido a la complejidad de los scripts de PowerShell, junto con la libertad que proporciona a la hora de escribir scripts, es un desafío cubrir todos los casos límite y garantizar que el resultado ofuscado sea completamente funcional. Aunque se espera que Codecepticon funcione bien con scripts/funcionalidades simples, ejecutarlo contra scripts complejos como PowerView no funcionará; esto es un trabajo en curso.
Después de ofuscar una aplicación o un script, es muy probable que los argumentos de línea de comandos también hayan sido renombrados. La solución a esto es utilizar el archivo de mapeo HTML para encontrar cuáles son los nuevos nombres. Por ejemplo, convirtamos la siguiente línea de comandos:
SharpHound.exe --CollectionMethods DCOnly --OutputDirectory C:\temp\
Al buscar en el archivo de mapeo HTML para cada argumento, obtenemos:



Y al reemplazar todas las cadenas, el resultado es:
ObfuscatedSharpHound.exe --AphylesPiansAsp TurthsTance --AnineWondon C:\temp\
Sin embargo, algunos valores pueden existir en más de una categoría:

Por lo tanto, es crítico probar siempre tu resultado primero en un entorno local.