Detección de servicios y de versiones
Si le indica a Nmap que mire un sistema remoto le podrá decir que
tiene abiertos los puertos 25/tcp, 80/tcp y 53/udp. Informará que
esos puertos se corresponden habitualmente con un servidor de
correo (SMTP), servidor de web (HTTP) o servidor de nombres (DNS),
respectivamente, si utilizas su base de datos nmap-services con más de 2.200 puertos
conocidos. Generalmente este informe es correo dado que la gran
mayoría de demonios que escuchan en el puerto 25 TCP son, en
realidad, servidores de correo. ¡Pero no debe confiar su
seguridad en este hecho! La gente ejecuta a veces servicios
distintos en puertos inesperados
Aún en el caso de que Nmap tenga razón y el servidor de
ejemplo indicado arriba está ejecutando servidores de SMTP, HTTP y
DNS ésto no dice mucho. Cuando haga un análisis de
vulnerabilidades (o tan sólo un inventario de red) en su propia
empresa o en su cliente lo que habitualmente también quiere saber
es qué versión se está utilizando del servidor de correcto y de
DNS. Puede ayudar mucho a la hora de determinar qué ataques pueden
afectar a un servidor el saber el número de versión exacto de
éste. La detección de versiones le ayuda a obtener esta
información.
La detección de versiones pregunta para obtener más
información de lo que realmente se está ejecutando una vez se han
detectado los puertos TCP y/o UDP con alguno de los métodos de
sondeo. La base de datos nmap-service-probes contiene sondas
para consultar distintos servicios y reconocer y tratar distintas
respuestas en base a una serie de expresiones. Nmap intenta
determinar el protocolo del servicio (p. ej. ftp, ssh, telnet ó
http), el nombre de la aplicación (p. ej. Bind de ISC, http de
Apache, telnetd de Solaris), un número de versión, un tipo de
dispositivo (p. ej. impresora o router), la familia de sistema
operativo (p. ej. Windows o Linux) y algunas veces algunos
detalles misceláneos como, por ejemplo, si un servidor X acepta
cualquier conexión externa, la versión de protocolo SSH o el
nombre de usuario Kazaa). Por supuesto, la mayoría de los
servicios no ofrecen toda esta información. Si se ha compilado
Nmap con soporte OpenSSL se conectará también a servidores SSL
para determinar qué servicio escucha detrás de la capa de
cifrado. Se utiliza la herramienta de pruebas RPC de Nmap
(-sR) de forma automática para determinar el
programa RPC y el número de versión si se descubren servicios RPC.
Algunos puertos UDP se quedan en estado open|filtered (N. del T.,
'abierto|filtrado') si un barrido de puertos UDP no puede
determinar si el puerto está abierto o filtrado. La detección de
versiones intentará obtener una respuesta de estos puertos (igual
que hace con puertos abiertos) y cambiará el estado a abierto si
lo consigue. Los puertos TCP en estado open|filtered se tratan de forma
similar. Tenga en cuenta que la opción -A de Nmap
actualiza la detección de versiones entre otras cosas. Puede
encontrar un documento describiendo el funcionamiento, modo de
uso, y particularización de la detección de versiones en http://www.insecure.org/nmap/vscan/.
Cuando Nmap obtiene una respuesta de un servicio pero no
encuentra una definición coincidente en la base de datos se
imprimirá una firma especial y un URL para que la envíe si sabe lo
que está ejecutándose detrás de ese puerto. Por favor, tómese
unos minutos para enviar esta información para ayudar a todo el
mundo. Gracias a estos envíos Nmap tiene ahora alrededor de 3.000
patrones para más de 350 protocolos distintos como smtp, ftp,
http, etc.
La detección de versiones se activa y controla con la
siguientes opciones:
-
-sV (Detección de versiones) Activa la detección de versiones como se ha descrito
previamente. Puede utilizar la opción -A
en su lugar para activar tanto la detección de versiones
como la detección de sistema operativo.
-
--allports (No excluir ningún puerto de la
detección de versiones)
La detección de versiones de Nmap omite el puerto TCP 9100 por
omisión porque algunas impresoras imprimen cualquier cosa
que reciben en este puerto, lo que da lugar a la impresión
de múltiples páginas con solicitudes HTTP get, intentos de
conexión de SSL, etc. Este comportamiento puede cambiarse
modificando o eliminando la directiva Exclude en nmap-service-probes, o
especificando --allports para sondear todos
los puertos independientemente de lo definido en la
directiva Exclude.
-
--version-intensity <intensidad> (Fijar
la intensidad de la detección de versiones)
Nmap envía una serie de sondas cuando se activa la
detección de versiones (-sV) con un nivel
de rareza preasignado y variable de 1 a 9. Las sondas con un
número bajo son efectivas contra un amplio número de
servicios comunes, mientras que las de números más altos se
utilizan rara vez. El nivel de intensidad indica que sondas
deberían utilizarse. Cuanto más alto sea el número, mayor las
probabilidades de identificar el servicio. Sin embargo, los
sondeos de alta intensidad tardan más tiempo. El valor de
intensidad puede variar de 0 a 9. El valor por omisión es 7.
Se probará una sonda independientemente del nivel de
intensidad cuando ésta se registra para el puerto objetivo a
través de la directiva nmap-service-probes ports. De esta forma se asegura
que las sondas de DNS se probarán contra cualquier puerto
abierto 53, las sondas SSL contra el puerto 443, etc.
-
--version-light (Activar modo ligero)
Éste es un alias conveniente para
--version-intensity 2. Este modo ligero
hace que la detección de versiones sea más rápida pero
también hace que sea menos probable identificar algunos servicios.
-
--version-all (Utilizar todas las sondas)
Éste es un alias para --version-intensity 9,
hace que se utilicen todas las sondas contra cada puerto.
-
--version-trace (Trazar actividad de sondeo
de versiones)
Esta opción hace que Nmap imprima información de
depuración detallada explicando lo que está haciendo el sondeo
de versiones. Es un conjunto de lo que obtendría si utilizara
la opción --packet-trace.
-
-sR (Sondeo RPC) Este método funciona conjuntamente con los distintos
métodos de sondeo de puertos de Nmap. Toma todos los puertos
TCP/UDP que se han encontrado y los inunda con órdenes de
programa NULL SunRPC con el objetivo de determinar si son
puertos RPC y, si es así, los programas y número de versión
que están detrás. Así, puede obtener de una forma efectiva la
misma información que rpcinfo
-p aunque el mapeador de puertos («portmapper», N. del T.)
está detrás de un cortafuegos (o protegido
por TCP wrappers). Los señuelos no funcionan con el sondeo RPC
actualmente. Esta opción se activa automáticamente como parte
de la detección de versiones (-sV) si la ha
seleccionado. Rara vez se utiliza la opción
-sR dado que la detección de versiones lo
incluye y es más completa.