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 😉 .

Nmap puede bajarse del sitio oficial en de esta dirección:

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

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|<ipT kiDd|3 f0rM
iNto THe fiL3 U sPecfy 4s an arGuMEnT!, o mejor conocido como formato Script
Kiddie!).

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.

*nmapFE

*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.