Dominando Nmap: Escaneo de Puertos y Servicios de Red

Enviado por Programa Chuletas y clasificado en Informática y Telecomunicaciones

Escrito el en español con un tamaño de 8,87 KB

Introducción y Objetivos

¿Qué es Nmap? Es una herramienta para administradores de sistemas y personas interesadas en el escaneo de redes, tanto grandes como pequeñas, para determinar los equipos que se encuentran activos y cuáles son sus servicios. En definitiva, un escáner de puertos muy potente.

El objetivo es poder determinar si un servidor o máquina está en uso y qué servicios ofrece.

Conceptos Previos

Para que los usuarios con menos experiencia en el tema puedan seguir con facilidad este manual, debemos tener claras algunas ideas.

¿Qué es un puerto?

Un puerto es una zona en la que dos ordenadores (hosts) intercambian información.

¿Qué es un servicio?

Un servicio es el tipo de información que se intercambia con una utilidad determinada, como SSH o Telnet.

¿Qué es un Firewall?

Un firewall acepta o no el tráfico entrante o saliente de un ordenador.

¿Qué son paquetes SYN?

En resumen, son paquetes que abren un intento de establecer una conexión TCP.

Instalación

Para instalar Nmap en Debian, podemos recurrir a Apt:

bash# apt-get install nmap

Si deseamos instalarlo descargando las fuentes del programa, iremos a la dirección:

http://www.insecure.org/nmap/nmap_download.html

Una vez descargadas las fuentes, solo nos queda descomprimirlas y compilarlas.

Bash$ bzip2 -cd nmap-VERSION.tar.bz2 | tar xvf -

Bash$ cd nmap-VERSION

Bash$ ./configure

Bash$ make

Bash$ su

Bash# make install

Una vez compilado, tendremos el ejecutable "nmap" y podremos usarlo como detallaremos posteriormente.

Aplicación Gráfica para Nmap (NMAPFE)

Si queremos una utilidad gráfica a clic de ratón, podemos instalar este intérprete y usarlo fácilmente.

Para instalarlo, simplemente lo descargamos por apt:

bash# apt-get install nmapfe

Esta utilidad facilita su manejo, gracias a la visualización de todas las opciones.

Usando Nmap

Vamos a ver cómo se usa Nmap en la práctica.

Lo ejecutamos seguido de la IP que nos gustaría escanear.

Bash$ nmap 172.26.0.3

