¿Como se realiza la Identificación de Servicios y Versiones?



La identificación de servicios y versiones es una fase crucial en el escaneo de vulnerabilidades, a menudo denominada "fingerprinting" (toma de huellas digitales). Sin esta información precisa, un escáner no podría determinar qué vulnerabilidades conocidas son aplicables a un sistema, ya que la mayoría de los fallos de seguridad están vinculados a software o versiones específicas.

Aquí te explico cómo los escáneres de vulnerabilidades realizan esta identificación:

  1. Escaneo de Puertos (Port Scanning):

    • Primer paso: Antes de identificar servicios, el escáner debe saber qué puertos están abiertos y "escuchando" conexiones en el sistema objetivo. Esto se logra enviando diferentes tipos de paquetes a los puertos comunes (como TCP SYN, FIN, ACK, UDP, etc.) y analizando las respuestas.

    • Ejemplo: Si un escáner envía un paquete SYN a un puerto y recibe un SYN-ACK, sabe que el puerto está abierto. Si no recibe respuesta o recibe un RST, el puerto podría estar cerrado o filtrado por un firewall.

    • Herramientas comunes: Nmap es la herramienta más conocida para el escaneo de puertos y es utilizada por muchos escáneres de vulnerabilidades.

  2. Análisis de Banners (Banner Grabbing):

    • Una vez que se identifica un puerto abierto, muchos servicios envían un "banner" o mensaje de bienvenida cuando se establece una conexión. Este banner a menudo contiene información sobre el servicio, el nombre de la aplicación, y lo más importante, su versión.

    • Ejemplo:

      • Conectarse al puerto 80 de un servidor web podría devolver un banner como: HTTP/1.1 200 OK Server: Apache/2.4.52 (Ubuntu) Date: Fri, 28 Jun 2025 07:00:00 GMT

      • Conectarse al puerto 22 (SSH) podría devolver: SSH-2.0-OpenSSH_8.9p1 Ubuntu-3ubuntu0.1

    • Los escáneres capturan estos banners y los comparan con su base de datos para identificar el servicio y su versión. Sin embargo, no todos los servicios proporcionan banners informativos, y algunos administradores de sistemas modifican los banners para ocultar información.

  3. Fingerprinting Activo (Active Fingerprinting):

    • Cuando los banners no son suficientes, los escáneres emplean técnicas de "fingerprinting activo" enviando sondas (probes) específicas y analizando las respuestas. Estas sondas están diseñadas para provocar una respuesta única de diferentes servicios o sistemas operativos.

    • Sondas TCP/IP: Los escáneres pueden enviar paquetes con ciertas combinaciones de flags, opciones TCP, tamaños de ventana, etc., y analizar cómo el sistema objetivo responde. Diferentes sistemas operativos y stacks de red responden de maneras distintivas a estas sondas.

    • Sondas de aplicación: Para servicios específicos, los escáneres envían solicitudes diseñadas para elicitas una respuesta que revele más detalles.

      • HTTP: Envían solicitudes HTTP específicas (HEAD, GET /nonexistent_page, OPTIONS) y analizan los encabezados de respuesta, el código de estado, la forma en que manejan errores, etc.

      • FTP: Pueden intentar comandos FTP específicos o intentar iniciar una sesión para ver cómo el servidor responde a diferentes entradas.

      • SMB/NetBIOS: Envían solicitudes para enumerar recursos compartidos o consultar información sobre el sistema.

      • SNMP: Intentan consultas SNMP para obtener información del sistema.

    • Bases de datos de firmas (signatures): Las respuestas a estas sondas se comparan con una extensa base de datos de "firmas" (o huellas digitales). Cada firma está asociada a una versión específica de un servicio o sistema operativo. Por ejemplo, Nmap tiene una base de datos nmap-service-probes que contiene miles de patrones de respuesta para la detección de servicios y versiones.

  4. Fingerprinting Pasivo (Passive Fingerprinting):

    • Algunos escáneres avanzados, o herramientas de monitoreo de red, pueden realizar "fingerprinting pasivo" analizando el tráfico de red ya existente sin enviar ninguna sonda activa.

    • Análisis de encabezados de paquetes: Pueden observar los patrones en los encabezados TCP/IP (como el tamaño de la ventana, el valor TTL, el orden de las opciones TCP) del tráfico que pasa por la red. Diferentes sistemas operativos tienen implementaciones ligeramente distintas de la pila TCP/IP, lo que puede revelar su identidad.

    • Análisis de tráfico de aplicación: Observan cómo se comunican las aplicaciones (por ejemplo, los encabezados HTTP en el tráfico web) para inferir el software y la versión.

    • Esta técnica es menos intrusiva y no genera tráfico adicional, pero puede no ser tan precisa como el fingerprinting activo y requiere que ya haya tráfico significativo para analizar.

  5. Uso de Credenciales (Authenticated Scanning):

    • En un escaneo autenticado, el escáner utiliza credenciales válidas (usuario y contraseña) para iniciar sesión en el sistema objetivo (por ejemplo, a través de SSH, WinRM, o bases de datos).

    • Una vez autenticado, el escáner puede ejecutar comandos directamente en el sistema operativo para obtener información precisa sobre el software instalado, las versiones, los parches aplicados, la configuración del sistema, etc.

    • Ejemplos:

      • En un sistema Linux: lsb_release -a, cat /etc/os-release, dpkg -l, rpm -qa.

      • En un sistema Windows: systeminfo, wmic product get name,version.

      • Consultas a la base de datos para obtener la versión del motor de la base de datos (SELECT @@version; para MySQL, SELECT VERSION(); para PostgreSQL, etc.).

    • Este método es generalmente el más preciso porque obtiene la información directamente del sistema, evitando las conjeturas del fingerprinting basado en la red.

Importancia de la Precisión:

La precisión en la identificación de servicios y versiones es crítica por varias razones:

  • Evitar falsos positivos: Si un escáner identifica incorrectamente un servicio o versión, podría reportar vulnerabilidades que no existen en el sistema real.

  • Priorización efectiva: Una identificación correcta permite al escáner asignar la severidad adecuada a las vulnerabilidades y priorizar los esfuerzos de remediación.

  • Relevancia de las vulnerabilidades: Las bases de datos de vulnerabilidades (como CVE, NVD) están directamente vinculadas a versiones específicas de software. Sin la versión precisa, es imposible saber si una vulnerabilidad conocida es aplicable.

En resumen, la identificación de servicios y versiones es un proceso multifacético que combina el escaneo de puertos, el análisis de banners, el fingerprinting activo y pasivo, y, idealmente, el escaneo autenticado para construir un perfil detallado del software en ejecución en el sistema objetivo.

No hay comentarios:

Publicar un comentario