Главная » Новости криптовалют » Я забыл свой PIN: Рассказ о том, как можно потерять $30 000 в биткоинах (Часть 2)

Я забыл свой PIN: Рассказ о том, как можно потерять $30 000 в биткоинах (Часть 2)

Сегодня мы продолжаем рассказ истории о том, как бывший редактор журнала WIRED и сооснователь сайта BoingBoing, Марк Фрауэнфельдер, чуть было не потерял свои 7,4 BTC из-за нелепого стечения обстоятельств. Не забудьте ознакомиться с первой частью истории, если ещё не читали.

Письмо: 16 августа 2017 г.: 7,4 BTC = $32 390

Осознание того, что я забыл ПИН-код, стало чем-то вроде звона в ушах – тем, что всегда на заднем плане, что трудно игнорировать и что раздражает. Что не так с моим разумом? Смог бы я вспомнить ПИН, если бы мне было лишь чуть больше 20 или 30? Я жалел себя, но однажды увидел в своём электронном ящике письмо от Satoshi Labs, производителя Trezor.

В теме письма говорилось: «Обновление безопасности прошивки TREZOR 1.5.2».

В письме было написано, что обновление должно исправить «проблему безопасности, поражающую все устройства с прошивкой версии ниже 1.5.2». Далее говорилось:

Для того чтобы воспользоваться этой уязвимостью, злоумышленнику понадобится взломать устройство, в процессе разрушив его корпус. Ему также понадобится прошить устройство специально разработанным ПО. Если ваше устройство не повреждено, то ваш пароль в безопасности, и вам следует как можно раньше обновить прошивку до версии 1.5.2. С прошивкой версии 1.5.2 данный вектор атаки исключён и ваше устройство в безопасности.

Может ли в пуленепробиваемой безопасности Trezor быть уязвимость, которой я мог бы воспользоваться? Я зашёл в ветку r/TREZOR, чтобы посмотреть, что об этом говорят. Первым, что я нашёл, была ссылка на пост на Medium от кого-то, кто утверждал, что знает, как взломать Trezor с помощью уязвимости, упоминаемой в письме. Пост был озаглавлен «Trezor – сбои в безопасности раскрывают ваши приватные ключи!»

Автор прикрепил фотографии разобранного Trezor и скриншот содержимого файла с 24 ключевыми словами и ПИН-кодом. Автор также дал ссылку на самодельную прошивку для Trezor, но без каких-либо инструкций по её применению. Я перечитал статью несколько раз, прежде чем посмотрел на имя автора: Doshay Zero404Cool. Это был тот самый человек, с которым я переписывался на Reddit пять месяцев назад! Я зашёл в личные сообщения, чтобы почитать свою старую переписку с zero404cool, и обнаружил новое сообщение от него или неё, отправленное через несколько месяцев после нашего последнего контакта:

Привет. Вы нашли свой ПИН-под? Если нет – у вас там заблокирована очень небольшая сумма. Вряд ли это стоит работы по восстановлению. Даже при сегодняшних ценах, возможно, меня устроит разве что 50% от восстановленной суммы…

Я подумал о том, чтобы принять предложение zero404cool о помощи, но решил сначала связаться с экспертом по Биткоину, которого я знаю не один год, – Андреасом Антонопулосом, автором книги «Интернет денег». Я несколько раз брал у Андреаса интервью для Boing Boing и Института будущего, и в биткоиновом мире он считается авторитетным консультантом по безопасности.

Он знал о Биткоине больше, чем кто-либо другой, кого мне приходилось встречать. Я написал ему 20 августа и рассказал, что не могу получить доступ к биткоинам на $30 000, застрявшим на моём Trezor. Я спросил, не даёт ли уязвимость возможность вернуть мои биткоины. «Уязвимость, описанная в статье, реальна, и её можно использовать, чтобы восстановить ваши ключи, так как вы (я полагаю) не обновили прошивку до версии 1.5.2, устраняющей уязвимость». Мне повезло, что я не обновил свой Trezor до версии 1.5.2, потому что дальнейший откат прошивки стёр бы память Trezor, навсегда удалив ключевые слова и ПИН.

