Introduccion y descubrimiento de sistemas con Nmap

Nmap es una de las herramientas más conocidas dentro del mundo de la seguridad informática, y no sin razón, ya que se trata de una herramienta muy potente y versátil.

Este primer post veremos brevemente sobre la historia y características de Nmap, especificación de objetivos, y descubrimiento de host.

Nos basaremos fundamentalmente en la documentación oficial, que podéis encontrar en la web de nmap.

La última versión de Nmap es la 7.60, se publica con licencia GNU, y es multiplataforma, podemos encontrar versiones para GNU/Linux, Windows, HP-UX, BSD, Solaris…

Se puede utilizar tanto con IPv4 como con IPv6.

Cuenta con mucha información, bastante de ella en castellano.

Sus principales funciones son:

  • Descubrimiento de equipos.
  • Escaneo de puertos.
  • Detección de servicios y versión.
  • Detección del sistema operativo.

Tambíen cuenta con NSE, un sistema de scripts con muchas posibilidades, desde intentar autenticarse en un sistema hasta análisis de vulnerabilidades. Tenemos a nuestra disposición diversas interfaces gráficas, de las que la más conocida es Zenmap.

Lo que se conoce como Nmap Proyect cuenta con otras herramientas, como pueden ser:

  • Nping: permite gnerar paquetes de un gran número de protocolos y manipular cualquier campo de las cabeceras
  • Ncat: reimplementación de Netcat
  • Ndiff: realiza comparaciones entre distintos análisis de Nmap. Puede utilizarse para ver los cambios que se producen en determinada red.
Especificando objetivos

Vamos a tratar brevemente especificación y descubrimiento de sistemas. Aunque no lo parezca, es una parte bastante importante, como recomendación es mejor primero conocer que sistemas están “vivos” y después lanzarnos a un análisis de puertos.

Podemos escanear una única dirección, un rango o una lista. Soporta CIDR, esto quiere decir que le podemos especificar la mascara de red, para escanear subredes o bloques de redes.

Además de direcciones IP también podemos especificar nombres de equipo, incluso ambas cosas a la vez:

Podemos también pasarle una lista separada por comas:

Para rangos podemos utilizar el guión, por ejemplo, si quisiéramos escanear el rango de la 25 a la 75 de la red 192.168.1.0:

Como podéis comprobar, la la especificación se realiza por octetos, por lo que podemos combinar distintos métodos:

Además, contamos con diversas opciones para la selección de objetivos:

Para seleccionar los objetivos de un archivo. Cada elemento tiene que estar separado por espacio, tabulación o líneas.

Podríamos usarlo para pasarle a nmap la lista de direcciones de una empresa que nos encontremos auditando, por ejemplo.

Para analizar objetivos al azar. El valor 0 corresponde a ilimitado, y las direcciones privada, multicast, etc, se omiten por defecto.

Para excluir equipos o redes. Si por ejemplo existen determinados servidores criticos que ni queremos ni podemos tocar dentro de la red a anlizar.

Excluye los objetivos desde un archivo. Al igual que con -iL, tienen que estar separados por espacio, tabulación o lineas.

Descubriendo sistemas

Una de las potencias de Nmap es que cuenta con muchas opciones, por eso es una herramienta usada en ámbitos muy distintos.

Nuestro objetivo, en este primer momento, es conocer que equipos están actualmente activos.  Si no especificamos nada, nmap enviará un paquete

TCP ACKal puerto 80 y un ICMP Echo Request a cada máquina objetivo.

Si no contamos con los privilegios necesarios, en lugar de un ACK enviaremos un SYN. Una excepción a esto se produce en las redes locales, en las que se utiliza el protoclo ARP

Lista los equipos de las redes seleccionadas sin enviar paquetes a los objetivos. Esto lo realiza mediante la resolución inversa DNS. Las opciones de análisis de puertos, detección de sistema operativo o ping no pueden combinarse con esta.

