--- lang: fr-CH --- \newpage # Protection d'un LAN d'attaques "macflooding" ## Learning switch et injection de trames ### 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 ``` ### 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 ``` ### 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 ``` ### 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. ### 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