Introducción
Nmap es una herramienta desarrollada por Fyodor de www.insecure.org, es una herramienta básica que permite realizar una labor sencilla de revisión (escaneo) de puertos y reporte del tipo de sistema operativo que usa la máquina.
El paquete nmap lo usaremos para escanear máquinas nuestras desde un servidor Linux nuestro. Estas máquinas que escanearemos tienen cualquier tipo de sistema operativo, es un escaneo de puertos tcp (o udp) que es un estándar de internet y no depende del sistema operativo. Es decir, la máquina a ser escaneada puede estar en windows, linux, puede ser un switch o un ruteador o cualquier elemento de nuestra red con dirección IP.
En este pequeño artículo hablaremos sobre cómo realizar revisiones a la red e iremos explicando ciertas opciones útiles de este programa.
ADVERTENCIA:
Este programa puede ser utilizado para realizar auditorias de seguridad en una red, pero también puede ser utilizada para fines delictivos, ya que pone al descubierto, puertos abiertos en las computadoras de una red, así como también es posible conocer como se encuentra organizada, y de cuantas computadoras consta una red. Es una herramienta pública que está disponible en internet y esté hecho mayormente para ayudar a mejorar nuestra red y es para esto que la explicamos.
Nosotros no promovemos ni inducimos a personas a realizar monitoreo y revisiones de redes que no sean las propias de ellos o que no estén autorizados a monitorear. Por favor solicitamos que las personas que quieran probar este paquete lo hagan con sus propias redes y no usen redes remotas que no les pertenezcan sin autorización de los administradores o propietarios de las redes.
Instalación
El proceso de instalación en CentOS 3 Linux es bastante simple:
yum -y install nmap
Esto nos instalará en nuestra máquina la versión más moderna que provea CentOS.
Este proceso también debe funcionar para:
* Fedora
* Red Hat Enterprise Linux (3 y 4)
* White Box Enterprise Linux (3 y 4)
Si usted tiene una distribución diferente a las anteriormente mencionadas, puede bajar el nmap de su sitio web en forma de tgz, y proceder a compilarlo manualmente. O instalarlo usando el instalador que provea esa distribución.
Veamos ahora el uso básico del nmap
Para usar el nmap, la forma más simple es especificándole la dirección IP que queremos revisar:
nmap 192.168.1.1
Este comando realizará un reporte de lo que vea en la dirección 192.168.1.1, nos indicará qué puertos hay abiertos, cuáles están filtrados y nos dirá un estimado de qué está corriendo en cada puerto.
Aquí un ejemplo de la salida del nmap:
Básicamente esta máquina que revisé (interna de mi red) tiene abierto los puertos 21, 22, 25, 53, 80, 110, 143, 953, 3306
Una vez determinados los puertos que tenemos abiertos en la máquina, es nuestra sugerencia que procedamos a determinar cuáles de estos puertos son los que realmente usamos. En el caso de esta máquina tenemos dudas de quién está escuchando en el puerto 953 así que procedemos a determinarlo desde la máquina linux con un comando llamado: netstat:
netstat -anp|grep 953
y nos mostrará:
ok, es el named, quedamos un poco más tranquilos.
También determinamos que el puerto 3306 (mysql) debe estar abierto porque realizamos trabajos con BD, pero solo abierto para esta interfaz de red, con un firewall simple lo cerramos en la otra interfaz que tiene esta máquina hacia la internet.
Consideramos que ésta es la labor fundamental del nmap, el ayudarnos a determinar el uso de cada puerto y cerrar los puertos o bajar los demonios que están corriendo sin sentido en nuestro servidor. Mientras menos puertos abiertos haya en nuestra máquinas, menos psibilidades de intrusión tendremos y además consumiremos menos recursos pues nuestra máquina tendrá menos demonios corriendo.
Veamos ahora, algunas opciones avanzadas:
Bien, ahora compliquemos un poquito más la situación, pero veremos que es sólo para ayudarnos:
-P0
A veces sabemos que una máquina existe, pero que no está respondiendo a los pings; a veces los desarrolladores o nosotros mismos consideramos que si no respondemos a los ping nuestra máquina estará más segura. La primera labor que hace el nmap al comenzar a escanear una máquina o red es hacerle ping a los dispositivos de red, y los que responden al ping son escaneados, los otros no.
Si conocemos que un dispositivo existe pero no responde al ping, podemos usar el switch: -P0 para indicarle que sabemos que esa máquina existe pero no queremos que le haga ping, sino que escanee directamente.
Por supuesto, si la máquina no existe en verdad perderemos tiempo pues el nmap comenzará a escanear ciegamente y a esperar respuestas que no le llegarán pues la máquina no existe.
nmap -P0 192.168.1.1
Hará lo mismo que el comando anterior pero no se fijará si el dispositivo responde al ping o no.
Revisando redes completas:
Este comando nos permitirá revisar redes completas, tengan en cuenta que una red puede ser bien grande y hacer que demore mucho el escaneo con nmap, además si lo combinamos con -P0, podemos estar seguro que demorará unos cuantos minutos u horas:
nmap 192.168.1.1/24
Esta opción nos indica que revise la red 192.168.1.0 (el ultimo numero es ignorado) con una máscara /24 (es decir, que tome como fijo los 24 primeros bits, 3 primeros octetos, por eso el ultimo numero no tiene utilidad en este caso).
El reporte nos lo irá dando de máquina en máquina hasta que acabe de revisar la red completamente
Una opción muy importante el nmap es la posibilidad que tiene de determinar, dada la información del stack TCP IP, el sistema operativo que corre en la máquina que está siendo revisada. Es muy simple:
nmap -O 192.168.1.1
no sólo determinará los puertos abiertos de esa máquina, sino que también dirá el SO de ella.
A propósito: Los comandos pueden ser usados combinados; es decir, podemos hacer un nmap de toda la red, combinado con el switch -O y el -P0:
nmap -O -P0 192.168.1.1/24
La determinación del sistema operativo puede resultarle imposible al nmap debido a que no conoce el stack tcpip conque está trabajando el sistema remoto, en este caso no nos dará una respuesta correcta sino nos indicará una serie de datos para que reportemos a los autores de nmap e indiquemos que SO aquí un ejemplo:
No exact OS matches for host (If you know what OS is running on it, see http://www.insecure.org/cgi-bin/nmap-submit.cgi).
TCP/IP fingerprint:
SInfo(V=3.00%P=i386-redhat-linux-gnu%D=6/1%Time=429DF2DB%O=21%C=1)
TSeq(Class=RI%gcd=1%SI=41C47B%IPID=I%TS=U)
TSeq(Class=RI%gcd=1%SI=41C4AB%IPID=I%TS=U)
TSeq(Class=RI%gcd=1%SI=41C486%IPID=I%TS=U)
T1(Resp=Y%DF=N%W=7FFF%ACK=S++%Flags=AS%Ops=M)
T2(Resp=N)
T3(Resp=Y%DF=N%W=7FFF%ACK=S++%Flags=AS%Ops=M)
T4(Resp=Y%DF=Y%W=0%ACK=O%Flags=R%Ops=)
T5(Resp=Y%DF=Y%W=0%ACK=S++%Flags=AR%Ops=)
T6(Resp=Y%DF=Y%W=0%ACK=O%Flags=R%Ops=)
T7(Resp=Y%DF=Y%W=0%ACK=S++%Flags=AR%Ops=)
PU(Resp=Y%DF=N%TOS=C0%IPLEN=164%RIPTL=148%RID=E%RIPCK=E%UCK=E%ULEN=134%DAT=E)
Pero al menos podemos determinar por lo que leemos que es un redhat linux, ya que lo dice en la información inicial.
Determinando hosts activos en la red:
Para esto se usa el comando
nmap -sP 192.168.1.1/24
El cual nos indicará qué máquinas de la red han respondido al ping. Solamente eso.
Escaneo transparente:
Esta es una forma que se puede usar para intentar evadir sistemas de detección de intrusos en nuestra red, lo que hace es no cerrar la conexión inicial (3 way handshake) aunque ya la mayoría de los sistemas de detección de intrusos detecta este tipo de escaneo, al menos nos servirá para ver en los logs de nuestros IDS si se reporta este tipo de escaneo:
nmap -sS 192.168.1.1
Realizará un escaneo transparente. Si el firewall que tenemos es moderno, éste indicará que le hemos escaneado, si no reporta nada, es que no está realizando detección contra escaneos transparentes.
nmap -sS 192.168.1.1 -p 80,110
Este comando anterior nos indicará que revise solamente los puertos 80 y 110 de forma transparente.
nmap -sS 192.168.1.1 -D 1.1.1.1,5.5.5.5,6.6.6.6,7.7.7.7 192.168.1.1
El comando anterior le indicará al NMAP que falsifique la dirección de origen haciendo pasar que viene desde (1.1.1.1,5.5.5.5,6.6.6.6,7.7.7.7), algunos IDS no son capaces de lidiar con multiples origenes y solo reportan los 4 primeros. Si nuestro IDS solo reporta estas IP que hemos falsificado y no reporta la nuestra, es que no está teniendo una eficiente determinación de la IP agresora.
Conclusiones
Con estos simples ejemplos estamos seguros que se podrá revisar la red o máquinas que nos pertenezcan con el objetivo de ayudar a mejorar la seguridad y cerrar puertos inecesarios de nuestra red.
Si desea una auditoría más profunda de su red, no dude en contactarnos para ayudarle con una auditoría de seguridad completa.