mcpField
A
attacking-hardware-interfaces

attacking-hardware-interfaces

github.com/trilwu安全17746 次安装12 周前更新
代码仓库

关于 attacking-hardware-interfaces

面向获准开展的嵌入式设备物理安全评估,涵盖板级接口发现、固件获取与调试访问,以及安全启动和亚 GHz 重放风险分析。

主要功能

  1. 01识别 UART、JTAG/SWD 和闪存接口
  2. 02通过 UART 或引导程序访问控制台
  3. 03读取 SPI/I2C 闪存中的固件
  4. 04评估安全启动与熔丝设置
  5. 05研究亚 GHz 重放可行性

适用场景

  1. 01对可接触的嵌入式设备开展审计
  2. 02检查调试端口是否可读取固件或控制设备
  3. 03评估绕过安全启动的可行性
  4. 04在实验室判断遥控器使用固定码还是滚动码

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/trilwu/secskills --skill attacking-hardware-interfaces

安装后在 Claude Code 中输入/attacking-hardware-interfaces确认已加载。

详细介绍

攻击硬件接口

物理访问会改变局面:厂商以为是私有的调试端口、闪存芯片和启动过程,现在都触手可及。工作重点是找到板上的接口,利用它们获取 Shell 或转储固件,并判断设备的安全启动和 RF 设计是否真的可靠。这里几乎所有操作都需要拿到设备,并获得拆机许可。

适用场景

  • 你可以接触嵌入式设备或 PCB,需要找到其调试、串口或闪存接口
  • 获取 UART 控制台或 root Shell、中断引导加载程序,或通过 JTAG/SWD 暂停 CPU
  • 从 SPI/I2C 闪存芯片转储固件以供分析
  • 评估安全启动/信任链设计是否可能被绕过
  • 在实验室研究亚 GHz RF 重放攻击的可行性(固定码还是滚动码)

不适用场景

  • 分析已转储的固件——提取、文件系统提取、二进制分析——适用 analyzing-firmware-images;此技能负责从设备中读取数据,再交由该技能处理。
  • Wi-Fi 攻击——适用 attacking-wireless-networks。
  • 专门针对 Bluetooth/BLE 和 NFC/RFID 的攻击——适用 attacking-bluetooth-nfc。
  • 逆向分析从设备中提取的特定二进制文件——适用 analyzing-binaries。

查找接口

电路板通过未标记的测试焊盘和排针暴露出的接口比预期更多:

  • UART。 最常见的突破口——串行控制台,通常是引导加载程序提示符或 root Shell。用万用表和逻辑分析仪识别四条线路(TX、RX、GND、VCC),然后连接 USB-TTL 适配器(FTDI/CP2102),并使用 screen/minicom/picocom 打开控制台。如果波特率不明显,就进行检测(115200 很常见)。
  • JTAG / SWD。 完整的调试访问权限——暂停 CPU、读写内存和寄存器、转储固件、打补丁。识别引脚排列(JTAGulator 可以暴力探测),并使用适配器(Bus Pirate、J-Link、Black Magic Probe)通过 OpenOCD 操作。
  • SPI / I2C 闪存。 固件存储在外部闪存芯片上,可以直接读取——夹上 SOIC8 测试夹,再通过 CH341A 或 Bus Pirate 使用 flashrom 转储芯片;可以在板读取,也可以先拆下芯片再读取。
  • 逻辑分析仪(Saleae,或搭配廉价硬件使用 sigrok/PulseView),可在协议或引脚排列未知时识别并解码上述任意接口。

将接口转化为访问权限

  • UART → Shell。 许多设备会直接进入 root Shell 或需身份验证的控制台。如果不行,可以中断引导加载程序(U-Boot 通常会响应按键),修改内核命令行——进入单用户模式或启动 Shell(init=/bin/sh)是常见且影响重大的绕过方式。
  • JTAG → 固件和控制权。 暂停设备并转储闪存/RAM、读取机密信息,或修补检查逻辑。若生产设备上的 JTAG 仍处于启用状态,就能完全攻破设备的软件防护。
  • 闪存转储 → 固件。 SPI 转储本身就是固件映像;将其交给 analyzing-firmware-images 进行提取和分析。即使 UART 和 JTAG 已锁定,这种方式仍然有效。

安全启动与故障注入

评估信任链是否真正可靠:

  • 信任链。 ROM 验证引导加载程序,后者验证内核,以此类推。漏洞通常出现在某个未经验证的环节——未签名的阶段、调试路径,或可以跳过的检查。
  • 熔丝/锁定位。 生产设备是否真的烧写了 JTAG 禁用和安全启动熔丝,是常见的疏漏;熔丝未烧写就能重新开放调试端口。
  • 故障注入(毛刺攻击)。 电压或时钟毛刺(使用 ChipWhisperer 类工具)可以在特定指令处跳过签名检查或比较操作。这属于高级技术,且往往是绕过正确实现的安全启动的唯一途径;应将其作为可行性研究,而非保证能成功的方案。

RF 重放可行性(SDR)

对于亚 GHz 无线电设备(如工作在 315/433/868/915 MHz 等 ISM 频段的遥控器、传感器和报警器):

  • 使用 RTL-SDR(仅接收)和 Universal Radio Hacker 或 GNU Radio 接收并分析信号——捕获信号,恢复调制方式和编码。
  • 安全问题的关键在于代码是固定码还是滚动码。 固定码很容易重放;滚动码(KeeLoq 式)会在每次按下时改变,可抵御简单重放。确定目标设备使用哪种代码——这就是要得出的结论。
  • 使用 HackRF 或类似设备发射信号时,必须遵守法律:只能在屏蔽箱/射频隔离实验室内发射,绝不能在未获许可的频段上空中发射。应将主动射频测试作为实验室可行性研究,因为真实发射无法局限于目标设备。

范围与授权

本技能假设设备归你所有,或你已获得明确授权,可以打开并修改设备——拆开硬件可能造成破坏,也可能违背所有者在意的预期,因此应将此事项纳入书面授权范围。以下两点不可逾越:

  • 射频发射受到监管。 接收通常是被动行为;在需许可或安全关键频段上发射既涉及法律,也涉及安全。主动射频操作应限定在屏蔽实验室内,并将频谱法规视为不可争辩的约束。
  • 物理修改可能导致设备变砖。 芯片拆卸、故障注入和引导加载程序更改可能无法恢复。开始前,请确认所有者接受对指定设备造成此类风险。

应当驳斥的合理化借口

  • “没有标注的调试接口,所以无法调试。” UART 和 JTAG 经常会连接到未标注的测试焊盘。在认定接口不存在之前,先用万用表和逻辑分析仪探测。
  • “闪存已加密/锁定,所以无法获取固件。” 尝试其他途径——UART 引导加载程序、已启用的 JTAG,或未熔断的熔丝,通常都能绕过锁定的闪存。
  • “已启用安全启动,所以启动链是安全的。” 已启用不代表完整。检查每个环节是否存在未签名阶段、调试途径或未熔断的熔丝——故障注入也可能直接跳过检查。
  • “我直接发射信号来测试遥控器。” 空中发射受到监管,也可能影响安全系统。主动射频操作应在屏蔽实验室内进行,否则就只做接收和分析。
  • “滚动码意味着不可能重放,事情结束了。” 确认它确实是滚动码且实现正确;明确是固定码还是滚动码本身就是交付成果,而弱滚动码方案也有自身缺陷。

参考资料

  • analyzing-firmware-images — 分析从设备中转储的固件
  • attacking-bluetooth-nfc — BLE 和 NFC/RFID 射频攻击面
  • attacking-wireless-networks — Wi-Fi
  • analyzing-binaries — 逆向分析从设备中提取的特定二进制文件
  • maintaining-engagement-state — 记录物理访问和不可逆更改

评论

支持 Markdown