¿Cómo puedo probar SSLv3 en un sistema operativo Ubuntu reciente?

2

Estoy usando Ubuntu 16.04 en mi cliente (computadora portátil) y parece que SSL v3 no está presente en mi sistema para probar el servidor remoto (zmap.io en este ejemplo).

Preguntas relacionadas

Hay varias preguntas que mencionan cómo probar si un servidor todavía tiene SSL v3:

Pruebas que NO funcionaron

  • rizo:

    $ curl --sslv3 https://zmap.io/
    curl: (35) gnutls_handshake() failed: Handshake failed
    

    Espero SSLv3, TLS handshake, Client hello en la salida.

  • openssl

    $ openssl s_client -ssl3 -connect zmap.io:443
    140396574262936:error:140A90C4:SSL routines:SSL_CTX_new:null ssl method passed:ssl_lib.c:1878:
    

    Espero routines:SSL3_READ_BYTES:sslv3 alert handshake en la salida.

  • nmap

    $ nmap --script ssl-enum-ciphers -p 443 zmap.io
    
    Starting Nmap 7.01 ( https://nmap.org ) at 2016-09-20 17:19 CEST
    Nmap scan report for zmap.io (141.212.120.90)
    Host is up (0.12s latency).
    PORT    STATE SERVICE
    443/tcp open  https
    | ssl-enum-ciphers: 
    |   TLSv1.0: 
    |     ciphers: 
    |       TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (secp256r1) - A
    |       TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (secp256r1) - A
    |       TLS_DHE_RSA_WITH_AES_128_CBC_SHA (dh 2048) - A
    |       TLS_DHE_RSA_WITH_AES_256_CBC_SHA (dh 2048) - A
    |     compressors: 
    |       NULL
    |     cipher preference: server
    |   TLSv1.1: 
    |     ciphers: 
    |       TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (secp256r1) - A
    |       TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (secp256r1) - A
    |       TLS_DHE_RSA_WITH_AES_128_CBC_SHA (dh 2048) - A
    |       TLS_DHE_RSA_WITH_AES_256_CBC_SHA (dh 2048) - A
    |     compressors: 
    |       NULL
    |     cipher preference: server
    |   TLSv1.2: 
    |     ciphers: 
    |       TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (secp256r1) - A
    |       TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (secp256r1) - A
    |       TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 (dh 2048) - A
    |       TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 (dh 2048) - A
    |       TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 (secp256r1) - A
    |       TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (secp256r1) - A
    |       TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 (secp256r1) - A
    |       TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (secp256r1) - A
    |       TLS_DHE_RSA_WITH_AES_128_CBC_SHA256 (dh 2048) - A
    |       TLS_DHE_RSA_WITH_AES_128_CBC_SHA (dh 2048) - A
    |       TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 (dh 2048) - A
    |       TLS_DHE_RSA_WITH_AES_256_CBC_SHA (dh 2048) - A
    |     compressors: 
    |       NULL
    |     cipher preference: server
    |_  least strength: A
    
    Nmap done: 1 IP address (1 host up) scanned in 10.57 seconds
    

    Espero **SSLv3: No supported ciphers found** en la salida.

¿Qué hacer?

¿Alguien sabe una forma de probar SSLv3 con Ubuntu 16.04 (u otras distribuciones de Linux sin SSLv3 habilitado en openssl)?

Mi servidor en prueba no está disponible en la Internet pública, lo que significa que un servicio en línea no está cumpliendo con mis necesidades.

    
pregunta Yannick Clybouw 20.09.2016 - 17:31
fuente

2 respuestas

2

Prueba la compilación estática openssl de TestSSL.sh

El proyecto TestSSL.sh es un escáner SSL. E incluyen versiones estáticas de OpenSSL deliberadamente debilitado con todo tipo de criptografía antigua habilitada. Puedes usar una de sus versiones para probar SSLv3.

Probé esto en el actual CD de Mint Live. Y supongo que también debería funcionar en tu Ubuntu.

Instrucciones completas / prueba de concepto a continuación.

FYI: La versión de Linux que estaba usando

mint@mint ~ $ cat /etc/lsb-release
DISTRIB_ID=LinuxMint
DISTRIB_RELEASE=18.1
DISTRIB_CODENAME=serena
DISTRIB_DESCRIPTION="Linux Mint 18.1 Serena"

Obtener testssl.sh

mint@mint ~ $ git clone https://github.com/drwetter/testssl.sh --depth 1
Cloning into 'testssl.sh'...
remote: Counting objects: 48, done.
remote: Compressing objects: 100% (46/46), done.
remote: Total 48 (delta 8), reused 17 (delta 2), pack-reused 0
Unpacking objects: 100% (48/48), done.
Checking connectivity... done.

Aquí están las compilaciones estáticas

mint@mint ~ $ file testssl.sh/bin/* | grep -i linux | grep -i static
testssl.sh/bin/openssl.Linux.i686:             ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, for GNU/Linux 2.6.24, BuildID[sha1]=688fd66da53e4351659a0580cf9f5605deb16c9e, stripped
testssl.sh/bin/openssl.Linux.x86_64:           ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, for GNU/Linux 2.6.24, BuildID[sha1]=2ac27c3998817aa9145f19a723e99e8a9191d0da, stripped

Definamos el alias "badopenssl" para una de las compilaciones estáticas

mint@mint ~ $ alias badopenssl=testssl.sh/bin/openssl.Linux.x86_64

Ahora tenemos dos versiones de openssl:

mint@mint ~ $ openssl version
OpenSSL 1.0.2g  1 Mar 2016

mint@mint ~ $ sha256sum $(which openssl)
efed90fc204144946c011c451e61e3c420756014c2252cfad493ec0896cb4e34  /usr/bin/openssl


mint@mint ~ $ badopenssl version
OpenSSL 1.0.2-chacha (1.0.2i-dev)

mint@mint ~ $ sha256sum testssl.sh/bin/openssl.Linux.x86_64
a11b8e25992030059b3ce3a5c38c432d9a33c05e8e4581996d19c52a57cb94ab  testssl.sh/bin/openssl.Linux.x86_64

Arranque un servidor de prueba SSL

mint@mint ~ $ openssl req -x509 -nodes -days 999 -subj '/CN=mydemoserver' -newkey rsa:2048 -keyout server.pem -out server.pem
Generating a 2048 bit RSA private key
.........................................+++
..................................+++
writing new private key to 'server.pem'
-----

Tenga en cuenta que openssl regular NO permitirá SSLv3

mint@mint ~ $ openssl s_server -ssl3
140199887697560:error:140A90C4:SSL routines:SSL_CTX_new:null ssl method passed:ssl_lib.c:1878:

... mientras que a badopenssl no le importa

mint@mint ~ $ badopenssl s_server -ssl3
Using default temp DH parameters
ACCEPT
^C

Hagamos un segundo plano de esto. Y ni siquiera necesitamos el parámetro "-ssl3".

mint@mint ~ $ badopenssl s_server 2>&1 >/dev/null &
[1] 8136

El openssl regular NO se conectará con SSLv3:

mint@mint ~ $ openssl s_client -ssl3 -connect localhost:4433
140415485314712:error:140A90C4:SSL routines:SSL_CTX_new:null ssl method passed:ssl_lib.c:1878:

... pero badopenssl se conectará felizmente con SSLv3:

mint@mint ~ $ badopenssl s_client -ssl3 -connect localhost:4433 2>&1 | grep -iE 'Protocol|^New'
New, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES256-SHA
    Protocol  : SSLv3
^C

Créditos

respondido por el StackzOfZtuff 29.12.2016 - 11:31
fuente
0

SSLyze es una herramienta de código abierto basada en Python que puede enumerar cifrados y protocolos (y algunos otros factores de seguridad TLS ). Es fácil de ejecutar localmente desde su propia máquina, lo que lo hace útil para probar servidores que no están expuestos a Internet.

Utiliza un envoltorio de Python para OpenSSL, por lo que probablemente no pueda probar las cosas que no están presentes en su biblioteca OpenSSL. Una biblioteca más antigua, o una compilada nuevamente con los protocolos débiles, debería funcionar si la predeterminada en su sistema no lo hace.

    
respondido por el CBHacking 20.09.2016 - 23:54
fuente

Lea otras preguntas en las etiquetas