Мы находимся в 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.
Бинго! Каждые 5 минут TikTok отправлял сетевой запрос с зашифрованным контентом.
II.1) / service / 2 / app_log / конечная точка
Сосредоточимся на запросах к конечной точке / service / 2 / app_log /.
Parameters
Прежде чем изучать его зашифрованное содержимое, мы уже видим, что этот запрос содержит огромное количество параметров.
Большинство имен говорят сами за себя. Я вижу 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
Вы не читаете код? Ничего страшного, не волнуйся. Посмотрите на подпись метода. Потребовалось 4 параметра. arg4 - это URL-адрес, arg5 - это содержимое запроса (не зашифровано), а все остальное нас пока не интересует.
Теперь я могу использовать Frida для перехвата вызова этого метода и просмотра содержимого запроса перед шифрованием.
Я использовал свой небольшой метод TTencryptedLog и получил следующий результат
Если мы пройдемся по содержимому файла JSON, мы увидим довольно стандартные данные.
- Как и раньше, много информации об устройстве
- Когда последний раз было запущено приложение
- Журнал событий. Мне нужно внимательнее взглянуть на то, что они считают «событиями», но, насколько я могу судить, это довольно стандартное аналитическое решение.
III) Когда он отправляется?
Ответ на этот вопрос равен ответу на то, когда вызывается метод sendEncryptLog . Нажав клавишу X с помощью JEB , вы можете легко получить все перекрестные ссылки.
Мы видим 4 метода:
- doUpdateConfig
- sendTimelyEvent
- sendLog
- неизвестный метод в пакете deviceRegister
Метод sendEncryptLog используется для отправки различных типов JSON. Итак, я очистил данные TikTok и перезапустил все с нуля. Мне удалось поймать следующие JSON
Содержание запроса при регистрации устройства
Содержание запроса при изменении TikTok настроек журнала
Опять же, названия полей говорят сами за себя. Я не вижу ничего подозрительного или специфического для TikTok в этих JSON.
IV) Куда отправляется?
Как вы видели на предыдущих скриншотах, запросы отправляются на log16-normal-c-useast1a.tiktokv.com. Забавно видеть, что я сижу в Европе, а мои журналы отправляются в восточно-сша.… TikTok - это приложение, используемое во всем мире, вероятно, они использовали несколько конечных точек для загрузки журналов.
Покопавшись в коде, мы можем найти класс URLConfig
Существует 7 конфигураций URL: Китай, Америка, Америка HTTP, SIG AWS, SIG ALIYUN (Alicloud Singapore), Музыкально, Музыкально HTTP.
Опять же, странно не иметь европейской конфигурации URL, но это нормально.
V) Как контент шифруется?
Вы помните метод sendEncryptLog?
Шифрования происходит на этой линии: v5 = ба (v5, v5. Длина );
EncryptorUtil - вот где самое интересное
Бинго! Шифрование выполняется в собственной библиотеке. Вся собственная библиотека, используемая TikTok, находится в папке /data/data/com.zhiliaoapp.musically/app_librarian/ <version> на вашем телефоне. Я остановлюсь на этом пока. Что касается того, как TikTok на самом деле шифрует данные, это заслуживает отдельной статьи. Ну, сейчас 12 часов, и я очень голоден.
TLDR
В этой статье я попытался понять, какие данные TikTok регулярно отправляет обратно на свои серверы. Расшифровал содержание запросов и проанализировал его.Насколько мы можем видеть, в текущем состоянии TikTok не ведет себя подозрительно и не извлекает необычные данные. Получение данных о пользовательском устройстве довольно распространено в мобильном мире, и мы можем получить аналогичные результаты с Facebook, Snapchat, Instagram и другими
Надеюсь, вам понравится эта статья. Остальные последуют. Не забудьте подписаться на меня в Twitter, и если у вас есть вопросы, не стесняйтесь отправлять мне сообщения в Twitter или по электронной почте на fs0c131y@protonmail.com
Cтатья переведена с Английского
Автор: Эллиот Алдерсон