Анализ трафика телеметрической информации Android смартфона

Сбор телеметрических данных о пользователях и их действиях в вебе и приложениях — плата за пользование «бесплатными» сервисами в Интернете. Пользователи расплачиваются своим вниманием и временем, проведёнными в данных сервисах и приложениях. Поэтому производители мобильных платформ, ИТ-компании, социальные сети заинтересованы в получении максимального объёма данных с устройств.

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

В данной статье рассматривается вопрос о том, какую конкретно информацию смартфон передает на серверы вендоров.

Начальные условия и инструментарий

Исследовался смартфон Samsung SM-A505FN (торговое название Samsung Galaxy A50), со сброшенной к заводским установкам прошивкой и установленным пакетом российского ПО, без синхронизированных учётных записей.

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

Для исследования трафика использовались BurpSuite и Wireshark, а при работе с архивами base64, gzip и xxd.

Исследование трафика на ресурсы, связанные с Google

Для начала были проанализированы DNS-запросы.

1b46554381d9267b1b5f5f202450765d.png

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

Ясно, что это далеко не все, с кем смартфон хочет пообщаться и поделиться данными, но в данной статье делается упор на *google* и немного на *samsung* c *yandex*.

fa6e8dd5a98595e32eea005107a6fe86.png

Сразу хотелось бы отметить, что хоть смартфон и запрашивает столько доменов, но не со всеми он обменивается конкретными данными. Некоторые сервисы нужны для проверки интернет соединения или для синхронизации времени.

Так смартфон проверяет интернет соединение:

1fd074d5b1ab205bd36a212e3e1a42b4.png

Или синхронизирует время с time.android.com или *.pool.ntp.org.

894418e439c05e7d6fa49478b7aae3dd.png

Первым из *google* доменов в истории запросов BurpSuite можно увидеть crashlyticsreports-pa.googleapis.com.

25e889e60c953850b812e8d467337bea.png

В теле POST-запроса видны какие-то случайные нечитаемые символы. Если посмотреть внимательнее на запрос, то в заголовке Accept-Encoding можно заметить формат gzip, значит это архив и в нём с большой вероятностью что-то лежит.

Чтобы достать данные из архива аккуратно и не повредить их, лучшим решением будет выделить всё с одиннадцатой строки до конца и закодировать в base64.

f788f9f03533716a89d7a64215fa18ad.png

Можно заметить в начале строки характерный набор байт для закодированного в base64 архива ».gz». Из него можно извлечь JSON-файл.

da464cc8f4a1351743bf67d8115ea227.png

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

37c92a8126af126fd3531fb5284d4418.png

Следующим «гугловым» запросом был этот:

8b80696ad5fc056a95fb677029be60db.png

Тут запрос отправляет имя приложения, его (приложения) версию, версию Android и идентификатор с параметром «usage_tracking_enabled=0». Видимо это рекламный идентификатор, чтобы показывать рекламу в youtube.

Здесь смартфон проверяет на наличие и необходимость обновления системного WebView:

e9a790c2e1336e08f6b266f5a99b661d.png

А вот еще один запрос с архивом только уже на play.googleapis.com.

e46f817bbe2e483dec78b1c60a599cda.png

Чтобы достать содержимое архива, нужно проделать действия, аналогичные тем, что выше.

a6806fe541b4cfcdc03622bd491864f6.png

Тут уже данные в другом формате. Также сначала идет информация об устройстве, а затем среди ASCII символов, можно найти отчетливое упоминание о некоторых приложениях.

dd0d013fab8eb986ec3b8cea8064268a.png

Кроме чётких названий пакетов, в этом всем проглядывается что-то похожее на уникальный идентификатор, скорее всего это идентификаторы остальных приложений. После этого запроса идут ещё два, таких же по смыслу, но уже с другими значениями.

А в данном запросе смартфон уже присутствует рекламный идентификатор:

25711883f20b0c6b1ad89e1887f1217d.png

Значение параметра rdid — присвоенный устройству рекламный идентификатор.

5f38c06b47962f5db1bd666d0bc1ae1d.png

На уже известный нам play.googleapis.com, только на другой эндпоинт (/log/batch) тоже уходят архивы, но уже не gzip, на этот раз для сжатия использовался brotli, что можно заметить по заголовку Content-Type

ffe9b8a5e0d3db9c97f16ebccaab79c8.png

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

bfadbf9714f0d848b82f5a2f9d7fe294.png

Представлена информация о другой ошибке

390188c0b620fb06f3319ba27a7b6f28.png

Тут представлена информация об ошибке в методе во время работы приложения

c8cd475a903ad7483d8e9662941dc3a2.png

А также передается информация с некоторыми глобальными значениями

95f31828648eb511cb6f548c2ee6c2aa.png

Все это отправляется пакетом «com.google.android.gms».

Исследование трафика на ресурсы Samsung и Яндекс

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

73587bcca5b73b22d697be5f27d716f2.png

Одним из следующих запросов, отправляется архив с неизвестным содержимым

b1a1bc09d3177c7150d06246aed42202.png

Данные из архива больше похожи на набор параметров.

467ba200c6ee191079dd6cde2b2a634a.png

А вот загрузилась страничка Samsung Galaxy Store, хотя его никто не просил.

4ad5ec7379cc1a36f37f65a852bb68a6.png

Вскоре в трафике появился запрос к Яндексу. Кроме кучи параметров в запросе также присутствует и архив.

6ee9f401b521b1026f50621c1edc85ec.png

В запросе на сервер Яндекса не указано, что используется для сжатия, и по первым байтам сообщения из тела запроса не понятно, с помощью чего данные были сжаты, так что внутрь заглянуть не получилось. Но в другом запросе для сжатия используется gzip. Сжатые данные можно изучить.

14f00c96fb61fcd062c401ad591c19d0.png

В этом архиве — уже стандартная «шапка» и большое количество параметров. Параметры ниже на рисунке взяты из середины для примера.

9a98b8bc9efb51bbfff9ace9a89d7640.png

Кроме единичных сервисов неявной принадлежности, очень сильно активничали facebook и Microsoft. Они были одними из первых, кто «почувствовал» наличие Интернета и посчитали своим святым долгом незамедлительно уведомить все возможные серверы.

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

© Habrahabr.ru