
電話番号から、デバイスがアクティブ状態か、スタンバイ状態か、オフライン状態か(およびそれ以上の情報)を明らかにすることができます。このPoCは、配信レシートとRTTタイミングが、機密性の高いデバイスのアクティビティパターンを漏えいさせることを実証しています。(WhatsApp / Signal)
RTT解析によるWhatsApp & Signalアクティビティトラッカー
⚠️ 免責事項: 教育およびセキュリティ研究目的のみの概念実証です。WhatsAppとSignalのプライバシー上の脆弱性を示すものです。
このプロジェクトは、Gabriel K. Gegenhuber、Maximilian Günther、Markus Maier、Aljosha Judmayer、Florian Holzbauer、Philipp É. Frenzel、Johanna Ullrich(ウィーン大学 & SBA Research)による論文 "Careless Whisper: Exploiting Silent Delivery Receipts to Monitor Users on Mobile Instant Messengers" の研究を実装したものです。
機能: WhatsAppのメッセージ配信レシートのラウンドトリップタイム(RTT)を測定することで、このツールは以下を検出できます:
セキュリティへの影響: これは、メッセージングアプリにおける重大なプライバシー脆弱性を示しており、監視目的で悪用される可能性があります。
![]()
Webインターフェースは、リアルタイムのRTT測定、端末状態の検出、アクティビティパターンを表示します。
# 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 ..
要件: Node.js 20+、npm、WhatsAppアカウント
アプリケーションを実行する最も簡単な方法は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
アプリケーションは以下の場所で利用できます:
CLIENT_PORT)BACKEND_PORT)コンテナを停止するには:
docker compose down
# Terminal 1: Start backend
npm run start:server
# Terminal 2: Start frontend
npm run start:client
http://localhost:3000 を開き、WhatsAppでQRコードをスキャンし、追跡する電話番号(例: 491701234567)を入力します。
npm start
プロンプトに従って認証し、対象の番号を入力します。
出力例:
╔════════════════════════════════════════════════════════════════╗
║ 🟡 Device Status Update - 09:41:51 ║
╠════════════════════════════════════════════════════════════════╣
║ JID: ***********@lid ║
║ Status: Standby ║
║ RTT: 1104ms ║
║ Avg (3): 1161ms ║
║ Median: 1195ms ║
║ Threshold: 1075ms ║
╚════════════════════════════════════════════════════════════════╝
トラッカーはプローブメッセージを送信し、ラウンドトリップタイム(RTT)を測定して端末のアクティビティを検出します。2つのプローブ方式が利用可能です:
| 方式 | 説明 |
|---|---|
| Delete(デフォルト) | 存在しないメッセージIDに対する「delete」リクエストを送信します。 |
| Reaction | 存在しないメッセージIDにリアクション絵文字を送信します。 |
プローブメッセージの送信からCLIENT ACK(ステータス3)の受信までの時間がRTTとして測定されます。端末状態は、RTTの中央値の90%として計算される動的しきい値を使用して検出されます。しきい値未満の値はアクティブな使用を示し、しきい値を超える値はスタンバイモードを示します。測定値は履歴に保存され、中央値はさまざまなネットワーク環境に適応するように継続的に更新されます。
Webインターフェースでは、コントロールパネルのドロップダウンを使用してプローブ方式を切り替えることができます。CLIモードでは、デフォルトでdelete方式が使用されます。
auth_info_baileys/ フォルダを削除し、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
最も効果的な対策は、WhatsAppの「設定 → プライバシー → 詳細」で「不明なアカウントからのメッセージをブロック」を有効にすることです。
WhatsAppは不明なアカウントからの大量メッセージをブロックするため、この設定は攻撃者が不明な番号からプローブリアクションを大量送信する能力を低下させる可能性があります。ただし、WhatsAppは「大量」の意味を開示していないため、レート制限が発動するまでに攻撃者がかなりの数のプローブリアクションを送信することを完全に防ぐことはできません。
開封確認の無効化は通常のメッセージには効果がありますが、この特定の攻撃を防ぐことはできません。2025年12月時点で、この脆弱性は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 を使用して構築
責任を持って使用してください。このツールは、何百万人ものユーザーに影響を与える実際のセキュリティ脆弱性を示しています。