Come posso testare SSLv3 sul recente sistema operativo Ubuntu?

2

Sto usando Ubuntu 16.04 sul mio client (laptop) e sembra che SSL v3 non sia presente sul mio sistema per testare il server remoto (zmap.io in questo esempio).

Domande correlate

Ci sono diverse domande che menzionano come verificare se un server continua a funzionare con SSL v3:

Test che NON hanno funzionato

  • ricciolo:

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

    Mi aspetto SSLv3, TLS handshake, Client hello nell'output.

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

    Mi aspetto routines:SSL3_READ_BYTES:sslv3 alert handshake nell'output.

  • 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
    

    Mi aspetto **SSLv3: No supported ciphers found** nell'output.

Che cosa fare?

Qualcuno sa come testare SSLv3 con Ubuntu 16.04 (o altre distribuzioni Linux senza SSLv3 abilitato in openssl)?

Il mio server in prova non è disponibile da Internet pubblico, il che significa che un servizio online non soddisfa le mie esigenze.

    
posta Yannick Clybouw 20.09.2016 - 17:31
fonte

2 risposte

2

Prova la build statica di openssl di TestSSL.sh

Il progetto TestSSL.sh è uno scanner SSL. E includono versioni statiche di OpenSSL deliberatamente indebolito con tutti i tipi di vecchi crittografati abilitati. Puoi utilizzare una delle loro build per testare SSLv3.

Ho provato questo sull'attuale Mint Live CD. E immagino che dovrebbe funzionare anche su Ubuntu.

Istruzioni complete / prova di concetto di seguito.

FYI: la versione di Linux che stavo usando

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

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

Ecco le build statiche

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

Definiamo l'alias "badopenssl" per una delle build statiche

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

Ora abbiamo due versioni di 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

Bootstrap un server di test 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'
-----

Si noti che regolare openssl NON consentirà SSLv3

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

... mentre a badopenssl non interessa

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

Esaminiamo questo. E non abbiamo nemmeno bisogno del parametro "-ssl3".

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

Il normale openssl NON si connetterà a 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:

... ma badopenssl si connetterà felicemente 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

Credits

risposta data 29.12.2016 - 11:31
fonte
0

SSLyze è uno strumento basato su Python open source in grado di enumerare crittografie e protocolli (e alcuni altri fattori di sicurezza TLS ). È facile da eseguire localmente dal tuo computer, il che lo rende utile per testare server che non sono esposti a Internet.

Usa un wrapper Python per OpenSSL, quindi probabilmente non può testare cose che non sono presenti nella tua libreria OpenSSL. Una vecchia libreria, o una vecchia compilata con i protocolli deboli, dovrebbe funzionare se non quella predefinita nel tuo sistema.

    
risposta data 20.09.2016 - 23:54
fonte

Leggi altre domande sui tag