Программаторы nand для iphone

Играем с огнем: запускаем произвольный код на девелоперском iPhone 7

Под Новый год к нам в руки попал программатор JC PCIE-7. В процессе использования выяснилось, что его функционал ограничен, однако вещица оказалась с двойным дном. Внутри этого программатора мы обнаружили плату iPhone 7 специальной отладочной версии. За новогодними приключениями в мире исследования и отладки «яблочной» продукции – добро пожаловать под кат!

Наверное, только совсем ленивые исследователи безопасности не пощупали своими руками возможности, предоставляемые checkm8 и основанном на нем checkra1n (классный обзор checkm8 был недавно на Хабре). Конечно, мы тоже протестировали наши смартфоны и в процессе решили посмотреть, что есть полезного для исследователей на китайском рынке «железных» поделок. Интересный факт: если хочешь протестировать на безопасность какое-либо устройство, то на AliExpress уже есть для этого свои игрушки.

Наша игрушка пришла под самый Новый год – программатор JC PCIE-7, который легко найти на AliExpress:

Мы предполагали, что с помощью этого программатора сможем сделать бэкап флеш-памяти iPhone. Но при эксплуатации обнаружилось, что такой функции в программе просто нет! Да, программатор умеет читать и записывать конфигурацию во флеш-память и привязывать ее к телефону, но чтение произвольных блоков не поддерживается. Затем мы заметили необычные строки в консольном окне управляющей программы, похожие на журнал загрузки операционной системы:


Кадр момента загрузки из обучающего видео

Наконец, мы обратили внимание на функцию подключения программатора к компьютеру по протоколу DFU. В этом режиме программатор корректно определялся в iTunes как iPhone. Мы решили разобрать устройство и посмотреть, что же находится внутри и как происходит эмуляция режима DFU.

Внутри программатора установлены три платы:

  • управляющая плата на базе STM32F103;
  • плата-мультиплексор с напаянным чипом NVMe и колодкой;
  • и, неожиданно, плата iPhone 7.

Оказалось, что программатор переключает мультиплексор таким образом, что сначала плата iPhone загружается с напаянной флеш-памяти, а затем к ней подключается чип NVMe, который нужно прошить. Управление выполняется по виртуальному COM-порту, причем сначала передаются команды переключения чипов NVMe, а затем плата пробрасывает отладочную консоль iPhone, имитируя DCSD-кабель. Внимательно просмотрев отправляемые в COM-порт команды, мы увидели строчки:

setenv diags-path /AppleInternal/Diags/bin/diag.img4
diags

Уже на этом моменте мы поняли, что плата iPhone 7 не совсем обычная (в ней, как минимум, есть папка AppleInternal). Чтобы посмотреть, как она себя ведет в более привычном «окружении», мы переставили плату и NVMe чип в донорский телефон:

Помимо шестеренки при загрузке, в отладочной консоли мы увидели строчку BUILD_STYLE: DEVELOPMENT:

После окончательной загрузки (с помощью упомянутых ранее команд diags) мы получили фиолетовый экран, а уже после нажатия клавиш громкости на экране отобразилось следующее меню:

То есть собранное нами устройство оказалось специальной версией iPhone для тестирования и разработки! К слову, подобные телефоны скупаются исследователями и даже коллекционерами – вот это настоящий подарок в нашу техническую коллекцию! В полноценном девелоперском iPhone установлена специальная сборка iOS с рутовой консолью, значительно облегчающая исследование телефона и поиск уязвимостей:

Читайте также:  Куда пропал apple 11

В нашем случае на телефоне установлена только диагностическая утилита, основное взаимодействие с которой осуществляется через отладочную консоль:

Как можно видеть, функционал отладочной программы немаленький. Предназначена она в первую очередь для тестирования оборудования – большинство команд отвечают за тестирование различных аппаратных подсистем устройства. Наиболее полезными для нас оказались команды directory, memrw, memory и cat.

Выполнив команду directory, можно ознакомиться с содержимым файловой системы:

Выполнив команду cat -h, можно прочитать любой файл:

Комбинируя эти две команды, мы считали все файлы с устройства (почти 150 МБ):

Среди файлов нашлась «пасхалка», рекомендующая не шутить с Iphone7 огнем:

Выполнив команду memory -dump, можно читать диапазоны ОЗУ:

Наконец, с помощью команды memrw можно перезаписывать ОЗУ:

Несмотря на то, что чтение памяти это уже в меру полезный функционал, мы решили проверить: можно ли перезаписать области исполняемого кода и запустить что-то свое? Ведь iPhone девелоперский, а функционал пока что пользовательский – так не пойдет!

Стандартными способами сделать это не удалось, возникала ошибка с достаточно подробным трейс-логом:

В данном случае в трейс-логе сообщается, что при исполнении по адресу 0x87BF68E30 в модуле TestDirectMemoryRW.macho возникло исключение из-за записи в read-only адрес памяти. Но нет преград для технических исследователей под Новый год! Обратим внимание на самый последний вызов в стеке: DxeMain.macho. Присутствие аббревиатуры DXE и строки EDK Boot Loader commands позволяет сделать вывод, что на устройстве запущена EFI-совместимая система. И действительно, образ системы diags.img4 корректно открывается с помощью UEFITool:

Дизассемблирование программных модулей показало, что все исполняемые модули используют соглашения о вызовах EFI и стандартные структуры EDK:

Каждой команде терминала соответствует отдельный EFI-модуль, например, команде memory соответствует модуль TestUtilities.macho, который загружается в ОЗУ по адресу 0x87BE10000 (определено из трейс-лога).

Попробуем модифицировать программный код этого модуля, чтобы исполнить наш код.

По адресу 0x87BE1600D располагается текстовая строка, выводимая по команде memory –info, модифицируем ее:

Чтобы модифицировать нужную нам область памяти, требуется изменить права доступа на страницу по адресу 0x87BE14000 с read-only/execute на read/write/execute. Согласно документации AArch64, за права доступа отвечает специальная таблица трансляции. Таблица должна располагаться в ОЗУ и состоять из записей по 8 байт следующего формата:

Таблица трансляции второго уровня была обнаружена по адресу 0x87FBF4000, в диапазоне памяти, доступном для перезаписи. На этом уровне каждая запись соответствует 32 МБ (0x2000000) адресного пространства, поэтому нужная нам запись для диапазона 0x87A000000–0x87BFFFFFF находится по адресу 0x87FBF4000 + (0x87A000000 / 0x2000000) * 8 = 0x87FBF61E8:

Запись имеет тип table, то есть указывает на таблицу трансляции третьего уровня по адресу 0x87FCEC000. В этой таблице каждая запись соответствует одной 16 Кб (0x4000) странице адресного пространства и имеет тип block. Нужная нам запись для страницы 0x87BE14000 находится по адресу 0x87FCEC000 + (0x87BE14000 – 0x87A000000) / 0x4000 * 8 = 0x87FCEFC28:

Читайте также:  Айфон 7 с двумя камерами или нет

Поскольку эта запись имеет тип block, она указывает на физическую страницу памяти и содержит атрибуты доступа. Нас интересует Lower block attributes, а именно поле Data Access Permissions bits:

Чтобы разрешить запись в страницу, устанавливаем значение этого поля в 0:

После этого у нас должен появиться доступ на запись для нужной области. После внесения требуемых изменений получаем желаемый результат:

The moral: с помощью описанного метода мы можем модифицировать любые системные приложения и исполнять произвольный код в среде UEFI на девелоперском iPhone.

Практической ценности для старых версий iPhone данное исследование не несет, но было весело разобраться в чем-то неизведанном и редком, особенно когда оно неожиданно появилось как подарок на Новый год.

P. S. А вот для исследования последних версий iPhone и получения SecureROM может пригодиться описанный метод: уязвимость checkm8 в них исправлена, а подобные «программаторы» на AliExpress на базе iPhone XR и iPhone 11 уже продаются.

Raccoon Security – специальная команда экспертов НТЦ «Вулкан» в области практической информационной безопасности, криптографии, схемотехники, обратной разработки и создания низкоуровневого программного обеспечения.

Источник

Программаторы nand для iphone

Всем привет, хочу приобрести программатор для девайсов Apple, многим это уже известно и хотелось бы узнать у юзеров, что да как?
Вариант первый http://ru.aliexpress.com/item/64-Bit-IC-Chip-Programmer-Machine-Repair-Mainboard-Nand-Flash-Hard-Disk-HDD-Serial-Number-SN/32522881338.html?aff_platform=aaf&sk=eub6yrrBy%3A&cpt=1460040529357&af=12471&cv=1514485&cn=2o59qh8q8ypjvfkt5yomqxl0d2hwa1jp&dp=v5_2o59qh8q8ypjvfkt5yomqxl0d2hwa1jp&afref=&aff_trace_key=74d0545b5f6047cbaf19db1ec72a56fc-1460040529357-09848-eub6yrrBy

