导读

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

api.*****.login通过传输用户名和加密的密码和短信验证码结合才可登录,该接口可以重放,通过分析业务安全防护逻辑可发现虽然云端有IP登录次数限制,但在次数限制内更换代理IP可以持续爆破用户名和密码

POST /api/*****/getit HTTP/1.1
Host: api.*****.com

api.*****.getit仍可以重放,客户端退出账户,云端未将客户端sessionid做过期处理,导致云端还可以接受该sessionid并且返回相应的返回值。

类似这样的接口还很多在此不一一列举。

客户端与服务端的通信安全:

客户端逆向分析通信的系统和认证方式:

身份认证

移动客户端访问云端系统使用不同的认证方式,有 token 和 session 校验这两种。在IoT架构设计层面,云端为了验证每次移动客户端的请求都要求附带token,而每次移动客户端向云端请求token将增加云端服务的压力,故该联合网关报警产品允许单次批量获取token存储本地供请求时调用。默认每次申请10个token,将count值改为100甚至更多仍可获取相应数量的token

交互安全

如果你接触过IoT设备,你会知道联合报警网关可搭配:烟雾探测器、水浸传感器、红外探测器等使用。实际上传感器与网关设备的绑定、解绑也存在安全问题

射频信号重放

遥控、传感器与网关通信的频率为868MHZ,如下图所示:

抓取到的报警信号如下图所示:

休眠模式波形如下:

静默模式:

使用HackRF抓取传感器向联合报警网关发送的告警信号并重放,发现联合报警网关没有防重放机制,将抓取到的信号重放警报声马上响起。

本篇文章主要分析了IoT安全-如何发现攻击面并进行测试,后续文章我将会继续以实际案例讲解IoT安全测试方法和侧重点以及涉及到的协议分析、固件分析、防护措施等。

转载处:https://www.anquanke.com/post/id/84762

IoT安全系列-如何发现攻击面并进行测试(物联网安全)相关推荐

  1. dos攻击命令_Kali Linux系列之拒绝服务攻击(DOS)实战(下)

    (你的世界是个什么样的世界?你说,我们倾听!)                                                      利用系统漏洞进行拒绝服务攻击 1.利用系统漏洞 ...

  2. Kali Linux系列之拒绝服务攻击(DOS)实战(下)

    ​ (你的世界是个什么样的世界?你说,我们倾听!)                                                      利用系统漏洞进行拒绝服务攻击 1.利用系统 ...

  3. 【Windows10nbsp;IoT开发系列】“Hello,World!”指导

    原文:[Windows10 IoT开发系列]"Hello,World!"指导 本文主要是介绍使用C#来开发一个可以运行在Raspberry Pi2上的一个基本项目. ​1.在启动V ...

  4. 系列超声发现脊柱关节炎附着点处新骨形成

    原文 译文 Serial Ultrasonography Documents New Bone Formation At Entheses in Spondyloarthritis Ralf G. T ...

  5. ML:MLOps系列讲解之《MLOps原则之测试》解读

    ML:MLOps系列讲解之<MLOps原则之测试>解读 目录 MLOps系列讲解之<MLOps原则之测试>解读 5.6.Testing测试 5.6.1.Features and ...

  6. pix2pix学习系列(1):预训练模型测试pix2pix

    pix2pix学习系列(1):预训练模型测试pix2pix 参考文献: [Pytorch系列-66]:生成对抗网络GAN - 图像生成开源项目pytorch-CycleGAN-and-pix2pix ...

  7. 【Windows10 IoT开发系列】开发人员模式设置

    原文:[Windows10 IoT开发系列]开发人员模式设置  声明:本文转自微软Windows 开发人员中心(https://msdn.microsoft.com/library/windows/ ...

  8. SEED实验系列:ShellShock 攻击实验

    实验楼课程原文链接:https://www.shiyanlou.com/courses/230,内容能够得到你的喜欢,我们感到非常高兴的,也十分欢迎您分享转载,转载请保留实验楼课程原文链接. 一. 实 ...

  9. dos攻击命令_Kali Linux系列之拒绝服务攻击(DOS)实战(上)

    (你的世界是个什么样的世界?你说,我们倾听!) ----------------- 小百科 拒绝服务攻击即是攻击者想办法让目标机器停止提供服务,是黑客常用的攻击手段之一.其实对网络带宽进行的消耗性攻击 ...

最新文章

  1. 六月份收集到比较有营养价值的AI方面的文章
  2. 图形处理相关资源(面部识别、姿态估计、变形、、、)
  3. 31全志r58平台Android4.4.2下打开USB摄像头
  4. 在Qt中如何使用QtDesigner创建的UI文件(一) (转)
  5. Codeforces 1188 题解
  6. C语言有序数组转为平衡的二叉树(附完整源码)
  7. 游戏即艺术,深度解读《地平线:零之曙光》这款“视觉教科书“
  8. 浅析JavaScript解析赋值、浅拷贝和深拷贝的区别
  9. www.python123.org_python爬虫-requests
  10. mysql 的 sql 执行计划详解
  11. 一句话概括自动装箱/拆箱
  12. 啦啦外卖43.8至尊版全开源最新版
  13. LeetCode 55 - 跳跃游戏
  14. 报Failed to resolve: org.jetbrains.kotlin:kotlin-stdlib-jre7的错误
  15. Unity3D开发之画墙、地面分割(户型绘制)
  16. android面板驱动的使用方法,Android 专用驱动之Ashmen
  17. scu(snoop control unit)
  18. leetcode【中等】781、森林中的兔子
  19. 注册了DELPHI盒子
  20. 【190115】VC++ AVI视频播放程序源代码

热门文章

  1. 图像处理Pillow详解
  2. 临床外显子组测序分析中的那些坑(上)
  3. P1319 压缩技术(python3实现)
  4. P1216 [USACO1.5][IOI1994]数字三角形 Number Triangles(记忆化搜索)--- 89分
  5. pythonjson序列化_Python Json序列化与反序列化的示例
  6. Linux基础学习七:mysql的安装和配置教程
  7. MySQL笔记-InnoDB中Record Lock与Gap Lock
  8. Python笔记-Flask的搭建及基本使用
  9. C++笔记-断言、静态断言、R转义符
  10. Java Socket笔记-利用tcp socket搭建CS模型