sábado, julio 23, 2011

Monitorizar la red en Distros Linux: NMap

Introducción a Nmap



Nmap (‘Network Mapper’), es una herramienta open source, diseñada para explorar y para realizar auditorias de seguridad en una red de computadoras.

A continuación se presentan ejemplos de utilización de esta poderosa herramienta.

*Nota: esta herramienta puede ser utilizada para realizar auditorias de seguridad en una red, pero también puede ser utilizada para fines delictivos, ya que esta herramienta 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.

Alguien dijo una vez, que la mejor forma de comprobar la seguridad de nuestra red, es tratar de romper por nosotros mismos dicha seguridad.

Solo de esta forma podremos conocer y quitarnos falsas creencias de que nuestra red es lo suficiente segura.

Además, si Ud. cree que su red es insegura, no se preocupe, que si existe una forma fácil y rápida de protegerse: por favor desconecte el cable de red.

Pero esta vez conoceremos formas básicas y no tan básicas de realizar auditorias en nuestra red de computadoras, para que no tenga que desconectar su cable de red .

Manos a la obra.

La sintaxis básica de nmap es:

nmap [tipo de scan] [opciones]

Por ejemplo si tenemos un host en nuestra
red, con dirección ip 192.168.0.1 y deseamos conocer que puertos tiene
abiertos, ejecutamos:

# nmap 192.168.0.1

Nmap nos mostrara en pantalla algo como esto:


Starting nmap V. 2.54BETA30 ( www.insecure.org/nmap/)
Interesting ports on localhost (192.168.0.1):
(The 1545 ports scanned but not shown below are in state: closed)
Port State Service
22/tcp open ssh
25/tcp open smtp
111/tcp open sunrpc
6000/tcp open X11

Nmap run completed -- 1 IP address (1 host up) scanned in 0 seconds


Este resultado puede variar, dependiendo de las opciones que se le pasen a nmap o de la cantidad de puertos, que se encuentren
abiertos en el host, que esta siendo "scaneado".

Si queremos, conocer que tipo de sistema operativo, esta corriendo el host al que le realizamos el scaneo, sólo basta agregar el parámetro -O a el comando nmap.

# nmap -O 192.168.0.1

nos mostrara un resultado como este:


Starting nmap V. 2.54BETA30 ( www.insecure.org/nmap/)
Interesting ports on localhost (192.168.0.1):
(The 1545 ports scanned but not shown below are in state: closed)

Port State Service
22/tcp open ssh
25/tcp open smtp
111/tcp open sunrpc
6000/tcp open X11

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=2.54BETA30%P=i386-suse-linux%D=7/20%Time=3D39A479%O=22%C=1)
TSeq(Class=RI%gcd=1%SI=1B445E%IPID=Z%TS=100HZ)
TSeq(Class=RI%gcd=1%SI=2E12CD%IPID=Z)
T1(Resp=Y%DF=Y%W=7FFF%ACK=S++%Flags=AS%Ops=MNNTNW)
T1(Resp=Y%DF=Y%W=7FFF%ACK=O%Flags=AS%Ops=MNNTNW)
T2(Resp=N)
T3(Resp=Y%DF=Y%W=7FFF%ACK=S++%Flags=AS%Ops=MNNTNW)
T3(Resp=Y%DF=Y%W=7FFF%ACK=O%Flags=AS%Ops=MNNTNW)
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) Nmap run completed -- 1 IP address (1 host up) scanned in 12 seconds


Este es el resultado que mostró el comando, al realizar un scaneo a una pc con Linux, distribución SuSE Linux.

Pero que significan esas cadenas de caracteres en la salida de nmap ?


TCP/IP fingerprint:
SInfo(V=2.54BETA30%P=i386-suse-linux%D=7/20%Time=3D39A479%O=22%C=1)
TSeq(Class=RI%gcd=1%SI=1B445E%IPID=Z%TS=100HZ)
TSeq(Class=RI%gcd=1%SI=2E12CD%IPID=Z)
T1(Resp=Y%DF=Y%W=7FFF%ACK=S++%Flags=AS%Ops=MNNTNW)
T1(Resp=Y%DF=Y%W=7FFF%ACK=O%Flags=AS%Ops=MNNTNW)
T2(Resp=N)
...


Pues, todo esto es la "huella" TCP/IP
(TCP/IP fingerprint) que posee cada Sistema Operativo en particular.

Nmap nos muestra esto cada vez que no logra identificar con exactitud que Sistema Operativo se esta corriendo en el Host destino.

Y como hace nmap, para reconocer el sistema operativo, que se esta ejecutando en el host destino?.

Básicamente, cada sistema operativo, responde diferente, cuando se le envían paquetes tcp específicos (en realidad no tan específicos, mas bien incoherentes), así se logra determinar con una buena exactitud, que sistema operativo se esta ejecutando.

Al ejecutar nmap, contra un host con sistema operativo Windows XP, se produjo este resultado:


# nmap -O 192.168.0.1

