
Projet .NET 4.0 CLR pour récupérer les données Chromium, telles que les cookies, l'historique et les identifiants enregistrés.
SharpChromium est un projet .NET 4.0+ CLR pour récupérer des données depuis Google Chrome, Microsoft Edge et Microsoft Edge Beta. Actuellement, il peut extraire :
Remarque : Tous les cookies retournés sont au format JSON. Si vous avez l'extension Cookie Editor installée, vous pouvez simplement copier-coller dans la section « Import » de ce module complémentaire pour utiliser la session extraite.
Cette réécriture présente plusieurs avantages par rapport aux implémentations précédentes, notamment :
Usage:
.\SharpChromium.exe arg0 [arg1 arg2 ...]
Arguments:
all - Retrieve all Chromium Cookies, History and Logins.
full - The same as 'all'
logins - Retrieve all saved credentials that have non-empty passwords.
history - Retrieve user's history with a count of each time the URL was
visited, along with cookies matching those items.
cookies [domain1.com domain2.com] - Retrieve the user's cookies in JSON format.
If domains are passed, then return only
cookies matching those domains. Otherwise,
all cookies are saved into a temp file of
the format ""%TEMP%\$browser-cookies.json""
Récupérer les cookies associés à Google Docs et Github
.\SharpChromium.exe cookies docs.google.com github.com

Récupérer les éléments de l'historique et leurs cookies associés.
.\SharpChromium.exe history

Récupérer les identifiants enregistrés (Remarque : Affiche uniquement ceux avec des mots de passe non vides) :
.\SharpChromium.exe logins

Le parseur de base de données SQLite est légèrement bogué. Cela est dû au fait que le parseur détecte correctement les blobs de données comme étant de type System.Byte[], mais qu'il ne détecte pas correctement les colonnes de type System.Byte[]. En conséquence, les tableaux d'octets sont convertis en la chaîne littérale "System.Byte[]", ce qui est incorrect. Je n'ai pas encore trouvé la cause racine, mais comme solution de contournement rapide et sale, j'ai encodé toutes les valeurs blob sous forme de chaînes Base64. Ainsi, si vous souhaitez récupérer une valeur d'une colonne dont les valeurs de données normales seraient un tableau d'octets, vous devrez d'abord les décoder en Base64.
Un grand merci à @plainprogrammer pour leur projet C#-SQLite qui a permis l'analyse native des fichiers SQLite sans avoir à charger une DLL par réflexion. Sans leur travail, ce projet ne serait pas aussi propre qu'il l'est. Ce projet se trouve ici : https://github.com/plainprogrammer/csharp-sqlite
Merci à @gentlekiwi dont le travail sur Mimikatz a guidé la réécriture du schéma de déchiffrement dans la v80+
Merci à @harmj0y qui a extrait le code PInvoke BCrypt nécessaire afin que je puisse supprimer des dépendances supplémentaires de ce projet, le rendant à nouveau léger.