samedi 26 novembre 2016

Attaque "Bit flip"

Attaque cryptographique « Bit Flip »

L’attaque Bit flip cible les cryptosystèmes de chiffrement par flot comme RC4, AES mode CTR ou A5/1. Dans ce modèle de chiffrement, un générateur produit une « suite chiffrante » continue appelée keystream.
Le keystream opère un XOR (ou exclusif) sur les données. Il s’agit d’un addition modulo 2. 


L’opération de déchiffrement consiste à procéder à la même opération entre le chiffré et le keystream pour obtenir le clair.

Soit P (plaintext), C (ciphertext) et K (keystream), on a les relations suivantes

C = K XOR P
P = K XOR C
mais aussi la relation particulière (pour info)
K = C XOR P

Les propriétés du XOR utilisé dans les chiffrements par flot permettent d’agir sur le contenu en clair en modifiant des bits du cryptogramme (ciphertext).

Exemple d’un chiffrement et déchiffrement RC4 d’une chaîne de caractère « uid=1000 » avec une clef de 128-bit 0x00112233445566778899AABBCCDDEEFF.

$ echo -n uid=1000 |openssl enc -rc4 -K 00112233445566778899AABBCCDDEEFF | xxd -p
f032c86aa31751b5

$ echo -n f032c86aa31751b5 | xxd -r -p | openssl enc -rc4 -d -K 00112233445566778899AABBCCDDEEFF; echo
uid=1000

Le cryptogramme f032c86aa31751b5 correspond au texte en clair uid=1000.
    u  i  d  =  1  0  0  0
   f0 32 c8 6a a3 17 51 b5

Si l’attaquant opère une attaque Bit Flip, il peut changer la valeur de certains octets sans que le déchiffrement soit invalide.

Bit flit 

Le mode opératoire proposé est de modifier le cryptogramme à l'aveugle. La partie simulant la boite noire ou le serveur attaqué est représentée par la commande openssl déchiffrant le cryptogramme. La commande xxd convertit la chaîne héxadimale ASCII en une suite binaire d'octets avant traitement par openssl.

$ echo -n f032c86aa21751b5 | xxd -r -p | openssl enc -rc4 -d -K 00112233445566778899AABBCCDDEEFF; echo
uid=0000

autre exemple :

$ echo -n f032c86aa21751b4 | xxd -r -p | openssl enc -rc4 -d -K 00112233445566778899AABBCCDDEEFF; echo
uid=0001

Conlusion


Cette attaque est simple et puissante. Lorsqu’un cryptogramme n'est pas protégé par une intégrité cryptographique et qu'un chiffrement par flot est employé, il est facile de modifier la valeur du clair à l'aveugle. Parfois, certains paramètres d’authentification sont chiffrés de la sorte par les applications Web. Le pentesteur peut alors agir sur la valeur du paramètre (cookie, token, …) pour obtenir des comportements interessants.

Aucun commentaire:

Enregistrer un commentaire