Décrypter les cookies Windows Chrome cryptés AES [python]

Aperçu

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.

Emplacement du fichier de cookies Windows Chrome

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.)

Identification des cookies cryptés AES

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

Ce dont vous avez besoin pour le décryptage

Le déchiffrement nécessite non seulement une clé mais également une valeur appelée nonce.

Position / longueur du 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.

Emplacement de stockage de encrypted_key

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"].

aes.png

Décryptage de la clé

  1. Décodez la valeur encrypted_key extraite de JSON (fichier d'état local) avec BASE64.
  2. Supprimez les 5 premiers octets (préfixe «DPAPI») des données décodées. 3.2 Décrypter davantage les données en 2 avec DPAPI. Pour le décryptage par DPAPI, utilisez CryptUnprotectData de crypt32.dll qui est identique à l'ancienne méthode.

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.

Décryptage des données des cookies

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.

Implémentation par python

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).

Référencé

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

Décrypter les cookies Windows Chrome cryptés AES [python]
Python sur Windows
environnement windows python
Installation de Python (Windows)
Méthode d'installation Python Windows
Python à partir de Windows 7
python basic ② sous windows
Installez python sur Windows
Installez Python (pour Windows)
Activer Python virtualenv sous Windows
Python avec VSCode (Windows 10)
Exécutez Openpose sur Python (Windows)
Comment installer Python [Windows]
Exécutez python avec PyCharm (Windows)
Installer watchdog sur Windows + Python 3.3
Installez Python et Flask (Windows 10)
Procédure d'installation de Python 3.6 [pour Windows]
[Python] Éliminer les erreurs de Chrome Webdriver
Windows10: installation de la bibliothèque dlib pour python
Développement Python + Kivy sous Windows
Construction de l'environnement Python (Windows10 + Emacs)
Sphinx-autobuild (0.5.2) sous Windows7, Python 3.5.1, Sphinx 1.3.5
Installation de Python la plus rapide sous Windows
Créer un environnement Python sur Windows
Construire un environnement Python avec Windows
Construire un environnement Python sous un environnement Windows 7
J'ai exécuté python sur Windows
[Python] [Chainer] [Windows] Installer Chainer sous Windows
Installation de Python en 2 lignes @Windows
Utiliser Python sur Windows (PyCharm)
Synchronisation de l'heure (Windows) avec Python
Installer dlib pour Python (Windows)