29-10-2016
Pablo González
Carmen Torrano Giménez
Navaja Negra 2016
HSTS & HPKP:
Los Batman y Robin
de la seguridad web
• Introducción
• HPKP
• HSTS
• Ataques
• Ejercicios prácticos
• Conclusiones
Índice
• Pablo González
Ingeniero Informática, URJC.
Technical Manager en Telefónica.
Profesor en UCLM.
Flu project
Libros 0xWord...
• Carmen Torrano Giménez.
Doctora en Informática, UC3M, CSIC.
Senior Security Researcher en 11Paths (Telefónica).
Profesor...
Introducción
HSTS & HPKP
TLS/SSL
HSTS & HPKP
• Por defecto los navegadores no detectan si la cadena de
confianza se ha modificado, puesto que solo comprueban la
valide...
Cadena de certificación
La idea es asociar inequívocamente un certificado o
conjunto de certificados a un dominio concreto (por
ejemplo, almacenan...
• RFC 7469 de abril de 2015 (borrador febrero 2014).
• Es un protocolo de seguridad que permite evitar que un
atacante sup...
• Permite que el navegador recuerde el pin esperado del
certificado de un dominio. El servidor debe presentar una
cadena d...
• Para ello, el servidor introduce la cabecera “Public-Key-Pins” en la que el
dominio envía información al navegador sobre...
• El momento de la primera redirección es una ventana de oportunidad para un
potencial atacante.
• Esta debilidad se llama...
• Precisamente, para evitar este punto débil varios navegadores cuentan
con una lista de preloaded sites.
• Los dueños de ...
• pin-sha256. Contiene el hash SHA-256 en base 64 del campo Subject
Public Key Information (SPKI) del certificado digital ...
• max-age. El número de segundos, a partir de la fecha actual,
que el navegador debe almacenar la información sobre el
cer...
• includeSubdomains (opcional).
• report-uri (opcional). En caso de error en la verificación, se envía una
petición POST a...
Directivas
Public Key Pins:
pin-sha256="d+Nzzj/kBbW36XgzHd3iQz7lzmMFM7UedINRmVf+ie4=";
pin-sha256="U7ZybtJ2wCBeg7QSvWZppKS...
• Curl --head <dominio>
Cómo puedo consultar las cabeceras
• El pin se calcula concatenando SubjectPublicKey y la
SubjectPublicKeyInfo del certificado, calculando el hash
sha256 de ...
Cálculo del pin. Ejemplo
Cálculo del pin. Ejemplo
Añadir a la configuración del servidor (necesario habilitar
mod_headers)
¿Cómo puedo implementarlo en mi servidor?
Apache
...
Añadir esta línea (necesario habilitar
ngx_http_headers_module). Insertando pines en pin-sha256.
¿Cómo puedo implementarlo...
Insertando pines en pin-sha256. Requiere cargar el módulo
mod_setenv server.module (server.modules += (“mod_setenv”) )
¿Có...
Añadir este código
¿Cómo puedo implementarlo en mi servidor?
IIS
<system.webServer> ...
<httpProtocol>
<customHeaders>
<ad...
• El RFC especifica que los navegadores deben descartar las
cabeceras HPKP cuando se envían a través de canales
inseguros....
"Public Key Pinning" port:80, 8080, 443, 8443
"Strict Transport Security" port:80, 8080, 443, 8443
Implementación en servi...
• Chrome 46.0
• Firefox 35 (preloaded sites en Firefox 32)
• EMET/Internet Explorer: no soportado
• Firefox Mobile (Gecko)...
• C:Users[user]AppDataRoamingMozillaFirefox
Profiles[profile]SiteSecurityServiceState.txt
Implementación en navegador
Fire...
• Se trata de un fichero de texto plano tabulado.
• 1. Dominio: protocolo
• 2. Score. Inicial: 0. + 1 por cada día posteri...
• 3. Número de días transcurridos desde el 1 de enero
de 1970 (Epoch) hasta la fecha del sistema de la
última petición o v...
• 4. Separados por ‘,’:
o 4.1 mozilla:pkix:time. Se trata del tiempo de expiración de la cabecera
(max-age) en Epoch exten...
• Instalación
• Visualización. ¿Qué dominios has visitado que
tengan HSTS y HPKP?
Pin Patrol
• Fichero Json
• C:Users[user]AppDataLocalGoogleChromeUser
DataDefaultTransportSecurity
• Almacena un hash del dominio par...
• dynamic_spki_hashes lista de hashes de certificado
del dominio (SKPI).
• Expiry: fecha de expiración de la cabecera HSTS...
• dynamic_spki_hashes_expiry: fecha en la que
expiran los SPKI.
• Pkp_include_subdomains: incluir subdominios de
HPKP o no...
• Sts_include_subdomains: subdominios de HSTS.
• Sts_observed: es el momento en el que se han
observado los pines, es deci...
• HSTS (HTTP Strict Transport Security) es un
mecanismo de seguridad que se fuerza desde el
servidor web a los navegadores...
• Si no se hiciera ese forzado, durante esa primera conexión un
atacante en medio podría hacer una manipulación de todo el...
• Muchos sitios, comúnmente utilizados, implementan HSTS en sus
servidores (Paypal, Gmail, Twitter, Facebook, Outlook…)
• ...
¿Qué es HSTS?
• El problema de la primera petición
o Quedaba el problema generado en la primera petición
o Cuando se instala un navegado...
• También conocido como SSL Strip +
• MITMf (framework) implementa el plugin de SSL
Strip +
SSL Strip v2 (2014)
SSL Strip v2 (2014)
• Como se puede ver en la imagen, el objetivo es quitar la
cabecera HSTS para que la víctima (su navegador) no conozca
est...
• José Selvi
• Si modificamos la hora de los equipos se caducan las
entradas HSTS en el navegador
• Ataque: Delorean
Ataqu...
• Esquema:
oARP Spoofing
oSSL Strip 2
oDelorean: Interceptar peticiones NTP de las máquinas y
modificarlas (adelantar la h...
Ataques de tiempo (NTP Protocol)
• riseup.net
• github.com
• coinbase.com
• mozilla.org
• defcon.org
• Google.com
• accounts.google.com
• blockchain.info
•...
• Implantación poco extendida.
• Hay que utilizarlos correctamente para que protejan bien. Seguir las
recomendaciones del ...
• MUCHAS GRACIAS!
¡Síguenos en nuestras redes sociales
y entérate de todo!
2016 © Telefónica Digital España, S.L.U. Todos los derechos reser...
Próxima SlideShare
Cargando en…5
×

HSTS & HPKP. Los Batman y Robin de la seguridad web

1.842 visualizaciones

Publicado el

En esta presentación se explican varios aspectos sobre el funcionamiento de los protocolos HSTS y HPKP, tanto a nivel de navegador como de servidor.
Además, se incluyen algunos ejercicios prácticos para comprender mejor su funcionamiento.
También se incluyen diversas técnicas para atacar a estos protocolos.
Finalmente se incluyen algunas conclusiones y recomendaciones para su uso correcto.
Esta presentación fue presentada en un taller que se realizó en la conferencia Navaja Negra 2016 por Carmen Torrano y Pablo González.

Publicado en: Tecnología
0 comentarios
0 recomendaciones
Estadísticas
Notas
  • Sé el primero en comentar

  • Sé el primero en recomendar esto

Sin descargas
Visualizaciones
Visualizaciones totales
1.842
En SlideShare
0
De insertados
0
Número de insertados
1.254
Acciones
Compartido
0
Descargas
18
Comentarios
0
Recomendaciones
0
Insertados 0
No insertados

No hay notas en la diapositiva.

HSTS & HPKP. Los Batman y Robin de la seguridad web

  1. 1. 29-10-2016 Pablo González Carmen Torrano Giménez Navaja Negra 2016 HSTS & HPKP: Los Batman y Robin de la seguridad web
  2. 2. • Introducción • HPKP • HSTS • Ataques • Ejercicios prácticos • Conclusiones Índice
  3. 3. • Pablo González Ingeniero Informática, URJC. Technical Manager en Telefónica. Profesor en UCLM. Flu project Libros 0xWord Pablo.gonzalez@11paths.com @pablogonzalezpe Presentación
  4. 4. • Carmen Torrano Giménez. Doctora en Informática, UC3M, CSIC. Senior Security Researcher en 11Paths (Telefónica). Profesora en UCLM. Carmen.Torrano@11paths.com @ctorranog Presentación
  5. 5. Introducción
  6. 6. HSTS & HPKP TLS/SSL HSTS & HPKP
  7. 7. • Por defecto los navegadores no detectan si la cadena de confianza se ha modificado, puesto que solo comprueban la validez formal de las autoridades certificadoras y sus certificados. En el caso de robo de certificados o conexiones intermedias de terceros de confianza, la conexión sería aceptada sin problemas. • Compromiso de la CA Comodo, Diginotar, TurkTrust, etc. Problemática
  8. 8. Cadena de certificación
  9. 9. La idea es asociar inequívocamente un certificado o conjunto de certificados a un dominio concreto (por ejemplo, almacenando certificados presentes en una cadena de certificación). www.dominio.com CA A CA B - certificado de dominio.com -> alerta. Certificate pinning
  10. 10. • RFC 7469 de abril de 2015 (borrador febrero 2014). • Es un protocolo de seguridad que permite evitar que un atacante suplante utilizando certificados fraudulentos. • Es necesario que se implemente en el servidor y cliente. ¿Qué es HPKP?
  11. 11. • Permite que el navegador recuerde el pin esperado del certificado de un dominio. El servidor debe presentar una cadena de certificación que incluya al menos uno de los pines almacenados para ese dominio. • De esta manera es posible detectar modificaciones en la cadena de certificación, así como detectar ataques MiTM debidos a CA comprometidas. ¿Qué es HPKP?
  12. 12. • Para ello, el servidor introduce la cabecera “Public-Key-Pins” en la que el dominio envía información al navegador sobre sus certificados y política de pinning. ¿Qué es HPKP?
  13. 13. • El momento de la primera redirección es una ventana de oportunidad para un potencial atacante. • Esta debilidad se llama Trust On First Use, y se basa en que el protocolo debe dar por buena la primera conexión usada, y la recuerda como referente en futuros diálogos entre los implicados. • Misma casuística cuando max-age expira. La primera conexión
  14. 14. • Precisamente, para evitar este punto débil varios navegadores cuentan con una lista de preloaded sites. • Los dueños de los dominios solicitan que siempre se navegue por ellos mediante HTTPS (incluso desde el primer momento). • Petición de inclusión: https://hstspreload.appspot.com + proceso manual de revisión. • Lista de sitios aceptados: https://chromium.googlesource.com/chromium/src/+/master/net/http/tran sport_security_state_static.json Preload
  15. 15. • pin-sha256. Contiene el hash SHA-256 en base 64 del campo Subject Public Key Information (SPKI) del certificado digital que el servidor desea pinear. • RFC: al menos dos: uno de ellos, al menos, debe encontrarse en la cadena de certificación que ofrece el servidor. Otro de ellos, no, y se considerará de respaldo. Directivas
  16. 16. • max-age. El número de segundos, a partir de la fecha actual, que el navegador debe almacenar la información sobre el certificado proporcionada en el campo anterior. Directivas
  17. 17. • includeSubdomains (opcional). • report-uri (opcional). En caso de error en la verificación, se envía una petición POST a la URI que se indique en este campo. La URI indicada no debería encontrarse en el mismo dominio, ya que en caso de fallo con la conexión original, no podrá resolverse el error. Esta funcionalidad está implementada solo a partir de Chrome 46. Directivas
  18. 18. Directivas Public Key Pins: pin-sha256="d+Nzzj/kBbW36XgzHd3iQz7lzmMFM7UedINRmVf+ie4="; pin-sha256="U7ZybtJ2wCBeg7QSvWZppKSa06gOYkSCIZkaR2ft3DM="; pin-sha256="JNFyeZHEFDpGO41RvpVRuQY1Oi19xtLFeF99j0EYduE="; max-age=15768000; includeSubDomains
  19. 19. • Curl --head <dominio> Cómo puedo consultar las cabeceras
  20. 20. • El pin se calcula concatenando SubjectPublicKey y la SubjectPublicKeyInfo del certificado, calculando el hash sha256 de la cadena resultante, y codificándolo en base64. Por tanto, se eluden otros datos del certificado y extensiones X.509. Cálculo del pin
  21. 21. Cálculo del pin. Ejemplo
  22. 22. Cálculo del pin. Ejemplo
  23. 23. Añadir a la configuración del servidor (necesario habilitar mod_headers) ¿Cómo puedo implementarlo en mi servidor? Apache Header always set Public-Key-Pins "pin-sha256="base64+primary=="; pin-sha256="base64+backup=="; max-age=5184000; includeSubDomains"
  24. 24. Añadir esta línea (necesario habilitar ngx_http_headers_module). Insertando pines en pin-sha256. ¿Cómo puedo implementarlo en mi servidor? Nginx add_header Public-Key-Pins 'pin-sha256="base64+primary=="; pin-sha256="base64+backup=="; max-age=5184000; includeSubDomains' always;
  25. 25. Insertando pines en pin-sha256. Requiere cargar el módulo mod_setenv server.module (server.modules += (“mod_setenv”) ) ¿Cómo puedo implementarlo en mi servidor? Lighttpd setenv.add-response-header = ( "Public-Key-Pins" => "pin-sha256="base64+primary=="; pin-sha256="base64+backup=="; max-age=5184000; includeSubDomains")
  26. 26. Añadir este código ¿Cómo puedo implementarlo en mi servidor? IIS <system.webServer> ... <httpProtocol> <customHeaders> <add name="Public-Key-Pins" value="pin-sha256=&quot;base64+primary==&quot;; pin-sha256=&quot;base64+backup==&quot;; max-age=5184000; includeSubDomains" /> </customHeaders> </httpProtocol> ... </system.webServer>
  27. 27. • El RFC especifica que los navegadores deben descartar las cabeceras HPKP cuando se envían a través de canales inseguros. Sin embargo, no es una práctica habitual. Consideraciones de seguridad
  28. 28. "Public Key Pinning" port:80, 8080, 443, 8443 "Strict Transport Security" port:80, 8080, 443, 8443 Implementación en servidores Shodan
  29. 29. • Chrome 46.0 • Firefox 35 (preloaded sites en Firefox 32) • EMET/Internet Explorer: no soportado • Firefox Mobile (Gecko) 35 Implementación en navegador
  30. 30. • C:Users[user]AppDataRoamingMozillaFirefox Profiles[profile]SiteSecurityServiceState.txt Implementación en navegador Firefox
  31. 31. • Se trata de un fichero de texto plano tabulado. • 1. Dominio: protocolo • 2. Score. Inicial: 0. + 1 por cada día posterior que se visite el dominio, tomando como referencia la fecha y hora actual del sistema en contraste con el valor almacenado en la tercera columna. Implementación en navegador Firefox
  32. 32. • 3. Número de días transcurridos desde el 1 de enero de 1970 (Epoch) hasta la fecha del sistema de la última petición o visita realizada. Este dato se actualiza siempre con cada petición. Implementación en navegador Firefox
  33. 33. • 4. Separados por ‘,’: o 4.1 mozilla:pkix:time. Se trata del tiempo de expiración de la cabecera (max-age) en Epoch extendido (en milisegundos desde el 1 de enero de 1970). o 4.2 SecurityPropertyState. Desactivado (SecurityPropertyUnset, 0), activado (SecurityPropertySet, 1) o está siendo sobreescrito (SecurityPropertyKnockout, 2). Esta información es para uso interno del navegador y no se encuentra documentada. o 4.3 includeSubdomains o 4.4 Array de pines recibido de forma concatenada separados por ‘=’. Implementación en navegador Firefox
  34. 34. • Instalación • Visualización. ¿Qué dominios has visitado que tengan HSTS y HPKP? Pin Patrol
  35. 35. • Fichero Json • C:Users[user]AppDataLocalGoogleChromeUser DataDefaultTransportSecurity • Almacena un hash del dominio para mantener cierta confidencialidad. Dificulta que se conozca el dominio si solo se posee el hash. Implementación en navegador Chrome
  36. 36. • dynamic_spki_hashes lista de hashes de certificado del dominio (SKPI). • Expiry: fecha de expiración de la cabecera HSTS o HPKP. • Mode: valor “force-https”, que indica que el comportamiento esperado para ese dominio es forzar el acceso por HTTPS. Implementación en navegador Chrome
  37. 37. • dynamic_spki_hashes_expiry: fecha en la que expiran los SPKI. • Pkp_include_subdomains: incluir subdominios de HPKP o no. • Pkp_observed: recoge el momento en el que se han observado los pines, es decir, cuándo se ha visitado una página. Implementación en navegador Chrome
  38. 38. • Sts_include_subdomains: subdominios de HSTS. • Sts_observed: es el momento en el que se han observado los pines, es decir, cuándo se ha visitado una página con esta cabecera. • chrome://net-internals/hsts#hsts Implementación en navegador Chrome
  39. 39. • HSTS (HTTP Strict Transport Security) es un mecanismo de seguridad que se fuerza desde el servidor web a los navegadores y que permite asegurar que las conexiones que se realizan desde el navegador al sitio web se realizarán siempre a través de un canal seguro con TLS/SSL ¿Qué es HSTS?
  40. 40. • Si no se hiciera ese forzado, durante esa primera conexión un atacante en medio podría hacer una manipulación de todo el tráfico entre el navegador y el atacante para que la conexión en ese tramo fuera sin cifrar, y el cifrado se hiciera entre la máquina del atacante y el servidor original que usa HTTPs • Es decir, sería (potencialmente) vulnerable a SSL Strip v1 (2009) ¿Qué es HSTS?
  41. 41. • Muchos sitios, comúnmente utilizados, implementan HSTS en sus servidores (Paypal, Gmail, Twitter, Facebook, Outlook…) • El navegador debe soportarlo ¿Qué es HSTS?
  42. 42. ¿Qué es HSTS?
  43. 43. • El problema de la primera petición o Quedaba el problema generado en la primera petición o Cuando se instala un navegador, es decir, si nosotros instalamos Mozilla Firefox o Google Chrome, la primera vez que hiciéramos una petición a gmail.com, esta petición iría por HTTP hasta ser redirigido al servidor por HTTPs con un redirect y recibir la cabecera HSTS para establecer la política de seguridad o Para resolverlo se habilitó una “lista precargada” de dominios Al instalar el navegador, éste ya tiene una lista precargada a los que se debe conectar siempre por HTTPs ¿Qué es HSTS?
  44. 44. • También conocido como SSL Strip + • MITMf (framework) implementa el plugin de SSL Strip + SSL Strip v2 (2014)
  45. 45. SSL Strip v2 (2014)
  46. 46. • Como se puede ver en la imagen, el objetivo es quitar la cabecera HSTS para que la víctima (su navegador) no conozca este hecho • ¿Qué ocurre con la lista precargada? • Se comporta como una caché • Es una lista dinámica • Si el tiempo pasa, la entrada puede caducar • Hay que tener en cuenta que cada vez que se accede a un sitio “se actualiza” dicha caché SSL Strip v2 (2014)
  47. 47. • José Selvi • Si modificamos la hora de los equipos se caducan las entradas HSTS en el navegador • Ataque: Delorean Ataques de tiempo (NTP Protocol)
  48. 48. • Esquema: oARP Spoofing oSSL Strip 2 oDelorean: Interceptar peticiones NTP de las máquinas y modificarlas (adelantar la hora varios años) Bypass HSTS Ataques de tiempo (NTP Protocol)
  49. 49. Ataques de tiempo (NTP Protocol)
  50. 50. • riseup.net • github.com • coinbase.com • mozilla.org • defcon.org • Google.com • accounts.google.com • blockchain.info • bitcoin.org • dropbox.com • en.wikipedia.org Juego: Dominios • es.noticias.yahoo.com • es.wikipedia.org • es.yahoo.com google • www.yahoo.es • evernote.com • f5.com • ipsec.pl • lastpass.com • itunes.apple.com • login.windows.net • mail.yahoo.com • outlook.office365.com • telegram.org • vimeo.com • www.airbnb.es • www.coursera.org • www.cryptool.org • www.ingdirect.es • www.kali.org • www.spotify.com • www.w3.org • www.torproject.org
  51. 51. • Implantación poco extendida. • Hay que utilizarlos correctamente para que protejan bien. Seguir las recomendaciones del RFC. • No utilizarlos con HTTP (puerto 80, 8080). • Utilizar preload e includeSubdomains. • Por parte de los navegadores, todavía existen muchos que no soportan estas cabeceras, especialmente, entre dispositivos móviles. • Susceptibles de ataque/debilidades. • Aún queda mucho trabajo por hacer para una correcta protección, además de concienciación de su uso. Conclusiones
  52. 52. • MUCHAS GRACIAS!
  53. 53. ¡Síguenos en nuestras redes sociales y entérate de todo! 2016 © Telefónica Digital España, S.L.U. Todos los derechos reservados. La información contenida en el presente documento es propiedad de Telefónica Digital España, S.L.U. (“TDE”) y/o de cualquier otra entidad dentro del Grupo Telefónica o sus licenciantes. TDE y/o cualquier compañía del Grupo Telefónica o los licenciantes de TDE se reservan todos los derechos de propiedad industrial e intelectual (incluida cualquier patente o copyright) que se deriven o recaigan sobre este documento, incluidos los derechos de diseño, producción, reproducción, uso y venta del mismo, salvo en el supuesto de que dichos derechos sean expresamente conferidos a terceros por escrito. La información contenida en el presente documento podrá ser objeto de modificación en cualquier momento sin necesidad de previo aviso. La información contenida en el presente documento no podrá ser ni parcial ni totalmente copiada, distribuida, adaptada o reproducida en ningún soporte sin que medie el previo consentimiento por escrito por parte de TDE. El presente documento tiene como único objetivo servir de soporte a su lector en el uso del producto o servicio descrito en el mismo. El lector se compromete y queda obligado a usar la información contenida en el mismo para su propio uso y no para ningún otro. TDE no será responsable de ninguna pérdida o daño que se derive del uso de la información contenida en el presente documento o de cualquier error u omisión del documento o por el uso incorrecto del servicio o producto. El uso del producto o servicio descrito en el presente documento se regulará de acuerdo con lo establecido en los términos y condiciones aceptados por el usuario del mismo para su uso. TDE y sus marcas (así como cualquier marca perteneciente al Grupo Telefónica) son marcas registradas. TDE y sus filiales se reservan todo los derechos sobre las mismas. www.elevenpaths.com

×