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, 传感器数据, 传感器旁路, 侧信道攻击, 加速度计, 声学泄漏, 声学窃听, 无人机电机特征, 无后门, 日志审计, 根权限, 环境光传感器, 电磁干扰, 电磁泄漏, 盖角传感器, 硬件取证, 磁力计, 苹果硅芯片, 语音活动检测, 逆向工具, 采样率, 陀螺仪, 隐蔽信道