Найти в Дзене

TikTok: LOGS, LOGS, LOGS

Мы находимся в 2020 году, и президент США собирается запретить TikTok, мобильное приложение для обмена видео в социальной сети, потому что «оно представляет собой риск для национальной безопасности США». В то же время Microsoft начала обсуждение потенциальной покупки TikTok в США. В последнее время TikTok широко освещается в СМИ, но насколько это основано на фактах? Вот на что я постараюсь ответить в этой серии статей. Каждая статья ответит на очень конкретный вопрос. Пора снова положить факты на стол. Отказ TikTok предлагает своим пользователям множество функций благодаря своему коду длиной в миллион строк. По сути, одна статья не может охватить такой широкий и расплывчатый вопрос, как «представляет ли TikTok угрозу национальной безопасности США?». Вот почему я рассмотрю этот вопрос в нескольких статьях, посвященных конкретным темам. Меня зовут Батист Роберт, я французский исследователь безопасности. Я много лет анализирую мобильные приложения. Вы можете найти мою общественную
Оглавление
Содержание запроса при изменении TikTok настроек журнала
Содержание запроса при изменении TikTok настроек журнала

Мы находимся в 2020 году, и президент США собирается запретить TikTok, мобильное приложение для обмена видео в социальной сети, потому что «оно представляет собой риск для национальной безопасности США». В то же время Microsoft начала обсуждение потенциальной покупки TikTok в США. В последнее время TikTok широко освещается в СМИ, но насколько это основано на фактах? Вот на что я постараюсь ответить в этой серии статей. Каждая статья ответит на очень конкретный вопрос. Пора снова положить факты на стол.

Отказ
TikTok предлагает своим пользователям множество функций благодаря своему коду длиной в миллион строк. По сути, одна статья не может охватить такой широкий и расплывчатый вопрос, как «представляет ли TikTok угрозу национальной безопасности США?». Вот почему я рассмотрю этот вопрос в нескольких статьях, посвященных конкретным темам.
Меня зовут Батист Роберт, я французский исследователь безопасности. Я много лет анализирую мобильные приложения. Вы можете найти мою общественную работу на fs0c131y.com/press и мои глупые твиты на twitter.com/fs0c131y .
Моя цель здесь - быть полностью прозрачным. Я поделюсь всем, что вам нужно, чтобы перепроверить то, что я написал в этой статье.
Если вы хотите пропустить технические подробности, TL; DR доступен в конце статьи.

Введение

2 августа 2020 года я начал анализировать TikTok и написал об этом в Твиттере.

Через несколько минут после этого твита прокомментировал один из моих подписчиков.

Мы обсуждали в личных сообщениях, и он объяснил мне проблему. Он прослушал сетевые запросы, сделанные TikTok, и заметил, что запросы отправляются каждые 2 минуты. Однако контент был зашифрован, и он не смог его расшифровать.

Похоже, хорошая отправная точка для нашего путешествия:

  • Что регулярно отправляет TikTok?
  • Когда его отправят?
  • Куда его отправляют?
  • Как контент зашифрован?

II) Что регулярно отправляет TikTok?

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

  • Я скачал последнюю версию TikTok из французского PlayStore.
  • Я настроил Burp Suite на перехват сетевых запросов, отправляемых моим телефоном
  • Я использовал скрипт Frida для обхода SSL-закрепления, реализованного в приложении, и запустил TikTok.
-2

Бинго! Каждые 5 минут TikTok отправлял сетевой запрос с зашифрованным контентом.

II.1) / service / 2 / app_log / конечная точка

Сосредоточимся на запросах к конечной точке / service / 2 / app_log /.

-3

Parameters

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

-4

Большинство имен говорят сами за себя. Я вижу 3 типа параметров:

  • Информация об устройстве: device_id, device_type, device_brand, os_api, os_version,…
  • Информация о приложении: app_type, app_language, version_code, version_name, build_number,…
  • Информация о пользователе: current_region, locale, region

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

