Yomi name что это

Хакаем WhatsApp, чтобы следить за активностью контактов

WhatsApp сообщает пользователю статус его контактов.

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

Дисклеймер: эта статья является proof of concept, призванной привлечь внимание к проблеме, а также попрактиковать свои технические навыки. Не используйте код для слежки за людьми.

Yomi name что это. . Yomi name что это фото. Yomi name что это-. картинка Yomi name что это. картинка

WhatsApp на Android

Эксплойт функции

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

Чтобы разобраться, я использую https://web.whatsapp.com/ в веб-браузере ноутбука вместо приложения в Android-смартфоне. То есть для создания эксплойта мне придётся иметь дело с обычным реверс-инжинирингом веб-приложения. Реверс-инжиниринг приложения для Android я оставлю на потом.

Я выбрал друга из контактов телефона, чтобы посмотреть, как ведёт себя его статус на моей стороне.

Yomi name что это. image loader. Yomi name что это фото. Yomi name что это-image loader. картинка Yomi name что это. картинка image loader

Разблокирую телефон друга и открываю приложение (не WhatsApp), занимаюсь этим минуту, на моей стороне ничего не происходит.

Yomi name что это. image loader. Yomi name что это фото. Yomi name что это-image loader. картинка Yomi name что это. картинка image loader

Статус online сохраняется, пока я не выхожу из WhatsApp или не отключаю экран целевого телефона.

После этого приложение возвращается к новому last seen и состоянию offline.

Yomi name что это. image loader. Yomi name что это фото. Yomi name что это-image loader. картинка Yomi name что это. картинка image loader

Технический анализ

Открываю отладчик Firefox, чтобы посмотреть, как фронтенд веб-приложения WhatsApp получает нужные данные.

Фронтенд использует для получения данных в реальном времени связь через веб-сокеты, примерно через каждые 10-15 секунд.

Yomi name что это. image loader. Yomi name что это фото. Yomi name что это-image loader. картинка Yomi name что это. картинка image loader

Yomi name что это. image loader. Yomi name что это фото. Yomi name что это-image loader. картинка Yomi name что это. картинка image loader

Когда статус контакта меняется, сервер передаёт фронтенду сообщение другого типа.

Yomi name что это. image loader. Yomi name что это фото. Yomi name что это-image loader. картинка Yomi name что это. картинка image loader

Yomi name что это. image loader. Yomi name что это фото. Yomi name что это-image loader. картинка Yomi name что это. картинка image loader

Временная метка совпадает с тем, что мы видим в UI.

Yomi name что это. image loader. Yomi name что это фото. Yomi name что это-image loader. картинка Yomi name что это. картинка image loader

Ограничения

Для получения событий presence от сервера через веб-сокеты, мы (фронтенд) подписываемся на конкретный номер телефона ( id ). Это срабатывает, когда мы выбираем другую беседу/контакт при помощи веб-интерфейса.

Yomi name что это. image loader. Yomi name что это фото. Yomi name что это-image loader. картинка Yomi name что это. картинка image loader

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

Также WhatsApp не позволяет нам открывать несколько параллельных экземпляров приложения (с одинаковыми куки). То есть мы никак не сможем одновременно открыть два канала веб-сокетов. Это было бы слишком просто!

Yomi name что это. image loader. Yomi name что это фото. Yomi name что это-image loader. картинка Yomi name что это. картинка image loader

И, наконец, это поведение вида «одна веб-сессия WhatsApp за раз» сохраняется при попытке создания двух независимых сессий (с разными куки). Новая сессия заставляет старую закрыться, в частности, на слое веб-сокетов.

Ещё одно ожидаемое ограничение: валидность сессии ограничена по времени. Срок моей истёк 22.10.2020, спустя шесть с лишним месяцев. Странно, что можно так получить подобную информацию на фронтенде. Возможно, я что-то не так понял.

Yomi name что это. image loader. Yomi name что это фото. Yomi name что это-image loader. картинка Yomi name что это. картинка image loader

Наивная реализация

Теперь, когда мы определили, в чём заключается функция status WhatsApp и как её можно злонамеренно использовать для слежения за пользователями, настало время писать код. Также мы взглянем на техническую реализацию и поищем возможные простые уязвимости безопасности.

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

Мне хочется увидеть, чего можно добиться дешёвым хакингом, а уже потом приступать к более сложным вещам.

Я разобью proof of concept на три этапа:

Мы реализовали базовую функциональность в 38 строках кода.

Наконец, я реализовал в коде цикл, постоянно сканирующий статус и сохраняющий его в InfluxDB 2.0.

InfluxDB — это база данных временных рядов (time-series database). Она идеально нам подходит.

Извлечение наших данных — это превращение данных событий в данные временных рядов.

Такая структура лучше подходит для InfluxDB и особенно для Grafana, которая будет отображать наши данные. К тому же она не хранит состояния, мне это нравится.

Для сохранения данных в InfluxDB 2.0 я использую клиент Node.js с форматом line protocol базы данных InfluxDB.

Сохраняемые данные выглядят так:

Существует пограничный случай, который бы я хотел обрабатывать: иногда в WhatsApp статус вообще не отображается.

Теперь мы подключим Grafana к InfluxDB и создадим дэшборд для слежения за полученными данными.

Yomi name что это. image loader. Yomi name что это фото. Yomi name что это-image loader. картинка Yomi name что это. картинка image loader

Исходный код этого proof of concept можно найти здесь.

Часть 2. Отслеживаем 5000 случайных телефонов

В предыдущей части мы выяснили, что достаточно легко взломать онлайн-статус контакта WhatsApp. Простую информацию Online или last seen yesterday at 19:00 реверс-инжинирингом можно заставить выполнять утечку пользования телефоном с точностью в несколько секунд.

Но я ещё не сказал о гораздо более странной вещи: можно отслеживать любой мобильный телефон! Давайте поиграем и увеличим масштабы слежения до 5000 случайных номеров.

Как и в первой части, я делюсь исходным кодом как PROOF OF CONCEPT. Если вам больше интересны результаты, чем технические подробности, то можете сразу переходить в конец статьи. Мы снова будем использовать предыдущий код на основе Node.js, Puppeteer и Grafana.

Мои друзья, мои контакты

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

Yomi name что это. . Yomi name что это фото. Yomi name что это-. картинка Yomi name что это. картинка

Хотя для добавления номера в список контактов не требуется, WhatsApp защищает пользователей, предлагая им согласиться на ответ или сообщить о спаме при первом обмене сообщениями. Безусловно, это помогает бороться с ботами.

Как ни удивительно, это не относится к статусу Last Seen.

Yomi name что это. image loader. Yomi name что это фото. Yomi name что это-image loader. картинка Yomi name что это. картинка image loader

Yomi name что это. mlzecnq5tgsie14eclcgzky8si0. Yomi name что это фото. Yomi name что это-mlzecnq5tgsie14eclcgzky8si0. картинка Yomi name что это. картинка mlzecnq5tgsie14eclcgzky8si0

Экспериментируем с 5000 контактов

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

Поэтому я усложню задачу, вычислю анонимную статистику и запишу данные. Давайте увеличим масштаб до 5000 телефонов.

Генерируем 5000 контактов

Чтобы расширить proof of concept до 5000 контактов, мне нужно будет зарегистрировать 5000 контактов в телефоне! И я не собираюсь делать это вручную.

Yomi name что это. image loader. Yomi name что это фото. Yomi name что это-image loader. картинка Yomi name что это. картинка image loader

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

Yomi name что это. image loader. Yomi name что это фото. Yomi name что это-image loader. картинка Yomi name что это. картинка image loader

На случай, если вы больше привыкли к CSV в Excel…

Я написал скрипт для генерации CSV из 5000 контактов:

Yomi name что это. image loader. Yomi name что это фото. Yomi name что это-image loader. картинка Yomi name что это. картинка image loader

Набор из 5000 французских номеров

И импортировал их в Gmail.

Yomi name что это. image loader. Yomi name что это фото. Yomi name что это-image loader. картинка Yomi name что это. картинка image loader

Почему это так легко, Google, ты что, крэйзи?

Затем я убедился, что мой телефон их синхронизировал (бедному телефону потребовался на синхронизацию целый час, не думаю, что он сможет выдержать ещё пять тысяч контактов).

Yomi name что это. image loader. Yomi name что это фото. Yomi name что это-image loader. картинка Yomi name что это. картинка image loader

Получение данных

Я модифицировал свой код так, чтобы он обходил в цикле все 5000 импортированных неизвестных контактов, и запустил его.

Yomi name что это. image loader. Yomi name что это фото. Yomi name что это-image loader. картинка Yomi name что это. картинка image loader

