Chrome sur Windows utilise AES pour crypter les cookies du navigateur depuis la v80.
(Le cookie du navigateur Chrome pour Linux et macOS n'est pas mentionné ici. Ci-après, «cookie» désigne le cookie du navigateur Chrome pour Windows)
Auparavant, il était chiffré à l'aide de l'API Windows DPAPI (CryptUnprotectData dans crypt32.dll), mais les cookies chiffrés avec la nouvelle méthode ne peuvent pas être déchiffrés avec l'ancienne méthode.
Les applications qui lisent directement le contenu du fichier cookie de Windows Chrome pour se connecter à un service Web sont affectées par cette modification. (Exemple: visionneuse de commentaires Nico raw)
Le schéma de la procédure de déchiffrement des cookies cryptés AES est présenté ci-dessous.
La valeur par défaut est la suivante (comme avant)
%userprofile%\appdata\local\google\chrome\user data\default\cookies
(Modifications si vous déplacez votre profil, réinstallez Windows, changez votre compte Google, etc.)
Cookie crypté Le début des données est "0x01 00 00 00" → cookie crypté par DPAPI
Cookie crypté Le début des données est "v10" → cookie crypté AES
Le déchiffrement nécessite non seulement une clé mais également une valeur appelée nonce.
Pour nonce, 12 octets après le 4ème octet à l'exclusion du préfixe 3 octets ('v10') à partir du début de chaque cookie chiffré, les données sont utilisées telles quelles.
Par défaut, la clé est encodée et cryptée et stockée dans le fichier Local State
ci-dessous.
%userprofile%\appdata\local\google\chrome\user data\local state
Le contenu de l'état local est au format JSON. Les données de clé chiffrées sont stockées dans ["os_crypt"] -> ["encrypted_key"].
La longueur de la clé obtenue doit être de 256 bits (32 octets).
Vous avez maintenant déchiffré la clé nécessaire pour déchiffrer le cookie.
La partie des données de cookie cryptées excluant les 15 premiers octets ('v10' + nonce 12 octets) est décryptée par AES-GCM 256 bits en utilisant le nonce et la clé obtenus ci-dessus.
De plus, les 16 derniers octets des données déchiffrées sont supprimés.
https://github.com/taizan-hokuto/chrome_cookie
J'utilise la bibliothèque de cryptographie pour AES-GCM.
Si la cryptographie n'est pas incluse, faites pip install cryptography
.
python 3.7.4
Version Chrome: confirmé pour fonctionner avec 80.0.3987.87 (version officielle) (64 bits).
browsercookiejar (regen100) https://github.com/regen100/browsercookiejar
AES GCM example in python and go (sumanmukherjee03) https://gist.github.com/sumanmukherjee03/dd16d6c732a1055b6af97daba484809d
A little tool to play with Windows security (gentilkiwi) https://github.com/gentilkiwi/mimikatz
Recommended Posts