Далее Андреас сказал, что знает «юного программиста-вундеркинда, который на удивление умеет справляться с Trezor и связанными программами». Парню 15 лет, и его зовут Салим Рашид. Он живёт в Великобритании. Андреас никогда с ним не виделся, но много общался с ним в Slack. В фирме производителе Trezor Satoshi Labs также знали о Салиме и даже дали ему несколько разработок Trezor для экспериментов. Андреас предложил организовать приватный чат с Салимом в Telegram.

Через несколько минут Андреас представил меня Салиму:

Марк – владелец надёжно заблокированного Trezor, надеющийся на чудо.

Андреас описал план: Салим инициализирует один из своих Trezor с прошивкой, идентичной моей, поупражняется на нём в использовании трюка по восстановлению, пока не доведёт его до совершенства, после чего пришлёт мне программу для взлома через Telegram. Я куплю второй Trezor и поупражняюсь на нём в установке и выполнении трюка Салима, пока не выучу его досконально. Затем, выражаясь словами Андреаса, я «выполню его на целевом устройстве» (моём оригинальном Trezor с 7,4 BTC).

Но Андреас сказал, что прежде чем приступить, «лучше всего оговорить ожидания и условия, как на случай успеха, так и на случай неудачи (вероятность которой выше)».

Я сказал Салиму, что хочу получить пошаговые видеоинструкции о том, что нужно делать. Я предложил 0,05 BTC ($200) авансом и ещё 0,2 BTC ($800), если мне удастся вернуть свои биткоины. Салим принял такие условия. Я добавил:

«Если ты потратишь слишком много времени на подготовку инструкций, дай мне знать, и мы сможем соответственно увеличить оплату».

Я заказал на Amazon второй Trezor. Между тем Салим сказал мне, что мне понадобится операционная система с открытым кодом Ubuntu Linux. Я установил её на старый MacBook Air.

Вознаграждение: 24 августа 2017 г.: 7,4 BTC = $32 387

Салим:

Марк, видео готово, но я бы хотел поднять цену по нескольким причинам: Создание видео оказалось сущим адом (у меня для этого нет подходящей камеры, поэтому я собрал подвесную систему, которую пришлось очень долго настраивать). Мне пришлось написать код для прошивки для использования уязвимости (что, я считаю, должно быть включено в цену).

Я согласился.

Салим:

Возможно ли получить 0,35 BTC за видео и прошивку и затем 0,5 BTC в случае успеха? Итого 0,85 BTC. Знаю, что это резкое увеличение, но я считаю, что это справедливая сумма за проделанную работу.

Салим хотел получить эквивалент $3 700, почти в 4 раза больше изначального вознаграждения, но я понимал, что оно того стоит (и намного лучше того, что предлагал zero404cool). Если только я снова увижу свой ПИН – тот самый, который Trezor, Wallet Recovery Services, пользователи Reddit и все остальные называли невосстановимым, – я с радостью заплачу Салиму столько, сколько он попросит. Как говорил Андреас, это будет чудо. Как можно за такое назначать цену?

Я:

Ты протестировал свою прошивку на Trezor с такой же прошивкой, как у меня?

Салим:

На видео я устанавливаю на Trezor прошивку версии 1.4.0, настраиваю её, затем несколько раз неправильно ввожу ПИН (чтобы ситуация была аналогична вашей).

Я:

Ладно, договорились.

Салим дал мне свой биткоиновый адрес, и я отправил ему 0,35 биткоина с онлайн-кошелька, который я создал несколько месяцев назад. Через минуту он загрузил 2 файла, один под названием exploit.bin, а второй – 10-минутное видео. На видео был показан экран его компьютера, где было видно команды, которые он вводил в окне терминала Linux. Звука не было. В нижнем правом углу видео было изображение его Trezor, приклеенного скотчем к столу.

