25 апреля, 2024

Charles Proxy — как увидеть исходящие и входящие данные мобильных приложений

Содержание:

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

С установленным прокси-сервером вы сможете анализировать все, что отправляют и принимают приложения для Android или iOS. Вы сможете даже мониторить любой зашифрованный трафик, отправляемый по HTTPS. Веб-прокси действует практически так же, как «Человек-по-Середине», позволяя вам видеть все, что происходит. С его помощью вы получите представление о том, какие приложения следует удалить.

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

Шаг 1. Установите Charles Proxy на ваш компьютер

Наш любимый инструмент для анализа HTTP-трафика — это Charles Proxy. Он доступен для всех современных операционных систем (Linux, MacOS, Windows). Бесплатную 30-дневную пробную версию вы можете скачать на сайте charlesproxy.com/download. По завершении пробного периода вам предложат купить лицензию, стоимость которой составляет 50 долларов.

Charles — это чрезвычайно мощный инструмент, не только для анализа трафика приложений, но и для любых видов анализа и отладки веб-приложений. Поэтому если вы занимаетесь мобильной разработкой, то это будет хорошая инвестиция. Если вы просто хотите посмотреть, что происходит с приложениями на вашем смартфоне или планшете, то бесплатной пробной версии будет достаточно. Только имейте в виду, что бесплатная пробная версия ограничена 30-минутными сеансами, поэтому вам нужно будет закрывать и перезапускать Charles каждые 30 минут.

После загрузки файла MSI, DMG или TAR.GZ откройте его и следуйте инструкциям по установке. Charles устанавливается точно так же, как и любое другое приложение, которое вы устанавливаете из сжатого файла.

Шаг 2. Откройте Charles Proxy для начала сессии

После установки Charles откройте его. Если вы используете macOS (ранее Mac OS X), то для правильной работы этого приложения вам необходимо предоставить ему разрешение изменения системных сетевых настроек. Вы можете сделать это позже, но в момент установки сделать это проще — просто нажмите на кнопку «Предоставить привилегии». Вам нужно будет ввести для этого пароль.

В системе Windows вам необходимо «Разрешить доступ» в появившемся предупреждении системы безопасности Windows. Просто следуйте инструкциям, показанным ниже (оставьте опцию «Private» выбранной, а «Public» соответственно нет). Вам может потребоваться ввести пароль администратора для сохранения ваших настроек.

Когда Charles запустится, он сразу же начнет запись сессии. Сначала вы увидите трафик вашей локальной машины. Вы можете развернуть имя хоста, чтобы просмотреть подробные сведения о каждом HTTP-запросе. Там есть различные панели для проверки заголовков, файлов cookie, JSON и данных формы.

Вы можете заметить, что информация недоступна для хостов с использованием HTTPS. Это связано с тем, что HTTPS-трафик использует криптографический протокол под названием Transport Layer Security для шифрования данных между серверами и пользователями. К счастью, Charles предоставляет нам возможность устанавливать и доверять корневому SSL-сертификату, уникальному для каждой установки. Он позволит нам видеть HTTPS-данные в виде простого текста.

Читать также:  12 лучших Android-виджетов для планирования и управления задачами

Шаг 3. Найдите IP-адрес и номер порта вашего компьютера

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

Для наших целей мы хотим проверить трафик, поступающий со смартфона, поэтому мы начнем с настройки iPhone, чтобы он использовал наш компьютер с запущенным Charles Proxy, как прокси-сервер.

Сначала на компьютере, на котором работает Charles, выберите «Справка» в меню, затем меню «SSL Proxying» и выберите «Install Charles Root Certificate on a Mobile Device or Remote Browser».

Вы увидите диалоговое окно, подобное указанному на скриншоте, которое предоставляет IP-адрес и порт для машины, на которой работает Charles:

Шаг 4. Настройте ваш телефон для использования Charles Proxy

На iPhone перейдите к меню «Wi-Fi» в приложении «Settings», затем убедитесь, что он находится в той же сети, что и Charles. Нажмите значок информации рядом с подключенной сетью, а затем прокрутитесь вниз и выберите «Configure Proxy». Выберите строку «Manual» и введите номера сервера и порта из последнего диалогового окна, которое выдал вам Charles. Нажмите «Сохранить», чтобы закончить.

Для телефонов на Android процесс немного отличается в зависимости от версии OEM и программного обеспечения. Как правило, вы открываете настройки Wi-Fi, нажимаете и держите меню общей сети. Затем нужно выбрать что-то вроде «Управление сетевыми настройками» или «Изменить сеть» или значок карандаша. Найдите отображение дополнительных параметров, а затем откройте настройки «Прокси» и вручную введите номера серверов и портов, которые Charles дал вам раньше. Не забудьте нажать на «Сохранить», чтобы закончить.


Теперь ваш смартфон настроен на маршрутизацию HTTP-трафика через Charles Proxy.

Шаг 5. Разрешите соединения к Чарльзу

Когда ваш смартфон будет подключен к Charles, то вы на вашем компьютере увидите диалоговое окно, предупреждающее вас о том, что Charles получил входящее соединение. Выберите «Разрешить». Если вы вдруг случайно запретите входящее соединение, то для того, чтобы еще раз получить это приглашение, вам придется перезапустить Charles.

Шаг 6. Установите на ваш телефон корневой сертификат

С помощью веб-браузера на вашем смартфоне перейдите на chls.pro/ssl.

На iPhone вы сразу же получите запрос с просьбой разрешить сайту показывать вам профиль конфигурации. Нажмите «Разрешить». После этого вы попадете на экран Install Profile для Charles Proxy CA. Нажмите «Установить», вас перенаправят на страницу предупреждения. Нажмите «Установить» еще раз, и еще раз на всплывающем окне. Наконец, нажмите «Готово», чтобы закончить.

Если вы находитесь на iOS 10 или выше, то вам также придется посетить «Общие» в приложении «Settings». Выберите меню «About», а затем «Certificate Trust Settings» ниже. В разделе «Enable Full Trust for Root Certificates» нажмите на слайдер, расположенный рядом с CA Charles.



На Android-устройстве файл попытается немедленно загрузиться на ваше устройство. Если этого не произошло, то вы можете получить приглашение для его загрузки и тогда вам нужно нажать на «Скачать». После загрузки введите ваш PIN-код или отпечаток пальца. После этого откроется окно сертификата, в котором вам нужно назвать сертификат чем-то вроде «Charles Proxy CA». Нажмите «ОК», когда закончите.

Читать также:  Как поменять назначение клавиш на клавиатуре

Обратите внимание, что для установки сертификата из Charles Proxy вам необходимо выключить блокировщики рекламы, работающие на основе DNS. Кроме того, в дальнейшем при анализе данных включение вашего блокировщика рекламы будет только маскировать трафик, поэтому лучше оставить его выключенным, пока вы используете Charles.

 

Теперь, когда у вас установлен сертификат, вы сможете в Charles увидеть зашифрованные HTTPS-данные в виде простого текста, а не только данные HTTP, просматриваемые без сертификата.

Шаг 7. Включите проксирование SSL для всех хостов

Мы пока не закончили. Еще один шаг перед просмотром всех данных, поступающих из приложений. Вам нужно включить в Charles SSL-проксирование для всех хостов. Перейдите в меню «Proxy», затем выберите «SSL Proxying Settings».

Когда параметры появятся, нажмите кнопку «Add» на вкладке «SSL Proxying». Когда появится окно «Edit Location», просто нажмите «ОК» или вручную введите * (одну звездочку) в поле «Host» и нажмите «ОК». Это подстановочный знак, который означает, что настройки применяются ко всем хостам. Если оставить поле Host пустым, то поле само создаст подстановочный знак.

Для сохранения изменений в окне настроек SSL Proxying обязательно нажмите «ОК». И теперь, когда вы все настроили, откройте приложение на вашем смартфоне и посмотрите, какие данные он отправляет!

Шаг 8. Изолируйте трафик телефона от трафика других устройств

В зависимости от того, какой веб-трафик генерируется на машине, на которой работает Charles, трудно будет сказать, какие запросы поступают от вашего телефона. Charles автоматически изменит ваши сетевые настройки в целях маршрутизации HTTP-трафика на вашем компьютере через прокси-сервер, но довольно просто изменить это поведение вручную так, чтобы можно было видеть только трафик с вашего телефона.

В macOS вы можете изменить это в «System Preferences». После этого перейдите в раздел «Network», затем «Advanced», а на вкладке «Proxies» снимите флажки с «Web Proxy (HTTP)» и «Secure Web Proxy (HTTPS)». Charles автоматически будет изменять эти настройки всякий раз, при своем запуске, поэтому вам нужно будет повторять эти шаги каждый раз, когда вам нужно будет изолировать трафик телефона.

В настройке Windows вам необходимо открыть «Settings». Затем выберите «Network & Internet», затем «Proxy». Находясь там же, прокрутитесь вниз до Manual proxy setup, затем переключите слайдер «Use a proxy server». В отличие от Mac, вам не придется делать это каждый раз после перезапуска Charles.

 

Шаг 9. Проанализируйте результаты

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

Раскрыв любой из них, можно просмотреть его содержание в панели «Contents» справа. Там вы можете точно узнать, какую информацию эти приложения отправляют производителям и третьим лицам. Мы распознали в одной из записей Strava широко используемую платформу аналитики и решил проверить ее.

Читать также:  Хакеры успешно запустили программу-вымогателя под видом Pornhub

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

Следите за запросами к известным приложениям от аналитических компаний. Некоторые из наиболее популярных — это Segment, Fabric, Flurry и Firebase. Провайдеры рекламы также получают довольно большой объем отслеживаемых данных и это тоже повод посмотреть на содержание этих данных. Определить их можно по имени хоста.

По большей части, данные, отправляемые и принимаемые приложениями, обычно безобидны. Например, все, что идет на адреса вроде api.appname.com, как правило, является функциональными данными, необходимыми для работы приложения. Рассмотрение этих запросов может дать вам понимание того, как работает приложение. И это хорошая отправная точка. Она позволяет вам убедиться, что никто не «звонит домой», передавая данные, которыми вы не хотите делиться.

Не удается заставить некоторые приложения работать на вашем телефоне?

Многие приложения реализуют привязку сертификата SSL, что означает, что они специально проверяют корневой сертификат и не будут восприимчивы к атакам типа «Человек-по-Середине». В нашем случае сертификаты проверяет настоящий API Strava, но третьи лица, получающие нашу информацию — нет.

Если вы попробуете использовать приложение на вашем телефоне и оно не будет загружаться или работать должным образом, то, вероятно, оно реализует привязку SSL-сертификата, поэтому вы и не можете увидеть предназначенный для него веб-трафик. Многие приложения от Apple и Google используют этот уровень безопасности, поэтому сторонние приложения — это всегда кандидаты номер один на проверку такого рода, поскольку именно они, скорее всего, будут делать всякие теневые штуки с вашими данными.

Когда закончите — удалите все, что не нужно

После того как вы закончите анализ трафика мобильных приложений на вашем смартфоне, вы должны удалить установленный сертификат. Не стоит оставлять на вашем устройстве дольше, чем вам нужно, сертификат, который использовался для реализации атаки «Человек-по-Середине». Также стоит удалить настройки прокси.

На iPhone, чтобы удалить сертификат, перейдите в «General» в «Settings», затем в самом низу выберите «Profile». Затем нажмите профиль конфигурации «Charles Proxy CA» и нажмите «Remove Profile». Нажмите «Remove» для подтверждения. Чтобы остановить прокси-сервер, выберите «Wi-Fi» в «Settings», нажмите «Wi-Fi network», выберите «Configure Proxy», затем переключите слайдер в «Off», а затем нажмите «Save».

Для всех пользователей Android процесс будет отличаться в зависимости от вашего устройства. Выберите «Security & location» или «Lock screen and security» в «Settings», нажмите «Advanced» или «Other security settings», затем «Encryption & credentials» или «View security certificates». На стоковом Android’е вам также придется нажать «Trusted credentials». Теперь выберите вкладку «User», а затем нажмите «Charles Proxy CA». Нажмите «Remove», затем «ОК», чтобы удалить его. Что касается прокси-сервера, просто вернитесь к параметрам сети Wi-Fi и измените настройки прокси-сервера с «Manual» на «None».

Добавить комментарий