Identificación del modo de cifrado en TLS

3

Estoy tratando de verificar mi servidor privado para el ataque de poodle TLS. En el artículo de Microsoft dice:

"TLS 1.0, TLS 1.1, TLS 1.2 y todas las suites de cifrado que no usan el modo CBC no se ven afectadas"

¿Cómo puedo identificar el modo de cifrado que utiliza TLS?

    
pregunta zargor 01.02.2016 - 13:33
fuente

2 respuestas

4
  

¿Cómo puedo identificar el modo de cifrado que utiliza TLS?

Hay muchas maneras de enumerar sus suites de cifrado y protocolos habilitados en su servidor. Aquí hay soluciones que están basadas en evaluaciones o scripts que tienen pocos gastos generales y son ligeros en los requisitos técnicos.

Si está disponible externamente:

Pruebe la prueba de SSL Labs aquí: enlace . Tienen todas sus necesidades de suites de cifrado, así como orientación para cualquier problema que puedan encontrar en su configuración más allá de los hallazgos de CBC.

Si no está disponible externamente:

enlace proporciona una buena secuencia de comandos de línea de comandos para enumerar, pero no proporciona orientación.

enlace está basado en bash y proporciona orientación similar a SSL Labs pero en la línea de comandos.

    
respondido por el Iancnorden 01.02.2016 - 14:35
fuente
1

Para consultar sus suites de cifrado fuera de línea, consulte la respuesta de @ lancnorden

Para probar las vulnerabilidades de POODLE en particular, sigue leyendo:

El artículo en el OP de Microsoft que están leyendo parece incorrecto o antiguo; Poodle también puede atacar TLS 1.0 y 1.1 .

Puede seguir algunos de los pasos en la choresheet manual de Exploresecurity para buscar POODLE.

Para el caso de SSLv3 POODLE, simplemente no habilites SSLv3 en absoluto.

  

openssl s_client -ssl3 -connect host: puerto

     

Resultado seguro

     

¡No se conecta!

Si has deshabilitado TLSv1.0 y TLSv1.1, y solo permites TLSv1.2, usa el comando openssl anterior, con las marcas -tls1 y -tls1_1 en lugar de -ssl3 (y -tls1_2, que deberían conectarse).

Si ha habilitado uno o ambos TLSv1.0 y / o TLSv1.1, las pruebas mucho más difíciles de TLS 1.0 y 1.1 POODLE se enumeran en Publicación por separado en ExploreSecurity.com , aunque parece que SSLLabs.com prueba es mejor.

  

Cambios en tlslite

     

Parecía un poco loco encajar el proyecto original ya que mis cambios eran pequeños. También pensé que trabajar con los cambios aquí puede ser útil para cualquier otra persona que quiera hacer lo mismo.

     

Para empezar, necesitaba indicar a tlslite que quería enviar mensajes TLS con un relleno no válido. Con la clase TLSConnection, las cosas pasan con tlslite, así que cambié la forma en que se creó la instancia. TLSConnection hereda de TLSRecordLayer, que es donde vive el código de relleno, por lo que también fue necesario cambiarlo. Dentro de la carpeta "tlslite" realicé los siguientes cambios (obviamente, los números de línea dependerán de la versión, así que también agregué el código original; mi versión era 0.4.8):

     

tlsconnection.py   La línea 52 era:   def init (auto, calcetín):   Ahora:   def init (self, sock, check_poodle_tls = False):

     

ahora puedo indicar si quiero o no realizar la prueba

     

si ya tiene tlslite, puede cambiarlo de forma segura porque check_poodle_tls tiene el valor predeterminado como False, por lo que es compatible con cualquier código existente que utilice tlslite

     

La línea 61 era:   TLSRecordLayer. init (auto, calcetín)   Ahora:   TLSRecordLayer. init (self, sock, check_poodle_tls)

     

Necesito pasar esa señal al padre

     

tlsrecordlayer.py   La línea 102 era:   def init (auto, calcetín):   Ahora:   def init (self, sock, check_poodle_tls):

     

Después de la línea 103 self.sock = sock agregó una nueva línea:   self.check_poodle_tls = check_poodle_tls

     

Después de la línea 600 paddingBytes = bytearray ([paddingLength] * (paddingLength + 1)) agregó nuevas líneas:   si self.check_poodle_tls == True:   paddingBytes = bytearray (x ^ 42 para x en paddingBytes [0: -1])   paddingBytes.append (paddingLength)

     

cambia todos, pero el último de los bytes de relleno para que sea inválido (solo XOR con 42, la respuesta a todo)

     

haga que el último byte de relleno sea válido = el número de bytes de relleno

     

Y eso es todo! Recuerde, como se trata de Python, las pestañas son importantes y el nuevo código debe alinearse correctamente.

    
respondido por el Anti-weakpasswords 22.02.2016 - 04:16
fuente

Lea otras preguntas en las etiquetas