Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
Chrome-App-Bound-Encryption-Decryption — Bypass del cifrado App-Bound de Chromium mediante Reflective Process Hollowing basado en syscalls directas. Extrae cookies, contraseñas, métodos de pago y tokens de Chrome, Edge, Brave y Avast: sin archivos, en modo usuario, sin requerir administrador. | Kitploit
Herramientas/GitHubGitHub/xaitax/chrome-app-bound-encryption-decryption
Herramientas de Cifrado/DescifradoAtaques de ContraseñasExplotaciónExfiltración de DatosRecopilación de InformaciónPost-ExplotaciónCriptografíaRed Teaming

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir
GitHub
xaitax/chrome-app-bound-encryption-decryption

Chrome-App-Bound-Encryption-Decryption

Bypass del cifrado App-Bound de Chromium mediante Reflective Process Hollowing basado en syscalls directas. Extrae cookies, contraseñas, métodos de pago y tokens de Chrome, Edge, Brave y Avast: sin archivos, en modo usuario, sin requerir administrador.

Ver RepositorioSitio web
1.7k2924hace 7 mesesRevisado por Kitploit

ChromElevator (Chrome App-Bound Encryption Decryption)

🚀 Descripción general

Build Status License Platform Languages Ask DeepWiki

Una herramienta de post-explotación que demuestra una evasión completa en memoria del App-Bound Encryption (ABE) de Chromium. Este proyecto utiliza Process Hollowing reflectivo basado en syscalls directos para lanzar un proceso legítimo del navegador en estado suspendido, inyectando sigilosamente un payload para secuestrar su identidad y contexto de seguridad. Esta técnica Living-off-the-Land (LOTL) subvierte el propio modelo de seguridad del navegador. El enfoque sin archivos permite que la herramienta opere completamente desde la memoria, evadiendo los ganchos de API de modo usuario para descifrar y exfiltrar datos sensibles del usuario (cookies, contraseñas, pagos) de los navegadores Chromium modernos.

Si encuentras valiosa esta investigación, te agradecería un café:
ko-fi

🛡️ Pilares técnicos principales

La eficacia de esta herramienta se basa en una combinación de técnicas modernas centradas en la evasión:

  • Syscalls directos para evasión: Evita los ganchos de EDR/AV en modo usuario sobre las funciones estándar de WinAPI invocando directamente las funciones del kernel. El motor resuelve dinámicamente los números de syscall en tiempo de ejecución mediante la técnica Hell's Gate con coincidencia de funciones basada en hash (sin nombres de syscall en texto plano en el binario).

  • Process Hollowing basado en syscalls directos: Una técnica sigilosa de creación e inyección de procesos. En lugar de inyectar en un proceso de alto tráfico y potencialmente monitorizado, crea un nuevo proceso anfitrión suspendido. Esto reduce significativamente las probabilidades de detección, ya que todas las manipulaciones de memoria ocurren antes de que el proceso comience su ejecución normal.

  • Payload sin archivos en memoria: La DLL del payload nunca toca el disco en la máquina objetivo. Está incrustada como una matriz de bytes cifrada con ChaCha20 en tiempo de compilación, con claves derivadas en tiempo de compilación, se descifra en memoria y se carga de forma reflectiva, minimizando su huella forense y evadiendo los escáneres estáticos basados en archivos.

  • Inyección reflectiva de DLL (RDI): Un método sigiloso de inyección de procesos que evita LoadLibrary para el payload principal, evadiendo así los mecanismos de detección que monitorizan las cargas de módulos. El cargador bootstrap autónomo mapea las secciones del PE, realiza reubicaciones y resuelve las importaciones desde la memoria.

  • Invocación COM en el contexto del objetivo: La pieza clave para derrotar a App-Bound Encryption. Al ejecutar código dentro del proceso de confianza del navegador, heredamos su identidad y contexto de seguridad, lo que nos permite realizar llamadas de apariencia legítima al servidor COM de ABE y satisfacer sus comprobaciones de seguridad de validación de rutas.

⚙️ Características

Funcionalidad principal

  • 🔓 Descifrado completo en modo usuario de cookies, contraseñas, métodos de pago, IBAN y tokens OAuth de Google.
  • 📁 Descubre y procesa todos los perfiles de usuario (Default, Profile 1, etc.).
  • 📝 Exporta todos los datos extraídos a archivos JSON estructurados, organizados por perfil.
  • 🔍 Fingerprinting exhaustivo del navegador con información del sistema.

Sigilo y evasión

  • 🛡️ Entrega de payload sin archivos: Descifrado e inyección en memoria de un payload embebido cifrado.
  • 🛡️ Motor de syscalls directos: Evita las defensas comunes de endpoint al eludir las APIs de modo usuario con ganchos para todas las operaciones de proceso.
  • 🛡️ Resolución de syscalls basada en hash: Sin nombres de funciones Nt*/Zw* en texto plano en el binario; utiliza hashes DJB2 en tiempo de compilación.
  • 🛡️ Derivación de claves en tiempo de compilación: Claves de cifrado derivadas de metadatos de compilación, únicas por compilación.
  • 🛡️ Destrucción de cabeceras PE: Las cabeceras PE posteriores a la inyección se obliteran con datos pseudoaleatorios para evadir los escáneres de memoria.
  • 🛡️ Imitación de IPC: Patrones de named pipes específicos del navegador que se mezclan con el tráfico IPC legítimo del navegador.
  • 🤫 Process Hollowing: Crea un proceso anfitrión benigno y suspendido para el payload, evitando la inyección en procesos potencialmente monitorizados.
  • 👻 Inyección reflectiva de DLL: Carga sigilosamente el payload sin llamadas sospechosas a LoadLibrary.
  • 🔒 Omisión no intrusiva de bloqueos de archivos: Utiliza duplicación de handles basada en syscalls para acceder a bases de datos SQLite bloqueadas sin terminar los procesos del navegador. Disponible el flag opcional --kill para la terminación completa del proceso.
  • 💼 No se requieren privilegios de administrador: Opera completamente dentro del contexto de seguridad del usuario.

Compatibilidad y usabilidad

  • 🌐 Funciona en Google Chrome, Brave, Edge y Avast Secure Browser.
  • 💻 Compatible de forma nativa con las arquitecturas x64 y ARM64.
  • 🚀 Operación autónoma: Crea automáticamente un nuevo proceso de navegador para alojar el payload, sin requerir instancias en ejecución preexistentes.
  • 📁 Directorio de salida personalizable para los datos extraídos.
image

📦 Versiones compatibles y probadas

Nota: Chrome/Brave/Edge 144+ utilizan la nueva interfaz COM IElevator2. Esta herramienta usa automáticamente IElevator2 cuando está disponible y recurre a IElevator para versiones anteriores. Avast Secure Browser utiliza una interfaz personalizada IElevatorChrome con una vtable extendida (12 métodos, DecryptData en el offset 104).

🔍 Matriz de soporte de funcionalidades

Esta matriz describe las capacidades de extracción para cada navegador compatible.

🔬 Flujo de trabajo técnico

La ejecución de la herramienta se centra en el sigilo y la eficiencia, y se construye en torno a un proceso de Reflective Hollowing basado en syscalls directos. Este enfoque garantiza que se realizan pocas llamadas de API de alto nivel y que el payload opera desde dentro de un proceso de navegador legítimo recién creado.

