iOS

iOS

error404
«Хакер»


IOS УЯЗВИМОСТИ

Что можно сделать с iPhone, зная пасскод. Как сливают данные, уводят iCloud и блокируют остальные устройства

Олег Афонин  2 недели назад


Мобильная версия статьи


Содержание статьи

Последние несколько месяцев мы много писали о нововведениях в iOS 11. Мы хвалили систему за новый режим SOS и за то, что для установления доверенных отношений с компьютером теперь требуется ввести пароль блокировки устройства. «Теперь-то заживем!» — думали мы. Но ошиблись. С выходом iOS 11 разработчики Apple не только добавили новые механизмы защиты, но и ослабили старые, переложив абсолютно все уровни защиты исключительно на пароль блокировки.

Еще раз, помедленнее: вся многоуровневая система безопасности, все дополнительные проверки, пароли на резервные копии и даже облачная блокировка iCloud — теперь все-все-все завязано исключительно на пароль блокировки устройства и может быть легко сброшено, если пароль от устройства известен.

В самом деле? Давай разбираться.


WARNING

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

 


Пароль на резервные копии

Представь, что ты работаешь в компании, основной бизнес которой — взлом паролей. Резервные копии от iPhone, которые можно создать на компьютере с помощью iTunes или сторонних приложений, можно зашифровать паролем, причем защита достаточно стойкая: для успешного перебора нужен компьютер с мощной видеокартой. Потом начинается гонка: Apple делает все более стойкую защиту, ты — разрабатываешь все более совершенные алгоритмы для ее взлома. В последней итерации Apple, казалось бы, побеждает: даже компьютер, оснащенный видеокартами по максимуму, не в состоянии перебирать больше нескольких десятков (!) паролей в секунду.

Представил? А теперь — новость: разработчики Apple делают финт ушами, и в iOS 11 пароль на резервную копию iPhone, который перебирается ну очень медленно, можно просто сбросить. Разумеется, не на уже созданном бэкапе, а на телефоне, и только если известен пароль блокировки (пасскод), — тем не менее пароль на резервную копию просто сбрасывается!

 


Как было в iOS 8, 9 и 10

Как это было в iOS 10 и более ранних версиях системы? Пароль на резервную копию устанавливался в iTunes, вот так:


Обрати внимание на опцию Encrypt iPhone backup. Если галочка установлена, то убрать, сбросить или изменить пароль через iTunes можно в том и только в том случае, если тебе известен старый пароль.

В iOS пароль на резервную копию — свойство не iTunes, при помощи которой создается бэкап, и даже не самого бэкапа, хоть он и зашифрован с помощью этого пароля. Нет, пароль на резервные копии — это свойство устройства, конкретного iPhone, глубоко в недрах которого и хранится этот пароль. Любые попытки сбросить или изменить пароль на резервную копию хоть с самого телефона, хоть через iTunes в обязательном порядке проходят через iOS. В iOS 8, 9 и 10 единственным способом изменить или убрать пароль на резервную копию был запуск iTunes и ввод старого пароля.

Забыл пароль от резервной копии? Неудивительно: вероятно, ты вводил его ровно один раз — при начальной настройке неизвестно когда. Хочешь сбросить забытый пароль? Это возможно только после сброса телефона к заводским настройкам. Нет, ты не сможешь восстановить данные из зашифрованного бэкапа — ведь пароль ты не помнишь! Да, ты можешь восстановить данные из iCloud (включая облачную связку ключей iCloud Keychain, в которой хранятся — или могут храниться — все твои пароли).

Казалось бы, система вполне логичная и внутренне непротиворечивая, предлагающая оптимальный баланс безопасности (не зная пароля — сбросить невозможно!) и удобства (ведь из облачного бэкапа восстановиться все равно можно, даже если ты забыл пароль). Но жаловались пользователи: «У меня пароль в iTunes — я его не устанавливал!» Жаловалась полиция. Недовольны были и корпоративные клиенты. И в Apple пошли на уступки.

 


