От Hitachi до Lite-On 1532

Автор: | Опубликовано в Xbox 360, Главная 24 комментария

flash_mini
Когда-то я вообще в этом ничего не понимал, но со своими интересами я познакомился сначала с c4eva, потом меня приняли в Team Maximus, а потом и в Team Xk3y…..

В материале есть некоторая негативная информация о Team Xecuter, это лишь моя точка зрения.
Мы долго думали с RichY, стоит ли подробно освещать эту тему. В современной реальности «прошивальщиков» в РФ большинство даже особо не понимают, что они делают и как это работает, используя ФАКи. Сам Алексей уверял меня, что эта тема абсолютно никого не интересует, за исключением меня, его и еще пары сумасшедших. Но с вышедшей статьёй о работе Freeboot, я решил всё-таки поделиться собственными мыслями и изысканиями, которые практически нигде комплексно не публиковались.

1 этап (2005-2010) ШИФРОВАНИЕ DVD-ключом + стандартные замеры секторов
Изначально специалисты Microsoft спроектировали неплохую защиту XBOX 360, используя шифрование по SATA с уникальным ключом для каждой приставки. Принцип распознавания свой-чужой таков:
XBOX 360 при старте начинает авторизацию привода. Он шифрует трафик известным (запрограммированным на заводе и в NAND и в привод) DVD-ключом и начинает авторизацию. Привод дешифрует данные своим ключом и формирует крипто-ответ. Если ключи совпали, то авторизация считается успешной и XBOX 360 начинает доверять приводу. Если привод «не понял» запроса (то есть у него другой DVD-ключ в прошивке, он переходит в режим DVD-плеера)
1
То есть, просто так снимая трафик каким-нибудь SATA-сниффером, мы получим только случайные нули и единицы, ведь трафик шифрован и раскодирование его займёт тысячететия.
Помимо этого, если считать саму прошивку 256 КБ с чипа привода, то это также ничего не даст, она криптована.
Вот тут-то и подключились спецы из крупных компаний производителей электроники. У них есть доступ к сервис-мануалам и средствам разработки под данные микроконтроллеры, так как компании в которых они работают, закупают электронные компоненты на десятки миллионов долларов.
Так и появился первопроходец, который декодировал прошивку, обнаружил DVD-ключ шифрования трафика и проанализировал вопросы-ответы бокса к приводу, по поводу лицензия-нелицензия.
Сначала суть была следующая: часть начальных секторов были расбросаны по болванке под определённым углом. Этот угол (задержка перехода лазера с одного сектора на другой) был всегда определённым и это давало иксбоксу понять, что вставлена лицензия.
Следующим этапом было создать видимость иксбоксу, что в приводе то, что надо. По сути, если мы можем скомпрометировать оборудование (посылать такие комманды иксбоксу, что нам надо, а не что «велено» официально прошивкой) любая защита привода или дисков смысла не имеет.
Так и вышло, все версии Hitachi были взломаны, потом пошли приводы Samsung, затем Benq, позже купленный компанией Lite-On. Все их прошивки успешно декодировались и в них содержался DVD-ключ привода.
Прошивка модифицировалась под псевдо-ответы боксу, используя шифрование DVD-ключом и бокс по-дефолту доверял приводу.

2 этап XGD3 (2011) и замеры конкретных секторов + прошивка привода обновлением Dashboard
Затем у Microsoft возникла новая идея. При штамповке лиц дисков, расположение блоков данных и позиционирование секторов на диске выходит примерно одинаковым. Почему бы замерять не только начальные сектора, но и какие-нибудь другие? Была придумана некая таблица AP25 в которой вносились точные замеры углов определённых секторов диска.
Бокс начинал данную проверку при старте игры. Таблица ответов хранилась в файле dae.bin. С4еva с союзниками тут же обошли эту проблему. Места в прошивке уже не хватало, и было решено внести запросы и ответы из этой таблицы в определённое место образа диска. То есть прошивка LT+ 2.0 ожидала запросов со стороны иксбокса, грузя (с определённых секторов диска) вопросы и ответы к себе в оперативную память, а потом охотно выдавала их боксу.
17 ноября 2011 года те, кто сидели в лайве, получили новые пары проверки секторов, причем разные приставки получали разные наборы запросов/ответов. Таблица из образа диска работать перестала, ведь появились новые пары, которых до этого не было и прошивке попросту нечего было ответить приставке. Месяц спустя C4eva разработал метод снятия полной карты диска + выпустил LT+ 3.0 и внедрил туда «калькулятор», способный на основе этой карты самостоятельно вычислять все ответы. Готовая таблица больше не нужна, очередная защита полностью обойдена.
К слову, программисты из xk3y не стали (или не смогли) повторить такое изобретение и тупо собрали одну большую таблицу из всех новых ap25-проверок из лайва (их оказалось более 300) и внедрили к себе в прошивку.
На тему того, почему 3.0 не поддерживает 2.0 мои соображения следующие. Либо в прошивке 256 кб просто не хватило места для использования двух методов, либо задержка для ответов критична и надо сразу отвечать. Напомню что 2.0 ищет в образе таблицу с ответами, а 3.0 — карту диска, очевидна несовместимость патчей. Скорее всего, прошивке просто не хватит времени понять что перед ней: таблица или карта, а ответы уже пора давать…. Да и наши исследования патчей пришли к выводу что, более 64 пар проверок прошивка 2.0 просто обработать не смогла бы.

3 этап XBOX SLIM блокируем на запись флешки и защитим целостность прошивки
Примерно с апреля 2010 года Microsoft начал выпускать XBOX 360 в новом корпусе, именованном в простанародии SLIM. Здесь они начали устанавливать новый привод Lite-On D4S. До августа 2010 он шел с прошивками 9504, с теми же уязвимостями, что и ранее. Криптованная прошивка, ключ DVD содержался в самой прошивке, свободный доступ на запись, то есть всё то же самое, что и с 2005 года. Прошивку естественно быстро декриптовали, и появились кастомные.
В августе 2010 приводы этой модели стали выходить заблокированные на запись (позднее с дашборда 13xxx старые 9504 программно перешивались в 0272, а начиная с 13599 ещё и блокировались).

C4eva около полугода обещал сообществу прошивку, но вставала проблема, как записать обновлённую прошивку в заблокированную на запись флешку. Комманда TX неспешно принимала предзаказы на PCB-платы с разблокированными на запись флешки чипами.
Чипы MT1335 основывались как и раньше на двух типах флешек Macronix и Winbond. Используя сервис-мануалы и предыдущий опыт, москвич Борис (под ником Boryan, которого неоднократно блокировали на форуме Xboxland за нравоучения неопытным инженерам) совместно с другим программистом sekil предъявили 22 июля способ разблокирования микросхем на основе флешек Macronix. Недолго думая, что авторитет и продажи прошиваемых плат могут упасть, Team Xecuter на следующий день, 23 июля, выложили прошивки под все 4S-приводы (версия 1071 вышла позже).
Под конец июля 2011 Geremia разработал способ разблокировки Winbond-флешек,методом бурения, что окончательно похоронило продажу готовых PCB-плат TX. Был и еще один малоизвестный метод разблокировки пережиганием блокировки с помощью конденсатора, но он давал непредсказуемый результат (хотя timurmurmur рассказывал про 90% успех).
Что в итоге. Прошивка 0225, 0401, 1071 совместно с контроллером имеет защиту от модификации. Но только её часть (адреса с 0 по 1F000)! При старте контроллера он проверяет на целостность только эту часть (что то вроде crc или хеша), а на вторую часть c4eva написал rootkit, который выполняет те же функции обмана бокса, что и ранее.