Starting nmap 3.70 (http://www.insecure.org/nmap/) at 2004-10-20 02:13 CESTInteresting ports on 172.26.0.3:(The 1654 ports scanned but not shown below are in state: closed)PORT    STATE SERVICE9/tcp   open  discard13/tcp  open  daytime22/tcp  open  ssh37/tcp  open  time74/tcp  filtered netrjs-480/tcp  open  http349/tcp filtered mftp6000/tcp open  X11Nmap run completed -- 1 IP address (1 host up) scanned in 2.529 seconds

Como se puede observar, la salida del programa tras escanear es bastante simple y se entiende perfectamente.

Nos dice que la IP 172.26.0.3 tiene los puertos 9, 13, 22, 37, 80 y 6000 abiertos y el servicio al cual pertenecen.

Esto es un escaneo básico. Empecemos a introducir opciones y comentar para qué sirve cada una.

Escaneando Rango de Puertos

Para escanear un rango determinado de puertos para una IP, usaremos la opción -p:

bash$ nmap -p 1-80 172.26.0.3

Starting nmap 3.70 (http://www.insecure.org/nmap/) at 2004-10-20 02:29 CESTInteresting ports on 172.26.0.3(The 74 ports scanned but not shown below are in state: closed)PORT    STATE SERVICE9/tcp   open  discard13/tcp  open  daytime22/tcp  open  ssh25/tcp  open  smtp37/tcp  open  time80/tcp  open  httpNmap run completed -- 1 IP address (1 host up) scanned in 3.612 seconds

La opción -p nos permite acotar un rango de puertos incluyendo el primero y el último, muy útil para tardar menos escaneando si sabemos que solo nos interesan determinados puertos. También con -p 22,53,110,143 escanearemos solo los puertos especificados.

Escaneando un Rango de IPs para un Puerto Determinado

Si estamos en una red donde nos interesa saber qué ordenadores tienen, por ejemplo, el puerto 139 abierto, lo haríamos de la siguiente manera:

bash# nmap -p 139 172.26.0.1-10

Starting nmap 3.70 (http://www.insecure.org/nmap/) at 2004-10-20 02:35 CESTInteresting ports on 172.26.0.2:PORT    STATE SERVICE139/tcp filtered netbios-ssnInteresting ports on 172.26.0.9):PORT    STATE SERVICE139/tcp open  netbios-ssnNmap run completed -- 10 IP addresses (2 hosts up) scanned in 4.002 second

La información que obtenemos sería la de dos ordenadores encendidos en ese rango de IPs, como podemos leer al final, y que uno de ellos tiene abierto el servicio de NetBIOS perteneciente al puerto 139.

Escanear un Host sin hacerle Ping

La opción -P0 puede servirnos si no queremos que intente hacer ping a un servidor antes de escanearlo. Es muy útil para máquinas que tienen firewall o no responden a ping.

Escaneando Host por Ping

Usando la opción -sP, le diremos a Nmap que nos haga un escaneo de los hosts haciendo ping.

Escaneando y Sacando Versiones de los Servicios

Si queremos obtener las versiones de los servicios, por ejemplo, la versión de SSH que se está usando en una determinada IP o host, debemos usar la opción -sV.

bash# nmap -sV 172.26.0.3

Starting nmap 3.70 (http://www.insecure.org/nmap/) at 2004-10-20 02:44 CESTInteresting ports on 172.26.0.3:(The 1654 ports scanned but not shown below are in state: closed)PORT    STATE SERVICE    VERSION9/tcp   open  discard?13/tcp  open  daytime22/tcp  open  ssh       OpenSSH 3.8.1p1 (protocol 2.0)37/tcp  open  time80/tcp  open  http      Apache httpd 1.3.31 ((Debian GNU/Linux))6000/tcp open  X11       (access denied)Nmap run completed -- 1 IP address (1 host up) scanned in 103.108 seconds

Es tan útil saber qué se está ejecutando en una máquina como cuánto tiempo hace que actualizan algún tipo de servicio.

Como podemos ver, nos dice la versión de OpenSSH y de Apache.

Cómo Saber el Sistema Operativo que está Instalado en un Host

Con la opción -O podemos saber qué sistema tiene un host.

bash# nmap -O 172.26.0.6

Starting nmap 3.70 (http://www.insecure.org/nmap/) at 2004-10-20 02:50 CESTInsufficient responses for TCP sequencing (3), OS detection may be less accurateInteresting ports on 172.26.0.6:(The 1654 ports scanned but not shown below are in state: closed)PORT    STATE SERVICE9/tcp   open  discard13/tcp  open  daytime22/tcp  open  ssh37/tcp  open  time80/tcp  open  http6000/tcp open  X11Device type: general purposeRunning: Linux 2.4.X|2.5.X|2.6.XOS details: Linux 2.4.0 - 2.5.20, Gentoo 1.2 linux (Kernel 2.4.19-gentoo-rc5), Linux 2.4.20, Uptime 0.132 days (since Tue Oct 19 23:41:15 2004)Nmap run completed -- 1 IP address (1 host up) scanned in 4.572 seconds

Dice que tiene un núcleo 2.4 y lleva Gentoo instalado, muy útil para ciertas cosas.

En un ordenador con Windows, nos saldría un mensaje similar a este:

Device type: general purposeRunning: Microsoft Windows 2003/.NET|NT/2K/XPOS details: Microsoft Windows Server 2003, Microsoft Windows 2000 SP3

Este sería un ordenador con Windows Server 2003.

Cabe mencionar que Nmap puede equivocarse y decirnos que es una Gentoo y ser una Debian, pero no falla de Windows a Linux o FreeBSD.

Escaneando a Velocidades Variables

Para escanear a mayor o menor velocidad para no ser detectados, o bien si no nos importa que a un administrador le aparezca un escaneo de puertos desde nuestra IP si está mirando o monitorizando la red, usamos la opción -T seguida de Paranoid, Sneaky, Polite, Normal, Aggressive, Insane, de mayor a menor nivel de cuidado.

Escaneos con Opciones Avanzadas I

Opción -sS: Escaneo TCP SYN. Se envían paquetes SYN, denominada como escaneo medio abierto porque envía paquetes como si se fuese a abrir una conexión.

Este método requiere ser Root para el envío de estos paquetes.

Escaneo con Opciones Avanzadas II

Opciones -sF, -sX, -sN: Modos Stealth FIN, Xmas Tree o Nul scan, respectivamente.

Con estos modos, podremos ser suficientemente clandestinos por si hay un firewall o filtros que no dejan enviar paquetes SYN a determinados puertos.

Debemos ser root para poder usar estas opciones.

Entradas relacionadas: