
.NET/PowerShell/VBA Obfuscateur de sécurité offensive
[!CAUTION] Ce dépôt n'est plus maintenu, visitez https://github.com/sadreck/Codecepticon pour la dernière version.
Codecepticon est une application .NET qui vous permet d'offusquer du code source C#, VBA/VB6 (macros) et PowerShell, et est développée pour des engagements de sécurité offensive comme les équipes rouges/pourpres. Ce qui distingue Codecepticon des autres offuscateurs est qu'il cible le code source plutôt que les exécutables compilés, et a été développé spécifiquement pour l'évasion AV/EDR.
Codecepticon vous permet d'offusquer et de réécrire du code, mais offre également des fonctionnalités comme la réécriture de la ligne de commande.
! Avant de commencer !
Cette documentation concerne uniquement l'installation et l'utilisation de Codecepticon. La compilation, l'utilisation et le support d'outils comme Rubeus et SharpHound ne seront pas fournis. Référez-vous au dépôt de chaque projet séparément pour plus d'informations.
Codecepticon est activement développé/testé dans VS2022, mais il devrait fonctionner aussi dans VS2019. Tout ticket/problème créé pour VS2019 et inférieur ne sera pas examiné à moins que le problème ne soit reproductible dans VS2022. Veuillez donc utiliser la dernière et meilleure version de VS2022.
Les paquets suivants DOIVENT être en v3.9.0, car les versions plus récentes ont le problème suivant qui est toujours ouvert : https://github.com/dotnet/roslyn/issues/58463
Codecepticon vérifie la version de ces paquets au moment de l'exécution et vous informera si la version est différente de v3.9.0.
Cela ne peut pas être assez souligné : testez toujours votre code offusqué localement d'abord.


Ouvrez Codecepticon, attendez que tous les paquets NuGet soient téléchargés, puis construisez la solution.
Il y a deux façons d'utiliser Codecepticon : soit en mettant tous les arguments dans la ligne de commande, soit en passant un seul fichier de configuration XML. En raison du haut niveau de personnalisations supportées, il n'est pas recommandé de parcourir manuellement la sortie de --help pour essayer de comprendre quels paramètres utiliser et comment. Utilisez CommandLineGenerator.html et générez votre commande rapidement :

Le format de sortie du générateur de commandes peut être soit Console soit XML, selon ce que vous préférez. Les commandes console peuvent être exécutées comme suit :
Codecepticon.exe --action obfuscate --module csharp --verbose ...etc
Tandis qu'avec un fichier de configuration XML, comme ceci :
Codecepticon.exe --config C:\Your\Path\To\The\File.xml
Si vous voulez plonger en profondeur dans les fonctionnalités de Codecepticon, consultez ce document.
Pour des conseils que vous pouvez utiliser, consultez ce document.
L'offuscation d'un projet C# est simple, sélectionnez simplement la solution que vous souhaitez cibler. Notez qu'aucune sauvegarde de la solution elle-même ne sera effectuée, et que la solution actuelle sera celle qui sera offusquée. Assurez-vous de pouvoir compiler indépendamment le projet cible avant d'essayer d'exécuter Codecepticon contre lui.
L'offuscation VBA fonctionne sur le code source lui-même plutôt que sur un document Microsoft Office. Cela signifie que vous ne pouvez pas passer un fichier doc(x) ou xls(x) à Codecepticon. Il faudra utiliser le code source du module lui-même (appuyez sur Alt-F11 et copiez le code à partir de là).
En raison de la complexité des scripts PowerShell, ainsi que de la liberté qu'il offre dans la façon d'écrire les scripts, il est difficile de couvrir tous les cas limites et de garantir que le résultat offusqué sera entièrement fonctionnel. Bien qu'il soit attendu que Codecepticon fonctionne correctement avec des scripts/fonctionnalités simples, l'exécuter contre des scripts complexes comme PowerView ne fonctionnera pas - c'est un travail en cours.
Après avoir offusqué une application ou un script, il est très probable que les arguments de ligne de commande aient également été renommés. La solution consiste à utiliser le fichier de mappage HTML pour trouver les nouveaux noms. Par exemple, convertissons la ligne de commande suivante :
SharpHound.exe --CollectionMethods DCOnly --OutputDirectory C:\temp\
En recherchant dans le fichier de mappage HTML chaque argument, nous obtenons :



Et en remplaçant toutes les chaînes, le résultat est :
ObfuscatedSharpHound.exe --AphylesPiansAsp TurthsTance --AnineWondon C:\temp\
Cependant, certaines valeurs peuvent exister dans plus d'une catégorie :

Par conséquent, il est critique de toujours tester votre résultat dans un environnement local d'abord.
Il est également possible d'utiliser Codecepticon pour signer numériquement des fichiers exécutables (votre sortie compilée). Codecepticon peut à la fois générer un certificat de signature pour vous, et aussi l'utiliser (ou tout autre que vous pouvez fournir) pour signer votre fichier cible.