Sirve para indicarle a Nmap, que no realice análsis de puertos, por lo que únicamente realiza la fase de descubrimiento mediante ping. Es una opción menos sigilosa que -sL, ya que si envía paquetes. Por defecto envía un eco ICMP y un TCP al 80.

Nmap no realiza la fase de descubrimiento de equipos si especificamos esta opción. Tenemos que tener en cuenta que si no realiza esa fase, tratará todo los equipos que le indiquemos como si estuvieran vivos, por lo que les pasará a realizar la fase de escaneo de puertos a cada uno de ellos. Puede ser útil para redes que bloqueen el trafico ICMP, pero los tiempos aumentan mucho.

Ping SYN. Si no especificamos ningún puerto, envía un paquete vacío con la bandera SYN activada al puerto 80. Para especificar puertos, podemos utilizar listas o rango, como por ejemplo -PS22,25,53,80-121. Si el puerto está cerrado recibiremos un paquete RST, mientras que si está abierto responderá con un SYN/ACK. Con una u otra respuesta, Nmap sabrá que el objetivo está activo.

Ping ACK. Por defecto, envía un paquete vacío con la bandera ACK activada al puerto 80. El funcionamiento es el mismo que con -PS, la diferencia es que -PS envía con la bandera SYN mientras que -PA envía con ACK. Suele usarse para aumentar las posibilidades de descubrir si el objetivo está activo, podría darse el caso que que nos encontremos ante un cortafuegos que bloquea los paquetes SYN y no los ACK.

Ping UDP. Envía un paquete UDP a los puertos indicados. Podemos indicar los puertos con el formato que hemos visto anteriormente, y si no indicamos ninguno se utiliza por defecto el 31338. SI el puerto está cerrado, devuelve un paquete ICMP de tipo Puerto Inalcanzable, por lo que podremos saber que el equipo está activo. Al ser UDP puede saltarse Firewalls que sólo están configurados para TCP.

Pings ICMP. Con -PE imitamos al ping del sistema, y enviamos un paquete ICMP Echo Request. Existe la posibilidad de evitar que nuestro equipo responda cuando recibe un Echo Request, y es algo extendido, por lo que en ocasiones esta opción puede resultar inútil. Con -PP enviamos un paquete ICMP Timestamp, y con -PM un ICMP Addressmask, que si suelen estar activos en los equipos.

Ping ARP. Esta técnica se utiliza por defecto cuando Nmap detecta que nos encontramos en una red local. Utiliza un algoritmo optimizado para que sea mucho más rápido, ya que ignora los paquetes IP, con ARP ya sabemos si está vivo o no. Si no queremos que Nmap utilice este sondeo ARP, tenemos que utilizar la opción –sen-ip

Ping SCTP. SCTP es un protocolo utilizado en la capa de transporte. Tiene algunas características muy interesantes, como el multihoming. Utiliza un Handshake en cuatro fases, como se puede ver en la imagen. Por defecto envía un paquete al puerto 80, si el equipo responde con un INIT-ACK o un ABORT, es señal de que el equipo está activo.

Underc0de - Init Ack

IP Protocol Ping. Envía paquetes de distintos tipo de protocolos. Por defecto se envía de los protocolos 1 (ICMP), 2 (IGMP) y 4 (IP).

Con -n no realiza resolución DNS inversa, lo que aumenta ligeramente la velocidad. Con -R fuerza la resolución inversa.

Utilizar la resolución DNS del sistema, una IP por vez, en lugar de utilizar la de nmap, que envía múltiples solicitudes en paralelo.

Se utiliza para especificar que servidores DNS queremos utilizar, en lugar de usar los que nmap encuentra en /etc/resolv.conf.


Agradecemos a Bael por compartir el conocimiento, invitamos a que pasen por el post para continuar las actividades.

Posts Relacionados

Comments

comments

Deja una respuesta

Tu email no será publicado. Los campos requeridos estan marcados con *
Puedes usar tags HTML y los atributos: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">