
Номер телефона может показать, активно ли устройство, находится ли оно в режиме ожидания или офлайн (и не только). Эта PoC демонстрирует, как уведомления о доставке + временные замеры RTT утекают конфиденциальные паттерны активности устройства. (WhatsApp / Signal)
Трекер активности WhatsApp и Signal через анализ RTT
⚠️ ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Концепт-доказательство только для образовательных целей и исследований в области безопасности. Демонстрирует уязвимости конфиденциальности в WhatsApp и Signal.
Этот проект реализует исследования из статьи «Careless Whisper: Exploiting Silent Delivery Receipts to Monitor Users on Mobile Instant Messengers» авторов Gabriel K. Gegenhuber, Maximilian Günther, Markus Maier, Aljosha Judmayer, Florian Holzbauer, Philipp É. Frenzel и Johanna Ullrich (Венский университет и SBA Research).
Что он делает: Измеряя время кругового пути (RTT) уведомлений о доставке сообщений WhatsApp, этот инструмент может обнаружить:
Последствия для безопасности: Это демонстрирует значительную уязвимость конфиденциальности в приложениях для обмена сообщениями, которую можно использовать для слежки.
![]()
Веб-интерфейс показывает измерения RTT в реальном времени, определение состояния устройства и паттерны активности.
# Клонирование репозитория
git clone https://github.com/gommzystudio/device-activity-tracker.git
cd device-activity-tracker
# Установка зависимостей
npm install
cd client && npm install && cd ..
Требования: Node.js 20+, npm, учётная запись WhatsApp
Самый простой способ запуска приложения — использование Docker:
# Копирование шаблона окружения
cp .env.example .env
# (Опционально) Настройка портов в файле .env
# BACKEND_PORT=3001
# CLIENT_PORT=3000
# Сборка и запуск контейнеров
docker compose up --build
Приложение будет доступно по адресам:
CLIENT_PORT)BACKEND_PORT)Чтобы остановить контейнеры:
docker compose down
# Терминал 1: Запуск бэкенда
npm run start:server
# Терминал 2: Запуск фронтенда
npm run start:client
Откройте http://localhost:3000, отсканируйте QR-код с помощью WhatsApp, затем введите номер телефона для отслеживания (например, 491701234567).
npm start
Следуйте подсказкам для аутентификации и ввода целевого номера.
Пример вывода:
╔════════════════════════════════════════════════════════════════╗
║ 🟡 Обновление статуса устройства - 09:41:51 ║
╠════════════════════════════════════════════════════════════════╣
║ JID: ***********@lid ║
║ Статус: Ожидание ║
║ RTT: 1104мс ║
║ Среднее (3): 1161мс ║
║ Медиана: 1195мс ║
║ Порог: 1075мс ║
╚════════════════════════════════════════════════════════════════╝
Трекер отправляет пробные сообщения и измеряет время кругового пути (RTT) для определения активности устройства. Доступны два метода проб:
| Метод | Описание |
|---|---|
| Удаление (по умолчанию) | Отправляет запрос на «удаление» для несуществующего ID сообщения. |
| Реакция | Отправляет эмодзи-реакцию на несуществующий ID сообщения. |
Время между отправкой пробного сообщения и получением CLIENT ACK (Статус 3) измеряется как RTT. Состояние устройства определяется с помощью динамического порога, вычисляемого как 90% от медианы RTT: значения ниже порога указывают на активное использование, значения выше — на режим ожидания. Измерения сохраняются в истории, а медиана непрерывно обновляется для адаптации к различным сетевым условиям.
В веб-интерфейсе вы можете переключаться между методами проб с помощью выпадающего списка на панели управления. В режиме командной строки по умолчанию используется метод удаления.
auth_info_baileys/ и повторно отсканируйте QR-код.device-activity-tracker/
├── src/
│ ├── tracker.ts # Логика анализа RTT для WhatsApp
│ ├── signal-tracker.ts # Логика анализа RTT для Signal
│ ├── server.ts # Сервер API бэкенда (обе платформы)
│ └── index.ts # Интерфейс командной строки
├── client/ # Веб-интерфейс React
└── package.json
Наиболее эффективное смягчение — включить «Блокировать сообщения от незнакомых аккаунтов» в WhatsApp в разделе Настройки → Конфиденциальность → Дополнительно.
Эта настройка может снизить способность злоумышленника атаковать пробными реакциями с неизвестных номеров, поскольку WhatsApp блокирует высокочастотные сообщения от неизвестных аккаунтов. Однако WhatsApp не раскрывает, что означает «высокая частота», поэтому это не полностью предотвращает возможность злоумышленника отправлять значительное количество пробных реакций до срабатывания ограничения частоты.
Отключение уведомлений о прочтении помогает с обычными сообщениями, но не защищает от этой конкретной атаки. По состоянию на декабрь 2025 года эта уязвимость остаётся эксплуатируемой в WhatsApp и Signal.
⚠️ Только для исследовательских и образовательных целей. Никогда не отслеживайте людей без явного согласия — это может нарушать законы о конфиденциальности. Данные аутентификации (auth_info_baileys/) хранятся локально и ни в коем случае не должны попадать в систему контроля версий.
Основано на исследованиях Gegenhuber и др., Венский университет и SBA Research:
@inproceedings{gegenhuber2024careless,
title={Careless Whisper: Exploiting Silent Delivery Receipts to Monitor Users on Mobile Instant Messengers},
author={Gegenhuber, Gabriel K. and G{\"u}nther, Maximilian and Maier, Markus and Judmayer, Aljosha and Holzbauer, Florian and Frenzel, Philipp {\'E}. and Ullrich, Johanna},
year={2024},
organization={University of Vienna, SBA Research}
}
Лицензия MIT — см. файл LICENSE.
Создано с помощью @whiskeysockets/baileys
Используйте ответственно. Этот инструмент демонстрирует реальные уязвимости безопасности, затрагивающие миллионы пользователей.