Как стало в iOS 11

В iOS 11 ты по-прежнему можешь установить пароль на резервную копию в iTunes и по-прежнему не можешь сбросить или изменить его через iTunes, если забудешь старый пароль. Однако — сюрприз! — теперь ты можешь сбросить пароль на бэкап непосредственно на самом устройстве. Вот что пишут на эту тему в Apple:

В iOS 11 или более поздних версиях можно создать зашифрованную резервную копию устройства путем сброса пароля. Чтобы сделать это, нужно выполнить следующие действия.
  1. На устройстве с iOS перейдите в меню «Настройки» > «Основные» > «Сброс».
  2. Нажмите «Сбросить все настройки» и введите пароль ОС iOS.
  3. Следуйте инструкциям по сбросу настроек. Это не затронет данные или пароли пользователей, но приведет к сбросу таких настроек, как уровень яркости дисплея, позиции программ на экране «Домой» и обои. Пароль для шифрования резервных копий также будет удален.
  4. Подключите устройство снова к iTunes и создайте зашифрованную резервную копию.
Вы не сможете использовать зашифрованные резервные копии, которые были созданы ранее, но сможете создать в iTunes резервную копию текущих данных и установить новый пароль для нее.
Если на устройстве установлена iOS 10 или более ранней версии, пароль сбросить нельзя.

Фактически речь идет вот об этих настройках:

Сброс пароляИ все? Да, все: пароль на резервную копию iTunes сброшен, и теперь ты можешь создать новый бэкап… а точнее — вытащить данные из телефона. Обрати внимание: перед тем как создавать свежую резервную копию в iTunes, тебе нужно будет установить доверенные отношения с компьютером, для чего потребуется ввести пароль блокировки на самом устройстве (по условиям задачи ты его знаешь).

Также нужно обязательно задать новый (известный) пароль на бэкап. Зачем это делается? Если пароля не будет, то данные приложений останутся незашифрованными, зато связка ключей (Keychain) окажется зашифрована с использованием аппаратного ключа, извлечь который из телефона тебе не удастся. Так что задай пароль на бэкап, и связка ключей (а в ней, напомним, хранятся все пароли пользователя, включая пароль от Apple ID, маркеры аутентификации, номера платежных карт и многое другое) будет зашифрована с помощью того же самого пароля.

Что дальше? Дальше резервную копию расшифровываем (хотя бы при помощи Elcomsoft Phone Breaker) и просматриваем содержимое. Вероятно, больше всего нас заинтересуют пароли пользователя и фотографии.

Пароли:


Поищи пароль от Google Account. Если в связке ключей он найдется, ты сможешь получить доступ (например, с использованием Elcomsoft Cloud Explorer) просто к гигантскому массиву данных о пользователе: подробнейшей истории местоположения за последние несколько лет, всем его паролям, сохраненным в браузере Chrome, закладкам, истории поисковых запросов и истории браузера и многому другому. Двухфакторная аутентификация? С большой долей вероятности тот iPhone, который у тебя в руках, может быть использован для подтверждения запроса через Google Prompt или, на худой конец, для получения SMS с одноразовым кодом.

Кстати, а что делать, если фотографии в бэкап почему-то не попали? Даже у специалистов по извлечению данных этот вопрос временами вызывает ступор: фотографии точно есть, вот они, их можно пролистать на телефоне — но в резервной копии их нет!

Ответ, как правило, будет очень простым. Несколько лет назад Apple представила сервис на основе iCloud, позволяющий пользователям синхронизировать фотографии и видео через облако. Если на iPhone включена настройка iCloud Photo Library, то фотографии будут сохраняться в iCloud — но не в облачные резервные копии, а в специальную область, выделенную именно для медиафайлов. Более того, если эта настройка включена, то и в локальные резервные копии, создаваемые при помощи iTunes, фотографии тоже сохраняться не будут. Так что для их извлечения ты можешь отключить синхронизацию фотографий с облаком в настройках iCloud, после чего создать свежий бэкап:


