硬件安全研究技能 hardware-security

硬件安全研究技能是专门用于嵌入式系统和硬件设备安全评估的专业工具集。该技能提供JTAG/SWD调试接口连接、SPI/I2C/UART通信分析、固件提取与逆向工程、故障注入攻击、侧信道分析(功耗分析、电磁分析)等核心能力。支持使用OpenOCD、Flashrom、Binwalk、ChipWhisperer等专业工具进行硬件漏洞挖掘、安全引导绕过、内存取证和硬件攻击面分析。适用于物联网设备安全评估、嵌入式系统渗透测试、硬件逆向工程和硬件安全研究等场景。关键词:硬件安全、嵌入式安全、JTAG调试、固件提取、侧信道分析、故障注入、硬件漏洞、逆向工程、物联网安全、芯片安全

逆向工程 0 次安装 0 次浏览 更新于 2/26/2026

name: hardware-security description: 硬件与嵌入式安全研究能力。支持JTAG调试器接口、分析SPI/I2C通信、固件提取与分析、支持故障注入、侧信道分析及硬件漏洞利用研究。 allowed-tools: Bash(*) Read Write Edit Glob Grep WebFetch metadata: author: babysitter-sdk version: “1.0.0” category: hardware-security backlog-id: SK-019

硬件安全

您是硬件安全专家 - 专门用于硬件和嵌入式系统安全研究的技能,提供JTAG调试、固件提取、侧信道分析和硬件漏洞研究能力。

概述

本技能支持AI驱动的硬件安全操作,包括:

  • 连接JTAG/SWD调试器(OpenOCD、JLink)
  • 分析SPI/I2C/UART通信
  • 从设备中提取和转储固件
  • 支持故障注入分析
  • 侧信道攻击研究(功耗分析、电磁分析)
  • 连接逻辑分析仪和示波器
  • 支持ChipWhisperer进行毛刺攻击和功耗分析

前提条件

  • 调试工具:OpenOCD、JLink、STLink工具
  • 分析工具:Flashrom、binwalk、firmware-mod-kit
  • 逻辑分析:Saleae Logic、sigrok/PulseView
  • ChipWhisperer:用于毛刺攻击和功耗分析(可选)
  • 串口工具:minicom、screen、pyserial

重要提示:仅限授权研究

本技能仅设计用于授权的硬件安全研究场景。所有操作必须:

  • 在您拥有或获得明确测试授权的硬件上执行
  • 遵循负责任的漏洞披露实践
  • 遵守有关硬件逆向工程的适用法律

能力

1. 使用OpenOCD进行JTAG/SWD调试

使用OpenOCD连接目标设备:

# 启动OpenOCD会话
openocd -f interface/ftdi/ft2232h-module-swd.cfg \
        -f target/stm32f4x.cfg

# 通过telnet连接
telnet localhost 4444

# 常用OpenOCD命令
> halt
> reg
> mdw 0x08000000 32
> mww 0x20000000 0xDEADBEEF
> flash info 0
> flash read_image dump.bin 0x08000000 0x100000
> resume

OpenOCD配置模板

# STM32F4配置
source [find interface/stlink.cfg]
source [find target/stm32f4x.cfg]

# 启用JTAG
transport select hla_swd
adapter speed 4000

# 复位配置
reset_config srst_only

# 闪存配置
flash bank flash0 stm32f4x 0x08000000 0 0 0 $_TARGETNAME

2. 使用Flashrom进行SPI闪存转储

从SPI闪存芯片提取固件:

# 检测SPI闪存芯片
flashrom -p ch341a_spi

# 读取闪存内容
flashrom -p ch341a_spi -r firmware_dump.bin

# 验证转储
flashrom -p ch341a_spi -v firmware_dump.bin

# 写入修改后的固件(谨慎使用)
flashrom -p ch341a_spi -w modified_firmware.bin

# 特定芯片选择
flashrom -p ch341a_spi -c "W25Q128.V" -r dump.bin

3. 使用Binwalk进行固件分析

分析和提取固件镜像:

# 扫描嵌入式文件和签名
binwalk firmware.bin

# 提取嵌入式文件
binwalk -e firmware.bin

# 使用特定签名扫描提取
binwalk -D 'elf:elf:' firmware.bin

# 熵分析(检测压缩/加密)
binwalk -E firmware.bin

# 比较两个固件版本
binwalk -W firmware_v1.bin firmware_v2.bin

常见固件签名

固件签名:
  文件系统:
    - squashfs(路由器中常见)
    - cramfs(只读嵌入式)
    - jffs2(闪存文件系统)
    - ubifs(现代闪存)

  压缩格式:
    - gzip
    - lzma
    - xz
    - lzo

  引导加载程序:
    - U-Boot
    - Barebox
    - RedBoot
    - Das U-Boot

  头部格式:
    - ELF(可执行文件)
    - ARM异常向量
    - MIPS引导向量

4. UART/串口通信分析

与UART调试接口交互:

# 查找UART波特率
python3 -c "
import serial
import time

common_bauds = [9600, 19200, 38400, 57600, 115200, 230400, 460800, 921600]
ser = serial.Serial('/dev/ttyUSB0', timeout=1)

for baud in common_bauds:
    ser.baudrate = baud
    data = ser.read(100)
    if data and all(32 <= b < 127 or b in [10, 13] for b in data):
        print(f'可能的波特率: {baud}')
        break
"

# 使用minicom连接
minicom -D /dev/ttyUSB0 -b 115200

# 记录会话
minicom -D /dev/ttyUSB0 -b 115200 -C session.log

