Http-fingerprinting.pdf

  • Uploaded by: Bethus Bethuno
  • 0
  • 0
  • December 2019
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Http-fingerprinting.pdf as PDF for free.

More details

  • Words: 1,854
  • Pages: 7
Artículo publicado en la revista @RROBA # 96 Suplemento “Hack Paso a Paso” #27 – Noviembre 2005 (Material Sin Editar)

HTTP Fingerprinting Introducción La traducción al español de la palabra “Fingerprintig” no es ni más ni menos que “Huella Dactilar”. La verdad, es que el espíritu de esta palabra es bastante más amplio y generalmente se encuentra relacionado sobre todo con “algo que identifica”. En el contexto de la seguridad informática en general y la evaluación de seguridad en particular, hablar de “Fingerprinting”, es hablar de diferentes técnicas mediante las cuales es posible identificar con mayor o menor grado de certeza, un dispositivo, host, sistema operativo, etc. Las técnicas de “Fingerprinting” aplicadas a la seguridad en redes, son conocidas, documentadas y a menudo utilizadas por administradores y profesionales de la seguridad en su trabajo diario. La identificación de sistemas operativos en base a la implementación que el mismo haya realizado de la pila TCP/IP o la forma en la que requerimientos mal formados, son respondidos, deja un rastro capaz de identificar los mismos con un alto porcentaje de fiabilidad. Como seguramente sabrás, la correcta identificación de sistemas operativos y servicios, es un punto fundamental en todo proceso de auditoria o evaluación de seguridad. Una identificación incorrecta, podría eventualmente causar un retraso importante en los tiempos pactados para la tarea al estar intentando explotar vulnerabilidades no existentes en un sistema mal identificado, al margen de los inconvenientes que dichos intentos errores de explotación pueden llegar a generar. De un modo u otro, y tal como mencionáramos en párrafos anteriores, las técnicas de fingerprinting han sido bastante discutidas en el pasado. Trabajos tales como el realizado por Fyodor (insecure.org), de nombre “Remote OS detection via TCP/IP Stack Fingerprinting”, han representado un gran avance en tal sentido, mientras que las técnicas en el mencionadas, han sido implementadas con éxito en herramientas esenciales tales como nmap, por citar tan solo un ejemplo. Pero este artículo, no tiene como propósito describir el trabajo realizado en torno a las técnicas de fingerprinting en base a la pila TCP/IP las cuales solemos utilizar con frecuencia como parte de nuestro explorador de puertos favorito, sino que por el contrario tiene por objeto presentar parte del magnifico trabajo realizado por Saumil Shah de “Net Square”, respecto de lo que se ha dado en llamar “HTTP Fingerprinting”. HTTP Fingerprinting Con algunas diferencias, el concepto detrás HTTP Fingerprinting es similar al utilizado al momento de realizar la detección de sistemas operativos por medio de la pila TCP/IP.

Copyright © 2005 Hernán Marcelo Racciatti http://www.hernanracciatti.com.ar

1

Artículo publicado en la revista @RROBA # 96 Suplemento “Hack Paso a Paso” #27 – Noviembre 2005 (Material Sin Editar)

El objetivo final en este caso, es el de identificar servidores HTTP evaluando las diferencias en la implementación del propio protocolo HTTP en cada uno de ellos. Un aspecto importante respecto de HTTP Fingerptinting, es que contrariamente a lo que ocurre con la pila TCP/IP en donde cambiar la forma en la que esta se comporta ante un requerimiento, requiere acceso al codigo de los servicios de networking a nivel de kernel, haciendo de esta posibilidad algo realmente difícil de implementar en la práctica; las respuestas brindadas por un servidor HTTP son relativamente sencillas de cambiar, haciendo que su detección sea mas complicada. No obstante, el trabajo de investigación de Shah, nos brinda la oportunidad de conocer algunas de las técnicas y herramientas que se encuentran a nuestra disposición, al momento de llevar a cabo la identificación de servidores HTTP, con un porcentaje de éxito interesante. Respuestas HTTP: Estudiando el Comportamiento Si nos tomamos el trabajo de examinar la respuesta brindada por los servidores HTTP más importantes, frente al envío de requerimientos correctamente conformados, descubriremos que en su gran mayoría, estos responderán acorde a lo especificado en los RFCs que los gobiernan. Pero... que sucede cuando los requerimientos son malformados en forma premeditada? cual es la respuesta? es uniforme? acertaste... es allí donde comienzan las diferencias... y con ellas, la posibilidad de obtener huellas únicas mediante las cuales seamos capaces de distinguir un servidor de otro. Pero vamos a llevar este concepto a la práctica haciendo nuestras propias pruebas, para ello nos valdremos únicamente de Netcat. Como hemos explicado en nuestro artículo “Seguridad en Aplicaciones Web”, el cual puedes encontrar en este mismo número, netcat nos permite entre otras tantas cosas, establecer un dialogo a nivel HTTP con el servidor objetivo. De este modo, intentaremos decir mediante netcat, decir las palabras correctas, a fin lograr obtener respuestas que puedan colaborar con nuestro objetivo final. Una vez mas, siguiendo los pasos descriptos en el paper “An Introduction to HTTP fingerprinting” de Saumil Shah, intentaremos analizar las respuestas de los cuatro requerimientos mencionados en la “Tabla A”, limitando el alcance de nuestras pruebas a dos de los servidores web mas populares Apache e IIS (Internet Information Server). Test Nº 1

HTTP Test HEAD / HTTP/1.0

2

DELETE / HTTP/1.0

3

GET / HTTP/3.0

4

GET / JUNK/1.0

Resultado Esperado Normalmente el Header HTTP Respuesta cuando las operaciones DELETE no son generalmente permitidas. Respuesta a un requerimiento con una versión de protocolo invalido (3.0) Respuesta a un requerimiento con una especificación de protocolo invalido (JUNK)

Tabla A Copyright © 2005 Hernán Marcelo Racciatti http://www.hernanracciatti.com.ar

2

Artículo publicado en la revista @RROBA # 96 Suplemento “Hack Paso a Paso” #27 – Noviembre 2005 (Material Sin Editar)

Nota: Los ejemplos mostrados a continuación han sido recortados a efectos de optimizar el espacio y clarificar los aspectos que se intentan destacar en cada caso, dejando tan solo las primeras cuatro líneas involucradas en las respuestas.. Test Nº1 – Encabezados Respuesta Apache 2.0.43 D:\Tools\nc>nc apache.test.com 80 HEAD / HTTP/1.0 HTTP/1.1 200 OK Date: Wed, 20 Jul 2005 19:49:29 GMT Server: Apache/2.0.43 (Unix) PHP/4.3.1 Content-Location: index.html.en Vary: negotiate,accept-language,accept-charset

Respuesta IIS 5.0 D:\Tools\nc>nc iis.test.com 80 HEAD / HTTP/1.0 HTTP/1.1 200 OK Server: Microsoft-IIS/5.0 Content-Location: http://iis.example.com/Default.htm Date: Wed, 20 Jul 2005 18:55:34 GMT

Test Nº2 – DELETE Respuesta Apache 2.0.43 D:\Tools\nc>nc apache.test.com 80 DELETE / HTTP/1.0 HTTP/1.1 405 Method Not Allowed Date: Wed, 20 Jul 2005 19:49:48 GMT Server: Apache/2.0.43 (Unix) PHP/4.3.1 Vary: accept-language,accept-charset

Respuesta IIS 5.0 D:\Tools\nc>nc iis.test.com 80 DELETE / HTTP/1.0 HTTP/1.1 403 Forbidden Server: Microsoft-IIS/5.0 Date: Wed, 20 Jul 2005 18:57:12 GMT Content-Type: text/html

Copyright © 2005 Hernán Marcelo Racciatti http://www.hernanracciatti.com.ar

3

Artículo publicado en la revista @RROBA # 96 Suplemento “Hack Paso a Paso” #27 – Noviembre 2005 (Material Sin Editar)

Test Nº3 – Versión de Protocolo Invalido Respuesta Apache 2.0.43 D:\Tools\nc>nc apache.test.com 80 GET / HTTP/3.0 HTTP/1.1 400 Bad Request Date: Wed, 20 Jul 2005 19:50:38 GMT Server: Apache/2.0.43 (Unix) PHP/4.3.1 Content-Length: 301

Respuesta IIS 5.0 D:\Tools\nc>nc iis.test.com 80 GET / HTTP/3.0 HTTP/1.1 200 OK Server: Microsoft-IIS/5.0 Content-Location: http://iis.example.com/Default.htm Date: Wed, 20 Jul 2005 18:58:11 GMT

Test Nº4 – Especificación de Protocolo Invalido Respuesta Apache 2.0.43 D:\Tools\nc>nc apache.test.com 80 GET / JUNK/1.0 HTTP/1.1 200 OK Date: Wed, 20 Jul 2005 19:51:42 GMT Server: Apache/2.0.43 (Unix) PHP/4.3.1 Content-Location: index.html.en

Respuesta IIS 5.0 D:\Tools\nc>nc iis.test.com 80 GET / JUNK/1.0 HTTP/1.1 400 Bad Request Server: Microsoft-IIS/5.0 Date: Wed, 20 Jul 2005 18:59:05 GMT Content-Type: text/html

Bien, lo que haremos ahora, será escribir los resultados en un cuadro y comparar las respuestas recibidas de cada servidor, para cada uno de los requerimientos y así poder encontrar diferencias: Server Apache/2.0.43 IIS 5.0

Orden Date, Server Server, Date

DELETE 405 403

Copyright © 2005 Hernán Marcelo Racciatti http://www.hernanracciatti.com.ar

Versión Erronea 400 200

Protocolo Erroneo 200 400

4

Artículo publicado en la revista @RROBA # 96 Suplemento “Hack Paso a Paso” #27 – Noviembre 2005 (Material Sin Editar)

Como verás las respuestas recibidas por uno y otro server, difieren levemente. Como verás señalado en rojo, cuando realizamos el requerimiento de HEAD, Apache respondió mostrando primero información de la fecha y luego el número de su versión mientras que IIS, hizo exactamente lo contrario. Por otra parte, cada uno de los requerimientos posteriores, ha arrojado distintas respuestas para cada uno de los servidores testeados. Herramientas Automaticas: HTTPrint Bien, a lo largo de los párrafos anteriores, has podido observar alguno de los métodos que eventualmente pueden ser utilizados a la hora realizar el fingerprinting HTTP del servidor objetivo. Lo cierto es, que si bien lo hecho hasta aquí probablemente haya servido para conocer la esencia del fingerprinting, lo cierto es que lograr confiabilidad en el reconocimiento de servicios por medio de huellas a escala, requerirá bastante mas que tan solo un par de test como los aquí mostrados. Esto no debe desilusionarte, puesto que la misma persona que se ha tomado el trabajo de realizar el research de donde me he tomado el atrevimiento de extraer contenido utilizado como parte de este artículo, ha resumido su experiencia al respecto en una magnifica herramienta denominada HTTPrint. (Figura 1)

Figura 1

Copyright © 2005 Hernán Marcelo Racciatti http://www.hernanracciatti.com.ar

5

Artículo publicado en la revista @RROBA # 96 Suplemento “Hack Paso a Paso” #27 – Noviembre 2005 (Material Sin Editar)

Si bien es, cierto que HTTPrint se basa en alguno de los puntos aquí mencionados, este incorpora decenas de técnicas adicionales (Árboles de desición, Lógica propia, Técnicas avanzadas de fuzzyng, etc.), las cuales en conjunto con una excelente base de datos de firmas, convierten en esta herramienta en un motor capaz de identificar con un alto porcentaje de éxito, detalles del servidor objetivo. HTTPrint se encuentra disponible en versión de línea de comandos (Figura 2) e Interfaz Gráfica. A la fecha, es posible descargar esta herramienta para ejecutarla sobre Windows, Linux, Mac Os X y FreeBSD.

Figura 2

Al igual que su instalación, su utilización no representa ninguna complejidad y en el caso de la versión con GUI, su interfaz es sumamente intuitiva. Para echarla andar, bastará con suministrarle el sitio objetivo y el puerto donde se entiende el mismo brinda servicio (Ej: 80, 8080, 8008, etc.) En modo consola, su utilización es un placer. Como resultado de su análisis, por defecto HTTPrint arroja el mismo en formato HTML (Opciones tales como “csv” y “xml” se encuentran soportadas) con un diseño claro y agradable. (Figura 3) Copyright © 2005 Hernán Marcelo Racciatti http://www.hernanracciatti.com.ar

6

Artículo publicado en la revista @RROBA # 96 Suplemento “Hack Paso a Paso” #27 – Noviembre 2005 (Material Sin Editar)

Figura 3

Conclusión En síntesis, en este escueto artículo, hemos aprendido que el reconocimiento de huellas, no solo es propiedad de los detectives o investigadores, y que tampoco es algo relacionado únicamente con el reconocimiento de sistemas operativos. Hemos visto alguno de los métodos utilizados por HTTPrint, así como el modo en que esta herramienta puede ahorrarnos muchos dolores de cabeza. Por ultimo entonces, recomiendo que verifiques los vínculos dispuestos en nuestra sección de “Referencias y Lecturas Complementarias”, accedas al site de Net Square y una vez allí, revises la información relativa a este y otros temas que seguramente despertaran tu interés. Lógicamente te invito a descargar HTTPrint y realices tu propia experiencia.

Hernán Marcelo Racciatti http://www.hernanracciatti.com.ar

Referencias y Lecturas Complementarias Paper: “Remote OS detection via TCP/IP Stack Fingerprinting” by Fyodor Paper: “An Introduction to HTTP fingerprinting” by Saumil Shah http://net-square.com http://net-square.com/httprint/index.html http://net-square.com/httprint/index.html#downloads http://www.insecure.org/nmap/nmap-fingerprinting-article.html http://www.ietf.org/rfc/rfc2616.txt

Copyright © 2005 Hernán Marcelo Racciatti http://www.hernanracciatti.com.ar

7

More Documents from "Bethus Bethuno"