Security Week 2423: о плохих генераторах случайных чисел и пароле к криптокошельку

Security Week 2423: о плохих генераторах случайных чисел и пароле к криптокошельку
«Взлом» криптокошелька, пароль к которому был утерян больше 10 лет назад, — это самая красивая история по теме кибербезопасности на прошлой неделе. Пожелавший остаться анонимным пользователь приобрел биткоины на сумму примерно 4000 евро в 2013 году. Криптовалюта хранилась в цифровом кошельке, доступ к которому был защищен паролем. Известный исследователь Джо Гранд на пару с коллегой помогли владельцу криптокошелька восстановить пароль, и не при помощи простого перебора, а, как правильно отметили в обсуждении на Хабре, «решив проблему мозгами». Джо Гранд любит подавать свои истории красиво, он снял видео и дал интервью журналу Wired, где использовал красивые и понятные более широкой аудитории метафоры типа «мы нашли способ повернуть время вспять».


Реально интересная техническая информация этой работы, впрочем, уместилась на одну страницу текстом . Для облегчения «взлома» криптокошелька хакерам требовалось уменьшить количество возможных вариаций пароля для перебора. Им удалось это сделать благодаря одной особенности программы RoboForm, которую владелец кошелька использовал для генерации пароля. И это, пожалуй, самое интересное: анализ старой версии RoboForm показывает нам пример, как не надо генерировать случайные последовательности символов.


Вот этот скриншот показывает, как выглядел интерфейс генератора паролей, встроенного в RoboForm, в 2013 году. Можно было задать длину пароля, указать дополнительные параметры для генерации, такие как использование специальных символов, цифр, заглавных и строчных букв. RoboForm вообще-то позволяет хранить пароли, но владелец кошелька побоялся, что так его могут легко украсть злоумышленники, если каким-то образом взломают компьютер. Поэтому пароль был сгенерирован, удален из RoboForm, сохранен в (предположительно) текстовый файл, который был зашифрован. Зашифрованный файл со временем был поврежден, соответственно доступ к криптоденьгам — утерян.

Исследование кода RoboForm показало, что под капотом генерация паролей устроена, скажем так, слишком просто. Сначала происходит вызов функции _time64 , которая возвращает время в секундах, прошедшее с 1 января 1970 года. Это значение передается функции _srand и затем в генератор псевдослучайных чисел _rand. На основе уже этих данных генерируется пароль с теми вводными, которые указал пользователь. Исходное значение для такого генератора случайных чисел критически важно. Использование текущей даты и времени привело к тому, что генерируемые в RoboForm пароли довольно долгое время случайными не были. Если «взломщик» знает точное (до секунды) время генерации пароля и его параметры (количество символов, использование цифр, спецзнаков и так далее), он может сгенерировать точно такой же пароль.

В реальности код был несколько сложнее: туда был добавлен откровенный костыль, отрабатывающий ситуацию, когда пользователь генерирует пароль два раза в течение секунды. Чтобы не расстраивать клиентов знанием о том, что пароли будут сгенерированы одинаковые, на каждое нажатие кнопки системное время в секундах изменялось на фиксированное значение. Это, естественно, никак не меняет ситуацию с полной предсказуемостью генерируемых паролей. RoboForm исправила этот алгоритм только в июне 2015 года. Если кто-то пользовался этой программой ранее и до сих пор оперирует сгенерированными 10 с лишним лет назад паролями, их на всякий случай стоит поменять.

Хотя пароль от кошелька и был утерян, у его владельца сохранились другие пароли, сгенерированные в RoboForm в тот же период. Они позволили понять, какие предпочтения были у владельца кошелька при генерации: 20 символов, заглавные и строчные буквы, цифры, спецсимволы. Была известна дата покупки криптовалюты: 14 апреля 2013 года. Это дает 604 800 вариантов пароля на каждую неделю поиска. В итоге выяснилось, что пароль от криптокошелька был сгенерирован слегка по-другому, без спецсимволов, и произошло это 15 мая 2013 года в 16 часов 10 минут 40 секунд. Понятно, что это стало известно уже после того, как был найден правильный пароль от криптокошелька, после перебора нескольких миллионов вариантов. Потеря пароля пошла владельцу криптовалюты на пользу: за это время его «инвестиция» подросла с 4000 до нескольких миллионов евро.

Продемонстрированная в данной истории проблема характерна для криптографии: вроде бы надежный для внешнего наблюдателя алгоритм внутри может иметь изъяны, которые если и не позволяют сразу вычислить «секрет», то значительно сужают количество возможных вариантов. Даже если система защиты достаточно надежна для заданных условий, играет роль человеческий фактор. Опасаясь того, что компьютер взломают, а деньги украдут, владелец криптовалюты совершил «выстрел в ногу», зашифровав данные, но не предусмотрел резервное копирование. В опубликованных Джо Грандом материалах также не говорится о том, как долго занял бы банальный перебор всех возможных вариантов пароля. Но даже если он бы обошелся недорого по сравнению с потенциальной наградой, способ, который применили белые хакеры, оказался куда интереснее.

Что еще произошло:

Эксперты «Лаборатории Касперского» опубликовали очередной отчет по эволюции киберугроз за первый квартал 2024 года: обзорную статью и статистику для ПК и мобильных устройств . Еще одна публикация посвящена теории атак через доверительные отношения компаний и подрядчиков, с примерами из практики.

Критическая уязвимость обнаружена в роутере TP-Link Archer C5400X. Система, ответственная за диагностику беспроводных подключений, принимает команды на портах TCP 8888, 8889 и 8890. Отправка подготовленных данных по этим портам может приводить к выполнению произвольного кода на устройствах.

В начале июня Google предпринимает новые шаги по отказу от расширений для браузера Google Chrome, использующих «устаревшие» спецификации Manifest V2. Пользователи бета-версий Chrome будут получать предупреждения, если используют такие расширения. В следующем стабильном релизе расширения будут принудительно отключены, хотя пока останется возможность включить их обратно. Manifest V3 направлен на усиление безопасности, но следствием этого станет ограничение возможностей расширений, прежде всего — блокировщиков рекламы.

Интересное исследование пиратской версии Microsoft Office (и других программ) показывает в деталях, что происходит, если скачать и установить неудачную копию ПО, скачанного с торрентов. Проанализированная вредоносная копия, распространяемая в основном среди пользователей в Южной Корее, устанавливает (помимо офисного пакета) пять вредоносных программ, используемых для удаленного контроля ПК, майнинга криптовалют, создания прокси-сервера, блокировки защитного ПО. Вредоносные элементы скачиваются из Google Drive или с GitHub, а для коммуникации с командным сервером используется чат в Telegram или Mastodon.
RoboForm
Alt text
Обращаем внимание, что все материалы в этом блоге представляют личное мнение их авторов. Редакция SecurityLab.ru не несет ответственности за точность, полноту и достоверность опубликованных данных. Вся информация предоставлена «как есть» и может не соответствовать официальной позиции компании.

Хакеры ненавидят этот канал!

Спойлер: мы раскрываем их любимые трюки

Расстройте их планы — подпишитесь