Skip to content
Snippets Groups Projects
03_vlan_hopping.md 6.58 KiB
Newer Older
iliya's avatar
iliya committed
\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.
    
    ![Paquets DTP échangés entre S1 $\Leftrightarrow$ S2](../figs/dtp_comm_s1_s2.png) 

    - 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`

iliya's avatar
iliya committed
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 (_**jsp, faut vérifier si ce n'est pas le VLAN
        natif**_) qui relie H1 à H2.



iliya's avatar
iliya committed
### Sécurisation des switches

iliya's avatar
iliya committed
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
    ```


iliya's avatar
iliya committed

## VLAN Hopping sur le VLAN natif

### Révision VLAN

### Double tagging `Scapy`

### Double tagging `iproute2`

### Sécurisation des switches