Rilevare l’offuscamento Babel
Babel Obfuscator è uno strumento che si è affermato nel mondo degli assembly .NET soprattutto per la sua capacità di renderli più resistenti al reverse engineering. Babel non si limita a offuscare i nomi dei simboli: va più a fondo e modifica il codice dell’assembly.
Questa trasformazione è il punto da cui partire per chi vuole accertare se un assembly è stato offuscato da Babel. In questa indagine la libreria Mono.Cecil è un valido aiuto. La libreria facilita l’ispezione e l’analisi degli assembly .NET, e permette di esaminare i metadati dell’assembly e di cercare le modifiche che portano il segno distintivo di Babel.
Babel Obfuscator adotta uno schema di ridenominazione particolare, che spesso usa caratteri Unicode illeggibili o stringhe ASCII per creare i nomi offuscati. Esaminando i nomi dei simboli e individuando gli schemi caratteristici della strategia di ridenominazione di Babel, puoi stabilire se l’assembly è stato offuscato.
Inoltre, quando sono attive le funzionalità di protezione di Babel basate sulla cifratura, all’assembly viene aggiunto un inizializzatore di modulo. Questo inizializzatore si occupa di predisporre il codice e di decifrare i dati che Babel Obfuscator ha nascosto. La sua presenza è spesso un segnale che indica l’intervento di Babel.
Ma l’indizio forse più diretto dell’intervento di Babel è BabelObfuscationAttribute. Quando Babel è configurato per includere questo attributo in un assembly offuscato, il suo rilevamento conferma in modo quasi definitivo il ruolo di Babel nel processo di offuscamento.
Per chi preferisce un approccio più pratico, un progetto di esempio su GitHub illustra questo processo di rilevamento.
git clone https://github.com/babelfornet/check-obfuscation-example.gitUna volta nel repository, apri il file .sln in Visual Studio. A questo punto puoi compilare ed eseguire il progetto.
Questo progetto di esempio compila un’applicazione da riga di comando pensata per verificare se gli assembly sono offuscati. L’utilizzo è semplice:
Usage: CheckObfuscation.exe <file|directory>Dove file è il file dell’assembly che vuoi controllare e directory indica la cartella in cui cercare gli assembly.
Con questi strumenti e queste conoscenze saprai riconoscere i segni rivelatori dell’offuscamento di Babel in qualsiasi assembly .NET.