Купить решения «Лаборатории Касперского»
в интернет-магазине Kaspersky-Security.ru |
Разбор и анализ поддельного криптокошелька Trezor | Блог Касперского
Фальшивый аппаратный (холодный) криптокошелек: как его взломали и как из него украли биткоины
Криптовалюта — один из самых привлекательных для злоумышленников цифровых активов, его несложно красть и удобно обналичивать. Для защиты своей криптовалюты серьезные инвесторы часто применяют аппаратные криптокошельки. В таком кошельке приватные ключи хранятся вне уязвимых к атакам компьютеров и смартфонов, и подписывать транзакции гораздо безопасней. К сожалению, покупка аппаратного кошелька тоже не гарантирует сохранности средств, как узнал на своем печальном опыте один наш клиент.
Симптомы взлома
Кража криптовалюты произошла незаметно: в один ужасный день в истории транзакций криптокошелька появилась операция по переводу крупной суммы средств на сторону. Самое интересное, что в тот день жертвой никаких транзакций не проводилось, более того — криптокошелек к компьютеру не подключался!
Изучаем кошелек
Герой нашего печального рассказа приобрел довольно распространенный аппаратный кошелек Trezor Model T. Эта модель с открытыми и полностью доступными исходниками как программной, так и аппаратной частей, основанная на популярном микроконтроллере STM32F427.
Производители Trezor Model T реализовали широкий спектр мер, которые в теории должны надежно защищать устройство от злоумышленников. Коробка и сам корпус устройства опечатаны голографическими наклейками, микроконтроллер переведен в режим защиты от чтения памяти (RDP 2), а загрузчик прошивки проверяет ее цифровую подпись и в случае любых аномалий выводит сообщение о неоригинальности прошивки и удаляет все данные из кошелька. Для доступа к устройству и подтверждения транзакций используется PIN-код, который хоть и не защищает мастер-ключ (master access key, на основе которого генерируется мнемоническая сид-фраза — seed phrase), но используется для шифрования хранилища, где он лежит. Опционально, в дополнение к PIN-коду, можно установить защищающий мастер-ключ пароль, использование которого предусмотрено стандартом BIP-39.
Изученный нами экземпляр кошелька на первый — поверхностный — взгляд выглядел точь-в-точь как оригинальный, без признаков вскрытия. Кошелек покупался на популярном маркетплейсе у проверенного продавца, голографические наклейки на коробке и самом кошельке присутствовали и не были повреждены. При загрузке кошелька в режиме обновления отображались версия прошивки 2.4.3 и версия загрузчика 2.0.4
При использовании кошелька тоже не возникало никаких подозрений — все функции работали как положено, никаких отличий в интерфейсе от оригинала не наблюдалось. Однако с учетом уже состоявшейся кражи крипты мы не удовлетворились поверхностным осмотром и полезли глубже. Тут-то и начались интересные открытия.
Сразу выяснилось, что загрузчика с версией 2.0.4 производителем никогда не выпускалось. В истории изменений на GitHub проекта лаконично указано, что этот номер версии «пропущен из-за подделок». После такого интригующего объявления, конечно, пришлось перейти к вскрытию.
Открыть корпус удалось с трудом — его половинки были щедро залиты клеем и проклеены двусторонним скотчем вместо «родной» ультразвуковой сварки заводских Trezor. Но самое интересное — внутри оказался совершенно другой микроконтроллер с заметными следами пайки! В подопытном экземпляре вместо оригинального STM32F427 был впаян STM32F429 с полностью отключенными механизмами защиты микроконтроллера от чтения данных и флеш-памяти (RDP 0 вместо RDP 2 в оригинальных кошельках).
Версия о поддельном криптокошельке оказалась доказанной — перед нами была классическая атака на цепочку поставок, когда ни о чем не подозревающая жертва приобретает уже взломанное устройство, — но сам механизм хищения криптовалюты был еще не ясен.
Троянская прошивка
Мы не станем повторять азбучные истины о работе криптокошельков, о которых писали раньше, напомним лишь одно: криптокошелек хранит приватный ключ и, зная его, можно подписать любую транзакцию и потратить деньги. Если злоумышленники смогли провести операцию, пока отключенный криптокошелек спокойно лежал в сейфе владельца, значит, они либо скопировали приватный ключ после его генерации, либо же… знали его заранее!
Благодаря отключенной защите флеш-памяти от чтения, которую наши злоумышленники после впайки нового микроконтроллера решили не активировать, мы с легкостью извлекли из криптокошелька его прошивку и, реконструировав ее код, обнаружили, что верна вторая версия. Мошенники внесли всего три изменения в оригинальные прошивки загрузчика и самого кошелька.
Во-первых, полностью убрали контроль защитных механизмов и цифровых подписей в загрузчике, избавившись от проблемы «красного экрана» при проверке оригинальности прошивки в момент запуска.
Во-вторых, на этапе инициализации или при сбросе кошелька случайно сгенерированная сид-фраза заменялась на одну из 20 заранее созданных и сохраненных в мошеннической прошивке. Владелец начинал ее использовать, считая совершенно новой и уникальной.
В-третьих, если владелец устанавливал дополнительный пароль для защиты мастер-ключа, использовался лишь его первый символ (a…z, A…Z, 0…9 или ! для любого спецсимвола), что вместе с вариантом вообще без пароля давало 64 возможных комбинации. Таким образом, чтобы подобрать ключ к конкретному фальшивому кошельку, злоумышленникам нужно было перебрать всего 64*20=1280 вариантов.
На вид фальшивый криптокошелек работал как обычно, но с самого начала мошенники имели над ним полный контроль. Как видно из истории транзакций, они не торопились и выждали целый месяц после первого пополнения кошелька, прежде чем вывести с него деньги. Но защиты у владельца денег не было никакой — игра была проиграна уже в тот момент, когда на троянский кошелек впервые поступили средства.
Как предотвратить угрозу фальшивок
Без специальных знаний и опыта отличить фальшивый криптокошелек от настоящего довольно сложно. Основная защита — покупать кошелек напрямую у официального производителя и выбирать модели со специальными версиями защищенных микроконтроллеров (даже оригинальный Trezor в этом смысле не идеален, есть модели с более защищенными чипами и дополнительными механизмами защиты).
И стоит помнить, что даже не подделанный и не модифицированный кошелек может быть уязвим к целому ряду атак, от которых требуется защита. Среди приоритетных мер — использование пароля, если он поддерживается кошельком, и, разумеется, защита всех компьютеров и смартфонов.
Источник: Лаборатория Касперского
10.05.2023