Если пользователь забыл мастер-пароль от парольного менеджера Bitwarden, 1Password, KeepassXC, то пароли невозможно восстановить. Другое дело — встроенные парольные менеджеры браузеров Chrome и Firefox, для расшифровки которых есть специальные инструменты. Этот факт следует иметь в виду при хранении пользовательских данных — и не допускать, чтобы злоумышленник получил физический или удалённый доступ к компьютеру с правами пользователя.

Примечание: перечисленные ниже инструменты не работают с последними версиями браузеров и приведены исключительно в информационно-образовательных целях.

Firefox Passwords Decryptor


Консольная утилита Firefox Passwords Decryptor предназначена в первую очередь для расшифровки паролей, но также проводит анализ безопасности учётных данных и предлагает дополнительные возможности по быстрому сбору информации о системе (см. ниже).

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

Процесс расшифровки паролей Firefox включает в себя следующие этапы:

  1. Извлечение общей соли: процесс начинается с получения глобальной соли из файла key4.db, закладывая основу для генерации ключа.

  2. Генерация ключа с помощью PBKDF2: используется PBKDF2 с хэшированием SHA-256 для создания ключа дешифрования из глобальной соли.

  3. Разбор закодированных данных ASN.1: анализирует закодированные структуры ASN.1 для извлечения зашифрованных учётных данных вместе с их соответствующими алгоритмами и векторами инициализации (IV).

  4. Расшифровка AES/Triple DES: в зависимости от заданного алгоритма расшифровывает учётные данные, используя сгенерированный ключ и IV.

  5. Удаление набивки: удаление набивки из расшифрованных данных, чтобы расшифровать имена пользователей и пароли.

Дополнительные функции:

  • Информация о системе, включая имя хоста, ОС, архитектуру, количество CPU и памяти.
  • Перечисляет открытые порты и идентифицирует процессы, использующие их.
  • Выводит список подключённых USB-устройств.
  • Извлекает и отображает историю просмотров Firefox пользователя.

Browser Cookie


Ещё одна утилита Browser Cookie извлекает куки из всех популярных браузеров: Chrome, Firefox, LibreWolf, Opera, Opera GX, Edge, Chromium, Brave, Vivaldi и Safari, а пароли — только из браузеров на основе Chromium. Она представляет собой питоновский форк одноимённой программы от Ричарда Пенмана, который работает бэкенд-инженером в Google.

Как понятно из названия, изначально инструмент создавался для просмотров куков: он загружает их в просматриваемый объект cookiejar. Во всех браузерах куки хранятся в базе SQLite.

Установка:

$ pip install browser-cookie3



Использование для загрузки и просмотра куков (в данном примере пройдена авторизация на сайте Bitbucket в браузере Firefox):

#!python

>>> import browser_cookie3
>>> cj = browser_cookie3.firefox()
>>> opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
>>> login_html = opener.open(url).read()
>>> get_title(login_html)

Примечание: в Python 3 модуль urllib2 был разделён, и теперь для работы с HTTP-запросами нужно использовать urllib.request. Соответственно, в командах нужно заменить #!python на #!python3, а также urllib2 на urllib.request и др.

Загрузка куков из всех браузеров:

#!python

>>> import browser_cookie3
>>> import requests
>>> cj = browser_cookie3.load()
>>> r = requests.get(url, cookies=cj)
>>> get_title(r.content)

В этом форке функциональность программы расширена в том числе на расшифровку паролей из браузеров на основе Chromium. Как отмечается в пул-реквесте, метод расшифровки паролей аналогичен методу расшифровки куков.

Chrome Password Grabber


Есть также отдельная утилита Chrome-Password-Grabber, которая создана только для извлечения паролей из Chrome.

Раньше Chrome хранил пароли во внутренней базе Web Data в папке текущего профиля пользователя, но в последних версиях база с паролями перенесена в новый файл Login Data:



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

Пароли хранятся в таблице logins вместе с URL сайта и именем пользователя. Вся информация в открытом виде, кроме паролей, которые зашифрованы.

Google Chrome под Windows шифрует пароль с помощью функции CryptProtectData, встроенной в Windows. Функция считается безопасной, она использует Triple DES и создаёт ключи для шифрования, но их всё равно можно расшифровать, если войти под учётной записью пользователя. У функции есть «двойник», который выполняет противоположное действие, то есть расшифровку: CryptUnprotectData. Этот компонент Windows используется в данном случае.



Браузеры периодически изменяют способ хранения паролей и защиту, а также закрывают найденные уязвимости. Поэтому некоторые функции упомянутых инструментов перестанут работать с выходом новой версии браузера. Но даже в таком случае некоторые эксперты не рекомендуют хранить важные пароли в браузере. Для этого существуют специализированные парольные менеджеры: Bitwarden, LastPass, 1Password, KeepassXC и др.

Комментарии (2)


  1. sena
    19.01.2025 19:51

    Это извлечение будет работать только если не настроен master password?


  1. ThePaleEmperor
    19.01.2025 19:51

    Если пользователь забыл мастер-пароль

    Всем ведь и так ясно, для чего это будут использовать. Мы же все взрослые люди. Так зачем прикидываться? Почему не написать прадиво "как расшифровать украденные пароли и историю браузера жертвы"? Формальные издержки?

    Тем более вот это в перечислении:

    • Извлекает и отображает историю просмотров Firefox пользователя.

    Статья учит как красть пароли и историю, при этом пытась прикинуться белым рыцарем, чтобы сохранить репутацию автора публикации.

    Те, кто хочет воразить, вы просто подумайте, что это в один день может быть использовано и против вас. Лично у меня уже крали пароли из браузеров - и статья этому только способствует и вооружает злонамеренных людей.