CommandsStyle

miércoles, 29 de noviembre de 2017

Un nmap para listarlos a todos, un nmap para analizar sus puertos y obtener información

Hoy vamos a hablar de nmap. Una herramienta de la que se ha hablado mucho, pero de la que en muchos casos no se saca todo el jugo que puede dar.

Un nmap para listarlos a todos, un nmap para analizar sus puertos y obtener información
Un nmap para listarlos a todos, un nmap para analizar sus puertos y obtener información


El uso más común de nmap es de listar puertos abiertos en un equipo, pero esta herramienta permite hacer muchas más cosas.

Permite descubrir los equipos conectados a una red, permite ver las versiones de los servicios que escuchan ciertos puertos... etc.

Este post no pretende ser un manual completo de nmap, para ello, existe su documentación oficial que puedes encontrar aquí o en su versión en español aquí

Para realizar todas las pruebas de este post, voy a utilizar kali linux, ya que trae instalada la herramienta nmap lo cual nos ahorra un poquito de trabajo :)

Lo primero que tenemos que hacer es ver en qué red nos encontramos conectados, ya que es sobre esta red sobre la que vamos a trabajar.

Para ver en qué red nos encontramos, utilizaremos el comando:

ifconfig

Una vez hemos obtenido nuestra IP (y por tanto ya conocemos la red a la que nos encontramos conectados), podemos empezar a trabajar con nmap.
En este caso, los ejemplos que pondremos utilizaran la red 192.168.37.0/24


Listado de equipos de una red

Nmap nos permite descubrir los equipos que hay conectados a una red. Para ello podemos utilizar varios comandos:


Resolución DNS inversa

La opción más silenciosa para los equipos de la red, es la opción -sL ya que permite hacer una resolución DNS inversa de las IPs del rango dado.

Es importante marcar que es la opción más silenciosa para los equipos de la red, ya que esta opción no envía información a dichos equipos, pero sin embargo, envía peticiones al servidor DNS de la red para intentar hacer la resolución inversa. Con lo que este servidor sí que recibe tráfico de nuestro escaneo.

El comando a utilizar seria el siguiente:

nmap 192.168.37.0/24 -sL

Hay que tener en cuenta, que esta opción en algunas redes no nos dará resultados, ya que puede que no contemos con equipos dados de alta en el servidor DNS, pero sigue siendo una opción a tener en cuenta.


Barrido ping o ping sweep

La opción -sP  realiza un descubrimiento mediante el uso de paquetes ICMP. Este modo es conocido también como barrido ping.
Para descubrir equipos, este modo envía paquetes a todas las direcciones IPs de la red que indiquemos a nmap, por lo que es un análisis más intrusivo que en el caso anterior. El comando a utilizar para este tipo de descubrimiento de equipos en la red es el siguiente:

nmap 192.168.37.0/24 -sP


Ping ARP

En ocasiones, las maquinas están configuradas para no responder a los paquetes ICMP o no están dadas de alta en el servidor DNS, lo que no nos permite realizar una resolución DNS inversa. En estos casos, podemos intentar realizar un Ping ARP.

El funcionamiento de este modo de ping, se basa en el funcionamiento del protocolo ARP.
Para explicarlo de forma simplificada, Nmap realiza una petición ARP para cada una de las IPs del rango.

Cuando una de esas IPs está siendo usada, el equipo que tiene esa dirección IP contesta con la dirección MAC y por lo tanto, nmap detecta que hay un equipo en la red utilizando dicha IP.

Para hacer uso de este tipo de descubrimiento de equipos en la red, el comando a utilizar es el siguiente:

nmap 192.168.37.0/24 -PR -sn

La opción -sn indica que no realice un escaneo de puertos, ya que por defecto la opción -PR sí que la realiza.


Listado de puertos abiertos de un equipo

Una vez que hemos conseguido saber los equipos que están conectados a una red, podemos obtener información sobre los puertos que están escuchando.
Existen varios métodos para saber los puertos que está escuchando una máquina. A continuación hablaremos sobre algunos de ellos.

En los ejemplos que vamos a indicar a continuación, vamos a suponer que la dirección de la máquina de la que deseamos obtener información es 192.168.37.129


Escaneo TCP SYN

El escaneo TCP SYN es un escaneo relativamente sigiloso, ya que no llega a completar las conexiones del protocolo TCP, pero sí que envía paquetes al objetivo.
En este escaneo, nmap únicamente inicia una conexión TCP mediante el envío de un paquete SYN a un puerto concreto y queda a la espera de recibir una respuesta.
En caso de que nmap reciba una respuesta SYN-ACK, nmap detecta que el puerto está abierto y no envía más paquetes haciendo uso de ese puerto, de modo que la conexión TCP queda a medio establecer. Pero se ha detectado si el puerto está abierto o no.

