🦷

블루투스가 노출하는 당신의 정보들

BLE 신호만으로 생활 패턴·위치·행동이 추적되는 원리

블루투스 기기는 주변에 자신의 존재를 알리기 위해 Advertising Packet을 지속적으로 브로드캐스트합니다. 이 패킷에는 MAC 주소, 기기명("Jack's iPhone"), 제조사 ID, BLE 서비스 UUID(심박계, 혈당계 등 기기 종류), 신호 세기(RSSI) 등이 포함됩니다. Bluehood는 KU Leuven 연구진의 WhisperPair 취약점(CVE-2025-36911, 수억 대 BT 오디오 기기의 원격 탈취/위치 추적 가능) 공개 직후 개발된 Python 기반 교육용 BLE 스캐너입니다. 수동 스캔(듣기만, 연결 안 함)으로 주변 기기를 탐지하고 Vendor+UUID 핑거프린트로 기기 종류를 분류하며, 무작위 MAC 주소를 필터링하고, 출현/사라짐 패턴을 SQLite에 기록합니다. 웹 대시보드(:8080)에서 시간대별 히트맵, 체류 시간, 연관 기기(항상 함께 나타나는 폰+워치 쌍) 분석을 시각화하고, ntfy.sh로 특정 기기의 도착/이탈 푸시 알림도 지원합니다. Docker로 바로 실행 가능하며, 제작자가 자택에서 수동 모드로 실행한 결과 택배 차량 도착 시점과 동일 기사 여부, 이웃의 출퇴근 패턴, 함께 등장하는 기기 조합까지 파악할 수 있었습니다. 보청기, 심박조율기, 차량 진단 모듈 등은 사용자가 BT를 끌 수 없어 지속 송출되며, Briar·BitChat 같은 프라이버시 앱조차 BLE 활성화를 요구해 "보호 수단이 곧 노출 경로"가 되는 모순이 존재합니다.

구조 다이어그램

BLE Advertising Packet: 뭘 브로드캐스트하나?
📱
BLE 기기
페어링 없이도 계속 송출
))))
MAC 주소
AA:BB:CC:DD:EE:FF
기기명
"Jack's iPhone 15"
제조사 ID
Apple / Samsung / ...
서비스 UUID
심박계 / 혈당계 / ...
RSSI (신호 세기)
-40dBm (가까움) ~ -90dBm (멀리)
수동 수집: 라즈베리파이 하나로 충분
📱
스마트폰
워치
🚗
차량
🫀
의료기기
)))) BLE 신호 ))))
🍓
BLE 수신기
Raspberry Pi / ESP32
노트북 + 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 저장
출현/사라짐 타임스탬프
웹 대시보드
: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 활성화가 필수 — 보호 수단이 곧 노출 경로
핵심: 블루투스를 켜두는 것 = 자신의 위치와 생활 패턴을 계속 방송하는 것. 라즈베리파이 하나면 누구나 수집 가능

동작 흐름

1

BLE 기기가 Advertising Packet을 주기적으로 브로드캐스트 (MAC, 기기명, UUID, RSSI 포함)

2

Bluehood가 수동 스캔 모드로 패킷 수집 — 연결/상호작용 없이 듣기만 (페어링 불필요)

3

Vendor ID + BLE 서비스 UUID 핑거프린트로 기기 종류 자동 분류 (폰/워치/차량/의료/IoT)

4

무작위 MAC 주소 감지 및 필터링 → 고정 MAC 기기만 추적 대상으로 분리

5

출현/사라짐 타임스탬프를 SQLite에 기록, 시간대별 히트맵·체류 시간·연관 기기 분석

6

웹 대시보드(:8080)에서 패턴 시각화 + ntfy.sh 푸시 알림으로 특정 기기 도착/이탈 통보

장점

  • 수동 수집만으로 추적 가능 (페어링 불필요)
  • 저렴한 장비로 구현 (라즈베리파이, ESP32)
  • 벽을 투과하므로 시각적 감시보다 은밀
  • 기기 종류·제조사까지 식별 가능
  • 장기간 패턴 분석으로 생활 습관 파악

단점

  • MAC 무작위화로 최신 기기 추적이 점점 어려워짐
  • 신호 범위 제한 (Class 2 BLE: ~10m)
  • 밀집 환경에서 기기 간 구분 어려움
  • 법적 제약 — EU 등에서 명시적 동의 없는 추적 금지
  • 메타데이터만으로는 개인 식별에 한계 (추가 정보 필요)

사용 사례

쇼핑몰 고객 동선 추적 (이미 상용화) 교통량 측정 (BT/EZ-Pass 신호로 차량 속도 계산) 스마트 빌딩 재실 감지 도난 방지 / 분실물 추적 (AirTag, Find My) 보안 감사 — 조직 내 BLE 기기 노출 점검