¿Herramientas para probar si hay BESTIA / CRIMEN que NO ESTÁN basadas en Internet?

18

Tenemos cada vez más presión para identificar y remediar cualquier configuración de servidor HTTPS que sea vulnerable a BEAST (CBC) y CRIME (compresión). Necesitamos reparar los servidores a los que se puede acceder a través de Internet, los servidores a los que solo se puede acceder con direcciones IP limitadas de los socios a través de Internet y los servidores que son internos.

Los servidores

disponibles para Internet en general pueden analizarse utilizando el servicio web Laboratorios de SSL de Qualys . Brinda una clara indicación de la vulnerabilidad de BESTIA y, presumiblemente, la configuración de "Compresión" que no es una mala señal hoy en día se relaciona con el CRIMEN y comenzará a generar una alerta en un futuro próximo. Sin embargo, esto no ayuda con los sitios que generalmente no están disponibles a través de Internet.

Puedo encontrar todo tipo de información sobre cómo probar cosas a mano, por ejemplo, discusión de cifrados para BEAST y openssl s_client recetas para probar la compresión . Sin embargo, en mi vejez me gustan más las herramientas, como SSL Labs, que simplemente me dicen que, en lugar de tener que descifrar las diversas cadenas de cifrado openssl ("No CBC, a menos que sea TLS 1.1+, en cuyo caso es CBC bien, y no olvides el martes ").

También me doy cuenta de que no puedo obtener un resultado que indique la compresión mediante el uso de varios encabezados HTTP de código manual openssl + en un servidor web que SSL Labs dice que tiene la compresión habilitada. ¿A quién creo? Me inclino a confiar en las herramientas más que en las recetas, ya que las herramientas generalmente se basan en una receta que luego se prueba en una amplia variedad de configuraciones y arreglos, mientras que las recetas a menudo funcionaban para alguien, en algún lugar, en algún momento.

Entonces, lo que busco es una herramienta de línea de comandos como sslscan que puedo ejecutar contra todos mis servidores, independientemente de su disponibilidad a Internet en general. (Sí, me doy cuenta de que sslscan imprime los cifrados, que puedo interpretar para determinar la vulnerabilidad de BESTIA, pero quiero un sistema experto (¡o simplemente conocedor!) Que sea menos falible que yo para ver eso salida y hacer la llamada).

    
pregunta gowenfawr 19.09.2012 - 16:03
fuente

1 respuesta

17

Editar (2012/09/23): Pregunta y recibirás . TestSSLServer es una herramienta simple de línea de comandos que escribí este fin de semana; obtiene de un servidor SSL / TLS determinado la lista de conjuntos de cifrado admitidos, las versiones de protocolo y el soporte de Desinflado de nivel TLS. Luego proporciona un resumen de la fuerza de encriptación y la vulnerabilidad a los ataques de BESTIA y CRIMEN. Está escrito en Java y debería funcionar "en todas partes" (aunque solo lo probé desde un cliente Linux / ppc).

(Tenga en cuenta que BEAST y CRIME se dirigen al cliente, no al servidor. Estamos hablando de los pasos que el servidor puede tomar para "proteger" al cliente al no permitirle usar combinaciones de funciones vulnerables).

Respuesta original:

Para la compresión, hay dos lugares donde se puede activar; La publicación del blog que vinculas para hablar sobre el lugar equivocado, de la que no se trata el ataque por CRIMEN, es no .

CRIME utiliza la compresión que se encuentra en el nivel SSL / TLS: una compresión negociada durante el protocolo de enlace, y que se aplica a cada byte que se envía dentro del túnel SSL / TLS. En un contexto HTTPS, esta compresión funciona tanto en los cuerpos de solicitud / respuesta HTTP como en los encabezados de HTTP (incluidas las cookies, que es el punto de CRIME). La compresión que se produce en el nivel HTTP es la que se especifica con los encabezados HTTP (como "Aceptar-Codificación") y que se aplica a la solicitud / respuesta Sólo cuerpos . Esa compresión no cubre las cookies (que se encuentran en los encabezados) y, por lo tanto, es, presumiblemente, sin CRIME.

(Esto no excluye la existencia teórica de un ataque tipo CRIME que abusa de la compresión a nivel de HTTP en los cuerpos, pero requeriría un cuerpo de solicitud o respuesta que contenga datos confidenciales y datos que el atacante pueda elegir. )

Para probar el soporte de compresión de un servidor, use esto:

openssl s_client -connect www.theservername.com:443

Esto producirá una salida que contiene el certificado del servidor y termina con un bloque de texto que se ve así:

---
New, TLSv1/SSLv3, Cipher is DHE-RSA-AES256-SHA
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: zlib compression
Expansion: zlib compression
SSL-Session:
    Protocol  : TLSv1.1
    Cipher    : DHE-RSA-AES256-SHA
    Session-ID: 4B4110C44117BA0382CA6C3903A8185E0C156B253073E66B2D44F04B83611633
    Session-ID-ctx: 
    Master-Key: C11D38EE064BE6549364D54BD60E216E367A52825E62FFCCBEFC4AC8DB97D07BD72B7355CB268B91E3AD176EB69446AA
    Key-Arg   : None
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    TLS session ticket lifetime hint: 300 (seconds)
    TLS session ticket:
    0000 - 4c f8 be c1 d1 0f cf 03-4a 99 89 8b 75 28 97 3c   L.......J...u(.<
    0010 - 3e cf 2a b8 0f f0 d1 b4-7d c7 83 16 03 2c f0 8a   >.*.....}....,..
    0020 - 1b a7 57 be dd 1b be a3-14 eb cf 34 42 99 e0 5a   ..W........4B..Z
    0030 - c5 96 43 da c7 d9 dd da-ed 4c e2 7c eb c1 8b a8   ..C......L.|....
    0040 - ce 73 c8 22 43 10 88 d6-d2 f2 df 91 9d 47 71 70   .s."C........Gqp
    0050 - 77 bb c0 55 cd 46 34 3b-44 26 36 a1 7f 37 64 cd   w..U.F4;D&6..7d.
    0060 - 72 64 66 89 cc f6 8b 23-17 9b 9a 91 23 6a f7 c2   rdf....#....#j..
    0070 - 8a e2 8c 10 85 8f b7 6c-60 d2 b6 72 b3 13 98 8b   .......l'..r....
    0080 - 75 da 68 cc 2a ca 4f fb-ec 4c f2 db 91 4a f7 2a   u.h.*.O..L...J.*
    0090 - 40 eb 92 44 c7 7a f7 84-ef 65 ea 2c 96 aa c5 ba   @..D.z...e.,....
    00a0 - c3 b5 76 6d 52 03 85 c9-27 53 a2 a4 70 54 06 37   ..vmR...'S..pT.7
    00b0 - 82 3e 09 93 21 6d f6 e7-eb cf c3 5e 26 19 e1 a2   .>..!m.....^&...

    Compression: 1 (zlib compression)
    Start Time: 1348073749
    Timeout   : 300 (sec)
    Verify return code: 20 (unable to get local issuer certificate)
---

Esto se hizo en un servidor que admite compresión de nivel TLS. Verá " zlib compression " en tres lugares: De hecho, la compresión es compatible con este servidor. Tenga en cuenta que no hay un solo signo de un encabezado HTTP en ninguna parte! Simplemente escriba el comando openssl y observe la salida. No es necesario ingresar un encabezado HTTP.

En un servidor que NO admite la compresión de nivel TLS, las cosas se verán así:

---
New, TLSv1/SSLv3, Cipher is ECDHE-RSA-RC4-SHA
Server public key is 1024 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
SSL-Session:
    Protocol  : TLSv1.1
    Cipher    : ECDHE-RSA-RC4-SHA
    Session-ID: 59D609F13BEE9157D26318ADB12F4CF219EF7A1BC2C87AF84AD66773303F90A6
    Session-ID-ctx: 
    Master-Key: 1DD9E0C306A86A7EC823561EF0B1F47B63E70B43D57F3B3FBB3D389863F540E3B4CCE5DE454E6D19811C24001E95777A
    Key-Arg   : None
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    TLS session ticket lifetime hint: 100800 (seconds)
    TLS session ticket:
    0000 - de c6 06 25 10 c9 22 38-c4 1f 82 d7 c7 b5 62 08   ...%.."8......b.
    0010 - 01 c0 e1 26 e2 64 8a 62-99 74 85 bb 60 bf a8 e0   ...&.d.b.t..'...
    0020 - 65 08 74 89 d5 62 45 e9-b4 f0 80 4e f7 bd ff d5   e.t..bE....N....
    0030 - 6a 12 3b 90 97 ca 7a f4-d1 1b e1 0d 89 d2 52 49   j.;...z.......RI
    0040 - 11 fe 92 82 94 70 ba 4b-5e 81 ff f2 12 62 f4 79   .....p.K^....b.y
    0050 - 11 eb 74 7a d6 ee 10 4e-b5 6d 50 8d 1c 1c 8e 57   ..tz...N.mP....W
    0060 - 19 46 67 91 89 2e 45 28-2e 49 94 8e c8 32 28 bf   .Fg...E(.I...2(.
    0070 - 7b 73 82 ab 63 c4 b7 8f-5c b3 1b 5c 74 59 3c 8d   {s..c...\..\tY<.
    0080 - ec 8a 6a 3a 28 c2 82 c1-d7 d5 4f ec 7e 79 e7 57   ..j:(.....O.~y.W
    0090 - 4a f9 45 e7                                       J.E.

    Start Time: 1348074257
    Timeout   : 300 (sec)
    Verify return code: 20 (unable to get local issuer certificate)
---

El " Compression: NONE " muestra que este segundo servidor efectivamente rechaza el uso de la compresión de nivel TLS.

Tenga en cuenta también que el primer servidor eligió DHE-RSA-AES256-SHA como conjunto de cifrado, es decir, un conjunto que utiliza el AES de cifrado de bloque en el modo CBC. Este primer servidor es potencialmente vulnerable a BESTIA y CRIMEN. El segundo servidor seleccionó ECDHE-RSA-RC4-SHA , que es inmune a la BESTIA.

(El primer servidor es el mío; ya que no uso cookies en absoluto, no estoy nervioso por los ataques de robo de cookies. El segundo servidor es www.google.com .)

Si encuentro el tiempo, escribiré una herramienta que proporcione tales resultados más fácilmente. No es necesario hacer un protocolo de enlace SSL / TLS completo, solo enviar un ClientHello y ver el ServerHello que regresa.

    
respondido por el Thomas Pornin 19.09.2012 - 19:14
fuente

Lea otras preguntas en las etiquetas