TP sysres IMA5sc 2020/2021 G14
Sommaire
TP PRA - Lukas Fauchois & Guillaume Rouillé
Groupe | Domaine | Distribution | VLAN privé | IP (VLAN333) | Netmask (VLAN333) | Gateway (VLAN333) | Gateway 6509-E (VLAN333) | Gateway 9200 (VLAN333) | IP (publique) |
---|---|---|---|---|---|---|---|---|---|
Groupe 14 | oronge.site | Debian 10 Buster | 314 | 100.64.0.16 | 255.255.255.0 | 100.64.0.254 | 100.64.0.1 | 100.64.0.2 | 193.48.57.176 |
Installation réseau
Schéma global
Notre groupe s'est occupé de l'installation du réseau. Nous avons mis en place les différentes liaisons physiques entre les serveurs et routeurs.
Nous avons obtenu le schéma de connexion ci-contre. Ensuite, nous avons paramétré les routeurs pour permettre la connexion avec les machines virtuelles de chaque groupe.
Paramétrage des VLANs
6509-E
Dans un premier temps, on paramètre le routeur 6509-E placé en E306. Nous avons créé le VLAN 131 pour nous connecter au routeur de l'école.
Nous lui avons attribué une adresse routée et un port sur lequel est branchée la fibre venant du routeur de l'école.
enable conf t vlan 131 name internet exit int vlan 131 no shut ip address 192.168.222.12 255.255.255.248 exit int te6/4 no shut switchport mode access switchport access vlan 131 exit exit write
Ensuite, nous avons créé le VLAN 333. Ce VLAN permet l'accès au routeur 6509-E depuis les VMs.
Il est donc connecté au port Te5/5 (10G) sur lequel est branchée un fibre venant du serveur capbreton.
De plus, étant donné que nous n'avons pas réussi à mettre en place un NAT en plus de l'OSPF, nous avons dû utiliser des adresses routées pour le routeur et les VMs.
enable conf t vlan 333 name vm-ima5sc exit int vlan 333 no shut ip address 193.48.57.161 255.255.255.224 exit int te5/5 no shut switchport mode access switchport access vlan 333 exit exit write
9200
Pour mettre en place une redondance, nous utilisons deux routeurs. Sur ce deuxième routeur, nous avons également créé le VLAN 131 pour nous connecter au routeur de l'école.
Nous lui avons attribué une adresse routée et un port sur lequel est branchée la fibre venant du routeur de l'école.
enable conf t vlan 131 name internet-ima5sc exit int vlan 131 no shut ip address 192.168.222.13 255.255.255.248 exit int Gi1/0/1 no shut switchport mode access switchport access vlan 131 exit exit write
Ensuite, nous avons créé le VLAN 333. Ce VLAN permet l'accès au routeur 9200 depuis les VMs.
Il est donc connecté au port Te1/1/3 (10G) sur lequel est branchée un fibre venant du serveur capbreton.
enable conf t vlan 333 name vm-ima5sc exit int vlan 333 no shut ip address 193.48.57.162 255.255.255.224 exit int te1/1/3 no shut switchport mode access switchport access vlan 333 exit exit write
Paramétrage de l'OSPF
Pour permettre la transmission de la table de routage de nos routeurs aux autres routeurs utilisés, et pour récupérer leurs tables, nous avons mis en place l'OSPF.
Étant donné le problème avec le NAT (expliqué dans la section suivante), nous utilisons des adresses routées, donc cette partie n'est pas utile pour notre TP pour l'instant.
6509-E
router ospf 1 # un numéro de processus router-id 10.60.0.1 # un id pour le routeur (plus petite adresse disponible) log-adjacency-changes summary-address 193.48.57.176 255.255.255.240 # réseau routé, que l'on souhaite diffuser aux voisins summary-address 100.64.0.0 255.240.0.0 not-advertise # réseau local, sur lequel se trouvent les VMs, que l'on ne souhaite pas diffuser aux voisins summary-address 10.0.0.0 255.0.0.0 not-advertise # réseau local, que l'on ne souhaite pas diffuser aux voisins redistribute connected subnets # autorise la diffusion des routes connectées redistribute static subnets # autorise la diffusion des routes statiques network 192.168.222.8 0.0.0.7 area 2 # domaine de diffusion OSPF
9200
router ospf 1 router-id 10.60.0.2 # on change simplement l'id du routeur par rapport au 6509-E log-adjacency-changes summary-address 193.48.57.176 255.255.255.240 summary-address 100.64.0.0 255.240.0.0 not-advertise summary-address 10.0.0.0 255.0.0.0 not-advertise redistribute connected subnets redistribute static subnets network 192.168.222.8 0.0.0.7 area 2
Paramétrage du NAT
Afin de connecter notre réseau privé sur lequel se trouvent les VMs, nous avons besoin que nos routeurs fassent du NAT.
Nous souhaitons que notre réseau 100.64.0.0 soit transposé dans le réseau 193.48.15.176.
Nous avons vu dans la partie OSPF que le réseau 193.48.57.176 été partagé, il correspond donc aux IP publiques (chacune correspond à une IP locale privée).
enable configure terminal ip nat inside source static network 100.64.0.16 193.48.57.176 /28 int vlan 333 ip nat inside exit int vlan 131 ip nat outside exit exit write
Il faut ajouter : copy running-config startup-config
pour enregistrer les modifications du NAT. (Configure Interfaces Cisco, Configure NAT Cisco)
Problèmes rencontrés
Lors de la mise en place des différents VLANs, nous avons rencontré plusieurs problèmes. Nous décrivons ici comment nous les avons résolu.
Interface en mode bloquée
Lors de l'utilisation de la commande sh spanning-tree vlan xxx
, nous avons des informations sur les différents ports du VLAN souhaité.
Sur le routeur 6509-E, nous avions le port Te5/5 bloqué (BLK) sur le VLAN 333.
Pour résoudre ce problème, nous avons relancer ce port en faisait un shut
puis un no shut
.
Le port est alors passé de l'état BLK (block) à LST (listen), puis LRN (learn), et enfin FWD (forward), l'état recherché.
Spanning tree instance(s) for vlan 333 does no exist
Pour résoudre ce problème, nous avons changé le mode du spanning-tree avec la commande spanning-tree mode mst
OSPF & NAT
L'OSPF mis en place fonctionne correctement seul. La translation d'adresses IP privée vers publique du NAT semble fonctionnait car la commande sh ip nat translations
affiche bien le résultat souhaité. Cependant, l'association des 2 systèmes ne fonctionne pas correctement. Nous avons tenté de résoudre le problème de deux façons, sans succès.
- Interface loopback
enable conf t int loopback 0 ip ospf network point-to-point ip address 193.48.57.190 255.255.255.240 exit exit write
Nous avons précisé à l'interface une adresse IP en .190 mais le réseau OSPF est 192.168.222.8/29, peut-être que notre problème vient de là.
Nous devons sûrement ajouter dans l'OSPF le réseau 193.48.57.176/28 (Forum source).
- Route vers Null0
enable conf t ip route 193.48.57.176 255.255.255.240 Null 0 exit write
Là encore, nous avons précisé le réseau 193.48.57.176/28 mais le réseau OSPF est 192.168.222.8/29.
On effectue également le commande redistribute static subnets
sans les arguments route-map
et ospf
.
Commandes utiles
sh vlan
: donne des informations sur l'ensemble des VLANs (ports connectés, état, nom) ;sh int vlan xxx
: donne des informations sur le VLAN xxx (adresse IP, etc.) ;sh int status
: donne des informations sur les différentes interfaces (port, état, vlan, vitesse, type) ;sh cdp neighbors
: donne des informations sur les différents ports et sur l'interface sur laquelle ils sont connectés ;sh run [int {vlan xxx, port}]
: donne des informations sur l'état actuel de toutes les interfaces, vlan, etc. ou de l'élément sélectionné ;sh ip route
: liste les routes ;debug ip nat
: liste les échanges du routeurs avec les adresses issues du NAT.
Mise en place de la machine virtuelle
Création de la machine virtuelle Xen
Afin de créer notre machine virtuelle Xen Linux sur le domaine capbreton.plil.info, nous avons besoin de plusieurs données. Premièrement, un nom de domaine : étant basé sur le thème des champignons, nous avons choisi l'oronge, champignon rare et considéré comme le meilleur qui soit d'un point de vue gustatif. Concernant l'adresse IP, après répartition nous nous sommes vu attribuer l'adresse IP 100.64.0.28. L'adresse IP du routeur 6509E est 100.64.0.5 et le masque de sous-réseau 255.255.255.0 (car 100.64.0.1/24). Nous indiquons le répertoire où les disques virtuels doivent être créés : /usr/local/xen. Enfin, nous choisissons le mot de passe (pasglop) ainsi que la distribution : debian buster étant la dernière distribution stable.
Ce qui donne la commande suivant à entrer sur le domaine capbreton (après s'y être connecter en ssh) :
root@capbreton:~# xen-create-image --hostname=oronge --ip=100.64.0.28 --gateway=100.64.0.5 --netmask=255.255.255.0 --dir=/usr/local/xen --password=pasglop --dist=buster
Attribution des LVM
Pour se voir attribuer deux LV de 10Go chacun, il est d'abord nécessaire de créer un groupe de volumes storage sur capbreton : nous réunissons les disques sde et sdf de 2.7To chacun.
root@capbreton:~# vgcreate storage /dev/sde /dev/sdf
Voici les informations sur le VG :
--- Volume group --- VG Name storage System ID Format lvm2 Metadata Areas 2 Metadata Sequence No 45 VG Access read/write VG Status resizable MAX LV 0 Cur LV 26 Open LV 22 Max PV 0 Cur PV 2 Act PV 2 VG Size <5.46 TiB PE Size 4.00 MiB Total PE 1430526 Alloc PE / Size 66560 / 260.00 GiB Free PE / Size 1363966 / 5.20 TiB VG UUID eusQhE-lOxZ-cQqQ-uFxt-dYjG-LuwI-HL0flc
Ensuite, nous partitionnons ce groupe en LV de 10Go. Pour oronge, nous les appelerons oronge1 et oronge2 :
root@capbreton:~# lvcreate -L10G -n oronge1 storage root@capbreton:~# lvcreate -L10G -n oronge2 storage
Voici les informations sur nos LVs :
--- Logical volume --- LV Path /dev/storage/oronge1 LV Name oronge1 VG Name storage LV UUID dWsljG-AeF5-FvMB-Hnta-6iq1-UGfR-qz6Xw2 LV Write Access read/write LV Creation host, time capbreton, 2020-10-12 16:40:47 +0100 LV Status available # open 1 LV Size 10.00 GiB Current LE 2560 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 254:22
--- Logical volume --- LV Path /dev/storage/oronge2 LV Name oronge2 VG Name storage LV UUID X6zWib-XQ3C-bWFT-Zwjd-ZsF6-Ow9d-rA5BGf LV Write Access read/write LV Creation host, time capbreton, 2020-10-12 16:40:50 +0100 LV Status available # open 1 LV Size 10.00 GiB Current LE 2560 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 254:23
Il est nécessaire pour nous de les formater au format ext4 avec la commande mkfs :
root@capbreton:~# mkfs.ext4 /dev/storage/oronge1 root@capbreton:~# mkfs.ext4 /dev/storage/oronge1
Configuration des LV
Pour indiquer à notre machine virtuelle qu'elle possède les volumes logiques oronge1 et oronge2, nous modifions le fichier de configuration de celle-ci en y ajoutant les deux lignes en gras dans la fonction disk=[] dans notre fichier oronge.cfg :
disk = [ 'file:/usr/local/xen/domains/oronge/disk.img,xvda2,w', 'file:/usr/local/xen/domains/oronge/swap.img,xvda1,w', 'phy:/dev/storage/oronge1,xvda3,w', 'phy:/dev/storage/oronge2,xvda4,w' ]
Nous lançons ensuite notre machine virtuelle (xl create -c /etc/xen/oronge.cfg) afin de mettre les répertoires home et var soient sur les partitions LVM de l'hôte.
Dans un premier temps nous montons nos deux disques "manuellement" afin d'y déplacer nos répertoires (en ayant préalablement créer les points de montages /mnt/xvda3 et /mnt/xvda4) :
root@oronge:~# mount /dev/xvda3 /mnt/xvda3 root@oronge:~# mount /dev/xvda4 /mnt/xvda4
Le répertoire /home étant vide nous ne déplaçons que le répertoire var dans le disques xvda4 :
root@oronge:~# mv /var/* /mnt/xvda4
Puis nous démontons (umount) nos deux volumes. Nous modifions le fichier /etc/fstab afin de monter correctement nos disques :
# mettre répertoire /home de la VM oronge dans la partition LVM oronge1 /dev/xvda3 /home ext4 defaults 0 2 # mettre répertoire /var de la VM oronge dans la partition LVM oronge2 /dev/xvda4 /var ext4 defaults 0 2
Enfin nous les montons avec la commande mount -a, permettant de monter tous les systèmes de fichiers tel qu'indiqué dans fstab.
Voici le résultat, obtenu avec la commande lsblk
:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT xvda1 202:1 0 512M 0 disk [SWAP] xvda2 202:2 0 4G 0 disk / xvda3 202:3 0 10G 0 disk /home xvda4 202:4 0 10G 0 disk /var
Connexion à la machine virtuelle
On peut visualiser les VMs lancées grâce à la commande :
xen list
On peut se connecter à notre VM avec la commande :
xen console oronge
Configuration du DNS
Section secrète
Configuration IPV6
Section secrète
Tests d'intrusion
Cassage de clef WEP d’un point d’accès WiFi
La première étape est de paramétrer notre carte réseau en mode moniteur. Le mode moniteur est un mode qui permet d'écouter chaque paquet qui se promène dans l'air : l'écoute de ces paquets nous permettra d'effectuer des injections ensuite. Pour ce faire, il nous faut tout d'abord le nom de notre interface :
airmon-ng nous retourne notre interface réseau (WiPi) : wlx40a5ef0127d0
Nous démarrons ensuite notre interface en mode moniteur sur le channel 3 :
airmon-ng start wlx40a5ef0127d0 3
Afin de cracker la clef WEP d'un point d'accès, il est nécessaire pour nous de le choisir est de récupérer son BSSID :
airodump-ng wlx40a5ef0127d0 nous permet d'écouter tous les paquets dans l'air
Nous choisissons alors la cracotte12 et récupérons son BSSID : 04:DA:D2:9C:50:5B. Pour vérifier que nous sommes assez proche du point d'accès, on effectue un test d'injection qui doit nous retourner un pourcentage proche de 100% :
aireplay-ng -9 -e cracotte12 -a 04:DA:D2:9C:50:5B wlx40a5ef0127d0 -9 : mode injection -e cracotte12 : nom du point d'accès -a 04:DA:D2:9C:50:5B : bssid du point d'accès
Dans une console, on capture ensuite les VI générés par le point d'accès afin de les stocker dans un fichier output:
airodump-ng -c 9 --bssid 04:DA:D2:9C:50:5B -w output wlx40a5ef0127d0
Intrusion sur un serveur d'application Web
Dans un navigateur, on ouvre la page http://honey.plil.info.
Pour obtenir la liste des identifiants et mots de passe de l'application, on va utiliser une injection SQL.
' OR 1 = 1 --
Le fonction de l'injection est simple, prenons par exemple la requête SQL :
SELECT * FROM USERS WHERE ID='$id' AND PWD='$pwd'
Si on entre dans les champs Id et Password l'injection SQL, la requête deviendra :
SELECT * FROM USERS WHERE ID= or 1 = 1 --' AND PWD= or 1 = 1 --'
Ainsi, on va commenter les apostrophes avec -- et ajouter un or avec une condition toujours vraie pour récupérer toutes les infos sur les identifiants et mots de passe.
Ensuite, on utilise la commande :
nmap -T4 -A honey.plil.info
Les informations utiles sont l'utilisation des services ssh et http :
PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 8.3p1 Debian 1 (protocol 2.0) 80/tcp open http Apache httpd 2.4.38 ((Debian))
On peut donc maintenant se poser la question suivante : quels services peuvent utiliser ces 2 ports ?
Intrusion réussie
root@honey:~# ls -l total 12 -rw-r--r-- 1 root root 25 Oct 19 19:30 Grp14 -rw-r--r-- 1 root root 32 Oct 19 19:15 Sam_Et_Pierre_Sont_Des_Imposteurs -rw-r--r-- 1 root root 20 Oct 19 19:08 TMVwash3r3