wep et cracker des mots de passe - diensfouque/wep+rainbow.pdf · initialisation (ksa algo) •...
TRANSCRIPT
WEP et Cracker des mots de passe
Pierre-Alain Fouque
mercredi 27 novembre 13
WEP, WPA et RC4...
mercredi 27 novembre 13
RC4-WEP• Réseaux sans fil IEEE 802.11
• WEP Wired Equivalent Privacy
• Authentification et Chiffrement
• WEP: Clé 64 bits (24 bits d’IV + 40 bits de clé)
• 5 heures pour exhauster
• Crackers: Wep_crack, Wepdecrypt, AirSnort
• Clé plus longues (128 à 256 bits) ne sont pas des solutions !
mercredi 27 novembre 13
WPA• Wi-Fi protected access ⊂ IEEE 802.11i
• Fonctionne 802.11b (11 Mbit/s sur bande 2,4 Ghz), 802.11a (54 Mbit/s sur 5 Ghz),...
• Mise à jour logicielle
• améliore confidentialité et authentification
• Chiffrement: TKIP (chiffrement), MIC (Message Integrity Check), IV=48 bits (évite rejeu)
mercredi 27 novembre 13
TKIP (Temporal Key Integrity Protocol)
• Clé temporaire 128 bits (partagée entre clients et point d’accès radio)
• Combine la clé avec adresse MAC du client et IV de 16 octets pour fournir la clé
• TKIP utilise RC4 (comme WEP) mais la clé temporaire est changée tous les 10 000 paquets
• WEP utilise une clé statique (rarement modifiée)
• Authentification (absente dans WEP): 802.1x
• EAP (Extensible Authentication Protocol)
mercredi 27 novembre 13
802.11i
• Nouveau standard: modification matérielle
• utilisation de l’AES (coprocesseur dédié)
• Mode CCM (Counter mode with CBCMAC)
mercredi 27 novembre 13
RC4 PRGA• Stream cipher conçu par Ron Rivest (Ron’s Cipher 4)
• très facile d’implémentation en logiciel
• PRGA Algo: S initialisé à une permutation aléatoirei := 0j := 0while GeneratingOutput: i := (i + 1) mod 256 j := (j + S[i]) mod 256 swap values of S[i] and S[j] K := S[(S[i] + S[j]) mod 256] output Kendwhile
mercredi 27 novembre 13
Initialisation (KSA Algo)
• RC4-WEP: IV suivi de la clé K
• Si longueur de clé <256 octets, on boucle
• Attaque de Fluhrer, Matin, Shamir (2001)
• Fréquence des premiers octets sorties non random
• Klein (2005): aircrack-ptw: 128-bit keys (<1 minute)
for i from 0 to 255 S[i] := iendforj := 0for i from 0 to 255 j := (j + S[i] + key[i mod keylength]) mod 256 swap values of S[i] and S[j]endfor
Permutation initiale
Permutation finale aléatoire
mercredi 27 novembre 13
Attaque FMS (2001)• 128 bits = 3 octets d’IV initialement et 13 de clés k
• Supposons qu’on connaisse les n octets de début de la clé K et on veut retrouver l’octet K[n]=k[n-3](K[0]=IV[0],K[1]=IV[1],K[2]=IV[2],K[3]=k[0],...K[n-1]=k[n-4])
• Rem: on peut connaître l’état de la permutation S à l’issu de la n-ième étape de l’algo KSA et la valeur j
• Supposons: K[0]=IV[0]=n et K[1]=IV[1]=255. Supposons les valeurs de S ne sont modifiées qu’une seule fois dans KSA (aux indices 0,1, et n)
mercredi 27 novembre 13
Attaque FMS 2001
• Supposons: K[0]=IV[0]=n et K[1]=IV[1]=255. Supposons les valeurs de S ne sont modifiées qu’une seule fois dans KSA (aux indices 0,1, et n)
• Alors z1=Sn-1[jn-1+Sn-1[n]+K[n]] avec jk la valeur de j à la k-ième itération de la boucle KSA et Sk la valeur de la table S à cette itération
• Les valeurs en bleues sont connues et en rouge ce qu’on recherche
• Facile de trouver K[n]
mercredi 27 novembre 13
Analyse Attaque FMS• Sachant que IV[0]=n et IV[1]=255 (valeurs qui
ne sont pas chiffrées), quelle est la probabilité que les 3 valeurs ne soient pas modifiées plus d’une fois ? ≈1/e3
• Attaque: il faut utiliser plusieurs IV pour calculer la fréquence d’apparition de la bonne valeur de K[n]
• TP: simuler les chiffrements avec ces IVs• http://perso.eleves.ens-rennes.fr/~pkarp892/rc4KR1729.c (fichier seul complet)
• http://perso.eleves.ens-rennes.fr/~pkarp892/RC4KR.tar.bz2 (archive avec le squelette du fichier et le PRNG & Makefile)
mercredi 27 novembre 13
Mots de passe
mercredi 27 novembre 13
Entropie et nombre de mot de passe
• Généralement peu d’entropie
• alphabet de (26*2+10+8)=70 caractères
• longueur 6 caractères: (70)6=117649000000≈236.8
• longueur 8 caractères:708=249
• En général, pas complètement aléatoire... et l’entropie est réduite: H(X)=-∑ipilog(pi) X=source
• pi=fréquence d’apparition des lettres, si pi=1/#A, H(X)=36.8 pour longueur 6 caractères
mercredi 27 novembre 13
NTLM mot de passe• En général, les mots de passe ne sont pas salés• LM Hash: Ne gère pas la casse
• Le mot de passe est séparé en deux éléments de 7 caractères.
• Si le mot de passe a une longueur inférieure à 14 caractères il est complété par des caractères nuls.
• Le hash de chaque morceau est calculé séparément. Ces valeurs sont utilisées pour créer 2 clés DES, une pour chaque 7-
octet. Chacune des deux clés est utilisée pour chiffrer la chaîne constante “KGS!@#$%”
• Les deux hashs concaténés forment le hash LM sur 128 bits.
• Salage: on stocke Hash(pw || sel)=h, sel
• Quand on reçoit pw’, on vérifie si H(pw’||sel)=h ?
• Coûte cher à l’adversaire de tester les sels
mercredi 27 novembre 13
Authentification Windows• LM Hash: si on utilise les 95 caractères imprimables ASCII, il y
a 9514≈292 hachés différents
• Comme on découpe en 2 parties, il y a 957≈246 mots de passe de 7 caractères et comme la casse ne compte pas, seulement 697≈243
• Cassage par force brute en quelques heures...
• Attaque par dictionnaire: précalculer tous les hachés
• Pas de sels: technique pour éviter les attaques par dictionnaire
• Détecter petit mot de passe: termine par le chiffré de la clé 0, 0xAAD3B435B51404EE
• NTLM hash: MD4(mot de passe)=haché sur 128 bitsmercredi 27 novembre 13
Logiciels• Attaque par dictionnaire / Rainbow Tables
• Logiciels • Brutus
• Cain and Abel
• Crack
• Aircrack-ng
• John the Ripper
• Airodump-ng
• L0phtCrack
• Metasploit Project
• Ophcrack
mercredi 27 novembre 13
Rainbow Table
• Amélioration par rapport aux tables de Hellman (1977) pour rechercher des clés DES si on connaît un bloc A, DESK(A)
• Proposée par Philippe Oeschlin à l’EPFL en 2003
• Idée principale: Faire un gros précalcul en calculant toutes les valeurs (K,DESK(A)) et faire un compromis temps/mémoire efficace
mercredi 27 novembre 13
Tables de Hellman• Idée: Faire des chaînes et ne retenir que la
première et la dernière valeurs
• Supposer que la valeur recherchée est quelque part dans la table, itérer la fonction et vérifier si on tombe sur une valeur finale d’une chaîne qui est dans la table
• Si c’est le cas, à partir de la valeur initiale de la chaîne correspondante, itérer la fonction f jusqu’à retrouver C=DESK(A)
• En général: f(K)=lsb(DESK(A)) de poids faibles
mercredi 27 novembre 13
Analyse et Problèmes
• Analyse de complexité: N taille espace de recherche
• supposons que t soit la longueur des chaînes
• si on a m chaînes, on couvre une fraction mt/N
• si mt2≈N, on va avoir des collisions
• t tables avec t fonctions f différentes et chaque table contient mt valeurs
mercredi 27 novembre 13
Rainbow tables• Arranger différemment les calculs pour
réduire qu’une collision interne devienne une collision pour le reste de la chaîne
mercredi 27 novembre 13
Mots de passe et Rainbow Tables• Trouver un mot de passe à partir de son empreinte
(haché). Eg. le mot de passe Fgpyyih804423 est retrouvé en 160 secondes...
mercredi 27 novembre 13
Conclusions• RC4+WEP:
• RC4 rapide (mais sécurité non maîtrisée)
• Initialisation mauvaise: Mettre la clé avant l’IV
• Rainbow Tables:
• Inverser une fonction avec taille de l’entrée petite ou faible entropie
• Fonctionne aussi avec de petites clés par exemple communications GSM avec A5/1
• Saler les mots de passe !mercredi 27 novembre 13