Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
Chrome-App-Bound-Encryption-Decryption — Обход App-Bound Encryption в Chromium через Reflective Process Hollowing на основе прямых системных вызовов. Извлечение cookies, паролей, платёжных методов и токенов из Chrome, Edge, Brave и Avast — бесфайловый, в пользовательском режиме, без прав администратора. | Kitploit
Инструменты/GitHubGitHub/xaitax/chrome-app-bound-encryption-decryption
Инструменты шифрования/дешифрованияАтаки на ПаролиЭксплуатацияЭксфильтрация данныхСбор информацииПост-эксплуатацияКриптографияRed Teaming

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
GitHub
xaitax/chrome-app-bound-encryption-decryption

Chrome-App-Bound-Encryption-Decryption

Обход App-Bound Encryption в Chromium через Reflective Process Hollowing на основе прямых системных вызовов. Извлечение cookies, паролей, платёжных методов и токенов из Chrome, Edge, Brave и Avast — бесфайловый, в пользовательском режиме, без прав администратора.

РепозиторийСайт
1.7k29247 месяцев назадПроверено Kitploit

ChromElevator (Chrome App-Bound Encryption Decryption)

🚀 Overview

Build Status License Platform Languages Ask DeepWiki

Постэксплуатационный инструмент, демонстрирующий полный обход App-Bound Encryption (ABE) в Chromium, выполняемый полностью в памяти. Проект использует Direct Syscall-based Reflective Process Hollowing для запуска легитимного процесса браузера в приостановленном состоянии и скрытной инъекции полезной нагрузки с целью перехвата его идентичности и контекста безопасности. Эта техника Living-off-the-Land (LOTL) подрывает собственную модель безопасности браузера. Бесфайловый подход позволяет инструменту работать целиком из памяти, обходя хуки API пользовательского режима, чтобы расшифровывать и выводить конфиденциальные данные пользователя (файлы cookie, пароли, платёжную информацию) из современных браузеров на базе Chromium.

Если вы считаете это исследование полезным, буду благодарен за чашечку кофе:
ko-fi

🛡️ Core Technical Pillars

Эффективность этого инструмента основана на сочетании современных техник, ориентированных на обход средств защиты:

  • Direct Syscalls for Evasion: Обходят пользовательские хуки EDR/AV на стандартных функциях WinAPI, напрямую вызывая функции ядра. Движок динамически определяет номера системных вызовов во время выполнения с помощью техники Hell's Gate и сопоставления функций по хэшу (в бинарном файле нет имён системных вызовов в открытом виде).

  • Direct Syscall-Based Process Hollowing: Скрытная техника создания процесса и внедрения. Вместо внедрения в процесс с высокой активностью, за которым могут следить, она создаёт новый приостановленный процесс-хост. Это значительно снижает вероятность обнаружения, поскольку все манипуляции с памятью происходят до начала нормального выполнения процесса.

  • Fileless In-Memory Payload: DLL полезной нагрузки никогда не попадает на диск целевой машины. Она встроена в виде зашифрованного ChaCha20 массива байт на этапе компиляции с ключами, производными на этапе компиляции, расшифровывается в памяти и загружается рефлексивно, что минимизирует криминалистический след и обходит статические сканеры файлов.

  • Reflective DLL Injection (RDI): Скрытный метод внедрения в процесс, который обходит LoadLibrary для основной полезной нагрузки, избегая механизмов обнаружения, следящих за загрузкой модулей. Самодостаточный загрузчик начальной загрузки отображает PE-секции, выполняет релокации и разрешает импорт из памяти.

  • Target-Context COM Invocation: Ключевой элемент для преодоления App-Bound Encryption. Выполняя код внутри доверенного процесса браузера, мы наследуем его идентичность и контекст безопасности, что позволяет совершать вызовы к COM-серверу ABE, которые выглядят легитимными, и удовлетворять его проверки безопасности на основе пути.

⚙️ Features

Core Functionality

  • 🔓 Полная дешифровка в пользовательском режиме файлов cookie, паролей, платёжных методов, IBAN и токенов Google OAuth.
  • 📁 Обнаруживает и обрабатывает все профили пользователей (Default, Profile 1 и т. д.).
  • 📝 Экспортирует все извлечённые данные в структурированные JSON-файлы, организованные по профилям.
  • 🔍 Комплексное снятие цифрового отпечатка браузера с системной информацией.