В принципе, в этих шагах нет большой необходимости; фото и видео можно перенести с iPhone и другими способами, но если уж снимать резервную копию, то целиком.

Итак, имея всего лишь iPhone с известным паролем блокировки, мы уже получили доступ к следующим данным:

  • всему, что содержится в локальном бэкапе iTunes (с заданным паролем);
  • паролям ко всем ресурсам из локальной связки ключей Keychain;
  • фото и видео;
  • данным приложений (как правило, в формате SQLite).

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

 


Меняем пароль от Apple ID и отключаем блокировку iCloud

Ты, наверное, в курсе, что для того, чтобы поменять пароль от учетной записи — неважно, Apple, Google или Microsoft, — нужно предварительно ввести старый пароль или хотя бы сбросить его с обязательным получением письма на зарегистрированный адрес электронной почты. В случае с iOS пароль от учетной записи Apple ID (он же — пароль к iCloud) можно поменять легко и просто, если у тебя на руках iPhone и тебе известен пароль блокировки. Старый пароль не нужен; не нужно получать письмо на неизвестный заранее ящик и не нужно открывать никакие ссылки для сброса пароля. Единственная оговорка: метод гарантированно работает лишь для учетных записей с активированной двухфакторной аутентификацией.

Итак, у тебя на руках iPhone, и пасскод от него тебе известен. Открой системное приложение Find My iPhone:


Видишь поле для ввода пароля с грозной надписью Required? А ведь на самом деле его нет! Просто нажми на «Forgot Apple ID or password?», и увидишь запрос пароля блокировки телефона:


Введи пасскод, и на следующем шаге ты сможешь выбрать новый пароль для учетной записи Apple ID (он же — пароль от iCloud):


Собственно, задача решена: пароль от Apple ID / iCloud мы поменяли. Теперь ты можешь запросто отключить функцию Find My iPhone из настроек, и бывший владелец ничего не сможет поделать с твоим устройством.

Кстати, все то же самое можно проделать и другим способом, без использования приложения Find My Phone. Для этого достаточно кликнуть на Apple ID в настройках устройства, после чего открыть пункт Password & Security:


Далее — нажать Change Password. Будет запрос пароля блокировки устройства:


После этого можно спокойно сменить пароль от iCloud / Apple ID:


Возвращаясь к первому шагу, обрати внимание на пункт Trusted Phone Number. Здесь указывается тот номер телефона, на который будут приходить SMS для двухфакторной аутентификации. Именно этот номер можно использовать для восстановления доступа к учетной записи, если злоумышленник сменит пароль от Apple ID. Впрочем, если злоумышленнику известен пасскод от устройства, то проблемы не существует: первым шагом добавляется новый «доверенный номер телефона», вторым — удаляется старый, принадлежавший бывшему владельцу учетной записи. С этого момента действительно все: тапки целиком и полностью, со всеми потрохами, принадлежат новому владельцу.

Нужно ли здесь писать, как отключается функция Find My iPhone? Это буквально пара кликов в настройках iCloud; для отключения блокировки телефона iCloud у тебя могут запросить пароль от учетной записи, но ты его знаешь — сам только что установил.

Ну и вишенка на торте. Используя все то же приложение Find My iPhone, ты можешь зайти в учетную запись бывшего владельца, используя новый пароль (если включена двухфакторная аутентификация, можно использовать как push-код, так и одноразовый код, который генерируется из настроек устройства). Зайдя же в учетную запись, ты можешь найти все остальные устройства пользователя, зарегистрированные в той же учетной записи, и, например, заблокировать их или уничтожить данные (после чего бывший владелец не сможет с ними сделать ровным счетом ничего, кроме обращения в СЦ Apple, потому что устройства будут заблокированы с помощью iCloud Lock).


Промежуточный итог:

  1. Сменили пароль от учетной записи пользователя.
  2. Отключили iCloud lock (Find My iPhone).
  3. Сменили доверенный телефонный номер, чтобы бывший владелец учетной записи уж точно ничего не смог поделать.
  4. Стерли данные со всех остальных устройств бывшего владельца учетной записи и/или заблокировали эти устройства.

