Ищем уязвимости в TikTok при помощи OSINT

c2d9f0e73358b27f21ea175d8108013d.gif


TikTok — одно из самых популярных приложений для просмотра мобильного видео. В нём зарегистрировано 800 миллионов пользователей. Пользователи создают контент с помощью фильтров, музыки, эффектов. Видео создаются странные, но захватывающие внимание.

Для столь обширной и популярной платформы развлечения есть очень большой пласт минусов, которые постепенно становятся явными для СМИ. Незащищенный HTTP трафик и спуфинг СМС ссылок — это конкретные примеры уязвимости, которые были обнаружены в приложении за последние 3 месяца. Несмотря на это, люди продолжают публиковать видео. Показывают, в какие школы они ходят, видео внутри и за пределами своих домов и даже раздают телефонные номера и другую личную информацию. Именно с этой темы стоит и начать нашу статью.


Большинство пользователей TikTok молодые подростки, которые не понимают в чем заключается опасность распространения личной информации. TikTok подвергается различным трендам, которые в свою очередь вовлекают в раскрытие персональной информации, включая: паспорта, номера телефонов, email, ссылки на свои социальные сети, информацию кредитных карточек и множество других данных.

Поисковая строка


Одна из самых интересных функций TikTok — это поиск видео различного контента, который находится в кнопке «Discover». После нажатия на нее экран меняется на ленту из самого популярного контента, но главная часть этой вкладки — это поисковая строка вверху экрана. В ней можно вбивать все подряд, начиная от имен пользователей, наименований песен, хештегов и заканчивая ключевыми фразами челленджей. В качестве примера давайте возьмем ключевую фразу: «find my number» (Примеры других запросов — «Call me» / «Phone Me» / «Угадай мой номер» / «Позвони мне» / «Credit Card» / «Debit Card»)

qcg0stmrj8aqim5v8c-lendqhjg.png


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

В примере ниже можно увидеть, как один из пользователей намеренно скрывает номер в различных частях видео. В других видео некоторые используют лишь долю секунды для того, чтобы показать свой настоящий номер. Через мобильное устройство не разглядеть, но, если открыть в браузере, то можно рассмотреть подробнее.

f746d7eda54fcc31fefdd3a3b558a72a.jpg


Вот еще несколько примеров, где пользователи размещают адреса электронных почт. Данные видео были обнаружены по запросу в поиске «gmail.com», а также по хештегам: «email me».

ea3eb6960afb7370d0b84e7b403c3bfe.png


Аудио Дорожка


Еще одна ключевая зацепка для поиска информации через похожие видео — это аудиодорожка, вставленная в видео пользователя. В нижней правой части экрана находится изображение аудио пластинки, которая является оригинальной аудиодорожкой видео. При нажатии на саму пластинку появляется окно со всеми видео, которые использовали данный аудиотрек и следуют тому же тренду. В примере ниже, пользователи записали видео с похожей аудио дорожкой.

e807543b16c0952c871c2fa89baff635.jpg


Еще один из примеров представляет собой звуковую дорожку, которая называется «Your I.D. will always Humble you». Под ней пользователи записывают видео со своей фотографией из своих документов удостоверения личности. Конечно, многие из них не раскрывают документы в полном объеме. Однако, на большинстве есть личная подпись и дата рождения под своей фотографией. Просмотрев много видео, опубликованных с этой звуковой дорожкой, точно можно найти тех, кто показал полный разворот удостоверения личности.

249b272349f6313c43459c5f2ec315a8.png


Получение дальнейшей информации


После того как данная информация стала доступна, последовал логический вопрос:, а что еще возможно обнаружить, исходя из номеров телефонов и электронных почт?

Дальнейший поиск данных на основе полученной информации происходит через использование Lampyre. Он позволяет искать идентификаторы и возвращать данные, которые зарегистрированы на введенной электронной почте или номере телефона. Такие запросы обычно выдают точные и достаточно уникальные результаты.

Ниже был совершен поиск по трем телефонным номерам из США. Результаты показали, что двое из номеров вернули связанные аккаунты из Instagram и Twitter вместе с соответствующими ID и ссылками на их профили. Хоть и в этот раз было показано немного информации, можно получить гораздо больше. Это зависит только от поставленной цели и от того, какой номер телефона пользователи используют при регистрации. Для поиска в Instagram воспользуйтесь нашим приложением [Nuga], о котором мы писали недавно. Другой номер выдал больше информации и показал, что он подключен к учетной записи WhatsApp и Skype. Теперь добавляем и проверяем на наличие учетных записей через список контактов.

faff6e322e9d03c00fd0b87383d35f22.png


89d7d30d191142aafd81fd2b0bb80b80.png


Ниже приведен пример поиска по электронной почте через Lampyre. Здесь он вернул частичную информацию, такую как номер телефона от LinkedIn и Apple, прямую ссылку на их учетную запись Facebook и подтверждение того, что электронная почта используется в Instagram и TikTok:

cd58347cd00aa5f370fefbc9acad8139.png


177f6c8f12f0d2dd2a59f29048df81d1.png


Lampyre можно использовать 4 раза бесплатно за одну регистрацию, потом нужна платная подписка или покупка дополнительных токенов. Конечно, можно создавать аккаунты на временные почты и использовать инструмент в ваше удовольствие, искать и анализировать всю информацию предоставленную в результатах Lampyre.

OSINT TOOL


Сбор основной информации пользователя — это также еще один из способов получения пассивных данных из TikTok. Конечно, это можно сделать вручную, записав все ключевые метаданные профиля. Однако, есть более автономный и удобный в применении инструмент, предназначенный для сбора подобной информации — TikTok OSINT Toolkit.

Он позволяет автономно собрать все публичные данные пользователя TikTok, такие, как:

  • Наименование профиля
  • Картинка профиля
  • Количество подписчиков
  • Количество подписок
  • Данные профиля
  • Подтверждение профиля
  • Количество поклонников
  • Количество лайков
  • Количество видео
  • Идентификационный номер профиля


Инструмент написан на Python 3 и использует обширный пакет BeautifulSoup, значительно упрощающий сбор всей информации, которую можно получить из URL пользователя. Инструмент исполняется через команду:

python3 tiktokOSINT.py --username {USERNAME} --downloadProfilePic

Главный параметр — это имя пользователя, через которое производится HTTP запрос, на HTML страницу профиля. Впоследствии собирается вся информация на странице, происходит поиск по критерию «application/json». И выборочно, данные, которые находятся у пользователя, заполняются в массив и сохраняются в одной папке вместе с инструментом. В дополнение программа дублирует текстовую информацию о пользователе в командной строке.

В качестве примера ниже показана командная оболочка Unix, через которую можно получить результаты пользователя «juliagodunova»:

c88caef0c9a5043cf0d88f4ba05b475f.png


В качестве небольшого бонуса похожий инструмент также доступен в онлайн, но немного в лимитированной форме. Функциональность инструмента заключена также в посылке запроса HTTP со ссылкой профиля пользователя. Только в этом случае сервер ответит при помощи того же JSON файла и упорядочит всю нужную информацию на странице. В нем заключаются 3 главные функции:

  1. Поиск профиля пользователя по его имени
  2. Поиск видео с указанным хештегом
  3. Метаданные пользователя с помощью его имени


8bef075351395fe55532268edeeb64a7.png


Информационный поиск по URL


Хештеги


В приложении TikTok есть специальная вкладка для поиска видео при помощи хэштегов, которая также находится в поисковой строке. Но есть альтернативный способ поиска. Самый распространенный это ссылка на официальный сайт TikTok. Если вы знаете точный и интересующий вас хэштег, можно перейти к следующему URL адресу, заменив «test» на интересующую вас категорию.

www.tiktok.com/tag/test

Имена пользователей


TikTok имеет опцию поиска имени пользователя, которая работает точно так же, как и при поиске хэштега. Если вы знаете имя пользователя вашей цели, вы можете перейти непосредственно к профилю с помощью следующего URL адреса. Замените «test» на имя выбранного вами пользователя.

www.tiktok.com/@test

Комментарии


Подобно любой другой социальной сети пользователи TikTok оставляют комментарии к сообщениям различных пользователей. Их можно просматривать рядом с каждым видео-контентом, но, к сожалению, они не находятся в исходном коде. Для автономного процесса сбора такой информации воспользуйтесь exportcomments.com. Достаточно лишь скопировать URL видео TikTok в поле поиска и дождаться завершения процесса. Ниже приведен отрывок, который включает в себя точные имена пользователей, дату, время, лайки и комментарии к целевой записи.

3ea6c169220594f60018054be3e1e7db.png


Видео TikTok


При поиске интересующего видео на TikTok оригинальная ссылка на страницу видео не предлагает функцию загрузки, а щелчок правой кнопкой мыши не предоставляет никаких полезных опций, в том числе, как и исходный код файла. Вместо этого следует полагаться на сторонние сайты, как например Experts PHP.

462950fb536dc184c16cbbd1a6114d6f.png


Служба Experts PHP передает URL адрес выбранного видео на официальный видео сервер TikTok и дает прямую ссылку на просмотр и скачивание видео в 720p. А теперь давайте рассмотрим пример, как с помощью уязвимости серверов TikTok, можно подделать видео для любого пользователя.

Интеграция собственного видео на заглавном экране


Приложение TikTok использует небезопасный протокол HTTP для загрузки всего своего медиа-контента. Как и многие приложения, предназначенные для социальных сетей или с большой и активной базой пользователей, TikTok использует сети доставки (и дистрибуции) содержимого контента (CDN) для плотного распределения своих массивных данных в рамках всего мира. Выбор в пользу CDN, TikTok объясняет более быстрой передачей видео и других мультимедийных данных по протоколу HTTP. Хоть это и повышает скорость и производительность передачи файлов, использование незащищенного трафика ставит под угрозу личные данные и конфиденциальность пользователей. Анализ HTTP протокола может быть вполне легко отслежен и изменен со стороны посредника.

На момент написания этой статьи, в версиях TikTok для iOS (версия 15.5.6) и для Android (версия 15.7.4) использовался обычный HTTP для подключения к CDN сетям TikTok. После небольшого сеанса перехвата и анализа сетевого трафика из TikTok с помощью Wireshark, можно с легкостью заметить сетевые запросы с пакетами видео и изображений, которые передаются в полностью открытом и незашифрованном виде.

Ниже, в качестве примера показан сетевой трафик, перехваченный Wireshark:

de4f500b762be2a46fe9ae8b8a078771.png


Таким образом, TikTok наследует все известные и хорошо задокументированные уязвимости HTTP. Любой маршрутизатор, установленный между приложением TikTok и его CDN, может очень легко документировать все сетевые пакеты с видео, которые пользователь скачал и просмотрел вместе с историей просмотра. Операторы общественных Wi-Fi точек и интернет-провайдеры могут собирать эти данные без особых усилий.

Вот перечень всех данных которые транспортируются через HTTP канал в TikTok:

  • Видео — все видео, находящиеся в приложении.
  • Фотографии — все фотографии, включая фотографии профилей предварительного просмотра.
  • Видеоизображения — изображение предварительного просмотра видео, отображающееся при загрузке видео.


Все типы контента, перечисленные выше, подвержены отслеживанию. Например, история наблюдения может быть создана путем захвата сетевого трафика, загруженного с http://v34.muscdn.com.

MITM-атака может полностью изменить загруженный контент в вашем телефоне. Однако, значительным ограничением данной атаки служит факт того, что пользователь должен находиться вместе с злоумышленником в одной локальной сети. Только таким образом злоумышленник сможет вклиниться в канал (с использованием атаки ARP Spoofing) и передавать большое количество поддельных фактов в замененном видео, которые могут принадлежать знаменитостям или доверенной учетной записи пользователей.

Замена и распространение вводящих в заблуждение фальшивых видео на такой интерактивной платформе как TikTok, представляет огромный риск. В качестве примера, далее будут выявлены риски возможных атак посредника для замены видео и анализа результатов.

Метод применения


Была подготовлена небольшая сборка поддельных видео, размещенных на сервере, который эмулирует сервера TikTok, а именно «v34.muscdn.com». Для демонстрационных целей были созданы только сценарий и условия, которые меняют видео. Были сохранены в оригинале фотографии профилей, хотя они могут быть также изменены аналогичным способом. Было эмитировано поведение только одного видеосервера для хорошего сочетания поддельных и реальных видео, чтобы вызывать чувство доверия у пользователей.

Для того чтобы TikTok показывало приготовленные видеоролики, нужно перенаправить приложение на поддельный сервер. Поскольку сервер всего лишь заменяет собой сервера TikTok, приложение не может напрямую подтвердить, что оно взаимодействует с настоящим источником. Таким образом, оно будет слепо верить и запрашивать абсолютно любой контент, загруженный с присоединенного сервера.

Вся уловка состоит в том, чтобы перенаправить приложение на созданный сервер. Это можно сделать просто добавив новую ресурсную запись в DNS, которая сопоставит имя домена v34.muscdn.com с IP-адресом поддельного сервера.

Аналогично подобное может быть сделано лицами, которые напрямую имеют доступ к маршрутизаторам пользователей. Сначала необходимо изменить файл hosts на устройстве жертвы, перенаправляющем имя домена v34.muscdn.com на фальшивый сервер. Затем, измененные маршрутизаторы должны быть настроены на использование этого DNS-сервера. Теперь, когда приложение TikTok запрашивает IP-адрес у v34.muscdn.com, DNS возвращает IP адрес поддельного сервера. В дальнейшем все последующие запросы на фальшивый сервер, который выдает себя за v34.muscdn.com от TikTok будут задаваться автоматически.

Такие действия могут быть выполнены следующими лицами:

  1. Операторы Wi-Fi: операторы общественных сетей Wi-Fi могут настроить маршрутизатор на использование уязвимого DNS сервера.
  2. Провайдеры VPN: провайдер VPN может настроить свой DNS сервер для всех пользователей использующих его сервис.
  3. Интернет-провайдеры (ISP): Интернет-провайдеры, предоставляющие доступ к интернету, имеют полный доступ к соединениям своих клиентов. Они могут перенастроить DNS сервер для того, чтобы обмениваться контентом или отслеживать действия пользователей


Если вы не доверяете ни одному из лиц приведенных выше, то есть шанс на то, что контент, который вы смотрите в TikTok, возможно, был уже изменен. Это может также относиться к любому интернет-сервису, который использует HTTP протокол для передачи данных.

Ниже показан сетевой трафик HTTP, направленный на поддельный сервер. Выделенная строка является запросом на видео, отправленное приложением на входящий IP адрес 192.168.13.2, который является адресом поддельного сервера. Затем, этот же сервер выбирает подготовленное видео и возвращает его в приложение, которое в свою очередь, воспроизводит выбранное видео пользователю, как показано в демонстрационном видео. Обратите внимание, что на поддельный сервер направляются только видео запросы, так как запросы на фотографии профиля и пользователей были оставлены без изменений, и они перенаправляются на настоящие сервера.

d4478d2c9c9439dbd5bb37c3b92f4655.png


youtu.be/voTnYPfkqlY

Созданные видеоролики содержат вводящую в заблуждение информацию о COVID-19. Таким образом был показан пример о реальном и потенциальном источнике распространения дезинформации и ложных фактов современной проблемы.

Пользователи, которые были подключены только к локальному маршрутизатору, могут видеть такой вредоносный контент. Однако, если DNS сервер крупного интернет провайдера был взломан для добавления собственной записи DNS, то как это было продемонстрировано ранее, вводящая в заблуждение информация или фальшивые новости будут просматриваться в глобальном масштабе.

SMS Спуфинг


На официальном сайте TikTok есть интересная функция, которая позволяет отправить SMS сообщение для загрузки приложения на указанный мобильный номер пользователя. Уязвимость взлома аккаунта, посредством этого функционала, была обнаружена. И в качестве примера она будет продемонстрирована ее в этой части.

Злоумышленники, желающие отправить SMS-сообщение потенциальной жертве, могут перехватить HTTP-запрос, используя прокси-инструмент (например, Burp Suite). Параметр Mobile содержит номер телефона, на который будет отправлено SMS, а параметр download_url — это ссылка, появляющаяся в сообщении SMS:

c74c79bbfe92a038ae4fe174ed8f015a.png


Пример такого SMS сообщения:

9c404f7b32b6cd59822bb8415cb00aea.jpg


При изменении параметра download_url оригинальная ссылка будет изменена, и она будет содержать другую, которая была выбрана для дальнейшей атаки. На картинке ниже показано сфабрикованное SMS-сообщение, содержащее вредоносную ссылку. Для демонстрации была использована следующая ссылку — «attacker.com»

Фальшивое SMS-сообщение, содержащее ссылку «https://attacker.com»:

4610fc460d6b0b9226182d21b1cec773.jpg


Просматривая оригинальный код приложения TikTok на мобильной платформе Android, было обнаружено, что оно имеет функцию «глубинного связывания», позволяющую открывать гиперссылку из приложения в браузере телефона.

Основными связями, через которые приложение принимает запросы, являются «https://m.tiktok.com» и «musical: //»:

6447cc40030609d2ceee862e89a541d4.png


Злоумышленники, использующие вышеописанную функциональность, могут перехватить запрос и отправить свой собственный, который будет содержать ссылки на вредоносные сервера, упомянутые выше. Так как пользовательская ссылка будет содержать параметр «url», мобильное приложение откроет окно веб-просмотра через браузер телефона и перейдет на веб-страницу, записанную в параметре из кода мобильного приложения. Таким образом, любой запрос будет отправлен вместе с cookie пользователя.

Для демонстрации была использована следующая ссылка:

a7ed2e3548d4c59a6fc6bcfa6bbd1acb.jpg


Ниже была продемонстрирована переадресация глубокой ссылки в самом приложении:

0a0ca01b83204241720b9ffef2b36778.jpg


Впоследствии мобильное приложение открывает окно веб-просмотра (браузера) и переходит на созданный веб сервер: «http://10.10.10.113:8000». С помощью которого в дальнейшем можно будет отправлять запросы от имени пользователя.

Перенаправление пользователя


В ходе исследований было обнаружено, что потенциальная жертва, нажав на отправленную ссылку, будет перенаправлена на вредоносный веб-сайт. Само перенаправление дает возможность выполнения таких атак: атаки межсайтовых сценариев (XSS), подделки межсайтовых запросов (CSRF) и раскрытия конфиденциальных данных пользователя.

Перенаправление происходит когда злоумышленник, отправляет оригинальную ссылку для входа, полученную из официального домена Tiktok: login.tiktok.com.

Было обнаружено, что запрос на логин в систему может содержать HTTP GET redirect_url. Поэтому пример запроса на аутентификацию, который в итоге будет перенаправлять пользователя на другой сайт после успешного входа, выглядит вот так:

login.tiktok.com/? redirect_url=www.tiktok.com

Измененное значение внутри «redirect_url» будет перенаправлять потенциальную жертву на веб-страницу домена tiktok в соответствии со следующим Regex выражением (выполняется только на клиентской стороне):

efe9865fee1426a4df53995ee87ad684.png


Regex выражение не проверяет значение параметра redirect_url должным образом. Скорее оно проверяет значение параметра, содержащее текст «tiktok.com». Что дает возможность сделать перенаправление на другое доменное имя, которое содержит «tiktok.com».

В демонстрационных целях злоумышленник может перенаправить пользователей на веб-сайт »www.attacker-tiktok.com» и выполнить дополнительные атаки, направленные на кражу личной информации.

c7541b2e898f23a952f48c1e8ed8453e.png


Межсайтовый скриптинг (XSS)


В ходе исследования было обнаружено, что поддомен Tiktok «https://ads.tiktok.com» уязвим для атак XSS, при которых вредоносные скрипты внедряются в другие безопасные и надежные веб-сайты. Справочный центр, доступный по адресу «https://ads.tiktok.com/help/», содержит информацию о том, как создавать и публиковать объявления в Tiktok. Здесь также была обнаружена точка внедрения XSS-атаки в функцию поиска. Когда злоумышленник пытается выполнить поиск, на сервер веб-сайта выполняется запрос HTTP GET с параметром q и искомой строкой в ​​качестве значения для поиска.

На следующей картинке показан обычный запрос на поиск, выполненный злоумышленником при поиске слова »pwned»:

ads.tiktok.com/help/search? q=pwned

f8fca3c4cb774b45555e4aab3cb22794.png


А вот здесь злоумышленник может попытаться внедрить код JavaScript в параметр q (введенное значение имеет кодировку URL). Для демонстрации был создан запрос: открыть окно в браузере с предупреждением «xss»:

ads.tiktok.com/help/search? q=%22%3Cscript%20src%20%3Djavascript%3Aalert%28%29%3E

e2da6a313df8ba0d8249d0c5d793620f.png


Управление аккаунтом пользователя TikTok


Межсайтовая подделка запросов (CSRF)


После завершения предыдущих тестов и анализа всей информации можно использовать код JavaScript двумя способами: в виде XSS атак или перенаправления пользователя на вредоносный веб-сайт, который отправит все запросы на Tiktok при помощи файлов cookie пользователя.

Из-за отсутствия механизма предотвращения подделки анти-межсайтовых запросов можно будет легко запускать предоставленный JavaScript код и выполнять действия от имени пользователя без его согласия.

Удалить видео


«Удалить видео» можно выполнить при помощи HTTP GET-запроса по ссылке написанной ниже, заменяя ID видео:

api-t.tiktok.com/aweme/v1/aweme/delete/? aweme_id=video_id.

Используя запрос JavaScript, отправляется HTTP GET запрос на удаление видео, указав его идентификатор. На следующей картинке показан сам запрос на удаление видео с идентификационным номером »6755373615039991045»:

44485eb980bb091353deda43fd3d2ce6.png


Подтверждение от сервера, что видео было успешно удалено:

90a7e0b9bbad7641482425ef14f90f75.png


Создать видео


Чтобы создать видео на профиле пользователя, для начала следует отправить запрос на создание видео в своей ленте. Запросы на создание видео будут генерировать новый видео идентификатор. Дальше, копируем сгенерированную ссылку на создание видео и отправляем HTTP POST запрос от имени другого пользователя.

Ниже показан запрос на создание видео в ленте потенциальной жертвы:

e5eff9fabc0ec035524ba75ebac10059.png


В параллели получаем вот такой положительный ответ от сервера:

3f1406cbd4c9498a82c76134ad40212a.png


Подписка на выбранного пользователя


Злоумышленники, желающие стать подписчиками аккаунта пользователя, сначала отправляют запрос. И впоследствии пользователь должен одобрить запрос. Для того чтобы это сделать, будет использоваться тот же самый метод для отправки запроса и одобрения от имени потенциальной жертвы.

Запрос на утверждение отправляется через HTTP POST через следующую ссылку:

api-m.tiktok.com/aweme/v1/commit/follow/request/approve

Внутри самого запроса POST есть параметр «from_user_id», содержащий идентификатор пользователя, который хочет быть подписчиком пользователя.

Изменяем значение параметра «from_user_id» на свой собственный и отправляем запрос на сервер TikTok:

1944c495c5f33f28560d27119c6babb7.png


На этом этапе злоумышленник становится подписчиком потенциальной жертвы:

7bfdf79490b93341199a826fc0a6fe09.png


Изменить настройки общедоступности видео


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

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

api-m.tiktok.com/aweme/v1/aweme/modify/visibility/? aweme_id=video_id&type=1&aid=1233&mcc_mnc=42503

Самые главные параметры этой ссылке это «type» и «video_id». «Video_id» — это ID видео, доступ которого нужно изменить. А «type» — это режим доступности видео. При «type = 1» запрашиваемое видео будет изменено на общедоступный режим, а «type = 2» приведет к тому, что видео станет частным.

Ниже показан HTTP GET запрос для изменения идентификатора видео »6755813399445261573» из частного режима в публичный:

66f13cfa59cdca22ff80f86ebd8dbedf.png


Ответ сервера показывает, что видео стало публичным и доступным для всех:

87e74c6dff4b842cae9781d90f94f80e.png


Разоблачение конфиденциальной информации


Исследование показало, что можно выполнять код JavaScript, используя XSS или другие методы для получения конфиденциальной информации. Было обнаружено несколько вызовов API в поддоменах «https://api-t.tiktok.com» и «https://api-m.tiktok.com». Запросы к таким API-интерфейсам помогут раскрыть конфиденциальную информацию о пользователе, включая адрес электронной почты, информацию об оплате, дату рождения и многое другое.

При попытке использовать описанные выше уязвимости через JavaScript, была обнаружена проблема, в виде защитного механизма от перекрестного общего доступа к ресурсам (CORS) и ограничениями безопасности в Same Origin Policy (SOP).

Поддомены приведенных API позволяют сделать запрос только на определенные источники (например, www.tiktok.com). В качестве примера ниже продемонстрирован запрос API, который был сделан с «https://cpr.checkpoint.com»:

5854c4ecc96109c1c748db683a64c7cd.png


В итоге ответ с сервера был заблокирован из-за установки ограничений безопасности:

2fba724633794c8b367399dc9039862d.png


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

В процессе последующего анализа было обнаружено, что сервера TikTok реализовали нетрадиционный вызов JSONP, с помощью которого был получен доступ к данным пользователя через API, обходя ограничения по безопасности CORS и SOP. Этот метод позволит «позаимствовать» всю конфиденциальную информацию пользователя через данные JSON, с помощью AJAX запроса.

На следующем примере показан AJAX-запрос на получение всей конфиденциальной информации, связанной с кошельком пользователя. Запрос содержит параметр обратного вызова, а его значение — это функция JavaScript, которая будет выполняться (myCallBackMethod):

bfd3a9d86f7e42bc884932caa32e6aee.png


В примере показаны данные, содержащие всю конфиденциальную информацию, полученную из API. Конфиденциальные данные были получены и могут быть отправлены на сервер злоумышленников:

48fe5c881f21146549341a3b82db7cfd.png


b0e5687d6bd8bb95b5209564489b84f1.png


Самостоятельно собрать все необходимые метаданные с любого пользователя вручную не составляет особого труда и без особых знаний доступно каждому. Более удобную и простую замену мануальных действий дают автономные инструменты и автоматические запросы на профили.

После проведения анализа стало понятно, что далеко не все приложения являются безопасными для хранения личной информации. Использование таких уязвимостей, как СМС спуфинг и анализ сетевого протокола HTTP, позволяют расширить обычные возможности использования OSINT технологий в анализе данных пользователей. Использование обычного протокола HTTP вместо HTTPS дает возможность не только просматривать входящий и исходящий трафик, но и получать запросы и информацию пользователя TikTok: видео, активность юзера, его видеоизображения и фотографии. А неправильно настроенные каналы для обработки и передачи информации, которые впоследствии способствуют спуфингу или возможного DDOS, помогают перехватывать точные номера телефонов для дальнейшего обратного поиска всех связующих социальных аккаунтов пользователя.

Так как же все-таки правильно обеспечить конфиденциальную защиту своей информации в TikTok? Если говорить о сборе публичной информации, то один из способов — это включение настроек приватного аккаунта, который позволяет скрыть всю информацию от публичного доступа. В случае с продемонстрированными атаками ответ остается одним и тем же: Если хочешь пользоваться, то ответственность лежит только на тебе.

Анализ всех демонстрационных атак показал риски, связанные с одним из самых популярных и широко используемых социальных приложений в мире. Проведенные атаки усиливают насущную потребность в конфиденциальности и безопасности данных в виртуальном мире интернета. Наши данные хранятся в большом количестве сетей и в них хранится самая ценная информация.

© Habrahabr.ru