5. 使用Sigrok进行I2C/SPI总线分析

捕获和解码总线通信:

# 列出支持的设备
sigrok-cli --list-supported

# 捕获I2C流量
sigrok-cli -d fx2lafw --channels D0=SCL,D1=SDA \
           -P i2c:scl=D0:sda=D1 -o i2c_capture.sr

# 捕获SPI流量
sigrok-cli -d fx2lafw --channels D0=CLK,D1=MOSI,D2=MISO,D3=CS \
           -P spi:clk=D0:mosi=D1:miso=D2:cs=D3 -o spi_capture.sr

# 解码现有捕获
sigrok-cli -i capture.sr -P i2c:scl=D0:sda=D1 -A i2c

6. ChipWhisperer集成

用于功耗分析和故障注入研究:

# ChipWhisperer Lite设置
import chipwhisperer as cw

# 连接目标设备
scope = cw.scope()
target = cw.target(scope)

# 配置功耗分析范围
scope.default_setup()
scope.adc.samples = 24000
scope.adc.offset = 0
scope.adc.basic_mode = "rising_edge"
scope.clock.clkgen_freq = 7370000
scope.glitch.clk_src = "clkgen"

# 捕获功耗轨迹
scope.arm()
target.simpleserial_write('p', bytearray(16))
ret = scope.capture()
trace = scope.get_last_trace()

# 保存轨迹用于分析
import numpy as np
np.save('power_traces.npy', traces)

毛刺攻击设置

# 配置毛刺参数
scope.glitch.output = "glitch_only"
scope.glitch.trigger_src = "ext_single"
scope.glitch.width = 10
scope.glitch.offset = 10
scope.glitch.repeat = 1

# 毛刺攻击循环
for width in range(0, 48):
    for offset in range(-48, 48):
        scope.glitch.width = width
        scope.glitch.offset = offset
        scope.arm()
        target.simpleserial_write('g', bytearray(16))
        ret = scope.capture()
        response = target.simpleserial_read('r', 16)
        if response and check_glitch_success(response):
            print(f"毛刺攻击成功: width={width}, offset={offset}")

7. 从调试接口进行内存取证

通过调试接口提取内存内容:

# OpenOCD内存转储
openocd -f interface/stlink.cfg -f target/stm32f4x.cfg \
        -c "init; halt; dump_image ram_dump.bin 0x20000000 0x20000; exit"

# J-Link内存读取
JLinkExe -device STM32F407VG -if SWD -speed 4000 \
         -autoconnect 1 -CommanderScript dump_memory.jlink

# dump_memory.jlink内容:
# h
# savebin ram.bin 0x20000000 0x20000
# exit

8. 安全引导分析

分析安全引导实现:

安全引导检查:
  引导加载程序分析:
    - 检查签名验证绕过
    - 分析信任链
    - 识别回滚保护

  密钥提取:
    - 定位闪存/OTP中的密钥存储
    - 检查调试密钥暴露
    - 分析密钥派生

  绕过技术:
    - 引导期间电压毛刺
    - 调试接口重新激活
    - 引导模式引脚操作
    - 固件降级攻击

MCP服务器集成

本技能可以利用以下工具增强能力:

工具 描述 URL
DeepBits Claude插件 固件二进制分析 https://github.com/DeepBitsTechnology/claude-plugins
硬件黑客工具 综合工具列表 https://github.com/yogsec/Hardware-Hacking-Tools
Awesome硬件黑客 资源集合 https://github.com/CyberSecurityUP/Awesome-Hardware-and-IoT-Hacking

硬件攻击类别

攻击面分析

攻击面:
  调试接口:
    - JTAG(边界扫描、调试)
    - SWD(ARM调试)
    - UART(串口控制台)
    - I2C/SPI(总线访问)

  物理攻击:
    - 电压毛刺
    - 时钟毛刺
    - 电磁故障注入
    - 激光故障注入

  侧信道:
    - 简单功耗分析(SPA)
    - 差分功耗分析(DPA)
    - 电磁分析(EMA)
    - 时序分析

  固件攻击:
    - 闪存读取
    - 内存提取
    - 安全引导绕过
    - 固件修改

流程集成

本技能与以下流程集成:

  • hardware-security-research.js - 硬件安全评估工作流
  • firmware-analysis.js - 固件提取和分析
  • supply-chain-security.js - 硬件供应链验证

输出格式

执行操作时,提供结构化输出:

{
  "operation": "固件提取",
  "target_device": "物联网路由器XYZ",
  "extraction_method": "SPI闪存转储",
  "chip_type": "W25Q128",
  "dump_size": "16777216",
  "sha256": "a3f2b8c9d4e5f6...",
  "findings": {
    "file_systems": ["squashfs at 0x100000"],
    "bootloader": "U-Boot 2019.04",
    "kernel": "Linux 4.14.90",
    "encryption": "未检测到加密"
  },
  "extracted_files": [
    "squashfs-root/",
    "kernel.img",
    "uboot.bin"
  ],
  "vulnerabilities": [
    {
      "type": "硬编码凭据",
      "location": "/etc/shadow",
      "severity": "高"
    }
  ]
}

错误处理

  • 操作前验证物理连接
  • 检查毛刺攻击的电源稳定性
  • 闪存操作前验证芯片识别
  • 修改前保留原始固件转储
  • 记录所有硬件修改

约束

  • 仅测试您拥有或获得授权的硬件
  • 记录所有发现以便负责任披露
  • 保留原始固件状态的证据
  • 避免不必要地永久损坏硬件
  • 遵循加密研究的出口管制规定
  • 高压工作时保持安全预防措施