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.