Зашифрованный контент

Пора взглянуть на зашифрованный контент! Это самое интересное 😉. Я декомпилировал приложение и поискал «app_log». Я сразу нашел метод sendEncryptLog в классе com.ss.android.common.applog.NetUtil
-5

Вы не читаете код? Ничего страшного, не волнуйся. Посмотрите на подпись метода. Потребовалось 4 параметра. arg4 - это URL-адрес, arg5 - это содержимое запроса (не зашифровано), а все остальное нас пока не интересует.

Теперь я могу использовать Frida для перехвата вызова этого метода и просмотра содержимого запроса перед шифрованием.

-6

Я использовал свой небольшой метод TTencryptedLog и получил следующий результат

-7

Если мы пройдемся по содержимому файла JSON, мы увидим довольно стандартные данные.

  • Как и раньше, много информации об устройстве
  • Когда последний раз было запущено приложение
  • Журнал событий. Мне нужно внимательнее взглянуть на то, что они считают «событиями», но, насколько я могу судить, это довольно стандартное аналитическое решение.

III) Когда он отправляется?

Ответ на этот вопрос равен ответу на то, когда вызывается метод sendEncryptLog . Нажав клавишу X с помощью JEB , вы можете легко получить все перекрестные ссылки.

-8

Мы видим 4 метода:

  • doUpdateConfig
  • sendTimelyEvent
  • sendLog
  • неизвестный метод в пакете deviceRegister

Метод sendEncryptLog используется для отправки различных типов JSON. Итак, я очистил данные TikTok и перезапустил все с нуля. Мне удалось поймать следующие JSON

Содержание запроса при регистрации устройства

-9

Содержание запроса при изменении TikTok настроек журнала

-10

Опять же, названия полей говорят сами за себя. Я не вижу ничего подозрительного или специфического для TikTok в этих JSON.

IV) Куда отправляется?

Как вы видели на предыдущих скриншотах, запросы отправляются на log16-normal-c-useast1a.tiktokv.com. Забавно видеть, что я сижу в Европе, а мои журналы отправляются в восточно-сша.… TikTok - это приложение, используемое во всем мире, вероятно, они использовали несколько конечных точек для загрузки журналов.

Покопавшись в коде, мы можем найти класс URLConfig

-11

Существует 7 конфигураций URL: Китай, Америка, Америка HTTP, SIG AWS, SIG ALIYUN (Alicloud Singapore), Музыкально, Музыкально HTTP.

Опять же, странно не иметь европейской конфигурации URL, но это нормально.

V) Как контент шифруется?

Вы помните метод sendEncryptLog?

-12

Шифрования происходит на этой линии: v5 = ба (v5, v5. Длина );

-13

EncryptorUtil - вот где самое интересное

-14

Бинго! Шифрование выполняется в собственной библиотеке. Вся собственная библиотека, используемая TikTok, находится в папке /data/data/com.zhiliaoapp.musically/app_librarian/ <version> на вашем телефоне. Я остановлюсь на этом пока. Что касается того, как TikTok на самом деле шифрует данные, это заслуживает отдельной статьи. Ну, сейчас 12 часов, и я очень голоден.

TLDR
В этой статье я попытался понять, какие данные TikTok регулярно отправляет обратно на свои серверы. Расшифровал содержание запросов и проанализировал его.Насколько мы можем видеть, в текущем состоянии TikTok не ведет себя подозрительно и не извлекает необычные данные. Получение данных о пользовательском устройстве довольно распространено в мобильном мире, и мы можем получить аналогичные результаты с Facebook, Snapchat, Instagram и другими

Надеюсь, вам понравится эта статья. Остальные последуют. Не забудьте подписаться на меня в Twitter, и если у вас есть вопросы, не стесняйтесь отправлять мне сообщения в Twitter или по электронной почте на fs0c131y@protonmail.com
Cтатья переведена с Английского
Автор: Эллиот Алдерсон