Давай теперь посмотрим, что интересного хранится у пользователя в облаке iCloud.

 


Что интересного есть в iCloud?

Apple iCloud — универсальный облачный сервис, интегрированный в операционную систему iOS (и в macOS). В облаке могут храниться резервные копии устройств (всех устройств, зарегистрированных в данный Apple ID, а не только того iPhone, который у нас в руках), фотографии и видеоролики, различные файлы и резервные копии приложений. Через iCloud синхронизируются (практически в режиме реального времени) такие вещи, как контакты, информация о звонках, электронная почта. Наконец, через облако могут синхронизироваться и пароли — та самая связка ключей, только на сей раз в облачном виде. Давай посмотрим, стоит ли возиться с извлечением всего этого.

 


Резервные копии

Мы уже неоднократно писали про облачные резервные копии iOS. Наверное, нет смысла повторяться; напомню лишь, что по своему содержимому облачные резервные копии соответствуют локальным бэкапам без пароля. Таким образом, пароли из локальной связки ключей в облачную резервную копию сохраняются, но шифруются при помощи аппаратного ключа и могут быть восстановлены исключительно на то самое устройство, с которого были скопированы. (Пароли все-таки можно восстановить из облака при помощи другого механизма, о котором ниже.) Кроме того, если включен режим синхронизации фотографий в настройках устройства (сервис iCloud Photo Library), то фотографии и видео не будут сохраняться ни в локальный, ни в облачный бэкапы.

Почему нас интересуют облачные бэкапы, если ранее мы уже получили доступ к локальному? С одной стороны, локальный бэкап даст нам доступ к большему количеству данных — как минимум мы расшифруем пароли из связки ключей (Keychain). С другой — локальный бэкап мы можем сделать только с текущего устройства и только на данный момент времени, а вот в облаке могут храниться до трех последних резервных копий, причем для всех устройств пользователя, зарегистрированных в той же учетной записи. Таким образом, что-то новое мы все-таки можем узнать.

Тебе потребуется тот пароль от Apple ID, который ты установил на предыдущем шаге. Если учетная запись защищена двухфакторной аутентификацией, ты сможешь получить код на устройство или сгенерировать его из настроек:


Для доступа к облачным резервным копиям традиционно используем Elcomsoft Phone Breaker. В главном окне используй опцию Tools — Apple — Backups, авторизация по логину и паролю.


Бэкап скачается в формате локальной резервной копии iTunes; ты сможешь просмотреть его содержимое с помощью любого софта, поддерживающего данный формат.

 


Звонки и синхронизированные данные

Облачные резервные копии — это интересно, но скачиваться они могут довольно долго, а их практическая ценность для тебя сомнительна с учетом того, что у тебя уже есть локальный бэкап. Но данные в облаке не заканчиваются на резервных копиях. Очень интересна такая категория в iCloud, как синхронизированные данные — в частности, информация о телефонных звонках, которые пользователь принимает и совершает на всех телефонах, зарегистрированных в учетной записи. Помимо звонков, здесь будут такие данные, как история браузера Safari (опять же — синхронизируется со всех устройств пользователя в режиме реального времени), закладки, открытые в Safari вкладки, заметки, контакты, календари, картографическая информация и данные из приложения Wallet (посадочные талоны и подобное).

Извлекается все это довольно быстро, буквально за несколько минут. Просмотреть извлеченные данные можно в Elcomsoft Phone Viewer.


 


Облачная связка ключей — iCloud Keychain

Связка ключей iCloud — облачный сервис для синхронизации логинов и паролей к веб-сайтам из браузера Safari, данных платежных карт и информации о сетях Wi-Fi. Акцент здесь именно на синхронизации паролей: существует по крайней мере один способ настроить облачную связку ключей таким образом, что сами пароли, хоть и будут синхронизироваться через облако, в iCloud храниться не будут. Вкратце опишем возможные сценарии работы связки ключей iCloud.


