Безопасность IOS-приложений (часть 11) – анализ сетевого трафика, передаваемого по протоколам HTTP/HTTPS

Безопасность IOS-приложений (часть 11) – анализ сетевого трафика, передаваемого по протоколам HTTP/HTTPS

В предыдущей статье мы исследовали файловую систему операционной системы IOS. В этой статье мы будем анализировать сетевой трафик, генерируемый приложениями устройства на платформе IOS.

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

В предыдущей статье мы исследовали файловую систему операционной системы IOS. В этой статье мы будем анализировать сетевой трафик, генерируемый приложениями устройства на платформе IOS. Анализ сетевого трафика приложений во многих случаях может быть полезен, поскольку можно выяснить схему управления сессиями пользователей, схему взаимодействия с пользователями, с которыми осуществляется соединение и внутреннее устройство приложения. Также мы рассмотрим способы анализа сетевого трафика, передаваемого через SSL.

Существует два метода прослушивания трафика в сети: активный и пассивный. Если вы хотите проанализировать сетевой трафик конкретного устройства дистанционно, обратите внимание на утилиту wireshark. Откройте Wireshark и начните прослушивать трафик, указав какой-либо фильтр (например, ip-адрес == 192.168.1.2), чтобы увидеть трафик, посылаемый или получаемый только вашим устройством, где установлена операционная система IOS. Возможно утеря некоторых пакетов, в случае, если у вас не совсем хорошая беспроводная карта.

Если вы хотите анализировать трафик, проходящий через SSL, то, как вариант, можете использовать комбинацию утилит Arpspoof и SSLStrip. Однако поскольку нас интересует анализ сетевого трафика для конкретного приложения, мы будем использовать другой подход. Внесу небольшое уточнение. В этой статье основное внимание будет уделено анализу сетевого трафика, а не его захват (hijacking). Мы будем анализировать как Wi-Fi трафик, так и трафик мобильного устройства, и поскольку нас интересует только анализ трафика для конкретного приложения, не столько важен выбор средства того, как этой сделать.

Использование TCPDump

Использование TCPDump - один из наиболее распространенных способов перехвата трафика с устройства. Для начала необходимо установить эту утилиту на ваше устройство.

Рисунок 1: Процедура установки tcpdump на устройство

Теперь начнем перехватывать данные с конкретного интерфейса и записывать их в файл.

Рисунок 2: Команда для перехвата трафика с интерфейса en0 с последующей записью данных в файл capture.pcap

Для перехвата данных с мобильного устройства просто поменяйте имя интерфейса, указав IP-адрес, используемый при соединении с мобильным устройством.

Чтобы исследовать данные, записанные в файл, вам необходимо скопировать файл на компьютер и проанализировать его при помощи Wireshark. Однако, проделав эти операции, вы возможно заметили, что весь этот процесс скучен и утомителен. Для упрощения процесса можно воспользоваться средством Pipes. Информация, получаемая при помощи tcpdump, слишком низкого уровня, которая во многих случаях нам малоинтересна, поскольку мы анализируем данные на уровне приложения. Более удачные альтернативы: Burpsuite и Snoop-it.

Использование Snoop-it

Рассмотрим анализ сетевого трафика при помощи Snoop-it. Перед этим рекомендую вам ознакомиться с девятой статьей из этой серии, где я рассказывал об этом инструменте. Для того чтобы увидеть сетевую активность откройте приложение в Snoop-it и зайдите в раздел Network (слева). На рисунке ниже показана сетевая активность приложения Snapchat.

Рисунок 3: Сетевая активность приложения Snapchat

Если мы кликнем на конкретный сетевой запрос, то увидим содержимое этого запроса (строку запроса, тело и т. д.).

Рисунок 4: Пример содержимого конкретного сетевого запроса

Использование Burpsuite через HTTP

Среди всех утилит для анализа трафика выделяется Burpsuite, которая позволяет намного лучше отображать сетевые запросы/ответы. Burpsuite можно загрузить с официального веб-сайта. Бесплатной версии будет достаточно для решения задач, предлагаемых в этой статье. Если вы не знакомы с Burpsuite, рекомендую ознакомиться с моей статьей. Наша главная задача – использовать Burpsuite в качестве прокси-сервера и маршрутизация трафика.

Откройте Burpsuite, зайдите в Proxy -> Options.

