jueves, octubre 05, 2006

Flags en tcp/ip

FLAGS : Hay seis banderas de 1 bit:

URG : Se establece en 1 si esta en uso el apuntador urgente. El apuntador urgente sirve para indicar un desplazamiento en bytes a partir del numero actual de secuencia en el que se encuentran datos urgentes. Este recurso sustituye los mensajes de interrupción.

ACK : Se establece en 1 para indicar que el numero de acuse de recibo es valido. Si el ACK es 0, el segmento no contiene un acuse de recibo, por lo que se ignora el campo de numero de acuse de recibo.

PSH : Indica datos empujados (con PUSH). Por este medio se solicita atentamente al receptor entregar los datos a la aplicación a su llegada y no ponerlos en el buffer hasta la recepción de un buffer completo.

RST : Se usa para restablecer una conexión que se ha confundido debido a una caída de host u otra razón; también sirve para rechazar un segmento no valido o un intento de abrir una conexión.

SYN : Se usa para restablecer conexiones. La solicitud de conexiones tiene SYN = 1 y ACK = 0 para indicar que el campo de acuse de recibo incorporado no esta en uso. La respuesta de conexión si lleva un reconocimiento, por lo que tiene SYN = 1 y ACK = 1.

FIN : Se usa para liberar una conexión; especifica que el transmisor no tiene mas datos que transmitir. Sin embargo, tras cerrar una conexión, un proceso puede continuar recibiendo datos indefinidamente.

Sección TCP típica

Cuando queremos comenzar una conexión común y corriente de acuerdo al protocolo se usa de la siguiente manera:

Nuestro host manda un paquete tcp, con los flags SYN en 1 (o prendido como quieran llamarle), y el ACK en 0 y esperamos una respuesta.

Si el puerto al que queremos alcanzar está en LISTEN (escucha) el host puede aceptar o rechazar la conexión, aquí hay dos caminos:

  • Acepta: El host nos responde con un paquete con los flags SYN y ACK prendidos, nosotros al final mandamos su ACK.
  • Niega: El host nos responde con un paquete con los flags RST y ACK prendidos. Así que como podemos ver, se hace una conexión completa con este medio por lo que los IDS nos agarran al hacer demasiadas conexiones que duran tan poco tiempo, e intentar muchas otras.
CASO A: El puerto está abierto

[root@xxx]# hping -S -p 80 200.64.170.73

HPING 200.64.170.73 (ppp0 200.64.170.73): S set, 40 headers + 0 data
bytes
len=44 ip=200.64.170.73 flags=SA DF seq=150 ttl=119 id=7017 win=8760
rtt=153.4 ms
len=44 ip=200.64.170.73 flags=SA DF seq=166 ttl=119 id=7025 win=8760
rtt=177.0 ms
len=44 ip=200.64.170.73 flags=SA DF seq=217 ttl=119 id=7026 win=8760
rtt=196.7 ms
len=44 ip=200.64.170.73 flags=SA DF seq=219 ttl=119 id=7030 win=8760

rtt=238.4 ms

Como podemos ver la PC responde con las flags Syn y Ack prendidas (flags=SA) lo que nos indica el estado de disponibilidad de nuestro puerto.

CASO B: El puerto está cerrado

[root@xxx]# hping -S -p 80 200.64.170.73

HPING 200.64.170.73 (ppp0 200.64.170.73): S set, 40 headers + 0 data
bytes
len=40 ip=200.64.170.73 flags=RA seq=125 ttl=119 id=7007 win=0 rtt=254.8
ms
len=40 ip=200.64.170.73 flags=RA seq=127 ttl=119 id=7009 win=0 rtt=254.8
ms
len=40 ip=200.64.170.73 flags=RA seq=130 ttl=119 id=7013 win=0 rtt=254.8
ms
len=40 ip=200.64.170.73 flags=RA seq=135 ttl=119 id=7015 win=0 rtt=254.8
ms

Esta vez la PC responde con los flags Rst y Ack prendidos (flags=RA).


Idlescan-v0.1

Linux

http://www.securityfocus.com/tools/679

No hay comentarios: