Escaneos TCP Null, FIN y Xmas

  • Posted on: 8 January 2014
  • By: ReYDeS

Estos tres tipos de escaneo (aunque son posibles más con la opción "–scanflags" de nmap) explotan un detalle en el RFC de TCP para diferenciar entre puertos abiertos y cerrados. La página 65 del RFC 793 dice; “Si el puerto destino tiene el estado CERRADO... un segmento entrante que no contiene un RST causa que un RST sea enviado en respuesta”. Luego la siguiente página discute sobre paquetes enviados a puertos abiertos sin los bits de control SYN, RST, o ACK, mencionando que: “es poco probable que lleguen aquí, pero si lo hacen, descartar el segmento y retornar”.

Cuando se escanean sistemas que cumplen con este texto del RFC, cualquier paquete que no contenga los bits SYN, RST, o ACK dará como resultado un RST devuelto si el puerto está cerrado y ninguna respuesta si el puerto está abierto. Mientras que ninguno de estos tres bits estén incluidos, cualquier combinación de estos tres (FIN, PSH, y URG) está bien. Nmap explota estos tipos de escaneo con las siguientes opciones:

  • Escaneo Null (-sN): No define ningún bit (Cabecera TCP es 0)
  • Escaneo FIN (-sF): Define únicamente el bit TCP FIN.
  • Escaneo Xmas (-sX): Define los bits de control FIN, PSH y URG, iluminando el paquete como un árbol de navidad.

Estos tres tipos de escaneo tienen exactamente el mismo comportamiento excepto por la bandera TCP definida en los paquetes de prueba. Si un paquete RST es recibido, se considera al puerto “closed” cerrado, mientras que la ausencia de respuesta significa que está “open|filtered” abierto|filtrado. El puerto es marcado como “filtered” si un mensaje de error ICMP Unreacheable (tipo 3, código 1, 2, 3, 9, 10, o 13) es recibido.

La ventaja clave de estos tipos de escaneo es que pueden pasar a través de ciertos firewalls sin estado y encaminadores con filtrado de paquetes. Otra ventaja es que estos tipos de escanneo son un poco más ocultos que un escaneo SYN. No hay que confiar plenamente en esto, dado que los IDS (Intrusion Detection System) modernos están configurados para detectarlos. El gran inconveniente es que no todos los sistemas siguen el RFC 793. Un número de sistemas envían una respuesta RST a las pruebas sin importar que el puerto este cerrado o no. Esto causa que todos los puertos sean etiquetados como “closed”. Los principales sistemas operativos que hacen esto son Microsoft Windows, varios dispositivos Cisco, BSDI, e IBM OS/400. Este escaneo funciona bien contra la mayoría de sistemas basados e Unix. Otro inconveniente de estos escaneos es que no pueden distinguir entre puertos “open” de aquellos “filtered” dejándolos con la respuesta “open|filtered”.

A continuación se realizan los tres tipos de escaneo (Null, Fin, Xmas) contra un Sistema GNU/Linux (Metasploitable2)

# nmap -n -Pn -sN -p- 192.168.0.17
# nmap -n -Pn -sF -p- 192.168.0.17
# nmap -n -Pn -sX -p- 192.168.0.17

El siguiente ejercicio se realizan los tres escaneos contra un Sistema Windows (Server 2003 SP2)

# nmap -n -Pn -sN -p- 192.168.0.18
# nmap -n -Pn -sF -p- 192.168.0.18
# nmap -n -Pn -sX -p- 192.168.0.18

Ninguno de los Sistemas escaneados están basados en UNIX. Los resultados detallan que los 65535 puertos escaneados están en estado “closed” cerrados, para todos los objetivos evaluados.

Fuentes:

http://nmap.org/book/man-port-scanning-techniques.html
http://www.rfc-editor.org/rfc/rfc793.txt

Sobre el Autor


Alonso Eduardo Caballero Quezada - ReYDeS
Instructor y Consultor en Hacking Ético, Forense Digital & GNU/Linux
Correo Electrónico: ReYDeS@gmail.com
Twitter: @Alonso_ReYDeS
LinkedIn: pe.linkedin.com/in/alonsocaballeroquezada
Facebook: https://www.facebook.com/alonsoreydes
Youtube: http://www.youtube.com/c/AlonsoCaballero
Resumen de mi CV: http://www.reydes.com/d/?q=node/1