Etapa 1: El inyector (chromelevator.exe)

  1. Pre-vuelo e inicialización: El inyector comienza inicializando su motor de syscalls directos, analizando dinámicamente ntdll.dll para resolver los números de syscall (SSN) mediante coincidencia basada en hash y localizar gadgets de transición al kernel (syscall/ret o svc/ret). Si se especifica el flag --kill, utiliza los syscalls NtGetNextProcess y NtTerminateProcess para terminar todas las instancias en ejecución del navegador objetivo, liberando los bloqueos de archivo en las bases de datos SQLite.
  2. Preparación del payload: La DLL del payload principal, que está incrustada como una matriz de bytes cifrada con ChaCha20 en tiempo de compilación y con claves derivadas en tiempo de compilación, se descifra completamente en memoria.
  3. Process Hollowing: En lugar de apuntar a un proceso existente, el inyector crea una nueva instancia del navegador objetivo en estado CREATE_SUSPENDED (CreateProcessW). Este proceso suspendido e intacto sirve como anfitrión de nuestro payload.
  4. Inyección reflectiva mediante syscalls: Usando el motor de syscalls directos, el inyector realiza una serie de acciones sigilosas sobre el proceso suspendido:
    • Asigna memoria usando NtAllocateVirtualMemory (syscall directo).

Etapa 2: El payload inyectado (en memoria)

  1. Arranque (bootstrapping): El cargador reflectivo Bootstrap se ejecuta, funcionando como un cargador de PE personalizado en memoria con sigilo mejorado:
    • Asigna nueva memoria para el payload usando syscalls directos a NtAllocateVirtualMemory (evadiendo VirtualAlloc con ganchos).
    • Mapea correctamente las secciones de la DLL y realiza reubicaciones base.
    • Resuelve su tabla de direcciones de importación (IAT) analizando el PEB y aplicando hash a los nombres de las funciones.
    • Establece los permisos de las secciones usando syscalls directos a NtProtectVirtualMemory.
    • Destruye las cabeceras PE sobrescribiendo las cabeceras DOS/NT con datos pseudoaleatorios, eliminando la firma MZ de la memoria.
    • Finalmente, invoca el DllMain del payload.
  2. Conexión y configuración: El DllMain crea un nuevo hilo que se conecta inmediatamente al handle del named pipe pasado por el inyector. Lee la configuración, incluida la ruta de salida, enviada por el inyector. Todos los registros y actualizaciones de estado posteriores se reenvían a través de este pipe.
  3. Secuestro COM en el contexto del objetivo: Ahora ejecutándose de forma nativa dentro del proceso del navegador, el payload instancia el servidor COM interno del navegador (IElevator2 para Chrome/Brave 144+, IElevator para versiones anteriores, para Edge, o para Avast Secure Browser). Dado que la llamada se origina desde una ruta de proceso de confianza, se superan todas las comprobaciones de seguridad del servidor.

🔧 Instrucciones de compilación

Este proyecto utiliza un script de compilación simple y robusto que maneja automáticamente toda la compilación y el embebido del payload.

  1. Clona este repositorio.

  2. Abre un Developer Command Prompt for VS (o cualquier shell con MSVC habilitado).

  3. Ejecuta el script de compilación make.bat desde la raíz del proyecto.

Opciones de compilación:

  • make.bat - Compilación completa (por defecto)
  • make.bat clean - Elimina todos los artefactos de compilación
  • make.bat build_encryptor_only - Compila solo el cifrador (usado por CI)
  • make.bat build_target_only - Compila payload e inyector (usado por CI)

Compilaciones automatizadas con GitHub Actions

Este proyecto usa GitHub Actions para compilar automáticamente el ejecutable del inyector (chromelevator.exe) para las arquitecturas x64 y ARM64.

Puedes encontrar los binarios precompilados más recientes en la página de Releases. Los ejecutables para ambas arquitecturas se empaquetan juntos en un único archivo .zip conveniente.

Contenido del paquete de lanzamiento:

  • chromelevator_x64.exe
  • chromelevator_arm64.exe

