vendredi 19 décembre 2014

Support de SSLv2 dans sslscan (sous Linux)

Sslscan c'est beau et magique, mais depuis que les distributions GNU/Linux packagent des versions d'OpenSSL sans support sslv2, une partie des fonctionnalités de sslscan ne fonctionnent plus.
Evidemment, Internet regorge de tutos expliquant comment recompiler et packager la libssl sous diverses distributions Linux de warlordz (j'ai rien contre Kali, au contraire) pour ajouter le support sslv2 et recompiler sslscan.
Sur mon laptop, je n'utilise pas Kali (enfin si, dans une VM), j'ai juste un dossier dans lequel j'ai tous mes outils compilés par mes soins, et généralement plus ou moins up2date à la dernière version du repository git/svn/etc. Voici comment je me suis démerdé. L'avantage c'est que le reste de mes applis n'utilise pas une version de la libssl supportant SSLv2.

$ cd bordel/
$ wget https://www.openssl.org/source/openssl-1.0.1j.tar.gz
$ tar -xzf openssl-1.0.1j.tar.gz
$ cd openssl-1.0.1j/
$ ./config
$ make
$ cd ..
$ git clone https://github.com/rbsec/sslscan.git
$ cd sslscan/
$ gcc -o sslscan sslscan.c ../openssl-1.0.1j/libssl.a ../openssl-1.0.1j/libcrypto.a -I ../openssl-1.0.1j/include/ -DVERSION=\"1.9.8-rbsec\" -ldl

Ouais bon le coup du -DVERSION c'est parce que le Makefile l'ajoute à la compilation, et vu qu'ici on compile direct comme des gorets ...
Le reste c'est juste la compilation de la dernière version d'OpenSSL (en lib statique, le comportement par défaut) et la compilation en linkant sslscan avec les versions statiques de la libssl et la libcrypto. Comme ça pas de dépendance à cette libssl (sinon on peut aussi compiler OpenSSL en lib dynamique, suffit de "./config shared", compiler avec les LDFLAGS qui vont bien et modifier le LD_LIBRARY_PATH à chaque utilisation de sslscan ... assez lourd quoi).

Ensuite on a plus qu'à lancer notre sslscan :

meik@eleet ~bordel/sslscan $ ./sslscan --ssl2 xxx.xxx.xxx.xxx:443
Version: 1.9.8-rbsec
OpenSSL 1.0.1j 15 Oct 2014

Testing SSL server xxx.xxx.xxx.xxx on port 443

  TLS renegotiation:
Secure session renegotiation supported

  TLS Compression:
Compression disabled

  Heartbleed:
All TLS protocols disabled, cannot check for heartbleed.

  Supported Server Cipher(s):
Accepted  SSLv2    128 bits  RC4-MD5
Accepted  SSLv2    112 bits  DES-CBC3-MD5

  Preferred Server Cipher(s):
SSLv2    128 bits  RC4-MD5

  SSL Certificate:
Signature Algorithm: sha1WithRSAEncryption
RSA Key Strength: 2048

Maintenant plus d'excuses.

Aucun commentaire: