Détecter l’obfuscation Babel
Babel Obfuscator est un outil reconnu dans le domaine des assemblies .NET, principalement grâce à sa capacité à les rendre plus résistants à la rétro-ingénierie. Babel ne se contente pas d’obfusquer les noms de symboles : il va plus loin et modifie le code de l’assembly.
Cette transformation est un élément central pour qui cherche à déterminer si un assembly a été obfusqué par Babel. La bibliothèque Mono.Cecil est d’une grande aide dans cette recherche. Elle facilite l’inspection et l’analyse des assemblies .NET et permet d’explorer les métadonnées de l’assembly à la recherche de modifications caractéristiques de Babel.
Babel Obfuscator emploie un schéma de renommage qui lui est propre et utilise souvent des caractères Unicode illisibles ou des chaînes ASCII pour créer les noms obfusqués. En examinant ces noms de symboles et en repérant les motifs caractéristiques de la stratégie de renommage de Babel, il est possible de déterminer si l’assembly a été obfusqué.
En outre, lorsque les fonctionnalités de protection par chiffrement de Babel sont activées, un initialiseur de module est ajouté à l’assembly. Cet initialiseur met en place le code et déchiffre les données que Babel Obfuscator a masquées. Sa présence est souvent le signe de l’intervention de Babel.
Mais l’indication la plus directe du passage de Babel est sans doute l’attribut BabelObfuscationAttribute. Lorsque Babel est configuré pour inclure cet attribut dans un assembly obfusqué, sa détection confirme de façon presque certaine le rôle de Babel dans le processus d’obfuscation.
Pour ceux qui préfèrent une approche plus pratique, un projet d’exemple sur GitHub illustre ce processus de détection.
git clone https://github.com/babelfornet/check-obfuscation-example.gitUne fois dans le dépôt, ouvrez le fichier .sln dans Visual Studio. Lorsque tout est en place, vous pouvez compiler et exécuter le projet.
Ce projet d’exemple compile une application CLI conçue pour tester si des assemblies sont obfusqués. Son utilisation est simple :
Usage: CheckObfuscation.exe <file|directory>Où file désigne le fichier d’assembly à vérifier et directory le répertoire dans lequel rechercher des assemblies.
Avec ces outils et ces connaissances, vous saurez repérer les signes révélateurs de l’obfuscation Babel dans n’importe quel assembly .NET.