安全测试

更新时间:2022-03-03 06:23:09下载pdf

本文介绍如何根据整个物联网系统框架结构,从各个角度切入进行涂鸦IoT设备的安全测试。

测试范围

测试分类 测试项
硬件安全 物理破坏、固件提取、存储介质
固件安全 固件 OTA 安全、固件静态分析、固件动态调试、固件签名验证
通信安全 Wi-Fi 协议、蓝牙协议、Zigbee 协议、NFC/RFID
系统安全 设备本地服务端口开放、权限分离措施、系统内核漏洞、缓冲区溢出、信息泄露
加密与认证算法 加密与认证算法
隐私安全 用户数据删除
服务端安全 服务端安全测试

硬件安全

物理破坏

PCB( Printed Circuit Board),中文名称为印制电路板,又称印刷线路板,是重要的电子部件。
硬件攻击第一步通常是设备拆解,然后通过检查设备的芯片以及暴露的接口来获取更多信息,为后续分析提供准备。

主要检查范围包括:

  • 检测调试端口和其它重要端口是否开放,开放后会有多大的影响。
  • 电路上的芯片和接口需要进行安全处理以保证型号针脚信息不被泄漏,如果被泄漏会加快攻击者的破解速度从而引起更快地获取设备权限等问题。

主要风险包括不限于:

  • 调试接口或其它接口开启可能导致固件被获取。
  • 通过调试接口可以获取运行参数等从而可以让攻击者调试或运行的漏洞。
  • 通过调试接口可能获取系统权限从而导致整个系统沦陷,被攻击者植入木马等操作。

固件提取

黑客攻击硬件的主要手段也是最有效手段就是固件提取,通过对固件的提取后就可以进行固件分析测试,从而可以挖掘固件的通用性漏洞。或者可以通过对固件进行硬编码参数分析,从而导致该型号存在可猜解口令(通常叫做后门)。读取和获取固件的方式很多,而获取到固件可以让我们的分析更加全面。
固件是设备运行的操作系统,固件一般在存储在芯片中运行时从 flash 中导出,然后通过 CPU 进行运算。在 flash 中存储可以被加密,但也存在 flash 以明文形式存储的情况,在内存中调用的数据也是明文。
固件可以分为有登录 Shell 系统和无登录 Shell 系统两类,两类系统在分析上有一定出入,但总体上依然是可以被进行逆向分析。

存储介质

设备存储除了 flash 以外,有些特殊设备存在额外的存储,如 SD 卡等。这些存储存在特殊功能,比如从本地升级固件。
常见此类功能的设备为摄像头、路由器等,如果存在此类功能,且本地升级时没有对固件进行验证,可能存在任意代码执行的问题。

固件安全

固件 OTA 安全

空中编程(英语:Over-the-air programming,缩写OTA)是一种为设备分发新软件、配置,乃至更新加密密钥的方法;固件 OTA 的过程也很容易发生安全问题,如 OTA 中间人劫持、固件降级等问题。

固件静态分析

获取到智能设备固件后,需要得到固件中所包含的文件,固件内容提取可以选择手动提取,也可以使用自动化工具提取。提取出的固件一般是 16 进制的 .bin 文件或者 .hex 文件,通过逆向分析或解包之后,获得实际的逻辑代码,根据需求分析或修改其中的关键代码,之后再重打包刷回芯片中,使硬件执行修改之后的固件以完成攻击目的。
固件硬编码其实只是静态分析中的一种常见问题类型,攻击者还可以通过分析固件进行漏洞寻找,获取技术资料等操作,以及检查是否存在明文或者可以猜解的敏感信息,通过一系列问题的发现和组合使用,可能导致设备被破解获取设备权限等问题。

固件动态调试

在获取固件之后,需要运行固件通过模拟固件中的程序进行调试和漏洞挖掘。
该操作旨在将获取的固件运行起来,并为后续的系统安全部分的分析做准备。
QEMU 是一套由法布里斯·贝拉(Fabrice Bellard) 所编写的以 GPL 许可证分发源码的模拟处理器,在 GNU/Linux 平台上使用广泛。Bochs,PearPC 等与其类似,但不具备其许多特性,比如高速度及跨平台的特性,通过 KQEMU 这个闭源的加速器,QEMU 能模拟至接近真实电脑的速度。

