Комментарии 32
не знаю уже, смеяться или плакать.
Теперь на джаваскрипте еще и взломали PS4.
Вообще — статья шикарна, спасибо :)
Теперь на джаваскрипте еще и взломали PS4.
Вообще — статья шикарна, спасибо :)
+30
Интересно, насколько кастомизирована система защиты в этом поколении. Прошлое поколение использовало много всяких фишек крутых именно в железе, которые сильно мешали взлому — шифрование оперативной памяти, изоляция ядер процессора для выполнения криптографических операций, гипервизоры, цифровые подписи везде и всюду и прочее. Все рабочие эксплоиты выглядели совершенно отлично от привычных нам эксплоитов.
А здесь какая-то скукота намечается — браузер, яваскрипт, узявимость ядра. Хоть бы софт обновляли, емае. Хотя с нынешними темпами обновлений прошивки, еще и обновление ядра — совсем умрет все. У xbox one наверняка поинтереснее будет с его HyperV, виртуальными машинами и жестко ограниченными по правам приложениями на WinRT, но ничего что-то не слышно про него.
А здесь какая-то скукота намечается — браузер, яваскрипт, узявимость ядра. Хоть бы софт обновляли, емае. Хотя с нынешними темпами обновлений прошивки, еще и обновление ядра — совсем умрет все. У xbox one наверняка поинтереснее будет с его HyperV, виртуальными машинами и жестко ограниченными по правам приложениями на WinRT, но ничего что-то не слышно про него.
+1
Просто раньше пытались защититься от взлома, потому что в играх сингл имел если не решающую, то точно одну из главных ролей, и т.к. многие покупали игры в первую очередь из-за сингла, был смысл защищать консоли именно от запуска записанных на внешний носитель рипов.
Сейчас в играх на первое место выходит мультиплеер, в который не зайти на хаченной консоли без риска быть забаненным, так что нет особого смысла закрывать консоль от взлома железными штуками как раньше.
А взлом консоли только добавляет ей популярности. Это уже проходили с PS, PS2, PS3, Xbox360, PSP, так что для производителей отчасти даже выгодно, когда взламывают консоль — это позволяет значительно повысить ее продажи на исходе жизненного цикла, треть которого для PS4 уже прошла.
Сейчас в играх на первое место выходит мультиплеер, в который не зайти на хаченной консоли без риска быть забаненным, так что нет особого смысла закрывать консоль от взлома железными штуками как раньше.
А взлом консоли только добавляет ей популярности. Это уже проходили с PS, PS2, PS3, Xbox360, PSP, так что для производителей отчасти даже выгодно, когда взламывают консоль — это позволяет значительно повысить ее продажи на исходе жизненного цикла, треть которого для PS4 уже прошла.
+3
Ну если с этой позиции судить, то расцвет мульта это прошлое поколение. Сейчас это так, наследство. Большая игр таки продолжают быть с синглом во главе, а у кого-то мультиплеера и вовсе нет как у ордера недавнего.
Так что стимул пиратства он остался — большая часть крупных проектов все еще сингловые. А запуск не подписанного кода — это чисто спортивный интерес для любой новой платформы. Homebrew сцена всегда оживает с приходом новой консоли.
Так что стимул пиратства он остался — большая часть крупных проектов все еще сингловые. А запуск не подписанного кода — это чисто спортивный интерес для любой новой платформы. Homebrew сцена всегда оживает с приходом новой консоли.
+2
>> А взлом консоли только добавляет ей популярности
Да вот только с продаж консольного железа не зарабатывают денег, а поначалу и вообще теряют.
Да вот только с продаж консольного железа не зарабатывают денег, а поначалу и вообще теряют.
+1
На исходе жизненного цикла, когда остатки консолей на складах становятся проблемой — идет борьба уже за продажу по сути любой ценой. А первые пару лет это невыгодно, конечно.
Что лучше, продать с убытком в 40$ или оставить лежать на складах, не заработав ничего?
Что лучше, продать с убытком в 40$ или оставить лежать на складах, не заработав ничего?
0
Иногда производители даже выпускают консоли, чтобы их хачили, например psp E1000, который даже не имеет UMD привода, а доступ в PSN закрыт для него давно.
Они пытаются соблюсти некоторые приличия — именно тем, что не выпускают их сразу разлоченными, но тем не менее все заинтересованные понимают к чему дело идет.
Они пытаются соблюсти некоторые приличия — именно тем, что не выпускают их сразу разлоченными, но тем не менее все заинтересованные понимают к чему дело идет.
0
Скажите, а как обстоят дела с PS Vita? Ее защиту не взломали еще?
0
По слухам, с ней дела гораздо серьезнее. Начиная с того, что если тут ядро частично фактически открыто, то в случае PS Vita ничего подобного нет.
Полноценный нативный хак Rejuvenate для PS Vita с прошивкой от 3.00 до 3.51 вышел совсем недавно, в июне, и он пока что кроме «Hello, world!» ничего запускать не умеет. Давно и успешно взломана часть, которая является эмулятором для запуска игр с PSP — для установки этих хаков требуется успевать скачивать специальные игры с эксплойтом из PSN.
Все известные мне новости по теме выкладываютсяздесь.
Полноценный нативный хак Rejuvenate для PS Vita с прошивкой от 3.00 до 3.51 вышел совсем недавно, в июне, и он пока что кроме «Hello, world!» ничего запускать не умеет. Давно и успешно взломана часть, которая является эмулятором для запуска игр с PSP — для установки этих хаков требуется успевать скачивать специальные игры с эксплойтом из PSN.
Все известные мне новости по теме выкладываютсяздесь.
+1
А ей кто-то пользуется? Вроде бы она какая-то не вот чтобы очень живая консоль…
0
Чувак, я нихрена не понял из того, что ты написал, но ты достучался до моего сердца!
+11
Какой JavaScript API используется для системных вызовов и где почитать его спецификацию?
Как запустить выполнение нужного скрипта — разместить его на своем сайте и открыть его в браузере PS4 или еще как-то?
Как запустить выполнение нужного скрипта — разместить его на своем сайте и открыть его в браузере PS4 или еще как-то?
0
1. Насколько я понял по коду, специального API нет — только запись по адресам при помощи хаков, только хардкор. Адреса становятся известны после эксплуатации уязвимости Uint32Array. Алгоритм подробно расписан в exploit.js, системные вызовы делаются функциями из just-rop.js при помощи установки значений в адреса памяти. Во многом код автора поста — это расширенная версия эксплойта от nas, в частности он точь-в-точь перенес этот кусок из старого кода.
2. Да, в принципе можно просто перейти в браузере по ссылке cturt.github.io/PS4-playground. Правда, проверить не удалось — на прошивке 2.51 эксплойт уже не работает; видимо, поменялись адреса или закрыли уязвимость.
2. Да, в принципе можно просто перейти в браузере по ссылке cturt.github.io/PS4-playground. Правда, проверить не удалось — на прошивке 2.51 эксплойт уже не работает; видимо, поменялись адреса или закрыли уязвимость.
0
Вот это — chain.read_rdi_FromVariable(...), chain.syscall(...) — что за функции, что за объект chain, как их получили? Информация об этих функциях получена анализом какого-то кода, используемого внутри системы ps4?
+1
Вся статья об этом и была.
0
Первое упоминание о chain идет после фразы:
Никакой предыстории, что это и откуда взялось, я не увидел.
Сделав так, что rcx указывает на инструкцию ret, цепочка выполнится обычным образом
Никакой предыстории, что это и откуда взялось, я не увидел.
0
А вы в гитхаб то хоть заглядывали? HotWaterMusic в своем комментарии выше подробно расписал где что искать…
exploit();
chain = new rop();
// Код
chain.execute();
+2
Спасибо dordzhiev за поддержку, он прав — кроме реверс-инжиниринга исходного кода, здесь больше ничего не придумаешь.
Исходный код действительно несколько неочевиден, поскольку это уже третья его версия, в которой фрагменты кода демонстрации исходного эксплойта для WebKit продолжают использоваться без рефакторинга.
Давайте рассмотрим пример с системным вызовом
В файле
Спустимся по коду вглубь. В
Функция
Функция
После того, как
Исходный код действительно несколько неочевиден, поскольку это уже третья его версия, в которой фрагменты кода демонстрации исходного эксплойта для WebKit продолжают использоваться без рефакторинга.
Давайте рассмотрим пример с системным вызовом
getpid
из описания репозитория фреймворка JuSt-ROP (настоятельно рекомендую прочитать, поскольку там даны некоторые объяснения):var chain = new rop();
try {
chain.syscall("getpid", 20);
// rax is the return value
chain.write_rax_ToVariable(0);
chain.execute(function() {
console.log("PID: " + chain.getVariable(0).toString());
});
}
catch(e) {
logAdd("Incorrect gadget address " + e.toString(16));
}
chain
— это объект класса rop()
, который определен в файле just-rop.js и содержит в себе функции syscall
(для осуществления системного вызова, который реализуется несколькими вызовами функций add()
), add
(для записи инструкции по адресу) и набор функций-хелперов write_<имя_регистра>_ToVariable / read_<имя_регистра>_FromVariable
для чтения/записи регистра из/в переменную.В файле
gadgets.js
описаны гаджеты в следующем формате:gadget(instructions, module, address)
Спустимся по коду вглубь. В
syscall()
мы вызываем функцию add()
, передавая в нее имя одного из гаджетов (для получения его адреса) и значение:this.add("pop rax", systemCallNumber);
if(typeof(arg1) !== "undefined") this.add("pop rdi", arg1);
Функция
add
производит следующее: берет адрес гаджета, записывает его по адресу длины цепочки chainAddress + chainLength
, затем прибавляет к длине цепочки еще 8 (по всей видимости, бит, для следующего адреса) и записывает по следующему адресу переданное в add
значение.Функция
add
для записи значения вызывает функцию setU64into()
. Это функция, объявленная глобально в файле exploit.js
— window.setU64into(). Функции из этого файла выглядят как реализация уязвимости WebKit CVE-2012-3748, насколько я понял там все завязано на переполнении переменных типа u32/u64 в V8, но чтобы разобраться в деталях ее работы, надо уметь писать экплойты для WebKit. В принципе, можете попробовать разобраться по презентации.После того, как
chain.write_rax_ToVariable(0);
запишет возвращенное вызовом значение регистра rax
в переменную, его можно будет получить при помощи chain.getVariable(0)
.+2
Все описанные здесь методы очень сложны. Т.е. да, если делать хак один раз, то они возможно сработают. Но Sony не сидит не месте, и там где можно было пролезть один раз в следующий раз уже не пролезешь — дыру залатают и профиксят.
Мне странно, что Sony до сих пор не начала вычислять хакеров проактивно — например, если странный вызов происходит — связаться с Sony серверами и сообщить о данной попытке взлома.
Я бы предпочёл не reverse engineeriть вообще ничего, если возможно.
Есть ли возможность сделать игру для PS4, и запихать туда некий development kit / scripting kit, или же использовать существующие игры и их поддержку scriptинга / компиляции.
Я пробовал googlить, но скажем «ps4 python» не дружат между собой вообще.
А какие PS4 простенькие игры знаете вы, куда можно было бы залезть и через какие скриптовые языки?
Чем проще хак и чем обширнее даннная игра разпространена, тем лучше.
Мне странно, что Sony до сих пор не начала вычислять хакеров проактивно — например, если странный вызов происходит — связаться с Sony серверами и сообщить о данной попытке взлома.
Я бы предпочёл не reverse engineeriть вообще ничего, если возможно.
Есть ли возможность сделать игру для PS4, и запихать туда некий development kit / scripting kit, или же использовать существующие игры и их поддержку scriptинга / компиляции.
Я пробовал googlить, но скажем «ps4 python» не дружат между собой вообще.
А какие PS4 простенькие игры знаете вы, куда можно было бы залезть и через какие скриптовые языки?
Чем проще хак и чем обширнее даннная игра разпространена, тем лучше.
0
Есть ли возможность сделать игру для PS4, и запихать туда некий development kit / scripting kit, или же использовать существующие игры и их поддержку scriptинга / компиляции.На дев-ките можно развлекаться сколько угодно, но релизные игры подписывает Sony, и она сразу отзовёт подпись кода с бекдором, как только информация о таковом появится в публичном доступе.
0
а как вообще с dev rights — можно ли получить доступ разработчика на любую консоль или это платно / холерно? не знаете?
0
Все описанные здесь методы очень сложны
Все описанные методы это стандартный инструментарий современного кулхацкера. Это сложно конечно, но никуда не денешься. Все к этому привыкли.
Есть ли возможность сделать игру для PS4, и запихать туда некий development kit / scripting kit, или же использовать существующие игры и их поддержку scriptинга / компиляции.
Sony запретила моддинг на пс4, который тащит снаружи какие-то файлы. Никакие ассеты и скрипты, которых нет в игре, добавить нельзя. Вокруг этого был крупный скандал касательно fallout 4. На пс4 моды, по сути, невозможны. Единственный способ создания контента в играх это его сборка из того, что дает игра. Самый продвинутый вариант на пс4 в dreams — подобие визуального программирования, где из готовых блоков собирается логика. Очевидно, что никак системный вызов дернуть вам не дадут, так же как не дадут вообще ничего, что взаимодействует с системой. Для эсплоитов это бесполезно.
А какие PS4 простенькие игры знаете вы, куда можно было бы залезть и через какие скриптовые языки?
И что это даст? Даже если невероятным образом вам дадут питоновский интепретатор, дальше то что? Игры однозначно в точно такой же песочнице исполняются, а то и более жесткой, чем браузер. Без эксплоитов ядра все равно никуда не залезть. После взлома ядра начинаются аппаратные защиты, которые у пс4 наверняка есть как были и в прошлом поколении. Ядро не является самым привилегированным режимом исполнения. У бокса вон их дофига, все кругом пошифровано изолировано на аппаратном уровне, да еще приправлено гипервизором и виртуальными машинами, что вполне можно считать причиной, почему это поколение консолей полностью миновало пиратство.
0
И что это даст?Если получится запускать любой код в usermode через какую-нибудь дыру в условном «тетрисе», то запускаем этот тетрис, затем эксплойт, и шелл-код скачивает и запускает условный «uncharted 4» в этом же процессе. Ядро проламывать не надо, из песочницы убегать тоже не надо.
0
Если бы игры было так просто скачать и запустить, то проблем с пиратством было бы куда меньше. Потом еще надо умудриться запустить это нечто, если даже оно скачалось. Так просто что-то запустить наверняка не дадут атрибуты памяти. Если песочница правильно настроена, то будут заблокированы все варианты запуска чего-либо стороннего (mmap, mprotect, fork, вот это вот все, что игре совсем не нужно, будет нафиг выключено). Сами игры зашифрованы и расшифровкой занимается специальный процессор, к которому никакого доступа естественно нет.
Я поэтому и спрашивал. Консоли современные это кучи слоев защит от программных до аппаратных. Даже проникновение в ядро это далеко не все, что требуется.
Я поэтому и спрашивал. Консоли современные это кучи слоев защит от программных до аппаратных. Даже проникновение в ядро это далеко не все, что требуется.
0
Сам купил недавно новый PS4, но для детей — самому не охота «гадить» и/или убивать свой PS4, хотя сам с интересом поковырял бы защиту PS4. Думаю пока железо мое лезть в неё глубже пока не буду. Максимум попробовал бы PS4 SDK, и может какую нибуть игру написать пока её не хотят забанить. Боюсь, что PS4 SDK платный.
Если кто что захочет профинансировать, сообщите лично.
Если кто что захочет профинансировать, сообщите лично.
0
mmap, mprotect, fork, вот это вот все, что игре совсем не нужно, будет нафиг выключеноУбрать все эти функции из userspace — слишком большая цена безопасности, при этом она оправдана только если мы запускаем недоверенный код. При этом нужно будет перенести всё системное в ядро. Снизится стабильность. Кучу опенсорсных библиотек/движков придётся переписать. Но мы же запускаем только доверенный код, тут не нужна такая модель безопасности.
Сами игры зашифрованы и расшифровкой занимается специальный процессор, к которому никакого доступа естественно нетВ RAM игры не зашифрованы. Нужно расшифровывать при чтении из сети / с HDD. И даже в этом случае в защищённом криптопроцессоре можно хранить лишь закрытые ключи, а сеансовый (одноразовый) ключ отдавать программе для расшифровки на основном CPU. Просто потому что невыгодно прокачивать большие объёмы через спец. процессор, это надо его делать сравнимым по пропускной способности с CPU.
0
Кстати, один из вариантов — это онлайн игры. Они по идее сами тянут контент из сети. Изменить DNS оффициального сервера на свой собственный локальный сервер, я подавать эксплойт контент напрямую с сервера.
Онлайн игр много, Terraria, Growtopia,…
Думаю что игры проще эксплойтить, чем саму приставку.
Начиная с того, что поддержка скриптинга и modинга может быть в самой игре (как фича). Заблокировать сложнее — представьте отозвать и/или забаннить все версии данной игры, да и думаю в Sony более помешанные на security программисты, чем все те поставщики игр, что под них работают.
Онлайн игр много, Terraria, Growtopia,…
Думаю что игры проще эксплойтить, чем саму приставку.
Начиная с того, что поддержка скриптинга и modинга может быть в самой игре (как фича). Заблокировать сложнее — представьте отозвать и/или забаннить все версии данной игры, да и думаю в Sony более помешанные на security программисты, чем все те поставщики игр, что под них работают.
0
Изменить DNS оффициального сервера на свой собственный локальный серверТак сейчас всё SSL, а установка своего сертификата в приставку не поддерживается.
0
Заблокировать сложнее — представьте отозвать и/или забаннить все версии данной игрыЭто же элементарно.
Эксплойт в системе, так приставка, как только видит интернет, заявляет: хочу обновить ось, и без этого действия ну вообще почти ничего не работает (сегодня у меня PS4 так и написала, пришлось качать мегабайт 300-400).
Если ошибка в игре — принудительно обновить версию игры. У игрока нет выбора, кроме как не включать интернет )))
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Анализ защиты Sony PlayStation 4