Содержание
Достаём мастер-пароль из заблокированного менеджера паролей 1Password 4
Информационная безопасностьРеверс-инжинирингРазработка под WindowsСофт Перевод Автор оригинала: Adrian Bednarek Новые инструменты, старые методы. Проводим обратную разработку и находим фатальный недостаток 1Password. Все любят менеджеры паролей. Они великолепны по многим причинам. Лично у меня в менеджере более 200 записей. С таким большим количеством конфиденциальных данных в одном месте важно понимать масштаб ущерба в случае компрометации вашей записи, будь то вредоносные программы, эксплоиты или просто компьютер, оставленный без присмотра на несколько минут. Washington Post недавно опубликовала статью, основанную на нашем исследовании. Эта статья помогает довести людей, что не все менеджеры паролей одинаковы. Я свято верил, что заблокированный парольный менеджер надёжно защищён. Если кто-то получит доступ к моему компьютеру, то максимум может рассчитывать на кучку случайных байтов, поскольку информация надёжно вычищается из памяти. Это верно для 1Password 4 (Обратите внимание, что последняя версия на сегодня седьмая). Прежде чем перейти на него несколько лет назад я проверил, что в памяти действительно нет паролей в открытом виде, когда менеджер в заблокированном состоянии. Так что в случае компрометации злоумышленнику придётся иметь дело с зашифрованным хранилищем.
Хранилище заперто!
В этом состоянии в памяти нет ни парольных записей, ни мастер-пароля. Очень разумно и правильно, и 1Password 4 прошёл эту проверку. Или нет? Чтобы избавить от скучных деталей, скажу сразу: мы смогли восстановить мастер-пароль из заблокированного инстанса в 1Password 4, как показано ниже. Мы сразу попадаем в первую читаемую область пространства памяти 1Password 4.
Пример представления памяти HxD
Пока ничего особенного. Но можно выполнить поиск. Например, как выглядит ситуация, если набрать пароль в окне разблокировки 1Password 4, но не нажать кнопку «Разблокировать»:
Запертое хранилище 1Password 4 с введённым мастер-паролем в поле
Наверняка пароль где-то в памяти? Открываем HxD, но поиск строки с нашим мастер-паролем (“Z3Superpass#”) не даёт результатов. Похоже, 1Password как-то шифрует или обфусцирует форму по мере её ввода. Если процедура работает правильно, то всё хорошо. Чтобы узнать, почему мастер-пароль нельзя найти в памяти, когда он явно присутствует в диалоговом окне разблокировки, следует найти код, который с ним взаимодействует. Тут есть несколько способов. Можно отследить обработку событий клавиатуры и мыши путём локализации ‘GetMessage’, ‘PeekMessage’, ‘GetWindowText’ или других Windows API, которые обычно обрабатывают пользовательский ввод. Так мы найдём буфера, куда записываются нажатия клавиш, а через них выйдем на подпрограмму шифрования/обфускации. Но это долгий и подверженный ошибкам процесс, особенно с большими фреймворками, которые иногда очень странно управляют памятью, так что для отслеживания буфера придётся сделать множество копий и преобразований. Вместо этого используем собственный инструмент Thread Imager, созданный для обратной разработки «странных» проприетарных протоколов на прикладном уровне. Он поможет определить, в каком месте памяти 1Password 4 взаимодействует с нашим мастер-паролем. Инструмент «автоматически» идентифицирует области кода в 1Password 4, которые взаимодействуют с обфусцированным паролем (он просто подсвечивает инструкции, которые взаимодействуют с интересующими данными, для дальнейшего анализа). Результат выглядит примерно так:
Подробная запись в Thread Imager подсвечивает переход кода с с 0x7707A75D на 0x701CFA10, при этом на буфер с мастер-паролем ссылаются регистры EAX и ECX
Изучение этого места 0x7707A75D в отладчике (x64dbg) подтверждает нашу теорию. Действительно, впервые строка ‘Z3superpass#’ встречается при завершении работы функции декодирования ‘RtlRunDecodeUnicodeString’ из библиотеки ntdll.dll. После небольшого анализа ясно, что для обфускации пароля используются именно эти две функции: ‘RtlRunEncodeUnicodeString’ и ‘RtlRunDecodeUnicodeString’. Так мастер-пароль прячут от примитивного копирования из памяти, вот почему раньше мы не могли найти его в hex-редакторе. Если изучить закодированный буфер в конце работы функции RtlRunEncodeUnicodeString, то зашифрованная строка с мастер-паролем выглядит так:
Зашифрованный мастер-пароль
После RtlRunDecodeUnicodeString’ он декодируется:
Расшифрованный мастер-пароль
Интересно, что эта область сохраняется по тому же адресу 0x00DFA790 и мы буквально можем наблюдать её изменение при вводе пароля в окно разблокировки 1Password 4: По такой диаграмме легче понять, где и какие задействуются библиотеки, чтобы надёжно идентифировать области в памяти, откуда можно извлечь мастер-пароль. Что мы имеем на данный момент? У нас запертое хранилище, а где-то в памяти хранится обфусцированный пароль, поскольку программа не почистила за собой память надлежащим образом. Чтобы извлечь его, нужно вызвать процедуру в 1Password 4, которая инициирует ‘RtlRunEncodeUnicodeString’ и ‘RtlRunDecodeUnicodeString’. Таким образом она покажет расположение буфера памяти с закодированным мастер-паролем.
Область памяти с обфусцированным мастер-паролем
Без этого буфера пришлось бы погрузиться в бездну внутренних процедур и элементов управления Windows и связанных с ними механизмов управления памятью. Может, такой анализ и позволяет легко найти буфер, но мы не пошли по этому пути. Похоже, единственный способ вызвать ‘RtlRunEncodeUnicodeString’ и ‘RtlRunDecodeUnicodeString’ — это ввести в символ в диалоговое окно ввода мастер-пароля. Так мы получаем нужный буфер. Но мы не знаем длину пароля. Мы решили эту проблему путём перехвата кода, который обращается к первому символу нашего буфера, блокируя попытку изменения. Эта подпрограмма находится в цикле обработки сообщений управляющего элемента в comctl32, который обрабатывает управление буфером соответствующих элементов. Вызов ‘memmove’ со смещением 0x70191731 перезаписывает буфер введённым символом:
(Побочный эффект: выделенная строка (жёлтая) обновляет всю строку пароля)
Теперь мы, наконец, получили всё, что нужно для создания эксплоита. Следующие шаги позволят нам извлечь мастер-пароль:
- Ввод символа в поле ввода пароля и отказ от шага 1 (сохранение всего мастер-пароля), перенаправление шага 2 на шаг 3 для декодирования обфусцированного мастер-пароля.
Для выполнения всех этих действий создаём DLL с кодом обработчика всех этих хуков. Библиотека внедряется в процесс 1Password 4, отправляет один символ в диалоговое окно мастер-пароль, запуская шаги memmove, RtlRunEncodeUnicodeString и RtlRunDecodeUnicodeString, которые мы можем перехватить — и производя нашу магию по восстановлению обфусцированного мастер-пароля. Большая часть магии происходит в DetourRtlRunEncodeUnicodeString, это хук для функции ‘RtlRunEncodeUnicodeString’, показанный ниже: Что приводит нас к окончательному результату: разблокировка запертого хранилища 1Password 4 любой версии при помощи глючной процедуры в используемых Windows API: Когда мы впервые углубились во внутренности 1Password 4, то ожидали встретить какую-то сложную систему защиты и ожидали, что вся секретная информация будет очищаться из памяти, как это происходит в процедурах PBKDF2 и других областях, где используется мастер-пароль. Соответствующие записи тоже очищаются. Однако по недосмотру поле ввода пароля рассматривается как стандартный элемент управления Windows API со скрытым паролем, что подрывает безопасность 1Password 4.
Что такое мастер-пароль в Firefox
Некоторым пользователям известно, что в Firefox существует весьма неплохое хранилище паролей и логинов, потребных для автозаполнения необходимых строк при входе на тот или другой сайт. Причем сие хранилище защищенное.
Мастер-пароль же – это комбинация цифр и букв, которая используется для того, чтобы можно было защитить данные хранилища от любопытных глаз других пользователей компьютера (если таковые имеются).
Этот пароль устанавливается самим юзером. И запрос на его ввод появляется в том случае, если кто-то хочет просмотреть хранилище паролей. Также его нужно вводить при автовходе на сайты, требующие авторизации.
В общем, эта комбинация не дает любопытным получить доступ к вашим данным и страницам. Удобно, не правда ли? Но теперь пора рассказать о том, как пользоваться этой опцией защиты.
Установка мастер-пароля
По умолчанию эта штука не используется. Поэтому вам нужно включить ее собственноручно. Это действие выполняется при помощи встроенных инструментов веб-обозревателя. Никакого дополнительного программного обеспечения не требуется.
Но те пользователи, кто недавно пересел на Mozilla Firefox могут испытывать некоторые проблемы по причине непривычного интерфейса. Поэтому мы подготовили подробную инструкцию с четким алгоритмом действий:
- В правом верхнем углу главного окна нужно найти кнопку с изображением трех горизонтальных полосок и кликнуть по ней.
- Появится меню, в котором требуется кликнуть по пункту «Настройки».
- Теперь в списке параметров нужно перейти на вкладку «Приватность и защита».
- В блоке «Логины и пароли» нужно отметить галочкой пункт «Использовать мастер-пароль».
- Появится окошко для настройки. Придумываем пароль и вводим его два раза в соответствующие графы.
- Далее нажимаем на кнопку «ОК» и закрываем список параметров.
Все изменения будут учтены немедленно. Теперь при попытке посетить хранилище личных данных Firefox запросит пароль.
Удаление мастер-пароля в Firefox
Но что делать, если вы передумали? Как удалить мастер-пароль в Firefox? На этот случай тоже есть соответствующая инструкция.
- Повторяем пункты 1-4 из предыдущей инструкции.
- Затем снимите галочку с пункта «Использовать матер-пароль».
- Появится окно, в котором требуется ввести существующую комбинацию и нажать «Enter».
- Далее нажимаем на кнопки «Удалить» и «ОК».
Вот так можно убрать мастер-пароль. Но делать этого категорически не рекомендуется в том случае, если вы не являетесь единственным пользователем компьютера. Это азы безопасности. И им нужно следовать для того, чтобы не попасть впросак.
Мало кто знает, но есть способ добраться до настроек браузера гораздо быстрее. Для этого в адресной строке (в самом верху главного окна) нужно ввести about:preferences. Сразу же откроется список параметров. Не нужно будет путешествовать по меню и выискивать необходимые пункты. Некоторые юзеры используют именно такой вариант.
Мастер-пароли
Когда ноутбук заблокирован паролем, контрольная сумма этого пароля хранится в так называемом FlashROM-это чип на материнской плате устройства, который также содержит код BIOS и другие настройки, например тайминги памяти.
Для большинства брендов эта контрольная сумма отображается после ввода неверного пароля в третий раз:
Сообщение “система отключена” – это просто тактика запугивания: когда вы удалите все питание с ноутбука и перезагрузите его, он будет работать так же, как и раньше. Из такой контрольной суммы (также называемой “хэш”), допустимые пароли могут быть найдены с помощью грубой силы.
Механизмы обхода других поставщиков работают, показывая пользователю номер, из которого можно получить мастер-пароль. Этот пароль обычно представляет собой последовательность чисел, генерируемых случайным образом.
Некоторые поставщики прибегают к хранению пароля в виде обычного текста на флэш-памяти, и вместо того, чтобы распечатать только контрольную сумму, отображается зашифрованная версия пароля.
Другие поставщики просто получают мастер-пароль от серийного номера. В любом случае, мои скрипты могут быть использованы для получения действительных паролей.
Некоторые поставщики реализовали меры по обфускации, чтобы скрыть хэш от конечного пользователя – например, некоторые ноутбуки FSI требуют ввести три специальных пароля для отображения хэша (например, “3hqgo3 jqw534 0qww294e”,” включить мастер-пароль”).
Как пользоваться генератором для мастер-паролей BIOS?
- Вводим в поле «Код» цифры, которые отобразились на экране ноутбука после трёх неправильных вводов пароля.
- Затем нажимаем кнопку «Получить пароль BIOS». Результат должен быть как на картинке ниже.
Данный генератор мастер-пароля BIOS позволяет:
- Восстановить пароль BIOS ноутбуков Acer;
- Восстановить пароль BIOS ноутбуков HP-Compaq, HP MINI;
- Восстановить пароль BIOS ноутбуков MSI;
- Восстановить пароль BIOS ноутбуков Dell;
- Восстановить пароль BIOS ноутбуков Fujitsu-Siemens;
- Восстановить пароль BIOS ноутбуков Sony;
- Восстановить пароль BIOS ноутбуков Samsung.
Принцип работы генератора мастер-паролей
Мастер пароль ноутбуков, работающих на Phoenix BIOS, генерируется по серийному номеру модели конкретного производителя.
Как проверить работоспособность скрипта?
Для проверки работоспособности скрипта скопируйте данную комбинацию в поле «Код»: 39854365.
Скрипт должен возвратить ответ в виде мастер-пароля для ноутбука Fujitsu-Siemens: 06211328.
Внимание! Для того чтобы форма для генерации мастер- паролей работала корректно необходимо отключить блокиратор рекламы и скриптов .
Ссылка на генератор мастер-паролей –
А так же можно посмотреть исходный код генератора в репозитории GitHub
Code source ‘Password generator for BIOS:
Как снять пароль с БИОСа программным методом
Существует специальная утилита – CMOSPWD, которая поможет сбросить пароль из-под Windows. Это сработает, конечно, если у вас есть доступ к системе, вы помните пароль BIOS, но не хотите заходить туда, чтобы стереть его. Либо не знаете как.
Скачайте утилиту . Откройте и далее сделайте так: зажмите клавишу SHIFT, нажмите правой кнопкой мышки, затем выберите опцию «Открыть окно команд».
Запустится командная строка, где можно посмотреть, какие команды доступны в этой утилите. Для этого введем следующее – cmospwd_win.exe /?.
Чтобы осуществить сброс пароля BIOS необходимо ввести такую команду: cmospwd_win.exe /k
Для подтверждения действия очистки CMOS введите цифру 1 и нажмите Enter. Программу спокойно можно использовать не только в Windows, но и с загрузочной флешки DOS. Первоначально ее нужно поместить в образ.
Заблокирован БИОС
Снятие или сброс пароля на вход в БИОС ноутбука в сервисных центрах Петербурга стоит в районе 2 000 рублей. Точнее сказать, разброс цен на данную процедуру составляет от 1 500 до 4 500 рублей. Всё зависит от фирмы-производителя и конкретной модели ноутбука, потому, что сброс пароля на БИОС (BIOS) в ноутбуке может оказаться достаточно сложной процедурой даже для опытного и продвинутого сервисного инженера вследствие технологических особенностей конкретной модели ноутбука. На серийных и бюджетных моделях, практически всех известных на сегодняшний день производителей ноутбуков (ACER, ASUS, TOSHIBA, SAMSUNG, HP и т.д.), применяется несложная методика хранения паролей на вход в БИОС и на загрузку операционной системы. Скинуть пароль на вход в БИОС в таких ноутбуках зачастую возможно просто вынув и затем обратно вставить батарейку CMOS.
Используемые источники:
- https://m.habr.com/ru/post/441166/
- https://firefx.ru/faq/master-parol-firefox
- https://rucore.net/kak-sbrasyvat-parol-bios-na-noutbukah-master-parolem/