---
title: "Sécurité Réseau : Cours 2 : Wi-Fi"
...

\newpage{}


# Introduction

## Différence des réseaux Wi-Fi

- Pas de frontière physique
	- Onde radio
    - Medium ouverte à toute personne qui possède le matériel
    - Les ondes sortent de la zone souhaitée
- Onde &rarr; dynamique
	- On ne peut pas prévoir le trajet des ondes*
    - Canal non fiable qui nécessite des acquittements (ACK)
    - Pas beaucoup de place sur le spectre radio &rarr; techniques de codage évoluées
- Sécurité : la prio a plutot été donnée à 
	- Fiabilité
    - Mobilité 
    - Gestion d'énergie
    
## Norme 802.11

Constitue la couche physique et la couche MAC des communications Wi-Fi. Le standard a évolué au fil des année pour offrir plus de performances, de fonctionnalités, et de sécurité.

## Wifi alliance

Combinaison d'associations professionnelles, d'organismes de tests et de normalisation. Reconnue pour sa certification Wi-Fi qui test l'interopérabilité avec un banc d'essai provenant de fournisseurs importants.

## Architecture Wi-Fi

### Composants

- Station : Terminal avec une carte Wi-Fi
- Basic Service Set (BSS) : Groupe de station avec la même fréquence radio
- Access Point (AP) : station intégrée au WLAN et au système de distribution
- Portail : pont vers un réseau filaire
- Système de distribution (DS) : réseau d'interconnexion pour former un réseau logique ESS
- Extend Service Set (ESS) : ensemble de BSS reliés par un DS

### Scénario de connexion

1. Un client scanne pour trouver des BSS : il envoie une Probe Request
2. Le client reçoit une Probe Response de l'AP contenant le SSID
3. Le client envoie une Auth Request
4. Le client reçoit une Auth Response de l'AP
5. Le client envoie une Assoc Request
6. Le client réçoit une Assoc Response contenant l'AID
7. La connexion est établie entre client et AP, le client a rejoint la BSS

### Scénario de déconnexion

Le client envoie une Deauth Request (déconnexion à l'initiative du client)

OU

L'AP envoie un message Disassoc puis Deauth au client (déconnexion à l'initiative de l'AP)

### Scénario de Roaming (changement de BSS)

1. Le client constate un signal faible &rarr; c'est le moment d'enclencher la procédure de Roaming
2. Le client envoie une Probe Request pour le SSID du réseau
3. Reçoit une Probe Response du nouvel AP
4. Envoie une Reassoc Request au nouvel AP
5. L'ancien AP envoie les données bufferisées au nouvel AP
6. Le client reçoit une Reassoc Response du nouvel AP 

# Attaques sur Wi-Fi

## Premier soucis : DOS

- Emettre des ondes radio
- Faire déco/reco de clients plein de fois
- Envoyer plein de paquets CTS en se faisant passer pour l'AP

Pas de solution dans le standard 802.11 :

- Mettre en place des mécanismes de protection
- Régir vite en cas d'attaque

## Mesures de protection

- Limiter les débordement : planification radio
- Eviter les AP pirates (Rogue AP) 
	- Supervision radio, attaquer les AP pirates
    - Contrôleurs Wi-Fi
- Masquer le SSID : mauvaise idée
- Filtrage pas adresse MAC
	- Lourd à mettre en oeuvre
    - Pas très utile (spoofing)    
- VLANs pour isoler le réseau Wi-Fi : pas productif

## Historique de la sécurité

- 1999 : 802.11 d'origine
	- Authentification 802.11 native
    - Chiffrement WEP statique
- 2001 : 802.1X avec WEP
	- Authentification 802.1X
    - Gestion des clés par 802.1X
    - Protection des données par WEP
- 2003 : WPA
	- Authentification 802.1X
    - Gestion des clés par 802.1X améliorée
    - Protection des données TKIP
- 2004 : 802.11i (WPA 2)
	- Authentification 802.1X
    - Gestion des clés par 802.1X améliorée
    - Protection des données **AES**
    - Pré-Authentification

# Protocole WEP

WEP : Wired Equivalent Privacy. &rarr; Avoir un WLAN aussi sécurisé que le LAN filaire.

Fonctionnalités : 

- Pas de gestion de clés intégrée
- Pas de protection contre le rejeu
- Confidentialité : RC4 Stream Cipher
- Intégrité : CRC-32
- Authentification : clé partagée

### RC4

- RC4 = Vecteur d'initialisation de 24 bits + Clé descrète de 40 bits
- Le texte à chiffrer est associé à un Checksum
- Utilisation de l'opérateur XOR sur le flux pour le chiffrer

Danger de réutilisation du vecteur d'initialisation, s'il est répété pour un échange dont on connait le texte clair et le texte chiffré, on peut retrouver l'opération XOR effectuée et décrypter des messages utilise le même vecteur d'initialisation.

# Standard IEEE 802.11i

## Caractéristiques

- Compteur empêche les attaques par rejeu
- Vecteur d'initialisation de 48 bits
- Authentification de l'utilisateur (contre authentification du terminal pour WEP)
- Clé actualisées dynamiquement à l'aide de TKIP
- AES est utilisé dans WPA au lieu de RC4 dans WEP et WPA

Deux façon de l'utiliser :

- Personnel : utilisation de clés pré-partagées (PSK)
- Entreprise : serveur d'authentification IEEE 802.11X qui distribue les clés aux utilisateurs

## IEEE 802.11X

Utilise le protocole EAP (Extensible Authentication Protocol) encapsulé dans des protocoles de niveau supérieur.

Architecture : 

- Supplicant (client), utilise un client EAP pour communiquer avec le système contrôleur
- Authenticator : Le système contrôleur EAP reçoit les demandes EAP du Supplicant et communiquer avec le serveur d'authentification en encapsulant EAP dans RADIUS / Diameter
- Authentication Server : authentifie le Supplicant

![8021X](./images/8021X.png)

\newpage{}

### Phases

![Phases](./images/phases.png)

\newpage{}

#### Phase 1 : Politique de sécurité

![Phases 1](./images/phase1.png)


\newpage{}

#### Phase 2 : Authentification

![Phase 2](./images/phase2.png)

EAP : 

- Chiffrement : 
	- TTLS 
    	- PAP : Password Authentication Protocol
        - MD5
        - CHAP : Challenge Handshake Authentication Protocole
    - TLS
    - GSS API (Kerberos)
    - PEAP : Protected EAP
    - IKE : Internet Key Exchange
- Media : 
	- PPP : Point To Point Protocol avec PAP (Password Authentication Protocole) pour l'authentification
    - 802.3
    - 802.11
    ...
    

##### EAP/PEAP

1. Créer un Tunnel TLS avec le certificat du serveur RADIUS
2. Authentifie le client dans ce tunnel
3. Le protocole d'authentification est protégé

##### EAP/TTLS (Tunneled Transport Layer Security)

TTLS est différent de PEAP car les infos sont transportés avec des couples K/V (Key Value) compatible avec RADIUS

- Supporte les anciennes méthodes non supportées par eap
- Supporte différents modes de stockage de MDP

\newpage{}

#### Phase 3 : Dérivation et distribution des clés

![Phase 3](./images/phase3.png)

- **MK** : Master Key
	- PSK quand une utilise une clé pré-partagée
    - Ou alors générée par 802.1X/EAP (RADIUS)
- **PMK** : Pair Wise Master Key, possédée par le supplicant et l'AP
- **PTK** : Pair Wise Transit Key (Unicast), générée par le supplicant
- **GTK** : Group Temporal Key (Multicast)

#### Phase 3 : Handshake à 4 mains

Initié par l'AP, il permet de :

- Confirmer la connaissance de la PMK par le client
- Dériver une nouvelle PTK
- Installer les clés de chiffrement et d'intégrité
- Chiffrer le transport de la GTK
- Confirmer la Cipher Suit choisie

Quatre messages EAPOL-KEY (EAPOL : EAP over LAN) sont échangés entre client et AP durant le 4-Way Handshake.

![Phase 3](./images/phase32.png)

PMK = PBKDF2(SSID,PSK)

- **PBKDF2** : Password Based Key Derivation Function 2
- Slow : 8192 x HMAC-SHA1
- Réduit la vulnérabilité aux attaques par force brute

\newpage{}

#### Phase 4 : Intégrité et confidentialité des données

MIC : Message Integrity Check

Deux algorithmes possibles : 

- TKIP : RC4, MIC. Le MIC est calculé sur le MSDU 
- CCMP : AES en mode compteur (WPA2 seulement). Le MIC est calculé sur le MPDU

En cas de fragmentation le MSDU est le paquet avant fragmentation et sera fragmenté en plusieurs MPDU.

\newpage{}

#### Conclusion

![Conclusion](./images/final.png)

### FreeRadius

FreeRadius est une implémentation libre du protocole RADIUS. C'est un serveur AAA (Authentication Authorization Accounting)

#### Configuration

```bash
sudo apt install freeradius
```

Eduroam est un réseau basé sur FreeRadius

Vérifier qu'i lmarche bien :
```bash
sudo systemctl status freeradius
```

Voir le port utilisé : 
```bash
lsof -i
```

Lancer le mode debug : 
```bash
sudo systemctl stop freeradius # stop le service pour éviter qu'il y ai un conflit avec la socket
freeradius -X
```

Ouvrir une nouvelle session SSH et ouvrir `client.conf` dans les fichiers FreeRadius (`/etc/freeradius/3.0`). Ici sont déclarés les client du serveur FreeRadius. Pour un client, il faut un secret pour pouvoir sécuriser les communications entre l'AP et FreeRadius (par défaut test123).

Pour stocker les users, Radius peut se connecter aux utilisateurs de linux, un DBMS, LDAP, ou un fichier local à radius appelé `users` (utilisé par défaut).
Pour tester rédmarrer le serveur et exécuter : 

```bash
radtest bob hello localhost 10 test123
```

FreeRadius fait l'Autorisation avec l'Authentification, ainsi il n'essaye même pas d'authentifier un utilisateur non autorisé.

#### Login Time

Dans `/etc/freeradius/3.0/client.conf`, rajouter un champs : 

```bash
bob	 Cleartext-Password := "hello",Login-Time := "Al0800-1000" # Entre 8h00 et 10h00
```

#### EAPOL Test

Pour l'instant il faut un ajouter un repository APT, télécharger une config sur le site DeployingRadius.
