Skip to content
Snippets Groups Projects
01_labo1_macflooding.md 2.91 KiB
Newer Older
iliya's avatar
iliya committed
---
lang: fr-CH
---
\newpage

# Protection d'un LAN d'attaques "macflooding"

iliya's avatar
iliya committed
## Learning switch et injection de trames

iliya's avatar
iliya committed
### Initialisez la machine pour H1

```bash
dhclient -v mgmt0
apt update
apt -y --no-install-recommends install git python3-pip python-is-python3 tcpreplay
pip3 install scapy
git clone https://gitedu.hesge.ch/hoerdt-public/sendether
cd sendether && chmod 755 sendether.py && cp sendether.py /usr/local/bin
hostnamectl set-hostname H1
ip addr add 10.0.0.1/24 dev eth0
ip link set up dev eth0
ip link set dev eth0 addr 00:00:00:00:00:01
exit
```

iliya's avatar
iliya committed
### Initialiser la machine H2


```bash
hostnamectl set-hostname H2
ip addr add 10.0.0.2/24 dev eth0
ip link set up dev eth0
ip link set dev eth0 addr 00:00:00:00:00:02
exit
```


iliya's avatar
iliya committed
### Initialisez la machine H3


```bash
hostnamectl set-hostname H3
ip addr add 10.0.0.3/24 dev eth0
ip link set up dev eth0
ip link set dev eth0 addr 00:00:00:00:00:03
exit
```


iliya's avatar
iliya committed
### Fonctionnement normal d'un switch

1. La valeur du `aging-time` de la table MAC de S1 est de 300s (5 min). Cette 
valeur signifie la quantité de temps dont une adresse MAC sera stocké dans la 
table MAC.

2. La commande `show mac-address-table count` retourne la valeur maximale
d'adresses MACs qui peuvent être stockés dans la table MAC ainsi que le nombre
d'adresse MAC actuellement dans la table

3.
    1. S1 $\Rightarrow$ H1, H2, H3
    2. S2 $\Rightarrow$ H1, H2
    2. S3 $\Rightarrow$ H1, H3

4.  ```bash
    ping -c 5 10.0.0.2 && ping -c 5 10.0.0.3
    ```
La table est construite MAC grâce au spanning tree protocol (STP). Suite au
fait qu'il y ait des paquets ICMP entre H1 $\leftrightarrow$ H2 et H1 $\leftrightarrow$
H3, le switch racine élu par conséquent sera S1 qui est rélié directement à H1.

5. La raison pour laquelle on ne voit pas les messages ICMP entre H1 et H2 sur
le lien entre S1 et S3 car les adresses MAC de H1 et H2 ont été ajouté à la
table MAC avant que cette table ne soit pleine, par conséquent le trafic entre
ces deux hôtes ne sera pas redirigé sur tous les ports ce qui survient en mode
_fail-open_ lorsque la table MAC est pleine est qu'une communication est établie
entre 2 hôtes qui ne sont pas encore présent dans ladite table.


iliya's avatar
iliya committed
### Injection de trames sur le réseau

1. Suite à l'exécutionde la commande `sendether.py -i eth0 -c 5`, une nouvelle 
adresse MAC apparait dans les tables MACs des switches S1, S2, S3.

2. Le script `sendether.py` génère une nouvelle adresse MAC aléatoire, puis
ce script envoi un message ICMP de sorte à ce que les tables MACs des switches
S1, S2 et S3 se remplissent avec cette nouvelle adresse MAC aléatoire.

3. Suite à cette inversion, les adresses présentent précedemment n'y sont plus
dans les tables d'adresses MACs de S1, S2 et S3. La raison pour laquelle cela 
est le cas est qu'en ayant inversé les adresses `src` et `dst` on envoie le 
paquet à H1 depuis une un hôte possedant une adresse MAC aléatoire.


## Attaque du MAC flooding