Я плохо разбираюсь в командах Linux, поэтому то, что я смотрел, мало что для меня значило. Первая часть видео просто содержала инструкции по инициализации тестового Trezor и откату прошивки до версии 1.4.0, чтобы я мог поупражняться на своём втором Trezor. Собственно инструкции по установке и использованию прошивки для взлома занимали последние три минуты видео.

Я попросил Салима объяснить, как работает его трюк. Он сказал, что когда Trezor включен, его прошивка (по сути, операционная система Trezor) копирует его ПИН и 24 ключевых слова в SRAM (статическую RAM, память, которую Trezor использует для хранения информации) в незашифрованном виде. Если проделать с устройством так называемую «мягкую перезагрузку» – аккуратно закоротив два вывода на его печатной плате, – то после этого можно установить прошивку для взлома, не стирая содержимое SRAM. Это позволяет увидеть ПИН и ключевые слова.

Мой второй Trezor приехал в пятницу. Мне не терпелось приступить, но надо было подождать до субботы, потому что в тот день мне нужно было записать несколько подкастов. Единственное, что я сделал в пятницу, – разрезал корпус тестового Trezor, чтобы вынуть печатную плату. Я взял складной нож, медленно и аккуратно провёл им по шву, пока не смог разобрать корпус. Хотя это был всего лишь тестовый Trezor, я потел и дрожал. Последние 5 месяцев у меня с Trezor были такие ужасные отношения, что я не мог думать о нём рационально. Я боялся, что разрежу дорожку на плате. После того как я его вскрыл, я подключил его, чтобы убедиться, что он включается. Он включился.

Взлом: 26 августа 2017 г.: 7,4 BTC = $32 208

Ночью в пятницу я спал на удивление хорошо. Карлы и Сарины не было дома. Джейн у себя в комнате занималась укулеле и японским языком. Я освободил небольшой стол в своём кабинете, положил на него MacBook Air с Linux и подсоединил к тестовому Trezor USB-кабель, приклеил его скотчем к столу, как это делал Салим.

Я ещё раз посмотрел видео Салима, в этот раз записав используемые им команды Linux в текстовый файл, чтобы можно было скопировать и вставить их в окно терминала. На видео Салим перезагружал свой Trezor, закоротив два вывода на плате с помощью пинцета и одновременно нажав две кнопки на Trezor. Выводы были очень маленькие, и я знал, что мои руки будут слишком сильно дрожать, чтобы использовать пинцет. Вместо этого я, чтобы перезагрузить Trezor было проще, приспособил пару проводов и кнопку.

Следуя инструкциям, я успешно откатил прошивку до версии 1.4.0. Затем задал тестовому Trezor ПИН (2468) и записал сгенерированный сид из 24 слов. После этого я установил прошивку для взлома, ввёл около десятка команд Linux, нажал кнопки для мягкой перезагрузки Trezor и ввёл ещё несколько команд. Сработало! Тестовый Trezor был успешно взломан, и я увидел слова для восстановления и ПИН на экране Mac. Я повторил процесс ещё 6 раз, на что ушло всё утро и большая часть дня и с удивлением обнаружил, что уже 3:45 дня. Время пролетело, и я пропустил обед и свой привычный послеобеденный кофе. Ни того, ни другого мне не хотелось.

Я был готов попробовать на оригинальном Trezor. Я позвал Джейн, чтобы она сняла на видео мою единственную попытку вернуть свои биткоины.

Последние несколько дней меня беспокоила неуверенность в том, добавил ли я к ПИН-коду ещё и фразу-пароль – такую дополнительную степень защиты предлагает Trezor. После того как я 5 месяцев не мог его использовать, я не был уверен, установил ли я такой пароль или нет. Салим и Андреас сказали, что если на моём Trezor есть фраза-пароль, то игра действительно проиграна. Trezor будет заблокирован навсегда. Каждый раз, когда я об этом думал – а это было достаточно часто, – мои сомнения были как нож в живот.

