Detección de la ofuscación de Babel
Babel Obfuscator es una herramienta que ha ganado relevancia en el ámbito de los ensamblados .NET, sobre todo por su capacidad para hacerlos más resistentes a la ingeniería inversa. En esencia, Babel no se limita a ofuscar los nombres de los símbolos; va más allá y altera el código del ensamblado.
Esta transformación es un punto clave de análisis para quien intenta averiguar si un ensamblado ha sido ofuscado por Babel. En este proceso de análisis, la biblioteca Mono.Cecil resulta de gran ayuda. Esta biblioteca facilita la inspección y el análisis de ensamblados .NET, y permite examinar los metadatos del ensamblado y buscar las modificaciones características de Babel.
Babel Obfuscator emplea un esquema de renombrado propio, que a menudo usa caracteres Unicode ilegibles o cadenas ASCII para crear los nombres ofuscados. Al examinar estos nombres de símbolos e identificar los patrones característicos de la estrategia de renombrado de Babel, se puede determinar si el ensamblado ha sido ofuscado.
Además, cuando están activadas las funciones de protección por cifrado de Babel, se añade al ensamblado un inicializador de módulo. Este inicializador se encarga de preparar el código y de descifrar los datos que Babel Obfuscator ha ocultado. Su presencia suele ser una señal clara de la intervención de Babel.
Pero quizá el indicio más directo de la intervención de Babel sea el atributo BabelObfuscationAttribute. Cuando Babel está configurado para incluir este atributo en un ensamblado ofuscado, detectarlo confirma de forma casi concluyente el papel de Babel en el proceso de ofuscación.
Para quienes prefieran un enfoque más práctico, un proyecto de ejemplo en GitHub ilustra este proceso de detección.
git clone https://github.com/babelfornet/check-obfuscation-example.gitUna vez en el repositorio, abra el archivo .sln en Visual Studio. Con todo preparado, puede compilar y ejecutar el proyecto.
Este proyecto de ejemplo compila una aplicación CLI diseñada para comprobar si los ensamblados están ofuscados. Su uso es sencillo:
Usage: CheckObfuscation.exe <file|directory>Aquí, file es el archivo de ensamblado que quiere comprobar y directory es el directorio en el que quiere buscar ensamblados.
Con estas herramientas y estos conocimientos a su disposición, podrá reconocer los signos reveladores de la ofuscación de Babel en cualquier ensamblado .NET.