Привет, Хабр! На проектах по пентестам нам часто удается получить доступ к корпоративному компьютеру «жертвы», а затем и добыть из него плохо защищенные пароли. К чему это приводит, все понимают. А как происходит такая компрометация — сегодня попробуем раскрыть.
Внимание! Цель статьи — повышение осведомленности рядового пользователя и специалиста по ИБ в вопросе (без)опасности выбранного метода хранения паролей и рекомендация хороших альтернатив. Методы эксплуатации приведены исключительно в образовательных целях для понимания реальных угроз. Ни в коем случае не пробуйте эксплойты на чужом устройстве и/или чужом парольном менеджере — это неправильно как с точки зрения этики, так и закона. Подобные действия разрешено выполнять либо на своей системе, либо с разрешения владельца системы (лучше — письменного).
Чем плох браузер?
По результатам запроса в Google «top internet browsers» я выбрал три браузера для показательного примера:
Простой, но нетехнический случай на пентесте.
Пожалуй, один из наиболее известных способов подглядеть простой автозаполненный пароль — использовать замену типа элемента ввода пароля.
Переходим на страницу с логин-формой, от которой браузер хранит пароль, кликаем по полю с паролем кружочками правой кнопкой мыши, выбираем пункт Проверить/Inspect/Исследовать (названия из выбранных браузеров) и меняем у интересующего input-элемента значение type="password" на type="text".
Есть и простой способ массово выгрузить пароли в исходном виде: если вы храните пароли в Firefox и не установили мастер-пароль, то можете легко выгрузить их все разом без регистрации и смс, зайдя в Настройки/Приватность/Логины и пароли/Сохраненные логины (в MS Edge и Google Chrome на Linux так же).
А теперь углубимся в более «технические» способы
Графическое подключение можно получить не всегда. Чаще при проведении тестирования на проникновение мы хотим выгрузить данные из браузеров быстро и эффективно. Для этого нужно понимать, как устроено хранение паролей в целевом браузере.
Раньше Google Chrome хранил связанные с логин-формами данные в файле «Web data». В новых же версиях он хранит данные в файле базы данных SQLite «Login Data», находящемся в папке пользователя. Адреса сайтов и имена пользователя хранятся в читаемом виде, а пароли зашифрованы. На Windows-системах Google Chrome шифрует данные с помощью функции CryptProtectData, встроенной в Windows DPAPI (Data Protection API).
DPAPI — это функционал Windows для управления защитой «секретов». Шифрование производится симметрично (чем зашифровали, тем и расшифровываем), ключ шифрования основан на пользовательских аутентификационных данных в системе. С помощью DPAPI защищаются данные в веб-браузерах (Internet Explorer, Microsoft Edge, Google Chrome), в почтовых клиентах (Outlook, Windows Mail), в приложениях Skype, Dropbox и пр. — применений много.
Есть и функция расшифрования «секретов» — CryptUnprotectData. Так как ключ шифрования основан на пользовательских аутентификационных данных в системе, расшифрование от лица пользователя — простейшая задача.
Разберемся на примере Google Chrome.
Берем ключ шифрования «encrypted_key» из файла C:\Users\<User>\AppData\Local\Google\Chrome\User Data\Local State. Он зашифрован с помощью DPAPI, но при доступе от имени пользователя это неважно.
Зашифрованные пароли хранятся в базе данных SQLite по пути C:\Users\<User>\AppData\Local\Google\Chrome\User Data\Default\Login Data.
В шифрованной последовательности из файла Login Data содержатся сразу две величины: с 4-го по 20-й символ — второй секрет, а с 21-го символа по 17-й с конца — сам шифрованный симметричным алгоритмом AES-пароль. Таким образом, у нас есть оба секрета (ключ, второй секрет) и пароль. Это всё, что требуется для получения исходных паролей!
Так как Microsoft Edge создан на том же «движке», что и Google Chrome, для него меняется лишь путь: C:\Users\<User>\AppData\Local\Microsoft\Edge\User Data.
Для ознакомления прилагаю пример Python-скрипта, быстро выгружающего данные из Google Chrome и Microsoft Edge (только для данного пользователя):
Для выгрузки паролей из браузера существуют и специальные Metasploit-модули, к примеру, для Chrome: post/windows/gather/credentials/chrome.
Такой скрипт может быть упакован в обычный EXE-файл без дополнительных зависимостей и может быть написан на других языках.
Как выгружаются данные другого пользователя из Google Chrome, MS Edge?
Бывает ситуация: нашли резервную копию папки AppData интересного пользователя или получили к ней доступ иным образом. Что можно сделать — расскажем по-пентестерски.
По пути C:\Users\<User>\AppData\Roaming\Microsoft\Protect\<SID> лежит мастер-ключ, используемый для шифрования паролей пользователя:
wmic useraccount get name,sid # Перечислить имена аккаунтов в системе и их SID
ls C:\Users\<User>\AppData\Roaming\Microsoft\Protect\<SID> -h # Найти зашифрованный мастер-ключ
Утилитой DPAPImk2john.py из SID и зашифрованного мастер-ключа пользователя получаем хэш пароля пользователя и подбираем его пароль от операционной системы. При наличии доступа к ПК этого пользователя заходим в его аккаунт и выгружаем пароли ранее описанным способом. Но если есть только папка AppData, то с помощью инструмента Mimikatz (модуль dpapi::masterkey) достаем зашифрованный мастер-ключ, SID, системный пароль и расшифровываем мастер-ключ.
Затем берем зашифрованный encrypted_key из папки браузера, переводим его из кодировки base64 в байтовое представление и расшифровываем с помощью модуля dpapi::blob (понадобится расшифрованный мастер-ключ). Готово, пароли получены!
Что можно сказать о защите паролей Google Chrome, MS Edge на Linux?
На Linux, браузеры Google Chrome и Microsoft Edge не имеют доступа к DPAPI, поэтому шифруют данные самостоятельно. При этом выгрузка паролей из этих браузеров происходит «без вопросов». То есть если на проекте мы получили доступ к системе, то удаленно подключаемся к графическому окружению (к примеру, по vnc) и вручную выгружаем все пароли в несколько кликов средствами самого браузера!
Как защищает пароли Firefox?
Как вы могли заметить, мы не обсудили Firefox. Дело в том, что он эксплуатируется одинаково на разных платформах. Путь до папки с Firefox-профилями в Windows будет следующим: C:\Users\<User>\AppData\Roaming\Mozilla\Firefox\Profiles. В Linux: ~/.mozilla/firefox/Profiles. В папке профиля пользователя находится файл logins.json, хранящий адреса логин-форм и зашифрованные по стандарту PKCS #11 имя пользователя с паролем. Для шифрования Firefox пользуется собственной библиотекой NSS, которая находится в папке браузера: nss3.dll в Windows, libnss3.so в Linux и libnss3.dylib в Mac.
Для расшифрования с помощью NSS потребуется считать зашифрованные имена и пароли из папки профиля и использовать NSS для получения имен и паролей в исходном виде. Если декодирование проводится на том же устройстве, то больше ничего не требуется. По сути, ключ для шифрования — само устройство.
Хороший инструмент для получения паролей из Firefox на пентесте — firefox_decrypt.
Благодаря тому, что Firefox использует собственную библиотеку для шифрования, на Linux- и Mac-системах ситуация никак не отличается.
Можно ли усилить браузерный менеджер паролей?
В Google Chrome подобные настройки отсутствуют в принципе. В Microsoft Edge есть лишь настройки защиты паролем функции автозаполнения, а не самих паролей. Как можно догадаться, от скрипта выше такие функции не защитят. В отличие от предыдущих браузеров, Firefox позволяет (и даже рекомендует) защищать свои пароли мастер-паролем. Доступна эта возможность по пути Настройки/Приватность и защита/Логины и пароли/Использовать основной пароль. Сразу после установки мастер-пароля все сохраненные пароли защищаются уже с его помощью.
Но если при пентесте обнаруживаем подобный защищенный файл, то не всё потеряно — ведь мы можем провести атаку на перебор мастер-пароля.
Нужно учитывать, что многие парольные менеджеры, включая все три рассмотренных браузера, уязвимы к выгрузке паролей из памяти. Если же парольный менеджер шифрует пароли мастер-ключом (как в Firefox), то уязвимость актуальна, только когда база разблокирована (после ввода мастер-пароля). Для проверки своего браузера можете сохранить в нем данные, затем с помощью Process Hacker раскрыть процесс открытого браузера, на вкладке «Memory» нажать кнопку «Strings...», далее «Ok», в открывшемся окне кликнуть «Filter» и выбрать «Contains», попробовать ввести пароль, и его можно будет найти в памяти процесса.
Как вы могли убедиться, Firefox + мастер-пароль являются более безопасной комбинацией. Но я рекомендую всё же рассмотреть альтернативу в виде менеджеров паролей, не встроенных в браузер: как из-за дополнительного функционала (хранение секретов, не связанных с логин-формами), так и из-за дополнительных настроек безопасности.
Менеджеры паролей как браузерные расширения
Расширения обычно хранят пароли на серверах разработчика. Пароли зашифровываются/расшифровываются на компьютере пользователя его мастер-ключом. Мастер-ключ не покидает компьютер пользователя, поэтому за нешифрованное хранение паролей можно сильно не беспокоиться.
Обычно, если при пентесте попадаются такие менеджеры паролей, то пароли из них удается извлечь, если они уже разблокированы, если получен мастер-пароль и на парольном менеджере не настроена двухфакторная аутентификация, либо при успешной атаке типа «человек посередине».
Для пользователя можно выделить скорее сопутствующие риски у расширений:
Серверы сервиса могут оказаться недоступны, тогда пользователь потеряет доступ к паролям. К примеру, в 2020 году пользователи LastPass временно потеряли доступ к своим паролям. Без подключения к интернету пароли также будут недоступны.
Возможна утечка баз паролей пользователей сервиса. К примеру, в декабре 2022 года LastPass сообщил об утечке зашифрованных баз паролей как последствии атаки, проведенной ранее в этом же году.
Сервис может прекратить свое существование — тогда все пароли могут быть утрачены.
Неизвестно, что происходит со связанными с паролями данными. К примеру, сервис может отслеживать, когда и как пользователь обращается к нему, откуда и какие данные запрашивает, а затем использовать их в своих целях. Или может быть проведена «инсайдерская» атака, при которой недобросовестный сотрудник собирает из системы накопившиеся пользовательские данные.
Риск перехвата зашифрованных паролей «на лету» и их расшифровки ничтожно мал, а атака выполнима только теми, у кого есть власть над такими процессами (администраторы сервера разработчика, персонал центра сертификации, выдавшего сертификат, по которому защищено соединение) и теми, у кого есть возможность провести атаку типа «человек посередине».
Пример популярного онлайн-решения такого типа — Bitwarden, обладающий множеством настроек безопасности, открытым исходным кодом, возможностью локального хранения паролей и установки двухфакторной аутентификации на случай, если кто-то всё же сможет завладеть вашим мастер-паролем.
Локальные менеджеры паролей
Локальные парольные менеджеры не несут многих рисков онлайн-менеджеров паролей: данные хранятся на нашем устройстве, а за безопасность базы паролей отвечает сам пользователь.
Если нужно держать свои пароли под контролем и сохранить свои «секреты», рекомендую рассмотреть KeePassXC, хотя на пентестах чаще встречается KeePass. Оба менеджера имеют открытый исходный код, хранят пароли локально (можно записать базу с паролями на компьютер или на съемный носитель), позволяют хранить как пароли, так и заметки, файлы и другие данные в надежно зашифрованном формате. KeePassXC задуман как кроссплатформенный менеджер паролей, это улучшенная версия предыдущего как с точки зрения безопасности, так и возможностей. Но, в отличие от KeePass, KeePassXC не поддерживает плагины.
Для смартфонов тоже есть совместимые приложения:
KeePass2Android для Android;
Strongbox для iPhone.
Базы паролей формата KeePass настолько часто встречаются при тестировании и обладают такой высокой ценностью, что под них даже есть специальный режим атаки в Hashcat, благодаря чему мастер-пароль можно подобрать довольно быстро.
Поэтому, когда парольный менеджер требует ввести будущий мастер-пароль от нового хранилища, помните, что от сложности этого пароля зависит безопасность всех хранимых данных.
Как выбирать хороший пароль:
Слабый пароль («admin1», «Qwerty1», «iloveyouverymuch», «P2$#s», …) подбирается с помощью специального ПО (к примеру, «hashcat») за минуты, а иногда — и секунды. Часто это происходит из-за того, что подобный пароль часто встречается, из-за его малой длины и из-за того, что пароль состоит из комбинаций слов. Пароль также может оказаться слабым, если оказался в утечках.
Небольшой рецепт хорошего мастер-пароля: добавьте больших и маленьких символов в непредсказуемых местах, разбавьте цифрами и «посыпьте» специальными символами.
Вот вам пример для вдохновения: R0s11@.pA&jkm9'sPT^#!$
Чтобы запомнить подобный пароль, при его построении можно придумать несуществующее, но «звучащее» слово, попеременно писать его с помощью разных раскладок клавиатуры, заменить часть букв на цифры или на символы, находящиеся над соответствующими буквами на клавиатуре. А когда такой пароль станет слишком привычным, его можно заменить на еще более продуманный и сложный.
В настройках KeePass имеется опция ввода мастер-пароля в окружении «Secure Desktop». Рекомендую включить ее, так как это может спасти базу от кейлоггеров. Кроме того, имеются настройки для защиты с помощью Windows DPAPI (помните Google Chrome?), что может сильно усложнить компрометацию паролей от лица другого пользователя.
По нашему опыту тестирований на проникновение, работники заказчика часто держат свою базу паролей в разблокированном виде значительно дольше, чем необходимо. Для компрометации разблокированных баз имеется инструмент KeeFarce, а для более сложных атак — KeeThief. Требуется лишь запустить его на компьютере с разблокированной базой данных KeePass.
Для защиты в обеих версиях KeePass есть настройки автоблокировки. К примеру, в KeePass рекомендую выставить настройки «Lock workspace after KeePass inactivity», «Lock workspace after global user inactivity» и параметры из блока «General».
При этом столь действенные способы компрометации для KeePassXC найти значительно сложнее. Ради утоления интереса читателя прикрепляю блог-пост разработчиков на тему безопасности хранящихся в памяти данных. Вкратце — приложение очень хорошо защищает пароли :)
Давайте защищаться
Несколько советов по «парольной» безопасности:
Из рассмотренных парольных менеджеров лучше всего себя проявили: локальный парольный менеджер KeePassXC, браузерное расширение с возможностями локального хранения Bitwarden и парольный менеджер браузера Firefox при настроенном мастер-пароле.
Сильный мастер-пароль является одним из самых главных факторов защищенности парольного менеджера, но даже при использовании сильного мастер-пароля не стоит разбрасываться парольной базой.
В случае, если злоумышленник получит мастер-пароль, базу защитит второй фактор.
Важно настроить автоблокировку парольного менеджера. Если база разблокирована, то она подвержена большему числу угроз.
У веб-сервисов бывают утечки, поэтому важно проверять, не оказались ли ваши данные в сети (и сменять пароль в случае утечки). Для этого можно воспользоваться сервисом haveibeenpwned.com или LeakCheck.
Среди атак на пользователей широко распространен фишинг (зачастую выражается в виде поддельной страницы с просьбой ввода учетных данных). Так как браузеры и расширения по умолчанию «связывают» пароли с адресами логин-форм и предлагают автозаполнять формы только на сохраненных страницах, такие средства защищают от фишинга, не подставляя данные на поддельный сайт. Если вы пользуетесь локальным менеджером, то советую также настроить автозаполнение: по умолчанию оно может быть отключено.
Браузеры практически не имеют настроек безопасности и удобного функционала. В свою очередь, менеджеры паролей в виде отдельных решений обладают множеством настроек в обеих «областях».
Статья написана в первую очередь о базах паролей, используемых на конкретных системах, но если вы ищете парольный менеджер для корпоративной среды, то можно рассмотреть PasswordState — это довольно мощный инструмент для корпоративных баз паролей.
В заключение хочу еще раз напомнить, что материал написан исключительно для повышения осведомленности в вопросе хранения паролей. Ни в коем случае не пробуйте приведенные выше действия на чужих системах без разрешения их владельца (лучше письменного). Экспериментируйте на своей собственной системе и со своим хранилищем паролей — так вы лучше усвоите материал и сможете понять, подходит ли вам тот или иной способ хранения паролей. Ну или идите работать пентестером — это интересно и законно????
Роман Сливко
консультант по информационной безопасности, «Инфосистемы Джет»
Комментарии (76)
saboteur_kiev
27.01.2023 18:10+3По сути, ключ для шифрования — само устройство.
Тема не раскрыта. Что такое "само устройство"?
Если я процессор сменил или памяти добавил - мой профайл всьо?
titbit
27.01.2023 18:21+5Как на мобильном телефоне набирать сложный мастер-пароль? Палец и лицо отметаем как неизменные после компрометации, а всякие пин-коды и жесты дают слишком маленькую энтропию и легко подбираются оффлайн (ну или нужен пин на ~40 цифр). Для телефонов нужен какой-то трюк или другой способ ввода высокоэнтропийных последовательностей. Вводить по сто раз на дню при разблокировке "R0s11@.pA&jkm9'sPT^#!$" - это выглядит мучением.
aborouhin
27.01.2023 19:11Вопрос меня тоже всё время волнующий, и пока что идеального ответа я не вижу. Остановился на одном из двух компромиссов:
а) В ситуации небольшого риска, когда сценарий с неожиданно прилетающим из-за угла маски-шоу не прогнозируется вообще никак, ну и на баррикады мы сами тоже не идём, - сложный пароль + всё-таки отпечаток пальца. Если возникают опасения - включается lockdown mode (разблокировка только паролем) или телефон просто выключается (после чего тоже только пароль). Хотелось бы, конечно, как-то автоматизировать этот lockdown mode, скажем, включать его уже после одной единственной неверной попытки разблокировки пальцем, или по таймауту, но как это сделать, пока не понимаю, в Tasker такого действия не нашёл (может, плохо искал).
б) В ситуации повышенного риска, когда можно ожидать чего угодно - только пароль, буквенно-цифровой, запоминаемый, но не словарный (здравствуй, мнемотехника), разумной длины (+/- 10 символов). Со временем начинаешь набирать его на автомате очень быстро.Вообще, конечно, просто в ситуации из п. "б" лучше не попадать :)
Busla
28.01.2023 13:04"неверная попытка разблокировки пальцем" нередко происходит, когда не глядя хватаешь телефон со стола, достаёшь из сумки, кармана. И чуть ли не каждый раз, когда телефон подают/передают домочадцы, коллеги, друзья.
Tarakanator
30.01.2023 11:18а)можно забить в базу отпечаток неочевидного пальца (мизинец К ПРИМЕРУ), или только края подушечки.
Тогда для разблокировки отпечатком надо будет знать как именно прикладывать палец.
stalinets
27.01.2023 22:24-4У меня в смарте вообще нет пароля и пинкода. Но нет и ничего чувствительного: нет финансовых приложений (а если сильно надо - зайду через браузер, и да, 2FA-sms'ка приходит на другой кнопочный телефон), нет компрометирующих фоток. Потеряю - ничего фатального не будет, ну по-быстрому сменю с компа пароль от пары сервисов, в которых я залогинен.
Tangeman
28.01.2023 01:26всякие пин-коды и жесты дают слишком маленькую энтропию и легко подбираются оффлайн
Спорный момент. Пин обычно применяется локально для защиты мастер-ключа (после того как введён мастер-пароль), и если грамотно делать то защита эта железная и привязана к устройству, т.е. увести его для брут-форс практически невозможно, а число попыток на самом устройстве ограничено - чип безопасности "забудет" то что защищает после нескольких неудачных попыток, при длине пина в 6-8 цифр можно надеяться только на удачу. С учётом того что отключение устройства (или подключение чего-то извне, типа по USB) приведёт ровно к тому же - мы в достаточной безопасности.
Даже если нет железной защиты - всё равно пин используется только для разлочивания уже после ввода мастер-пароля, и хранится в защищённой области памяти - без раскурочивания устройства туда не попасть (как правило). Если же на устройстве есть нечто вроде трояна или кейлоггера со свободным доступом к памяти - то никакой мастер-пароль не спасёт.
Сама база паролей, будучи утащенной (отдельно или вместе с устройством), потребует полноценного взлома мастер-ключа - про это тоже можно забыть с учётом что в нём обычно не менее 256 бит энтропии.
DimaSimfer
28.01.2023 11:14Почтал комментарии к этому комменту и возник такой нубский вопрос: на мобильном устройстве мы вводим пароль через прогу-клавиатуру, которая собирает статистику, корректирует свои словари по введённым пользователем и т.д. Плюс скорее всего отправляет на сервер разработчика проги для глобальной статистики или в виде бэкапа. Как решается эта проблема?
titbit
28.01.2023 11:40Обычно у нормальных клавиатур при вводе паролей (а они знают когда вводится пароль) никакая статистика не собирается и не отправляется. Либо надо использовать клавиатуры без доступа в интернет - такие тоже есть. У некоторых производителей для ввода мастер-пароля вообще применяется своя особая клавиатура, у Oppo/Realme например.
regint
30.01.2023 05:31+1Если верить им на слово. Ничего не мешает просто собрать логи, а отправить их с обычной статистикой. Да хотьс аналитикой, все данные все равно шифруются, ищи свищи что там твоя клавиатура отправила.
leotsarev
28.01.2023 15:34Как пин код к телефону перебирается оффлайн? Пин хранится внутри защищённого чипа, перебирать его быстро довольно сложно.
igrishaev
27.01.2023 19:32+14Вот вам пример для вдохновения: R0s11@.pA&jkm9'sPT^#!$
Кажется, уже сто раз писали о том, что подобные пароли, наоборот, делают только хуже. Запомнить их невозможно, их либо пишут на бумажке, либо копируют в ватсапп-телеграм. Лучший пароль -- это обычная фраза из пяти-семи слов, например "этот пароль очень трудно подобрать". Беда в том, что все сайты требуют доллары, решетки и заглавные буквы, а вы вторите этому карго-культу.
itsecurity
27.01.2023 19:56Интересно, кстати, каково число сочетаний для этой фразы? Один регистр, слова через пробел. Может ошибся, но вроде выходит так:
В русском языке 150-200 тыс. слов. Для пароля будут использовать тысяч 30, но пусть будет 100 тыс. С разными формами слова будем считать пол миллиона вариантов на 1 слово. 31,25*10^27 вариантов. Английский алфавит в 2 регистрах плюс спецсимволы для пароля - это около 100 символов на выбор. 100^14 = 10*10^27. То есть "этот пароль очень трудно подобрать" будет примерно соответствовать паролю типа "R0s11@.pA&jkm" длиной в 13 символов. Скорее меньше, потому что словарный запас не позволит разгулятся, но даже 12 в целом неплохо.
igrishaev
27.01.2023 20:08+1Никто не мешает мне использовать вместо разделителя точку, доллар или что угодно, а слова набирать CamelCase-ом:
этот-пароль-очень-трудно-подобрать
Этот/Пароль/Очень/Трудно/Подобрать
Главное помнить слова и принцип их конкатенации.
M_AJ
27.01.2023 23:32+1Можно ведь и неправильно слова писать и жаргона добавить, по типу: "Ентад пороль трудна подобрать капецваще" и словарь содержащий все подобные формы разрастется до неприличны размеров.
DGN
28.01.2023 14:01Фактически это может быть соль пароля, к примеру "этот4пароль4на4Habr4трудно4подобрать"
Таким образом, мы создаем довольно длинный и уникальный пароль индивидуальный к каждому ресурсу. Если бы не самоуправство сисадминов, на тему того, каким быть моему паролю и как долго мне его использовать. Это настоящая проблема.
saege5b
28.01.2023 09:00+2А почему ограничиваем словарь?
У Лукьяненко был пароль попроще, про обезьян, а был "если что, я тебя потом к психологу свожу" - и этот пароль никакой социальной инженерией не вытащить.
И вообще: "Синхрофазотрон синхронизировал синхрофазотроннный электронн". Удачи в подборе.
MountainGoat
28.01.2023 14:48+1Просто пишу в начале Aa1!, а длину пароля оцениваю уже без этой приписки.
stalinets
27.01.2023 22:19Лучший менеджер паролей - это блокнотик с карандашом, лежащие в бумажнике. Хотя и это не спасёт от кейлоггера в системе, от кривого хранения паролей в самом сервисе куда ты логинишься, от mitm-атаки при прослушивании канала и т. д.
dartraiden
27.01.2023 22:47+2По-моему, худший, а не лучший.
Очень затрудняет резервное копирование. Резервные копии же должны быть разнесены в пространстве, иначе оба листочка благополучно сгинут, например, когда с потолка от соседей польётся вода. То есть, резервная копия будет обновляться не мгновенно с основной, а с какой-то ощутимой задержкой (т.к. располагается по другим географическим координатам), и будет вообще обновляться лишь до тех пор, пока пользователю не станет лень.
А без резервной копии вы очень легко и просто лишаетесь паролей вместе с бумажником.
Вариант с базой того же KeePass, лежащей в облаке, хорош тем, что изменения тут же сихронизируются и в любой момент времени есть минимум 2 идентичные копии (на локальном устройстве и в облаке), разнесённые географически.stalinets
27.01.2023 23:49Пароли следует периодически менять, да и обычно их можно восстановить, так что резервная копия паролей (кроме пароля от криптокошелька) имеет немного смысла. Но и тут несложно раз в полгода взять фотик, перефоткать блокнот и кинуть карту памяти с фотками на полку/в сейф. И кстати, от воды блокноту с записанными карандашом паролями как раз ничего и не будет. Поисковики находят и успешно читают дневники бойцов Второй Мировой, пролежавшие 70 лет в болоте.
Есть риск потерять блокнот, но тут уж вопрос аккуратности.
Ещё есть такой положительный момент, что регулярно вводя сложные пароли из блокнота (а не вставляя сохранённый даже не читая его), со временем запоминаешь даже самые сложные пароли и можешь вводить их на память. И память тренируется, и менеджер паролей ещё менее становится нужен.
Nansch
30.01.2023 10:03Одуреешь помнить пароли в 16 автосгенерированных символов. Может всё таки лучше в текстовый файл, файл в криптоконтейнер, криптоконтейнер синхронизируется с корпоративным облаком и еще одним локальным хранилищем независимо?
Didimus
28.01.2023 19:18Почему же, если пароли одноразовые, то это самый лучший блокнотный шифр. Не взламывается в принципе.
dartraiden
27.01.2023 22:43Базы паролей формата KeePass настолько часто встречаются при тестировании и обладают такой высокой ценностью, что под них даже есть специальный режим атаки в Hashcat
А как Hashcat разбирается с тем, что есть два разных алгоритма шифрования базы (AES и ChaCha20) и две разные функции формирования ключа (AES-KDF и Argon)
venanen
27.01.2023 22:48Помню хром с DPAPI еще с давних времен - еще году в 15 исследования ради писали софтину, которая из App Data берет пароли, на компьютере их расшифровывает и отправляет на сервер. Самое главное, что меня поражало - во-первых ни один антивирус на тот момент (как сейчас - не знаю) - такое поведение не считал странным. А во-вторых все действия можно проводить без прав администратора. Т.е. просто подвязанный exe с другим, нормальным исполняемым файлом - и все, можно добыть буквально все пароли из браузера в удобном виде сайт:логин:пароль. Кроме того, я в те времена еще много чего исследовал, и был удивлен: тогдашний Вк Мессенджер для ПК (был и такой) хранил токен доступа в открытом виде в той же App Data.
dartraiden
27.01.2023 22:57во-первых ни один антивирус на тот момент (как сейчас — не знаю) — такое поведение не считал странным
С точки зрения антивируса это всё легитимные операции. Пользователю запрещено читать свои файлы? Пользователю запрещено выполнять криптографические операции?
Попробуйте это запретить и посмотрите какой вой про «зонды» и «рабство» сразу поднимется. А также, сколько софта сразу сломается.и отправляет на сервер
Решается настройкой файерволла на «запрещено всё, что явно не разрешено».venanen
27.01.2023 23:07+1Безусловно. Но антивирус на то и антивирус чтобы подозрительные действия выявлять. К примеру, ситуации, когда рандомной программе понадобится доступ к папке Chrome - я сходу придумать не могу, но предупреждать о таком, считаю, необходимо.
Тем более если говорить не в контексте рабочего компьютера, где сисадмин может это настроить, а домашнего - можно слить пароли и даже никогда не узнать об этом.DirectoriX
28.01.2023 13:38доступ к папке Chrome
Беда в том, что программ, которые надо защищать от чтения «чужаками» на несколько порядков больше, чем только Chrome: только браузеров с десяток, всякие мессенджеры, почтовые клиенты, сетевые игры и т.д. и т.п. Конечно, в большинстве случаев можно будет угнать не базу паролей от кучи сервисов, а «всего лишь» токен от текущей сессии (которые могут быть жить неделями), но пользователю-то всё равно не понравится.konst90
28.01.2023 15:41Здесь просится общее решение - у каждого приложения своя папка, куда другим приложениям по умолчанию входа нет, пока пользователь не разрешит.
Busla
28.01.2023 13:40У Microsoft это должна была решить UWP (Metro-приложения, приложения для магазина, или как оно правильно называется™) - у приложения свой набор данных, к которому у других доступа нет. А для традиционных приложений исторически нет регламентов, куда можно ходить, а куда нет. Даже наоборот - львиная доля всяких плагинов, расширений, интеграций, автоматизаций как раз и реализована на хождении в чужие директории.
regint
30.01.2023 05:37У windows defender есть "защищённые расположения", если я правильно помню название. Но это все надо врукопашную настраивать.
sshemol
28.01.2023 09:16+1Такой скрипт может быть упакован в обычный EXE-файл
Или просто вызывать CryptUnprotectData из обычного скомпилированного ЕХЕ, без всяких скриптов и упаковки. Но это надо знать что то больше, чем питон.
karabas_b
28.01.2023 13:52Насколько вообще вероятен вариант взлома "хакер залез в компьютер, быстро выгрузил пароли и ушел"? Складывается впечатление, что в последнее время основной способ атаки это "невидимый резидент", и никто пароли не расшифровывает, "шпион" просто ждет, пока пароль введут явным образом. Судя по расцвету фирм типа Intellexa, Cytrox, NSO Group и т.д., дыр в стационарных и мобильных операционках, позволяющих загрузить в комп или телефон незаметно для жертвы любую шнягу, со временем только больше становится.
Didimus
28.01.2023 19:13А что насчёт Яндекс-браузера? Они статью пилили про синхронизацию паролей на устройствах
Rusinov
28.01.2023 20:08Тоже интересен этот вопрос. Т.к. гос. учреждения его стали ставить.
sshemol
29.01.2023 09:32Там пароли хранятся стандартно для любого хромиум браузера, но с дополнительным шифрованием.
Кроме того, не забываем, что если есть доступ к гуи, можно просто в браузере перейти в настройки, менеджер паролей и посмотреть сохраненные пароли прямо там.
konst90
29.01.2023 13:02Кроме того, не забываем, что если есть доступ к гуи, можно просто в браузере перейти в настройки, менеджер паролей и посмотреть сохраненные пароли прямо там.
Просто доступа к гуи не хватит, по крайней мере в Win10 в Хроме. Для просмотра паролей нужно ввести пин-код аккаунта Windows (тот же, что для авторизации при запуске ПК).
Rusinov
29.01.2023 13:07В яндекс браузере можно поставить пароль. И как раз интересно, насколько защита реально лучше чем в хроме.
sshemol
29.01.2023 14:38Мастер пароль имеет место быть.
насколько защита реально лучше чем в хроме.
Стоит исходить исходить из следующего соображения: если код браузера (менеджер паролей)способен получить эти пароли, то их сможет получить и любой другой код. Препятствием может стать мастер пароль, до того, как он будет введен.
kspshnik
29.01.2023 11:46Пользуюсь таким подходом: у меня есть несколько уже вбитых в память коротких бредопаролей типа "7sDjs-%kd", и на разные сайты использую ту или иную их комбинацию, например habr.com - ACDFA (каждая буква - один конкретный бредопароль), и спокойно записываю эти комбинации буквенным кодом в блокнот :)
polearnik
29.01.2023 13:20в чем преимущество с парльными менеджерами? смотрите . если у вас на компе завелс кейлоггер который будет сливать все введенные пароли то вариант с блокнотом работает против вас. тот же keepassxc через расширение в браузере передает пароли зашифрованными и светится в логах не будет.
Если троян может воровать и базы с паролями то тут ситуация такая же как и с блокнотом. он украдет и весь ввод с клавы и базу с паролями.
Но в удобстве парольный менеджер выигрывает у блокнота так как зашифрованная база может спокойно лежать в публичном облаке и без пароля это просто горстка случайных байт. потерять базу будет гораздо сложнее потом учто она будет в 3 местах сразу. на компе на телефоне и в облаке.
КРиптография настоько сложная тема с кучей нюансов в которой велосипеды не приветсвуются от слова совсем. малейший нюанс играет против вас. испольщуйте готовые решения а велосипеды стройте в других областях более толерантных к неверным решеним.
kspshnik
29.01.2023 21:10Например, в отсутствии парольных менеджеров на webOS?
%)
И в возможности использовать при недоступном интернете (пароли бывают не только от хабра :) )?
А про keepassxc я задумаюсь.polearnik
30.01.2023 10:35база хранится локально . но синхронизируется через облако или ручками или клиентами этого облака. если нет интернета это означает что вы будете пользоватся старой версией базы
Chiyoda
30.01.2023 10:04Я использовал пароли вида VladimirIlichUlianov-Lenin1870-1924 и прочих известных людей в таком же виде. Не знаю, насколько быстро их подбирать, но набор рандомных буквоцифр кажется мне избыточным.
Tarakanator
30.01.2023 11:28В случае, если злоумышленник получит мастер-пароль, базу защитит второй фактор.
А как злоумышленник получит мастер-пароль? Через заражённую машину? но тогда он получит и второй фактор. И спокойно расшифрует всю базу. Или просто сопрёт данные, когда ты сам расшифруешь базу.
Как на счёт рассмотреть возможность шифрованного хранения БЕЗ МАСТЕР пароля?
Т.е. каждый пароль шифруется своим паролем.
Как пример Trezor password manager. Но он тоже не идеален:
1)автозаполнение работает очень плохо
2)файл с паролями можно забэкапить, но без доступа к dropbox файл невозможно расшифровать.
Посоветует кто альтернативу?
MountainGoat
Пароль "R0s11@.pA&jkm9'sPT^#!$" запомнен не будет, он будет написан на бумажку и приклеен на монитор. Ну или положен в карман, после чего обронён в уборной. Такие правила к паролям в литературе считают устаревшими на 40 лет. Заставляет задуматься, экстраполируется ли это на остальные ваши практики.
Вот бывший пароль от одного общего рабочего ресурса: "один.Катон.украл.батон.унёс.в.кантон.купил.удон" За полгода никто ни разу не забыл. Набирать быстрее и удобнее, чем каракули. Если очень надо, можно сказать по телефону. А по стойкости, даже если взломщик знает, что там осмысленная фраза на русском, ну пусть перебирает 2Е+40 вариантов в надежде, что там нет имён, жаргона и эрративов.
R3B3LL10N
Прикол именно в том, что подборщик паролей пробует сперва самые распространённые и варианты, чтобы сократить время подбора. Именно поэтому пароль должен быть максимально хаотичным, чтобы соц инженерия не сработала и пошёл тупой брутфорс, которым современные процы будут заниматься годы. Если у вас в пароле целые короткие слова в одном регистре, ну... удачи. Максимум такая комбинация вычислится за пару часов.
Правила паролей не поменялись никак. Вся проблема в людях, которые не могут запомнить элементарные пароли и пишут их куда-то или просто забывают.
MentalBlood
Пароль вообще так себе ключ, его трудно уничтожить. А хакеры бывают разные
warhamster
Интересное заявление. А можно его как-то подтвердить? Мне просто интересно, у какого подборщика пароль из десятка слов относится к "распространенным вариантам", и сколько времени он будет перебирать менее распространенные?
lair
Вы энтропию-то считали?
SergeyMax
В слове horse, как и в любых других словарных словах энтропии гораздо меньше, чем в соответствующем количестве случайных букв.
DistortNeo
Совершенно верно, если оперировать длиной пароля в байтах. А теперь поменяйте "байты" на "нажатия клавиш", ведь пароли вводят люди, а не машины.
И тут, внезапно, оказывается, что "R0s11@.pA&jkm9'sPT^#!$" — это 36 тапов по экрану смартфона, хотя символов всего 22.
Ввести длинный пароль без спецсимволов и смены регистра гораздо быстрее, чем аналогичный по криптостойкости короткий пароль с извращениями.
osmanpasha
Да, и xkcd это учитывает. Там используется оценка 11 бит на слово, это примерно как 2 "парольных" символа. И тем не менее 4 слова дают 44 бит энтропии.
lair
Никто же не предлагает использовать парольные фразы той же длины, что обычные пароли. А дальше просто считаем. 1Password использует для генерации парольных фраз список из как минимум 18000 слов (по этой же ссылке есть обсуждение в терминах битов энтропии). Пароль из четырех слов из этого списка дает
18000**4
комбинаций, т.е. несколько больше чем10**17
, или несколько больше, чем 56-битный пароль. Если у вас 72 символа (52 буквы + 10 цифр + 10, от балды, знаков препинания), то это пароль из девяти символов. Не так уж и плохо для легко запоминаемого пароля.Mes
Для криптоэккаунтов используются известные 1024 слова, пока не вижу массовых взломов кошельков)
Tarakanator
Так там 24 слова.
1024=2^10 т.е. 10 бит в каждом слове.
24 слова это 10*24=240бит длина ключа.
lrrr11
EFF рекомендует парольные фразы, случайно сгенерированные из известного списка слов: https://www.eff.org/dice
Их и запомнить можно, и подобрать трудно, и вводить легко.
xaosxaos2
нее, только хардкор "сорок тысяч обезьян в жопу сунули банан" :)
grvelvet
Нестареющая классика
regint
В общем то, записанный на бумажке пароль это конечно не хорошо, но и не безумно страшно, особенно если вас в первую очередь беспокоит проникновение извне.
neonfury
Спасибо за комментарий!
О паролях можно писать целую статью, поэтому выше подана только основа для таких паролей, которые будет значительно сложнее подобрать, чем типичные.
Речь в статье идет о рисках личных парольных менеджеров. По рекомендациям после цитируемого Вами примера пароля, пользователь может составить и запомнить мастер-пароль от своей базы паролей, в которой будет хранить необходимые данные (вместо наклеек под клавиатурой и подобных способов хранения).
Кроме того, менеджеры не всегда используют мастер-пароли (бывают опции с ключ-файлами и устройствами). Если можете использовать такую опцию - выбор ваш, но учтите такие риски подхода, как копирование этих файлов и утеря носителей.
Насчет длинных фраз из слов - они вполне подбираемы словарным перебором. Большая длина пароля - не основной показатель: в интернете можно найти множество страниц, предостерегающих людей от использования библейских стихов. Поэтому идет речь о непредсказуемости в пароле.