Перевод статьи от Forbes
Автор статьи попросил одного из хакеров группы «evad3rs» рассказать об Evasi0n, первом джеилбрейке, работающем с iPhone 5, iPad 3 и iPad mini…
Все, кто заинтересовался, прошу под кат…
В вечной игре в кошки и мышки с Apple, где компания пытается контролировать, что именно должно, а что не должно работать на вашем телефоне, мышки недавно заработали себе еще одно очко.
В понедельник команда хакеров, которые называют себя «evad3rs», выпустили Evasi0n, первый джелбрейк, который работает на iPhone 5, iPad3, iPad-мини, да и вообще на всех последних устройствах с последней iOS. Программа позволяет снять все ограничения, прописанные Эпплом для пользователей, буквально за несколько минут.
По словам Джея Фримана (Jay Freeman), администратора Cydia appstore, в первые шесть часов с момента выхода программа была скачана 800 000 раз. И это по самым скромным прикидкам, потому что после его сервера падали несколько раз под лавиной запросов на скачивание. На следующий день счет загрузок уже превышал 1,7 млн.
С каждым новым девайсом от Эппл, с каждым новым обновлением операционной системы защита от взлома становится все изощренней, а процесс взлома все более трудоемким. Evasi0n не исключение. По словам Дэвида Ванга (David Wang), одного из четырех программистов группы «evad3rs», программа пользуется минимум пятью уязвимостями в новой iOS (для справки — это на одну уязвимость больше, чем использует Stuxnet — специальный вирус, разработанный Агентством национальной безопасности США для саботажа программы обогащения урана в Иране).
Я попросил Ванга рассказать, шаг за шагом, как работает Evasi0n. И вот что он мне рассказал (на примере телефона):
Уязвимость №1.
Сначала Evasi0n запускает libimobiledevice, программу, которая вместо iTunes связывается с телефоном по тому же протоколу, что и сам iTunes. Используя эту уязвимость, Evasi0n обращается к системе бэкапа телефона, чтобы получить доступ к его настройкам, конкретнее — к данным timezone.
Уязвимость №2.
Далее джеилбрейк прописывает символьную ссылку в файле timezone между двумя блоками операционной системы. В данном случае используется закрытый канал связи между разными программами в телефоне. Evasi0n вносит изменения в код операционки, которые позволяют программам взаимодействовать с Launch Daemon (сокращенно — launchd), который запускается первым при перезагрузке телефона работает с программами, для которых требуются права root-пользователя. Иными словами, теперь при перезагрузке телефона доступ к timezone и к launchd открыт для сторонних программ.
Уязвимость №3.
У iOS есть еще защита, которая не дает доступ сторонним программам к launchd — это Code-signing. Данная защита следит за любым кодом и проверяет его цифровую подпись, которую невозможно подделать, на принадлежность Apple. В данном случае Evasi0n запускает новое приложение, у которого вообще нет подписи. Но когда пользователь запускает это приложение, используется старый Unix-прием, называемый “shebang”, благодаря которому запускается родной эппловский launchd (к которому мы уже имеем доступ). С помощью launchd меняются настройки в памяти телефона, в специфических файлах, требующих прав root-пользователя.
Теперь, когда корневые каталоги можно редактировать, Evasi0n изменяет файл launchd.conf, который меняет настройки самого launchd. Теперь уже при каждой загрузке launchd делает то, что надо джейлбрейкеру. Грубо говоря, освобождает от надобности взламывать телефон каждый раз, когда его приходится выключать.
Уязвимость №4.
Хотя даже сейчас телефон еще не взломан, пока не сняты определенные запреты в самом ядре операционки, на самом ее низком уровне, где проверяются цифровые подписи программ. Есть специальный процесс, Apple Mobile File Integrity Daemon (AMFID), который не дает запускаться неодобренным приложениям на телефоне. Тут Evasi0n использует уже исправленный launchd для загрузки необходимых библиотек в AMFID, и теперь каждый раз, когда запускается неподписанная программа, AMFID «видит» ее как аппрувленную. Ванг не стал распространяться про то, как именно работает этот процесс, ответив, что: «Пусть в Эппле сами догадаются».
Но защита ядра на этом не останавливается. Есть процесс под названием Address Space Layout Randomization (ASLR), который постоянно меняет расположение определенных кусков кода в памяти телефона. Новая перезагрузка — новая локация для программ ядра в памяти телефона. Таким образом предотвращается несанкционированное изменение кода. Но есть часть кода ядра, которую сложнее спрятать или переместить, чем другие — это программы отслеживания ошибок системы. Здесь Evasi0n пользуется уязвимостью ARM-чипов под названием «ARM exception vector». Суть его в том, что Evasi0n симулирует сбой системы и отслеживает, используя ARM exception vector, где именно произошел сбой, что помогает найти остальные части ядра в памяти телефона.
Уязвимость №5.
Когда ASLR обманут и все программы ядра найдены, Evasi0n использует баг в USB интерфейсе iOS. Когда память ядра операционной системы обменивается адресами с приложениями, она, по словам Ванга, «наивно полагает, что пользователь не подправляет эти адреса». Эта уязвимость позволяет Evasi0n обращаться к любой части ядра системы. Естественно, первое, что делает Evasi0n — это обращается к той части ядра, которая запрещает изменять код самого ядра. Цитируя Ванга: «Когда вы проникли в ядро системы — уже неважно, есть у него какая-то защита или нет. Тогда-то мы и побеждаем)».
Сайт Evasi0n для интересующихся.
Автор: Sandor13