QEMU有两种主要运作模式:

  • User mode:用户模式。QEMU 能启动那些为不同 CPU 编译的 Linux 程序。而 Wine 及 Dosemu 是其主要目标。
  • System mode:系统模式。QEMU 能模拟整个电脑系统,包括 CPU 及其他周边设备。它使得为跨平台编写的程序进行测试及除错工作变得容易。也能用来在一部主机上虚拟数台不同虚拟电脑。

固件校验

检查固件是否存在被篡改校验机制,比如版本号校验等。检查是否可以二次编辑固件或者升级恶意固件,可能导致获取设备权限,对设备添加后门等严重问题。

通信安全

Wi-Fi协议

Wi-Fi,是一个创建于 IEEE 802.11 标准的无线局域网技术。
Wi-Fi 常见的问题包括不仅限于数据重放,密钥泄露,解密、伪造报文等。

蓝牙协议

蓝牙低能耗(Bluetooth Low Energy,或称Bluetooth LE、BLE,旧商标Bluetooth Smart)也称低功耗蓝牙,是蓝牙技术联盟设计和销售的一种个人局域网技术,旨在用于医疗保健、运动健身、信标、安防、家庭娱乐等领域的新兴应用。相较经典蓝牙,低功耗蓝牙旨在保持同等通信范围的同时显著降低功耗和成本。
由于现在的设备主要以低功耗蓝牙为主,这里的测试也是以低功耗蓝牙为主。
低功耗蓝牙常见问题包括不仅限于,设备死锁、溢出、密钥信息泄露、关键数据重放等。

Zigbee协议

Zigbee,也称紫蜂,是一种低速短距离传输的无线网上协议,底层是采用 IEEE 802.15.4 标准规范的媒体访问层与物理层。主要特色有低速、低耗电、低成本、支持大量网络节点、支持多种网络拓扑、低复杂度、可靠、安全。
使用Zigbee设备常见问题包括不仅限于,使用默认密钥、关键数据重放、密钥信息泄露、溢出等。

NFC/RFID

射频识别(RFID)是 Radio Frequency Identification 的缩写。
其原理为阅读器与标签之间进行非接触式的数据通信,达到识别目标的目的。RFID 的应用非常广泛,典型应用有动物晶片、汽车晶片防盗器、门禁管制、停车场管制、生产线自动化、物料管理。

系统安全

设备本地服务端口开放

额外端口包括用途不明确端口,生产无需使用的端口等。此类端口容易导致敏感信息泄露、缓冲区溢出、命令注入等问题。

权限分离措施

若可通过串口登录设备,系统使用 root 权限账号执行,当攻击者进入系统直接拥有 root 权限。

系统内核漏洞

系统版本过低存在多个 Linux 内核漏洞,常用于权限提升。

缓冲区溢出

在堆或栈内写入超出长度限制的数据,从而破坏程序运行甚至获得系统控制权的攻击手段。容易造成获取系统权限、DDos 等问题。

信息泄露

传输的信息未加密或携带敏感信息,可被攻击者利用。

加密与认证算法

检查设备和云端通信时是否采用可靠的加密,是否对通信内容进行完整性校验,是否存在通信认证,是否存在授权检测。

隐私安全

重置后需要删除用户的敏感信息。

服务端安全测试

设备和云端一般通过互联网进行通信,通信时交互的数据包中可能含有设备的操作信息、MAC 地址等敏感信息,这些信息可能被用来进行设备绑定等操作。对于数据通信的检查包括通信是否加密或者加密不完全,通信是否存在完整性校验,通信是否存在认证,在授权方面是否存在漏洞,通信的数据包重放后是否可以运行等。

  • 敏感信息可以导致设备被强制配对绑定,获取设备信息等风险。
  • 完整性校验的缺失可能导致数据被篡改从而获取设备权限等风险。
  • 无效的授权可以导致越权等的风险问题。
  • 重放攻击可以导致设备被任意操控的风险。