
.NET/PowerShell/VBA Ofuscador de Seguridad Ofensiva
[!CAUTION] Este repositorio no tiene mantenimiento, visite https://github.com/sadreck/Codecepticon para la versión más reciente.
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 ofensivos como Red/Purple Teams. Lo que distingue a Codecepticon de otros ofuscadores es que se enfoca en el código fuente en lugar de los ejecutables compilados, y fue desarrollado específicamente para evasión de AV/EDR.
Codecepticon permite ofuscar y reescribir código, pero también proporciona funcionalidades 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 es desarrollado/probado activamente en VS2022, pero debería funcionar también en VS2019. Los tickets/issues creados para VS2019 y versiones anteriores no serán investigados a menos que el problema sea reproducible en VS2022. Por lo tanto, use la versión más reciente, VS2022.
Los siguientes paquetes DEBEN ser v3.9.0, ya que versiones más recientes tienen el siguiente problema que aún está abierto: https://github.com/dotnet/roslyn/issues/58463
Codecepticon verifica la versión de estos paquetes en tiempo de ejecución y le informará si la versión es diferente a v3.9.0.
No se puede enfatizar lo suficiente: pruebe siempre su código ofuscado localmente primero.


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

El formato de salida del generador de comandos puede ser Console o XML, según lo que prefiera. Los comandos de consola se pueden ejecutar como:
Codecepticon.exe --action obfuscate --module csharp --verbose ...etc
Mientras que al usar un archivo de configuración XML, como:
Codecepticon.exe --config C:\Your\Path\To\The\File.xml
Si desea profundizar en la funcionalidad de Codecepticon, consulte este documento.
Para conocer consejos que puede usar, consulte este documento.
Ofuscar un proyecto C# es sencillo: simplemente seleccione la solución que desea apuntar. Tenga en cuenta que no se realizará una copia de seguridad de la solución en sí, y la actual será la que se ofuscará. Asegúrese de poder compilar el proyecto objetivo de forma independiente antes de intentar ejecutar Codecepticon contra él.
La ofuscación de VBA funciona sobre el código fuente en sí mismo, no sobre un documento de Microsoft Office. Esto significa que no puede pasar un archivo doc(x) o xls(x) a Codecepticon. Tendrá que ser el código fuente del propio módulo (presione Alt-F11 y copie el código desde allí).
Debido a la complejidad de los scripts de PowerShell, junto con la libertad que proporciona en cómo 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 progreso.
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 es usar el archivo de mapeo HTML para encontrar los nuevos nombres. Por ejemplo, convierta la siguiente línea de comandos:
SharpHound.exe --CollectionMethods DCOnly --OutputDirectory C:\temp\
Buscando en el archivo de mapeo HTML cada argumento, obtenemos:



Y reemplazando 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 su resultado en un entorno local primero.
También es posible usar Codecepticon para firmar digitalmente archivos ejecutables (su salida compilada). Codecepticon puede generar un certificado de firma para usted, y también usarlo (o cualquier otro que pueda proporcionar) para firmar su archivo objetivo.
La salida compilada incluye muchas DLL de dependencia que, debido a requisitos de licencia, no podemos redistribuir sin consentimiento por escrito.