Nping - Evitar segmento TCP RST

Iniciado por pablox_co, 1 Agosto 2013, 05:00 AM

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

pablox_co

Hola amigos:

He estado usando Nping de la siguiente manera:

#nping --tcp --flags syn --dest-port 80 --count 1 192.168.0.1

Y obtengo la siguiente captura en Wireshark (con su respectivo filtro):

3 4.032246000 192.168.0.14 192.168.0.1 TCP 54 ams > http [SYN] Seq=0 Win=1480 Len=0
6 4.077723000 192.168.0.1 192.168.0.14 TCP 58 http > ams [SYN, ACK] Seq=0 Ack=1 Win=16384 Len=0 MSS=1460
7 4.077749000 192.168.0.14 192.168.0.1 TCP 54 ams > http [RST] Seq=1 Win=0 Len=0


Mis dudas son:

- ¿Es posible evitar que se envíe el último segmento TCP RST al objetivo?
- ¿Existe alguna manera para saber si el último paquete es enviado por Nping o por mi SO?

Gracias.

ccrunch

He encontrado esto por si te sirve:
http://nmap.org/book/nping-man-tcp-mode.html

Citar--flags <flags> (TCP Flags)

    This option specifies which flags should be set in the TCP packet. <flags> may be specified in three different ways:

        As a comma-separated list of flags, e.g. --flags syn,ack,rst

        As a list of one-character flag initials, e.g. --flags SAR tells Nping to set flags SYN, ACK, and RST.

Respecto a la 2ª pregunta es un poco confusa. Para que necesitas saberlo?
Confusa porque depende a qué finalidad tenga, si preguntas por si en el paquete TCP va información acerca de qué ha generado el paquete, que yo sepa no, así que técnicamente tu paquete es enviado por tu tarjeta de red, pero depende para qué lo necesitas saber.

pablox_co

Hola de nuevo ccrunch:

Previamente había buscado esa documentación en la página de nmap y no la había encontrado, ¡muchas gracias! :-D la leeré, espero no sea la misma del "man nping".

En cuanto a la segunda pregunta, que yo sepa en el segmento TCP no hay información (como comentas) si es generado por nping o el SO. Lo querías saber porque en el caso remoto que se pueda saber si es generado por nping, entonces quería decir podría evitar el envío del segmento final TCP RST con alguna opción de nping, pero si es una respuesta automática de mi SO  :o Ni idea.

¿A qué viene todo esto? He estado tratando de hacer un ataque de SYN Flood en mi laboratorio de pruebas con nping pero no lo he logrado, y culpo de ello a este último segmento TCP RST.

Gracias de nuevo, saludos.

ccrunch

Citar¿A qué viene todo esto? He estado tratando de hacer un ataque de SYN Flood en mi laboratorio de pruebas con nping pero no lo he logrado, y culpo de ello a este último segmento TCP RST.

Prueba esta orden, no se si te podría ayudar.

hping3 --rand-source -p 80 -S --flood 192.168.1.100

--rand source es que genere las direcciones ip automáticamente (ip's de atacantes)
-p es el puerto
--flood IP es la ip que queremos atacar

pablox_co

Hola,

Gracias al mensaje anterior que me llevó a leer más al respecto he comprendido que para realizar el SYN Flood es necesario Spoofear la dirección IP de origen, por eso no me resultaba el ataque. Por otro lado quería compartirles una diferencia más que importante e interesante al Spoofear de manera aleatoria la dirección IP tanto con Nping (--source-ip rand) y Hping3 (--rand-source).

La diferencia consiste en que Nping generará una única dirección IP aleatoria que utilizará en todos los paquetes enviados, mientras Hping3 generará una dirección IP aleatoria por cada paquete enviado. Siendo más provechoso creo yo desde el punto de vista del ataque lo realizado por Hping3 y no pude encontrar la manera que Nping lo realizara de esta forma.

¡Saludos!




pablox_co

Hola amigos, después de mucho pensar y darle vueltas al asunto he podido llegar a una solución  :D

Citar¿Es posible evitar que se envíe el último segmento TCP RST al objetivo?

¡Claro que sí! No sé por qué no lo había pensado antes, pero la solución es realmente sencilla, simplemente tengo que agregar una regla a la cadena OUTPUT de iptables para evitar que salgan segmentos TCP RST por mi tarjeta de red al objetivo dirigidos al puerto 80, de la siguiente manera:

iptables -I OUTPUT 1 --destination 192.168.0.1 --protocol tcp --dport 80 --tcp-flags RST RST -j DROP

Ya pude verificar mediante Wireshark que no se envía dicho segmento TCP RST.

Citar¿Existe alguna manera para saber si el último paquete es enviado por Nping o por mi SO?

Después de mucho buscar encontré en un libro lo siguiente: Como el segment incicial TCP SYN es generado "a mano" por la herramienta (en este caso Nping) sin pasar por el stack TCP/IP de mi SO y no hace uso de la llamada al sistema "connect()", como es habitual, cuando el stack TCP/IP del SO recibe el segmento TCP SYN/ACK enviado por el objetivo su respuesta natural es enviar un TCP RST ya que no tenía conocimiento de dicha conexión.

Por lo tanto dicho paquete era generado por mi SO.

¡Saludos!