Сценарий 1. Учетная запись без двухфакторной аутентификации. Если пользователь включит связку ключей iCloud, но не задаст так называемый код безопасности iCloud (это отдельный код, который служит для защиты именно облачной связки ключей и ничего более), то пароли в облако не сохраняются; синхронизация ведется исключительно между доверенными устройствами. Нас этот сценарий не интересует.

Сценарий 2. Учетная запись без двухфакторной аутентификации. Если пользователь выбрал код безопасности iCloud, то пароли уже хранятся в облаке, но для доступа к ним нужно будет ввести тот самый код безопасности — по условиям задачи мы его не знаем. Что делать? Можно попробовать активировать двухфакторную аутентификацию в учетной записи пользователя; зная пароль от Apple ID и сменив доверенный номер телефона, сделать это будет очень просто. Таким образом, теоретически задача сводится к сценарию 3 (проверить на практике возможности не было).

Сценарий 3. Учетная запись с включенной двухфакторной аутентификацией. Пароли хранятся в iCloud, а для доступа к ним тебе потребуется ввести пароль от Apple ID и дополнительно указать пароль блокировки устройства — любого устройства (iPhone, iPad, macOS), которое уже зарегистрировано в облачной связке ключей, включая тот iPhone, который у тебя в руках. Задача решена, пароли извлечены.

Рассмотрим извлечение облачной связки ключей подробнее.

Шаг 1: в Elcomsoft Phone Breaker выбираем Tools — Apple — Download from iCloud — Keychain.


Шаг 2: авторизуемся в iCloud (логин, пароль, одноразовый код 2FA).

Шаг 3: выбираем из списка устройство Trusted device (тот самый iPhone, который у тебя в руках) и вводим пароль от него в поле Device passcode.


Шаг 4: возвращаемся на главный экран и открываем Keychain Explorer. Тебе доступны пароли и маркеры аутентификации от Apple ID (кстати, здесь, возможно, ты найдешь и оригинальный пароль пользователя от его Apple ID — развлечения ради можно будет вернуть его на место), пароли от сетей Wi-Fi, пароли от почтовых аккаунтов (кто сказал «фишинг»?), кредитные карты («кардинг» мы тоже не говорили!), а также все пароли, сохраненные в браузере Safari.



 


Сравниваем с Android

Допустим, в iOS все плохо. А как обстоят дела в параллельной вселенной? Что можно сделать с телефоном под управлением Android, если известен пароль блокировки?

Оказывается, не слишком много. Да, ты можешь легко отвязать телефон от учетной записи Google и снять защиту от сброса к заводским настройкам — Factory Reset Protection. Собственно, для этого достаточно тот самый пароль убрать из настроек — FRP в этом случае отключается автоматически. Да, ты сможешь создать локальную резервную копию через ADB — но толку от нее будет минимум: ни пароли, ни какая-то особо важная информация туда не попадет. А вот с физическим извлечением уже возникнут проблемы: далеко не на каждом телефоне удастся получить права root, необходимые для физического извлечения, и далеко не каждый телефон подвержен атакам через уязвимости загрузчика (впрочем, если известен пароль устройства, расшифровать содержимое раздела данных будет существенно проще).

Получится или нет извлечь пароли от браузера Chrome — вопрос открытый: эти пароли хранятся в облаке Google, а доступ к ним можно получить через браузер по ссылке passwords.google.com. Даже если на телефоне пароль от учетной записи Google уже закеширован в браузере, Google потребует ввести пароль заново, причем вручную. Взять его из кеша не получится. И чего уж точно не удастся сделать — так это в несколько кликов сменить пароль от Google Account.

 


Заключение

С выходом iOS 11 разработчики Apple уничтожили многоуровневую систему безопасности, ранее существовавшую в экосистеме iOS. Теперь абсолютно вся безопасность зависит исключительно от надежности пасскода — пароля блокировки устройства. Стоит злоумышленнику получить доступ к устройству и узнать пасскод (а для многих устройств предыдущих поколений это — дело техники, не очень больших денег и не слишком долгого перебора), как владелец устройства и учетной записи моментально становится бывшим.

