
Un numero di telefono può rivelare se un dispositivo è attivo, in standby o offline (e altro). Questa PoC dimostra come le ricevute di consegna + i tempi RTT rivelino pattern sensibili di attività del dispositivo. (WhatsApp / Signal)
Tracker dell'attività di WhatsApp e Signal tramite analisi RTT
⚠️ DISCLAIMER: Solo proof-of-concept a scopo educativo e di ricerca sulla sicurezza. Dimostra vulnerabilità della privacy in WhatsApp e Signal.
Questo progetto implementa la ricerca dell'articolo "Careless Whisper: Exploiting Silent Delivery Receipts to Monitor Users on Mobile Instant Messengers" di Gabriel K. Gegenhuber, Maximilian Günther, Markus Maier, Aljosha Judmayer, Florian Holzbauer, Philipp É. Frenzel e Johanna Ullrich (Università di Vienna e SBA Research).
Cosa fa: Misurando il tempo di andata e ritorno (RTT) delle ricevute di consegna dei messaggi WhatsApp, questo strumento può rilevare:
Implicazioni per la sicurezza: Questo dimostra una significativa vulnerabilità della privacy nelle app di messaggistica che può essere sfruttata per la sorveglianza.
![]()
L'interfaccia web mostra misurazioni RTT in tempo reale, il rilevamento dello stato del dispositivo e i modelli di attività.
# 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 ..
Requisiti: Node.js 20+, npm, account WhatsApp
Il modo più semplice per eseguire l'applicazione è usare 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
L'applicazione sarà disponibile su:
CLIENT_PORT configurata)BACKEND_PORT configurata)Per fermare i container:
docker compose down
# Terminal 1: Start backend
npm run start:server
# Terminal 2: Start frontend
npm run start:client
Apri http://localhost:3000, scansiona il codice QR con WhatsApp, poi inserisci il numero di telefono da tracciare (es. 491701234567).
npm start
Segui le istruzioni per autenticarti e inserisci il numero di destinazione.
Esempio di Output:
╔════════════════════════════════════════════════════════════════╗
║ 🟡 Device Status Update - 09:41:51 ║
╠════════════════════════════════════════════════════════════════╣
║ JID: ***********@lid ║
║ Status: Standby ║
║ RTT: 1104ms ║
║ Avg (3): 1161ms ║
║ Median: 1195ms ║
║ Threshold: 1075ms ║
╚════════════════════════════════════════════════════════════════╝
Il tracker invia messaggi sonda e misura il tempo di andata e ritorno (RTT) per rilevare l'attività del dispositivo. Sono disponibili due metodi di probe:
| Metodo | Descrizione |
|---|---|
| Delete (Predefinito) | Invia una richiesta di eliminazione per un ID di messaggio inesistente. |
| Reaction | Invia un'emoji di reazione a un ID di messaggio inesistente. |
Il tempo tra l'invio del messaggio sonda e la ricezione del CLIENT ACK (Stato 3) viene misurato come RTT. Lo stato del dispositivo viene rilevato usando una soglia dinamica calcolata come il 90% del RTT mediano: i valori sotto la soglia indicano un uso attivo, quelli sopra indicano la modalità standby. Le misurazioni vengono salvate in uno storico e la mediana viene aggiornata continuamente per adattarsi a diverse condizioni di rete.
Nell'interfaccia web puoi passare da un metodo di probe all'altro usando il menu a tendina nel pannello di controllo. In modalità CLI, il metodo delete viene usato per impostazione predefinita.
auth_info_baileys/ e riscansiona il codice 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 mitigazione più efficace è attivare "Blocca messaggi da account sconosciuti" in WhatsApp nel percorso Impostazioni → Privacy → Avanzate.
Questa impostazione può ridurre la capacità di un attaccante di inviare spam di reazioni sonda da numeri sconosciuti, perché WhatsApp blocca i messaggi ad alto volume provenienti da account sconosciuti. Tuttavia, WhatsApp non rivela cosa significhi "alto volume", quindi questo non impedisce del tutto a un attaccante di inviare un numero significativo di reazioni sonda prima che entri in azione il rate-limiting.
Disattivare le ricevute di lettura aiuta con i messaggi normali, ma non protegge da questo specifico attacco. A dicembre 2025, questa vulnerabilità rimane sfruttabile in WhatsApp e Signal.
⚠️ Solo a scopo di ricerca e formazione. Non tracciare mai persone senza consenso esplicito: potrebbe violare le leggi sulla privacy. I dati di autenticazione (auth_info_baileys/) vengono archiviati localmente e non devono mai essere inclusi nel controllo di versione.
Basato sulla ricerca di Gegenhuber et al., Università di Vienna e 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}
}
Licenza MIT - Consulta il file LICENSE.
Realizzato con @whiskeysockets/baileys
Usa con responsabilità. Questo strumento dimostra reali vulnerabilità di sicurezza che colpiscono milioni di utenti.