![](https://habrastorage.org/files/a14/486/661/a14486661f32496d8dffe21989972189.jpg)
В апреле 2016 года ФБР и Apple устроили настоящее шоу вокруг телефона iPhone 5c стрелка из Сан-Бернардино, для которого якобы никак не удавалось подобрать пароль без помощи компании Apple.
ФБР давило на Apple, требуя технической помощи. Тим Кук опубликовал открытое письмо, в котором обвинил ФБР в принуждении Apple встроить бэкдор в iOS. Дело дошло до Конгресса и Сената США, проблему обсуждали все крупнейшие американские СМИ и телеканалы. Мир с замиранием сердца следил за санта-барбарой и гадал: даст Apple федералам или не даст доступ к криптосистеме iPhone.
iPhone защищён от брутфорса через опцию уничтожения данных на устройстве после десяти некорректных попыток ввода и увеличивающееся время задержки между наборами кода разблокировки (5 секунд после 5 попыток, затем 1 минута, 5 минут, 15 минут и 60 минут).
Защиту логично обойти путём копирования флэш-памяти с брутфорсом сделанных копий (NAND mirroring), но специалисты ФБР почему-то не смогли провести такую атаку. Они обратились к АНБ — те тоже не смогли помочь.
После длительных безуспешных попыток давления на Apple ФБР заплатило больше $1 млн хакерам (предположительно, из Израиля), которые предложили рабочий метод брутфорса пароля iPhone 5c. Источники сообщили тогда, что смартфон был взломан с использованием ранее неизвестной (0day) уязвимости в iOS 9. Несмотря на требование компании Apple, ФБР до сих пор не обнародовало информацию об уязвимости, чтобы Apple могла устранить её — такая месть по-фбровски.
Директор ФБР сказал, что копирование NAND не применялось, потому что оно не работает.
Теперь один простой хакер сделал то, что не могли сделать специалисты ФБР и АНБ. Сергей Скоробогатов из Кембриджского университета (Великобритания) наглядно показал, как осуществляется брутфорс пароля iPhone 5C после копирования флэш-памяти. Научная работа по криптографии опубликована в свободном доступе на сайте arXiv.org.
Согласно схеме шифрования iOS, пароль пользователя и уникальный ключ UID применяются для генерации ключа к системному хранилищу System Keybag. Ключ UID аппаратно прописан в SoC и недоступен на программном уровне, поэтому невозможно провести брутфорс, не имея доступа к конкретной микросхеме.
![](https://habrastorage.org/files/6c9/91f/2f1/6c991f2f14624a1c8f1ca9dc99883034.png)
Хотя архитектура iPhone 5c держится в секрете, на форумах можно найти схемы и наименования микросхем iPhone 5c, iPhone 6 и др., с цоколёвкой NAND. Но Сергей Скоробогатов предупреждает, что некоторые контакты VCCQ и GND поменяли местами, так что по той распиновке можно безвозвратно повредить микросхему. Для изучения протоколов и команд понадобится осциллограф и логический анализатор.
В демонстрационном видеоролике Сергей показывает, как разобрать iPhone, извлечь микросхему с чипом флэш-памяти, отпаять её паяльным феном и клонировать данные. Подобную инструкцию по разбору iPhone 5C см. на iFixit.
SoC A6 и микросхема NAND находятся разных сторонах материнской платы. Между NAND и платой расстояние примерно 0,05 мм. Для извлечения потребуется специальный тонкий нож и паяльный фен с температурой более 300°C.
![](https://habrastorage.org/files/d7f/d0b/0d3/d7fd0b0d336b4393b3dd70012a8bc8d2.jpg)
Все мелкие компоненты вокруг чипа были предварительно защищены температуростойкой эпоксидной смолой.
![](https://habrastorage.org/files/4cd/ef8/13d/4cdef813d6044682875bdccef1941638.jpg)
Подготовка к извлечению NAND
Высокая температура не повреждает данные во флэш-памяти. Проведённые ранее исследования показали, что она выдерживает до 400°C.
![](https://habrastorage.org/files/ed3/46e/763/ed346e7630f841fa81fab18845563bc3.jpg)
Извлечённый модуль NAND
Для проверки работоспособности каждый контакт модуля NAND соединяют с материнской платой проводами 0,3 мм c тефлоновой изоляцией (МГТФ).
![](https://habrastorage.org/files/200/70b/b2e/20070bb2ea9c4cfb88339e58d7ec281c.jpg)
Затем материнскую плату вставили на место, а для проводов с извлечённым модулем NAND в корпусе вырезали дырку.
![](https://habrastorage.org/files/1b2/204/b65/1b2204b65d6d46d3839b3aa8f0561e23.jpg)
![](https://habrastorage.org/files/bcb/69b/e53/bcb69be53608462e9575d5a878d8e402.jpg)
В первое время телефон сильно глючил. Сергей выяснил, что это из-за помех в длинных проводах.
![](https://habrastorage.org/files/a4a/c51/ba1/a4ac51ba199a4f2cadc7a57b9fc5cacb.png)
Сигнал с помехами
Пришлось добавить согласующие резисторы на все сигнальные провода. Тогда сигнал выровнялся и телефон перестал глючить.
![](https://habrastorage.org/files/83a/3e7/9d8/83a3e79d8a78424ba81295b70d075db9.png)
Сигнал без помех
Дальше инженер из Кембриджского университета вставил промежуточную плату для прослушки сигнала, подключил осциллограф и логический анализатор для реверс-инжиниринга протокола и команд iPhone 5c.
![](https://habrastorage.org/files/db9/046/441/db904644164f4fa89cde66730f8b43f8.jpg)
Промежуточная плата для прослушки
Здесь опять возникли проблемы с целостностью сигнала, на этот раз из-за входной и выходной электрической ёмкости буферных элементов 74LVC и 74AVC в 4 пФ и 6 пФ. Пришлось заменить их на элементы с меньшей ёмкостью 74AUP и 74AXP.
В конце концов, исследователю всё-таки удалось подготовить iPhone 5с к реверс-инжинирингу. К этому моменту он, очевидно, зашёл уже дальше, чем удалось зайти специалистам ФБР и АНБ.
![](https://habrastorage.org/files/23c/27d/6a1/23c27d6a1c5b41aa9c565d992cc993ee.jpg)
iPhone 5c с логическим анализатором
Дальнейшее было делом техники. Оказалось, что iPhone 5c использует разные интерфейсы и команды на разных этапах загрузки, в том числе недокументированные проприетарные команды на тактовой частоте 50 МГц. В конце концов, логический анализатор записал все команды и помог определить особый проприетарный протокол, который используется для коммуникации с NAND.
Сергей Скоробогатов научился считывать, стирать и записывать память NAND по своему желанию. Это всё, что необходимо для успешного брутфорса пароля.
![](https://habrastorage.org/files/4af/aea/2a1/4afaea2a164642bd8b7c6f6bd3e1523d.jpg)
Испытательный стенд для копирования NAND
Программа для брутфорса пробует шесть вариантов пароля, пока не появляется задержка в 1 минуту, тогда автоматически начинается процесс восстановления памяти из резервной копии (чтобы сбросить счётчик, защищающий от брутфорса), затем брутфорс продолжается. Цикл восстановления после 6 попыток занимает 90 секунд. Таким образом, полный перебор всех вариантов пинкода из четырёх цифр займёт около 40 часов.
![](https://habrastorage.org/files/67c/168/be5/67c168be505a41a087aaee660553be77.jpg)
Программа для зеркалирования NAND для iPhone 5c
Такой метод брутфорса не работает в более новых моделях iPhone, куда встроена дополнительная защита Secure Enclave. Но вполне можно предположить, что коллеги Сергея Скоробогатова из компании Elcomsoft и других фирм, которые специализируются на взломе смартфонов, в том числе по заказу спецслужб, уже решают эту проблему.