Páginas: [1] 2
|
 |
|
Autor
|
Tema: pregunta sobre el protocolo. (Leído 2058 veces)
|
neuromante
Desconectado
Mensajes: 63
|
Hola lista, no se si este sea el lugar mas idioneo para preguntar esto pero andube preguntando en otros lugares y no obtube respuesta.
Trato de hacer una prueba con un generador de paquetes, mas precisamente el sendip para linux. Lo que estoy intentando haceres establecer una conexión simplemente generando paquetes. Para saber los paquetes que debo generar abro un servidor en una maquina linux dentro de mi red local con el nc. Despues me conecto desde otra con un cliente y observo los paquetes con tcpdump. Creo los paquetes de la misma forma que lo hace el programa, calculando la secuencia en el segundo paquete(ack) para reconocer el syn/ack que me envia el servidor. Tambien incluyo las mismas opciones tcp que veo en la conexión generada con netcat, dentro de estas los timestamp los genero de acuerdo a la respuesta syn/ack generada por el servidor.
A menos que me este olvidando de algo esto deberia funcionar pero por desgracia no es asi. Porfavor si alguien tiene alguna idea se lo agradeceria mucho ya que me esta quemando un poco la cabeza y realmente me interesa saber si esto se puede hacer o de lo contrario quiero demostrar el porque no se puede.
Saludos para todos y muchas gracias!
|
|
|
|
|
En línea
|
|
|
|
Hertz Cool
Desconectado
Mensajes: 55
|
No conozco ese packet generator, pero supongo que será similar a todos.
Por lo que te he entendido, quieres establecer una conexión mandando paquetes...me parece que no va a ser posible.
Cuando tu inyectas un paquete (con flag SYN activo) y le llega al receptor, éste contesta con un SYN+ACK...pero cuando llega al equipo con el packet generator, como este no mando ningún SYN (fuieste tú de estranjis) contesta con un RST y finaliza la conexión.
Para poder simular el establecimiento de conexión tendrás que programar con sockets (SOCK_STREAM), como hará netcat.
Saludos
|
|
|
|
|
En línea
|
|
|
|
neuromante
Desconectado
Mensajes: 63
|
Hertz, gracias por tu respuesta pero aun me quedan algunas dudas. Primero que nada, entiendo que la mejor manera de hacerlo es programando pero quiero ver si solo lo puedo hacer con paquetes. He probado en ambas maquinas que no salgan ni entren paquetes rst y segun tu respuesta deberia funcionar?? Gracias de nuevo.
|
|
|
|
|
En línea
|
|
|
|
Hertz Cool
Desconectado
Mensajes: 55
|
Lo del Flag RST es en teoría, no dispongo de tiempo ahora mismo para comprobar mi afirmación en mi Red.
A ver, te lo explico de otra forma. Para que puedas establecer una comunicación con el servidor netcat enviando paquetes debería de ocurrir algo similar a esto: tu packet generator debería de mandar un SYN, el servidor con netcat debería de responder con un SYN+ACK al "envite" que le enviaster. Y ahora es donde viene el problema... NO HAY NINGUNA APLICACION que espere ese SYn+ACK por lo que el host debería de responder con RST para cerrar esa "conexión". Para que funcionase tu packet generator debería de tener un sockets abierto a la escucha y esperando ese SYN+ACK para que de inmediato mandase el ACK. Si tu envías el ACK mediante otra inyección de paquetes, el servidor(que ya habrá cerrado ese intento de conexión) rechazará el asentimiento.
Uff no sé si me estoy explicando bien, la dialéctica no es lo mio.
Saludos.
|
|
|
|
|
En línea
|
|
|
|
neuromante
Desconectado
Mensajes: 63
|
Hertz, te estas explicando mas que bien y me alegro que me ayudes con esto ya que eres el unico que me lo ha explicado.
Yo pienso que el tema es por ese lado que dices tu pero aun me quedan dudas por lo tanto continuo la discusion ..jeje.
En la maquina local (en la que envio el syn inicial) yo veo con mi sniffer(tcpdump) el syn-ack que me envia el servidor y contesto a este con un ack avisando que recibi el syn-ack que me envio el servidor de acuerdo al numero de secuencia que este me envia. Es un ack 1 en respuesta al paquete del servidor y es exactamente lo que veo cuandoconecto con netcat. No deberia establecerse la conexión en ese momento??
En caso de que como tu dices deba haber un socket esperando me gustaria saber un poco mas del porke de este ya que sigo pensando que no tendria que ser absolutamente necesario.
En caso de que tenga que si o si existir este socket, se puede crear de alguna forma y enviar los paquetes manualmente para establecerla conexión??
Porsupuesto que estas preguntas me las contestas silas sabes, no quiero que invesitigues por mi y pierdas el tiempo. Muchas gracias de nuevo.
|
|
|
|
|
En línea
|
|
|
|
Hertz Cool
Desconectado
Mensajes: 55
|
Hola Neuromante, tú pregunta todo lo que no entiendas que para esto estamos aquí. En la maquina local (en la que envio el syn inicial) yo veo con mi sniffer(tcpdump) el syn-ack que me envia el servidor y contesto a este con un ack avisando que recibi el syn-ack que me envio el servidor de acuerdo al numero de secuencia que este me envia. Es un ack 1 en respuesta al paquete del servidor y es exactamente lo que veo cuandoconecto con netcat. No deberia establecerse la conexion en ese momento??
No, porque el servidor ya no espera ese ACK, jaja es lioso lo sé. me intento explicar mejor: El enviar paquetes o mejor dicho, el inyectar paquetes haciendo uso de los RAW Sockets, utilizando la librería libpcap para sistemas UNiX-Like o Winpcap para plataformas windows, tiene el problema que son paquetes "aislados". Cuando el servidor te responde a tu SYN, el host cliente NO ESPERA ese SYN+ACK (ESTO ES FUNDAMENTAL Y ES LO QUE NO ACABAS DE ENTENDER). No lo espera porque fuiste tú mediante una herramienta especial, que inyecto un paquete aislado pidiendo una conexión. Ese packet Generator desaparece del intento de conexión en el momento que inyectas el primer paquete.Aunque tú después mandes un ACK con el número de secuencia y asentimiento adecuado, el intento de conexión (SYN, ACK+SYN.) ha desaparecido. Otra forma de decirlo: En el tiempo que transcurre desde que capturas el paquete SYN+ACK hasta que mandas el nuevo ACK, cliente y servidor han cerrado ese intento de conexión. Por favor, todo lo que no entiendas pregunta. Saludos
|
|
|
|
|
En línea
|
|
|
|
pepel
Colaborador
Desconectado
Mensajes: 1.099
Uno más
|
Me voy a unir a las explicaciones, pero dando una distinta version de lo mismo que explicas.
Como vas a crear una conexion entre 2 maquinas que no saben que se estan comunicando? Las conexiones se producen a nivel de la capa del SO, y tu estas trabajando directamente con la tarjeta de red.
saludos!
|
|
|
|
|
En línea
|
Para algunos, la vida es galopar un camino empedrado de horas, minutos y segundos. Yo, más humilde soy, y sólo quiero que la ola que surge del último suspiro de un segundo, me transporte mecido hasta el siguiente.
|
|
|
|
|
neuromante
Desconectado
Mensajes: 63
|
hola bienvenido pepel. se les ocurre alguna ide de enga~ar al servidor para que no corte la conexión y se piense que hay canal de comunicacion(socket) aunque no lo haya??
|
|
|
|
|
En línea
|
|
|
|
Hertz Cool
Desconectado
Mensajes: 55
|
No.
Saludos
|
|
|
|
|
En línea
|
|
|
|
pepel
Colaborador
Desconectado
Mensajes: 1.099
Uno más
|
es que no se trata de engañar al servidor... el servidor ni se entera de que quieres establecer una conexion, la unica manera es programando un socketttttttt
saludos,
|
|
|
|
|
En línea
|
Para algunos, la vida es galopar un camino empedrado de horas, minutos y segundos. Yo, más humilde soy, y sólo quiero que la ola que surge del último suspiro de un segundo, me transporte mecido hasta el siguiente.
|
|
|
neuromante
Desconectado
Mensajes: 63
|
sigo pensando que puede haber una manera de enga~ar al sistema operativo para que la conexión se logre aunque aun no se como hacerlo ... Salu2 y hasta otra, muchas gracias pepel y Hertz Cool por colaborar.
|
|
|
|
|
En línea
|
|
|
|
pepel
Colaborador
Desconectado
Mensajes: 1.099
Uno más
|
pues si lo conseguis hazmelo saber!!!! (porque esto de crear una conexion generando directamente los paquetes, y luego hacer un netstat y verla... tiene que ser la polla! jajajjaa)
suerte! (la vas a necesitar)
pepel
|
|
|
|
|
En línea
|
Para algunos, la vida es galopar un camino empedrado de horas, minutos y segundos. Yo, más humilde soy, y sólo quiero que la ola que surge del último suspiro de un segundo, me transporte mecido hasta el siguiente.
|
|
|
neuromante
Desconectado
Mensajes: 63
|
me extra~a pepel, que poco creativo que eres ... no creo que puedas llegar a nada con tan poco curiosidad. cuando tratas de solucionar un problema, te rindes sin estar seguro de que el problema no tiene solucion? me parece poco hacker que es lo que supuestamente algunos deseamos o decimos que somos. si no hay curiosidad y empe~o para hacer las cosas me parece que nunca se podrian descubrir nuevos avances en cualquier campo. un saludo, esto es sin ofender, es simplemente una opinion ...
|
|
|
|
|
En línea
|
|
|
|
pepel
Colaborador
Desconectado
Mensajes: 1.099
Uno más
|
jejejejejejjeje no es cuestion de poca curiosidad... si una conexion se produce a nivel de SO y tu estas trabajando a nivel fisico es imposible que puedas crear una conexion, es asi de simple  Por enviar paquetes tu puedes enviar lo que te de la gana, pero no son los paquetes lo que generan lo conexion!!!! la conexion la genera el SO mediante paquetes (que es muy diferente). Los paquetes son solo el medio para generar una conexion. Lo interesante en todo caso seria engañar a un servicio generando tu los paquetes del otro lado. Es decir, montamos un servicio de http(p.e.), y le enviamos un SYN, el servicio devolvera un SYN+ACK, sobre el que nosotros generaremos un ACK. Ahora si que para la maquina que corre el servicio de http existe una conexion (aunque para la maquina desde la que has generado los paquetes, en caso de ser otra, esa conexion no existe) Decirte tambien que no me conoces de nada, y que no puedes juzgar mi poca o mucha creatividad/curiosidad simplemente por el hecho de que te diga que lo que estas intentando no es posible. Pero no es que no sea posible porque lo diga yo (jejejje que tambien xDDDD) sino porque las conexiones no funcionan así. Ah! También decir que esta muy bien que pruebes esas cosas, porque aunque no sirvan para nada (las cosas como sean) al menos ahora conoces seguro mucho mejor el protocolo TCP/IP, y eso es siempre interesante (jugando con el se pueden llegar a hacer cosas realmente interesantes). animo y suerte! Pepel
|
|
|
|
|
En línea
|
Para algunos, la vida es galopar un camino empedrado de horas, minutos y segundos. Yo, más humilde soy, y sólo quiero que la ola que surge del último suspiro de un segundo, me transporte mecido hasta el siguiente.
|
|
|
|
Páginas: [1] 2
|
|
|
|