Вариант второй два в одном http://ru.aliexpress.com/item/2-in-1-32-64-Bit-Nand-Flash-IC-Programmer-Machine-HDD-Mainboard-Repair-Serial-Number/32619826560.html?spm=2114.10010208.100009.8.K3d4LE

Второй вариант хочется купить но отзывов не нашел, если есть имеющие такие прогери помогите советом плииииз
Заранее благодарен

Много обмана оттуда. знакомые заказывали — пришел мусор.
слишком много ньюансов у комплекса. прогер не так прост как может показаться. и не факт что продавец положит что надо и сделает как надо
а в случае с али лотерея 10\90. мое мнение

Про первый вариант есть положительный отзыв от Российского юзера, и продавец тоже на ура как говорится, но второй вариант похоже новинка и хочется купить сразу 2 в 1 как говорится, если продукт имеет поддержку как первый вариант, а если окажется что оба бокса детище одного производителя то было супер, очень хотелось бы у владельцев второго варианта услышать что то

Источник

Неофициальное расширение памяти iPhone или Китайская победа над Американским маркетингом


Давным-давно, когда iPhone в России стоил дорого, многие покупали залоченные на AT&T айфоны с ибей, используя прокси-сим (гевейку) для анлока. В это время начался переход на iPhone 4, где способ с повышением модема до iPad’овского (06.15.00) не работал, последним софтовым анлоком был 01.59.00 (iOS 4.0), а обновление BaseBand требовало покупки новой гевейки. Вплоть до iOS 5.0, где новый модем 04.11.08 превратил множество устройств в iPod. Именно с этого момента расцвел этот удивительный китайский бизнес.
Под катом небольшая история от 2011 до наших дней с картинками.

Читайте также:  Как найти разрядившийся айфон

Впрочем, залоченные «огрызки» покупали во всем мире, ввиду того, что Apple не продавала официально-разлоченные устройства в первые дни продаж, вынуждая оформлять устройство в контракт. Да и география продаж первой волны покрывала не так уж много стран и новинка могла дойти гораздо дольше посылки из США.
Изначально это была услуга по замене микросхемы модема и флеш памяти модема на новую, после чего записывался новый IMEI, затем менялся серийный номер в микросхеме устройства. Услуга стоила 150$.

Техническая часть:
На заводе Foxconn, где собирают яблочную продукцию, используются специальные диагностические прошивки. Я уже говорил о них тут, а также готовлю продолжение.

На фото отладочный bootchain для iPhone 4


Вызывается она из recovery (iboot) при помощи команды diags. После ее исполнения экран устройства становится пурпурным. Но если ввести специальную команду, можно вывести данное меню.


Сам кабель для iPhone 5+
Общение с программой diags происходит только через serial порт, который присутствует в 30 и 8 пиновых разъемах.
Существует внушительный список ее команд

2014 год
Еще в 2013 году появилась функция Activation Lock, позволяющая превратить устройство в «кирпич», до тех пор, пока не введен AppleID и пароль хозяина устройства. Данный способ начался применяться для разблокировки оных (ведь смена IMEI+SN гарантировано снимало блокировку), однако, прибыль с продаж iPhone 4 упала ввиду морального устаревания аппарата. От отчаяния начали появляться способы аппаратного «анлока» ipad, позволяющая установить на модель cellular прошивку от wifi версии, таким образом избегая блокировки. В то время активно велись опыты по записи пустых «болванок» с новым серийным номером для разблокировки ipad wifi и ipod touch.

2015 год
Китайцы начали разрабатывать это еще в 2012 году, однако, завершить удалось только сейчас. Сотрудник Foxconn проносит материнскую плату iPhone 6 на завод и прошивает диагностическую прошивку. В разрыв между NAND и платой ставится «каретка», позволяющая осуществлять горячее переключение bga NAND микросхемы.
Происходит это так: устанавливается nand с прошивкой, затем через dev bootchain загружается программа diags в озу, после чего происходит горячая смена микросхемы и производится изменение серийного номера на заданный.
Само устройство выглядит так:

Купить их можно даже на алиэкспрессе, как и «болванки» NAND.
Таким хитрым образом удается увеличивать память до 128 и даже до 256 гб (правда один чип обойдется в 800 юаней и продается в ограниченных количествах)
На последок видео сего процесса:

Впрочем, история еще не закончилась. Она происходит прямо сейчас, но ввиду экономических проблем в РФ, этот бизнес пока не прижился. К слову, оборудование стоит

$800, что в пересчете по курсу «курильщика» — 64к рублей + болванки памяти.

Источник

Оцените статью