Enviado por J3ss3SHL el Vie, 20/04/2018 - 12:31
Nmap

En esta sección se muestran los métodos y técnicas de análisis que tiene Nmap, su descripción y funcionamiento, y ejemplos de uso y los paquetes intercambiados. Tras esto, se muestran algunos detalles a tener en cuenta a la hora de planificar y realizar un análisis rápido y efectivo a una red, y el modo en que estos detalles se pueden definir en Nmap.

Harémos énfasis en la duración de esta sección a lo largo de esta serie de post, ya que será en esta sección donde ser verá todas las posibles opciones que podemos añadir a NMap, así mismo se detallará cada una de ellas y se dará ejemplos junto a demostraciones gráficas y análisis de paquetes con el uso de Wireshark.

La sintaxis de Nmap es la siguiente:


nmap [Tipo(s) de análisis] [Opciones] [Objetivos]


Los tipos de análisis y las opciones generalmente comienzan con un guión ("-") a diferencia de los objetivos del análisis. Estos objetivos se pueden definir como direcciones IP, intervalos de direcciones, rangos CIDR o nombres de dominio (estos últimos también aceptan notación CIDR). De este modo, son válidos los objetivos 192.168.10.10, 172.16.128-130.0-255, 10.0.0.0/16 y scanme.nmap.org/28.


TÉCNICAS DESCUBRIMIENTO DE EQUIPOS.


En esta fase, la primera que realiza Nmap, se examina el conjunto de equipos que se ha pasado a Nmap para evaluar aquellos que están activos, y por tanto van a pasar a ser analizados. Existen varios métodos, descritos a continuación, que permiten realizar esta función.


1. NO PING (-Pn)
Esta opción evita completamente que Nmap realice la fase de Descubrimiento de Equipos. Es útil si se desea que todos los objetivos especificados sean considerados como activos, y de este modo se realice un escaneo de puertos en todos ellos, sin excepción.
El uso de esta opción puede tener una notable incidencia negativa en el rendimiento de un escaneo a gran escala, puesto que un escaneo de puertos contra una máquina inalcanzable consumirá mucho más tiempo, debido que vencerán todos los temporizadores de las respuestas esperadas a cada sonda enviada. Por otra parte, esta opción puede ser de utilidad si en la red analizada se bloquea, al menos en parte, el tráfico ICMP, que es el utilizado por defecto en la fase de descubrimiento de equipos. En versiones anteriores de Nmap, esta opción se activaba con los modificadores -P0 o -PN.


2. LIST SCAN (-sL)
Esta opción únicamente lista los objetivos dados como argumentos, sin enviar paquete alguno a éstos. Por defecto, Nmap realiza una resolución DNS inversa de los equipos a analizar, así que si se selecciona este método, los paquetes relacionados con esta resolución serán los únicos que se enviarán. Esta es una opción especialmente sigilosa (no intrusiva) con la cual obtener información potencialmente valiosa, y que puede servir también para comprobar que no se va a analizar ningún activo fuera de nuestro alcance.
La siguiente figura muestra el resultado textual de la invocación del comando.




3. NO PORT SCAN (-sn)
También conocida como Ping Scan o Ping Sweep. Esta opción, cuando se indica de forma explícita, instruye a Nmap para que no realice un análisis de los puertos tras completar una fase estándar de descubrimiento de los equipos activos dentro del listado de equipos a analizar, a excepción de los análisis de scripts (--script) o de rutas (--traceroute), si se indican de forma explicita. Si no se indica ninguna opción de descubrimiento de equipos, Nmap realiza por defecto las comprobaciones que se indican a continuación para tratar de descubrir los equipos que están activos y los que no, antes de iniciar la siguiente fase de análisis de puertos, para que esta sea más rápida.


Esta técnica es sensiblemente intrusiva ya que envía varias sondas a los objetivos, a diferencia del List Scan donde no se envía ninguna sonda a los objetivos, y suele utilizarse con el mismo fin. Permite realizar un reconocimiento ligero de la red objetivo de forma notablemente sigilosa. Esta técnica es igualmente útil para administradores que deseen de manera sencilla contabilizar  el número de máquinas activas en su red, o monitorizar la disponibilidad de sus servidores.


Si se ejecuta sin privilegios de administración, Nmap utiliza las llamadas al sistema connect para conectarse a los puertos 80 y 443 de los objetivos. En cambio, si el usuario tiene permisos administrativos se envía por defecto un paquete TCP ACK al puerto 80 (-PA), un TCP SYN (-PS) al 443 además de un paquete ICMP Echo Request y un ICMP Timestamp Request, salvo cuando el usuario especifica otros parámetros, en cuyo caso este sirve únicamente para indicar que no se debe continuar con la fase de análisis de puertos. Si el objetivo es local a la propia subred, se utilizará únicamente paquetes ARP (-PR).
En versiones anteriores de Nmap, esta técnica se activaba con el modificador -sP. En la siguiente figura se muestra como Nmap descubre dos objetivos de forma totalmente distinta. El primero, al encontrarse en la misma subred que el origen es descubierto mediante una Ping ARP. Al segundo objetivo se le envían dos sondas, un paquete ICMP Echo Request y un Ping ACK, respondiendo solamente a la primera.



** Sin root **




** Cómo root **



