如何发现攻击面并进行测试?

发表于:2016-11-10 11:05

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:mryu1    来源:51Testing软件测试网采编

  IoT是物联网的代名词,然而随着这些智能设备的安全性得到越来越多人的关注。要想对物联网设备安全性进行评估,需要先了解它所涉及的各种“组件”,以确定哪部分“组件”可能发生什么样的安全问题。
  IoT架构基础设施可分为三大类
  1.嵌入式设备
  2.软件和应用程序
  3.无线电通信
  设备
  设备是任何物联网架构的关键,这里的设备指的是架构中所涉及的任何硬件设备(网关、传感器、遥控器等)。
  在多数IoT智能环境中,设备通常包括网关和操作设备,网关作为其他设备的控制中心,而操作设备是执行实际动作的设备(如按键遥控器)或监控传感器(烟雾探测器、水浸传感器、红外探测器等)。
  设备漏洞指的是嵌入式设备中常见的漏洞,比如:串口root权限访问,闪存中提取固件等…
  软件和云组件
  物联网设备中的软件和云组件包括以下元素:
  1.设备固件
  2.WEB应用
  3.用于控制、配置和监控设备的移动应用程序
  IoT架构中每个“组件”部分都有特定的漏洞,后面将详细介绍固件部分以及基于IoT的WEB和移动应用漏洞。
  无线电通信
  无线电通信是IoT架构安全的重要方面,基于无线电通信,简单说任何通信都是发生于设备与设备或应用程序与设备之间。IoT中常用的通信协议有:WiFi、BLE、ZigBee、ZWave、6LowPAN和蜂窝数据等。
  对于本套IoT安全系列文章,我们将看看IoT使用哪些主要通信方式和针对它们的具体攻击方法。
  如何发现物联网设备的攻击面
  到目前为止在日常的工作当中我已经完成了大量的IoT测试业务,依据个人经验,有效的物联网设备的安全测试,你需要对于给定设备进行综合评估并发现所有的攻击面。评估IoT攻击面的技术相比于评估WEB应用程序、移动应用程序并没有改变很多,多数仍是以WEB攻击面为主,比如市面上常见的网关+路由器的组合,然而这里将涉及很多IoT架构中的“组件”攻击面析。
  常见IoT架构
  遵循以下步骤可以更快的发现IoT的攻击面:
  1.首先了解整个物联网设备架构,通过各种途径或在厂商文档信息中发现更多的相关细节。
  2.对指定设备的每个架构组件建立一个体系结构图,如果是两个“组件”之间的通信,用导向线画出并指定正在使用的通信协议等详细信息,如果应用程序是使用API与云端发送和接收数据,那就在体系结构图中标记它并记录使用的是哪个API。
  3.当完整的体系结构图准备好时就开始像攻击者一样去思考,如果你必须攻击某个特定“组件”的话你需要确定使用什么样的技术并提取哪些辅助攻击的相关信息,在表格中列出IoT架构中的组件和所需做的测试。
  下表是IoT架构中一个“组件”的攻击面分析:
  上述分析步骤完成,我们就可以执行实际的测试攻击,既然我们已经有了明确的想法接下来看看我们可以使用什么样的攻击技术。
  1.IoT网关
  基于硬件的攻击向量-串口通信,固件导出等…..获得访问固件的权限并提取存储在其中的敏感信息。
  嗅探发送到云端的通信数据。
  重放和伪造通信数据并发送到云端。
  2.设备
  基于硬件的攻击向量-串口通信,固件导出等…..获得访问固件的权限并提取存储在其中的敏感信息。
  设备和网关之间的无线电通信分析攻击如:Zigbee, zWave, 6LoWPAN。
  BLE(蓝牙低功耗技术)攻击。
  3.移动应用程序
  嗅探发送和接收的数据。
  重放和伪造通信数据并发送到云端或设备。
  移动应用程序逆向分析及敏感数据提取。
  4.云端/WEB程序
  常见WEB漏洞等…
  简单案例分析
  下面内容记录了对某款物联网设备的攻击面及安全分析,包括网关、设备、云端、移动客户端之间的通信安全,云端API接口逻辑、网关与设备绑定和解绑等关键操作的安全情况。
  通信安全
  网关-云端-移动客户端:
  在套用上面的攻击面分析模型后可以发现待测设备的机密性得到了良好的保护。联合报警网关、设备、云端系统、移动客户端四者之间的通信,除了日志统计信息(对于与 logs.***.com
  服务器的通信)外全部是加密通信,TCP 链接使用 TLS1.2 通信,使用 HTTPS 传输,UDP 数据使用 AES-128-ECB 加密后传输。
  完整性通用得到了良好的保护。HmacSHA256,HmacSHA1,HmacMd5 的方式保护,Hmac 的 Key 来自于用户登录之后服务端下发的 token,联合报警设备的旧系统固件将数据本地明文存储在 xml 文件中,新版本中本地数据是加密存储的。虽然保证了机密性和完整性但仍存在安全问题,云端接口无法抵御重放攻击。
  POST /api/*****/version/check HTTP/1.1
  Host: api.******.com
  api.******.com无防重放机制,通过api.******.version.check获取当前APP版本,通过更改客户端版本到较低版本,再重放该请求,可以返回需要升级的Response包。
  POST /api/*****/login HTTP/1.1
  Host: api.*****.com
21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号