elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Estamos en la red social de Mastodon


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  [Delphi] Creacion de un Server Builder
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: [Delphi] Creacion de un Server Builder  (Leído 5,452 veces)
BigBear


Desconectado Desconectado

Mensajes: 545



Ver Perfil
[Delphi] Creacion de un Server Builder
« en: 15 Julio 2013, 23:44 pm »

[Titulo] : Creacion de un Server Builder
[Lenguaje] : Delphi
[Autor] : Doddy Hackman

[Temario]

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

0x01 : Introduccion
0x02 : Creacion del builder
0x03 : Creacion del stub
0x04 : Probando el programa

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

0x01 : Introduccion

Siempre quise hacer un Server Builder en delphi pero siempre me fue dificil porque nadie habia hecho un manual en Delphi donde se explicara , tampoco en los foros
de programacion me querian ayudar , entonces tuve que buscar mucho en google hasta encontrar un codigo simple donde se tratara de este tema.
Entonces encontre un codigo donde se trataba de este caso hecho en Delphi por alguien llamado Faceless Wonder , de esta forma me base del codigo de Faceless Wonder
para poder hacer uno bien basico para poder explicar en este tutorial.

Empecemos .......


0x02 : Creacion del builder

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



Ahora creamos dos edit y un boton como en la imagen :



Despues le damos doble click al boton para poner el siguiente codigo :

Código
  1. procedure TForm1.Button1Click(Sender: TObject);
  2. var
  3.  linea: string; // Declaramos todas las variables
  4.  aca: THandle;
  5.  code: Array [0 .. 80 + 1] of Char;
  6.  nose: DWORD;
  7.  marca_uno: string;
  8.  marca_dos: string;
  9.  
  10. begin
  11.  
  12.  marca_uno := '{IP}'; // Ponemos la marca para la IP
  13.  marca_dos := '{PORT}'; // Ponemos la marca para el puerto
  14.  
  15.  aca := INVALID_HANDLE_VALUE;
  16.  nose := 0;
  17.  
  18.  begin
  19.    linea := marca_uno + Edit1.Text + marca_uno + marca_dos + Edit2.Text +
  20.      marca_dos; // Formamos la linea con los datos de la IP y el Puerto
  21.    StrCopy(code, pchar(linea));
  22.    aca := CreateFile(pchar('server.exe'), GENERIC_WRITE, FILE_SHARE_READ, nil,
  23.      OPEN_EXISTING, 0, 0); // Abrimos el archivo server.exe
  24.    if (aca <> INVALID_HANDLE_VALUE) then
  25.    begin
  26.      SetFilePointer(aca, 0, nil, FILE_END);
  27.      WriteFile(aca, code, 80, nose, nil); // Escribimos en el archivo
  28.      CloseHandle(aca); // Cerramos el archivo
  29.    end;
  30.  end;
  31.  
  32. end;
  33.  

Otra imagen para que vean como quedo :



Con eso guardamos el proyecto y vamos al stub

0x03 : Creacion del stub

La parte vital y supuestamente mas dificil , la idea es que el archivo se lea a si mismo y busque lo que hicimos en el builder , para empezar hacemos lo mismo que el builder ,
creamos otro proyecto como la otra vez , File->New->VCL Forms Application , entonces agregamos dos edit y un boton como en la imagen.



Una vez hecho hacemos doble click en el boton y ponemos el siguiente codigo :

Código
  1. // Funcion para dividir el texto para buscar la IP y el Puerto
  2.  
  3. function regex(text: String; deaca: String; hastaaca: String): String;
  4. begin
  5.  Delete(text, 1, AnsiPos(deaca, text) + Length(deaca) - 1);
  6.  SetLength(text, AnsiPos(hastaaca, text) - 1);
  7.  Result := text;
  8. end;
  9.  
  10. procedure TForm1.Button1Click(Sender: TObject);
  11. var
  12.  ob: THandle; // Declaramos todas las variables
  13.  code: Array [0 .. 80 + 1] of Char;
  14.  nose: DWORD;
  15.  ip: string;
  16.  port: string;
  17.  
  18. begin
  19.  
  20.  ob := INVALID_HANDLE_VALUE;
  21.  code := '';
  22.  
  23.  // El programa se lee a si mismo
  24.  ob := CreateFile(pchar(paramstr(0)), GENERIC_READ, FILE_SHARE_READ, nil,
  25.    OPEN_EXISTING, 0, 0);
  26.  if (ob <> INVALID_HANDLE_VALUE) then
  27.  begin
  28.    SetFilePointer(ob, -80, nil, FILE_END);
  29.    ReadFile(ob, code, 80, nose, nil); // Extraemos el contenido y lo ponemos en la variable code
  30.    CloseHandle(ob); // Cerramos el archivo
  31.  end;
  32.  
  33.  ip := regex(code, '{IP}', '{IP}'); // Usamos la funcion regex para sacar la IP
  34.  port := regex(code, '{PORT}', '{PORT}'); // Usamos la funcion regex para sacar el puerto
  35.  
  36.  Edit1.text := ip; // Ponemos la IP en Edit1
  37.  Edit2.text := port; // Ponemos el puerto en Edit2
  38.  
  39. end;
  40.  

Una imagen de como queda :



Guarden el proyecto de forma que el ejecutable termine llamandose server.exe

Ahora que esta todo hecho pasamos al siguiente punto.

0x04 : Probando el programa

