Jugando con el protocolo HTTP. Cliente/Servidor.

Iniciado por Hole_System, 7 Mayo 2008, 10:09 AM

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

Hole_System

Bueno la idea surge un poco a lo loco, soñando con hacking un poco de ganarme la vida otro poco como desafio entre otras mas... ;-)

Desde hace tiempo me revoleteava por la cabeza la idea de hacer un programa con el cual pudiera "por decir de alguna forma controlar el trafico HTTP, ojo es una forma de decir, usd le pueden poner nombre cientifico despues si quieren" enviar datos usando el protocolo HTTP como si fuese una "conexion directa", veran, todos sabemos que este protocolo es "sin estado" o sea que tu pides por ejemplo www.yahoo.es se te da la pagina y muere esa conexión, hasta ahi todo bien.

Bien pero si se ponen a pensar muchas empresas de hoy en dia incluyendo la mia tienen configurado sus proxys para no permitir conexiones directas mas bien para que puedan nada mas abrir WEB puerto 80 a full, asi no se desvinculan del trabajo tampoco puedan aprovecharse de la muy buena banda ancha, ;-) bla bla bla... asi que me dije bueno pq no utilizar el protocolo que gobierna mundialmente y del que nadie se espera casi nada para poder aprovecharlo empleandolos en troyanos. ;-) eso ultimo da aliento al hacking y no es mi meta asi que tachenlo...

Cual es la idea para mantener una conexion HTTP "con estado" usando los metodos GET y POST para ello? Facilito...usando a nuestros ingeniosos cezudos cerebros del foro, perdon a nuestro ingenioso, cezudo cerebro.. ;-)

Sabemos que el metodo POST te permite enviar informacion hacia los servidores Web, como por ejemplo cuando llenas un formulario para hacerte un correo, registrarte en este maravilloso Foro, cuando adjuntas las fotos que te sacastes para tu DNI para enviarselas a mama, etc.. y el GET es cuando solicitas una web... por poner un ejemplo rapido..

Recomiendo que veais el tema de Hades asi me ahorran escribir...este es el link

http://foro.elhacker.net/programacion_vb/winsock_protocolos_mas_usados_version_1_http-t186798.0.html

tengo otro link con un ejemplo muy bueno vere como hago para hacerselos llegar pues aqui parecen que ya borraron el tema..si se sigue el hilo del tema claro esta lo pongo..

Pues la idea es "simular" con el POST como que envias un archivo "X" y con el GET pues como si estuvieras leyendo una pagina o descargando un archivo, "aqui se torna un poco engorroso entenderlo, vere si me sale bien la explicación".

Como bien vieron en la explicacion de Hades pudieron apreciar un ejemplo parecido a este..del metodo POST es el que me interesa por ahora..

POST HTTP://www.tupagina.com/script.php HTTP/1.1
Host: www.tupagina.com
Content-Type: multipart/form-data, boundary=34COFsReezG0JfuyhtcpgzrMLg2c4NV9
Content-Length: 45242

--34COFsReezG0JfuyhtcpgzrMLg2c4NV9
Content-Disposition: form-data; name="archivo"; filename="JuanK.exe"
Content-Type: application/octet-stream

Contenido del archivo....

--34COFsReezG0JfuyhtcpgzrMLg2c4NV9--

Mirando este ejemplo vemos que el contenido del archivo pesa cerca de 45 Kb, lo que necesitamos es simular que enviamos un archivo mas grande asi hacemos como una especie de buffer "recuerden que no vamos a enviar ningun archivo esto es para engañar al proxy y utilizar esa conexion que es directa para enviar los datos que nos de la gana" para almacenar todo lo que vamos a solicitar, por ejemplo, una pagina web restringida, conectarme a mi casa via ssh, en fin usd me entienden, todo esos deseos dependeran del tamaño que le pongamos al archivo "buffer" ya que si por ejemplo le dijimos que ibamos a enviar 2 MB y mientras estamos navegando chateando y vacialando la buena vida hacemos un consumo de 5 MB eso da ERROR y se cae la conexion no hay que ser genio para darse cuenta de eso..."al menos eso creo"...espero que me hallan entendido mas o menos...ah y una cosita que no se si decirlo aqui pero bueno, esta conexion como bien dijimos hay que mantenerla directa, esto es lo que les quiero decir, supongamos que pedimos una pagina web "X" esa solicitud se guarda en el buffer y es transferida como si fuera el archivo "X" que estamos enviando hasta aqui bien, recivimos la pagina y nos ponemos a leerla, OJO que dejamos de enviar solicitudes y si no hacemos algo se cae la conexion porque el proxy se imagina que tuvistes algun problema enviando el archivo y tumba la conexion eso no lo queremos, pues tenemos que crear una funcion que nos detecte cuando el buffer esta vacio, cuando se cumpla eso, que se envie un RELLENO por ejemplo "sigo aqui no tumbes la conexion" y asi no se caera nunca... por lo menos no a causa de un error nuestro.. joder como he escrito. espero que me hallan entendido...si no cuando empieze el pregunteo, ojala y lo hagan asi se que al menos alguien se leyo esto..

Bueno llegado a aqui lo que hace falta es modificar la cabecera Content-Length que como ven y saben ella recoje el tamaño completo del archivo que se envia y se lo pasa al proxy y este al servidor, yo trate poniendole una cifra elevada como 15 MB y como el contenido es aleatorio, coji y invite a un Timer a que se una a esta conquista con el objetivo de que administrara el famoso RELLENO y mis solicitudes, esto lo trate de hacer pero me sucede que cuando modifico la dicha cabecera y comienzo a enviar datos el proxy no me entrega el contenido del archivo "mis solicitudes", me lo corta aqui...

POST HTTP://www.tupagina.com/script.php HTTP/1.1
Host: www.tupagina.com
Content-Type: multipart/form-data, boundary=34COFsReezG0JfuyhtcpgzrMLg2c4NV9
Content-Length: 45242

--34COFsReezG0JfuyhtcpgzrMLg2c4NV9
Content-Disposition: form-data; name="archivo"; filename="JuanK.exe"
Content-Type: application/octet-stream

Bueno ya no voy a decir mas nada, basta decir que si alguien sabe porque me sucede esto, OJO que no hay que leerse todo eso para ayudarme con mi problema, lo que quisiera es debatir y ver si juntos o ayudarme a mi con ideas, materiales, usd entienden conformar el proyecto que creo no tiene mala pinta, y tambien espero que esto abra horizontes..

PD: Disculpen si esta demasiado estenso y bueno usd nada mas queria ver mi problematica, es que no encontre otra manera de explicarla ruego perdones de nuevo..alguien interesado...
By Pitoniso.

Spider-Net

Yo sinceramente no entiendo del todo que es lo que quieres hacer, pero eso de hacer una especie de Cliente/Servidor por http no es tan complicado. De hecho, yo he hecho algo parecido con algunos de mis programas y lo único que he hecho es un archivo PHP alojado en mi servidor web que recoge todo lo que se le envía por post y lo almacena en un txt. El cliente manda las órdenes por post a ese archivo y el server simplemente lee el archivo generado y realiza la orden que le ha mandado el cliente. Es sencillo de hacer y funciona perfectamente. Al usar el protocolo HTTP con GET y POST no hay ningún tipo de problema con firewalls, proxys ni nada por el estilo...

La verdad es que no sé muy bien que es lo que quieres hacer tú, pero si pretendes algo así... comunicar un cliente y un server vía web yo así fue como lo plantee y me pareció la manera más fácil de hacerlo. Si es eso lo que tú pretendes hacer puedo subirte un ejemplo de como lo hice yo aunque no creo que tengas muchos problemas para hacerlo... si es otra cosa lo que tú quieres hacer es que yo no te he entendido bien...

Saludos!

Hole_System

Cita de: Spider-Net en  7 Mayo 2008, 11:55 AM
Yo sinceramente no entiendo del todo que es lo que quieres hacer, pero eso de hacer una especie de Cliente/Servidor por http no es tan complicado. De hecho, yo he hecho algo parecido con algunos de mis programas y lo único que he hecho es un archivo PHP alojado en mi servidor web que recoge todo lo que se le envía por post y lo almacena en un txt. El cliente manda las órdenes por post a ese archivo y el server simplemente lee el archivo generado y realiza la orden que le ha mandado el cliente. Es sencillo de hacer y funciona perfectamente. Al usar el protocolo HTTP con GET y POST no hay ningún tipo de problema con firewalls, proxys ni nada por el estilo...

La verdad es que no sé muy bien que es lo que quieres hacer tú, pero si pretendes algo así... comunicar un cliente y un server vía web yo así fue como lo plantee y me pareció la manera más fácil de hacerlo. Si es eso lo que tú pretendes hacer puedo subirte un ejemplo de como lo hice yo aunque no creo que tengas muchos problemas para hacerlo... si es otra cosa lo que tú quieres hacer es que yo no te he entendido bien...

Saludos!

Vaya te lo pongo un poco practico, OJO que no es este mi mensaje..

Supongamos que tienes echo un TROYANO "no importa que sea conexion inversa o directa da igual para este ejemplo" y lo queres meter en una empresa, pero chocas con el inconveniente que esa empresa tienen montado proxy que nada mas permiten trafico por el 80 ni siquiera 443, que te parece, ese troyano se vuelve inutil, pues con lo que explique en mi tema, si hacemos del troyano un arma poderosa ya que logramos simular la conexion directa...  :)

Espero que me hallas entiendido...

Alguien saber pq el proxy me corta el contenido del mensaje cuando modifico la cabecera....

GRx saludos

Vale si me podes enviar el proyecto no esta demas quizas haya codigo que me guste y lo use.. grx
By Pitoniso.

Freeze.

CitarAlguien saber pq el proxy me corta el contenido del mensaje cuando modifico la cabecera....
Quizas no colocas bien el tamaño de los datos enviados :P