47
cccccccccccccccccc CyberCamp.es HSTS & HPKP: Los Batman y Robin de la seguridad web Pablo González @pablogonzalezpe Carmen Torrano @ctorranog

HSTS & HPKP: Los Batman y Robin de la seguridad web · HSTS & HPKP: Los Batman y Robin de la seguridad web Pablo González @pablogonzalezpe ... mecanismo de seguridad que se fuerza

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: HSTS & HPKP: Los Batman y Robin de la seguridad web · HSTS & HPKP: Los Batman y Robin de la seguridad web Pablo González @pablogonzalezpe ... mecanismo de seguridad que se fuerza

cccccccccccccccccc

CyberCamp.es

HSTS & HPKP: Los Batman y Robinde la seguridad web

Pablo González @pablogonzalezpe

Carmen Torrano@ctorranog

Page 2: HSTS & HPKP: Los Batman y Robin de la seguridad web · HSTS & HPKP: Los Batman y Robin de la seguridad web Pablo González @pablogonzalezpe ... mecanismo de seguridad que se fuerza

Agenda

Introducción HPKP HSTS Ataques Conclusiones

2

Page 3: HSTS & HPKP: Los Batman y Robin de la seguridad web · HSTS & HPKP: Los Batman y Robin de la seguridad web Pablo González @pablogonzalezpe ... mecanismo de seguridad que se fuerza

3

Whoami

Pablo González

Ingeniero Informática, URJC. Technical Manager en Telefónica. Docente en:

UEM, UOC, UCLM, URJC, UNIR, ESIC Flu project & hackersClub Libros 0xWord

Got Root, Metasploit para pentesters, Pentesting con Kali, Pentesting con Powershell Ethical Hacking

@pablogonzalezpe

Page 4: HSTS & HPKP: Los Batman y Robin de la seguridad web · HSTS & HPKP: Los Batman y Robin de la seguridad web Pablo González @pablogonzalezpe ... mecanismo de seguridad que se fuerza

4

Whoami

Carmen Torrano Giménez.

Doctora en Informática, UC3M, CSIC. Senior Security Researcher en 11Paths

(Telefónica). Docente en UCLM.

@ctorranog

Page 5: HSTS & HPKP: Los Batman y Robin de la seguridad web · HSTS & HPKP: Los Batman y Robin de la seguridad web Pablo González @pablogonzalezpe ... mecanismo de seguridad que se fuerza

5

Introducción

Page 6: HSTS & HPKP: Los Batman y Robin de la seguridad web · HSTS & HPKP: Los Batman y Robin de la seguridad web Pablo González @pablogonzalezpe ... mecanismo de seguridad que se fuerza

6

HSTS & HPKP

TLS/SSL

HSTS & HPKP

Page 7: HSTS & HPKP: Los Batman y Robin de la seguridad web · HSTS & HPKP: Los Batman y Robin de la seguridad web Pablo González @pablogonzalezpe ... mecanismo de seguridad que se fuerza

7

HPKP

Page 8: HSTS & HPKP: Los Batman y Robin de la seguridad web · HSTS & HPKP: Los Batman y Robin de la seguridad web Pablo González @pablogonzalezpe ... mecanismo de seguridad que se fuerza

8

Problemática

Detección de la suplantación de autoridadesintermedias en una cadena de certificación.

Por defecto los navegadores no detectan si lacadena de confianza se ha modificado, puesto quesolo comprueban la validez formal de lasautoridades certificadoras y sus certificados. En elcaso de robo de certificados o conexionesintermedias de terceros de confianza, la conexiónsería aceptada sin problemas.

Compromiso de la CA Comodo, Diginotar, TurkTrust,etc.

Page 9: HSTS & HPKP: Los Batman y Robin de la seguridad web · HSTS & HPKP: Los Batman y Robin de la seguridad web Pablo González @pablogonzalezpe ... mecanismo de seguridad que se fuerza

9

Cadena de certificación