Bueno  ,ahora solo cargan el builder , ponen los datos que quieran y despues cargan el stub "server.exe" para cargar el boton del stub , entonces veran algo como esto



Como ven tambien use WinHex para cargar el ejecutable server.exe y verificar que realmente el builder habia hecho bien el trabajo.

Eso seria todo.

Si quieren bajar el manual en formato PDF lo pueden hacer de aca.

--========--
  The End ?
--========--


« Última modificación: 16 Julio 2013, 20:07 pm por Doddy » En línea

OmarHack


Desconectado Desconectado

Mensajes: 1.268


Ver Perfil
Re: [Delphi] Creacion de un Server Builder
« Respuesta #1 en: 16 Julio 2013, 03:18 am »

Hola, ¿Podrías explicarme cual es la finalidad del programa y que hace exactamente?
Parece interesante pero no logro entenderlo mucho. Un saludo.


En línea

I like to test things.
BigBear


Desconectado Desconectado

Mensajes: 545



Ver Perfil
Re: [Delphi] Creacion de un Server Builder
« Respuesta #2 en: 16 Julio 2013, 15:21 pm »

un server builder es lo basico para un troyano , aunque tambien te sirve para generar keyloggers que tienen datos generados por el usuario por ejemplo el servidor ftp que marco el usuario despues con el builder te genera el ejecutable , tambien te diria que sirve con joiners pero ya es otra cosa.
puede que me equivoque en algo porque no se como explicarme xDD.
 
En línea

0xDani


Desconectado Desconectado

Mensajes: 1.077



Ver Perfil
Re: [Delphi] Creacion de un Server Builder
« Respuesta #3 en: 16 Julio 2013, 15:27 pm »

Yo he conseguido hacer esto en Linux, pero yo lo hacía metiendo los datos en una variable previamente declarada en el código fuente del server. Es decir, declaraba la variable como estática y me aseguraba de que el símbolo tuviera el nombre que yo quisiera con la directiva de ensamblador. Después, en el builder buscaba el offset del símbolo en el ejecutable y escribía ahí esos bytes.

Así el server puede usar la variable directamente, sin necesidad de tener que abrirse a sí mismo.

Saludos.
En línea

I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM
BigBear


Desconectado Desconectado

Mensajes: 545



Ver Perfil
Re: [Delphi] Creacion de un Server Builder
« Respuesta #4 en: 16 Julio 2013, 15:30 pm »

en que distribucion de linux ?
En línea

OmarHack


Desconectado Desconectado

Mensajes: 1.268


Ver Perfil
Re: [Delphi] Creacion de un Server Builder
« Respuesta #5 en: 16 Julio 2013, 15:35 pm »

Me resulta interesante. Le echaré un vistazo en más profundidad.
Me imagino que el software de Dani servirá para cualquiera distribución no?
Un saludo y buen aporte!
En línea

I like to test things.
0xDani


Desconectado Desconectado

Mensajes: 1.077



Ver Perfil
Re: [Delphi] Creacion de un Server Builder
« Respuesta #6 en: 16 Julio 2013, 15:53 pm »

Lo hice en Ubuntu, pero se basa en el formato ELF, así que no es dependiente de la distribución. Lo único que necesita es que el ejecutable tenga una sección de strings con los nombres de los símbolos y una tabla de símbolos que me den los offsets.

PD: Si queréis código pedidlo, tengo que rebuscar un poco en mi ordenador xD
« Última modificación: 16 Julio 2013, 16:02 pm por 0xDani » En línea

I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM
OmarHack


Desconectado Desconectado

Mensajes: 1.268


Ver Perfil
Re: [Delphi] Creacion de un Server Builder
« Respuesta #7 en: 16 Julio 2013, 16:59 pm »

Es interesante, me gustaría verlo, si tal crea un tema para que la gente lo pueda ver, o ponlo aquí, como veas :)
En línea

I like to test things.
0xDani


Desconectado Desconectado

Mensajes: 1.077



Ver Perfil
Re: [Delphi] Creacion de un Server Builder
« Respuesta #8 en: 16 Julio 2013, 17:07 pm »

Es interesante, me gustaría verlo, si tal crea un tema para que la gente lo pueda ver, o ponlo aquí, como veas :)

Ok, estoy haciendo algo parecido a esto en Qt, me llevará un poco volverme a mirar la man page del elf, pero a lo sumo mañana o pasado posteo.

Saludos.
En línea

I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM
OmarHack


Desconectado Desconectado

Mensajes: 1.268


Ver Perfil
Re: [Delphi] Creacion de un Server Builder
« Respuesta #9 en: 16 Julio 2013, 18:37 pm »

Si es en qt mejor aún!
En línea

I like to test things.
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Creación de builder
Dudas Generales
Slore 0 1,427 Último mensaje 14 Julio 2012, 02:04 am
por Slore
Creación de builder
Programación Visual Basic
Slore 3 1,760 Último mensaje 15 Julio 2012, 01:16 am
por noele1995
[C#] Creacion de un Server Builder
.NET (C#, VB.NET, ASP)
BigBear 0 1,947 Último mensaje 29 Agosto 2014, 21:13 pm
por BigBear
[Delphi] Creacion de un Server Builder con recursos
Programación General
BigBear 0 1,595 Último mensaje 9 Marzo 2015, 18:45 pm
por BigBear
[C#] Creacion de un Server Builder con recursos
.NET (C#, VB.NET, ASP)
BigBear 0 1,558 Último mensaje 10 Marzo 2015, 18:08 pm
por BigBear
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines