5.2. Método UDP hacia puertos cerrados

Es conocido que los puertos UDP cerrados deben responder (según RFC) ante una petición de conexión, lo que puede ser explotable por un posible hacker.

Una petición UDP de un cliente ante un puerto UDP cerrado (que no esté escuchando) en el otro lado genera un error ICMP conocido como PORT_UNREACH.

La forma de determinar un puerto cerrado de un posible equipo objetivo es sencilla: elegimos uno o varios puertos altos (de 1024 a 65536).

Es posible que los paquetes UDP no estén llegando a su destino o no nos esté llegando la respuesta ICMP por diversos motivos:

Veamos una transmisión udp contra un puerto cerrado (normalmente nfs está en el 2049) usando la herramienta hping

# Opciones utilizadas de hping:  -V=verbose, -c 1= 1 sólo paquete, -2=Protocolo udp, -p=puerto
delorian:~# hping2 -V -V  -c 1 -2 -p 2049 xxx.xxx.xxx.xxx 
default routing interface selected (according to /proc)
using eth0, addr: xxx.xxx.xxx.xxx, MTU: 1500
HPING xxx.xxx.xxx.xxx (eth0 xxx.xxx.xxx.xxx): udp mode set, 28 headers + 0 data bytes
ICMP Port Unreachable from xxx.xxx.xxx.xxx  (remote)

--- remote hping statistic ---
1 packets tramitted, 0 packets received, 100% packet loss
round-trip min/avg/max = 0.8/0.8/0.8 ms
delorian:~#

Como hemos podido observar el puerto de 2049 estaba cerrado, por lo que hemos recibido una contestación ICMP.

Veamos una transmisión udp contra un puerto abierto (DNS en este caso esta escuchando peticiones)

delorian:~# hping2 -V -V  -c 1 -2 -p 53 xxx.xxx.xxx.xxx 
default routing interface selected (according to /proc)
using eth0, addr: xxx.xxx.xxx.xxx, MTU: 1500
HPING remote (eth0 xxx.xxx.xxx.xxx): udp mode set, 28 headers + 0 data bytes

--- remote hping statistic ---
1 packets tramitted, 0 packets received, 100% packet loss
round-trip min/avg/max = 0.6/0.6/0.6 ms

Como hemos podido observar el puerto 53 de DNS estaba abierto (o bloqueado), por lo que no hemos recibido ninguna contestación.