En las figuras anteriores se puede comprobar la diferencia entre ejecutar el mismo comando en un equipo sobre el que se tienen privilegios de administración y en otro sobre el que no se tienen permisos. En el segundo caso, se utilizan únicamente llamadas al sistema, por lo que siempre se realizan conexiones completas, a diferencia de en el equipo donde si se tienen privilegios.

4. PING ARP (-PR)
Uno de los escenarios en los que con más frecuencia se usa Nmap es para escanear redes locales Ethernet. Estas redes suelen tener muchos host inactivos, por lo que el proceso de escaneo basado en paquetes IP (ICMP echo request), que implica una resolución ARP anterior en cada caso, es notablemente lento, debido a los retardos introducidos por el sistema operativo en el envío de paquetes y al tamaño limitado de la cache ARP.

Esta técnica utiliza un algoritmo optimizado para realizar peticiones ARP, superando así las limitaciones de los sistemas operativos, que no están diseñados para hacer peticiones masivas. Debido a su especial fiabilidad y rapidez, no es necesario realizar pings IP si se recibe respuesta ARP para conocer si un equipo es alcanzable.

Esta técnica se utiliza por defecto cuando Nmap detecta que los equipos a analizar pertenecen a su misma red local, aunque no se especifique de forma explicita. Si se quiere evitar que se realice esta comprobación, se debe añadir el parámetro -send-ip, que evita que Nmap tome control del análisis ARP y únicamente envíe paquetes de tipo IP.

Las siguientes figuras muestran cómo el origen envía un ARP Request a la dirección de broadcast y el objetivo se descubre a sí mismo respondiendo con un ARP Response. Finalmente obtiene información adicional con una consulta al DNS inverso.



5. PING TCP SYN (-PS<listado de puertos>)
Esta técnica, si no se añade ningún puerto, envía al objetivo un paquete TCP vacío con el flag SYN activado al puerto 80. Se puede indicar un listado de puertos sobre los que realizar este análisis, separándolos por comas o introduciendo intervalos separados por un guión (p.ej. -PS22-25,80,443,8080).

El flag SYN indica al destino el deseo de establecer una conexión TCP por el origen. En este punto no interesa saber si el puerto analizado está abierto o cerrado, por lo que si Nmap recibe una respuesta de cualquier tipo del destino (ya sea un paquete RST indicando que el puerto está cerrado, o un paquete SYN/ACK indicando que se continua con el inicio de sesión TCP), NMap sabrá que el objetivo es alcanzable. Si por el contrario expira el temporizador, el destino se marcará como inalcanzable.

Si el usuario no tiene privilegios, se utiliza de forma automática una alternativa que consiste en enviar una solicitud de conexión TCP a través del sistema operativo (se utiliza la llamada del sistema connect). Del mismo modo que para un usuario privilegiado, si se recibe respuesta del objetivo, se sabe que este es alcanzable.

Este comportamiento, el uso de la llamada del sistema connect, también se utilizaba en versiones anteriores de Nmap para el análisis de redes IPv6, donde se utilizaban las funcionalidades proporcionadas por el sistema operativo. En la versión 6 se ha añadido la funcionalidad de generación de paquetes IPv6 en Nmap, por lo que se eliminan las restricciones de generación de paquetes impuestas por el sistema operativo para realizar análisis.

La eficacia de esta técnica es limitada, dado que muchos cortafuegos bloquean los paquetes SYN como medida preventiva para evitar el establecimiento de una conexión. En este caso la efectividad puede aumentar si se usa la técnica de Ping TCP ACK, descrita a continuación.




A continuación le añadiremos 3 puertos a la opción -PS de NMap y veremos cómo envia paquete a los 3, pero a la primera respuesta, finaliza el escaneo ya que el host es alcanzable.


6. PING TCP ACK (-PA<listado de puertos>)
El funcionamiento de esta técnica es idéntica a la de Ping TCP SYN, con la excepción de que ésta envía un paquete TCP al puerto 80 con el flag ACK activado. También se pueden añadir más puertos, indicando a continuación el listado de puertos sobre los que realizar este análisis, con el mismo formato que en casos anteriores.

Cuando un equipo recibe este tipo de paquetes sin existir previamente una conexión establecida, en principio deben responder con un paquete RST revelando de este modo su presencia. Esta técnica complementa la anterior al aumentar las posibilidades de traspasar filtros intermedios, como herramientas cortafuegos sin estado, debido a que muchos administradores configuran solamente reglas para interceptar paquetes entrantes SYN y no ACK. Los cortafuegos con estado suelen interceptar con éxito los paquetes inesperados, como el enviado con esta técnica, debido a que no se corresponde con ninguna sesión registrada previamente por un paquete SYN entrante. Una solución eficaz es combinar esta técnica con la anterior para que ambas sondas, SYN y ACK, sean enviadas.

En la siguiente figura se puede comprobar cómo esta técnica envía un TCP ACK al puerto 80 del objetivo como si tratara de asentir la recepción de un hipotético paquete enviado durante una conexión establecida. El objetivo niega que haya habido conexión alguna enviando un paquete RST, revelando con ello su presencia.



Esperamos que este post haya sido de su utilidad, cualquier duda o sugerencia pueden dejarla en los comentarios.

Síguenos en Facebook, Twitter, unete a nuestra charla en Riot, únete a IRC o únete a Telegram.

Etiquetas

Acerca del autor

Pentester. Estudiante de ingeniería informática, Twitter @j3ss3SHL