Я подключил Trezor и набрал:

sudo trezorctl get_features

На экране появилась информация о состоянии Trezor. Я лихорадочно пробежался глазами по экрану, пока не увидел слова:

passphrase_protection: false

Да! Это я и хотел увидеть. Теперь практически ничто не могло меня остановить.

Когда пришло время нажать кнопки на Trezor, пальцы меня не слушались. «Я очень сильно дрожу», – сказал я Джейн. Пришлось на минуту остановиться, чтобы расслабиться. Я попробовал ещё раз, и снова не успешно. С третьей попытки мне удалось-таки нажать все три кнопки одновременно. Trezor перезагрузился, и я смог установить exploit.bin.

Я набрал следующую команду, чтобы загрузить на Trezor самодельную прошивку Салима:

sudo trezorctl firmware_update -f exploit.bin

Данная команда стёрла существующую прошивку и установила версию Салима. На экране Trezor говорилось:

Новая прошивка успешно загружена. Теперь можно отсоединить TREZOR.

Но здесь мне как раз не нужно было отсоединять Trezor. (Я помнил предостережение Андреаса: «Отключение питания во время загрузки прошивки – это катастрофа, вы потеряете все ваши данные»). Вместо этого я нажал небольшую кнопку, которую подсоединил к печатной плате, чтобы выполнить мягкую перезагрузку Trezor. На его экране появился восклицательный знак в треугольнике и надпись:

ВНИМАНИЕ! Обнаружено неофициальное программное обеспечение.

Спасибо за предупреждение, подумал я. Как раз это я и пытался сделать: запустить на этой чёртовой вещице неофициальное ПО. Я нажал одну из кнопок Trezor, чтобы подтвердить, что я хочу продолжить, и на экране появилась надпись «EXPLOIT», что означало, что ПО Салима работает на Trezor. Пути назад были отрезаны. Либо это сработает, либо Trezor всё сотрёт, и мои биткоины будут потеряны навсегда, даже если я когда-то в будущем и вспомню ПИН. Теперь нужно было ввести ещё несколько команд, чтобы прочитать содержимое статической RAM (где должны находиться 24 ключевых слова и ПИН, если Trezor не лишится питания).

«Ладно, – сказал я Джейн, вводя команду, – сейчас мы должны узнать ключ». Я склонился над клавиатурой и нажал Enter.

Откинулся на спинку стула и тихо сказал: «О Боже. Сработало».

24 ключевых слова, которые я записал на оранжевой бумажке в декабре и потерял в марте, восстали из криптографических глубин пуленепробиваемого Trezor и теперь мягко светились на экране моего компьютера. При желании я мог на этом остановиться. Этих 24 слов было достаточно, чтобы восстановить моих 7,4 BTC. Я мог просто повторно инициализировать Trezor и ввести эти слова. Но я должен был сделать ещё кое-что, что было даже важнее денег. Я хотел заставить чёртов Trezor выдать мой ПИН.

Следуя инструкциям Салима, я скопировал строку текста из окна терминала и добавил её к предоставленной Салимом команде Linux. ПИН появился мгновенно:

45455544

Месяцы душераздирающей тревоги спали с моих плеч, словно гигантские глыбы грязи. Я встал, поднял руки и засмеялся. Я победил Trezor с его дурацки жестокой функцией задержки перед вводом ПИН-кода и обыграл ту часть моего мозга, которая думала, что сможет спрятать секрет от своего владельца. К чёрту вас всех, подумал я. Это победа.

Примечание редактора: ПИН-коды в этой истории были изменены, чтобы защитить конфиденциальность автора.

Источник: cryptocurrency.tech

Комментарии:

Оставить комментарий

Ваш email нигде не будет показан. Обязательные для заполнения поля помечены *

*

Adblock
detector