Nmap (Network Mapper) es una herramienta de código abierto que se utiliza para el escaneo y el análisis de redes. Es una herramienta indispensable para los profesionales en ciberseguridad, administradores de redes y auditores de seguridad informática.
¿Para qué sirve Nmap?
Nmap se utiliza principalmente para:
Descubrimiento de hosts: Identificar dispositivos activos en una red
Escaneo de puertos: Determinar que puertos están abiertos y que servicios están disponibles en un host.
Detección de servicios: Identificar que aplicaciones y versiones están ejecutandose en los puertos abiertos.
Identificación de sistemas operativos: Estimar el sistema operativo y su versión.
Evaluación de vulnerabilidades: Identificar vulnerabilidades conocidas y posibles configuraciones inseguras.


Escaneo TCP Connect (-sT)
Este escaneo utiliza una conexión completa TCP para determinar si un puerto está abierto. Se realiza enviando paquetes SYN, ACK y luego un RST para cerrar la conexión. Es lo que se conoce como Three-way handshake.
Es util cuando tenemos que realizar un escaneo sin peligro de ser detectados. Es muy confiable pero es facilmente detectable por firewalls y sistemas de detección de intrusos (IDS).

En este ejemplo, dentro de mi laboratorio de pruebas, realizamos un escaneo -sT a un host con IP 192.168.211.131
Podemos observar que Nmap nos detecta los puertos abiertos. Podemos focalizar el escaneo en rangos con el comando -p (nmap -sT -p ARGUMENTO <IP>)
-p 1-1000 (escanea los puertos del 1 al 1000)
-p 80 (Escanea solo el puerto 80)
-p 80,443 (Escanea los puertos 80 y 443)

En este caso observamos los puertos abiertos y obtenemos la direccion MAC del dispostivo.
Escaneo SYN (-sS)
A diferencia del escaneo -sT, este no llega a completar el Three-way handshake. Nmap envía un paquete SYN y espera un SYN-ACK para confirmar que el puerto se encuentra abierto. Luego envia un RST para evitar la conexión completa.
Es más rápido y sigiloso que el escaneo -sT.
El escaneo realizado al host 192.168.211.131 en la modalidad -sS nos entrega los siguientes resultados de puertos abiertos.

Si bien los puertos abiertos detectados son los mismos, es importante destacar que este escaneo, al no completar el Three-way handshake es, por lo pronto, más sigiloso.

Sin embargo, a pesar de ser sigiloso, este tipo de escaneo tiene la desventaja que puede otorgar falsos negativos en entornos con firewalls o sistemas de filtrado. Esto se debe a que bloquean respuestas SYN-ACK y hace que algunos puertos abiertos no sean detectados.

Escaneo de puertos UDP(-sU)
Este escaneo envia paquetes UDP a los puertos de destino. Si no hay respuesta el puerto podría estar abierto o filtrado. Si se recibe un mensaje ICMP "Port Unrecheable", el puerto está cerrado.
Este escaneo demora mucho tiempo.
Los escaneos UDP son mas lentos por varias razones técnicas. En primer lugar el UDP es un protocolo sin conexión y por lo tanto, a diferencia de TCP, un paquete UDP enviado a un puerto no espera respuesta a menos que el servicio esté activo y esa respuesta este configurada. Si no hay respuesta, esto puede significar que el puerto esta abierto y/o filtrado, lo que requiere esperar más tiempo para asegurarse de que no hubo perdida de paquetes.
Por otro lado, debido a la naturaleza del protocolo UDP, Nmap tiene que esperar más tiempo antes de determinar el estado de un puerto. Si no recibe respuesta, el escaner debe asumir la posibilidad de que el paquete UDP se haya perdido o haya sido filtrado, y puede que necesite reenviar  el paquete o esperar un timeout más largo.
En este caso, sabiendo de antemano donde corren los servicios UDP más utilizados, realizamos un escaneo focalizado en dichos puertos. Vemos, entonces, que solo el puerto 68 se encuentra abierto/filtrado.
Escaneo de detección de versión(-sV)
Es importante escanear la versión de los servicios que corren en los puertos abiertos. De esta manera podremos identificar vulnerabilidades.
Los servicios desactualizados tienden a tener fallas de seguridad públicas en la CVE que podemos utilizar para rastrear un exploit a aplicar.

Para hacerlo utiliza un ARP.

Escaneo de sistema operativo (-O)
Este escaneo utiliza diferentes técnicas de OS fingerprinting para identificar el sistema operativo que está corriendo el objetivo.
Es ideal para obtener contexto sobre el entorno de la red y planificar un ataque basado en los sistemas detectados.

Como dato de color, en este caso los escaneos se han realizado contra un único objetivo pero nmap tiene la positibilidad de escanear todos los hosts de una red. Para hacerlo hay que colocar la ip, remplazando el ultimo octeto (el que corresponde a la red) por un 0/24.

