viernes, marzo 14, 2008

Manual Nmap

NMAP(1) NMAP(1)




NOMBRE
nmap - Herramienta de exploracion de red y escaner de
seguridad.



SINOPSIS
nmap [Tipos(s)de escaneo] [Opciones]



DESCRIPCION
Nmap ha sido disenado para permitir a administradores de
sistemas y gente curiosa en general el escaneo de grandes
redes para determinar que servidores se encuentran activos
y que servicios ofrecen. nmap es compatible con un gran
numero de tecnicas de escaneo como: UDP, TCP connect(),
TCP SYN (half open), ftp proxy (bounce attack), Reverse-
ident, ICMP (ping sweep), FIN, ACK sweep, Xmas Tree, SYN
sweep, and Null scan. Vease la seccion Tipos de Escaneo
para mas detalles. nmap proporciona tambien caracteristi-
cas avanzadas como la deteccion remota del sistema opera-
tivo por medio de huellas TCP/IP , escaneo tipo stealth
(oculto), retraso dinamico y calculos de retransmision,
escaneo paralelo, deteccion de servidores inactivos por
medio de pings paralelos, escaneo con senuelos, deteccion
de filtrado de puertos, escaneo por fragmentacion y
especificacion flexible de destino y puerto.

Se han hecho grandes esfuerzos encaminados a proporcionar
un rendimiento decente para usuarios normales (no root).
Por desgracia, muchos de los interfaces criticos del ker-
nel ( tales como los raw sockets) requieren privilegios de
root. Deberia ejecutarse nmap como root siempre que sea
posible.




OPCIONES
En general, pueden combinarse aquellas opciones que tengan
sentido en conjunto. Algunas de ellas son especificas
para ciertos modos de escaneo. nmap trata de detectar y
advertir al usuario sobre el uso de combinaciones de
opciones sicoticas o no permitidas.

Si usted es una persona impaciente, puede pasar directa-
mente a la seccion ejemplos al final de este documento,
donde encontrara ejemplos de los usos mas corrientes.
Tambien puede ejecutar el comando nmap -h para una pagina
de referencia rapida con un listado de todas las opciones.

Tipos de Escaneo

-sT Escaneo TCP connect(): Es la forma mas basica de
escaneo TCP. La llamada de sistema connect() pro-
porcionada por nuestro sistema operativo se usa
para establecer una conexion con todos los puertos
interesantes de la maquina. Si el puerto esta a la



1





NMAP(1) NMAP(1)


escucha, connect() tendra exito, de otro modo, el
puerto resulta inalcanzable. Una ventaja importante
de esta tecnica es que no resulta necesario tener
privilegios especiales. Cualquier usuario en la
mayoria de los sistemas UNIX tiene permiso para
usar esta llamada.

Este tipo de escaneo resulta facilmente detectable
dado que los registros del servidor de destino
muestran un monton de conexiones y mensajes de
error para aquellos servicios que accept() (acep-
tan) la conexion para luego cerrarla inmediata-
mente.

-sS Escaneo TCP SYN: A menudo se denomina a esta
tecnica escaneo "half open" (medio abierto), porque
no se abre una conexion TCP completa. Se envia un
paquete SYN, como si se fuese a abrir una conexion
real y se espera que llegue una respuesta. Un
SYN|ACK indica que el puerto esta a la escucha. Un
RST es indicativo de que el puerto no esta a la
escucha. Si se recibe un SYN|ACK, se envia un RST
inmediatamente para cortar la conexion (en realidad
es el kernel de nuestro sistema operativo el que
hace esto por nosotros). La ventaja principal de
esta tecnica de escaneo es que sera registrada por
muchos menos servidores que la anterior. Por des-
gracia se necesitan privilegios de root para con-
struir estos paquetes SYN modificados.

