В прошлой статье я рассказал о режиме ограничения доступа к аксессуарам в устройствах под управлением iOS. В статье я акцентировал внимание на особенности iOS, которая ставит безопасность данных пользователя в зависимость от единственного «непреодолимого» защитного рубежа: кода блокировки экрана. Практически все защитные меры так или иначе завязаны на код блокировки. Apple периодически (по сложному расписанию) отключает в iPhone биометрику, заставляя пользователя вводить пасскод для разблокировки экрана. Включил или перезагрузил телефон – нужен код блокировки. Использовал режим SOS – код блокировки. Телефон не использовался несколько часов – снова код блокировки. Подключаешь к компьютеру – и опять введи код блокировки. Хочешь установить пароль на резервную копию? Начиная с iOS 13 и здесь нужен код блокировки.
Казалось бы, пользователю достаточно установить длинный и сложный код блокировки, чтобы полностью обезопасить устройство. Однако такое поведение ничем не отличается от гипотетической системы безопасности здания, в котором охраняется только вход – при этом двери в кабинеты всегда нараспашку, на компьютерах в офисах нет никаких паролей, а к внутренней сети с любого устройства можно получить неограниченный доступ, просто подключившись к сети Wi-Fi (конечно же, тоже совершенно открытой).
Фантастика? Действительно, описанное звучит странновато, но именно в таком состоянии находится сейчас система безопасности iOS. Фактически, вся защита целиком и полностью основана на единственном рубеже обороны, которым является код блокировки экрана – при единственном маленьком условии: учётная запись пользователя защищена двухфакторной аутентификацией.
Если известен код блокировки экрана, из iPhone можно извлечь практически все данные, включая пароли от учётных записей. Как это сделать? Создать резервную копию, защитив её паролем. А для чего здесь код блокировки? Вот последовательность шагов для создания такой резервной копии:
Код блокировки можно использовать для полноценного, неограниченного доступа к паролям из Связки ключей в самом iPhone. Более того, зная код блокировки, можно легко просмотреть все сохранённые пользователем пароли как в Связке ключей, так и в стороннем менеджере паролей, который подключён к системе автозаполнения iOS (например, Roboform).
Зная код блокировки, можно легко отвязать украденный телефон от iCloud. Для этого достаточно сменить пароль от iCloud прямо в настройках телефона; вводить оригинальный пароль владельца iPhone для этого вовсе не нужно. При минимальной сноровке пароль к iCloud меняется в несколько секунд, после чего Find my iPhone выключается моментально.
Посредством кода блокировки можно расшифровать базу данных паролей пользователя в iCloud, его сообщения SMS и iMessage, а также данные «Здоровья». Здесь есть тонкий момент: для доступа к этим данным нужно, чтобы учётная запись пользователя была защищена двухфакторной аутентификацией.
Хорошо, с тем, что именно доступно злоумышленнику, узнавшему код блокировки, мы разобрались. Но при чём здесь двухфакторная аутентификация?
Дело в том, что лишь при включении двухфакторной аутентификации становятся доступными некоторые продвинутые возможности iCloud. При этом весь смартфон целиком превращается в тот самый дополнительный фактор, который необходим для… а вот для чего.
«Какой ужас! Нет, я точно не буду включать двухфакторную аутентификацию, это просто опасно!» Логичное рассуждение? Честно говоря, не очень: включить двухфакторную аутентификацию с iPhone, зная его код блокировки, будет очень и очень просто, что возвращает нас к первому пункту. А вот выключить 2FA на сегодняшний день очень тяжело, практически невозможно.
При помощи кода блокировки злоумышленник (или правоохранительные органы) могут проделать ряд нежелательных для пользователя вещей. Код блокировки – практически единственный и последний оставшийся рубеж обороны. Если он падёт, злоумышленник сможет сделать как с самим iPhone, так и с данными в облаке практически что угодно – полный аналог здания, вся система безопасности которого ограничивается цифровым замком на входе. Дальше можно просто идти по цепочке: пароли от учётных записей из Связки ключей помогут войти в социальные сети; если найдётся пароль от учётной записи Google – можно получить доступ и к тем данным, которые накопили устройства пользователя с Android.
Apple обо всём этом известно. Вот уже долгое время при настройке iPhone или iPad вам будет предложено ввести код блокировки, состоящий из 6 цифр (раньше было всего 4). Да, включить 4-цифровой код блокировки можно, но безопасность такого шага сомнительна: 4-значные коды блокировки при помощи специальных средств можно взломать в течение получаса. А вот на перебор паролей, состоящих из 6 цифр, может уйти до 19 лет – это достаточно безопасно. Впрочем, известные нам решения используют своеобразные обходные пути: первые несколько сотен тысяч паролей в некоторых случаях (AFU, определённые поколения аппаратного обеспечения) перебираются заметно быстрее, а вместо полного перебора используются частотные словари.
А что насчёт аппаратной защиты от перебора? Во всех 64-разрядных устройствах с iOS присутствует подсистема безопасности Secure Enclave, аппаратная часто которого – Secure Element, — как раз и ограничивает скорость и число возможных попыток. На сегодняшний день защиту Secure Enclave сумели более-менее обойти для всех поколений iPhone и iPad, кроме последнего, основанного на SoC A12. В числе «безопасных» моделей – iPhone Xs, Xs Max и Xr. В этих моделях скорость перебора будет ограничена одним паролем за 10 минут; обойти это ограничение, насколько мне известно, производителям средств для взлома пока не удалось. А вот для более старых моделей, особенно в режиме AFU (After First Unlock, т.е. телефон был изъят у пользователя во включённом состоянии, и пользователь разблокировал его хотя бы раз после включения) скорость перебора выше в разы.
Правда – но только для устройств, зарегистрированных в учётной записи с активной двухфакторной аутентификацией. Удивительно, но это так: самый, пожалуй, мощный механизм, продвинутый сдерживающий фактор, после появления которого кражи iPhone сократились в несколько раз, можно отключить, зная лишь код блокировки и ничего более.
Как это делается? Нужен сам iPhone и его код блокировки. Запустим системное приложение Find iPhone. В приложении — поле ввода пароля с надписью “Required”. Проигнорируем его, нажав на “Forgot Apple ID or password?”, и увидим запрос кода блокировки телефона:
Вводим код блокировки, а на следующем шаге устанавливаем новый пароль к iCloud:
Задача решена: пароль от Apple ID/iCloud нам теперь известен; iCloud lock можно отключить из настроек системы.
Альтернативный способ не требует использовать приложение Find My Phone. Заходим в Apple ID в настройках устройства, после чего открываем пункт Password & Security:
Далее – Change Password. Будет запрос кода блокировки устройства:
После этого меняем пароль от iCloud / Apple ID:
Даже после этого оригинальный владелец всё ещё может вернуть себе контроль над учётной записью, послав запрос на восстановление и указав доверенный телефонный номер.
В настройках Trusted Phone Number указывается тот номер телефона, на который будут приходить SMS для двухфакторной аутентификации. Именно этот номер владелец сможет использовать для восстановления доступа к учётной записи, если злоумышленник сменит пароль от Apple ID.
Удалить единственный номер нельзя, но злоумышленника это не остановит. Первым шагом будет добавлен новый «доверенный номер телефона», вторым – удаляется старый, принадлежавший бывшему владельцу учётной записи. С этого момента – действительно всё: быстро восстановить доступ к учётной записи у оригинального владельца устройства уже не получится. В лучшем случае это удастся сделать после длительной процедуры верификации, за время которой следы украденного устройства успеют затеряться.
С моей точки зрения, система безопасности iOS сейчас оставляет желать много лучшего. Единственный рубеж обороны – совершенно недостаточная защита. (Здесь упомяну о защите паролем «Экранного времени»; она не совершенна, но лучше, чем ничего. Как-нибудь я расскажу об этой защите подробнее.)
Как можно усилить безопасность? Я бы предложил следующие меры.
Можно ли как-то самостоятельно усилить безопасность iOS? Корпоративные пользователи могут воспользоваться системой Apple Configurator, в которой можно установить ограничения на манипуляции с учётной записью. Конечным пользователям имеет смысл устанавливать пароль «Экранного времени». Если не увлекаться самоограничениями, то опыт использования устройства не пострадает, но пароль к резервной копии сбросить уже не удастся: помимо кода блокировки экрана, система запросит ввести ещё и пароль «Экранного времени». Кроме того, можно настроить ограничения таким образом, что без пароля «Экранного времени» не получится сменить пароль от учётной записи или удалить её с iPhone.
Казалось бы, пользователю достаточно установить длинный и сложный код блокировки, чтобы полностью обезопасить устройство. Однако такое поведение ничем не отличается от гипотетической системы безопасности здания, в котором охраняется только вход – при этом двери в кабинеты всегда нараспашку, на компьютерах в офисах нет никаких паролей, а к внутренней сети с любого устройства можно получить неограниченный доступ, просто подключившись к сети Wi-Fi (конечно же, тоже совершенно открытой).
Фантастика? Действительно, описанное звучит странновато, но именно в таком состоянии находится сейчас система безопасности iOS. Фактически, вся защита целиком и полностью основана на единственном рубеже обороны, которым является код блокировки экрана – при единственном маленьком условии: учётная запись пользователя защищена двухфакторной аутентификацией.
Что можно сделать, зная код блокировки iPhone
Если известен код блокировки экрана, из iPhone можно извлечь практически все данные, включая пароли от учётных записей. Как это сделать? Создать резервную копию, защитив её паролем. А для чего здесь код блокировки? Вот последовательность шагов для создания такой резервной копии:
- Подключаем iPhone к компьютеру. Начиная с iOS 11, для подключения к компьютеру на iPhone нужно не просто нажать «согласен» на запрос подключения, но и ввести код блокировки.
- Запускаем iTunes или iOS Forensic Toolkit и смотрим, установлен ли пароль на резервную копию. Не установлен? Прекрасно, устанавливаем свой и создаём резервную копию! (Зачем устанавливать пароль – напишу отдельно; в двух словах, только в резервную копию с паролем попадают такие данные, как Связка ключей и некоторые другие). Может помешать только одно: начиная с iOS 13 для установки пароля на резервную копию нужно ввести код блокировки. Пароль установлен, а вам – неизвестен? Тоже не беда: начиная с iOS 11 пароль на резервную копию можно сбросить… введя на iPhone код блокировки экрана!
Код блокировки можно использовать для полноценного, неограниченного доступа к паролям из Связки ключей в самом iPhone. Более того, зная код блокировки, можно легко просмотреть все сохранённые пользователем пароли как в Связке ключей, так и в стороннем менеджере паролей, который подключён к системе автозаполнения iOS (например, Roboform).
Зная код блокировки, можно легко отвязать украденный телефон от iCloud. Для этого достаточно сменить пароль от iCloud прямо в настройках телефона; вводить оригинальный пароль владельца iPhone для этого вовсе не нужно. При минимальной сноровке пароль к iCloud меняется в несколько секунд, после чего Find my iPhone выключается моментально.
Посредством кода блокировки можно расшифровать базу данных паролей пользователя в iCloud, его сообщения SMS и iMessage, а также данные «Здоровья». Здесь есть тонкий момент: для доступа к этим данным нужно, чтобы учётная запись пользователя была защищена двухфакторной аутентификацией.
При чём здесь двухфакторная аутентификация?
Хорошо, с тем, что именно доступно злоумышленнику, узнавшему код блокировки, мы разобрались. Но при чём здесь двухфакторная аутентификация?
Дело в том, что лишь при включении двухфакторной аутентификации становятся доступными некоторые продвинутые возможности iCloud. При этом весь смартфон целиком превращается в тот самый дополнительный фактор, который необходим для… а вот для чего.
- Для сброса пароля в iCloud (совпадает с паролем к учётной записи Apple ID). Сбросили пароль к iCloud, а дальше – по накатанной: отключили Find my iPhone, отвязав iPhone от iCloud lock; вытащили из облака фотографии (тут можно погуглить Celebgate), извлекли резервные копии, список звонков и так далее.
- Для доступа к паролям в облаке iCloud. Тут лишь отмечу, что пароли облачной связки ключей iCloud Keychain зашифрованы ключом, который зависит от кода блокировки. Кстати, код блокировки подойдёт от любого устройства, участвующего в синхронизации. Без двухфакторной аутентификации пароли просто не будут синхронизированы в облако, так что этот пункт здесь по праву.
- Данные «Здоровье». Сюда попадают данные об активности пользователя – число шагов, частота сердцебиения (если используются часы или трекер) и так далее. Очень полезная информация, если суметь ей грамотно распорядиться. Опять же, данные «Здоровья» попадают в облако в том и только в том случае, если включена двухфакторная аутентификация, а для их расшифровки потребуется ввести код блокировки.
- «Экранное время». Тут и ограничения, и статистика использования всех устройств пользователя и его детей. Опять же, облачная синхронизация не работает без 2FA.
- SMS и iMessage. Включить их синхронизацию в iCloud можно только с двухфакторной аутентификацией, для расшифровки традиционно нужен код блокировки.
«Какой ужас! Нет, я точно не буду включать двухфакторную аутентификацию, это просто опасно!» Логичное рассуждение? Честно говоря, не очень: включить двухфакторную аутентификацию с iPhone, зная его код блокировки, будет очень и очень просто, что возвращает нас к первому пункту. А вот выключить 2FA на сегодняшний день очень тяжело, практически невозможно.
Защита кода блокировки от атак методом перебора
При помощи кода блокировки злоумышленник (или правоохранительные органы) могут проделать ряд нежелательных для пользователя вещей. Код блокировки – практически единственный и последний оставшийся рубеж обороны. Если он падёт, злоумышленник сможет сделать как с самим iPhone, так и с данными в облаке практически что угодно – полный аналог здания, вся система безопасности которого ограничивается цифровым замком на входе. Дальше можно просто идти по цепочке: пароли от учётных записей из Связки ключей помогут войти в социальные сети; если найдётся пароль от учётной записи Google – можно получить доступ и к тем данным, которые накопили устройства пользователя с Android.
Apple обо всём этом известно. Вот уже долгое время при настройке iPhone или iPad вам будет предложено ввести код блокировки, состоящий из 6 цифр (раньше было всего 4). Да, включить 4-цифровой код блокировки можно, но безопасность такого шага сомнительна: 4-значные коды блокировки при помощи специальных средств можно взломать в течение получаса. А вот на перебор паролей, состоящих из 6 цифр, может уйти до 19 лет – это достаточно безопасно. Впрочем, известные нам решения используют своеобразные обходные пути: первые несколько сотен тысяч паролей в некоторых случаях (AFU, определённые поколения аппаратного обеспечения) перебираются заметно быстрее, а вместо полного перебора используются частотные словари.
А что насчёт аппаратной защиты от перебора? Во всех 64-разрядных устройствах с iOS присутствует подсистема безопасности Secure Enclave, аппаратная часто которого – Secure Element, — как раз и ограничивает скорость и число возможных попыток. На сегодняшний день защиту Secure Enclave сумели более-менее обойти для всех поколений iPhone и iPad, кроме последнего, основанного на SoC A12. В числе «безопасных» моделей – iPhone Xs, Xs Max и Xr. В этих моделях скорость перебора будет ограничена одним паролем за 10 минут; обойти это ограничение, насколько мне известно, производителям средств для взлома пока не удалось. А вот для более старых моделей, особенно в режиме AFU (After First Unlock, т.е. телефон был изъят у пользователя во включённом состоянии, и пользователь разблокировал его хотя бы раз после включения) скорость перебора выше в разы.
И что, правда можно выключить iCloud Lock, не зная пароля к iCloud?
Правда – но только для устройств, зарегистрированных в учётной записи с активной двухфакторной аутентификацией. Удивительно, но это так: самый, пожалуй, мощный механизм, продвинутый сдерживающий фактор, после появления которого кражи iPhone сократились в несколько раз, можно отключить, зная лишь код блокировки и ничего более.
Как это делается? Нужен сам iPhone и его код блокировки. Запустим системное приложение Find iPhone. В приложении — поле ввода пароля с надписью “Required”. Проигнорируем его, нажав на “Forgot Apple ID or password?”, и увидим запрос кода блокировки телефона:
Вводим код блокировки, а на следующем шаге устанавливаем новый пароль к iCloud:
Задача решена: пароль от Apple ID/iCloud нам теперь известен; iCloud lock можно отключить из настроек системы.
Альтернативный способ не требует использовать приложение Find My Phone. Заходим в Apple ID в настройках устройства, после чего открываем пункт Password & Security:
Далее – Change Password. Будет запрос кода блокировки устройства:
После этого меняем пароль от iCloud / Apple ID:
Даже после этого оригинальный владелец всё ещё может вернуть себе контроль над учётной записью, послав запрос на восстановление и указав доверенный телефонный номер.
В настройках Trusted Phone Number указывается тот номер телефона, на который будут приходить SMS для двухфакторной аутентификации. Именно этот номер владелец сможет использовать для восстановления доступа к учётной записи, если злоумышленник сменит пароль от Apple ID.
Удалить единственный номер нельзя, но злоумышленника это не остановит. Первым шагом будет добавлен новый «доверенный номер телефона», вторым – удаляется старый, принадлежавший бывшему владельцу учётной записи. С этого момента – действительно всё: быстро восстановить доступ к учётной записи у оригинального владельца устройства уже не получится. В лучшем случае это удастся сделать после длительной процедуры верификации, за время которой следы украденного устройства успеют затеряться.
Как было бы правильно?
С моей точки зрения, система безопасности iOS сейчас оставляет желать много лучшего. Единственный рубеж обороны – совершенно недостаточная защита. (Здесь упомяну о защите паролем «Экранного времени»; она не совершенна, но лучше, чем ничего. Как-нибудь я расскажу об этой защите подробнее.)
Как можно усилить безопасность? Я бы предложил следующие меры.
- «Вернуть, как было в iOS 10»: до версии iOS 11 никто и никак не мог сбросить пароль на локальную резервную копию. Забыл пароль? Можно сделать бэкап в iCloud и сбросить телефон к заводским настройкам; пароль на резервную копию сбрасывался. А вот просто изъять iPhone, узнать код блокировки и вытащить резервную копию было нельзя: пароль на бэкап можно было установить длинный и очень сложный (всё равно вводить его приходится один раз при установке и второй – при восстановлении устройства), а его взлом – чрезвычайно медленный, порядка сотни попыток в секунду с использованием аппаратного ускорения на GPU.
- Не разрешать добавлять или убирать доверенные номера телефона без подтверждения пароля к iCloud. Сейчас для добавления нового доверенного номера, на который можно получить код 2FA, достаточно просто ввести код блокировки iPhone.
- Запретить сброс пароля к Apple ID/iCloud посредством кода блокировки. Попробуйте как-нибудь сменить или сбросить пароль от учётной записи Google – убедитесь, что систему восстановления доступа можно сделать и удобной, и безопасной.
- И уж тем более не разрешать отключение Find my iPhone после сброса пароля. Здесь опять же отправлю к Google: достаточно сменить (даже не сбросить, просто сменить!) пароль к Google Account, и отключить защиту FRP (Factory Reset Protection) не получится в течение трёх суток: период вполне достаточный, чтобы успеть что-то предпринять по поводу украденного устройства. Особенное значение этот момент приобретает в свете того, что грабители теперь не просто отнимают смартфон у жертвы, а заставляют сообщить им код блокировки, моментально меняя пароль от облака и отвязывая устройство от iCloud.
Можно ли как-то самостоятельно усилить безопасность iOS? Корпоративные пользователи могут воспользоваться системой Apple Configurator, в которой можно установить ограничения на манипуляции с учётной записью. Конечным пользователям имеет смысл устанавливать пароль «Экранного времени». Если не увлекаться самоограничениями, то опыт использования устройства не пострадает, но пароль к резервной копии сбросить уже не удастся: помимо кода блокировки экрана, система запросит ввести ещё и пароль «Экранного времени». Кроме того, можно настроить ограничения таким образом, что без пароля «Экранного времени» не получится сменить пароль от учётной записи или удалить её с iPhone.