¿Qué es el JavaScript Packed?
El JavaScript packed (JavaScript empaquetado) es una técnica utilizada para ofuscar y comprimir código JavaScript, lo que lo hace difícil de leer y analizar. Esta técnica es comúnmente utilizada tanto en aplicaciones legítimas para proteger el código, como por actores maliciosos para ocultar su actividad. Uno de los métodos más populares para empaquetar JavaScript es a través de la función eval()
, que ejecuta código JavaScript contenido en una cadena de texto.
Cuando encuentras un script empaquetado, el objetivo principal es desofuscarlo para entender qué hace realmente el código. En este artículo, te mostraremos cómo desofuscar JavaScript packed paso a paso y cómo puedes hacerlo de manera segura.
¿Por qué se utiliza JavaScript Packed?
El uso de JavaScript packed es común cuando se busca ocultar el código original, hacerlo más compacto o protegerlo de modificaciones. Sin embargo, esta técnica también es utilizada por scripts maliciosos, como aquellos que se distribuyen a través de ataques de phishing o sitios web comprometidos. Por lo tanto, es esencial saber cómo desofuscar JavaScript packed para analizar su comportamiento y entender sus intenciones.
Pasos para Desofuscar JavaScript Packed
Si te encuentras con un archivo o un fragmento de código JavaScript empaquetado, sigue estos pasos para desofuscarlo y comprender su contenido:
1. Identificar el uso de eval()
El uso de la función eval()
es uno de los métodos más comunes para empaquetar código. El código dentro de eval()
generalmente está ofuscado o comprimido, y su ejecución depende de una cadena de texto que contiene el código real. Aquí hay un ejemplo típico:
eval('some encoded or obfuscated code here');
Dentro de la función eval()
, podrías encontrar una cadena de texto codificada que necesita ser desofuscada.
2. Extraer la cadena ofuscada
Una vez que hayas identificado la cadena de texto dentro de eval()
, el siguiente paso es extraerla. Puede estar en formatos como Base64, Hexadecimal o incluso como un arreglo de caracteres o números.
3. Desofuscar la cadena
Si el código está en Base64, utiliza una herramienta en línea para decodificarlo. Hay herramientas como el decodificador Base64 de CodeToolsBox que te permitirán hacerlo de forma rápida y fácil. Si la cadena está en otro formato, como Hexadecimal, existen herramientas específicas para esos casos.
4. Reemplazar eval()
por console.log()
Después de extraer y desofuscar la cadena, puedes reemplazar la función eval()
por console.log()
para ver el contenido decodificado en la consola de tu navegador:
console.log(decodedString);
Este paso te permitirá observar el código desofuscado antes de ejecutarlo.
5. Ejecutar el código en un entorno seguro
Nunca ejecutes código desofuscado directamente en tu entorno de producción. Usa un entorno controlado (como un sandbox o una consola de navegador con las protecciones adecuadas) para evitar cualquier tipo de daño.
Herramientas para Desofuscar JavaScript Packed
Para desofuscar JavaScript packed, existen varias herramientas útiles que te pueden ayudar en el proceso:
- Decodificador Base64 de CodeToolsBox: Una herramienta sencilla para decodificar cadenas en Base64 que puedas encontrar en el código empaquetado.
- JavaScript Beautifier: Permite embellecer y desofuscar código JavaScript, haciéndolo más legible y fácil de analizar.
- JSUnpack: Una herramienta especializada en el análisis y desofuscación de JavaScript empaquetado.
Cómo Evitar la Ejecución de Código Malicioso
Al tratar con JavaScript empaquetado, siempre es importante proceder con precaución. Si el código proviene de una fuente no confiable, podría estar ejecutando acciones maliciosas. Para asegurarte de que el código es seguro, sigue estas recomendaciones:
- Analiza el código en un entorno seguro.
- No ejecutes directamente ningún código sospechoso sin antes revisarlo a fondo.
- Utiliza herramientas de análisis de seguridad para verificar si el código realiza acciones maliciosas.