Descubrimiento de Red Básico con Nmap

news and informations automotive,business,crime,health,life,politics,science,technology,travelautomotive,business,crime,health,life,politics,science,technology,travel

Continuamos con la serie de posts dedicados a Nmap.  En el anterior introdujimos el uso básico de esta herramienta:

http://www.franciscosepulveda.eu/2012/07/23/introduccion-a-nmap/

Muchas de las técnicas de escaneo que incluye Nmap están basadas en el protocolo TCP. Como sabemos, este es un protocolo orientado a conexión que se usa para ofrecer servicios de red y una buena parte de su funcionalidad se debe a los flags que podemos encontrar en los segmentos TCP:

Los pasos que se siguen en un establecimiento de sesión TCP son los siguientes:

Donde el host que inicia la sesión envía un segmento con el flag SYN activo. El receptor, si está a la escucha, devolverá un segmento con los flags SYN y ACK activos, a lo que el emisor responderá con un segmento con el flag ACK activo. Durante estos pasos, los dos extremos habrán negociado diferentes parámetros de la comunicación, como el tamaño de ventana que van a usar.

Según cómo responda una máquina, Nmap puede usar la información recibida para obtener mucha información sobre el host de destino. Cuando escaneamos un puerto, Nmap no se limita a darnos los dos resultados habituales que nos dan otras herramientas, que son abierto o cerrado, sino que es más detallado y puede darnos hasta 6 resultados diferentes:

  • Abierto: La aplicación que está a la escucha en el puerto acepta conexiones que pueden ser TCP o UDP, y en el primer caso devuelve un paquete SYN-ACK. Encontrar un puerto en este estado es el objetivo habitual de un atacante.
  • Cerrado: El puerto recibe paquetes de Nmap y responde con un paquete RST, pero no hay ninguna aplicación a la escucha. Detectar un puerto abierto y otro cerrado en una máquina puede ayudar a determinar el sistema operativo que se está ejecutando.
  • Filtrado: Los paquetes que envía Nmap no llegan al puerto y por lo tanto no puede decidir si está abierto o cerrado. Este estado nos indica que tenemos delante algún tipo de cortafuegos.
  • No filtrado: Nmap sólo marca un puerto en este estado cuando está usando un escaneo ACK, que veremos más adelante. No hay cortafuegos, pero el escaneo no ofrece información suficiente para determinar si el puerto está abierto o cerrado.
  • Abierto|filtrado: Los escaneos UDP, IP, FIN, Null y Xmas pueden darnos este resultado al no poder determinar si el puerto está abierto o filtrado.
  • Cerrado|filtrado: Nmap sólo nos da este resultado cuando realizamos un escaneo IPID pasivo y se debe a que no puede determinar si el puerto está cerrado o filtrado. Veremos este tipo de escaneo más adelante.

La gran mayoría de los cortafuegos están configurados para bloquear los segmentos SYN salvo para aquellos servicios que sean públicos, lo que hace que el escaneo básico que hemos hecho hasta ahora no haya dado un buen resultado.

Cuando Nmap sigue los mismos pasos que en un establecimiento de conexión TCP (SYN, SYN-ACK, ACK), decimos que el escaneo es del tipo TCP Connect y estamos dando a la máquina objetivo todas las facilidades para que registre nuestra actividad, ya que hemos completado el proceso de inicio de sesión TCP. Un escaneo un poco más elaborado es el escaneo TCP Syn.

 

 Escaneo TCP Syn

No se completa todo el proceso, por lo que también se denomina escaneo semi-abierto. La idea es evitar que quede registrado el escaneo en la máquina objetivo. Para esto, Nmap envía un segmento SYN y queda a la espera de recibir el SYN-ACK, pero aunque lo reciba no devolverá el segmento ACK que cerraría el saludo (handshake). De esta forma no se inicia sesión y es probable que la máquina destino no guarde un registro.

Vamos a probarlo con la máquina Windows:

Como vemos, Nmap tampoco nos da mucha información en este caso, ya que el cortafuegos de Windows sigue cortando el paso de los paquetes sonda. Este es el tipo de escaneo que usa Nmap por defecto cuando se ejecuta con permisos de root. Veamos el resultado si lo lanzamos contra CentOS:

 

Escaneo TCP Connect

Vamos a ejecutar este tipo de escaneo:

Que nos da la misma información, pero nos arriesgamos mucho más a que nuestra actividad quede registrada. Además, bastaría con cambiar la política de entrada por defecto en CentOS para que dejara de responder:

De momento, volvemos a dejar CentOS con la política de entrada por defecto como estaba para ver cómo funcionan el resto de tipos de escaneos:

 

Escaneo FIN

Si el cortafuegos está configurado para interceptar los paquetes SYN, bloquearía los dos escaneos que hemos hecho hasta ahora. Una posibilidad de saltar el cortafuegos o un sistema IDS es usar el escaneo FIN, en el que Nmap envía paquetes en los que sólo el flag SYN está activo:

Y si capturamos estos paquetes con Wireshark podemos ver los flags:

 

Escaneo Null y del Árbol de Navidad

Otras opciones que nos ofrece Nmap son los escaneos Null y Xmas. Vamos a lanzarlos y a capturar uno de los paquetes que enviamos para ver sus características:

Empezamos con el escaneo Null:

Y vemos que ningún flag está activo:

Y el Xmas:

En el que se activan los flags FIN, PUSH y URG:

El objetivo de estos tipos de escaneos es saltarse la protección de un cortafuegos básico.  Si el cortafuegos no espera la llegada de estos paquetes, que no son paquetes “legales” según el protocolo, podría ocurrir que no supiera lo que hacer con ellos y los dejara pasar.  Afortunadamente, la gran mayoría de los cortafuegos actuales saben tratar con este tipo de paquetes y no caerán en la “trampa”.  Esto no significa que Nmap no tenga utilidad, sino que tendremos que aprender bastante más para poder obtener la información que andamos buscando, pero esto lo trataremos en otro post.