Starting nmap V. 2.54BETA30 ( www.insecure.org/nmap/ )
Interesting ports on (192.168.0.2):
(The 1544 ports scanned but not shown below are in state: closed)
Port State Service
135/tcp open loc-srv
139/tcp open netbios-ssn
445/tcp open microsoft-ds
1025/tcp open listen
5000/tcp open fics

Remote OS guesses: Windows Me or Windows 2000 RC1 through final release, Windows Millenium Edition v4.90.3000

Nmap run completed -- 1 IP address (1 host up) scanned in 3 seconds


Ahora bien si realmente es necesario conocer que sistema operativo se esta corriendo en el host remoto, es mejor utilizar otra herramienta, junto con nmap, como por ejemplo : QueSO.

QueSO, es un detector de sistema operativo remoto, QueSO, realiza una mejor verificación de Sistema Operativo.

Por algo Queso es utilizado en el proyecto Contador de Sistema Operativo en Internet, The Internet Operating System Counter.

Ahora, veremos un par de opciones más interesantes que posee nmap.



Identificando los hosts activos, en nuestra red.


Supongamos, que tenemos una red, 192.168.0.x, y deseamos conocer que hosts se encuentran activos, fácilmente, lo podemos saber con nmap, esto lo podemos conocer al realizar un ping scan.

#nmap -sP 192.168.0.1-255


Realizando Stealth Scans.

Con este tipo de scan, se pretende no ser detectado por software de detección de scaneos, se envían paquetes a los hosts con ciertos "flags" TCP activados o desactivados para evitar ser detectados.

sN: Stealth, Null Scan, este tipo de scan pone en off todos los flags.

sF: Stealth FIN Scan, este tipo de scan usa paquetes con el flag FIN activado para las pruebas.

sX: Stealth Xmas Tree Scan, este tipo de scan envía paquetes con los flag FIN, URG, y PUSH activados.

sp: Ping Scan, realiza un scan dentro de un rango especifico de hosts. Útil para conocer que hosts se encuentran en linea sin ser detectados.

Si deseamos hacer un stealth scan del tipo Xmas Tree, y ademas deseamos conocer que sistema operativo esta corriendo el host de destino, ejecutamos:

#nmap -sX -O 192.168.1.2

Despistalo con un Decoy Scan:

-D: Esta opción se utiliza para tratar de engañar al host, al cual se esta "scaneando", que los scans se están generando desde otros hosts, que se especifican en la opción -D.

En el siguiente ejemplo, realizamos un Stealth Xmas Tree scan (-sX) hacia el host 192.168.0.1, en los puertos 25(SMTP), 53(DNS), le indicamos a nmap que no genere pings hacia el host, y tratamos de engañar al host (-D, Decoy), haciéndole creer que los scans se están generando desde los hosts 1.2.3.4 y 5.6.7.8.

#nmap -p 25,53 -sX -P0 -D 1.2.3.4,5.6.7.8 192.168.0.1

Guardando los resultados de tus scans.

Nmap permite guardar los resultados de un scan, en varios tipos de formato de archivo: Normal, XML, Grepable, All, y en formato "S" (s|
Si deseamos hacer un stealth scan del tipo Xmas Tree, también deseamos conocer que sistema operativo esta corriendo el host de destino, y además deseamos guardar el resultado de este scan en un archivo llamado "scanresult.txt", ejecutamos:

#nmap -sX -O 192.168.1.2 -oN scanresult.txt

Ahora si lo que deseamos es realizar el scan anterior pero dentro de un rango de hosts específicos, digamos del host 192.168.1.1 hasta la ip 192.168.1.255 , y deseamos guardar el resultado del scan en un archivo de texto normal entonces ejecutamos:

#nmap -sX -O 192.168.1.1-255 -oN scanresult.txt

Interfaces Gráficas para Nmap.

Si no desean, utilizar la interfaz de comandos de nmap, fácilmente pueden utilizar 2 de las interfaces gráficas mas conocidas, que existen para nmap.

href="http://download.insecure.org/nmap/dist/nmap-frontend-3.00-1.i386.rpm">*nmapFE

href="http://pages.infinit.net/rewind/">*KMAP

Espero que este articulo les resulte útil en sus auditorias de seguridad, ya que solo conociendo las vulnerabilidades que existen en nuestras redes, sabremos que medidas tomar para protegernos mejor.

Probando nuestra red

Una vez que sabemos algunos de estos comandos y queremos ver los puertos abiertos en nuestra máquina ejecutamos:

#nmap -A localhost



En el listado de la imágen anterior podemos ver el número de puerto y protocolo, el estado del servicio y su nombre. El estado puede ser open (abierto), filtered (filtrado), closed (cerrado) o unfiltered (no filtrado).

El estado “open” significa que el servicio se encuentra esperando conexiones o paquetes en ese puerto.

El estado “filtered” indica que un cortafuegos o filtro de red está bloqueando el acceso a dicho puerto.

El estado “closed” significa que el puerto está cerrado.

El estado “unfiltered” indica que nmap no puede determinar si el puerto está abierto o cerrado.

- El siguiente comando es muy útil para ver todos los dispositivos de nuestra red:

#nmap -v -sP 192.168.8.0/24


No hay comentarios.: