Mostrando entradas con la etiqueta HTTP. Mostrar todas las entradas
Mostrando entradas con la etiqueta HTTP. Mostrar todas las entradas
No hace mucho que ha sido aprobado el borrador (Octubre 2012) sobre el nuevo protocolo HSTS como propuesta de estándar, y es justamente en este mes de Noviembre, el 19 de Noviembre 2012, cuando ha sido publicado el RFC 6797 que se corresponde con el estándar HSTS propuesto.

The IESG has approved the following document:
- 'HTTP Strict Transport Security (HSTS)' (draft-ietf-websec-strict-transport-sec-14.txt) as Proposed Standard[Info]
La iniciativa surge a raíz de los problemas que existen en la actualidad sobre la navegación segura en Internet, donde la negociación de la conexión segura (SSL o TLS) se deja en manos de la configuración del usuario (user-agent-client) y el servidor (server). 

Fruto de esta negociación basada en las preferencias del usuario y configuración del servidor, surgen situaciones en la que la conexión segura que requiere de un certificado, se permite interactuar con el servidor a pesar de que éste (certificado) se encuentre revocado o no pueda ser correctamente verificado. Pudiendo dejar cookies de sesión sin protección, es decir transmisión de cookies en un canal sin cifrar.

<< A passive network attacker using such tools can steal session identifiers/cookies and hijack the user's web session(s) by obtaining cookies containing authentication credentials >>

Para evitar esta situación se aparecieron algunas extensiones para los navegadores que forzaban la conexión HTTPS para conectarse a las web con objeto de establecer una conexión segura, con aquellas WEB soportadas, desde el inicio de la comunicación, proteger de ese modo el intercambio de cookies de sesión de forma segura.

Fruto de estas iniciativas surgió la propuesta HSTS, con objeto de eliminar los problemas en la negociación de las conexiones seguras entre user-agent-client y servidores web. 


¿Qué es HSTS?

HTTP Strict Transport Security (HSTS) es un protocolo que estandariza el mecanismo mediante el cuál las páginas web se "declaran" accesibles únicamente mediante conexión segura. 

Para ello el servidor WEB deberá habilitar mediante HSTS su política de seguridad, donde deberá indicar las obligación de establecer la conexión segura.

¿Cómo funciona?

Consiste en utilizar un campo del protocolo HTTP para indicar la política de seguridad de la página WEB, es decir, un usar la respuesta HTTP (HTTP Response) para incluir la política de seguridad denominada STS (Strict Transport Security), donde se especifica que se debe de iniciar la conexión segura con el servidor.

STS Policy 

La política de seguridad que se especifica en el campo STS esta formada siguiendo la sintaxis ABNF (Augmented Backus-Naur Form) tal y como se especifica en la RFC2616 HTTP.

A continuación se muestra la estructura del campo STS:

Strict-Transport-Security = "Strict-Transport-Security" ":"
                                 [ directive ]  *( ";" [ directive ] )

     directive                 = directive-name [ "=" directive-value ]
     directive-name            = token
     directive-value           = token | quoted-string


El valor que puede contener las directivas de seguridad son:
  • max-age: número de segundos máximos que se espera (HSTS Host - WEBSITE -) después de la recepción de la cabecera STS por el usuario (client).
  • includeSubDomains: si esta presente indica al "user-agent" que la politica STS aplica a cualquier subdominio que cuelge del dominio de la web. 
Ejemplo: 
Strict-Transport-Security: max-age=15768000 ; includeSubDomains

Si max-age=0, significará que el UA (user-agent) deberá eliminar la política HSTS asociada con el UA inmediatamente después de su recepción.

ALGUNAS CONSIDERACIONES


1.- Se debe tener en consideración que al utilizar HSTS, la conexión pasará de HTTP a HTTPS inmediatamente independientemente del puerto sobre el que se este operando.


... HSTS Policy applies to HTTP over any TCP port of an HSTS Host [Info]

2.- El estándar (HSTS) especifica que el UA (user-agent - navegador web) debe finalizar la conexión con el servidor si ocurre algún error durante el establecimiento de la capa segura (TLS), incluyendo cualquier error derivado de la validación de los certificados.[*]

3.- El UA no debe prestar atención alguna a las posibles etiquetas y/o elementos "HTTP-Equiv" y "<Meta>"  incluidos en el código HTML.


4.- La duración máxima para la asociación por parte de la UA de un website conocido como HSTS Host es de 90 días: "max-age value of 7776000 seconds is 90 days". Esto significa que si durante ese periodo de tiempo el UA se conecta con un Know HSTS Host, la UA no terminará la conexión al no recibir el campo STS en la conexión con el servidor mientras no haya expirado.


MEJORAS DE SEGURIDAD

El estándar HSTS previene a los usuarios del ataque SSL-Stripping (Hijacking) [ o firesheep]; el SSL_Strip es un ataque que convierte la conexión HTTPS en HTTP sin que el usuario se de cuenta utilizando la técnica de Man in the Middle. Esto puede ser utilizado por "atacantes" en redes inalambricas poco seguras y/o publicas. El HSTS evitaría este tipo de ataque ya que UA (user-agent - navegador) no permitirá una conexión no segura según lo establece la política STS.


SSL Strip Attack

No obstante aunque se implemente el estándar HSTS será tarea del desarrollador WEB evitar el contenido mixto en la páginas web, de forma que se evite la transmisión de cookies de sesión de forma no segura, en definitiva SIEMPRE se debe continuar tomando las mismas precauciones de seguridad al desarrollar como si no se tuviera el protocolo HSTS habilitado.

Para una mayor detalle en el estándar, véase la RFC 6797.

REFERENCIAS

[1] [RFC2616] Hypertext Transfer Protocol -- HTTP/1.1 
[2] [RFC6101] The Secure Sockets Layer (SSL) Protocol Version 3.0
[3] [RFC5246] The Transport Layer Security (TLS) Protocol Version 1.2


Firesheep es una extensión disponible para Mozilla Firefox, de fácil instalación, que permite demostrar la técnica de Hijacking sobre el protocolo HTTP, es decir, es una funcionalidad que se añade al navegador, en forma de extensión, que permite demostrar la técnica mediante el robo de la sesión de un usuario autenticado en un servicio web, por ejemplo: facebook, twitter, etc.

A raíz, de la publicación de la extensión firesheep, los populares servicios web, facebook y twitter, se apresuraron a proteger sus servicios frente al Hijacking.

A continuación, explico como funciona esta extensión y como podemos protegernos.

¿Qué es Hijacking?

La técnica de Hijacking, consiste en robar el identificador único de sesión que un servidor web asigna a cada usuario cuando accede a la página web, en concreto cuando introduce el binomio usuario/contraseña. Una vez el usuario realiza el inicio de sesión, el servidor envia una respuesta al navegador, en forma de cookie, con el identificador de sesión y los datos necesarios para que el servidor lleve el control del usuario autorizado. Esta cookie será utilizado por el navegador en sucesivas visitas y peticiones de páginas web, mientras éste se encuentre conectado al servicio.

Una cookie es un fragmento de información que se almacena en el disco duro del visitante de una página web a través de su modo a petición del servidor de la página. Esto permite al servidor llevar el control de los usuarios que visitan la página web. Algunos agentes maliciosos utilizan estan cookies para recoger información sobre los hábitos del usuarios, pero eso es otro tema a tratar en otro artículo.

Un atacante, mediante esta técnica podría acceder a la cuenta del usuario victima sin necesidad de introducir el nombre de usuario y contraseña; Pues habría capturado la cookie de sesión, suplantando la identidad del mismo en el navegador; Es decir, a todos los efectos, para el servidor web el atacante será un usuario autorizado, dejandole acceder por completo a la información de la cuenta del usuario que ha sido "Hijackeado".

¿Cómo funciona firesheep?

Se instala la extensión en el navegador, con la posibilidad de realizar el robo de sesiones (hikacking) a tan solo un click del ratón. La herramienta viene configurada por defecto para robar las sesiones de multiples redes sociales entre las que se encuentran facebook y twitter.

Es especialmente "peligrosa" en redes wifi públicas y abiertas, como por ejemplo: aeropuertos, cafeterías, hospitales, universidades y otros edificios públicos.

El funcionamiento es el siguiente:



Un posible atacante (hombre de negro) con firesheep instalado se conecta a una red wifi pública y abierta, la aplicación firesheep comienza a capturar todo el tráfico de red que circula por la red wifi extrayendo las "cookies" de los servicios facebook y twitter (tal y como se muestra en la imagen). Todos los usuarios son capturados salvo uno de ellos, que en el siguiente apartado explicamos ¿porque no?.

Detalle técnico:
Firesheep es una extensión que necesita instalar las librerías Winpcap para que funcione sobre Windows, además de necesitar permisos de Administrador en Windows Vista o superior. Ya que utiliza la característica de monitoring (modo promiscuo) de la tarjeta de red para escuchar todo el tráfico que circula por el medio al cuál se encuentra conectado. En nuestro caso, una red inalámbrica.

El proyecto firesheep fue abandonado por sus creadores, y solo es posible instalarlo en la versión 3.x de Firefox. No obstante, recientemente el laboratorio Acatel-Lucent Bell, ha publicado un paper titulado Show Me Your Cookie And I Will Tell You Who You Are   (Muestrame tus cookies y te diré quien eres) explica toda la información que puede ser extraída de nuestras cookies de session en google. Este laboratorio ha retomado el proyecto de firesheep incluyen la capacidad de capturas las Cookies de sesión de Google.


¿Cómo protegernos?

Esta técnica, hijacking, así como la extensión firesheep es inútil cuando se cifra la conexión de extremo a extremo, es decir utillizando HTTPS. 
Recomendación: Activar la navegación segura (HTTPS) en el servicio para la utilice siempre y por defecto.

De hecho, si disponéis de una cuenta en facebook, en el menu de configuración puede configurarse para que por defecto se utilice HTTPS para todas las comunicaciones con el servicio.
Para proteger facebook de esta herramienta debeís de ir a configuración de la cuenta, en el menú de Seguridad, activar la "Navegación Segura".
Activar Navegación Segura en Facebook.
Para proteger vuestra cuenta de twitter, ir a configuracion de cuenta, y hacia el final, Activar el HTTPS.

Activar Navegación Segura en Twitter.

Utilizar la navegación segura (HTTPS), nos permite protegernos frente a las técnicas de hijacking, y la captura de información sensible cuando se utilicen redes wifi públicas y desprotegidas. Siendo recomendable, utilizarlo siempre independientemente de la seguridad de la red a la que estés conectado.

¿Se puede detectar Firesheep?

Ahora que estas protegido, configurando los servicios web para la navegación segura (HTTPS), surge una pregunta ¿Podemos saber si alguién esta utilizando Firesheep en una red wifi pública y abierta? La respuesta es SI.

Existe una extensión de Firefox, Blacksheep basada en el código fuente de Firesheep. Esta extensión (add-ons) es capaz de detectar si alguién esta utilizando Firesheep, para ello cada X minutos configurables (5 min por defecto) simulará conexiones HTTP con datos falsos a los sitios que Firesheep es capaz de manejar. De esta forma  blacksheep rastreará la red a la que nos encontramos conectados en busca de indicios y trazas de intentos de conexión de firesheep utilizando los valores falsos simulados por blacksheep.

En el caso de que sea detectado, la extensión nos alertará de que efectivamente existe alguién ejecutando Firesheep.

Conclusiones

Siempre que sea posible se debe de utilizar y/o configurar el servicio web que utlizamos para que se posible el acceso con navegación segura (HTTPS). 

Descargas:

Extensión Firesheep
Extensión Blacksheep

Referencias:
Firesheep
Extensión firesheep, hackear cuentas de facebook a un click en GenBeta.es
Novedades en Firesheep en Dragonjar.org

NOTA:
El contenido de este artículo es meramente informativo, no me hago responsable del uso que de él se pueda hacer.