
.NET/PowerShell/VBA Offuscatore per la Sicurezza Offensiva
[!CAUTION] Questo repository non è più mantenuto, visita https://github.com/sadreck/Codecepticon per l'ultima versione.
Codecepticon è un'applicazione .NET che permette di offuscare codice sorgente C#, VBA/VB6 (macro) e PowerShell, sviluppata per attività offensive di sicurezza come Red/Purple Team. Ciò che distingue Codecepticon da altri offuscatori è che colpisce il codice sorgente anziché gli eseguibili compilati, ed è stato sviluppato specificamente per l'evasione di AV/EDR.
Codecepticon consente di offuscare e riscrivere il codice, ma offre anche funzionalità come la riscrittura della riga di comando.
! Prima di iniziare !
Questa documentazione riguarda solo l'installazione e l'utilizzo di Codecepticon. Non verrà fornita assistenza per la compilazione, l'uso o il supporto di strumenti come Rubeus e SharpHound. Fare riferimento separatamente al repository di ciascun progetto per maggiori informazioni.
Codecepticon è attivamente sviluppato/testato in VS2022, ma dovrebbe funzionare anche in VS2019. Qualsiasi ticket/segnalazione creata per VS2019 e versioni precedenti non verrà presa in esame a meno che il problema non sia riproducibile in VS2022. Quindi si prega di utilizzare l'ultima versione di VS2022.
I seguenti pacchetti DEVONO essere v3.9.0, poiché le versioni più recenti presentano il seguente problema ancora aperto: https://github.com/dotnet/roslyn/issues/58463
Codecepticon verifica la versione di questi pacchetti all'avvio e ti informerà se la versione è diversa dalla 3.9.0.
Non si può sottolineare abbastanza: testa sempre il codice offuscato localmente prima.


Apri Codecepticon, attendi che tutti i pacchetti NuGet siano scaricati e poi compila la soluzione.
Ci sono due modi per usare Codecepticon: inserire tutti gli argomenti nella riga di comando oppure passare un singolo file di configurazione XML. A causa dell'elevato numero di personalizzazioni supportate, non è consigliabile esaminare manualmente l'output di --help per cercare di capire quali parametri usare e come. Usa CommandLineGenerator.html e genera rapidamente il tuo comando:

Il formato di output del generatore di comandi può essere Console o XML, a seconda delle preferenze. I comandi della console possono essere eseguiti come:
Codecepticon.exe --action obfuscate --module csharp --verbose ...eccetera
Mentre quando si utilizza un file di configurazione XML, come:
Codecepticon.exe --config C:\Tuo\Percorso\Al\File.xml
Se vuoi approfondire le funzionalità di Codecepticon, dai un'occhiata a questo documento.
Per suggerimenti utili, vedi questo documento.
Offuscare un progetto C# è semplice, basta selezionare la soluzione che si desidera targetizzare. Nota che non verrà creata una copia di backup della soluzione stessa e quella corrente verrà offuscata. Assicurati di poter compilare indipendentemente il progetto target prima di provare a eseguire Codecepticon contro di esso.
L'offuscamento VBA agisce sul codice sorgente stesso piuttosto che su un documento Microsoft Office. Ciò significa che non è possibile passare un file doc(x) o xls(x) a Codecepticon. Dovrà essere il codice sorgente del modulo stesso (premi Alt-F11 e copia il codice da lì).
A causa della complessità degli script PowerShell, insieme alla libertà che offre nel modo di scrivere script, è difficile coprire tutti i casi limite e garantire che il risultato offuscato sia completamente funzionale. Sebbene ci si aspetti che Codecepticon funzioni bene con script/funzionalità semplici, eseguirlo su script complessi come PowerView non funzionerà - è un lavoro in corso.
Dopo aver offuscato un'applicazione o uno script, è molto probabile che anche gli argomenti della riga di comando siano stati rinominati. La soluzione è utilizzare il file di mappatura HTML per trovare i nuovi nomi. Ad esempio, convertiamo la seguente riga di comando:
SharpHound.exe --CollectionMethods DCOnly --OutputDirectory C:\temp\
Cercando nel file di mappatura HTML ogni argomento, otteniamo:



E sostituendo tutte le stringhe il risultato è:
ObfuscatedSharpHound.exe --AphylesPiansAsp TurthsTance --AnineWondon C:\temp\
Tuttavia, alcuni valori possono esistere in più di una categoria:

Pertanto è fondamentale testare sempre il risultato in un ambiente locale prima.
È anche possibile utilizzare Codecepticon per firmare digitalmente file eseguibili (l'output compilato). Codecepticon può sia generare un certificato di firma per te, sia utilizzarlo (o qualsiasi altro tu possa fornire) per firmare il file target.
L'output compilato include molte DLL di dipendenze che, a causa dei requisiti di licenza, non possiamo ridistribuire senza un consenso scritto.
No, Codecepticon dovrebbe funzionare con tutto. I profili sono solo piccole regolazioni extra applicate al progetto target per renderlo più affidabile e facile da gestire.
Ma poiché tutto il codice è unico, ci saranno casi in cui l'offuscamento di un progetto terminerà con uno o due errori che ne impediranno la compilazione o l'esecuzione. In tal caso potrebbe essere necessario un nuovo profilo: per favore apri una nuova segnalazione se è così.
Lo stesso principio si applica al codice PowerShell/VBA, anche se attualmente non hanno profili inclusi in Codecepticon, è un compito semplice aggiungerli se necessario.
Per segnalare bug e suggerire nuove funzionalità, per favore crea un'issue.
Per inviare pull request, vedi la sezione Contributi.
Prima di eseguire Codecepticon assicurati di poter compilare una versione pulita del progetto target. Molto spesso quando si verifica questo problema, è dovuto a dipendenze mancanti per la soluzione target piuttosto che a Codecepticon. Ma se ancora non compila:
Farò del mio meglio, ma poiché gli script PowerShell possono essere MOLTO complessi e PSParser non è avanzato come Roslyn per C#, non posso promettere nulla. Lo stesso vale per VBA/VB6.
Potresti incontrare il seguente errore:

Sto ancora cercando di risalire alla causa, una soluzione rapida è disinstallare e reinstallare il pacchetto System.Collections.Immutable dal Gestore pacchetti NuGet.
Che si tratti di un refuso, di un bug o di una nuova funzionalità, Codecepticon è molto aperto ai contributi purché concordiamo su quanto segue: