16.02.2014

Безопасность IOS-приложений (часть 14) – сбор информации при помощи утилит для защиты данных от компании Sogeti

image

В предыдущей статье мы рассмотрели подключение устройства при помощи собственного ram-диска, используя утилиты для защиты данных от компании Sogeti. В этой статье мы научимся использовать некоторые из этих утилит для получения информации из keychain, выгрузки всей файловой системы, а также бутфорс код-пароля (passcode).

Автор: Пратик Джианчандани (Prateek Gianchandani)

В предыдущей статье мы рассмотрели подключение устройства при помощи собственного ram-диска, используя утилиты для защиты данных от компании Sogeti. В этой статье мы научимся использовать некоторые из этих утилит для получения информации из keychain, выгрузки всей файловой системы, а также бутфорс код-пароля (passcode).

В прошлый раз мы успешно установили соединение с устройством при помощи скрипта usbmux, подключились к устройству, используя ssh, и смонтировали разделы. На рисунке ниже показано содержимое разделов.

Рисунок 1: Содержимое разделов подключенного устройства

Теперь мы можем свободно перемещаться внутри разделов и делать все, что мы захотим. Как упоминалось в предыдущей статье, в комплекте с утилитами от компании Sogeti идут несколько полезных скриптов.

Рисунок 2: Перечень скриптов

Для начала воспользуемся скриптом bruteforce для подбора пароля. На моем ipod установлен пароль «1234». Как упоминалось в предыдущих статьях, этим же паролем защищено хранилище keychain. Следовательно, если мы хотим получить информацию из keychain, то должны подобрать пароль. После запуска скрипта начинается подбор пароля.

Рисунок 3: Скрипт подбирает пароль

Через некоторое время пароль успешно подобран.

Рисунок 4: Результат работы скрипта bruteforce

После успешного подбора пароля результаты записываются в plist-файл, который необходим другим python-скриптам (например, для выгрузки информации из keychain). Существует другой python-скрипт для подбора пароля. Скрипт хранится в директории python_scripts, которая находится внутри репозитория утилит для защиты данных.

Рисунок 5: Процесс подбора пароля при помощи python-скрипта

Как только пароль подобран, скрипт создает папку с именем UDID вашего устройства, в которой сохраняет plist-файл, содержащий пароль, и другие полученные ключи. Впоследствии мы можете использовать этот файл для осуществления других манипуляций (например, для дешифровки хранилища keychain).

Рисунок 6: Результаты работы python-скрипта

На рисунке ниже показано содержимое созданного plist-файла.

Рисунок 7: Содержимое plist-файла, созданного python-скриптом

Само собой, если на устройстве используется буквенно-цифровой пароль, потребуется намного больше времени для его подбора и, соответственно, расшифровки keychain. Хотя большинство пользователей не сильно заботятся о своей безопасности и используют пароль из четырех цифр.

Но вернемся к нашим скриптам. Для получения полной информации об устройстве (серийный номер, mac-адрес и т. д.) воспользуемся скриптом device_infos.

Рисунок 8: Полная информация об устройстве, полученная при помощи скрипта device_infos

Еще один python-скрипт (один из важнейших), который мы будем использовать, - ios_examiner. Хотя во время запуска я получил ошибку, связанную со Unicode-строками, однако затем модифицировал скрипт, воспользовавшись помощью по этой ссылке.

Запустим скрипт ios_examiner без каких-либо ключей. Перед вами появится интерпретатор, и теперь вы сможете вводить команды.

Рисунок 9: Командный интерпретатор скрипта ios_examiner

Для получения списка всех команд введите команду help.

Рисунок 10: Полный список команд интерпретатора

Например, если ввести команду keychain, на экране появятся некоторые дешифрованные элементы, которые находятся в хранилище.

Рисунок 11: Информация, выгруженная из keychain

На рисунке выше в некоторых строках показаны знаки вопроса, которые означают, что не все элементы расшифрованы. У нерасшифрованных элементов более высокий уровень защиты (к примеру, AfterFirstUnlock), и чтобы их расшифровать, необходим код-пароль. Однако ранее мы уже подобрали пароль, верно? Все так, однако, при этом использовался другой python-скрипт и plist-файл, содержащий подобранный пароль, находится в другом месте. Самый простой способ расшифровки данных – ввести команду bruteforce и указать подобранный пароль для того, чтобы вновь созданный plist-файл сохранился в нужном месте. После этого вы вновь можете выполнить команду keychain.

Рисунок 12: Выполнение команды bruteforce и ввод пароля

При помощи команды protected_files вы можете получить список файлов с атрибутами защиты, которые не равны NSProtectionNone.

Рисунок 13: Результат выполнения команды protected_files

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

Рисунок 14: Сохранение раздела в .dmg файл

Вы также можете сохранить раздел в .dmg файл при помощи shell-скрипта. Итоговый файл сохранится в папке, имя которой соответствует UDID вашего устройства.

Рисунок 15: Сохранение раздела в .dmg файл при помощи shell-скрипта

Как только раздел полностью сохранился в .dmg файл, вам достаточно лишь кликнуть на этот файл для монтирования раздела. Теперь вы сможете исследовать файловую систему.

Рисунок 16: Содержимое файла .dmg

Сейчас можно перезагрузить устройство при помощи команды reboot (только отключите устройство от компьютера во время этих манипуляций).

Рисунок 17: Выполнение команды reboot для перезагрузки устройства

Заключение

В этой статье мы рассмотрели способы получения различной информации (данные из keychain, защищенные файлы и т. д.) при помощи утилит от компании Sogeti. Мы также научились сохранять целые разделы для их последующего анализа. Технику, описанную из этой статье, можно применять на любом неджейлбрейковом устройстве на базе чипа A4, используя bootrom-эксплоит. После всех манипуляций, перезагрузив устройство, можно вернуть его в обычное состояние и, таким образом, скрыть следы своей деятельности.

Ссылки

· Iphone-dataprotection – IOS Forensics tools
https://code.google.com/p/iphone-dataprotection/

или введите имя

CAPTCHA
Toshik
16-02-2014 11:47:59
В заголовке и тексте исправьте, не бутфорс код-пароля, а брутфорс.
0 |