Archivo del sitio

Nmap: Primeros pasos y consejos útiles

nmap

Pruebas realizadas desde: GNU/Linux Debian “Wheezy” (7.2)

Definitivamente Nmap es de las herramientas consagradas cuando se habla de temas de seguridad, utilizada por millones de personas para la administración de redes, inventarios y auditorías de seguridad, es tan popular que incluso ha aparecido en varias películas (The Matrix Reloaded, Die Hard 4, etc).

Como dato histórico, la herramienta fue desarrollada por Gordon “Fyodor” Lyon, y fue liberada en la revista Phrack ed. 51 art. 11, el 1ero de septiembre de 1997. Ver artículo: http://phrack.org/issues.html?issue=51&id=11#article

Podemos descargarlo desde la página oficial: http://nmap.org/download.html

Si estamos en Windows, bastaría con bajar el instalador (en el apartado Microsoft Windows Binaries) y ejecutarlo. Si estamos en un sitema tipo Debian, podemos instalarlo desde los repositorios ejecutando:

# aptitude install nmap

O bien, podemos bajarnos los archivos fuente de Nmap y compilarlo nosotros mismos.

Para correr un escaneo en Nmap bastaría con ejecutar desde la terminal (Ojo! la mayoría de escaneos interesantes requieren permisos de root/Administrador):

# nmap x.x.x.x

x.x.x.x -> Dirección IP, ej: 192.168.1.10

En la IP, Nmap también soporta notación CIDR, ej.:

# nmap 192.168.1.0/24

Un escaneo de éste tipo realizaría un SYN scan a 255 direcciones (de 0 a 255)

Otro formato soportado es el siguiente:

# nmap 192.168.1.1-254

Realiza el escaneo del host 1 al 254.

Con Nmap tendremos una gran cantidad de posibilidades para el análisis de una red, de manera genérica, podemos definir los pasos de un escaneo (3) de la siguiente manera y que podemos llevar a cabo con Nmap:

Paso 1: Identificar los sistemas activos

Por decir, podríamos hacer un Ping Sweep, ésto es, un barrido de pings, a un rango de IPs. Para hacerlo podemos ejecutar desde la terminal:

# nmap -sP 192.168.1.0/24

El resultado arrojaría la lista de dispositivos que responden al ping (activos). Sin embargo, un escaneo de éste tipo es algo ruidoso y no es 100% confiable (por la capacidad de los equipos para deshabilitar los pings). Hay una segunda opción que podemos considerar, el List Scan, el cual solo hace una resolución DNS inversa para obtener los nombres de hosts de las IPs haciendo la petición al servidor DNS default o alguno especificado por nosotros, ejemplo:

# nmap -sL 192.168.1.0/24

Haría una resolución DNS de 255 hosts en la red de máscara natural. Toma el servidor DNS default de nuestra máquina, si estamos en un GNU/Linux como Debian, podemos revisar cuál es el valor default en el archivo resolv.conf :

$ cat /etc/resolv.conf
# Generated by NetworkManager
domain lan
search lan
nameserver 192.168.1.254

Si queremos especificar un servidor DNS podríamos hacer algo como:

# nmap -sL yahoo.com --dns-server 8.8.8.8

Lo cual es una resolución del nombre de dominio yahoo.com (si, Nmap no solo acepta IPs, si no también nombres de host/dominio) a través del servidor DNS de Google (8.8.8.8).

nmap0

Paso 2: Descubrir puertos abiertos

Una vez que conocemos qué dispositivos están activos en nuestra red, podemos proceder a hacer un análisis más detallado de cada host, en el segundo paso del escaneo intentaremos obtener la lista de puertos que tiene activos un host, lo podemos hacer ejecutando:

# nmap -sS -v -T4 x.x.x.x

x.x.x.x -> Dirección IP (192.168.1.10), rango de red (192.168.1.0/24), nombre de host (yahoo.com) y variantes

-sS -> Cuando pasamos el parámetro -sS especificamos que el escaneo a realizar es un SYN Scan, ésto es, recordando el Three-Way-HandShake, que Nmap mandará un paquete TCP con la bandera SYN activada, si el puerto está abierto recibirá como respuesta del host un SYN+ACK y si está cerrado un RST, es un escaneo Half-Open por que se corta en éste punto la comunicación y no se termina de completar el Three-Way-HandShake. Otros tipos de escaneos disponibles son: -sT (Full TCP Connect), -sX (XMAS Scan), -sF (FIN Scan), -sA (ACK Scan), etc.

-v -> Opción “verbose”, con este parámetro le indicamos que nos arroje en pantalla más información de los proceso que realiza durante el escaneo, podemos utilizar -vv para indicar que sea “very verbose”

-T4 -> La opción -T# nos permite aumentar o disminuir el tiempo de espera entre el envío de cada sonda (paquete) que manda Nmap al host, las opciones van de 0 (paranoid, cuando estamos en redes muy lentas o queremos evitar activar sistemas IDS, un escaneo de éste tipo es muy tardado) a 5(insane, útil cuando estamos en redes de alta velocidad), podemos dejarlo en -T4 (aggressive) cuando estamos en una red relativamente rápida.

nmap1

Paso 3: Identificar el Sistema Operativo y los servicios

Nmap utiliza técnicas como banner grabbing y OS Fingerprinting para lograr éste objetivo. La técnica para obtener banners puede ser tan sencilla como tratar de ejecutar una sesión telnet a una ip y puerto específico y revisar que mensaje (banner) nos regresa. El OS Fingerprinting, lo realiza observando el comportamiento y las respuestas del host analizado y relacionando ésto con una digamos “base de datos” de comportamiento particular que tienen los diferentes Sistemas Operativos existentes.

Si queremos saber qué servicios (y versiones) corre el host que estamos analizando en los puertos que tiene abiertos, podemos hacer un Version Scan (-sV) con OS detection (-O) activado:

# nmap -sV -O x.x.x.x

x.x.x.x -> Dirección IP, de red, etc.

nmap2

Como podemos ver en la imágen, dentro de mi red local, al escanear mi computadora, vemos que tengo el puerto 80 y el 111 abiertos, con los servicios de http (Apache 2.2.22 en Debian) y rcpbind respectivamente. Sin embargo, tuvo problemas para definir exactamente el tipo de Sistema Operativo.

Éstos son algunos puntos básicos sobre Nmap, espero hablar más a fondo en otras entradas del blog, por ahora lo dejaré en este punto para no hacer muy largo el post.