Ej: 192.168.211.0/24
Modo verbose (-v) y export de xml con datos (-oX)
Nmap posee muchas facilidades para exportar su contenido. Si bien es algo a lo que estamos acostumbrados, examinar las respuestas de los programas desde la consola no suelen ser muy amenas a la vista.

Es por eso que el siguiente comando nos puede ayudar: -oX

Este comando lo que hace es exportar los resultados a un fichero a elección, al que le podemos asignar una plantilla (en este caso una que nos ofrece nmap).
nmap -v -sV -oX NOMBREDELCFICHERO.xml --stylecheet: "https://svn.nmap.org/nmap/docs/nmap.xsl" <IP>

El comando -v (verbose) nos ayuda a obtener más información sobre pantalla referida a los datos que Nmap va recuperando a medida que escanea.



Aqui debajo observamos el output del escaneo. Se detallan: el numero de puerto, el protocolo, el estado, el servicio, su modo de identificación, el software que está corriendo y su versión.
Enumeración SMB con Nmap
Nmap posee varios scripts incorporados que nos permiten realizar un escaneo de vulnerabilidades detallado y, en algunos casos, hasta poder explotarlas.
Sabemos que en los puertos 139 y 445 corre Samba, la implementacion Linux del protocolo de red SMB, que se utiliza para compartir archivos, impresoras y otros recursos entre equipos de una misma red.

Mediante el escaneo -sV de los puertos 139 y 445 detectamos que en dichos puertos abiertos se está corriendo la implementación Samba.

Por medio de Nmap podemos enumerar diferentes contenidos SMB.
Los scripts que vienen con Nmap se pueden encontrar en la carpeta:
/usr/share/nmap/scripts

Una vez allí con el comando "ls"  se listan todos los scripts. Para seleccionar solo los de SMB basta con colocar "ls smb*"

Los nombres de dichos scripts nos permiten conocer su utilidad.
Podemos cargar un script para enumerar todos los recursos compartidos. Se coloca en la consola de la siguiente manera:
nmap -p 139,445 --script=smb-enum-shares <IP OBJETIVO>

Estos recursos compartidos nos permiten saber que archivos o directorios están siendo compartidos por la red.

Este script se conecta al servicio SMB y solicita la lista de recursos compartidos disponibles. Estos pueden resultar utiles para identificar puntos acceso potenciales al sistema.
Podemos utilizar otro script, en este caso "smb-enum-users" para enumerar cuentas de usuarios.

Estas cuentas podrán ser atacadas luego mediante ataques de fuerza bruta o similares.

En este caso podemos observar que obtuvimos un nombre de usuario: chewbacca, que luego podemos usar para intentar entrar al sistema de archivos.

El script "smb-os-discovery" utiliza el protocolo SMB para obtener aun más datos del sistema.

Como podemos ver acá, nos dice el nombre de la maquina en la red, la versión de Samba (util para buscar en la CVE) y el SO.

Sin embargo, debemos jerarquizar la información ya que nmap podría haber obtenido datos erroneos. En este caso el OS no es Windows 6.1 ya que sabemos que está corriendo Samba y que el nombre de la maquina es ubuntu.
Podemos solicitarle a Nmap que corra todos los scripts de un determinado servicio. Como son muchos es util exportarlo en un formato legible que podamos leer mas adelante.
En este caso, el comando utilizado es
nmap -p 139,445 --script=smb* -oX NOMBREDELFICHERO.xml --stylesheet="https://svn.nmap.org/nmap/docs/nmap.xsl" <DIRECCION IP>
Aquí tenemos una lista de las enumeraciones que nos han salido en el archivo xml que exportamos.
La lista es más larga, este es solo un fragmento.
Análisis de vulnerabilidades con Nmap
Nmap dispone de un script para analizar vulnerabilidades conocidas. Se nutre de la conocida lista CVE.
Ejecutando el comando:
sudo nmap -v -sS -oX vulnerabilidades.xml --stylesheet="https://svn.nmap.org/nmap/docs/nmap.xml" --script=vuln <IP>
Podemos ejecutar un analisis de vulnerabilidades (en este caso para TCP) que, como ya hemos visto antes, se exportara en un amigable formato xml que podemos utilizar para leer.
Podemos observar como, en este apartado, Nmap nos ha exportado las vulnerabilidades conocidas del puerto 80. Tambien lo ha hecho con todos los puertos que encontró abiertos.
En conclusión, Nmap es una poderosa herramienta que nos permite escanear redes de diversas formas. Sus posibilidades de escaneo son casi ilimitadas y es una aplicación indispensable para pentester y administradores de red.
NOTA: Todas estas pruebas fueron realizado en un laboratorio cerrado. Estos procedimientos no deben realizarse a equipos ajenos sin una previa autorización.

You may also like

Back to Top