🚀 Uso```bash

PS> .\chromelevator.exe --help

_________ .__ . __ _ ___ | | ____ _____ _ /| | _______ _______ / | ___________ / \ /| | _ __ / _ \ / \ | ) | | / __ \ / /_ \ / _ _ __
\ _
| Y \ | ( <
> ) Y Y | | |\ /\ / / __ | | ( <> ) | / _
/
| /| _/|__|| /_______ /|/___ >_/ ( /| __/|__| / / / / / / Direct Syscall-Based Reflective Hollowing x64 & ARM64 | v0.20.0 by @xaitax

Usage: chromelevator.exe [options] <chrome|chrome-beta|edge|brave|avast|all>

Options: -v, --verbose Show detailed output -f, --fingerprint Extract browser fingerprint -k, --kill Kill all browser processes before extraction -o, --output-path Custom output directory

root@kitploit:~
### Opciones

- `--output-path <path>` o `-o <path>`
  Especifica el directorio base para los archivos de salida.
  Por defecto es `.\output\` relativo a la ubicación del inyector.
  Los datos se organizarán en subcarpetas: `<path>/<NombreDelNavegador>/<NombreDelPerfil>/`.

- `--verbose` o `-v`
  Habilita una salida de depuración exhaustiva del inyector.

- `--fingerprint` o `-f`
  Extrae datos completos de huella digital del navegador, incluyendo versión, extensiones, ajustes de seguridad e información del sistema.
  Los resultados se guardan en `fingerprint.json` en el directorio de salida del navegador.

- `--kill` o `-k`
  **Termina todos los procesos del navegador antes de la extracción.** Usa llamadas directas al sistema (`NtTerminateProcess`) para finalizar todas las instancias en ejecución del(los) navegador(es) objetivo antes de intentar la extracción de datos. Esto es útil cuando los navegadores están en ejecución y mantienen bloqueos sobre los archivos de base de datos, impidiendo que la herramienta acceda a cookies u otros datos cifrados.

- `--help` o `-h`
  Muestra este mensaje de ayuda.

### Ejecución normal

###```bash
PS> .\chromelevator.exe all

_________ .__                         ___________.__                       __
\_   ___ \|  |_________  ____   _____ \_   _____/|  |   _______  _______ _/  |_  ___________
/    \  \/|  |  \_  __ \/  _ \ /     \ |    __)_ |  | _/ __ \  \/ /\__  \\   __\/  _ \_  __ \
\     \___|   Y  \  | \(  <_> )  Y Y  \|        \|  |_\  ___/\   /  / __ \|  | (  <_> )  | \/
 \______  /___|  /__|   \____/|__|_|  /_______  /|____/\___  >\_/  (____  /__|  \____/|__|
        \/     \/                   \/        \/           \/           \/
 Direct Syscall-Based Reflective Hollowing
 x64 & ARM64 | v0.20.0 by @xaitax

  ┌──── Brave (143.1.85.120) ──────────────────────
  │
  │ Decryption Key
  │ 2522A3C1730EA8EE84BAAD1994DB31E20437D9DCF27628997598BB5B86F73DCD
  │
  ├── Default
  │   Cookies     3312
  │   Passwords   55
  │   Cards       1
  │   IBANs       1
  │
  └── 3312 cookies, 55 passwords, 1 cards, 1 IBANs (1 profile)
      C:\Users\ah\Documents\GitHub\Chrome-App-Bound-Encryption-Decryption\output\Brave

  ┌──── Chrome (143.0.7499.193) ───────────────────
  │
  │ Decryption Key
  │ 3FA14DC988A34C85BDB872159B739634CB7E56F8E34449C1494297B9B629D094
  │
  ├── Default
  │   Cookies     380
  │   Passwords   1
  │
  ├── Profile 1
  │   Cookies     932
  │   Passwords   791
  │   Cards       1
  │   IBANs       1
  │   Tokens      2
  │
  └── 1312 cookies, 792 passwords, 1 cards, 1 IBANs, 2 tokens (2 profiles)
      C:\Users\ah\Documents\GitHub\Chrome-App-Bound-Encryption-Decryption\output\Chrome

  ┌──── Chrome Beta (144.0.7559.59) ───────────────
  │
  │ Decryption Key
  │ C147F0657D7AD5881F16CC0A2994E41A18A7B5F567B8CF81C7F87227ABB4F1B7
  │
  ├── Default
  │   Cookies     224
  │
  └── 224 cookies (1 profile)
      C:\Users\ah\Documents\GitHub\Chrome-App-Bound-Encryption-Decryption\output\Chrome Beta

  ┌──── Edge (144.0.3719.67) ──────────────────────
  │
  │ Decryption Key
  │ B0334FAD7F5805362CB4C44B144A95AB7A68F7346EF99EB3F175F09DB08C8FD9
  │
  ├── Default
  │   Cookies     226
  │   Passwords   2
  │   Cards       1
  │
  ├── Profile 1
  │   Cookies     25
  │
  └── 251 cookies, 2 passwords, 1 cards (2 profiles)
      C:\Users\ah\Documents\GitHub\Chrome-App-Bound-Encryption-Decryption\output\Edge

Detallado```bash

PS> .\chromelevator.exe -v -f chrome

_________ .__ . __ _ ___ | | ____ _____ _ /| | _______ _______ / | ___________ / \ /| | _ __ / _ \ / \ | ) | | / __ \ / /_ \ / _ _ __
\ _
| Y \ | ( <
> ) Y Y | | |\ /\ / / __ | | ( <> ) | / _
/
| /| _/|__|| /_______ /|/___ >_/ ( /| __/|__| / / / / / / Direct Syscall-Based Reflective Hollowing x64 & ARM64 | v0.20.0 by @xaitax

┌──── Chrome (143.0.7499.193) ─────────────────── │ Creating suspended process: C:\Program Files\Google\Chrome\Application\chrome.exe │ [+] Process created (PID: 26560) │ [+] IPC pipe established: \.\pipe\chrome.nacl.49645_5F55 │ Deriving runtime decryption keys... │ [+] Payload decrypted (1073 KB) │ [+] Bootstrap entry point resolved (offset: 0x2ae70) │ Allocating memory in target process via syscall... │ [+] Memory allocated at 0x268e2d90000 (1076 KB) │ [+] Payload + parameters written │ [+] Memory protection set to PAGE_EXECUTE_READ │ Creating remote thread via syscall... │ [+] Thread created (entry: 0x268e2dbae70) │ Awaiting payload connection... │ [+] Payload connected │ Running in Chrome │ │ Decryption Key │ 3FA14DC988A34C85BDB872159B739634CB7E56F8E34449C1494297B9B629D094 │ ├── Default │ Size 14 MB │ Cookies 380 │ Passwords 1 │ ├── Profile 1 │ Size 491 MB │ Cookies 932 │ Passwords 791 │ Cards 1 │ IBANs 1 │ Tokens 2 │ Extracting comprehensive fingerprint... │ Fingerprint saved to fingerprint.json │ └── 1312 cookies, 792 passwords, 1 cards, 1 IBANs, 2 tokens (2 profiles) C:\Users\ah\Documents\GitHub\Chrome-App-Bound-Encryption-Decryption\output\Chrome

root@kitploit:~
## 📂 Extracción de Datos

Una vez que el descifrado se completa, los datos se guardan en la ruta de salida especificada (por defecto `.\output\` si no se especifica mediante `--output-path`). Los archivos se organizan de la siguiente manera:

**Ruta base:** `YOUR_CHOSEN_PATH` (por ejemplo, `.\output\` o la ruta que proporciones)
**Estructura:** <Base Path>/<BrowserName>/<ProfileName>/<data_type>.json

Ejemplos de rutas (asumiendo la ubicación de salida predeterminada):

- 🍪 **Cookies (perfil predeterminado de Chrome):** .\output\Chrome\Default\cookies.json
- 🔑 **Contraseñas (Perfil 1 de Edge):** .\output\Edge\Profile 1\passwords.json
- 💳 **Métodos de pago (perfil predeterminado de Brave):** .\output\Brave\Default\payments.json
- 🏦 **IBANs (Perfil 1 de Chrome):** .\output\Chrome\Profile 1\iban.json

### 🍪 Extracción de Cookies

Cada archivo de cookies es un array JSON de objetos:```json
[
  {
    "host": "accounts.google.com",
    "name": "ACCOUNT_CHOOSER",
    "path": "/",
    "expires": 1766591611,
    "value": "AFx_qI781-…"
  },
  {
    "host": "mail.google.com",
    "name": "OSID",
    "path": "/mail",
    "expires": 1766591611,
    "value": "g.a000uwj5ufIS…"
  },
  …
]

🔑 Extracción de contraseñas

Cada archivo de contraseñas es un array JSON de objetos:```json [ { "url": "https://example.com/login", "user": "[email protected]", "pass": "••••••••••" }, … ]

root@kitploit:~
### 💳 Extracción de Métodos de Pago

Cada archivo de pago es un array JSON de objetos:```json
[
  {
    "name": "John Doe",
    "month": 12,
    "year": 2030,
    "number": "••••••••••1234",
    "cvc": "•••"
  },
  …
]

🏦 Extracción de IBAN

Cada archivo IBAN es una matriz JSON de objetos:```json [ { "nickname": "UK Test", "iban": "GB33BUKB20201555555555" } ]

root@kitploit:~
### 🎟️ Extracción de Tokens

Cada archivo de token es un array JSON de objetos que contiene el servicio, el token descifrado y la clave de vinculación (si está presente):```json
[
  {
    "service": "AccountId-112823413702122221871",
    "token": "1//03VJGN_vL2FR5CgYIARAAGAMSNwF-L9IrtiyH_tmtOneETFya5GEGiewlEMrLwDMuOl56zRoShNE77DfyOXhofn5Ryo_...",
    "binding_key": ""
  }
]

🔍 Fingerprinting del navegador

Al usar la bandera --fingerprint o -f, se genera un informe completo de metadatos:```json { "browser": "Chrome", "executable_path": "C:\Program Files\Google\Chrome\Application\chrome.exe", "browser_version": "143.0.7499.170", "user_data_path": "C:\Users\username\AppData\Local\Google\Chrome\User Data", "sync_enabled": false, "enterprise_managed": true, "update_channel": "stable", "hardware_acceleration": false, "metrics_enabled": false, "autofill_enabled": true, "password_manager_enabled": false, "safe_browsing_enabled": true, "do_not_track": false, "third_party_cookies_blocked": false, "translate_enabled": true, "installed_extensions_count": 2, "extension_ids": ["ghbmnnjooekpmoecnnnilnnbdlolhkhi", "nmmhkkegccagdldgiimedpiccmgmieda"], "profile_count": 2, "computer_name": "DESKTOP-ABC123", "windows_user": "username", "os_version": "10.0.26220", "architecture": "ARM64", "last_config_update": 1766578854, "extraction_timestamp": 1766591611, "extraction_complete": true }

root@kitploit:~
Este dato proporciona inteligencia sobre la configuración del navegador, su postura de seguridad y el contexto del sistema.

## 📚 Análisis Técnico en Profundidad e Investigación

Para una comprensión completa del App-Bound Encryption de Chrome, las complejidades de su implementación, la mecánica detallada del enfoque de esta herramienta y una discusión más amplia de los vectores de seguridad relacionados, consulte mi documento de investigación detallado:

1.  ➡️ **[App-Bound Encryption (ABE) de Chrome: Análisis Técnico en Profundidad y Notas de Investigación](https://github.com/xaitax/chrome-app-bound-encryption-decryption/blob/main/docs/RESEARCH.md)**

    Este documento cubre:

    - La evolución de DPAPI a ABE.
    - Un desglose paso a paso del mecanismo ABE, incluidas las interacciones COM `IElevator`/`IElevator2` y el envoltorio de claves.
    - Metodología detallada de la estrategia de inyección de DLL utilizada por esta herramienta.
    - Análisis de las estructuras de datos cifradas y conocimientos relevantes del código fuente de Chromium.
    - Discusión de vectores de descifrado alternativos y las defensas en evolución de Chrome.

2.  ➡️ **[El curioso caso del COM intratable: Descifrando el App-Bound Encryption de Microsoft Edge](https://github.com/xaitax/chrome-app-bound-encryption-decryption/blob/main/docs/The_Curious_Case_of_the_Cantankerous_COM_Decrypting_Microsoft_Edge_ABE.md)**

    Este artículo detalla los desafíos específicos y el viaje de ingeniería inversa emprendido para lograr un descifrado ABE fiable para Microsoft Edge. Incluye:

    - Un relato de los problemas iniciales y los códigos de error engañosos (`E_INVALIDARG`, `E_NOINTERFACE`).
    - El proceso de usar la introspección de la biblioteca de tipos COM (con Python `comtypes`) para descubrir la estructura de la vtable y la herencia únicas de `IElevatorEdge` de Edge.
    - Cómo esta información condujo a stubs de interfaz C++ personalizados para una interacción exitosa con el servicio ABE de Edge.
    - Una mirada práctica a la depuración de problemas difíciles de interoperabilidad COM.

3.  ➡️ **[El ascensor recibe una actualización: Chrome 144, IElevator2 y el horizonte Mojo](https://github.com/xaitax/chrome-app-bound-encryption-decryption/blob/main/docs/The_Elevator_Gets_an_Upgrade_Chrome_144_IElevator2_and_the_Mojo_Horizon.md)**

    Este artículo cubre la nueva interfaz COM `IElevator2` de Chrome 144 y lo que significa para ABE:

    - Comparación técnica entre las interfaces `IElevator` de Chrome 143 y `IElevator2` de Chrome 144.
    - Análisis de los dos nuevos métodos (`RunIsolatedChrome`, `AcceptInvitation`) y su conexión con la migración planificada de Mojo IPC de Chromium.
    - Comparación del diseño de la VTable que muestra la preservación de la compatibilidad hacia atrás.
    - La adopción parcial de `IElevator2` por parte de Edge 144 y las nuevas interfaces de Copilot.
    - Evaluación honesta de lo que la migración de Mojo cambia (y no cambia) para la seguridad de ABE.

4.  ➡️ **[COMrade ABE: Tu manual de campo para el trasfondo COM del App-Bound Encryption](https://github.com/xaitax/chrome-app-bound-encryption-decryption/blob/main/docs/COMrade_ABE_Field_Manual.md)**

    Este manual de campo presenta **COMrade ABE**, un analizador dinámico basado en Python para interfaces COM de ABE, y profundiza en sus aplicaciones prácticas:

    - Explica la necesidad del análisis dinámico de interfaces COM debido a las variaciones y actualizaciones de los navegadores.
    - Detalla la metodología de COMrade ABE: escaneo del registro para el descubrimiento de servicios, carga y análisis de la biblioteca de tipos, y coincidencia heurística de firmas de métodos ABE.
    - Proporciona una guía completa para interpretar la salida de COMrade ABE, incluidos CLSIDs, IIDs (estilo estándar y C++), y la importancia de los detalles de salida verbosa como los desplazamientos de VTable, las interfaces definitorias y las cadenas completas de herencia.
    - Destaca la utilidad de los stubs C++ generados automáticamente (`--output-cpp-stub`) para el desarrollo y la investigación rápidos.
    - Analiza cómo COMrade ABE ayuda a adaptarse a los cambios de ABE, analizar nuevos navegadores Chromium y comprender las personalizaciones COM específicas de cada proveedor.

## 🔗 Recursos Adicionales e Investigación

Este proyecto se basa en el trabajo y el análisis de la comunidad de seguridad en general.

- **Documentación Oficial y Anuncios:**

  - [Google Security Blog: Mejorando la seguridad de las cookies de Chrome en Windows](https://security.googleblog.com/2024/07/improving-security-of-chrome-cookies-on.html)
  - [Documento de diseño: Servicio de cifrado app-bound de Chrome](https://drive.google.com/file/d/1xMXmA0UJifXoTHjHWtVir2rb94OsxXAI/view)

- **Investigación Comunitaria y Reconocimientos:**
  - Prueba de concepto por [snovvcrash](https://gist.github.com/snovvcrash/caded55a318bbefcb6cc9ee30e82f824)

## 🗒️ Registro de Cambios

Todos los cambios notables de este proyecto están documentados en el archivo [**CHANGELOG**](https://github.com/xaitax/chrome-app-bound-encryption-decryption/blob/main/CHANGELOG.md). Esto incluye el historial de versiones, nuevas funciones, correcciones de errores y mejoras de seguridad.

## 📜 Licencia

Este proyecto está licenciado bajo la Licencia MIT; consulte el archivo [LICENSE](https://github.com/xaitax/chrome-app-bound-encryption-decryption/blob/main/LICENSE) para más detalles.

## 💡 Filosofía del Proyecto y Descargo de Responsabilidad

> [!IMPORTANT]
> Este es un proyecto hobby creado con fines educativos y de investigación en seguridad. Sirve como una experiencia de aprendizaje personal y un campo de juego para explorar conceptos avanzados de Windows.
>
> **Esta herramienta NO está diseñada para ser un infostealer completo ni una herramienta garantizada de evasión de EDR.** Si bien emplea técnicas avanzadas, su objetivo principal es demostrar y diseccionar el mecanismo ABE, no proporcionar sigilo operativo para usos maliciosos. Asegúrese de cumplir con todas las pautas legales y éticas pertinentes.
Descargar herramienta
NavegadorVersión probada (x64 y ARM64)
Google Chrome144.0.7559.133
Google Chrome Beta145.0.7632.18
Brave1.86.148 (144.1.86.148)
Microsoft Edge145.0.3800.36
Avast Secure Browser143.0.33371.147
FuncionalidadGoogle ChromeMicrosoft EdgeBraveAvast Secure Browser
Cookies✅ ABE✅ ABE✅ ABE✅ ABE
Contraseñas✅ ABE✅ ABE✅ ABE✅ ABE
Métodos de pago✅ ABE✅ ABE✅ ABE✅ ABE
IBAN✅ ABE❌ N/A✅ ABE✅ ABE
Tokens de autenticación✅ Google❌ N/A❌ N/A❌ N/A
  • Escribe la DLL del payload descifrada en el espacio asignado con NtWriteVirtualMemory.
  • Cambia los permisos de la región de memoria a ejecutable usando NtProtectVirtualMemory (syscall directo).
  • Crea un named pipe para la comunicación y escribe el nombre del pipe en la memoria del objetivo.
  • Ejecución y control: Se crea un nuevo hilo en el proceso objetivo usando NtCreateThreadEx. La dirección de inicio del hilo apunta directamente a la exportación Bootstrap del payload, con la dirección del nombre del pipe remoto como argumento. El hilo principal original del navegador permanece suspendido y nunca se reanuda. El inyector espera entonces a que el payload se conecte de vuelta al pipe.
  • IEdgeElevatorFinal
    IAvastElevator
  • Descifrado de la clave maestra: El payload llama al método DecryptData de la interfaz COM, proporcionando la app_bound_encrypted_key que lee del archivo Local State. El servidor COM descifra obedientemente la clave y devuelve la clave maestra AES-256 en texto plano al payload.
  • Exfiltración de datos: Armado con la clave AES, el payload enumera todos los perfiles de usuario (Default, Profile 1, etc.). Para cada perfil, consulta las bases de datos SQLite relevantes (Cookies, Login Data, Web Data), descifra los blobs de datos usando AES-256-GCM y formatea los secretos como JSON. Los resultados se escriben directamente en el directorio de salida especificado por el inyector.
  • Apagado: Después de procesar todos los perfiles, el payload envía una señal de finalización al inyector a través del pipe y llama a FreeLibraryAndExitThread para limpiar. El inyector, al recibir la señal, termina el proceso anfitrión padre con NtTerminateProcess.