
Proyecto .NET 4.0 CLR para recuperar datos de Chromium, como cookies, historial e inicios de sesión guardados.
SharpChromium es un proyecto .NET 4.0+ CLR diseñado para recuperar datos de Google Chrome, Microsoft Edge y Microsoft Edge Beta. Actualmente es capaz de extraer:
Nota: Todas las cookies se devuelven en formato JSON. Si tienes instalada la extensión Cookie Editor, puedes simplemente copiar y pegar en la sección "Importar" de este complemento del navegador para utilizar la sesión extraída.
Esta reescritura presenta varias ventajas con respecto a implementaciones anteriores, que incluyen:
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""
Recuperar cookies asociadas a Google Docs y Github
.\SharpChromium.exe cookies docs.google.com github.com

Recuperar elementos del historial y sus cookies asociadas.
.\SharpChromium.exe history

Recuperar inicios de sesión guardados (Nota: solo muestra aquellos con contraseñas no vacías):
.\SharpChromium.exe logins

El analizador de bases de datos SQLite tiene un pequeño error. Esto se debe a que el analizador detecta correctamente los blobs de datos como tipo System.Byte[], pero no detecta correctamente las columnas de tipo System.Byte[]. Como resultado, los arrays de bytes se convierten en la cadena literal "System.Byte[]", lo cual es incorrecto. Aún no he llegado a la raíz del problema, pero como solución rápida y sucia he codificado todos los valores blob como cadenas Base64. Por lo tanto, si deseas recuperar un valor de una columna cuyos valores de datos normales serían un array de bytes, deberás decodificarlos primero con Base64.
Un gran agradecimiento a @plainprogrammer por su proyecto C#-SQLite, que permitió el análisis nativo de los archivos SQLite sin tener que cargar una DLL de forma reflectiva. Sin su trabajo, este proyecto no sería ni de lejos tan limpio como es. Ese proyecto se puede encontrar aquí: https://github.com/plainprogrammer/csharp-sqlite
Gracias a @gentlekiwi, cuyo trabajo en Mimikatz guió la reescritura del esquema de descifrado en v80+.
Gracias a @harmj0y, que talló el código PInvoke BCrypt necesario para que pudiera eliminar dependencias adicionales de este proyecto, haciéndolo nuevamente ligero.