Le protocole SSL est largement utilisé et il n'est plus besoin aujourd'hui de le présenter. Mais dans la pratique, il nous est indispensable pour sécuriser les communications par exemple. Aussi, lors de l'audit comme celui d'un site WEB en HTTPS, il nous sera très utile de communiquer via ce protocole pour effectuer nos tests. Un outil va nous servir de couteau-suisse ici, il s'agit de SslNetCat.
Pour la suite de nos travaux pratiques, nous commençons par télécharger le script SslNetCat disponible ici. Puisqu'il s'agit d'un script perl, soyons explicite et il sera enregistré ici en tant que scnc.pl. Il faut le télécharger sur une machine cliente ET une machine serveur.
Pour exécuter le script perl, nous aurons besoin de modules perl. Attention, la liste peut être différente pour votre machine :
Concernant le contexte, nous avons donc besoin de deux machines. L'OS est indépendant, le tout est que vous puissiez exécuter le script perl téléchargé. Dans notre cas, nous aurons :
1 - Créer un tunnel SSL pour sécuriser ses communications
NB : Aller directement à la partie 1.2 si vous utilisez les certificats proposés par GomoR.
1.1 - Création des certificats
1.1.1 - Etablissement de la CA
Nous utilisons openssl (que vous devez avoir mis à jour si vous êtes sous Debian !!! cf. vulnérabilité critique). Aussi, nous devons déterminer une autorité de certification (dénommée ensuite CA) pour signer le certificat mais ici, il s'agira d'un certificat auto-signé, quand bien même cela n'a aucune valeur d'un point de vue sécurité, le principe reste identique.
Nous obtenons deux fichiers : ca-msblog.crt (certificat) et ca-msblog.key (clé privée) de la CA.
1.1.2 - Génération du certificat côté serveur
Puisque le certificat sera signé localement par la CA, nous n'utilisons pas les attributs supplémentaires ("extra"). Deux nouveaux fichiers sont générés : server-msblog.key et server-msblog.csr. Envoyer ce dernier au CA s'il ne s'agit pas de la même machine.
Commençons par préparer le magasin de certificats pour la CA :
Trouvez la ligne commençant par dir et modifiez ./demoCA par ./msblogCA.
Puis créons le certificat serveur lui-même :
Acceptez le certificat en tapant 'y' quand cela est demandé (deux fois) :
1.2 - Créer un tunnel de communication chiffré
1.2.1 Mettre le serveur en écoute sur le port 12345 et rediriger le trafic sur le port 80
12.2 Lancer la connexion du client vers le serveur
2 - Audit d'un serveur Web en HTTPS
Il s'agit ici de faire de notre client un proxy SSL qui nous servira à auditer le serveur Web.
2.1 - Préparation
Nous avons besoin d'un certificat et d'une clé privée pour ce client. Ces deux éléments seront générés de la même manière que nous l'avons fait pour le serveur précédemment (cf. 1.1.2). Ainsi, nous obtenons client-msblog.crt et client-msblog.key.
2.2 - Tests pour l'audit
Pour commencer l'audit, il suffit de se connecter (sur le client avec serveur audité, 192.168.0.10) :
NB : il faudra retourner sur la "machine-proxy", entrer éventuellement la passphrase.
Puis de lancer nos commandes (sur le client toujours - exemple) :
De même, utiliser l'adresse loopback dans les outils utilisés pour l'audit du serveur HTTPS.
Pour exécuter le script perl, nous aurons besoin de modules perl. Attention, la liste peut être différente pour votre machine :
# perl -MCPAN -e 'install "Net::SSLeay"'
# perl -MCPAN -e 'install "IO::Socket::SSL"'
# perl -MCPAN -e 'install "Net::Telnet"'
# perl -MCPAN -e 'install "IO::Socket::INET6"'
Concernant le contexte, nous avons donc besoin de deux machines. L'OS est indépendant, le tout est que vous puissiez exécuter le script perl téléchargé. Dans notre cas, nous aurons :
- Une machine serveur sous Linux, 192.168.0.10 (valeur modifiée) ;
- Une machine cliente sous Linux, 192.168.0.20 (valeur modifiée) ;
1 - Créer un tunnel SSL pour sécuriser ses communications
NB : Aller directement à la partie 1.2 si vous utilisez les certificats proposés par GomoR.
1.1 - Création des certificats
1.1.1 - Etablissement de la CA
Nous utilisons openssl (que vous devez avoir mis à jour si vous êtes sous Debian !!! cf. vulnérabilité critique). Aussi, nous devons déterminer une autorité de certification (dénommée ensuite CA) pour signer le certificat mais ici, il s'agira d'un certificat auto-signé, quand bien même cela n'a aucune valeur d'un point de vue sécurité, le principe reste identique.
# openssl req -new -x509 -keyout ca-msblog.key -out ca-msblog.crt
Nous obtenons deux fichiers : ca-msblog.crt (certificat) et ca-msblog.key (clé privée) de la CA.
1.1.2 - Génération du certificat côté serveur
# openssl req -new -keyout server-msblog.key -out server-msblog.csr
Puisque le certificat sera signé localement par la CA, nous n'utilisons pas les attributs supplémentaires ("extra"). Deux nouveaux fichiers sont générés : server-msblog.key et server-msblog.csr. Envoyer ce dernier au CA s'il ne s'agit pas de la même machine.
Commençons par préparer le magasin de certificats pour la CA :
# vi /usr/lib/ssl/openssl.conf
Trouvez la ligne commençant par dir et modifiez ./demoCA par ./msblogCA.
# mkdir ./msblogCA
# cd msblogCA
# touch index.txt
# mkdir newcerts
# echo "01" > serial
Puis créons le certificat serveur lui-même :
# cd ..# openssl ca -cert ca-msblog.crt -keyfile ca-msblog.key -out server-msblog.crt -in server-msblog.csr
Acceptez le certificat en tapant 'y' quand cela est demandé (deux fois) :
Nous venons de créer le certificat server-msblog.crt. Nous avons tous les fichiers nécessaires ;)
1.2.1 Mettre le serveur en écoute sur le port 12345 et rediriger le trafic sur le port 80
# perl scnc.pl -vc -a ca-msblog.crt -f server-msblog.crt -k server-msblog.key -p 12345 -r localhost:80
12.2 Lancer la connexion du client vers le serveur
# perl scnc.pl -v -s localhost -p 6789 -r server:12345::ssl
2 - Audit d'un serveur Web en HTTPS
Il s'agit ici de faire de notre client un proxy SSL qui nous servira à auditer le serveur Web.
2.1 - Préparation
Nous avons besoin d'un certificat et d'une clé privée pour ce client. Ces deux éléments seront générés de la même manière que nous l'avons fait pour le serveur précédemment (cf. 1.1.2). Ainsi, nous obtenons client-msblog.crt et client-msblog.key.
2.2 - Tests pour l'audit
Pour commencer l'audit, il suffit de se connecter (sur le client avec serveur audité, 192.168.0.10) :
# perl scnc.pl -v -r 192.168.0.10:443::ssl -a ca2-msblog.crt -f client-msblog.crt -k client-msblog.key -s localhost -p 1234
NB : il faudra retourner sur la "machine-proxy", entrer éventuellement la passphrase.
Puis de lancer nos commandes (sur le client toujours - exemple) :
# perl scnc.pl -v localhost 1234
# GET / HTTP/1.0
De même, utiliser l'adresse loopback dans les outils utilisés pour l'audit du serveur HTTPS.
Aucun commentaire:
Enregistrer un commentaire