Stealth & Evasion

  • 🛡️ Бесфайловая доставка полезной нагрузки: расшифровка в памяти и внедрение зашифрованной встроенной полезной нагрузки.
  • 🛡️ Движок прямых системных вызовов: обходит типовые защиты конечных точек, избегая хукаемых API пользовательского режима для всех операций с процессами.
  • 🛡️ Разрешение системных вызовов по хэшу: в бинарном файле нет имён функций Nt*/Zw* в открытом виде — используются хэши DJB2, вычисляемые на этапе компиляции.
  • 🛡️ Вывод ключей на этапе компиляции: ключи шифрования выводятся из метаданных сборки и уникальны для каждой сборки.
  • 🛡️ Уничтожение PE-заголовков: после внедрения PE-заголовки затираются псевдослучайными данными для обхода сканеров памяти.
  • 🛡️ Имитация IPC: характерные для браузера шаблоны именованных каналов, которые сливаются с легитимным IPC-трафиком браузера.
  • 🤫 Process Hollowing: создаёт безобидный приостановленный процесс-хост для полезной нагрузки, избегая внедрения в процессы, за которыми могут следить.
  • 👻 Reflective DLL Injection: скрытно загружает полезную нагрузку без подозрительных вызовов LoadLibrary.
  • 🔒 Неинтрузивный обход блокировки файлов: использует дублирование дескрипторов на основе системных вызовов для доступа к заблокированным базам данных SQLite без завершения процессов браузера. Для полного завершения процессов доступен опциональный флаг --kill.
  • 💼 Не требуются права администратора: работает полностью в контексте безопасности пользователя.

Compatibility & Usability

  • 🌐 Работает в Google Chrome, Brave, Edge и Avast Secure Browser.
  • 💻 Нативно поддерживает архитектуры x64 и ARM64.
  • 🚀 Автономная работа: автоматически создаёт новый процесс браузера для размещения полезной нагрузки, не требуя уже запущенных экземпляров.
  • 📁 Настраиваемая выходная директория для извлечённых данных.
image

📦 Supported & Tested Versions

Примечание: Chrome/Brave/Edge 144+ используют новый COM-интерфейс IElevator2. Инструмент автоматически использует IElevator2 при его наличии и возвращается к IElevator для более старых версий. Avast Secure Browser использует собственный интерфейс IElevatorChrome с расширенной виртуальной таблицей (12 методов, DecryptData по смещению 104).

🔍 Feature Support Matrix

В этой матрице описаны возможности извлечения данных для каждого поддерживаемого браузера.

🔬 Technical Workflow

Выполнение инструмента ориентировано на скрытность и эффективность и строится вокруг процесса Reflective Hollowing на основе прямых системных вызовов. Такой подход гарантирует, что совершается мало высокоуровневых вызовов API и что полезная нагрузка работает внутри легитимного, заново созданного процесса браузера.

Stage 1: The Injector (chromelevator.exe)

  1. Предварительная проверка и инициализация: Инжектор начинает с инициализации движка прямых системных вызовов, динамически разбирая ntdll.dll для определения номеров системных вызовов (SSN) с помощью сопоставления по хэшу и поиска переходников в ядро (syscall/ret или svc/ret). Если указан флаг --kill, он использует системные вызовы NtGetNextProcess и NtTerminateProcess для завершения всех запущенных экземпляров целевого браузера, снимая блокировки файлов баз данных SQLite.
  2. Подготовка полезной нагрузки: Основная DLL полезной нагрузки, встроенная в виде зашифрованного ChaCha20 массива байт на этапе компиляции с ключами, производными на этапе компиляции, расшифровывается целиком в памяти.
  3. Process Hollowing: Вместо нацеливания на существующий процесс инжектор создаёт новый экземпляр целевого браузера в состоянии CREATE_SUSPENDED (CreateProcessW). Этот чистый приостановленный процесс служит хостом для нашей полезной нагрузки.
  4. Рефлексивное внедрение через системные вызовы: Используя движок прямых системных вызовов, инжектор выполняет серию скрытных действий над приостановленным процессом:
    • Выделяет память с помощью NtAllocateVirtualMemory (прямой системный вызов).

Stage 2: The Injected Payload (In-Memory)

  1. Начальная загрузка: Выполняется рефлексивный загрузчик Bootstrap, функционирующий как собственный загрузчик PE в памяти с повышенной скрытностью:
    • Выделяет новую память для полезной нагрузки с помощью прямых системных вызовов NtAllocateVirtualMemory (в обход хукаемого VirtualAlloc).
    • Корректно отображает секции DLL и выполняет базовые релокации.
    • Разрешает таблицу импорта (IAT), разбирая PEB и хэшируя имена функций.
    • Устанавливает права на секции с помощью прямых системных вызовов NtProtectVirtualMemory.
    • Уничтожает PE-заголовки, перезаписывая DOS/NT-заголовки псевдослучайными данными, удаляя сигнатуру MZ из памяти.
    • Наконец, вызывает DllMain полезной нагрузки.
  2. Подключение и настройка: DllMain создаёт новый поток, который немедленно подключается к дескриптору именованного канала, переданному инжектором. Он считывает конфигурацию, включая путь вывода, отправленную инжектором. Все последующие журналы и обновления статуса передаются обратно через этот канал.
  3. Перехват COM в контексте целевого процесса: Теперь, выполняясь нативно внутри процесса браузера, полезная нагрузка создаёт экземпляр внутреннего COM-сервера браузера (IElevator2 для Chrome/Brave 144+, IElevator для более ранних версий, IEdgeElevatorFinal для Edge или для Avast Secure Browser). Поскольку вызов исходит из доверенного пути процесса, все проверки безопасности сервера проходятся успешно.

🔧 Build Instructions

В этом проекте используется простой и надёжный сборочный скрипт, который автоматически выполняет всю компиляцию и встраивание полезной нагрузки.

  1. Клонируйте этот репозиторий.

  2. Откройте командную строку разработчика для VS (или любую оболочку с поддержкой MSVC).

  3. Запустите сборочный скрипт make.bat из корня проекта.

Варианты сборки:

  • make.bat — полная сборка (по умолчанию)
  • make.bat clean — удалить все артефакты сборки
  • make.bat build_encryptor_only — собрать только шифратор (используется в CI)
  • make.bat build_target_only — собрать полезную нагрузку и инжектор (используется в CI)

Automated Builds with GitHub Actions

Этот проект использует GitHub Actions для автоматической сборки исполняемого файла инжектора (chromelevator.exe) для архитектур x64 и ARM64.

Последние готовые бинарные файлы можно найти на странице релизов. Исполняемые файлы для обеих архитектур упакованы в один удобный .zip-файл.

Содержимое пакета релиза:

  • chromelevator_x64.exe
  • chromelevator_arm64.exe

🚀 Usage```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:~
### Параметры

- `--output-path <path>` или `-o <path>`
  Указывает базовый каталог для выходных файлов.
  По умолчанию используется `.\output\` относительно расположения инжектора.
  Данные будут организованы в подпапки: `<path>/<BrowserName>/<ProfileName>/`.

- `--verbose` или `-v`
  Включает расширенный вывод отладочной информации от инжектора.

- `--fingerprint` или `-f`
  Извлекает полные данные цифрового отпечатка браузера, включая версию, расширения, настройки безопасности и информацию о системе.
  Результаты сохраняются в `fingerprint.json` в выходном каталоге браузера.

- `--kill` или `-k`
  **Завершает все процессы браузера перед извлечением.** Использует прямые системные вызовы (`NtTerminateProcess`) для завершения всех запущенных экземпляров целевых браузеров перед попыткой извлечения данных. Это полезно, когда браузеры запущены и удерживают блокировки файлов базы данных, что мешает инструменту получить доступ к файлам cookie или другим зашифрованным данным.

- `--help` или `-h`
  Показать это справочное сообщение.

### Обычный запуск```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

Подробный режим```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:~
## 📂 Извлечение данных

После завершения расшифровки данные сохраняются по указанному пути вывода (по умолчанию `.\output\`, если не указано через `--output-path`). Файлы организованы следующим образом:

**Базовый путь:** `YOUR_CHOSEN_PATH` (например, `.\output\` или путь, который вы укажете)
**Структура:** <Базовый путь>/<BrowserName>/<ProfileName>/<data_type>.json

Примеры путей (при условии расположения вывода по умолчанию):

- 🍪 **Куки (профиль Chrome по умолчанию):** .\output\Chrome\Default\cookies.json
- 🔑 **Пароли (Edge, профиль 1):** .\output\Edge\Profile 1\passwords.json
- 💳 **Способы оплаты (Brave, профиль по умолчанию):** .\output\Brave\Default\payments.json
- 🏦 **IBAN (Chrome, профиль 1):** .\output\Chrome\Profile 1\iban.json

### 🍪 Извлечение куки

Каждый файл куки представляет собой JSON-массив объектов:```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…"
  },
  …
]

🔑 Извлечение паролей

Каждый файл паролей представляет собой JSON-массив объектов:```json [ { "url": "https://example.com/login", "user": "[email protected]", "pass": "••••••••••" }, … ]

root@kitploit:~
### 💳 Извлечение платёжных методов

Каждый файл платежей представляет собой JSON-массив объектов:```json
[
  {
    "name": "John Doe",
    "month": 12,
    "year": 2030,
    "number": "••••••••••1234",
    "cvc": "•••"
  },
  …
]

🏦 Извлечение IBAN

Каждый файл IBAN представляет собой JSON-массив объектов:```json [ { "nickname": "UK Test", "iban": "GB33BUKB20201555555555" } ]

root@kitploit:~
### 🎟️ Извлечение токенов

Каждый файл токенов — это JSON-массив объектов, содержащий сервис, расшифрованный токен и ключ привязки (если он есть):```json
[
  {
    "service": "AccountId-112823413702122221871",
    "token": "1//03VJGN_vL2FR5CgYIARAAGAMSNwF-L9IrtiyH_tmtOneETFya5GEGiewlEMrLwDMuOl56zRoShNE77DfyOXhofn5Ryo_...",
    "binding_key": ""
  }
]

🔍 Фингерпринтинг браузера

При использовании флага --fingerprint или -f формируется подробный отчёт о метаданных:```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:~
These data provide intelligence about the browser's configuration, security posture, and system context. 

## 📚 Углублённый технический анализ и исследования

Для всестороннего понимания App-Bound Encryption в Chrome, тонкостей её реализации, детальных механизмов подхода этого инструмента и более широкого обсуждения смежных векторов атаки обратитесь к моему подробному исследовательскому документу:

1.  ➡️ **[Chrome App-Bound Encryption (ABE) — технический разбор и исследовательские заметки](https://github.com/xaitax/chrome-app-bound-encryption-decryption/blob/main/docs/RESEARCH.md)**

    Этот документ охватывает:

    - Эволюцию от DPAPI к ABE.
    - Пошаговый разбор механизма ABE, включая COM-взаимодействия `IElevator`/`IElevator2` и обёртывание ключей.
    - Подробную методологию стратегии внедрения DLL, используемой этим инструментом.
    - Анализ структур зашифрованных данных и соответствующие сведения из исходного кода Chromium.
    - Обсуждение альтернативных векторов дешифрования и развивающихся механизмов защиты Chrome.

2.  ➡️ **[Любопытный случай вздорного COM: дешифрование App-Bound Encryption в 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)**

    В этой статье подробно описаны конкретные трудности и путь реверс-инжиниринга, пройденный для достижения надёжного дешифрования ABE в Microsoft Edge. В неё входит:

    - Описание первоначальных проблем и вводящих в заблуждение кодов ошибок (`E_INVALIDARG`, `E_NOINTERFACE`).
    - Процесс использования интроспекции COM-библиотеки типов (с помощью Python `comtypes`) для выявления уникальной структуры vtable и наследования интерфейса `IElevatorEdge` в Edge.
    - То, как это понимание привело к созданию специализированных C++-заглушек интерфейсов для успешного взаимодействия со службой ABE в Edge.
    - Практический взгляд на отладку сложных проблем COM-интероперабельности.

3.  ➡️ **[Лифт получает обновление: Chrome 144, IElevator2 и горизонт 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)**

    В этой статье рассматривается новый COM-интерфейс `IElevator2` в Chrome 144 и что это означает для ABE:

    - Техническое сравнение интерфейсов `IElevator` в Chrome 143 и `IElevator2` в Chrome 144.
    - Анализ двух новых методов (`RunIsolatedChrome`, `AcceptInvitation`) и их связи с планируемой миграцией Chromium на Mojo IPC.
    - Сравнение компоновки VTable, демонстрирующее сохранение обратной совместимости.
    - Частичное внедрение `IElevator2` и новых интерфейсов Copilot в Edge 144.
    - Честная оценка того, что миграция на Mojo меняет (а что не меняет) для безопасности ABE.

4.  ➡️ **[COMrade ABE: ваше полевое руководство по COM-изнанке App-Bound Encryption](https://github.com/xaitax/chrome-app-bound-encryption-decryption/blob/main/docs/COMrade_ABE_Field_Manual.md)**

    Это полевое руководство знакомит с **COMrade ABE** — динамическим анализатором COM-интерфейсов ABE на Python — и подробно разбирает его практическое применение:

    - Объясняет необходимость динамического анализа COM-интерфейсов из-за различий и обновлений браузеров.
    - Подробно описывает методологию COMrade ABE: сканирование реестра для обнаружения служб, загрузку и разбор библиотек типов (Type Library) и эвристическое сопоставление сигнатур методов ABE.
    - Предоставляет исчерпывающее руководство по интерпретации выходных данных COMrade ABE, включая CLSID, IID (в стандартном и C++-стиле), а также важность деталей подробного вывода, таких как смещения VTable, определяющие интерфейсы и полные цепочки наследования.
    - Подчёркивает полезность автоматически генерируемых C++-заглушек (`--output-cpp-stub`) для быстрой разработки и исследований.
    - Обсуждает, как COMrade ABE помогает адаптироваться к изменениям ABE, анализировать новые браузеры на базе Chromium и понимать специфические для вендоров настройки COM.

## 🔗 Дополнительные ресурсы и исследования

Этот проект опирается на работы и анализ более широкого сообщества специалистов по безопасности.

- **Официальная документация и анонсы:**

  - [Блог Google Security: повышение безопасности файлов cookie Chrome в Windows](https://security.googleblog.com/2024/07/improving-security-of-chrome-cookies-on.html)
  - [Проектный документ: служба app-bound encryption в Chrome](https://drive.google.com/file/d/1xMXmA0UJifXoTHjHWtVir2rb94OsxXAI/view)

- **Исследования сообщества и благодарности:**
  - Доказательство концепции от [snovvcrash](https://gist.github.com/snovvcrash/caded55a318bbefcb6cc9ee30e82f824)

## 🗒️ Журнал изменений

Все значимые изменения этого проекта описаны в файле [**CHANGELOG**](https://github.com/xaitax/chrome-app-bound-encryption-decryption/blob/main/CHANGELOG.md). Сюда входят история версий, новые функции, исправления ошибок и улучшения безопасности.

## 📜 Лицензия

Этот проект распространяется под лицензией MIT — подробности см. в файле [LICENSE](https://github.com/xaitax/chrome-app-bound-encryption-decryption/blob/main/LICENSE).

## 💡 Философия проекта и отказ от ответственности

> [!IMPORTANT]
> Это любительский проект, созданный в образовательных целях и для исследований в области безопасности. Он служит личным учебным опытом и полигоном для изучения продвинутых концепций Windows.
>
> **Этот инструмент НЕ предназначен для использования в качестве полнофункционального инфостилера или гарантированного средства обхода EDR.** Хотя он применяет продвинутые техники, его основная цель — продемонстрировать и разобрать механизм ABE, а не обеспечить оперативную скрытность для злонамеренного использования. Пожалуйста, убедитесь в соблюдении всех применимых правовых и этических норм.
Скачать инструмент
BrowserTested Version (x64 & 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
FeatureGoogle ChromeMicrosoft EdgeBraveAvast Secure Browser
Cookies✅ ABE✅ ABE✅ ABE✅ ABE
Passwords✅ ABE✅ ABE✅ ABE✅ ABE
Payment Methods✅ ABE✅ ABE✅ ABE✅ ABE
IBANs✅ ABE❌ N/A✅ ABE✅ ABE
Auth Tokens✅ Google❌ N/A❌ N/A❌ N/A
  • Записывает расшифрованную DLL полезной нагрузки в выделенное пространство через NtWriteVirtualMemory.
  • Изменяет права доступа к области памяти на исполняемые с помощью NtProtectVirtualMemory (прямой системный вызов).
  • Создаёт именованный канал для связи и записывает имя канала в память целевого процесса.
  • Выполнение и управление: В целевом процессе создаётся новый поток с помощью NtCreateThreadEx. Стартовый адрес потока указывает непосредственно на экспортируемую функцию Bootstrap полезной нагрузки, а в качестве аргумента передаётся адрес имени удалённого канала. Исходный главный поток браузера остаётся приостановленным и никогда не возобновляется. Затем инжектор ожидает подключения полезной нагрузки обратно к каналу.
  • IAvastElevator
  • Расшифровка мастер-ключа: Полезная нагрузка вызывает метод DecryptData COM-интерфейса, передавая app_bound_encrypted_key, который она считывает из файла Local State. COM-сервер послушно расшифровывает ключ и возвращает полезной нагрузке мастер-ключ AES-256 в открытом виде.
  • Вывод данных: Имея AES-ключ, полезная нагрузка перечисляет все профили пользователей (Default, Profile 1 и т. д.). Для каждого профиля она запрашивает соответствующие базы данных SQLite (Cookies, Login Data, Web Data), расшифровывает блобы данных с помощью AES-256-GCM и форматирует секреты в JSON. Результаты записываются непосредственно в выходную директорию, указанную инжектором.
  • Завершение: После обработки всех профилей полезная нагрузка отправляет инжектору сигнал о завершении через канал и вызывает FreeLibraryAndExitThread для очистки. Инжектор, получив сигнал, завершает родительский процесс-хост с помощью NtTerminateProcess.