\newpage # Attaques et protection contre le VLAN Hopping ## Switch spoofing DTP ### DTP : Fonctionnement de base 1. Entrez la commande ci-dessous sur S1 et S2 ``` show interface G0/0 switchport ``` 2. - Quel champ indique le mode de fonctionnement (trunk ou access) du port G0/0 ? - C'est le champ `Operational Mode` - A quelle valeur est-elle sur les switchs S1 et S2 ? - ``` Operational Mode: static access ``` - Est-ce que le switch S2 a des interfaces en mode trunk ? Utilisez la commande `sh interface trunk` pour le vérifier. - Non, le switch S2 n'a aucune interface en mode trunk. 3. Capturez les messages DTP qui circulent entre S1 et S2.  - Quelle est la destination des messages ? - CDP/VTP/DTP/PAgP/UDLD --- 0**1**:00:0c:cc:cc:cc - De quel type de communication s’agit-t-il ? (Unicast/Multicast/Broadcast ?) - Multicast, car le bit de poids faible de l'octet de poids fort de l'adresse est posé à 1 (démarqué en gras ci-dessus). 4. Sur la même adresse de destination circulent d’autres protocoles que DTP, citez-les et donnez-en une brêve description ? - Le seul protocole autre protocole que DTP dont le paquets portent la même adresse de destination est CDP. CDP (_Cisco Discovery Protocol_) est un protocole permettant la collecte d'informations sur les appareils voisins qui ont une connexion directe avec le switch en question. Ce protocole permet d'obtenir des informations non-seulement sur le hardware, mais aussi sur le software ainsi que le nom que porte l'appareil en question. - A partir de la capture Wireshark, décrivez comment sont encapsulés ces messages sur Ethernet[^1] ? - Les paquets CDP sont encapsulés dans le champ "données utiles" de la partie LLC (_Logical Link Control_) d'une trame Ethernet. Cette sous-couche fait partie de la couche 2 du modèle OSI (couche liaison) et elle permet de fiabiliser le protocole MAC par un contrôle d'erreur est un controle de flux. [^1]: [Contrôle de la liaison logique](https://fr.wikipedia.org/wiki/Contr%C3%B4le_de_la_liaison_logique) ### Attaque du DTP avec `Yersinia` 1. Configurez le VLAN 10 sur S1 et S2, avec G0/1 en mode access et G0/0 en mode trunk. - Configuration de l'interface `GigabitEthernet 0/0` en mode `trunk` (S1 et S2) : ``` Switch>en Switch#conf t Switch(config)#vlan 10 Switch(config-vlan)#exit Switch(config)#interface GigabitEthernet 0/0 Switch(config-if)#switchport trunk encapsulation dot1q Switch(config-if)#switchport mode trunk Switch(config-if)#no shut Switch(config-if)#end ``` \newpage - Configuration de l'interface `GigabitEthernet 0/1` en mode `access` (S1 et S2) : ``` Switch>en Switch#conf t Switch(config)#interface GigabitEthernet 0/1 Switch(config-if)#switchport access vlan 10 Switch(config-if)#no shut Switch(config-if)#end ``` 2. Configurez l’adresse IP de H1 et H2 à 10.0.0.1/24 et 10.0.0.2/24 respectivement. - H1 : ```bash hostnamectl set-hostname H1 ip addr add 10.0.0.1/24 dev eth0 ip link set up dev eth0 ``` - H2 : ```bash hostnamectl set-hostname H2 ip addr add 10.0.0.2/24 dev eth0 ip link set up dev eth0 ``` 3. - Configurez l’adresse IP de `kali-linux-1` à 10.0.0.3/24. ```bash sudo ip addr add 10.0.0.3/24 dev eth0 sudo ip link set up dev eth0 ``` - Arrivez-vous à pinger H1 et H2 depuis cette machine ? Pourquoi ? - On n'arrive pas à pinger H1 et H2 depuis `kali-linux-1` car cette machine se trouve en dehors du VLAN 10 suite au fait qu'elle est reliée au switch S1 par l'interface `GigabitEthernet 0/2`. - Enlevez cette IP de `kali-linux-1` : ```bash sudo ip addr del 10.0.0.3/24 dev eth0 sudo ip link set down dev eth0 ``` 4. Quel est la valeur de `Operational Mode` du port G0/2 sur le switch S1 ? - Afin d'obtenir cette information il faut exécuter la commande suivante : ``` show interface GigabitEthernet 0/2 switchport ``` Sa valeur est : `static access`. 5. Effectuez maintenant une attaque à distance depuis la machine Kali en exécutant la commande `sudo yersinia -I`. Selectionnez, avec la touche `g`, les attaques de type `Dynamic trunking Protocol`. Appuyer sur `x`, puis `1` pour `Enable trunking`. 6. Quel est à présent la valeur de Operational Mode du port G0/2 sur le switch S1 ? Pourquoi ? - À présent la valeur du champ `Operational Mode` est `trunk`. Grâce à l'outil `yersinia`, on a pu forger un paquet DTP qui nous a permis de nous faire passer pour switch qui désire établir un trunk avec S1. En envoyant ce paquet sur l'interface GigabitEthernet 0/2 de S1, on a pu la faire basculer en mode `trunk`. 7. Il est a présent très simple pour la machine Kali de rejoindre le vlan 10. Rajoutez-y simplement une interface qui tagge tout les paquets avec le numéro de vlan 10 par la commande suivante : ```bash ip link add link eth0 name eth0.10 type vlan id 10 ``` 8. - Configurez eth0.10 avec l’IP 10.0.0.3/24. ```bash sudo ip addr add 10.0.0.3/24 dev eth0.10 sudo ip link set up dev eth0.10 ``` - Arrivez-vous à pinger 10.0.0.1 et 10.0.0.2 ? Expliquez pourquoi ? - Oui, à présent nous arrivons à pinger H1 et H2 car nous nous retrouvons à présent sur le VLAN 10 qui relie H1 à H2. ### Sécurisation des switches 1. Sécurisez l’ensemble des ports des switches S1 et S2 de façon à ce qu’aucune attaque ne puisse avoir lieu sur les ports restant des switchs qui n’appartiennent pas au VLAN 10. - `GigabitEthernet 0/2` de S1 : ``` Switch>en Switch#conf t Switch(config)#interface GigabitEthernet 0/2 Switch(config-if)#switchport mode access Switch(config-if)#no shut Switch(config-if)#end ``` - `GigabitEthernet 0/0` de S1 et S2: ``` Switch>en Switch#conf t Switch(config)#interface GigabitEthernet 0/0 Switch(config-if)#switchport trunk encapsulation dot1q Switch(config-if)#switchport mode trunk Switch(config-if)#switchport nonegotiate Switch(config-if)#no shut Switch(config-if)#end ``` ## VLAN Hopping sur le VLAN natif ### Révision VLAN ### Double tagging `Scapy` ### Double tagging `iproute2` ### Sécurisation des switches