[Перевод] Как консоль Xbox 360 обнаруживает поддельные жёсткие диски

oiksmm0ghcmki9yfgtsxn1ewcze.jpeg


В 2005 году консоль Xbox 360 была выпущена в виде двух моделей: Core и Pro. Core — это дешёвая модель, позволявшая запускать игры с оптического диска, а Pro содержала жёсткий диск на 20 ГБ, чего в то время было более чем достаточно для хранения скачиваемого контента и другой дополнительной информации. Жёсткий диск всегда был опциональным аксессуаром, но быстро стал необходимостью для геймеров, желавших сохранять свои профили и скачивать контент с Xbox Live. Недостаток заключался в том, что жёсткие диски под брендом Xbox 360 были дорогими. На момент выпуска консоли диск на 20 ГБ стоил $99! Судя по старому руководству по ценам AnandTech за ноябрь 2005 года, за $57 можно было купить для PC жёсткий диск на 80 ГБ. Накопитель для Xbox 360 продавался с большой наценкой.

Моддеры начали исследовать возможность использования сторонних жёстких дисков, чтобы задёшево получить большой объём хранилища. К сожалению, вскоре они выяснили, что так просто эту проблему не решить.

Проверка подлинности режима ядра


Каждый подлинный жёсткий диск Xbox 360 хранил в секторе 16, называемом «сектором защиты», уникальный фрагмент данных, содержавший следующую информацию:

3hjpyuzpw9p_csrs4hwktckmaqm.png


Данные сектора защиты обрабатываются функцией ядра под названием SataDiskAuthenticateDevice. В IDA она выглядит так:

wr2mmghiircu7ywssknxgql6ccq.png


Декомпилированная версия:

ai22pb7fwhragqb-fyybzyh-_xm.png


Функция относительно проста. Она начинается с вызова IoSynchronousFsdRequest. Эта функция перенесена с первой консоли Xbox, в Windows её не найти. По сути, она исполняет асинхронный запрос ввода-вывода, а затем ожидает его завершения. В данном случае это запрос на чтение сектора 16:

knkx61q13cmdmrrelsfej74lg1k.png


После выполнения этой функции Buffer будет содержать данные сектора защиты, а если чтение завершится неудачно, консоль отобразит экран ошибки E69. Такое происходит, только когда диск очень плохо подключён или на нём начинаются сбои.

Когда сектор защиты находится в памяти, выполняется проверка подлинности. Все жёсткие диски сообщают серийный номер, версию прошивки и номер модели в рамках команды IDE_COMMAND_IDENTIFY_DEVICE. Данные, которые сообщает прошивка диска, сравниваются с теми, которые хранятся в секторе защиты. Это выполняется при помощи специальной вспомогательной функции под названием SataDiskEqualAuthenticationStrings, которая, по сути, работает как memcmp (функция, проверяющая равенство байтов).

teonqbxe8je_ajcsn3dk59rj0do.png


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

hymdanqzzlfxavdqjokg1lubgrg.png


Способы решения проблемы


Если вы не хотите покупать подлинный жёсткий диск Microsoft Xbox 360, то есть два способа решить это.

1. HDDHackr


Так как сектор защиты невозможно изменить так, чтобы он соответствовал информации прошивки диска, единственное возможное решение — изменить прошивку диска так, чтобы она соответствовала сектору защиты. Так был создан HDDHackr — приложение для MS-DOS, обновляющее прошивку накопителей Western Digital так, чтобы выдать их за другие. Например, если в секторе защиты написано, что диск создан Hitachi, HDDHackr изменяет прошивку диска так, чтобы она передавала информацию Hitachi.

Однако в хаке с HDDHackr есть свои ограничения:

  1. Он больше не поддерживается и работает только на старом оборудовании PC.
  2. Есть отчёты о том, что он плохо работает с новыми версиями накопителей Western Digital.
  3. Он не позволяет подключать накопители объёмом больше 500 ГБ. Сектор защиты ограничивает количество адресуемых секторов, а Microsoft официально выпускала жёсткие диски с максимальным объёмом 500 ГБ.


2. Моддинг консоли


Когда стал возможен моддинг консолей Xbox 360 при помощи хаков с использованием JTAG и RGH, одними из первых пропатчили проверку подлинности и ограничения размеров жёстких дисков. После устранения проверок стало возможным подключать, форматировать в дэшборде и использовать любой жёсткий диск объёмом до 2 ТБ. Однако такие хаки требуют аппаратных модификаций и в процессе моддинга приходится отказаться от доступа к Xbox Live.

Microsoft знает о вашем взломанном жёстком диске


Если вы применили HDDHackr, то для использования своего жёсткого диска вам нужно скачать подлинный сектор защиты из Интернета. Например, когда в 2014 году выпустили HDD на 500 ГБ, сообщество моддеров быстро опубликовало сектор защиты, чтобы пользователи могли создавать собственные жёсткие диски на 500 ГБ. Однако большинство людей не осознавало, что всё это время Microsoft собирала информацию о жёстких дисках пользователей. В частности, при подключении к Xbox Live в ответе на вызов безопасности Microsoft периодически передавалась следующая информация:

  • Серийный номер
  • Версия прошивки
  • Номер модели
  • Адресуемые пользователем секторы


Microsoft знает о каждой подключенной к Xbox Live консоли, к которой подключен обработанный HDDHackr накопитель, поскольку видит десятки тысяч консолей, использующих один и тот же жёсткий диск. Секторы защиты уникальны и могут использоваться для идентификации жёсткого диска. Жёсткие диски Xbox 360 могут использоваться на разных консолях, поэтому если Microsoft увидит, что несколько консолей использует один жёсткий диск, это не будет тревожным сигналом, однако если об использовании одного жёсткого диска одновременно сообщают сотни или тысячи консолей, то достаточно очевидно, что в них установлен взломанный жёсткий диск.

Microsoft могла бы банить консоли за использование поддельного жёсткого диска, но не было никаких свидетельств того, что это когда-нибудь происходило.

Проверка логотипа


Если вы внимательно изучили структуру HDD_SECURITY_BLOB в начале статьи, то могли заметить LogoBitmapDigest. Сразу после сектора защиты, в секторе 17, находится PNG-изображение старого логотипа Microsoft:

9mm5y7rcoopuitpulcki3afxvy8.png


Любопытный факт: судя по встроенным в изображение метаданным, оно было создано в Macromedia Fireworks MX 2004 19 июля 2005 года. Xbox 360 выпустили 22 ноября того же года. Изучив образцы и старых, и новых секторов защиты, я пришёл к выводу, что именно это конкретное изображение использовалось в каждом секторе защиты каждого жёсткого диска, попавшего в продажу.

Логотип используется при отображении накопителя в дэшборде Xbox 360:

r3du0ys22hwla0nkmedpzk6frau.png


Microsoft так заботилась о своём логотипе, что хэшировала его SHA1. Этот хэш подписан RSA в секторе защиты, поэтому изменить хэш или логотип невозможно.

Возможно, Microsoft думала над тем, чтобы позволить сторонним производителям продавать жёсткие диски для Xbox 360 под их брендами, как Seagate сегодня продаёт карты расширения Xbox Series X|S. Предположительно, логотип Microsoft должен был заменяться на логотип стороннего производителя. Но всё это лишь гипотеза: возможно, Microsoft просто хотела, чтобы пользователь чувствовал себя уверенно, зная, что купил подлинный аксессуар.

Развлечения с логотипом


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

vg4wbma72m5t9yxqjbn7negkvco.png


-94y7z8aeocvirkug0l_juzj20s.png


Печальные ошибки


Сектор защиты расположен в начале диска. Если подключить диск к Windows и открыть Disk Management («Управление дисками»), то он отобразится как «Not Initialized», поскольку Windows не распознаёт схему выделения разделов Xbox 360. Также появится всплывающее окно, предлагающее инициализировать диск в формате MBR или GPT, чтобы подготовить его к разбиению Windows.

r2qbkxayhypktwnn6o7wpvzwhky.png


К сожалению, последствия нажатия на OK оказываются катастрофическими. Сектор защиты перезаписывается таблицами разбиения диска Windows. Если вы не сделаете резервную копию, жёсткий диск больше никогда не будет работать на Xbox 360 без моддинга. Я постоянно получаю электронные письма об этом и мне мучительно говорить людям, что спасти жёсткий диск невозможно. Эта проблема стала настолько распространённой, что в 2015 году я добавил в FATXplorer автоматическое резервное копирование сектора защиты. При запуске программа сразу же создаёт резервные копии секторов защиты на всех найденных жёстких дисках. К сожалению, на момент публикации этого поста это не спасло ни единого жёсткого диска. Все сначала случайно инициализируют диски до первого запуска FATXplorer, из-за чего все меры спасения диска оказываются бесполезными. Если вы всё ещё играете на Xbox 360, задумайтесь о резервном копировании сектора защиты!

© Habrahabr.ru