La ofuscación en Javascript se hace generalmente generando el código dinámicamente. Si bien se encuentran ejemplos más antiguos que hacen un uso extensivo de chr(..)
o base64 o muchas heurísticas de detección de concatenaciones de cadenas mejoradas para marcar este tipo de código como potencialmente malicioso, de modo que los atacados mejoraron sus métodos. Ejemplos actuales típicos como este son no es fácilmente distinguible del código no malicioso.
Los métodos utilizados en el código malicioso para descifrar la ofuscación son los mismos métodos que se utilizan mucho en el código no malicioso, es decir, innerHTML
, document.write
etc. Además, Javascript proporciona muchas formas diferentes de llamar a funciones como eval
, entre ellos, construir el nombre de la función a partir de una cadena antes de llamarla.
En resumen: no hay caracteres ni declaraciones que sean típicos de JavaScript ofuscado moderno pero que no se encuentran en ningún otro lugar. Especialmente si observa la salida de los minificadores que a menudo se usan para ahorrar ancho de banda y mejorar los tiempos de carga, encontrará más similitudes entre el código minificado y el ofuscado que entre el código minificado y el código "normal".