Сегодня наткнулся на обсуждение в ru_mac о безопасности данных на iPhone, вызванная возможностью получения доступа ко всем данным на Linux через библиотеку libimobiledevice. Всё было бы не так грустно, если бы в определённых случаях нельзя было бы получить доступ к iPhone, который заблокирован с помощью PIN-кода (PIN на вход в систему, к PIN-коду SIM-карты это не имеет отношения). Описание уязвимости я прочитал 28.05.2010 в статье “iPhone security flaw: Using a PIN won’t help you“, но только сейчас решил её проверить.
Развитие подобных тем очень предсказуемо. Появляется информация об уязвимости, какое-то время все её обсуждают, проверяют, и приходят к выводу, что всё в порядке. Затем через пару недель подключаются журналисты, которые на основании “исследований британских исследователей из британского исследовательского института” подымают панику начиная от газет, заканчивая телевидением. Мда…
Забегая наперёд скажу, что уже 02.06.2010 было установлено:
It appears the issue only applies if you switch the device off during an “unlocked” state (thus you entered the passcode already and see the icons) but not if you power it down while it requests you to enter a passcode making this whole mess less dramatic…
“Определённые случаи”, которые подвержены проблеме, это телефоны, на которых был включен PIN-код, но они после этого не перезагружались (я никогда не перезагружался после этой операции, согласитесь, что это явная проблема в iPhone OS).
Таким образом, если вы не хотите, чтобы к вашим данным могли получить доступ злоумышленники, умыкнувшие iPhone, установить PIN и перезагрузитесь.
Но вернёмся к теме. 21.03.2010 вышел релиз libimobiledevice и ifuse, использование которых сделало возможным работать с iPhone, iPod Touch и затем с iPad (когда он вышел). Продемонстрирую, как их использовать на примере Ubuntu Linux 10.04 и iPhone 3Gs 3.1.3. Я использовал информацию, приведённую в статье “iPhone syncing on Linux“.
Подчёркиваю – все операции проводим на Ubuntu Linux, не на Mac’е.
Ставим нужные библиотеки и утилиты (libgpod4 и gtkpod особо не нужны, поставил за компанию):
$ sudo aptitude install libimobiledevice-utils libimobiledevice-doc $ sudo aptitude install libplist-dev libplist-utils $ sudo aptitude install ifuse $ sudo aptitude install libgpod4 $ sudo aptitude install gtkpod
Мой iPhone перезагружался несколько раз после установки PIN’а, но меня как раз интересовало, можно ли получить доступ при включенном PIN. Я не искал, где записывается информация о “спаривании” телефона с Linux, если найду, то проверю утверждение насчёт подверженности именно неперезагруженых iPhone после установки PIN.
Телефон залочен. Пытаюсь примонтировать его – ответ отрицательный, ни получить информацию, ни примонтировать телефон нельзя:
$ mkdir ~/tmp/iphone $ ideviceinfo $ ifuse ~/tmp/iphone Please disable the password protection on your device and try again. The device does not allow pairing as long as a password has been set. You can enable it again after the connection succeeded.
Ввожу PIN. Теперь всё доступно:
$ ideviceinfo ActivationPublicKey: ... ActivationState: WildcardActivated ActivationStateAcknowledged: true BasebandBootloaderVersion: 6.4_M3S2 BasebandSerialNumber: 0a49987a4a145d057fc4cccc BasebandVersion: 05.12.01 BluetoothAddress: 04:1e:64:cc:cc:cc BuildVersion: 7E18 CPUArchitecture: armv7 ... DeviceClass: iPhone DeviceName: ole_iphone ...
Монтирую:
$ ifuse ~/tmp/iphone $ ls -al tmp/iphone/ drwxr-xr-x 2 ole ole 68 2010-05-26 15:36 ApplicationArchives -rw-r--r-- 1 ole ole 0 2010-03-21 16:06 com.apple.itdbprep.postprocess.lock -rw-r--r-- 1 ole ole 0 2010-03-21 16:06 com.apple.itunes.lock_sync drwxr-xr-x 4 ole ole 204 2010-03-21 16:09 DCIM drwxr-xr-x 2 ole ole 102 2010-06-02 02:06 Downloads drwxr-xr-x 2 ole ole 102 2010-04-05 20:45 iPhoneDrive drwxr-xr-x 7 ole ole 238 2010-03-21 16:19 iTunes_Control drwxr-xr-x 3 ole ole 170 2010-06-03 10:53 Photos drwxr-xr-x 2 ole ole 68 2010-03-21 16:06 Podcasts drwxr-xr-x 2 ole ole 68 2010-06-02 17:03 PublicStaging drwxr-xr-x 2 ole ole 68 2010-03-21 16:06 Purchases drwxr-xr-x 2 ole ole 238 2010-03-28 14:35 Recordings drwxr-xr-x 2 ole ole 136 2010-06-03 10:53 Safari
Можно также получить расширенную информацию по iTunes для синхронизации (меня это слабо интересует). Получаю device_id, генерирую файл:
$ idevice_id -l b17056e12f05292e258f015c47d2b6a543cccccc $ ipod-read-sysinfo-extended b17056e12f05292e258f015c47d2b6a543cccccc ~/tmp/iphone $ ls -al ~/tmp/iphone/iTunes_Control/Device/SysInfoExtended -rw-r--r-- 1 ole ole 24682 2010-06-03 11:58 /home/ole/tmp/iphone/iTunes_Control/Device/SysInfoExtended
Размонтирование:
$ fusermount -u ~/tmp/iphone
Телефон уже “спарован”, поэтому на этой же рабочей станции для получения доступа к содержимому вводить PIN-код уже не нужно.
Но для “закрепления” уверенности я повторил те же самые шаги на другой рабочей станции с Ubuntu 10.04. Всё аналогично – без ввода PIN-кода получить доступ к данным нельзя:
$ ifuse ~/tmp/iphone Please disable the password protection on your device and try again. The device does not allow pairing as long as a password has been set. You can enable it again after the connection succeeded.
Резюмирую – скорее всего ошибка в iPhone OS есть, но если после настройки PIN-кода вы перезагрузите iPhone, то маловероятно, что злоумышленники получат доступ к вашим данным. К моему телефону без знания PIN’а получить доступ мне не удалось.


Pingback: Tweets that mention Возможно ли получить доступ к данным заблокированного PIN-кодом iPhone из Linux? | The Apple Geek -- Topsy.com
Pingback: Сергей
Pingback: Soviet