В этом посте будет подробно описано, что происходит на детальном сетевом уровне при первом запуске Chrome.

Когда я впервые запустил Google Chrome (и оставил его на минуту), было сделано 32 запроса и загружено 7,26 МБ данных.

Первым вызовом Chrome является домен googleapis. Он передает мой тип ОС, канал браузера (стабильный) и версию (v76). Ответ — 32 КБ флагов, функций и многого другого. Непонятно, что они все делают (поскольку многие из них не могут быть найдены в исходниках Chromium), но некоторые довольно ясны.

Следующий вызов пытается связаться с сервером учетных записей Google (уже пытаетесь связать меня с профилем?). Это обращение к https://accounts.google.com для пути /ListAccounts. Конечная точка отвечает ["gaia.l.a.r", []], что означает, что учетная запись не найдена (AFAIK).

Исходя из следующего, я ожидаю, что положительный ответ GAIA (управление учетными записями Google и идентификаторами) вернется с моим адресом электронной почты Google. Поскольку это не так, я подозреваю, что они не смогли ничего со мной соединить.

Следующий вызов Chrome — к конечной точке http://clients2.google.com. Он передает довольно много идентификаторов расширений/приложений по сети. Google отвечает документом XML, указывающим на конечные точки в интернет-магазине, которые необходимо запросить. Вы увидите эти запросы позже в списке сеансов.

Короткий тангенс теперь; Chrome отправляет запрос на http://gstatic.com для некоторой модели перевода. Хотя ответ непросто разобрать, он содержит множество языковых кодов (как и следовало ожидать в данном случае):

Вернемся к идентификаторам расширений/приложений, которые мы исследовали ранее. Теперь Chrome начинает выдавать запросы на соответствующие файлы CRX. Первый запрос касается расширения Google Диска. Честно говоря, это вряд ли можно назвать расширением ИМХО. Одна строка JavaScript и файл манифеста.

При первом запуске загружается 9 расширений. В основном они очень маленькие и в основном связаны с Google Диском и Документами. Также расширение для YouTube, GMail, Chrome Cast и Payments. Большинство из них можно увидеть на странице /apps в самом браузере.

Запрос http://redirector.gvt1.com предназначен для Chrome Cast. По какой-то причине он идет другим путем, чем другие расширения. То же самое и с их битами ползания, которые, судя по файлам локали, похоже, связаны с платежами в интернет-магазине. Мне любопытно, почему они подаются уникально.

Я должен отметить, что http://redirector.gvt1.com на самом деле не обслуживает биты расширения. Вместо этого он делает (как следует из названия) перенаправление. Путь, на который он нас указывает, довольно странный: /r3 — sn-8xgp1vo-5uae.gvt1.com. Этот паттерн почему-то кажется знакомым — не знаю почему.

Последнее, что мы видим в связи с этими первоначальными расширениями, — это запрос проверки для каждого из них. Идентификаторы отправляются по сети, и googleapis отвечает небольшим количеством данных для проверки целостности.

Похоже, это все работы, связанные с расширением. Далее браузер сделал вызов http://docs.google.com. Почему? Без понятия. Но это 302s на http://accounts.google.com — на конечную точку /ServiceLogin. Пользовательский заголовок появляется для хранения client_id, а также device_id.

Далее следует запрос к конечной точке Google /searchdomaincheck. Он просто отвечает http://google.com. Я предполагаю, что это спрашивает, куда по умолчанию должны идти данные поиска.

Теперь мы подошли к самому последнему вызову http://clients2.google.com. На данный момент подтверждается, что ни одно из расширений не нуждается в обновлении. Что я нахожу странным, так это то, что два, которые были установлены через redirector.*, записываются как installedby=other, а не как internal.

На этом первый запуск Google Chrome завершен.

Об авторе

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