TikTok представляет угрозу пользователям?

3 августа, 2020

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

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

Введение

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

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

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

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

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

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

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

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

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

/service/2/app_log/ endpoint

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

Изображение для поста

Параметры

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

Изображение для поста

Большинство имен говорят сами за себя. Я вижу 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

Вы удивлены этим?  К сожалению, это довольно стандартно. Большинство ваших любимых приложений содержат одну и ту же информацию, это не относится к TikTok.

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

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

Изображение для поста

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

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

Изображение для поста

Я использовал мой маленький метод TTencryptedLog, и я получил следующий вывод

Изображение для поста

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

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

Когда это отправляется?

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

Изображение для поста

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

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

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

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

Изображение для поста

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

Изображение для поста

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

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

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

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

Изображение для поста

Существует 7 конфигураций URL: China, America, America HTTP, SIG AWS, SIG ALIYUN, Musically, Mussically HTTP. Опять же, кажется странным не иметь европейскую конфигурацию URL, но все в порядке.


Как контент зашифрован?

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

Изображение для поста

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

Изображение для поста

EncryptorUtil – это самое интересное

Изображение для поста

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


Вывод

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


Совершенствуй знания каждый день у нас в Телеграм-каналах

Вопросы, реклама — VK | Telegram