Интересной особенностью 4S-приводов (MT1335) было блокирование чтения зоны ключа самим кодом прошивки. Уже осенью 2010 года, когда появились эти контроллеры, Geremia сообразил как обойти это. В область, доступную для записи, записывается инструкция по отдаче зоны ключа, затем подаётся комманда на перезагрузку, mt1335 при старте считывает свою прошивку, берет «новые инструкции» и отдаёт зону по SATA, затем инструкции затираются и приобретают первоначальный вид.
С блокированными прошивками (0225, 0401, 1071) дела обстоят еще серьёзней. Способ снятия зоны Jungle Flasher не всегда корректно считывает 3F сектора, из-за этого, в результате перезаписи оригинальной прошивки на кастомную, часть данных теряется, хотя они участвуют при проверке FCRT.
По поводу FCRT!!! Это также было дополнительной защитой Microsoft, против модификации прошивки. Тема такая: когда привод «знакомят» с XBOX 360 на конвейере завода Foxconn, с приставки запускается софт, который заставляет привод снимать хеши с конкретных блоков прошивки. В результате появляется таблица целостности прошивки. В ней учавствует зоны с 0 по 1FF00, зона ключа и серийника и 3FF зоны. В результате в нанде XBOX создаётся файл fcrt.bin. При старте XBOX 360 после авторизации по DVD ключу происходит еще запрос проверку хешей конкретных блоков. Дело в том, что проверок там несколько сотен, а каждый раз всё проверять нецелесообразно. В итоге код работает выборочно по конкретным блокам.
Задумано так, что должно быть более 90% совпадений (видимо тоже присутствует некий лаг).
В итоге возвращаемся опять к Jungle Flasher. Ошибки при снятии 3FF-зоны примерно 3-5% приводов. В конечном счете из-за этого иногда получается при старте «Play DVD». То есть всё зависит от того, проверки по каким блокам будут идти при старте. Если не попали в 3FF-зону — всё хорошо, если попадаем на проверку блоков туда неоднократно — «Play DVD».
RichY неоднократно обращался к комманде разработчиков Jungle Flasher, но к сожалению свои баги они исправить или не могут или не хотят.
Альтернативный способ снятия зон разработал Maximus и реализовал его в программаторе Lizard. Хотя первое время он давал сбои при чтении зоны ключа (unknown firmware), я каталогизирал фуллы этих прошивок, затем способы снятия добавлялись и добавлялись с каждой новой прошивкой Lizard. В итоге мы получили практически безглючный продукт, способный корректно снимать и спуфить 99% прошивок 4S-приводов. Немаловажную роль в этом также сыграл сам RichY, снабжая своими разработками и идеями.
Также хочется отметить, что в то время c4eva не поспевал делать кастомные прошивки. В июле 2011 года вышли прошивки только под 0225 и 0401, а вскоре XBOX 360 начали поставляться уже с приводами с прошивкой 1071. RichY — первый кто создал кастомную прошивку под эту версию, оперируя лишь предыдущими версиями.

4 этап НЫНЕШНИЙ Полная блокировка чипа на чтение и запись, ключ DVD только в процессоре
Толи программистам Microsoft приходится отрабатывать свой хлеб, то ли они действительно так обозлились на прошивал…. С августа 2011 года на XBOX 360 устанавливается новый DVD-привод на основе микросхемы mediatek MT1332. Базовые прошивки 1175 и 1532. Этот контроллер на самом деле SMART (самый самый умный).
Хотя Борян и пытался что-то с ним сделать, но всё безрезультатно. Во-первых он блокирован на запись (метод 4s-камикадзе не поможет). Во-вторых флешка с прошивкой не содержит ключа DVD (ключ содержится в процессоре в закодированном виде, распаковывающийся при старте) В третьих, при старте проверяется полная целостность прошивки, изменение хоть на один байт и чип не стартанёт (информация от Geremia). В-четвёртых заблокирован Vendor mode, то есть режим прошивки. Наконец, доступ к процессору MTK по UART тоже был заблокирован.
«У проца всё закрыли все дыры, да их там и немного, через прошу команды подать не можем, потому что записать не можем, а запись тока через анлок, а анлок через вендор который закрыт процом ))) замкнутый круг», писал я тогда Боряну, но он не хотел слушать.
В итоге у меня возникла космическая версия, предложенная через посредников в TX — с4eve. Попытаться создать некий activate.iso (ведь DVD ключ выгружается в оперативную память mt1332), способный скинуть его на SATA (а мы его там перехватим). Затем я договорился с коммандой xk3y, что они выпустят прошивку-сниффер, которая на основании дешифрованных данных создаст таблицу вопросов-ответов целостности прошивки. По крайней мере это быстрее и оптимальнее, нежели делать фрибут для снятия ключей. Хотя опять же, при каждом старте проверяется только часть хешей блоков, и сколько нужно стартов для полной таблицы — неизвестно. Или это было невозможно, или это было никому не надо, так как могло подорвать продажу PCB-TX-плат.

