Связка ключей – один из основных компонентов безопасности macOS, iOS и её производных iPadOS, watchOS и tvOS. В экосистеме Apple Связка ключей (Keychain) выполняет роль безопасного хранилища для логинов и паролей пользователя, номеров кредитных карт, ключей шифрования и прочей информации, которая должна храниться с максимальным уровнем безопасности. В Связке ключей хранятся и маркеры аутентификации, позволяющие как системным, так и сторонним приложениям авторизоваться для доступа к учётным записям.
Среди доступных в Связке ключей записей – пароли к веб-сайтам и онлайновым сервисам, различным учётным записям (включая учётную запись Apple ID), пароли к почтовым клиентам и многое другое. Часть данных (например, пароли Wi-Fi) доступна любому пользователю и любому приложению системы, в то время как другие пароли доступны только тем приложениям, в которых они были созданы.
В iOS 12 появился механизм, позволяющий разработчикам использовать автоматическое заполнение паролей. Этот механизм позволяет пользователю использовать пароли из Safari в том числе и для авторизации в сторонних приложениях. Важная особенность данного механизма в том, что пароли не доступны сторонним приложениям напрямую. Пользователю необходимо самостоятельно выбрать нужную запись в системном диалоге, и система самостоятельно заполнит поля ввода в приложении выбранными данными.
Если удастся получить доступ к Связке ключей пользователя, то можно получить доступ к соответствующим ресурсам и учётным записям, профилям социальных сетей и истории переписки в программах мгновенного обмена сообщениями. В этой статье мы расскажем обо всех известных нам способах узнать содержимое Связки ключей.
Самый простой способ получить доступ к содержимому Связки ключей – воспользоваться приложением настроек iOS: [Settings] | [Passwords & Accounts] | [Website & App Passwords]
В этом режиме будет доступен просмотр записей, но не будет доступен экспорт: для экспорта паролей вам придётся или последовательно копировать каждую запись в буфер обмена, или так же последовательно отправлять их через AirDrop. Возможности выбрать, скопировать или отправить более одного пароля за раз не предусмотрено.
Самый простой способ одновременно и самый ограниченный: через пользовательский интерфейс доступно меньше всего данных, а доступ к ним защищён кодом блокировки экрана либо биометрическим датчиком (Touch ID или Face ID), даже если устройство уже в ваших руках, а его экран разблокирован.
Если на устройстве установлено приложение Facebook или Twitter, попробуйте найти соответствующие пароли в Связке ключей. Вы сможете их обнаружить в том и только в том случае, если пользователь вводил эти пароли в браузер Safari (например, при авторизации через Single sign-on). Если же пользователь входил в Facebook или Twitter, пользуясь только официальными приложениями, этих паролей в Связке ключей не будет. Вместо паролей в Связке ключей будут храниться двоичные маркеры аутентификации, которые не доступны через интерфейс Настроек.
Данные кредитных карт сохраняются в другом месте настроек:
[Settings] | [Safari] | [AutoFill] | [Saved Credit Cards]
Пароли Wi-Fi также недоступны в iOS, но в macOS их можно просмотреть.
Уровень сложности: низкий
Плюсы: не нужно дополнительное программное обеспечение
Минусы: нужен доступ к физическому устройству; экран должен быть разблокирован; для доступа к Связке ключей потребуется дополнительная авторизация кодом блокировки экрана или через биометрический датчик; отсутствует экспорт; количество записей ограничено; нет доступа к маркерам аутентификации, паролям к учётной записи Apple, паролям Wi-Fi, паролю к резервной копии устройства.
Если у пользователя есть компьютер Mac, а пароли из Связки ключей на iPhone синхронизируются через iCloud (или же цель состоит в том, чтобы извлечь пароли именно с компьютера), то вы сможете воспользоваться системной утилитой Keychain Access. Системная утилита также открывает пароли по одному; более того, вам придётся вводить системный пароль от учётной записи либо пароль от Связки ключей каждый раз (на новых Macbook с Touch ID достаточно приложить палец пользователя, но делать это придётся для открытия каждой записи).
Уровень сложности: лёгкий
Плюсы: не нужно дополнительное программное обеспечение; доступны все записи (больше, чем в настройках iOS)
Минусы: если требуется доступ к паролям с iPhone, то оба устройства должны участвовать в синхронизации Связки ключей; последовательный доступ к паролям; для доступа к каждой записи потребуется или вводить системный пароль (или пароль от Связки ключей), или прикладывать палец пользователя
Дополнительная информация: пароль от Связки ключей может не совпадать с системным паролем. В таком случае вам придётся узнать и этот пароль.
Альтернативой последовательному просмотру записей является полное извлечение и расшифровка всей Связки ключей целиком. Из компьютера с macOS (или образа диска) необходимо скопировать несколько файлов (login.keychain, System.keychain и SystemKey), которые нужно открыть в приложении Elcomsoft Phone Digger. Для расшифровки записей потребуется указать системный пароль (пароль пользователя, из учётной записи которого была извлечена Связка ключей). В некоторых случаях Связка ключей может быть защищена отдельным паролем, не совпадающим с системным. В этом случае вам потребуется именно пароль от Связки ключей.
Уровень сложности: средний
Плюсы: извлекаются все данные как из пользовательской, так и системной Связок ключей.
Минусы: нужен доступ к компьютеру или образу диска macOS; если нужно извлечь пароли iPhone, то облачная синхронизация должна быть включена на обоих устройствах.
Дополнительная информация: нужен системный пароль или пароль от Связки ключей.
Если в вашем распоряжении есть готовая резервная копия в формате iTunes, которая защищена известным вам паролем либо сам iPhone, код блокировки которого вам известен, то вы сможете извлечь содержимое Связки ключей из резервной копии.
Обратите внимание: расшифровать Связку ключей получится в том и только в том случае, если будет создана (или уже имеется) резервная копия, защищённая известным вам паролем. Если пароль неизвестен, то открыть резервную копию не удастся. Если же пароль не установлен вовсе, то содержимое Связки ключей будет зашифровано аппаратным ключом, взломать который не представляется возможным.
Для расшифровки Связки ключей откройте резервную копию в приложении Elcomsoft Phone Breaker и используйте функцию Explore keychain. Вам потребуется ввести пароль от резервной копии.
Обратите внимание: многие записи расшифровать не удастся. Это связано с тем, что некоторые записи хранятся с повышенным классом защиты; такие записи могут быть расшифрованы только непосредственно на том физическом устройстве, на котором были созданы (используется аппаратный ключ).
Если пароль от резервной копии неизвестен, взломать его будет непросто. В относительно современных версиях iOS (включая все версии iOS 10, за исключением первой сборки) шифрование резервных копий исключительно стойкое. Даже с аппаратным ускорением скорость перебора составляет порядка сотни паролей в секунду. Неизвестный пароль можно сбросить непосредственно на самом iPhone, если вам известен код блокировки экрана (функция Reset All Settings).
Уровень сложности: средний
Плюсы: извлекается больше паролей, чем при просмотре с устройства; доступен экспорт
Минусы: извлекаются не все записи; если пароль от резервной копии неизвестен, взломать его будет сложно
Дополнительная информация: для устройств с iOS 11, 12 и 13 пароль на резервную копию можно сбросить (потребуется код блокировки экрана)
Этот метод позволяет извлечь из iPhone и расшифровать абсолютно все записи Связки ключей, включая те, которые защищены по высшему классу защиты. В то же время использование джейлбрейка – достаточно сложная процедура. На момент написания статьи джейлбрейк доступен для большинства версий iOS 10, 11 и 12. Для ряда устройств (вплоть до поколения iPhone 8/8 Plus/iPhone X) джейлбрейк доступен независимо от версии iOS.
Для извлечения и расшифровки Связки ключей вам потребуется Elcomsoft iOS Forensic Toolkit. Для извлечения используйте команду K (Keychain). Обратите внимание: экран устройства должен оставаться включённым в течение всего времени работы утилиты.
Просмотреть записи можно в приложении Elcomsoft Phone Breaker.
Уровень сложности: высокий
Плюсы: извлекаются и расшифровываются абсолютно все записи
Минусы: высокая сложность; джейлбрейк доступен не для всех комбинаций аппаратного обеспечения и версий iOS; использование джейлбрейка связана с дополнительными рисками и последствиями
Пользователи могут использовать облачную синхронизацию через iCloud для хранения и синхронизации записей Связки ключей между устройствами, привязанными к одной учётной записи. Такая синхронизация открывает возможность извлечения паролей Связки ключей непосредственно из облака iCloud без доступа к физическому устройству. В то же время содержимое Облачной связки ключей надёжно зашифровано; для её расшифровки потребуются не только стандартные логин и пароль от Apple ID пользователя, но и доступ ко второму фактору аутентификации, а также код блокировки экрана (или системный пароль) от одного из устройств пользователя, участвующего в синхронизации Связки ключей.
Для извлечения Облачной связки ключей из iCloud воспользуйтесь Elcomsoft Phone Breaker. Просмотреть и сохранить пароли можно в этом же приложении. Обратите внимание: количество паролей, доступных в облаке и при анализе локальной резервной копии, будет различным. Множества паролей будут пересекаться, но некоторые из них будут доступны только в облаке или только в локальной резервной копии.
Уровень сложности: средний
Плюсы: не нужен доступ к устройству; доступ к паролям со всех синхронизированных устройств пользователя
Минусы: необходимы логин и пароль от iCloud, доступ ко второму фактору аутентификации и код блокировки экрана или системный пароль от одного из устройств, уже участвующих в синхронизации; доступны не все записи
Дополнительная информация: с теми же исходными данными вам будут доступны облачные сообщения (включая iMessage), пароль от Экранного времени и данные Здоровья.
Содержимое Связки ключей может принести много пользы. Список паролей из Связки ключей можно использовать как для доступа к учётным записям пользователя, так и для формирования словаря, который поможет восстановить другие пароли пользователя – например, те, которыми зашифрованы документы, архивы и криптоконтейнеры.
В то же время, для защиты Связки ключей Apple использует все возможные способы. Получить доступ к паролям может оказаться непросто: потребуются как специфические инструменты, так и данные для преодоления защиты.