Практически все данные, включая пароли, извлекаются непосредственно из устройства через локальную резервную копию iTunes — пароль на бэкап теперь можно сбросить. Пароль к Apple ID и iCloud меняется за несколько секунд, после чего устройство легко отвязывается от iCloud (на этом этапе телефон можно сбрасывать и перепродавать, а остальные устройства пользователя — блокировать и вымогать деньги за разблокировку). На том неприятности не заканчиваются: злоумышленник получает доступ к фотографиям в iCloud, облачным паролям, резервным копиям всех остальных устройств с той же учетной записи, информацию о звонках и синхронизированных данных. Заметь, все это — всего лишь зная пароль блокировки от единственного устройства! Даже в Android, который мы любим ругать за дыры в безопасности, не получится просто так сменить пароль от учетной записи Google.

Не знаю, как тебе, а лично мне выходить из дома с iPhone просто страшно. Как защититься? Пока непонятно. Единственное, что можно (и точно нужно) сделать, — это установить на iPhone пароль блокировки хотя бы из шести цифр. Собственно, начиная с iOS 10 Apple рекомендует именно такие пасскоды. Их перебор в настоящее время технически неосуществим. Впрочем, если злоумышленник подсмотрит пароль или заставит тебя его сообщить, мы возвращаемся к первому пункту.

Покажи эту статью друзьям:


Олег Афонин


Олег Афонин

Эксперт по мобильной криминалистике компании «Элкомсофт»


Теги:AppleiOSВыбор редактораСтатьиУязвимости

← Ранее

Раскрыты подробности проблемы в macOS, позволявшей выполнить произвольный код через USB

Далее →

ПРФ и ИБ-специалисты предупредили, что мошенники заинтересовались данными СНИЛС

5 комментариев

Владиславище

  1. 23.11.2017 at 23:28
  2. Прочитал и офигел. Уничножили своими руками многолетние наработки в сфере безопасности…
  3. Ответить

robotizm365

  1. 24.11.2017 at 03:09
  2. Да, многолетний труд втоптан в ничто, надеюсь все-таки поправят, если это сделано «не умышленно, для ББ». А кто-нибудь знает какой-нибудь рабочий брутфорс под пасскоды на iphone? Может у Элкомсофт есть?!
  3. Ответить

joker2k1

  1. 24.11.2017 at 03:38
  2. Жесть! Спасибо за столь подробный анализ
  3. Ответить
Олег Афонин

Олег Афонин

  1. 24.11.2017 at 13:24
  2. Это сделано умышленно. Для каждого ослабления безопасности наверняка были причины (полагаю — жалобы пользователей). Когда у руля был авторитарный лидер, Стив Джобс, он мог просто послать всех — «я знаю, как лучше». Сейчас такого человека у руля нет, и все эти вещи делаются в угоду публике. По отдельности все шаги описаны в официальной документации Apple в статьях, на которые я привёл ссылки. Другой дело, что их комбинация даёт вот такой потрясающий эффект, когда вся система безопасности «вдруг» рушится. И вот это уже удивительно даже с учётом характера текущего руководителя.
  3. По поводу взлома паролей на железках: мы тестировали такие устройства; они действительно позволяют при удачном совпадении факторов (конкретная версия железа, поддерживаемые версии iOS) перебирать на iPhone пароли. Очень небыстро, на iPhone 7 скорость — порядка одного пароля за несколько минут (!), но даже так — 10,000 комбинаций (4 цифры) всё равно перебираются полностью примерно за 2.5 недели.
  4. Ответить

Kyrdistan

  1. 24.11.2017 at 20:01
  2. например такой пароль врядли взломают K=M»wL)g3″ZM}O$~+mBKamuG^p3S
  3. проблема только запомнить)
  4. следующая статья должна быть как запоминать сложные пароли.



Report Page