El comando para utilizar este tipo de escaneo es el siguiente:

nmap -sS 192.168.37.129


Escaneo TCP Connect

Al contrario de lo que ocurre con el escaneo TCP SYN, el escaneo TCP Connect sí que establece una conexión TCP con la maquina objetivo.

Este escaneo es un poco más ruidoso que el anterior por el simple hecho de que la conexión termina por establecerse.

El comando para utilizar este tipo de escaneo es el siguiente:

nmap -sT 192.168.37.129


Otros escaneos TCP

Existen otros métodos para determinar si un puerto está abierto o cerrado.  Estos escaneos son menos utilizados normalmente, pero conviene conocerlos.

Según el protocolo TCP, si un paquete que se envía a un puerto no contiene los bits SYN, RST o ACK, se responderá con un RST si el puerto está cerrado. En caso de que el puerto este abierto, no se responderá nada.


Escaneo Null

Este escaneo no activa ningún bit en las cabeceras TCP.
El comando para utilizar este tipo de escaneo es:

nmap -sN 192.168.37.129


Escaneo FIN

Este escaneo activa el bit FIN de la cabecera TCP.
El comando para utilizar este tipo de escaneo es:

nmap -sF 192.168.37.129


Escaneo Xmas

Este escaneo activa los bits FIN, PSH y URG.
El comando para utilizar este tipo de escaneo es:

nmap -sX 192.168.37.129


Escaneo de puertos UDP

Al igual que los puertos TCP, nmap también nos permite realizar escaneo de los puertos del protocolo UDP que está escuchando una máquina.
Para determinar si un puerto UDP se encuentra abierto o cerrado, nmap envía una cabecera UDP a un puerto.
Solo si se obtiene una respuesta a dicha cabecera, se marca el puerto como abierto. En otros casos, se marca el puerto como cerrado o como filtrado en función de la respuesta obtenida.

El comando para utilizar el escaneo de puertos UDP es el siguiente:

nmap -sU 192.168.37.129


Escaneo de versiones de servicios a la escucha

En ocasiones, nmap puede intentar obtener información sobre las versiones de los servicios que están a la escucha en los puertos abiertos.
Para habilitar esta opción, utilizaremos -sV. Esta opción se puede utilizar conjuntamente con los escaneos vistos anteriormente, de forma que podemos lanzarla con comandos similares al siguiente:

nmap -sS -sV 192.168.37.129


Escaneo de sistema operativo

Nmap ofrece la posibilidad de mostrar (Siempre que sea posible) el sistema operativo de la máquina que estamos analizando.
Para habilitar esta opción, utilizaremos la opción -O. Esta opción se puede utilizar conjuntamente con los escaneos vistos anteriormente, de forma que podemos lanzarla con comandos similares al siguiente:

nmap -sS -sV -O 192.168.37.129


Establecer rango de puertos escaneados

Nmap nos ofrece la posibilidad de escanear cualquier rango de puertos. Por defecto analiza 1000, pero le podemos indicar que analice cualquier rango con la opción -p.
Por ejemplo, si queremos realizar un escaneo de todos los puertos (del 1 al 65535) utilizaremos el siguiente comando:

nmap -sS -sV 192.168.37.129 -p 1-65535


Scripts de nmap

Una opción muy interesante de nmap es el uso de scripts para la detección de malas configuraciones, vulnerabilidades conocidas... etc.

Para utilizar estos scripts, se utiliza la opción --script seguido de una de las siguientes opciones:

• auth
Ejecuta scripts que detectan posibles contraseñas débiles, usuarios y contraseñas por defecto... etc.
• Discovery
Estos scripts nos intentan ofrecer mayor nivel de detalle del equipo objetivo. Intentan descubrir información sobre la red, información sobre los dispositivos con SNMP activos, servicios o directorios expuestos... etc.
• Intrusive
Utiliza scripts intrusivos. El uso de estos scripts puede llegar a causar un mal funcionamiento de la maquina objetivo. Hay que usar esta opción con mucho cuidado amigos :)
• Malware
Utiliza scripts que ayudan a detectar si el objetivo está infectado por malware o si tiene alguna puerta trasera instalada.
• Safe
Utiliza scripts que están catalogados como seguros. Estos scripts no suelen causar un mal funcionamiento de la maquina objetivo y ofrecen información que puede sernos de utilidad.
• Vuln
Utiliza scripts que comprueban vulnerabilidades conocidas. En caso de encontrar alguna, nos muestra el resultado.

Un ejemplo del uso de --script es el siguiente comando:

nmap -sS -sV -O 192.168.37.129 --script auth

Con todo esto, ya le hemos dado un buen repaso a nmap y a sus opciones. Espero que os haya gustado y que os sea de utilidad.

Hasta el próximo post! :)