
Obfuscator per la sicurezza offensiva .NET/PowerShell/VBA
Codecepticon è un'applicazione .NET che consente di offuscare il codice sorgente C#, VBA/VB6 (macro) e PowerShell, ed è sviluppata per attività di sicurezza offensiva come i Red/Purple Team. Ciò che distingue Codecepticon dagli altri offuscatori è che prende di mira il codice sorgente anziché gli eseguibili compilati, ed è stata sviluppata specificamente per l'evasione da AV/EDR.
Codecepticon consente di offuscare e riscrivere il codice, ma fornisce anche funzionalità come la riscrittura della riga di comando.
! Prima di iniziare !
Questa documentazione riguarda esclusivamente l'installazione e l'utilizzo di Codecepticon. La compilazione, l'utilizzo e il supporto per strumenti come Rubeus e SharpHound non saranno forniti. Fare riferimento al repository di ciascun progetto separatamente per maggiori informazioni.
Codecepticon è attivamente sviluppato/testato in VS2022, ma dovrebbe funzionare anche in VS2019. Eventuali ticket/issue creati per VS2019 e versioni precedenti non saranno esaminati a meno che il problema non sia riproducibile in VS2022. Quindi si prega di utilizzare l'ultima e migliore 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 in fase di esecuzione e ti informerà se la versione è diversa dalla v3.9.0.
Non ci si stancherà mai di ripeterlo: testare sempre prima localmente il codice offuscato.


Aprire Codecepticon, attendere il download di tutti i pacchetti NuGet e quindi compilare la soluzione. È anche possibile scaricare una Release precompilata.
Esistono due modi per utilizzare Codecepticon: inserendo tutti gli argomenti nella riga di comando oppure passando un singolo file di configurazione XML. A causa dell'elevato livello di personalizzazioni supportate, non è consigliabile scorrere manualmente l'output di --help per cercare di capire quali parametri usare e come. Utilizzare CommandLineGenerator.html e generare rapidamente il comando:

Il formato di output del generatore di comandi può essere Console o XML, a seconda delle preferenze. I comandi Console possono essere eseguiti come:
Codecepticon.exe --action obfuscate --module csharp --verbose ...etc
Quando si utilizza un file di configurazione XML, come:
Codecepticon.exe --config C:\Your\Path\To\The\File.xml
Se vuoi approfondire il funzionamento di Codecepticon, consulta questo documento.
Per suggerimenti che puoi utilizzare, consulta questo documento.
Offuscare un progetto C# è semplice: basta selezionare la soluzione che si desidera prendere di mira. Tieni presente che non verrà creato un backup della soluzione stessa, e quella corrente sarà quella che verrà offuscata. Assicurati di poter compilare autonomamente il progetto di destinazione prima di provare a eseguire Codecepticon su di esso.
L'offuscamento VBA funziona sul codice sorgente stesso anziché su un documento Microsoft Office. Ciò significa che non puoi 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 su come scrivere gli script, è difficile coprire tutti i casi limite e garantire che il risultato offuscato sia completamente funzionale. Sebbene ci si aspetti che Codecepticon funzioni correttamente su script/funzionalità semplici, eseguirlo su quelli complessi come PowerView non funzionerà - questo è 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 mapping HTML per scoprire quali sono i nuovi nomi. Ad esempio, convertiamo la seguente riga di comando:
SharpHound.exe --CollectionMethods DCOnly --OutputDirectory C:\temp\
Cercando nel file di mapping HTML per 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.