Сбор телеметрических данных о пользователях и их действиях в вебе и приложениях — плата за пользование «бесплатными» сервисами в Интернете. Пользователи расплачиваются своим вниманием и временем, проведёнными в данных сервисах и приложениях. Поэтому производители мобильных платформ, ИТ-компании, социальные сети заинтересованы в получении максимального объёма данных с устройств.
Если по отдельности данные телеметрии не представляют угрозы конкретному человеку, то их совокупность может дать очень много информации о человеке, его интересах, семье, работе. В то же время постоянная связь устройств с инфраструктурой ИТ-гигантов создаёт потенциальную угрозу утечек конфиденциальной информации или изучения окружения при помощи микрофонов и камер смартфонов.
В данной статье рассматривается вопрос о том, какую конкретно информацию смартфон передает на серверы вендоров.
Начальные условия и инструментарий
Исследовался смартфон Samsung SM-A505FN (торговое название Samsung Galaxy A50), со сброшенной к заводским установкам прошивкой и установленным пакетом российского ПО, без синхронизированных учётных записей.
На момент сбора трафика смартфоном не пользовались (за исключением запуска камеры, календаря, сообщений, контактов и калькулятора). Большинство запросов происходило в фоновом режиме.
Для исследования трафика использовались BurpSuite и Wireshark, а при работе с архивами base64, gzip и xxd.
Исследование трафика на ресурсы, связанные с Google
Для начала были проанализированы DNS-запросы.
![](https://habrastorage.org/getpro/habr/upload_files/1b4/655/438/1b46554381d9267b1b5f5f202450765d.png)
Тут видно, какие домены запрашивает устройство, и ответы DNS-сервера с IP-адресами для каждого запрашиваемого домена соответственно:
time.google.com
mtalk.google.com
www.google.com
youtubei.google.com
www.googleapis.com
android.clients.google.com
play-lh.googleapis.com
play-lh.googleusercontent.com
Ясно, что это далеко не все, с кем смартфон хочет пообщаться и поделиться данными, но в данной статье делается упор на *google* и немного на *samsung* c *yandex*.
![](https://habrastorage.org/getpro/habr/upload_files/fa6/e8d/d5a/fa6e8dd5a98595e32eea005107a6fe86.png)
Сразу хотелось бы отметить, что хоть смартфон и запрашивает столько доменов, но не со всеми он обменивается конкретными данными. Некоторые сервисы нужны для проверки интернет соединения или для синхронизации времени.
Так смартфон проверяет интернет соединение:
![](https://habrastorage.org/getpro/habr/upload_files/1fd/074/d5b/1fd074d5b1ab205bd36a212e3e1a42b4.png)
Или синхронизирует время с time.android.com или *.pool.ntp.org.
![](https://habrastorage.org/getpro/habr/upload_files/894/418/e43/894418e439c05e7d6fa49478b7aae3dd.png)
Первым из *google* доменов в истории запросов BurpSuite можно увидеть crashlyticsreports-pa.googleapis.com.
![](https://habrastorage.org/getpro/habr/upload_files/25e/889/e60/25e889e60c953850b812e8d467337bea.png)
В теле POST-запроса видны какие-то случайные нечитаемые символы. Если посмотреть внимательнее на запрос, то в заголовке Accept-Encoding можно заметить формат gzip, значит это архив и в нём с большой вероятностью что-то лежит.
Чтобы достать данные из архива аккуратно и не повредить их, лучшим решением будет выделить всё с одиннадцатой строки до конца и закодировать в base64.
![](https://habrastorage.org/getpro/habr/upload_files/f78/8f9/f03/f788f9f03533716a89d7a64215fa18ad.png)
Можно заметить в начале строки характерный набор байт для закодированного в base64 архива «.gz». Из него можно извлечь JSON-файл.
![](https://habrastorage.org/getpro/habr/upload_files/da4/64c/c8f/da464cc8f4a1351743bf67d8115ea227.png)
Сервис firebase собрал информацию об устройстве (номер модели, установленный на устройстве чипсет, модель, название прошивки), дальше уже представлена информация об ошибках в приложениях, а если конкретнее, то перечислены методы, в которых произошел сбой и уровень его критичности.
![](https://habrastorage.org/getpro/habr/upload_files/37c/92a/812/37c92a8126af126fd3531fb5284d4418.png)
Следующим «гугловым» запросом был этот:
![](https://habrastorage.org/getpro/habr/upload_files/8b8/069/6ad/8b80696ad5fc056a95fb677029be60db.png)
Тут запрос отправляет имя приложения, его (приложения) версию, версию Android и идентификатор с параметром «usage_tracking_enabled=0». Видимо это рекламный идентификатор, чтобы показывать рекламу в youtube.
Здесь смартфон проверяет на наличие и необходимость обновления системного WebView:
![](https://habrastorage.org/getpro/habr/upload_files/e9a/790/c2e/e9a790c2e1336e08f6b266f5a99b661d.png)
А вот еще один запрос с архивом только уже на play.googleapis.com.
![](https://habrastorage.org/getpro/habr/upload_files/e46/f81/7bb/e46f817bbe2e483dec78b1c60a599cda.png)
Чтобы достать содержимое архива, нужно проделать действия, аналогичные тем, что выше.
![](https://habrastorage.org/getpro/habr/upload_files/a68/06f/e54/a6806fe541b4cfcdc03622bd491864f6.png)
Тут уже данные в другом формате. Также сначала идет информация об устройстве, а затем среди ASCII символов, можно найти отчетливое упоминание о некоторых приложениях.
![](https://habrastorage.org/getpro/habr/upload_files/dd0/d01/3fa/dd0d013fab8eb986ec3b8cea8064268a.png)
Кроме чётких названий пакетов, в этом всем проглядывается что-то похожее на уникальный идентификатор, скорее всего это идентификаторы остальных приложений. После этого запроса идут ещё два, таких же по смыслу, но уже с другими значениями.
А в данном запросе смартфон уже присутствует рекламный идентификатор:
![](https://habrastorage.org/getpro/habr/upload_files/257/118/83f/25711883f20b0c6b1ad89e1887f1217d.png)
Значение параметра rdid — присвоенный устройству рекламный идентификатор.
![](https://habrastorage.org/getpro/habr/upload_files/5f3/8c0/6b4/5f38c06b47962f5db1bd666d0bc1ae1d.png)
На уже известный нам play.googleapis.com, только на другой эндпоинт (/log/batch) тоже уходят архивы, но уже не gzip, на этот раз для сжатия использовался brotli, что можно заметить по заголовку Content-Type
![](https://habrastorage.org/getpro/habr/upload_files/ffe/9b8/a5e/ffe9b8a5e0d3db9c97f16ebccaab79c8.png)
Всё как всегда начинается с основной информации об устройстве, но дальше фигурируют приложения с версиями и токенами.
![](https://habrastorage.org/getpro/habr/upload_files/bfa/dbf/971/bfadbf9714f0d848b82f5a2f9d7fe294.png)
Представлена информация о другой ошибке
![](https://habrastorage.org/getpro/habr/upload_files/390/188/c0b/390188c0b620fb06f3319ba27a7b6f28.png)
Тут представлена информация об ошибке в методе во время работы приложения
![](https://habrastorage.org/getpro/habr/upload_files/c8c/d47/5a9/c8cd475a903ad7483d8e9662941dc3a2.png)
А также передается информация с некоторыми глобальными значениями
![](https://habrastorage.org/getpro/habr/upload_files/95f/318/286/95f31828648eb511cb6f548c2ee6c2aa.png)
Все это отправляется пакетом «com.google.android.gms».
Исследование трафика на ресурсы Samsung и Яндекс
При запуске стандартного приложения камеры, смартфон сразу же отправил запрос на сервер Samsung с именем приложения, которое было открыто. Видимо, устройство решило проверить наличие обновлений.
![](https://habrastorage.org/getpro/habr/upload_files/735/87b/cca/73587bcca5b73b22d697be5f27d716f2.png)
Одним из следующих запросов, отправляется архив с неизвестным содержимым
![](https://habrastorage.org/getpro/habr/upload_files/b1a/1bc/09d/b1a1bc09d3177c7150d06246aed42202.png)
Данные из архива больше похожи на набор параметров.
![](https://habrastorage.org/getpro/habr/upload_files/467/ba2/00c/467ba200c6ee191079dd6cde2b2a634a.png)
А вот загрузилась страничка Samsung Galaxy Store, хотя его никто не просил.
![](https://habrastorage.org/getpro/habr/upload_files/4ad/5ec/737/4ad5ec7379cc1a36f37f65a852bb68a6.png)
Вскоре в трафике появился запрос к Яндексу. Кроме кучи параметров в запросе также присутствует и архив.
![](https://habrastorage.org/getpro/habr/upload_files/6ee/9f4/01b/6ee9f401b521b1026f50621c1edc85ec.png)
В запросе на сервер Яндекса не указано, что используется для сжатия, и по первым байтам сообщения из тела запроса не понятно, с помощью чего данные были сжаты, так что внутрь заглянуть не получилось. Но в другом запросе для сжатия используется gzip. Сжатые данные можно изучить.
![](https://habrastorage.org/getpro/habr/upload_files/14f/00c/96f/14f00c96fb61fcd062c401ad591c19d0.png)
В этом архиве — уже стандартная «шапка» и большое количество параметров. Параметры ниже на рисунке взяты из середины для примера.
![](https://habrastorage.org/getpro/habr/upload_files/9a9/8b8/bc9/9a98b8bc9efb51bbfff9ace9a89d7640.png)
Кроме единичных сервисов неявной принадлежности, очень сильно активничали facebook и Microsoft. Они были одними из первых, кто «почувствовал» наличие Интернета и посчитали своим святым долгом незамедлительно уведомить все возможные серверы.
Учитывая все выше сказанное, можно сказать, что у смартфонов насыщенная жизнь. Все, о чем говорилось в статье это почти стоковый телефон без синхронизированных учетных записей. На момент сбора трафика я не пользовался телефоном (за исключением запуска камеры, календаря, сообщений, контактов и калькулятора), он просто лежал и большинство запросов происходило в фоновом режиме. Геолокация не включалась, рискну предположить, что с ней было бы не менее интереснее.
Комментарии (27)
vilgeforce
07.10.2022 13:21А как вы траффик смотрели? Нужны детали :-)
Svilly Автор
07.10.2022 14:13Не стал дублировать информацию по подключению BurpSuite, так как она уже есть в нескольких отдельных статьях по анализу мобильных приложений.
vilgeforce
07.10.2022 14:17А что с HTTPS? Как вы сертификат подкладывали? Как весь траффик с устройства в Burp заводили? Как вы обнаруживали попытки установить HTTPS-соединения, которые не приводили в итоге к передаче данных?
Svilly Автор
07.10.2022 14:22+21) В комментарии ниже ответил про сертификат
2) Подключал альфу и поднимал свою точку Ви-Фи
3) запросы, которые не отображались в HTTP History смотрел уже в Logger
xBrowser
07.10.2022 13:28+3Очень интересна схема включения, как BurpSuite получал расшифрованный https трафик.
axifive
07.10.2022 13:59+2Полагаю просто установкой своего сертификата на телефон. Хотя сейчас все чаще используется SSL Certificate Pinning и с ним уже так легко трафик не послушаешь (хотя всё равно есть рабочие решения)
solver
07.10.2022 13:48+11Сбор телеметрических данных о пользователях и их действиях в вебе и приложениях — плата за пользование «бесплатными» сервисами в Интернете.
В смысле плата за бесплатные сервисы? Можно подумать, платные сервисы не собирают телеметрию))
vdp
07.10.2022 13:53+1Попробуйте использовать оригинальный образ от Гугля
ci.android.com/builds/branches/aosp-android12-gsi/grid
без «шпионства от самсун и яндекса».
Инструкция по установке (через fastboot) source.android.com/docs/core/tests/vts/vts-on-gsi и source.android.com/docs/setup/create/gsi
xhd
07.10.2022 14:32+10Интересно было бы провести подобное исследование для альтернативных андродоподобных прошивок (типа Lineage) с вырезанным гуглософтом.
rm-hbr
07.10.2022 15:37+1Спасибо за расследование. Хотелось бы продолжения, так как тема актуальна и не особо раскрыта.
Также интересно, не превышает ли своих возможностей предустановленное по закону ПО
kinjalik
07.10.2022 17:02+2установленным пакетом российского ПО
Жаль, что данное исследование не учитывало данный аспект и не упоминает отечественное ПО в хорошем или не очень свете в принципе
klounader
07.10.2022 21:55Ещё можно пощупать кто какие сенсоры и модули дёргает всё время. Например, прога Paranoia Access может показывать статус работы некоторых модулей для наглядности и, кажется, блокировать их работу.
crazymassa
07.10.2022 22:41Они знают и хранят намного больше даже чем им нужно, вот например сегодня обнаружил, что пережатые фото на Google photo загруженные с телефона оказывается хранятся там в оригинале, да ещё и удаленные (с моим лимитом 15 гб-Google takeout даёт скачать 650 гб только фото) - это же какая лафа, хранить безлимит бесплатно
Akr0n
08.10.2022 08:26+2Надо было смартфон от Xiaomi исследовать, вышло бы гораздо интереснее.
EvgeniyNuAfanasievich
10.10.2022 09:17И от huawei тоже. Там же вроде нет ничего от гугла из коробки. Вопрос: что там лежит вместо гугловских следилок.
raamid
Очень интересное и своевременное исследование, спасибо!
У меня большое подозрение, что смартфоны еще и подслушивают. Пару раз очень странным образом прилетала реклама на основании простого голосового разговора (не по телефону или даже мессендеру, а просто с человеком с которым я физически находился в одной комнате).
Планируется ли развивать данное исследование? Если да, могу предложить направление исследования. Можно проверить, идет ли трафик аудио, когда смартфон просто лежит с выключенным экраном. Другой вариант - если смартфон распознает голос самостоятельно, а в сеть отправляет только текст. Чтобы это проверить, можно положить телефон рядом с генератором голоса, который читает книгу, а потом поискать в сетевом дампе слова или фразы из книги.
Svilly Автор
Спасибо!
Идея на счет текста интересная, сразу могу сказать, что гугл сохраняет голосовые команды когда говоришь "ОК, гугл", и писать он начинает сильно раньше того, как услышит ключевые слова. Заполучу нового подопытного и в путь.
Dmitry2019
Телефон не отправляет звук - это накладно для сети, и не отправляет распознанный текст - это накладно для процессора. Он разбивает звук на фонемы и отправляет их в виде текста - легко для процессора и минимальный трафик
connon
То что смартфоны подслушивают я обнаружил лет 5-6 тому назад. Вечером на даче сидели выпивали и зашел спор. Тема была не очень популярная. Решили уточнить информацию в интернете. Достаточно было в поисковике набрать 3 символа как в подсказках появилось тема о которой мы беседовали. Можно сказать что это случайность. Если бы это не происходило с завидной популярностью.
KbRadar
Скорее всего у поисковика этот запрос был популярен, или самый популярный начинающийся на эти 3 символа. Передавать весь звук сложновато для трафика, распознавать со стороны смартфона затратно.
foxyrus
Правда или миф, что смартфоны нас подслушивают?
F0iL
А вы уверены, что ваш собеседник на эту тему ничего не гуглил или ничего нигде не читал до этого или после этого?
raamid
Собеседник гуглил. Но реклама-то появилась у меня.
foxyrus
Вы в одной wifi сети были? Ну и по геолокации гугл умеет объединять.
Alcpp
А не проще произнести пару фраз типа "корм для ящериц" и посмотреть будет ли гугл подсовывать рекламу?