Рисунок 5: Список прокси-серверов

Кликните на прокси-сервер, отмеченный галочкой, и нажмите на кнопку Edit. У опции Bind to Address выставьте значение All Interfaces.

Рисунок 6: Параметры прокси-сервера

Здесь мы также можем изменить порт прокси-сервера или добавить новый прокси-сервер. В Burp также можно привязать сертификат для сайтов, которые работают через протокол SSL. По умолчанию во время установки создается самоподписанный certificate authority сертификат (CA-сертификат). В настройках прокси-сервера выбрана опция Generate CA-signed per-host certificates, и во время соединения с хостом будет создан сертификат, подписанный CA-сертификатом, который создан во время установки Burp.

Рисунок 7: Установка параметров сертификата

Во время настройки прокси-сервера появится окно с предупреждением. Кликните на Yes. Мы выбираем привязку ко всем интерфейсам, поскольку хотим, чтобы iPhone использовал наш компьютер в качестве прокси, и привязки только к локальному интерфейсу будет недостаточно.

Рисунок 8: Окно с предупреждением

Теперь зайдите в Proxy -> Intercept и убедитесь в том, выставлено Intercept is off, поскольку, скорее, всего у вас не будет необходимости форвардинга каждого пакета, проходящего через прокси.

Рисунок 9: Установка опции Intercept is off

Теперь необходимо настроить устройство для маршрутизации трафика через ваш прокси-сервер. Зайдите в Настройки (Settings), кликните на Wifi и выберите сеть, к которой вы подсоединены, и в настройках сети прокрутите вниз, где вы увидите настройки прокси-сервера. Установите IP-адрес компьютера, где запущен Burpsuite, и номер порта.

Рисунок 10: Установка параметров прокси-сервера на устройстве

Когда прокси-сервер вместе с мобильным устройством настроены, откройте любое приложение, которое не использует SSL (о SSL мы поговорим далее в этой статье), и попробуйте сделать что-нибудь, что спровоцирует сетевую активность. Затем вы увидите, что запросы идут через Burpsuite. На рисунке ниже показан трафик приложения NASA TV.

Рисунок 11: Трафик, проходящий через прокси-сервер

Примечательной особенностью Burpsuite является то, что мы можем видеть пакеты в необработанном (raw) и шестнадцатеричном формате. Также мы можем просматривать параметры и заголовки каждого запроса и ответа на запрос.

Рисунок 12: Параметры запроса

Также мы можем увидеть ответ, соответствующий конкретному запросу.

Рисунок 13: Ответ, соответствующий конкретному запросу

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

Использование Burpsuite через HTTPS

Техники анализа сетевого трафика, упомянутые выше, не будут работать в случае, если приложение использует SSL. Некоторые приложение спроектированы таким образом, что разрешаются только SSL-соединения. К примеру, если вы захотите использовать Snapchat через ваш прокси-сервер, то такая попытка закончится неудачей. Однако в некоторых приложениях возникнет окно с предупреждением о подтверждении или отмене соединения. На рисунке ниже показано окно с предупреждением, которое возникает при попытке запуска браузера Safari через прокси-сервер.

Рисунок 14: Окно с предупреждением, возникающее при попытке использовать Safari через прокси-сервер

Если кликнуть на кнопку Continue, то вы сможете увидеть трафик этого приложения. Обратите внимание, что при попытке зайти на новый веб-сайт предупреждение возникнет вновь, поскольку Burpsuite генерирует поддельный SSL-сертификат для каждого хоста.

Рисунок 15: Трафик, генерируемый Safari и проходящий через прокси-сервер

Каждый раз, когда мы соединяемся с веб-сайтом по протоколу HTTPS через Burpsuite, Burp генерирует SSL сертификат для каждого хоста, подписываемый CA-сертификатом. Для того чтобы при посещении веб-сайтов предупреждения не возникали, мы должны утвердить CA-сертификат на устройстве как достоверный корневой сертификат. Как только на устройстве будет достоверный корневой сертификат, при помощи него можно будет подписывать все остальные сертификаты и, соответственно, расценивать их как валидные. Обратите внимание, что секретный ключ для корневого сертификата хранится на вашем компьютере, и Burp может расшифровывать данные при помощи секретного ключа при прохождении трафика через прокси-сервер. Корневой CA-сертификат создается один раз во время установки Burp.

Перед установкой корневого сертификата в системе, сконфигурируйте браузер для работы через прокси-сервер Burpsuite.

Рисунок 16: Настройки браузера для работы через прокси-сервер Burpsuite

Теперь зайдите на любой сайт, который работает через SSL. Вы увидите следующее предупреждение.

Рисунок 17: Окно с предупреждением, возникающее при посещении сайта gmail.com

Сейчас нам необходимо экспортировать корневой сертификат, который используется для подписи остальных сертификатов. Для домена gmail.com нет возможности экспортировать корневой CA-сертификат, поскольку мы не можем добавить исключение для домена gmail. Каждый домен может использовать подобную политику. Однако домен facebook позволяет нам добавить исключение. Зайдите на сайт facebook.com, используя Firefox. Появится окно с предупреждением. Кликните на кнопку Add an Exception.

Рисунок 18: Окно с предупреждением, которое появляется при посещении сайта facebook.com

Затем кликните на View.

Рисунок 19: Окно, появляющееся при нажатии на кнопку Add an Exception

Зайдите во вкладку Details и выберите самый верхний сертификат дерева. Это и есть корневой CA-сертификат. Затем кликните на Export и сохраните файл с расширением .crt.

Рисунок 20: Выбор и экспорт корневого сертификата

Та же самая последовательность действия описана в документации для Burp. Ниже приводится выдержка из этой документации (раздел IPhone).

IPhone

Для установки CA-сертификата, созданного Burp, на iPhone или любое другое устройство с платформой IOS выполните следующие шаги.

  1. Для начала вам необходимо экспортировать CA-сертификат, созданный Burp, используя браузер (Internet Explorer или Firefox). Выполните шаги по установке CA-сертификата в вашем браузере, а затем посетите любой сайт, который работает через HTTPS. Кликните на замок /SSl-иконку для просмотра параметров SSL-сертификата. Затем выберите корневой сертификат в дереве (PotrSwigger CA) и при просмотре детальной информации по этому сертификату кликните на кнопку Export. Сохраните сертификат на вашем компьютере с расширением .crt.
  2. Скопируйте сохраненный сертификат на iPhone. Самый простой способ сделать это – послать электронное письмо на тот аккаунт, на который настроен ваш IPhone. В письме приложите сохраненный сертификат.
  3. Примите электронное письмо на IPhone и кликните на вложение.
  4. В открывшемся диалоговом окне кликните на кнопку Install и далее пройдите все шаги в мастере по установке сертификата (если необходимо введите PIN-номер).

Вы можете загрузить CA-сертификат, созданный Burp, напрямую на устройство, посетив адрес http://burp/cert, используя ваше устройство, сконфигурированное для использования Burp в качестве прокси-сервера.

Следуя указаниям вышеупомянутой документации, скопируйте файл на устройство. Используя методы социальной инженерии, злоумышленник может установить этот сертификат на устройстве жертвы без ее ведома о возможных последствиях такой установки. Ниже показано окно с предупреждением, возникающее при открытии сертификата на устройстве. Кликните на Install.

Рисунок 21: Окно с предупреждением, возникающее при открытии файла сертификата на устройстве

Возникает еще одно окно с предупреждением. Вновь нажмите Install.

Рисунок 22: Еще одно окно с предупреждением

По завершении установки нажмите Done.

Рисунок 23: Завершение установки сертификата

Теперь, когда у нас есть достоверный корневой сертификат, каждый сертификат, подписанный корневым сертификатом, будет расцениваться как достоверный, и приложения будут передавать информацию без каких-либо проволочек. Если вы откроете приложение Snapchat, которое в прошлый раз не позволяло нам передавать данные (когда использовался поддельный сертификат) теперь работает на ура, и теперь этот трафик будет перехвачен Burpsuite. Как видно из рисунка ниже, в запросе мы видим как имя пользователя и пароль, передаваемые приложением, так и остальные api-вызовы.

Рисунок 24: Запросы, генерируемый приложением Snapchat, который перехвачен Burpsuite

Заключение

В этой статье мы рассмотрели различные способы анализа трафика, который генерируется устройством на платформе IOS. Зная о заголовках и параметрах запросов и ответов можно значительно продвинуться в изучении внутреннего устройства приложения.

Ссылки

Ваш провайдер знает о вас больше, чем ваша девушка?

Присоединяйтесь и узнайте, как это остановить!