Nmap: Historia y usos básicos.

NMap: Historia y usos básicos

Nmap es el escáner de puertos más famoso en la actualidad, es software libre y con el podemos rastrear puertos y servidores además de, entre otras cosas, identificar qué sistema operativo está usando. Es una herramienta usada frecuentemente por administradores de sistemas, ya sea para descubrir un servicio oculto que no veamos a simple vista u obtener información de hardware de red conectado. En seguridad informática se usa para realizar tests de intrusión, buscar servicios abiertos, obtener la versión del sistema operativo y programas instalados y un largo etcétera de posibilidades ya que podemos añadir nuestros propios scripts para personalizar tests o añadirle funcionalidades.
Nmap apareció por primera vez en Septiembre de 1997 en el número 51 la revista “Phrack Magazine”, originalmente estaba escrito en C, constaba principalmente de tres archivos, unas 2000 líneas de código, y estaba soportado sólo en sistemas GNU/Linux, por aquellos entonces estaba programado con la única intención de satisfacer las necesidades de su creador o a quien pudiera ser útil. Posteriormente se reescribió en C++ añadiéndole funcionalidades como soportar el protocolo IPv6. Su creador fue Gordon Lyon.

Nmap posee un interfaz gráfica que nos podría agilizar un poco la tarea, se llama Zenmap y viene incluido en el paquete para Windows, lo podemos descargar de aquí. En GNU/Linux suele estar en repositorios, aunque en el enlace anterior encontrarás su descarga desde su página oficial.

Zenmap1

Como vemos en la imagen, podemos introducir un objetivo y un perfil, opcionalmente si conocemos como funciona Nmap en el campo “orden” podemos retocar el comando a mano. Si desplegamos los perfiles podremos ver un listado con los tipos de escaneos más comunes en Nmap. Una vez realizado el escáner nos mostrará la salida del comando en “Salida Nmap”, podemos navegar entre las distintas pestañas, donde zenmap organiza los datos obtenidos en base a los puertos obtenidos, topología, host… o podemos seleccionar un host de la lista que nos muestra a la izquierda e ir seleccionando host por host.

La segunda opción es usar Nmap a través de la consola, donde podemos montar el comando como necesitemos y, si queremos, guardar el escaneo en un fichero de texto. Para comenzar, el propio comando tiene su ayuda, cosa que deberás consultar pasa casos concretos:

 nmap -h
 nmap --help
 man nmap

Los dos primeros comandos dan la misma salida, son formas distintas de decir lo mismo, el tercer comando nos lleva al manual de nmap (en español) como podéis ver en la siguiente imagen.

nmap_man

La sintaxis del comando es sencilla y la podemos expresar de la siguiente forma:

# nmap [Tipo de escaneo] [opciones] {datos del objetivo}

Nmap cuenta con distintos tipos de tests para escanear una red en función de las necesidades que tengamos, para indicar cada tipo de test, añadiremos un modificador al comando, a continuación os mostramos algunos de los más frecuentes:

-sS: Análisis TCP SYN

-sU: Escaneo UDP

-sn: Escaneo PING

-n/-R: Nunca hacer resolución por DNS / Resolver siempre

-sV: Realiza test a los puertos abiertos para sacar información del servicio relacionado.

-O: Habilita la detección de sistemas operativos, realiza una serie de test adicionales para comprobar qué sistema está utilizando la víctima.

-p: Especificamos un puerto o rango de puertos, hay varias formas de expresarlo:     -p22: Lo usamos para expresar un único puerto.
-p24-2088: Así especificamos un rango de puertos, en este caso del 24 al 2088.
-pU:53,111,137,T:21-25,80,139 : En este caso estamos indicando una lista de puertos y rango de puertos separados por una coma, podemos especificar que tipo de tráfico va a tener determinado puerto, en este case 53 le indicamos que es UDP y el rango del 21 al 25 TCP.

-iL <nombrefichero>: se usa para indicar a nmap un fichero donde estarán incluidas las direcciones ip a escanear.

Ejemplo práctico:

Para las pruebas voy a usar la máquina virtual de BadStore, la podéis descargar aquí. La IP que le hemos asignado a badstore es la 133.

# nmap -sS -sV -p 80 192.168.1.133
Con este comando escaneamos el puerto 80 (Web) de BadStore, aparte del escaneo TCP SYN, también indicamos a Nmap que realice tests para descubrir el servicio que está corriendo. Abajo os dejo su salida:

Nmap80BadStore

# nmap -sS -sV -O -p 1-65535 192.168.1.133
En este caso hacemos escaneo TCP a todo el rango de puertos. Además hemos añadido la detección de sistema operativo. Podemos ver que nos muestra el tipo de sistema operativo y el kernel usado. A continuación tenéis su salida:

escaneoBadstoreNmap2

Otros ejemplos:

# nmap -pn 192.168.1.0/24
Con este comando realizamos ping a toda la subred donde nos encontremos, en este caso hemos especificado al final la dirección de la red con “0/24”. Debemos tener en cuenta que los dispositivos pueden no responder al ping, así por tanto para el descubrimiento de teléfonos móviles conectados a nuestra red no se recomiendan escaneos basados en ping.

# nmap -A -v 192.168.1.133
El modificador -A engloba a varios modificadores: Detección de Sistema Operativo, detección de versión, escaneo con scripts (por defecto) y la traza (–traceroute).

# nmap -A -S 192.168.1.88 -e eth0 192.168.1.1
En este ejemplo el modificador -S se usa para indicar una dirección de origen distinta a la que disponemos, debemos indicar también la interfaz, se puede hacer lo mismo con la dirección MAC con el modificador –spoof-mac.