Page 10: HSTS & HPKP: Los Batman y Robin de la seguridad web · HSTS & HPKP: Los Batman y Robin de la seguridad web Pablo González @pablogonzalezpe ... mecanismo de seguridad que se fuerza

10

Certificate pinning

Para detectar cuándo una cadena de confianza ha sido modificada.

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)

dominio.com CA A

CA B - certificado de dominio.com -> detección

Page 11: HSTS & HPKP: Los Batman y Robin de la seguridad web · HSTS & HPKP: Los Batman y Robin de la seguridad web Pablo González @pablogonzalezpe ... mecanismo de seguridad que se fuerza

11

¿Qué es HPKP?

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.

Page 12: HSTS & HPKP: Los Batman y Robin de la seguridad web · HSTS & HPKP: Los Batman y Robin de la seguridad web Pablo González @pablogonzalezpe ... mecanismo de seguridad que se fuerza

12

¿Qué es HPKP?

Permite que el navegador recuerde el pin esperadodel certificado de un dominio.

Cuando se accede al dominio, el servidor debepresentar una cadena de certificación que incluya almenos uno de los pines almacenados para esedominio.

De esta manera es posible detectar modificacionesen la cadena de certificación, así como detectarataques MiTM debidos a CA comprometidas.

Page 13: HSTS & HPKP: Los Batman y Robin de la seguridad web · HSTS & HPKP: Los Batman y Robin de la seguridad web Pablo González @pablogonzalezpe ... mecanismo de seguridad que se fuerza

13

¿Qué es HPKP?

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.

Page 14: HSTS & HPKP: Los Batman y Robin de la seguridad web · HSTS & HPKP: Los Batman y Robin de la seguridad web Pablo González @pablogonzalezpe ... mecanismo de seguridad que se fuerza

14

La primera conexión

El momento de la primera redirección es unaventana de oportunidad para un potencial atacante.

Esta debilidad se llama Trust On First Use, y se basaen que el protocolo debe dar por buena la primeraconexión usada, y la recuerda como referente enfuturos diálogos entre los implicados.

Misma casuística cuando max-age expira.

Page 15: HSTS & HPKP: Los Batman y Robin de la seguridad web · HSTS & HPKP: Los Batman y Robin de la seguridad web Pablo González @pablogonzalezpe ... mecanismo de seguridad que se fuerza

15

Preload

Precisamente, para evitar este punto débil variosnavegadores cuentan con una lista de preloaded.

Page 16: HSTS & HPKP: Los Batman y Robin de la seguridad web · HSTS & HPKP: Los Batman y Robin de la seguridad web Pablo González @pablogonzalezpe ... mecanismo de seguridad que se fuerza

16

Directivas

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.

Page 17: HSTS & HPKP: Los Batman y Robin de la seguridad web · HSTS & HPKP: Los Batman y Robin de la seguridad web Pablo González @pablogonzalezpe ... mecanismo de seguridad que se fuerza

17

Directivas

max-age. El número de segundos, a partir de la fechaactual, que el navegador debe almacenar la informaciónsobre el certificado proporcionada en el campo anterior.

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 eneste campo. La URI indicada no debería encontrarse en elmismo dominio, ya que en caso de fallo con la conexiónoriginal, no podrá resolverse el error. Esta funcionalidadestá implementada solo a partir de Chrome 46.

Page 18: HSTS & HPKP: Los Batman y Robin de la seguridad web · HSTS & HPKP: Los Batman y Robin de la seguridad web Pablo González @pablogonzalezpe ... mecanismo de seguridad que se fuerza

18

Directivas

Public Key Pins: pin-sha256="d+Nzzj/kBbW36XgzHd3iQz7lzmMFM7UedINRmVf+ie4="; pin-sha256="U7ZybtJ2wCBeg7QSvWZppKSa06gOYkSCIZkaR2ft3DM="; pin-sha256="JNFyeZHEFDpGO41RvpVRuQY1Oi19xtLFeF99j0EYduE="; max-age=15768000; includeSubDomains

Page 19: HSTS & HPKP: Los Batman y Robin de la seguridad web · HSTS & HPKP: Los Batman y Robin de la seguridad web Pablo González @pablogonzalezpe ... mecanismo de seguridad que se fuerza

19

Cómo puedo consultar las cabeceras

Curl --head <dominio>

Page 20: HSTS & HPKP: Los Batman y Robin de la seguridad web · HSTS & HPKP: Los Batman y Robin de la seguridad web Pablo González @pablogonzalezpe ... mecanismo de seguridad que se fuerza

20

Cálculo del pin

El pin se calcula concatenando SubjectPublicKey yla SubjectPublicKeyInfo del certificado, calculandoel hash sha256 de la cadena resultante, ycodificándolo en base64.

Por tanto, se eluden otros datos del certificado yextensiones X.509.

Page 21: HSTS & HPKP: Los Batman y Robin de la seguridad web · HSTS & HPKP: Los Batman y Robin de la seguridad web Pablo González @pablogonzalezpe ... mecanismo de seguridad que se fuerza

21

Cálculo del pin. Ejemplo

Page 22: HSTS & HPKP: Los Batman y Robin de la seguridad web · HSTS & HPKP: Los Batman y Robin de la seguridad web Pablo González @pablogonzalezpe ... mecanismo de seguridad que se fuerza

22

Cálculo del pin. Ejemplo

Page 23: HSTS & HPKP: Los Batman y Robin de la seguridad web · HSTS & HPKP: Los Batman y Robin de la seguridad web Pablo González @pablogonzalezpe ... mecanismo de seguridad que se fuerza

23

¿Cómo puedo implementarlo en mi servidor?

Apache Añadir a la configuración del servidor (necesario

habilitar mod_headers) Header always set Public-Key-Pins "pin-

sha256=\"base64+primary==\"; pin-sha256=\"base64+backup==\"; max-age=5184000; includeSubDomains"

Page 24: HSTS & HPKP: Los Batman y Robin de la seguridad web · HSTS & HPKP: Los Batman y Robin de la seguridad web Pablo González @pablogonzalezpe ... mecanismo de seguridad que se fuerza

24

¿Cómo puedo implementarlo en mi servidor?

Nginx Añadir esta línea (necesario habilitar

ngx_http_headers_module). Insertando pines en pin-sha256 add_header Public-Key-Pins 'pin-sha256="base64+primary=="; pin-sha256="base64+backup=="; max-age=5184000; includeSubDomains' always;

Page 25: HSTS & HPKP: Los Batman y Robin de la seguridad web · HSTS & HPKP: Los Batman y Robin de la seguridad web Pablo González @pablogonzalezpe ... mecanismo de seguridad que se fuerza

25

¿Cómo puedo implementarlo en mi servidor?

Lighttpd Insertando pines en pin-sha256. Requiere cargar el

módulo mod_setenv server.module (server.modules+= (“mod_setenv”) ) setenv.add-response-header = ( "Public-Key-Pins" => "pin-

sha256=\"base64+primary==\"; pin-sha256=\"base64+backup==\"; max-age=5184000; includeSubDomains")

Page 26: HSTS & HPKP: Los Batman y Robin de la seguridad web · HSTS & HPKP: Los Batman y Robin de la seguridad web Pablo González @pablogonzalezpe ... mecanismo de seguridad que se fuerza

26

¿Cómo puedo implementarlo en mi servidor?

IIS Añadir este código

<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>

Page 27: HSTS & HPKP: Los Batman y Robin de la seguridad web · HSTS & HPKP: Los Batman y Robin de la seguridad web Pablo González @pablogonzalezpe ... mecanismo de seguridad que se fuerza

27

Consideraciones de seguridad

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.

Page 28: HSTS & HPKP: Los Batman y Robin de la seguridad web · HSTS & HPKP: Los Batman y Robin de la seguridad web Pablo González @pablogonzalezpe ... mecanismo de seguridad que se fuerza

28

Implementación en servidores

Shodan "Public-Key-Pins" port:80, 8080, 443, 8443 "Strict-Transport-Security" port:80, 8080, 443, 8443

Page 29: HSTS & HPKP: Los Batman y Robin de la seguridad web · HSTS & HPKP: Los Batman y Robin de la seguridad web Pablo González @pablogonzalezpe ... mecanismo de seguridad que se fuerza

29

Implementación en navegador

Chrome 46.0 Firefox 35 (preloaded sites en Firefox 32) EMET/Internet Explorer: no soportado Firefox Mobile (Gecko) 35

Page 30: HSTS & HPKP: Los Batman y Robin de la seguridad web · HSTS & HPKP: Los Batman y Robin de la seguridad web Pablo González @pablogonzalezpe ... mecanismo de seguridad que se fuerza

30

Implementación en navegador

Firefox C:\Users\[user]\AppData\Roaming\Mozilla\Firefox\Profiles\

[profile]\SiteSecurityServiceState.txt

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 delsistema en contraste con el valor almacenado en la terceracolumna.

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 visitarealizada. Este dato se actualiza siempre con cada petición.

Page 31: HSTS & HPKP: Los Batman y Robin de la seguridad web · HSTS & HPKP: Los Batman y Robin de la seguridad web Pablo González @pablogonzalezpe ... mecanismo de seguridad que se fuerza

31

Implementación en navegador

4. Separados por ‘,’:□ 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).

□ 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.

□ 4.3 includeSubdomains□ 4.4 Array de pines recibido de forma concatenada separados por

‘=’.

Page 32: HSTS & HPKP: Los Batman y Robin de la seguridad web · HSTS & HPKP: Los Batman y Robin de la seguridad web Pablo González @pablogonzalezpe ... mecanismo de seguridad que se fuerza

32

Pin Patrol

Instalación Visualización. ¿Qué dominios has visitado que

tengan HSTS y HPKP?

Page 33: HSTS & HPKP: Los Batman y Robin de la seguridad web · HSTS & HPKP: Los Batman y Robin de la seguridad web Pablo González @pablogonzalezpe ... mecanismo de seguridad que se fuerza

33

Implementación en navegador

Chrome Fichero Json

C:\Users\[user]\AppData\Local\Google\Chrome\User Data\Default\TransportSecurity

Almacena un hash del dominio para mantener cierta confidencialidad. Dificulta que se conozca el dominio si solo se posee el hash.

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.

Page 34: HSTS & HPKP: Los Batman y Robin de la seguridad web · HSTS & HPKP: Los Batman y Robin de la seguridad web Pablo González @pablogonzalezpe ... mecanismo de seguridad que se fuerza

34

Implementación en navegador

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. 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 estacabecera.

chrome://net-internals/hsts#hsts

Page 35: HSTS & HPKP: Los Batman y Robin de la seguridad web · HSTS & HPKP: Los Batman y Robin de la seguridad web Pablo González @pablogonzalezpe ... mecanismo de seguridad que se fuerza

35

HSTS

Page 36: HSTS & HPKP: Los Batman y Robin de la seguridad web · HSTS & HPKP: Los Batman y Robin de la seguridad web Pablo González @pablogonzalezpe ... mecanismo de seguridad que se fuerza

36

¿Qué es HSTS?

HSTS (HTTP Strict Transport Security) es unmecanismo de seguridad que se fuerza desde elservidor web a los navegadores y que permiteasegurar que las conexiones que se realizan desdeel navegador al sitio web se realizarán siempre através de un canal seguro con TLS/SSL Si no se hiciera ese forzado, durante esa primera conexión un

atacante en medio podría hacer una manipulación de todo eltráfico entre el navegador y el atacante para que la conexión enese tramo fuera sin cifrar, y el cifrado se hiciera entre la máquinadel atacante y el servidor original que usa HTTPs

Es decir, sería (potencialmente) vulnerable a SSL Strip v1 (2009)

Page 37: HSTS & HPKP: Los Batman y Robin de la seguridad web · HSTS & HPKP: Los Batman y Robin de la seguridad web Pablo González @pablogonzalezpe ... mecanismo de seguridad que se fuerza

37

¿Qué es HSTS?

Muchos sitios, comúnmente utilizados, implementan HSTS en sus servidores (Paypal, Gmail, Twitter, Facebook, Outlook…)

El navegador debe soportarlo

Page 38: HSTS & HPKP: Los Batman y Robin de la seguridad web · HSTS & HPKP: Los Batman y Robin de la seguridad web Pablo González @pablogonzalezpe ... mecanismo de seguridad que se fuerza

38

¿Qué es HSTS?

Page 39: HSTS & HPKP: Los Batman y Robin de la seguridad web · HSTS & HPKP: Los Batman y Robin de la seguridad web Pablo González @pablogonzalezpe ... mecanismo de seguridad que se fuerza

39

¿Qué es HSTS?

El problema de la primera petición Quedaba el problema generado en la primera petición Cuando se instala un navegador, es decir, si nosotros

instalamos Mozilla Firefox o Google Chrome, la primera vez quehiciéramos una petición a gmail.com, esta petición iría por HTTPhasta ser redirigido al servidor por HTTPs con un redirect yrecibir la cabecera HSTS para establecer la política deseguridad

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

Page 40: HSTS & HPKP: Los Batman y Robin de la seguridad web · HSTS & HPKP: Los Batman y Robin de la seguridad web Pablo González @pablogonzalezpe ... mecanismo de seguridad que se fuerza

40

SSL Strip v2 (2014)

También conocido como SSL Strip + MITMf (framework) implementa el plugin de SSL

Strip +

Page 41: HSTS & HPKP: Los Batman y Robin de la seguridad web · HSTS & HPKP: Los Batman y Robin de la seguridad web Pablo González @pablogonzalezpe ... mecanismo de seguridad que se fuerza

41

SSL Strip v2 (2014)

Page 42: HSTS & HPKP: Los Batman y Robin de la seguridad web · HSTS & HPKP: Los Batman y Robin de la seguridad web Pablo González @pablogonzalezpe ... mecanismo de seguridad que se fuerza

42

SSL Strip v2 (2014)

Como se puede ver en la imagen, el objetivo esquitar la cabecera HSTS para que la víctima (sunavegador) 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é

Page 43: HSTS & HPKP: Los Batman y Robin de la seguridad web · HSTS & HPKP: Los Batman y Robin de la seguridad web Pablo González @pablogonzalezpe ... mecanismo de seguridad que se fuerza

43

Ataques de tiempo (NTP Protocol)

José Selvi

Si modificamos la hora de los equipos se caducan las entradas HSTS en el navegador

Ataque: Delorean

Page 44: HSTS & HPKP: Los Batman y Robin de la seguridad web · HSTS & HPKP: Los Batman y Robin de la seguridad web Pablo González @pablogonzalezpe ... mecanismo de seguridad que se fuerza

44

Ataques de tiempo (NTP Protocol)

Esquema: ARP Spoofing SSL Strip 2 Delorean: Interceptar peticiones NTP de las máquinas y

modificarlas (adelantar la hora varios años)□ Bypass HSTS

Page 45: HSTS & HPKP: Los Batman y Robin de la seguridad web · HSTS & HPKP: Los Batman y Robin de la seguridad web Pablo González @pablogonzalezpe ... mecanismo de seguridad que se fuerza

45

Ataques de tiempo (NTP Protocol)

Page 46: HSTS & HPKP: Los Batman y Robin de la seguridad web · HSTS & HPKP: Los Batman y Robin de la seguridad web Pablo González @pablogonzalezpe ... mecanismo de seguridad que se fuerza

46

Conclusiones

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.

Page 47: HSTS & HPKP: Los Batman y Robin de la seguridad web · HSTS & HPKP: Los Batman y Robin de la seguridad web Pablo González @pablogonzalezpe ... mecanismo de seguridad que se fuerza

Gracias porsu atención