-sF -sX -sN
Modos Stealth FIN, Xmas Tree o Nul scan: A veces ni
siquiera el escaneo SYN resulta lo suficientemente
clandestino. Algunas firewalls y filtros de paque-
tes vigilan el envio de paquetes SYN a puertos
restringidos, y programas disponibles como Synlog-
ger y Courtney detectan este tipo de escaneo. Estos
tipos de escaneo avanzado, sin embargo, pueden
cruzar estas barreras sin ser detectados.

La idea es que se requiere que los puertos cerrados
respondan a nuestro paquete de prueba con un RST,
mientras que los puertos abiertos deben ignorar los
paquetes en cuestion (vease RFC 794 pp 64). El
escaneo FIN utiliza un paquete FIN vacio (sorpresa)
como prueba, mientras que el escaneo Xmas tree
activa las flags FIN, URG y PUSH. El escaneo NULL
desactiva todas las flags. Por desgracia Microsoft
(como de costumbre) decidio ignorar el estandar
completamente y hacer las cosas a su manera. Debido
a esto, este tipo de escaneo no funcionara con sis-
temas basados en Windows95/NT. En el lado positivo,
esta es una buena manera de distinguir entre las
dos plataformas. Si el escaneo encuentra puertos



2





NMAP(1) NMAP(1)


cerrados, probablemente se trate de una maquina
UNIX, mientras que todos los puertos abiertos es
indicativo de Windows. Excepcionalmente, Cisco,
BSDI, HP/UX, MVS, y IRIX tambien envian RSTs en vez
de desechar el paquete.

-sP Escaneo ping: A veces unicamente se necesita saber
que servidores en una red se encuentran activos.
Nmap puede hacer esto enviando peticiones de
respuesta ICMP a cada direccion IP de la red que se
especifica. Aquellos servidores que responden se
encuentran activos. Desafortunadamente, algunos
sitios web como microsoft.com bloquean este tipo de
paquetes. Nmap puede enviar tambien un paquete TCP
ack al puerto 80 (por defecto). Si se obtiene por
respuesta un RST, esa maquina esta activa. Una ter-
cera tecnica implica el envio de un paquete SYN y
la espera de de un RST o un SYN/ACK. Para usuarios
no root se usa un metodo connect().

Por defecto (para usuarios no root), nmap usa las
tecnicas ICMP y ACK en paralelo. Se puede cambiar
la opcion -p descrita mas adelante.

Notese que el envio de pings se realiza por defecto
de todas maneras y que solamente se escanean aquel-
los servidores de los que se obtiene respuesta. Use
esta opcion solamente en el caso de que desee un
ping sweep (barrido ping) sin hacer ningun tipo de
escaneo de puertos.

-sU Escaneo Udp: Este metodo se usa para saber que
puertos UDP (Protocolo de Datagrama de Usuario, RFC
768) estan abiertos en un servidor. La tecnica con-
siste en enviar paquetes UCP de 0 bytes a cada
puerto de la maquina objetivo. Si se recibe un men-
saje ICMP de puerto no alcanzable, entonces el
puerto esta cerrado. De lo contrario, asumimos que
esta abierto.

Alguna gente piensa que el escaneo UDP no tiene
sentido. Normalmente les recuerdo el reciente agu-
jero Solaris rcpbind. Puede encontrarse a rcpbind
escondido en un puerto UDP no documentado en algun
lugar por encima del 32770. Por lo tanto, no
importa que el 111 este bloqueado por la firewall.
Pero, cquien puede decir en cual de los mas de
30000 puertos altos se encuentra a la escucha el
programa? iCon un escaner UDP se puede! Tenemos
tambien el programa de puerta trasera cDc Back Ori-
fice que se oculta en un puerto UDP configurable en
las maquinas Windows, por no mencionar los muchos
servicios frecuentemente vulnerables que usan UDP
como snmp, tftp, NFS, etc.



3





NMAP(1) NMAP(1)


Por desgracia, el escaneo UDP resulta a veces
tremendamente lento debido a que la mayoria de los
servidores implementan una sugerencia recogida en
el RFC 1812 (seccion 4.3.2.8) acerca de la lim-
itacion de la frecuencia de mensajes de error ICMP.
Por ejemplo, el kernel de Linux (en /ipv4/icmp.h)
limita la generacion de mensajes de destino inal-
canzable a 80 cada cuatro segundos, con una penal-
izacion de 1/4 de segundo si se rebasa dicha canti-
dad. Solaris tiene unos limites mucho mas estrictos
(mas o menos 2 mensajes por segundo) y por lo tanto
lleva mas tiempo hacerle un escaneo. nmap detecta
este limite de frecuencia y se ralentiza en conse-
cuencia, en vez de desbordar la red con paquetes
inutiles que la maquina destino ignorara.

Como de costumbre, Microsoft ignoro esta sugerencia
del RFC y no parece que haya previsto ningun tipo
de limite de frecuencia para las maquinas Windows.
Debido a esto resulta posible escanear los 65K
puertos de una maquina Windows muy rapidamente.
iWoop!

-b
Ataque de rebote FTP: Una caracteristica "intere-
sante" del protocolo FTP (FRC 959) es la posibili-
dad de realizar conexiones ftp tipo "proxy". En
otras palabras, ime resultaria posible conectarme
desde malvado.com al servidor ftp de destino.com y
pedirle a ese servidor que enviase un archivo a
CUALQUIER PARTE de Internet! Aun asi, esto podria
haber funcionado bien en 1985 cuando se escribio el
RFC, pero en la Internet actual, no podemos permi-
tir que la gente vaya por ahi asaltando servidores
ftp y pidiendoles que escupan sus datos a puntos
arbitrarios de Internet. Tal y como escribio *Hob-
bit* en 1985, este defecto del protocolo "puede
usarse para enviar mensajes de correo y noticias
cuyo rastro sera virtualmente imposible de seguir,
machacar servidores en varios sitios web, llenar
discos, tratar de saltarse firewalls y , en gen-
eral, resultar molesto y dificil de detectar al
mismo tiempo." Nosotros explotaremos este defecto
para (sorpresa, sorpresa) escanear puertos TCP
desde un servidor ftp "proxy". De este modo nos
podriamos conectar a un servidor ftp tras una fire-
wall, y luego escanear aquellos puertos que con mas
probabilidad se encuentren bloqueados (el 139 es
uno bueno). Si el servidor ftp permite la lectura y
escritura en algun directorio (como por ejemplo
/incoming), se pueden enviar datos arbitrarios a
puertos que se encuentren abiertos (aunque nmap no
realiza esta funcion por si mismo).




4





NMAP(1) NMAP(1)


El argumento que se pasa a la opcion 'b' es el host
que se pretende usar como proxy, en notacion URL
estandar. El formato es: nombre_de_usuario:pass-
word@servidor:puerto. Todo excepto servidor es
opcional. Para determinar que servidores son vul-
nerables a este ataque, vease mi articulo en Phrack
51. Se encuentra disponible una version actualizada
en la URL de nmap (http://www.insecure.org/nmap).

Opciones Generales
No se requiere ninguna pero algunas de ellas pueden
resultar de gran utilidad.

-p0 No intenta hacer ping a un servidor antes de
escanearlo. Esto permite el escaneo de redes que no
permiten que pasen peticiones (o respuestas)de ecos
ICMP a traves de su firewall. microsoft.com es un
ejemplo de una red de este tipo, y, por lo tanto,
deberia usarse siempre -p0 o -PT80 al escanear
microsoft.com.

-PT Usa el ping TCP para determinar que servidores
estan activos. En vez de enviar paquetes de
peticion de ecos ICMP y esperar una respuesta, se
lanzan paquetes TCP ACK a traves de la red de des-
tino (o a una sola maquina) y luego se espera a que
lleguen las respuestas. Los servidores activos
responden con un RST. Esta opcion mantiene la efi-
ciencia de escanear unicamente aquellos servidores
que se encuentran activos y la combina con la posi-
bilidad de escanear redes/servidores que bloquean
los paquetes ping. Para los usuarios no root se usa
connect(). Para establecer el puerto de destino de
los paquetes de prueba use -PT
Esta opcion guarda los resultados de sus escaneos
en forma humanamente inteligible en el archivo
especificado como argumento.

-m
Esta opcion guarda los resultados de sus escaneos
en un formato comprensible para una maquina en el
archivo especificado como argumento.

-i
Lee especificaciones de servidores o redes de des-
tino a partir del archivo especificado en vez de
hacerlo de la linea de comandos. El archivo debe
contener una lista de expresiones de servidores o
redes separadas por espacios, tabuladores o nuevas
lineas. Use un guion (-) como nom-
bre_de_archivo_de_entrada si desea que nmap tome
las expresiones de servidores de stdin. Vease la



7





NMAP(1) NMAP(1)


seccion Especificaci'
on de Objetivo para mas infor-
macion sobre expresiones con las que poder comple-
tar este archivo.

-p
Esta opcion determina los puertos que se quieren
especificar. Por ejemplo, '-p 23' probara solo el
puerto 23 del servidor(es) objetivo. '-p
20-30,139,60000-' escanea los puertos del 20 al 30,
el puerto 139 y todos los puertos por encima de
60000. Por defecto se escanean todos los puertos
entre el 1 y el 1024 asi como los que figuran en el
archivo /etc/services.

-F Modo de escaneo rapido.
Implica que solo se desean escanear aquellos puer-
tos que figuran en /etc/services. Obviamente esto
resulta mucho mas rapido que escanear cada uno de
los 65535 puertos de un servidor.

-D
Especifica que se desea efectuar un escaneo con
senuelos, el cual hace que el servidor escaneado
piense que la red destino del escaneo esta siendo
escaneada tambien por el servidor(es) especificados
como senuelos. Asi, sus IDs pueden informar de
entre 5 y 10 escaneos procedentes de direcciones IP
unicas, pero no sabran que direccion IP les estaba
escaneando realmente y cuales eran senuelos
inocentes.

Separe cada servidor senuelo con comas, y puede
usar opcionalmente 'ME' como senuelo que representa
la posicion que quiere que ocupe su direccion IP.
Si coloca 'ME' en la sexta posicion o superior, es
muy poco probable que algunos escaneres de puertos
comunes (como el excelente scanlogd de Solar
Designer) lleguen incluso a mostrar su direccion
IP. Si no se usa 'ME', nmap le colocara a usted en
una posicion aleatoria.

Notese que aquellos servidores usados como senuelos
deben escontrarse activos, o, de lo contrario
podria provocar un desbordamiento (flood) SYN en su
objetivo. Por otra parte, resultara bastante facil
saber que servidor esta escaneando si unicamente
hay uno activo en la red.

Notese tambien que algunos (estupidos) "detectores
de escaneres de puertos" opondran una firewall o
bien denegaran el rutaje a aquellos servidores que
intenten escanear sus puertos. De este modo se
podria provocar inadvertidamente que la maquina que
se esta intentando escanear perdiese contacto con



8





NMAP(1) NMAP(1)


los servidores usados como senuelos. Esto podria
causarles a los servidores escaneados verdaderos
problemas si los servidores senuelo fuesen, por
ejemplo, su gateway a internet o incluso "local-
host". Deberia usarse esta opcion con extremo
cuidado. La verdadera moraleja de este asunto es
que un detector de escaneos de puertos que
aparenten tener intenciones poco amistosas no
deberia llevar a cabo accion alguna contra la
maquina que aparentemente le esta escaneando.
iPodria no ser mas que un senuelo!

Los senuelos se usan tanto en el escaneo ping ini-
cial (usando ICMP, SYN, ACK, o lo que sea) como en
la fase de escaneo de puertos propiamente dicha.
Tambien se usan los senuelos en la fase de
deteccion remota del sistema operativo ( -O ).

Vale la pena destacar que el uso de demasiados
senuelos puede ralentizar el proceso de escaneo y,
potencialmente, hacer que sea menos exacto. Por
otra parte, algunos ISPs filtraran los paquetes
manipulados y los desecharan, aunque muchos
(actualmente la mayoria) no ponen restricciones a
este tipo de paquetes.

-S
En determinadas circunstancias, es posible que nmap
no sea capaz de determinar su (de usted) direccion
IP de origen ( nmap se lo hara saber si este es el
caso). En este caso, use -S con su direccion IP
(del interfaz a traves del cual desea enviar los
paquetes).

Otro posible uso de esta opcion es el de manipular
el escaneo para hacer creer a los servidores de
destino que alguien mas les esta escaneando.
iImaginese a una compania escaneada repetidamente
por una compania rival! Esta no es la funcion para
la que se ha disenado esta opcion (ni su proposito
principal). Simplemente pienso que revela una posi-
bilidad que la gente deberia tener en cuenta antes
de acusar a los demas de escanear sus puertos. La
opcion -e sera necesaria en general para este tipo
de uso.

-e
Le dice a nmap que interfaz ha de usar para enviar
y recibir paquetes. El programa deberia detectar
esto por si mismo, pero le informara si no es asi.

-g
Establece el numero de puerto de origen a usar en
los escaneos. Muchas instalaciones de firewalls y



9





NMAP(1) NMAP(1)


filtros de paquetes inocentes hacen una excepcion
en sus reglas para permitir que las atraviesen y
establezcan una conexion paquetes DNS (53) o FTP-
DATA (20). Evidentemente esto contraviene completa-
mente las ventajas en materia de seguridad que com-
porta una firewall dado que los intrusos pueden
enmascararse como DNS o FTP con una simple modifi-
cacion de su puerto de origen. Por supuesto,
deberia probarse primero con el puerto 53 para un
escaneo UDP y los escaneos TCP deberian probar el
20 antes del 53.

Notese que el uso de esta opcion penaliza levemente
el rendimiento del escaneo, porque a veces se alma-
cena informacion util en el numero de puerto de
origen.

-M
Establece el numero maximo de sockets que se usaran
en paralelo para un escaneo TCP connect() (escaneo
por defecto). Resulta util a la hora de ralentizar
ligeramente el proceso de escaneo con el fin de
evitar que la maquina de destino se cuelgue. Otra
manera de hacerlo es usar -sS, que normalmente les
resulta mas facil de asumir a las maquinas de des-
tino.

Especificacion de Objetivo
Cualquier cosa que no es una opcion (o el argumento
de una opcion) en namp se trata como una especifi-
cacion de servidor de destino. El caso mas simple
consiste en especificar servidores aislados o
direcciones IP en la linea de comandos. Si pretende
escanear una subred de direcciones IP, entonces se
puede anadir '/mask' a la direccion IP o al nombre
del servidor. mask debe estar entre 0 (escanea
toda Internet) y 32 (escanea unicamente el servidor
especificado). Use /24 para escanear una direccion
de clase 'C' y /16 para la clase 'B'.

Nmap dispone tambien de una notacion mucho mas
potente que permite la especificacion de direc-
ciones IP usando listas/rangos para cada elemento.
De este modo, se puede escanear la red de clase 'B'
completa 128.210.*.* especificando '128.210.*.*' o
'128.210.0-255.0-255' o incluso notacion de
mascara: '128.210.0.0/16'. Todas ellas son equiva-
lentes. Si se usan asteriscos ('*'), ha de tenerse
en cuenta que la mayoria de los shells requieren
que se salga de ellos con caracteres / o que se les
proteja con comillas.

Otra posibilidad interesante consiste en dividir
Internet en el otro sentido. En vez de escanear



10





NMAP(1) NMAP(1)


todos los servidores en una clase 'B', se puede
escanear '*.*.5.6-7' para escanear todas las direc-
ciones IP terminadas en .5.6 o .5.7 Escoja sus pro-
pios numeros. Para mas informacion sobre la especi-
ficacion de servidores a escanear, vease la seccion
ejemplos a continuacion.




EJEMPLOS
A continuacion se muestran algunos ejemplos del uso de
nmap que abarcan desde los usos mas normales y frecuentes
a los mas complejos o incluso esotericos. Notese que se
han incluido direciones IP y nombres de dominio reales
para hacer las cosas mas concretas. Usted deberia susti-
tuirlos por numeros y direcciones de su propia red. No
creo que escanear otras redes sea ilegal; ni se deberian
considerar los escaneos de puertos como ataques. He
escaneado cientos de miles de maquinas y tan solo he
recibido una queja. Pero no soy abogado y es posible que
los intentos de nmap lleguen a molestar a alguna gente.
Obtenga primero el permiso para hacerlo o hagalo bajo su
propia responsabilidad.

nmap -v objetivo.ejemplo.com

Esta opcion escanea todos los puertos TCP reservados en la
maquina objetivo.ejemplo.com. La -v implica la activacion
del modo de informacion ampliada.

nmap -sS -O objetivo.ejemplo.com/24

Lanza un escaneo SYN oculto contra cada una de las
maquinas activas de las 255 maquinas de la classe 'C'
donde se aloja objetivo.ejemplo.com. Tambien trata de
determinar el sistema operativo usado en cada una de las
maquinas activas. Este escaneo requiere privilegios de
roor a causa del escaneo SYN y la deteccion del sistema
operativo.

nmap -sX -p 22,53,110,143 128.210.*.1-127

Envia un escaneo Xmas tree a la primera mitad de cada una
de las 255 posibles subredes de 8 bits en el espacio de
direcciones clase 'B' 128.210 . Se trata de comprobar si
los sistemas ejecutan sshd, DNS, pop3d, imapd o el puerto
4564. Notese que el escaneo Xmas no funciona contra servi-
dores ejecutando cualquier sistema operativo de Microsoft
debido a una pila TCP deficiente. Lo mismo se aplica a los
sistemas CISCO, IRIX, HP/UX, y BSDI.

nmap -v -p 80 '*.*.2.3-5'

En vez de centrarse en un rango especifico de direcciones
IP, resulta a veces interesante dividir Internet en



11





NMAP(1) NMAP(1)


porciones y escanear una pequena muestra de cada porcion.
Este comando encuentra todos los servidores web en
maquinas cuyas direcciones IP terminen en .2.3, .2.4, o
.2.5 . Si usted es root podria anadir tambien -sS. Tambien
encontrara maquinas mucho mas interesantes si empieza en
127. asi que es posible que desee usar '127-222' en vez de
el primer asterisco dado que esa seccion tiene una densi-
dad mucho mayor de maquinas interesantes (IMHO).

host -l compania.com | cut '-d ' -f 4 | ./nmap -v -i -

Hace una transferencia de DNS de zona para descubrir los
servidores en compania.com y luego pasar las direcciones
IP a nmap. Los comandos arriba indicados son para mi sis-
tema Linux. Es posible que se necesiten comandos/opciones
diferentes para otros sistemas operativos.



BUGS
cBugs? cQue bugs? Por favor, envieme cualquier bug que
descubra. Los parches tampoco estarian mal :) Recuerde
enviar tambien nuevas huellas de sistemas operativos para
que podamos ampliar nuestra base de datos.



AUTOR
Fyodor Tipos de Escaneo



DISTRIBUCION
La ultima version de nmap se puede obtener en
http://www.insecure.org/nmap

nmap es (C) 1997,1998 de Fyodor (fyodor@insecure.org, fyo-
dor@insecure.org)

Este programa es software libre; puede redistribuirse y/o
modificarse bajo los terminos de la Licencia Publica Gen-
eral GNU tal y como la publica la Fundacion de Software
Libre; Version 2.

Este programa se distribuye con la esperanza de que pueda
resultar de utilidad, pero SIN NINGUN TIPO DE GARANTIA;
sin tan siquiera la garantia e ser apto para su COMECIAL-
IZACION o ADECUADO PARA UN PROPOSITO EN PARTICULAR. Vease
la Licencia Publica General GNU para mas detalles (esta en
el archivo COPYING de la distribucion de nmap ).

No hay comentarios: