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.