🦷

Bluetoothが暴露するあなたの情報

BLE信号だけで生活パターン・位置・行動が追跡される原理

Bluetooth機器は周囲に自身の存在を知らせるためAdvertising Packetを持続的にブロードキャストします。このパケットにはMACアドレス、デバイス名("Jack's iPhone")、製造元ID、BLEサービスUUID(心拍計、血糖計などデバイス種類)、信号強度(RSSI)などが含まれます。BluehoodはKU Leuven研究チームのWhisperPair脆弱性(CVE-2025-36911、数億台のBTオーディオ機器のリモート乗っ取り/位置追跡が可能)公開直後に開発されたPythonベースの教育用BLEスキャナーです。パッシブスキャン(聞くだけ、接続なし)で周辺機器を検出し、Vendor+UUIDフィンガープリントでデバイス種類を分類し、ランダムMACアドレスをフィルタリングし、出現/消失パターンをSQLiteに記録します。Webダッシュボード(:8080)で時間帯別ヒートマップ、滞在時間、関連デバイス(常に一緒に現れるスマホ+ウォッチのペア)分析を可視化し、ntfy.shで特定デバイスの到着/離脱プッシュ通知もサポートします。Dockerですぐ実行可能で、制作者が自宅でパッシブモードで実行した結果、宅配車両の到着時点と同一配達員かどうか、隣人の通勤パターン、一緒に登場するデバイスの組み合わせまで把握できました。補聴器、心臓ペースメーカー、車両診断モジュールなどはユーザーがBTをオフにできず持続送出され、Briar・BitChatのようなプライバシーアプリでさえBLE有効化を要求し「保護手段がすなわち露出経路」となる矛盾が存在します。

構造ダイアグラム

BLE Advertisingパケット: 何をブロードキャストするか?
📱
BLEデバイス
ペアリングなしでも継続送出
))))
MACアドレス
AA:BB:CC:DD:EE:FF
デバイス名
"Jack's iPhone 15"
メーカーID
Apple / Samsung / ...
サービスUUID
心拍計 / 血糖計 / ...
RSSI(信号強度)
-40dBm(近い)~ -90dBm(遠い)
受動的収集: Raspberry Pi一台で十分
📱
スマートフォン
ウォッチ
🚗
車両
🫀
医療機器
)))) BLE信号 ))))
🍓
BLE受信機
Raspberry Pi / ESP32
ノートPC + Bluehood
🗄️
SQLite DB
MAC、デバイス名、時間
RSSI、滞在時間
パターン分析: メタデータが明かすもの
🏠
留守の時間帯
デバイス消失パターン
🚚
宅配到着時点
同一配達員識別
👥
訪問者パターン
定期訪問かどうか
通勤時間
デバイス出現/消失
📱+⌚
デバイスの組み合わせ
同一ユーザー識別
🏪
動線追跡
ショッピングモールで既に商用化
MACランダム化: 防御と回避
防御(最新デバイス)
Resolvable Private Address
MACアドレス定期ローテーション
iOS/Android標準サポート
回避(依然として追跡可能)
ローテーションタイミング追跡で同一デバイス推定
デバイス組み合わせパターン(フォン+ウォッチ同時出現)
医療機器/車両は固定MAC使用
Bluehood: BLE露出デモツール
KU Leuven WhisperPair脆弱性(CVE-2025-36911)公開直後に開発された教育用スキャナー
BLEパッシブスキャン
リッスンのみ、接続なし
デバイス分類
Vendor + UUIDフィンガープリント
ランダムMACフィルター
ランダムアドレス分離
SQLite保存
出現/消失タイムスタンプ
Webダッシュボード
:8080 ヒートマップ/分析
パッシブスキャン
接続/相互作用なし
デバイス分類
フォン/ウォッチ/車両/IoT/医療
時間帯ヒートマップ
時間別/日別パターン
滞在時間
デバイス別滞在時間
関連デバイス検出
常に一緒に出現するペア
プッシュ通知
ntfy.sh連携
# Dockerですぐ実行
$ git clone https://github.com/dannymcc/bluehood.git
$ cd bluehood && docker compose up -d
# http://localhost:8080 でダッシュボード確認
オフにできないデバイス: ユーザーに選択権がない
🦻
補聴器
リモート操作/診断用BLE
🫀
ペースメーカー
死後も信号送出
🚐
車両/物流
診断・管理用常時送信
スマートウォッチ
BTなしで動作不可
🐕
ペットGPS
スマホ連携必須
プライバシーの逆説: Briar、BitChatなどのプライバシーアプリもBLE有効化が必須 — 保護手段が露出経路に
核心: Bluetoothをオンにしておくこと = 自分の位置と生活パターンを放送し続けること。Raspberry Pi一台で誰でも収集可能

動作フロー

1

BLEデバイスがAdvertising Packetを周期的にブロードキャスト(MAC、デバイス名、UUID、RSSI含む)

2

Bluehoodがパッシブスキャンモードでパケット収集 — 接続/インタラクションなしで聴取のみ(ペアリング不要)

3

Vendor ID + BLEサービスUUIDフィンガープリントでデバイス種類を自動分類(スマホ/ウォッチ/車両/医療/IoT)

4

ランダムMACアドレス検出およびフィルタリング → 固定MACデバイスのみを追跡対象として分離

5

出現/消失タイムスタンプをSQLiteに記録、時間帯別ヒートマップ・滞在時間・関連デバイス分析

6

Webダッシュボード(:8080)でパターン可視化 + ntfy.shプッシュ通知で特定デバイスの到着/離脱を通報

メリット

  • パッシブ収集のみで追跡可能(ペアリング不要)
  • 安価な機器で実装可能(ラズベリーパイ、ESP32)
  • 壁を透過するため視覚的監視より隠密
  • デバイス種類・製造元まで識別可能
  • 長期間パターン分析で生活習慣を把握

デメリット

  • MACランダム化で最新デバイスの追跡が次第に困難に
  • 信号範囲制限(Class 2 BLE: ~10m)
  • 密集環境でデバイス間の区別が困難
  • 法的制約 — EUなどで明示的同意のない追跡が禁止
  • メタデータだけでは個人識別に限界(追加情報が必要)

ユースケース

ショッピングモール顧客動線追跡(既に商用化) 交通量測定(BT/EZ-Pass信号で車両速度計算) スマートビルディング在室検知 盗難防止 / 紛失物追跡(AirTag、Find My) セキュリティ監査 — 組織内BLEデバイス露出チェック