суббота, января 10, 2009

Доклад Console Hacking 2008: Wii Fail

Console Hacking 2008: Wii Fail - слайды, есть также видеозапись этого доклада.

Краткое содержание:
В Nintendo Wii есть подсистема безопасности. Для этого там есть отдельный процессор. То есть всего в этой консоли два процессора. Основной, под названием Broadway - это модифицированный PowerPC от IBM. На нем запускаются игрушки. Есть еще ARM процессор, существование которого скрывалось. На нем запущена своя ОС. И ничего нельзя загрузить без проверки этим процессором.

Проверить целый DVD диск с игрой при загрузке довольно сложно, 4 гига все-таки. Поэтому диск бьется на блоки, от которых считаются SHA-1 хэши и проверяются они.

У Wii есть обратная совместимость с GameCube, игры для которого никоим образом подписаны не были. Эти игры исполняются в режиме GameCube sandbox. При переходе в этот режим не очищалась память, поэтому удалось эту память считать и вытащить оттуда некоторую интересную информацию, включая ключи для криптования. Список ключей приводится в слайдах.

Также с процессе дизассемблирования системного софта удалось вытащить сравнение вот такого вида:

strncmp(SHA1_sig, SHA1_in, 20);

То есть бинарные числа сравниваются как строки. Чем это плохо? Тем, что сишное сравнение на нулевом байте остановится. То есть, если ключи начинаются с нулей, то они будут равны, даже если все остальное не сходится.

Также на Wii предусмотрена возможность для проигрывания DVD video. Она предусмотрена несколько неудачно и в итоге некто написал загрузчик варезов для Wii.

В конце доклада приводится таблица взлома защиты консолей.


PS3, по мнению докладчиков, до сих пор не взломана не столько из-за качества защиты, а скорее потому что они задумались о пользователях, которые там хотят homebrew софт запускать. Есть официальный способ загрузить на PS3 Линукс. То есть смысла хакать эту консоль нет.

По ссылке с Grammerjack.

15 коммент.:

addicted-to-q комментирует...

Это что же получается, почти все было взломано некими неугомонными гиками забавы и линукса ради? А я то думал, что все это тайно финансируется некими могущественными пиратствующими подпольщиками.

Алёна комментирует...

2 addicted-to-q:

Это что же получается, почти все было взломано некими неугомонными гиками забавы и линукса ради?

Ну это в этом конкретном докладе так говорят. А что там на самом деле - кто знает.

zg комментирует...

вообще-то всё что описано в посте как раз позволяет пускать пиратку без дополнительных вложений. какай от этого прибыль «могущественным пиратствующим подпольщикам»?

andrew комментирует...

консоли хакаются ради проксей.
На адсл модемы, игровые консоли (подключенные к интернету), на ip вебкамеры и IP телефоны сейчас активно клепаются кастом прошивки которые позволяют использовать девайс жертвы как прокси или ддос бот.

shebdim комментирует...

Консоли хакаются, как и всё остальное, чтобы пользоваться нахаляву. В случае с консолями речь идёт об играх. Для PC ломается сам софт, для консолей ломается консоль и там и там цель запустить программу "бесплатно".

Сложно себе представить пользователя игровой консоли который будет ваять homebrew для неё :) Уж больно путь тернистен, гораздо проще делать это на PC. А те кто умёют и делают составляют мне кажется несущественную долю.

А насчёт проксей в консолях, то это очень напоминает вирусы в BIOS - тоже возможно, но что-то непохоже на эпидемию :)

zg комментирует...

Уж больно путь тернистен, гораздо проще делать это на PC.за все консоли не скажу, а нинтендо гораздо проще, чем на pc.

soonts комментирует...

Тока фчера смотрел похожее видео про xbox360.

Анонимный комментирует...

А разве strncmp() заканчивает сравнение при обнаружении '\0' ? Кажись она должна проверить N символов...

Ostap Korkuna комментирует...

strncmp() сравнивает пока не найдет позицию где строки отличаються, или встретит '\0' в одной из строк, или сравнит N символов, в зависимости от того что случится первым.

Security Seveloper комментирует...

Мне кажется, что в PS3 зря не сделали защиты от запуска Linux. Ведь это лишний пиар в прессе о том, что консоль взломали. Вот Wii пропиарили на конференции и правильно сделали. В пиаре нет ничего плохого, и отказываться от него не стоит. Другое дело, что это может быть плохой пиар на фоне критических ошибок в безопасности.

Анонимный комментирует...

С PS3 не так все просто в плане легкости/привлекательности слома.

Во-первых, открыт linux. Из ядра линукса торчит вот такая чертова уйма вызовов гипервизора:

http://wiki.ps2dev.org/ps3:hypervisor

Там все. От менеджмента памяти, до сбора перфоманс-статистики, абстракция над звуком, видео и дисковыми устройствами.

Т.е. вполне себе ясен контекст, как можно вызывать и ломать.

Конкретный баг с гипервизором XBOX360 ( то самое злополучное 32битное сравнение ) должен быть хорошо документирован, чтобы его можно были использовать. Так что слом 360 начался с утечки конфиденциальной информации о уязвимости ядра. И потекло по трубам...

Мне вот известны несколько забавных багов гипервизора PS3. Пожалуй, есть один buffer overrun в lv1_gpu_context_attribute в ранних прошивках.

Но как конкретно ломать, без знания кода гипервизора - ума не дам.

Я в общем-то пытался не RSX добыть, а пользовательский код в режиме гипервизора запустить. Хрен бы там.

IronPeter.

Анонимный комментирует...

SHA1 никогда не возвращает 0x00 байт (читайте http://www.ietf.org/rfc/rfc3174.txt)
так что strncmp вполне годится для сравнения.

Анонимный комментирует...

SHA1 никогда не возвращает 0x00 байт (читайте http://www.ietf.org/rfc/rfc3174.txt)
так что strncmp вполне годится для сравнения.

да, подходит, для ЛЕГИТИМНЫХ ключей. а вот если ты сам туда засунул (как - вопрос отдельный) х00 то это уже дырка.

Анонимный комментирует...

Здравствуйте Уважаемая Алена.Посоветуйте пожалуйста,с какой книги Дейтла прежде всего нужно начать изучение,изучения с нуля,для новичков.Большое спасибо.

Алёна комментирует...

2Анонимный

Посоветуйте пожалуйста,с какой книги Дейтла прежде всего нужно начать изучение,изучения с нуля,для новичков.Большое спасибо.

Про Дейтла ничего сказать не могу, не читала. Моя подборка книг для начинающих тут.