Httprint: Identificación de Servidores Web

https://www.onlinetis.com

Httprint: Identificación de Servidores Web

httprint es una herramienta de "fingerprinting" (identificación) de servidores web muy conocida en el mundo de la ciberseguridad y disponible en Kali Linux.

A diferencia de otras herramientas que solo leen el "banner" (la etiqueta que el servidor muestra voluntariamente), httprint analiza el comportamiento del servidor ante diferentes peticiones para identificar su firma digital única.


¿Para qué sirve httprint?

Muchos administradores de sistemas cambian el banner de su servidor (por ejemplo, hacen que un servidor Apache diga que es "Microsoft IIS") para confundir a los atacantes.

  • Identificación real: Detecta la marca y versión real del servidor basándose en cómo responde a las cabeceras HTTP.

  • Detección de dispositivos: Útil para identificar servidores en dispositivos embebidos (routers, cámaras, impresoras).

  • Análisis de seguridad: Ayuda a encontrar versiones vulnerables que el administrador intentó ocultar.


Cómo usar httprint en Kali Linux

Aunque es una herramienta clásica, sigue siendo útil en fases de reconocimiento. La sintaxis básica es la siguiente:

httprint -h <objetivo> -s <archivo_de_firmas>

Ejemplo práctico:

Si quieres analizar un sitio web, el comando se vería así:

Bash
httprint -h http://www.ejemplo.com -s /usr/share/httprint/signatures.txt

Parámetros comunes:

  • -h: Define el host (la IP o dominio) que quieres analizar.

  • -s: Es obligatorio indicar el archivo de firmas (que en Kali suele estar en /usr/share/httprint/signatures.txt).

  • -P0: Evita el envío de pings antes del escaneo (útil si hay firewalls).

  • -o: Guarda el resultado en un archivo (HTML, CSV o Texto).


¿Por qué usarlo hoy en día?

Hoy existen herramientas más modernas como whatweb o nmap (con scripts NSE), pero httprint destaca porque:

  1. Es extremadamente ligero.

  2. Su motor de lógica difusa (fuzzy logic) permite identificar servidores incluso si han sido modificados.

Nota de seguridad: Recuerda realizar estas pruebas solo en entornos controlados o sobre servidores de los que tengas autorización expresa.


Comparar estas dos herramientas te dará una visión mucho más completa de cómo "piensa" un atacante o un auditor de seguridad durante la fase de reconocimiento.

Mientras que httprint se especializa únicamente en la huella digital del servidor web mediante lógica difusa, Nmap es una navaja suiza que utiliza scripts (NSE) para obtener información mucho más amplia.


Comparativa: httprint vs. Nmap (NSE)

CaracterísticahttprintNmap (http-enum / http-server-header)
MétodoAnálisis de comportamiento (Fuzzy logic)Lectura de banners y rutas comunes
PrecisiónAlta si el banner está oculto o falseadoAlta para detectar servicios adicionales
ActualizaciónMenos frecuente (firmas clásicas)Muy frecuente (comunidad activa)
VelocidadMuy rápido y ligeroDepende de la cantidad de scripts usados

Cómo obtener resultados similares con Nmap

Si quieres verificar lo que te dijo httprint usando Nmap en Kali Linux, el comando más efectivo sería:

Bash
nmap -sV --script http-enum,http-title,http-server-header -p 80,443 <objetivo>
  • -sV: Intenta determinar la versión del servicio.

  • http-enum: Busca directorios comunes (como /admin, /config).

  • http-server-header: Extrae la cabecera del servidor de forma avanzada.


¿Cuál elegir?

  • Usa httprint cuando sospeches que el administrador ha modificado el nombre del servidor (por ejemplo, si un servidor Linux dice ser "IIS 6.0", algo que es técnicamente imposible).

  • Usa Nmap para un escaneo general que no solo te diga qué servidor es, sino también qué archivos y carpetas están expuestos.

Tip de experto: En auditorías reales, se suelen usar ambas. Si los resultados coinciden, tienes una certeza del 99%. Si difieren, es probable que haya un WAF (Web Application Firewall) o un Proxy Inverso intentando engañarte.

 

Entendido. Cuando ejecutas httprint, no siempre verás un resultado único y definitivo como "Apache 2.4.50". Lo que verás es una lista de posibles candidatos con un Confidence Score (Puntaje de Confianza).

Esto sucede porque la herramienta usa lógica difusa (Fuzzy Logic). En lugar de buscar una coincidencia exacta, compara las respuestas del servidor con una base de datos y calcula qué tan cerca está de cada "firma" conocida.


¿Cómo interpretar los resultados?

Cuando el escaneo termina, verás una tabla similar a esta:

Web ServerConfidence
Apache/2.2.x92.45
Apache/2.0.x85.12
Oracle HTTP Server40.20

Qué significan los números:

  1. Confianza Alta (>90): Es casi seguro que el servidor es ese. Incluso si el banner dice otra cosa, el comportamiento de las cabeceras coincide con esa versión específica.

  2. Confianza Media (60 - 80): Hay similitudes, pero el servidor podría tener un módulo de seguridad (como mod_security) que altera las respuestas, o podría ser un "fork" (derivado) de ese servidor.

  3. Confianza Baja (<50): Probablemente no es ese servidor, pero comparte alguna característica técnica en la forma en que maneja las peticiones HTTP.


¿Por qué no da un 100% de confianza?

Es raro ver un 100% por varias razones:

  • Personalización: El administrador pudo haber desactivado ciertas cabeceras (como Server o X-Powered-By).

  • Actualizaciones: Si el servidor es más nuevo que la base de datos de firmas de httprint, la herramienta encontrará "parecidos" pero no una coincidencia perfecta.

  • Balanceadores de carga: Si hay un F5 o un Nginx delante de un Apache, httprint podría confundirse al recibir respuestas mezcladas.


Un truco avanzado en Kali

Si notas que los puntajes son todos muy bajos, puede que el archivo de firmas esté desactualizado. Puedes intentar buscar firmas más recientes o, mejor aún, usar WhatWeb para complementar:

Bash
whatweb -a 3 http://objetivo.com

(El parámetro -a 3 es el nivel de agresividad; el 3 es "agresivo" y trata de forzar la identificación).

Entradas populares de este blog

Hacking y ciberseguridad en kali linux con Fping

Hacking y ciberseguridad en kali linux con atk6-thcping6

Como utilizar Fierce en kali linux