Оставил этот краулер на пару дней. (На самом деле на шесть дней, и это при помощи совершенно тупого кода! Серьёзно, здесь нет никакой защиты.) И вот какие получились красивые данные в дэшборде Grafana, взятом из предыдущего проекта.

Yomi name что это. image loader. Yomi name что это фото. Yomi name что это-image loader. картинка Yomi name что это. картинка image loader

Исходная выборка в 100 контактов. Каждое падение до 0 означает, что контакт пользовался смартфоном.

Также мы можем проверять, зарегистрирован ли номер в WhatsApp, выполняя запросы, как показано на скриншоте ниже.

Yomi name что это. image loader. Yomi name что это фото. Yomi name что это-image loader. картинка Yomi name что это. картинка image loader

Заключение

Мне удалось продолжать сканировать 5000 телефонов непрерывно в течение месяца при помощи простого кода скрейпинга.

Очевидно, WhatsApp не проверяет и не предупреждает злонамеренное использование этой функции. Мне удалось 15 000 раз использовать движок поиска для получения данных last seen за одну веб-сессию.

Для исследования я наскрейпил множество данных из 112 тысяч записей.

Моё исследование показало, что можно:

Я использовал французский диапазон номеров 06xxxxxxxx (или 00336xxxxxxxx ), который переполнился 10 лет назад (поэтому тогда появился диапазон 07xxxxxxxx ). Поэтому, вероятно, можно допустить, что по крайней мере 80% номеров телефонов действительны.

Yomi name что это. image loader. Yomi name что это фото. Yomi name что это-image loader. картинка Yomi name что это. картинка image loader

Снижение с 1357 активных пользователей в прошлом месяце до 281 на прошлой неделе довольно значительно, его можно связать с критикой WhatsApp в конце декабря 2020 года. Мне не очень интересно изучать эти данные подробнее, на этом всё, спасибо за внимание.

Messenger, Signal и Telegram (бонус)

(Facebook) Messenger не использует номеров телефонов контактов для поиска пользователей, потому что пользуется для этого аккаунтами Facebook. Совершенно иная структура, поскольку это социальная сеть и она меньше похожа на мобильный сервис VOIP. Думаю, множество похожих хаков с получением информации можно реализовать и в Messenger. Но это уже другая история, возможно, оставим её на следующий раз?

Signal и Telegram больше похожи на WhatsApp с точки зрения работы с контактами. Однако утечки там не так велики.

Yomi name что это. . Yomi name что это фото. Yomi name что это-. картинка Yomi name что это. картинка

В первый день исследования из 5000 пользователей 94 было в Signal, и каждый последующий день появлялось по 1-2 новичка. Никто не использует Signal во Франции, очевидно, влияние Илона Маска здесь не так велико.

Yomi name что это. l74ibb1tgaf0hoiop xof3nk 2a. Yomi name что это фото. Yomi name что это-l74ibb1tgaf0hoiop xof3nk 2a. картинка Yomi name что это. картинка l74ibb1tgaf0hoiop xof3nk 2a

Да, это картинка, чтобы за вами не могли следить.

На правах рекламы

VDSina предлагает безопасные серверы с посуточной оплатой. Возможно установить любую операционную систему, в том числе из своего образа. Каждый сервер подключён к интернет-каналу в 500 Мегабит и бесплатно защищён от DDoS-атак!

Источник

PowerObjects Blog

Dynamics 365 Sales

Post Author: Joe D365 | February 17th, 2015

When first configuring built-in entities for Microsoft Dynamics CRM, you’ll notice a plethora of out-of-the-box fields. Many fields exist in order to reduce the need for creating of common fields. However if you look through the list of fields available you may come across some that are difficult to understand at first.

Yomi Name is an out-of-the-box field that has the same functionality of First and Last Name for a contact. However, it allows for the user to indicate the phonetic annunciation of the name as described in the description of the field:

«Type the phonetic spelling of the contact’s first name, if the name is specified in Japanese, to make sure the name is pronounced correctly in phone calls with the contact.»

Even though the example indicates that this is meant for names foreign to local dialect, this can still be greatly beneficial for Contacts with complex name or names pronounced differently than the spelling.

Yomi name что это. 020515 1930 WhatisYomiN1. Yomi name что это фото. Yomi name что это-020515 1930 WhatisYomiN1. картинка Yomi name что это. картинка 020515 1930 WhatisYomiN1

Let PowerObjects help drive your business with more tips and tricks like this or find out more by following our Dynamics CRM blogs or check our FREE CRM Book where we are constantly updating content so that it is up to date and always relevant.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *