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 https://nmap.org/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
ennmap-service-probes
, o especificando--allports
para sondear todos los puertos independientemente de lo definido en la directivaExclude
.-
--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 directivanmap-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.