Controlar botnet con PHP

Iniciado por Kaxperday, 15 Septiembre 2014, 14:00 PM

0 Miembros y 1 Visitante están viendo este tema.

Kaxperday

#20
CitarHoy en día todo mundo se esconde detrás de un router con un firewall que bloquean puertos de entrada.

Si que me funciono se produjo la conexión, otra cosa es que el hosting este limitado y a los pocos minutos denegara la conexión (PD sigo sin poder conectarme).
Al ejecutar el server me salto el firewall acepté y no me dió más problemas.
Pero si estoy de acuerdo si se trata de un hosting gratuito hay que cambiar la estrategia.

Citar
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

No entiendo, como hago para poner a servicio del bot esos comandos y que el acceda a ellos para ejecutarlos?

Como se descarga ese comando el bot y como lo ofrezco con el php?

CitarCon echo funciona perfecto..

Eso es como va eso del echo?, se supone que echo es para mostrar cadenas no? xD

Gracias.
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

#21
CitarNo entiendo, como hago para poner a servicio del bot esos comandos y que el acceda a ellos para ejecutarlos?
de la misma forma que te conectas a esta pagina, via web. php no necesita sockets para eso . como dice vaagish solo usa el comando echo(en c seria printf )

echo "un comando";

tendrias que documentarte sobre que es o como funciona http

prueba bajar el contenido de una web que este en tu host con telnet por ejemplo
buenas

Vaagish

Bueno, en resumidas cuentas y suponiendo que lo vas a hacer con "echos" y no con sockets..

Como dice daryo es la solucion

1 - El puerto 80 ya esta permitido en la PC y en los Routers
2 - La conexión la realiza el cliente, por lo tanto te evitas el cuadro de dialogo del firewall
3 - Es menos sospechoso
4 - etc, etc..

CitarCitar
Con echo funciona perfecto..

Eso es como va eso del echo? xD

Bueno, imagínate que tenes un webPanel donde podes ver tus clientes,, bueno.. ahora que queres enviarle el comando "WEBCAM" al cliente X para que te envie una captura de la camara.. Ese comando lo metes en una base de datos (le das una orden al cliente que tenes ya previamente "registrado")..
Bueno, ese cliente se va a volver a conectar (a pedir por una orden), en ese momento es cuando se vuelve a leer la base de datos, si hay un comando para ese bot, se lo envias con ECHO.. Doy por echo que sabes usar ECHO.. (si, quedo raro he jaja)

Bueno.. a grandes rasgos es asi, no hay mas ciencia.. Alguna pregunta puntual???

Saludos!

T. Collins

#23
Tienes que pensar como si los bots fuesen clientes de una web. Cada uno de ellos se conecta cada X tiempo y la web responde con una página en blanco. Si tú colocas un comando, en vez de ver la página en blanco, tienen que ver el comando:

Código (php) [Seleccionar]

<?php
echo $comando;
?>

MinusFour

Cita de: Kaxperday en 17 Septiembre 2014, 19:54 PM
Si que me funciono se produjo la conexión, otra cosa es que el hosting este limitado y a los pocos minutos denegara la conexión (PD sigo sin poder conectarme).
Al ejecutar el server me salto el firewall acepté y no me dió más problemas.
Pero si estoy de acuerdo si se trata de un hosting gratuito hay que cambiar la estrategia.

No entiendo, como hago para poner a servicio del bot esos comandos y que el acceda a ellos para ejecutarlos?

Como se descarga ese comando el bot y como lo ofrezco con el php?

Eso es como va eso del echo?, se supone que echo es para mostrar cadenas no? xD

Gracias.

A ver...

Tenemos 3 actores en esta situación:


Tu hosting
Los bots

Esto es lo que tengo entendido que quieres hacer.

Tú le pasas los comandos a tu hosting por medio de PHP, este envia los comandos a los bots y los bots ejecutan el comando.

El problema:

El hosting esta enviando los datos a los bots. La comunicación se da Hosting->Bots. Es decir, los bots estan escuchando los comandos que se envian atraves de un puerto. El puerto está abierto dentro de tu maquina y lo mas probable es que si puedas hacer una conexion local. El problema viene siendo cuando llega una petición de internet (tu hosting por ejemplo) y llega al router. Como la mayoría de los routers estan haciendo PAT o NAT, el router no tiene ni idea de quien esta escuchando por el puerto en cuestión y la conexión muere justo ahí en el router. La única forma es que el router supiera quien esta escuchando por ese puerto y para eso necesitas configurar el portforwarding y que lo asocie con la ip local. Los usuarios infectados no te van a hacer el portforwarding por tí. Sin mencionar que casí todos los anti virus te van a tronar el listener.

Nuevamente, el problema se da porque quieres hacer una conexion desde tu servidor a los bots. Donde realmente, tu servidor es meramente un cliente y tus bots si que son servidores. Entonces podríamos decir que tu cliente (el hosting) está enviando comandos a multiples servidores (los bots).

Otra vez:

Las botnets se "saltan" las firewalls a la inversa. Los bots actuan como clientes, se conectan a un servidor y el servidor les dice que hacer. Un cliente en especifico puede controlar el servidor y simplemente le dice al servidor que decir.

Kaxperday

#25
Bueno lo primero gracias a todos por las respuestas, tratare de interpretar la idea de daryo y minusfour, la diferencia con vaagish que yo al no saber crear bases de datos crearé un archivo para cada bot ese archivo lo podré manipular en cualquier momento cambiando los comandos en el, así pues tendría un directorio con algo así:

usuario1.php
usuario2.php
...

Edito: Los bots  conocen su nombre de usuario, solo tendrían que hacer el POST al directorio donde están todos los php de los bots... nombrebot1.php.. (estos archivos se crearán en el momento que el bot haga la primera subida de datos al servidor).

Pero ¿entonces los archivos usuario1.php... tendrían que tener algo asi no?

usuario1.php

Código (php) [Seleccionar]
<?
$comando = "dir";
echo $comando;
?>


Suponiendo que fuera así...

Y el bot para acceder al comando ¿qué código debería emplear para almacenarlo en una variable? ¿Debe de hacer una especie de POST a ese php? Es que nunca he usado echo con esa finalidad xD.

Saludos y gracias de nuevo xD

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

Bien.. creo que se podría hacer eso que decís.. El error de concepto que encuentro acá es:

CitarY el bot para acceder al comando ¿qué código debería emplear para almacenarlo en una variable?

El bot no accede al comando, el se "conecta a la pagina", tu webserver se fija que bot es, (puede ser por su ip) y le manda el comando,, digamos que el bot no abre ningun archivo ni ninguna base de datos.. eso seria imposible.. es el server quien administra las conexiones, y que enviarle a que cliente..

Suerte! Saludos!

El comando echo es lo mas facil de usar!!

ECHO "MFDLWC" (Mandame Fotos De La Web Cam")  :xD

Al cliente le llega ese dato ("MFDLWC") y listo,, la manda..  :silbar:

Suerte! Saludos!

T. Collins

#27
Para facilitar las cosas puedes hacer el bot en php también:

Código (php) [Seleccionar]

<?php
while(1){
        
$comando file_get_contents("http://localhost/servidor.php");
        
//Aqui haces lo que quieras con el comando
        
sleep(30);
}
?>


Kaxperday

#28
Entonces vale tengo esto en el PHP:

user1.php
Código (php) [Seleccionar]

<?
ECHO "MFDLWC";
?>


Y ahora esto en el cliente C:


int main()
{
char comando[50];
//Ahora como recibiría el comando conectándome a la página
return 0;
}


Lo demás lo he entendido, pero eso de visita a la página que debo usar sockets? O no sé como hacerlo entonces, el cliente C está vacío xD, es que no se como va eso, el php ya lo he pillado, ahora la parte del cliente para visitar la pagina puerto 80 usando http, ahí me pierdo indagaré en el asunto mientras.

CitarPara facilitar las cosas puedes hacer el bot en php

Oh eso sería maravilloso, pero a ser posible preferiría hacerlo en C para no mezclar aunque buena aportación, ya tengo algo.

Edito: Supongo que tendré que usar algo del estilo:

https://www.cs.utah.edu/~swalton/listings/sockets/programs/part1/chap4/http-client.c

Edito: He encontrado uno mejor, este es entre cliente java y server php: (aunque siguen siendo lenguajes de alto nivel xD)

http://stackoverflow.com/questions/6527037/php-server-java-client-post-and-echo

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