~ . . . Attaques FMS
En 2001, une attaque passive sur les IVs est publié
par Scott FLURHER, Itsik MANTIN, Adi Shamir (le S de RSA). Son nom correspond
d'ailleurs à leurs initiales : FMS. Cette attaque exploite le fait que
l'algorithme RC4 présente des IVs dits faibles (ou encore favorables)
qui permettent de prédire avec une probabilité raisonnable de
nombreux bits dans la table d'état S. Cette attaque est connue sous le
nom de «invariance weakness». Il faut donc identifier les
circonstances dans lesquelles des IVs faibles peuvent apparaître et
éviter de les utiliser.
La deuxième attaque de Fluhrer, Mantin et Shamir est
la «known IV attack ». Elle nécessite la connaissance de l'IV
ce qui est le cas puisqu'il circule en clair sur le réseau, et la
connaissance du premier octet de M (à deviner). Dans un certain nombre
de cas (« les cas résolus », suivant l'expression de Fluhrer,
Mantin et Shamir ) , la connaissance de ces 2 éléments permet de
déduire des informations sur la clé K. Pour cela, on travaille
avec un IV faible. Chaque IV faible fournit une information sur le premier
octet. Il faut correctement deviner chaque octet avant de pouvoir
déterminer le suivant. Cela est dû à la nature des deux
modules de RC4 : KSA et PRGA. La détermination de chaque octet à
partir d'un seul IV favorable est statistique et donne une probabilité
de succès de 5%. En cas de succès, on parle de cas résolu.
C'est pourquoi l'on cherche a capturer un maximum de trame avec des IVs
faibles.
Toutefois cette attaque théorique n'avait pas
été testée par ses auteurs. La validité de cette
attaque a été montrée par un étudiant
américain, Adam Stubblefield, associé à deux
spécialistes de la sécurité des laboratoires d'AT&T,
John Ionnadis et Aviel Rubin. Leur principale difficulté a
été de deviner le premier octet des données brutes.
Malgré les différents types de protocoles utilisés
(notamment ARP et IP), il s'est avéré que 802.11 rajoute une
couche supplémentaire en encapsulant tous ses paquets (header SNAP).
Ainsi, tous les paquets capturés commençaient par le même
octet 0xAA. Selon les auteurs, 256 cas «résolus» suffisent
pour retrouver l'intégralité de la clé de 128 bits.
Peu de temps après, des développeurs ont mis
à disposition sur Internet les logiciels WEPCRACK et AIRSNORT capables
de casser une clé WEP selon la technique FMS.
~ . . . Optimisation de FMS
Récupérer l'échantillon
représentatif peut prendre un "certain temps", qui dépend
principalement du trafic généré sur le réseau. La
technique étant passive, si le réseau est peu utilisé (cas
par exemple d'un réseau sans fil personnel, qui ne sert qu'à
partager une connexion Internet pour deux ou trois clients), l'opération
peut durer plusieurs semaines. L'expérience a montré que cette
seule attaque nécessite la capture d'entre 5 et 6 millions de trames
pour retrouver la clé. En 2002, ce nombre fut réduit à 1
million par David Hulton
(h1kari) qui ne prit pas en considération uniquement le
1er octet du keystream mais aussi les suivants.
Afin d'accélérer la recherche, des outils
apparaissent, permettant la réinjection des paquets capturés,
pour augmenter artificiellement le trafic et ainsi diminuer le temps pour
casser la clé WEP. L'attaque devient alors active puisqu'on modifie le
trafic sur le WLAN. Elle devient donc aussi plus facilement repérable
pour l'administrateur.
Les constructeurs ont alors pensé à
intégrer directement sur leurs nouveaux firmwares des mécanismes
pour détecter les clés faibles et ne pas les utiliser. Airsnort
devint dès lors inutilisable.
Le 8 août 2004, Korek, un hacker, diffuse sur le forum
de Netstumbler l'outil CHOPPER (celui-ci n'est plus disponible) qui permet de
casser la clé WEP, en capturant un nombre réduit d'IVs, faibles
ou non. Il suffit d'environ 150000 trames pour retrouver une clé de 64
bits et de 500000 pour une clé de 128 bits. Il s'agit d'une attaque par
cryptanalyse statistique des données chiffrées.
Des développeurs entreprirent de continuer le travail
de Korek. Rapidement, la suite AIRCRACK (développé par le
Français Christophe Devine) apparaît, combinant l'attaque FMS et
celle de Korek. Il est le premier d'une longue série de logiciels (on
peut citer WepLab, Aircrack-ng) démontrant les failles dues aux
collisions des IVs. Une dizaine de minutes suffisent alors pour retrouver une
clé WEP par ces moyens.
La suite d'outils Aircrack est constituée de 3 outils
principaux : Airodump (équivalent de Kismet) qui collecte les trames sur
le WLAN.
Aircrack qui casse les clés WEP.
Aireplay qui génère du trafic artificiel afin de
diminuer le temps de collecte des trames chiffrées avec un même
IV.
Aireplay exécute une attaque par rejeu, il essaie
d'identifier les requêtes ARP (Adress Resolution Protocol) et les renvoie
tels quels sur le réseau. Les autres clients répondront,
générant ainsi du trafic.
Une fois que les trames sont collectées, la clé
WEP est déterminée en quelques secondes. Le seul paramètre
sur lequel il est nécessaire de travailler est le fudge factor qui
détermine l'espace de recherche des clés.
Aircrack permet un autre type d'attaque. Autre
création de Korek, elle s'appelle CHOPCHOP. Elle permet de
décrypter un paquet chiffré avec le protocole WEP sans avoir
connaissance de la clé. Le contrôle d'intégrité
implémenté dans le protocole WEP permet à un attaquant de
modifier à la fois le contenu chiffré du paquet et le CRC
correspondant. On le verra plus en détail, plus loin. De plus,
l'utilisation de l'opérateur XOR au sein du protocole WEP implique qu'un
octet dans le message chiffré dépend toujours du même octet
du texte en clair. En coupant le message chiffré de son dernier octet,
le message devient corrompu mais il est possible de faire un choix sur la
valeur de l'octet correspondant du texte en clair et de corriger le texte
chiffré. On construit donc 256 trames modifiées, une pour chaque
valeur possible de l'octet, et on les soumet à l'AP pour voir s'il les
relaie ou non. Si c'est le cas, on a la bonne valeur, sinon la trame sera
supprimée. On transforme donc l'AP en oracle. En répétant
l'attaque sur tous les octets du message chiffré, il est possible de
décrypter l'intégralité du paquet et de retrouver le
keystream. Il est important de noter que l'incrémentation de l'IV n'est
pas obligatoire dans le protocole WEP, il est donc possible de
réutiliser le keystream pour forger d'autres paquets (en
réutilisant le même IV).
. 3.4.5. Attaque par fragmentation
En 2004, encore, dans un contexte où le WEP
prédomine toujours (et ce malgré sa vulnérabilité),
Andrea BITTAU, Mark HANDLEY du collège of London et Joshua LACKEY de
chez Microsoft publièrent un article (The Final Nail in WEP's Coffin -
Le clou final au cercueil du WEP) sur une nouvelle attaque : l'attaque par
fragmentation qui se base sur la réutilisation des keystreams. L'attaque
a été implémentée sur le logiciel Wesside
disponible a l'origine uniquement sur l'OS FreeBSD. On a vu que l'on pouvait
par attaque à clés apparentées récupérer des
keystreams de 8 ou 22 octets. Cela permet de chiffrer des messages très
courts. En soit ce n'est pas très intéressant, il nous faudrait
des keystreams ayant la taille maximum d'une trame (MTU ou maximum transmission
unit). Le standard 802.11 prévoit un mécanisme qui permet de
fragmenter une trame en 16 fragments au plus, chiffrés
indépendamment les uns des autres (chacune a donc un
CRC distinct). On peut dès lors augmenter la portée du keystream.
Prenons un keystream de 22 octets. On chiffre 16 fragments avec ces 22 octets.
A chaque fois, 4 octets sont réservés pour le CRC32, on chiffre
donc de manière effective (22-4)*16=288 octets de données avec
seulement 22 octets de keystream. Mieux encore, lorsqu'un AP reçoit une
trame 802.11 fragmentée qu'il doit relayer, il la défragmente (il
déchiffre chaque fragment et rassemble tout en une trame). On se
retrouve alors en situation de clair connu et on peut de cette manière
récupérer un keystream plus long. En itérant ce processus,
on récupère un keystream qui permet de chiffrer n'importe quelle
trame (et de déchiffrer toutes celles associés au IV). On appelle
cette phase : « le bootstrap », elle dure environ 30 secondes. De
manière générale, si on dispose d'un keystream de N octets
de X fragments, on obtient un keystream de longueur L=(N-4)*X+4.
Dans le schéma qui suit, on a pris un exemple
simplifié où à partir de 8 octets de keystream et 4
fragments, on récupère un keystream de 20 octets.
Augmentation du keystream par fragmentation
:
Il existe plusieurs façons d'exploiter cette attaque :
On peut dans un premier temps faire du mapping (dresser une
carte du plan d'adressage et l'adresse de passerelle) du réseau. Pour
cela, il nous suffit d'émettre des requêtes ARP, cela prend
environ 5 minutes. On
pourra alors émettre des requêtes vers Internet et
faire de l'IP Forwarding (vu précédemment).
On peut générer du trafic avec n'importe quel
paquet IP (contrairement à Aireplay qui nécessite des paquets
ARP) et le fournir à Aircrack. Cette méthode est
implémentée dans Aircrack-ng.
On peut constituer une table IV/Keystream (la clé
étant statique) qui permettra de chiffrer de déchiffrer n'importe
quel message. La taille de cette table de keystream devrait être de 25
Gigaoctets . Cela prend 17 heures alors qu'Aircrack permet de casser la
clé WEP en quelques minutes. L'attaque par fragmentation n'est donc pas
une révolution mais une nouvelle faiblesse WEP.
Une autre méthode pour l'attaquant de constituer une
table de décryptage est d'envoyer un message de type « ping ~ en
clair, l'attaquant peut voir comment celui est chiffré. En confrontant
les 2 versions, il obtient le keystream. Il suffit alors d'associer chaque
keystream avec chaque IV.
|