Первыми кто сделал PCB-плату под 5S-привод стали не TX, а Matrix team (известные по взлому ps2). Они реализовали это на основе MT1339-контроллера (аналог родного mt1335 в 4s-приводах, только с внешним eeprom) и криптокопа. В криптокоп заливался ключ и fcrt, а затем он распаковывался на еепром. По сути криптокоп это тот же SPI-flasher, аналог того, чем мы снимаем нанд с XBOX. Защита тут заключается в следующем. Криптокоп распаковывает прошивку, контроллер стартует, затем в некоторых местах кода, прошивка обращается к криптокопу по типу ap25, хотя вполне могла бы работать и без него. Maximus пытался вырезать эти запросы из прошивки, но то ли не хватило терпения, то ли действительно всё очень сложно.
Затем TX всё-таки выкатили свою плату, с неизвестным контроллером (маркировка успешно спиливалась китайцами на их фабрике в Тайване) и выложили прошивки. Уже тогда стало ясно, что за несколько месяцев потребности «прошивал» уже удовлетворялись более дешевыми платами от Matrix.
Постоянные провокации между Maximus Team и Team Xecuter дали о себе знать уже через сутки. Max проанализовал плату и пришел к выводу, что на ней тот же контроллер mt1332, что и на оригинальной плате, только разлоченный и выложил это в паблик. Продажи TX-плат еще больше упали и моддеры начали активно заказывать с китая пустые mt1332-чипы. Я тогда даже попытался извиниться перед TX за действия Макса, что он подорвал продажи, но они в принципе не расстроились, так как ожидали такого развития событий.
Сами MT1332 пустые быстро закончились и продажти снова встали. C4eva мог (инфа сотка) написать код под mt1335 или mt1339 (4S) контроллеры, но китайцы уже тогда на них снизили цену. Это было просто невыгодно! Решено было делать прошивку под контроллер d2s (1319), который стоял на вооружении XBOX еще с 2008-го года и на основе него была создана LTU2.

Эпилог. TX коммерционализировались полностью, выкатили прошивку с эмуляцией ответов на проверки (по типу как с дисками) теперь снимаем ключи и fcrt через RGH и зашиваем в китайские платы. ОТАКОТО.
Это далеко не всё, что я знаю. Информация дана кратко. У кого есть вопросы и предложения — пишите в личку на форуме.

Александр aka Kombine aka Kombat_ace

Comments
  1. Posted by Armorant
  2. Posted by walktt
  3. Posted by azunai
  4. Posted by Patchs
  5. Posted by Антон
  6. Posted by Farell
  7. Posted by Дмитрий
  8. Posted by Serjio193
  9. Posted by Wett
    • Posted by RichY
  10. Posted by Erorr
  11. Posted by Jove
  12. Posted by Duperman
  13. Posted by DODGE
  14. Posted by LordX
    • Posted by Kombine
  15. Posted by Tesak
  16. Posted by Kombine
  17. Posted by sowa
  18. Posted by SAP-SAN
  19. Posted by Mars
  20. Posted by pashko90
  21. Posted by Denis83
  22. Posted by 3absiso

Add Your Comment