
Un número de teléfono puede revelar si un dispositivo está activo, en espera o sin conexión (y más). Este PoC demuestra cómo las confirmaciones de entrega + la temporización RTT filtran patrones sensibles de actividad del dispositivo. (WhatsApp / Signal)
Rastreador de actividad de WhatsApp y Signal mediante análisis RTT
⚠️ DESCARGO DE RESPONSABILIDAD: Prueba de concepto únicamente con fines educativos y de investigación en seguridad. Demuestra vulnerabilidades de privacidad en WhatsApp y Signal.
Este proyecto implementa la investigación del artículo "Careless Whisper: Exploiting Silent Delivery Receipts to Monitor Users on Mobile Instant Messengers" de Gabriel K. Gegenhuber, Maximilian Günther, Markus Maier, Aljosha Judmayer, Florian Holzbauer, Philipp É. Frenzel y Johanna Ullrich (Universidad de Viena y SBA Research).
Qué hace: Al medir el tiempo de ida y vuelta (RTT) de los recibos de entrega de mensajes de WhatsApp, esta herramienta puede detectar:
Implicaciones de seguridad: Esto demuestra una vulnerabilidad de privacidad significativa en las aplicaciones de mensajería que puede ser explotada para vigilancia.
![]()
La interfaz web muestra mediciones de RTT en tiempo real, detección del estado del dispositivo y patrones de actividad.
# Clone repository
git clone https://github.com/gommzystudio/device-activity-tracker.git
cd device-activity-tracker
# Install dependencies
npm install
cd client && npm install && cd ..
Requisitos: Node.js 20+, npm, cuenta de WhatsApp
La forma más sencilla de ejecutar la aplicación es mediante Docker:
# Copy environment template
cp .env.example .env
# (Optional) Customize ports in .env file
# BACKEND_PORT=3001
# CLIENT_PORT=3000
# Build and start containers
docker compose up --build
La aplicación estará disponible en:
CLIENT_PORT configurado)BACKEND_PORT configurado)Para detener los contenedores:
docker compose down
# Terminal 1: Start backend
npm run start:server
# Terminal 2: Start frontend
npm run start:client
Abra http://localhost:3000, escanee el código QR con WhatsApp y luego introduzca el número de teléfono a rastrear (p. ej., 491701234567).
npm start
Siga las indicaciones para autenticarse e introducir el número de destino.
Salida de ejemplo:
╔════════════════════════════════════════════════════════════════╗
║ 🟡 Device Status Update - 09:41:51 ║
╠════════════════════════════════════════════════════════════════╣
║ JID: ***********@lid ║
║ Status: Standby ║
║ RTT: 1104ms ║
║ Avg (3): 1161ms ║
║ Median: 1195ms ║
║ Threshold: 1075ms ║
╚════════════════════════════════════════════════════════════════╝
El rastreador envía mensajes de prueba y mide el tiempo de ida y vuelta (RTT) para detectar la actividad del dispositivo. Hay dos métodos de prueba disponibles:
| Método | Descripción |
|---|---|
| Eliminar (Predeterminado) | Envía una solicitud de "eliminación" para un ID de mensaje inexistente. |
| Reacción | Envía un emoji de reacción a un ID de mensaje inexistente. |
El tiempo transcurrido entre el envío del mensaje de prueba y la recepción del CLIENT ACK (Estado 3) se mide como RTT. El estado del dispositivo se detecta mediante un umbral dinámico calculado como el 90 % de la mediana del RTT: los valores por debajo del umbral indican uso activo y los valores por encima indican modo de espera. Las mediciones se almacenan en un historial y la mediana se actualiza continuamente para adaptarse a diferentes condiciones de red.
En la interfaz web, puede cambiar entre métodos de prueba mediante el menú desplegable del panel de control. En el modo CLI, el método de eliminación se utiliza por defecto.
auth_info_baileys/ y vuelva a escanear el código QR.device-activity-tracker/
├── src/
│ ├── tracker.ts # WhatsApp RTT analysis logic
│ ├── signal-tracker.ts # Signal RTT analysis logic
│ ├── server.ts # Backend API server (both platforms)
│ └── index.ts # CLI interface
├── client/ # React web interface
└── package.json
La mitigación más eficaz es activar "Bloquear mensajes de cuentas desconocidas" en WhatsApp en Ajustes → Privacidad → Avanzado.
Esta configuración puede reducir la capacidad de un atacante para enviar reacciones de prueba masivas desde números desconocidos, porque WhatsApp bloquea los mensajes de alto volumen procedentes de cuentas desconocidas. Sin embargo, WhatsApp no revela qué significa "alto volumen", por lo que esto no impide por completo que un atacante envíe un número significativo de reacciones de prueba antes de que se aplique la limitación de frecuencia.
Desactivar los recibos de lectura ayuda con los mensajes normales, pero no protege contra este ataque específico. A diciembre de 2025, esta vulnerabilidad sigue siendo explotable en WhatsApp y Signal.
⚠️ Solo con fines de investigación y educativos. Nunca rastree a personas sin su consentimiento explícito - esto puede violar las leyes de privacidad. Los datos de autenticación (auth_info_baileys/) se almacenan localmente y nunca deben enviarse al control de versiones.
Basado en la investigación de Gegenhuber et al., Universidad de Viena y 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}
}
Licencia MIT: consulte el archivo LICENSE.
Construido con @whiskeysockets/baileys
Úselo de manera responsable. Esta herramienta demuestra vulnerabilidades de seguridad reales que afectan a millones de usuarios.