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

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

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

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

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

Категории

Все категории
Loading categories
keepass-password-dumper — Оригинальный PoC для CVE-2023-32784 | Kitploit
Инструменты/GitHubGitHub/vdohney/keepass-password-dumper
Криминалистика памятиАтаки на ПаролиАнализ уязвимостейЭксплуатацияФорензикаЦифровая криминалистика
GitHubvdohney/keepass-password-dumper

keepass-password-dumper

Оригинальный PoC для CVE-2023-32784

Репозиторий
651603 лет назадПроверено Kitploit

Популярное

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

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

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

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

Смотреть все инструменты →
Поделиться

KeePass 2.X — дампер мастер-пароля (CVE-2023-32784)

Обновление

Уязвимости присвоен идентификатор CVE-2023-32784, и она исправлена в KeePass 2.54. Ещё раз спасибо Доминику Райхлю за быструю реакцию и креативное исправление!

Уточнение: пароль должен быть введён с клавиатуры, а не скопирован из буфера обмена (см. разделы «Как это работает»).

Что вы можете сделать

Во-первых, обновитесь до KeePass 2.54 или выше.

Во-вторых, если вы давно пользуетесь KeePass, ваш мастер-пароль (и, возможно, другие пароли) может находиться в файле подкачки (pagefile/swapfile), файле гибернации и аварийных дампах (crash dump). В зависимости от уровня вашей паранойи, вы можете рассмотреть следующие шаги для решения проблемы:

  1. Смените мастер-пароль
  2. Удалите аварийные дампы (зависит от ОС; в Windows как минимум C:\Windows\memory.dmp, но могут быть и другие)
  3. Удалите файл гибернации
  4. Удалите файл подкачки pagefile/swapfile (это может быть довольно неприятно, не забудьте включить его обратно)
  5. Перезапишите удалённые данные на жёстком диске, чтобы предотвратить их восстановление (например, Cipher с параметром /w в Windows)
  6. Перезагрузите компьютер

Либо просто перезапишите ваш жёсткий диск и выполните чистую установку ОС.

Неполный список продуктов, которые не затронуты (пожалуйста, создайте pull request или issue для добавления других). Эмпирическое правило: если это не оригинальное приложение KeePass 2.X, написанное на .NET, скорее всего, оно не затронуто.

  • KeePassXC
  • Strongbox
  • KeePass 1.X


KeePass Master Password Dumper — это простой инструмент типа proof-of-concept, предназначенный для извлечения мастер-пароля из памяти KeePass. За исключением первого символа пароля, он в основном способен восстановить пароль в открытом виде. Для этого не требуется выполнение кода на целевой системе — достаточно дампа памяти. Неважно, откуда взята память — это может быть дамп процесса, файл подкачки (pagefile.sys), файл гибернации (hiberfil.sys), различные аварийные дампы или дамп ОЗУ всей системы. Неважно, заблокировано рабочее пространство или нет. Также можно извлечь пароль из ОЗУ после того, как KeePass больше не запущен, хотя вероятность успеха снижается со временем, прошедшим с этого момента.

Протестировано с KeePass 2.53.1 на Windows (английская версия) и KeePass 2.47 на Debian (пакет keepass2). Должно работать и в версии для macOS. К сожалению, включение опции Enter master key on secure desktop не помогает предотвратить атаку. PoC может иметь проблемы с базами данных, созданными более старыми версиями KeePass, но мне не удалось воспроизвести эту проблему (см. issue #4).

Результат был подтверждён Домиником Райхлем, автором KeePass, здесь. Я ценю быстрый ответ Доминика. Надеюсь, вскоре это будет исправлено!

Установка

  1. Установите .NET (поддерживаются большинство основных операционных систем).
  2. Склонируйте репозиторий: git clone https://github.com/vdohney/keepass-password-dumper или скачайте его с GitHub
  3. Перейдите в каталог проекта в вашем терминале (Powershell в Windows): cd keepass-password-dumper
  4. dotnet run PATH_TO_DUMP

Самый простой способ протестировать это в Windows — создать дамп процесса в диспетчере задач, щёлкнув правой кнопкой мыши по процессу KeePass и выбрав «Create dump file».

Usage example

  1. В качестве альтернативы вы можете добавить ещё один параметр dotnet run PATH_TO_DUMP PATH_TO_PWDLIST, чтобы сгенерировать список всех возможных паролей, начиная со второго символа.

Стоит ли вам беспокоиться?

Зависит от вашей модели угроз. Если ваш компьютер уже заражён вредоносным ПО, работающим в фоне с правами вашего пользователя, эта находка не сильно ухудшит ваше положение. Однако вредоносному ПО может быть проще оставаться незаметным и обходить антивирус, поскольку, в отличие от KeeTheft или KeeFarce, не требуются внедрение в процесс или другой тип выполнения кода.

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

Если вы используете полное шифрование диска с надёжным паролем и ваша система чиста, вам не о чем беспокоиться. Никто не сможет украсть ваши пароли удалённо через интернет, используя только эту находку.

Как это работает

KeePass 2.X использует специально разработанное текстовое поле для ввода пароля — SecureTextBoxEx. Это текстовое поле используется не только для ввода мастер-пароля, но и в других местах KeePass, например в полях редактирования пароля (так что атаку можно также использовать для восстановления их содержимого).

Используемый здесь недостаток заключается в том, что для каждого введённого символа в памяти создаётся остаточная строка. Из-за того, как работает .NET, от неё почти невозможно избавиться после её создания. Например, при вводе «Password» будут созданы следующие остаточные строки: •a, ••s, •••s, ••••w, •••••o, ••••••r, •••••••d. Приложение POC ищет в дампе эти шаблоны и предлагает вероятный символ пароля для каждой позиции в пароле.

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

Разработка

Это быстрый POC, так что он, вероятно, не очень надёжен и устойчив. Пожалуйста, создайте pull request, если найдёте проблему, и исправьте её.

Допустимые символы пароля сейчас жёстко заданы следующим образом: ^[\x20-\x7E]+$ (все печатные символы ASCII и пробел).

Благодарности

Спасибо adridlug за добавление возможности автоматической генерации списка паролей и ynuwenhof за рефакторинг кода.

Связанные проекты

  • Реализация PoC на Python от CMEPW
  • Реализация PoC на Rust от ynuwenhof

Я ещё ни одну из них не проверял.

Скачать инструмент