naanprofit/mems-sidechannel
GitHub: naanprofit/mems-sidechannel
基于 MacBook MEMS 传感器实现侧信道攻击的研究项目,解决无硬件隐蔽探测 EMI、电机与语音活动的问题。
Stars: 0 | Forks: 0
# MEMS-Sidechannel
**通过 MacBook 传感器进行电磁、声学和光学侧信道攻击**
本项目探索利用苹果硅芯片 MacBook 内置的传感器(加速度计、陀螺仪、磁力计、环境光传感器、盖子角度传感器)进行隐蔽情报收集。
## 概述
苹果硅芯片 MacBook 包含可通过 IOKit HID 访问的多个传感器:
- **Bosch BMI286** 6 轴 IMU(加速度计 + 陀螺仪)
- **磁力计/指南针**(1597 Hz - 最高采样率)
- **环境光传感器**(122 字节报告,多个通道)
- **盖子角度传感器**(8 字节报告)
本项目演示了这些传感器可以:
1. **检测电源线和电子设备产生的电磁干扰(EMI)**
2. **检测无人机/机器人电机特征**(参见 DRONE_SIGNATURES.md)
3. **检测语音活动**(仅检测存在与否,不检测内容)
4. **通过振动监控物理存在**
5. **检测照明条件和 LED PWM 频率**
6. **跟踪盖子状态和细微运动**
## 关键发现
| 功能 | 可行性 | 传感器 | 备注 |
|------|--------|--------|------|
| 50/60 Hz EMI 检测 | **高** | 全部 | 信噪比(加速度计 6.89,陀螺仪 2.91) |
| 无人机电机检测 | **中** | 磁力计 | 400-800 Hz 范围 |
| 语音活动检测 | **中** | IMU | 仅检测存在,不检测内容 |
| LED PWM 检测 | **中** | ALS | 识别光源 |
| 语音内容 | **低** | - | 采样率过低 |
## 传感器与采样率
| 传感器 | 使用 ID | 页面 | 采样率 | 奈奎斯特极限 |
|--------|---------|------|--------|--------------|
| 加速度计 | 3 | 0xFF00 | 797 Hz | 398 Hz |
| 陀螺仪 | 9 | 0xFF00 | 794 Hz | 397 Hz |
| 磁力计 | 5 | 0xFF00 | 1597 Hz | **798 Hz** |
| ALS | 4 | 0xFF00 | 可变 | - |
| 盖子角度 | 138 | 0x0020 | 变化时触发 | - |
## 需求
- 苹果硅芯片 MacBook(M1/M2/M3/M4)
- macOS
- 根权限(sudo)
- Go 1.21+(用于 sensord-emi)
- Python 3.11+,并安装 numpy、scipy、posix_ipc
## 安装
```
# 克隆修改后的传感器守护进程(支持指南针 + ALS)
git clone https://github.com/naanprofit/mems-sidechannel
cd mems-sidechannel
# 或从源代码构建 sensord-emi(参见 /tmp/apple-silicon-accelerometer-mod)
# go build -o sensord-emi ./cmd/sensord
# 安装 Python 依赖项
pip install numpy scipy posix_ipc
```
## 用法
### 启动传感器守护进程
```
# 基础模式
sudo ~/go/bin/sensord-emi
# 调试模式(显示所有传感器,包括未知传感器)
sudo ~/go/bin/sensord-emi --debug
```
### EMI 检测
```
sudo python3 emi_detector.py
```
### 高频测试(通过磁力计进行 400-800 Hz)
```
sudo python3 compass_highfreq_test.py
```
### 环境光分析
```
sudo python3 als_analyzer.py
```
### 音频捕获
```
sudo python3 accel_mic.py --duration 10 --output recording.wav --analyze
```
## 文件
| 文件 | 描述 |
|------|------|
| `accel_mic.py` | 加速度计音频捕获与分析 |
| `emi_detector.py` | EMI 频率检测(全部 3 个 IMU 传感器) |
| `compass_highfreq_test.py` | 高频测试(400-800 Hz) |
| `als_analyzer.py` | 环境光传感器分析 |
| `FINDINGS.md` | 详细的 EMI 检测结果 |
| `DRONE_SIGNATURES.md` | 无人机/机器人电机频率参考 |
## 共享内存布局
传感器守护进程写入 POSIX 共享内存:
| 段 | 类型 | 格式 |
|----|------|------|
| `/vib_detect_shm` | 环形缓冲区 | 16 字节头部 + 8000×12 字节条目 |
| `/vib_detect_shm_gyro` | 环形缓冲区 | 与上述相同 |
| `/vib_detect_shm_compass` | 环形缓冲区 | 与上述相同 |
| `/vib_detect_shm_als` | 快照 | 8 字节头部 + 122 字节有效载荷 |
| `/vib_detect_shm_lid` | 快照 | 8 字节头部 + 8 字节有效载荷 |
## 攻击向量
### EMI 侧信道
- 检测 50/60 Hz 电源线存在
- 监控设备状态(电机、风扇)
- 识别附近电子设备
### 声学侧信道
- 语音活动检测
- 按键时序分析
- 物理存在监控
### 光学侧信道(ALS)
- LED PWM 频率检测(指纹照明)
- 通过反射推断屏幕内容
- 通过光线变化检测存在
### 无人机/机器人检测
- 消费级无人机:80-400 Hz
- FPV/攻击无人机:400-750 Hz(仅磁力计)
- 机器人执行器:50-300 Hz
详见 `DRONE_SIGNATURES.md` 获取详细频率表。
## 安全影响
本攻击:
- 静默运行,无用户通知
- 仅需根权限(无需特殊权限)
- 可检测 EMI、存在、光线和活动模式
- 无法直接外泄语音内容
## 防护措施
1. 减震笔记本电脑支架
2. 监控意外的 IOKit HID 访问
3. 与敏感设备保持物理隔离
4. EMI 屏蔽
5. 恒定照明(破坏 ALS 指纹识别)
## 参考
- “陀螺仪语音识别”(斯坦福,2014)
- “通过加速度计进行高效热词检测”(2015)
- “通过 MEMS 陀螺仪信号进行侧信道攻击”(2016-2020)
- taigrr/apple-silicon-accelerometer - IOKit 传感器访问库
## 许可证
MIT 许可证 - 仅限安全研究和教育用途。
## 免责声明
本工具仅提供用于安全研究和教育目的。使用它来监控他人而未经同意可能违反窃听法。在进行任何监控活动之前,请务必获得适当授权。
标签:BMI286, Covert Channel, EMI检测, Go, IOKit HID, LED PWM, MacBook, macOS安全, MEMS, numpy, Nyquist, posix_ipc, Python, Ruby工具, scipy, Side Channel Analysis, SNR, 传感器数据, 传感器旁路, 侧信道攻击, 加速度计, 声学泄漏, 声学窃听, 无人机电机特征, 无后门, 日志审计, 根权限, 环境光传感器, 电磁干扰, 电磁泄漏, 盖角传感器, 硬件取证, 磁力计, 苹果硅芯片, 语音活动检测, 逆向工具, 采样率, 陀螺仪, 隐蔽信道