带你读《物联网渗透测试》之二:IoT威胁建模-阿里云开发者社区

开发者社区> 华章出版社> 正文

带你读《物联网渗透测试》之二:IoT威胁建模

简介: 本书介绍物联网渗透测试的原理和实用技术。主要内容包括IOT威胁建模、固件分析及漏洞利用、嵌入式web应用漏洞、IOT移动应用漏洞、IOT设备攻击、无线电入侵、固件安全和移动安全最佳实践、硬件保护以及IOT高级漏洞的利用与安全自动化。

点击查看第一章
点击查看第三章

第2章

IoT威胁建模
本章将主要介绍以下主题:

  • 威胁建模概念简介。
  • IoT设备威胁建模剖析。
  • 固件威胁建模。
  • IoT Web应用威胁建模。
  • IoT移动应用威胁建模。
  • IoT设备硬件威胁建模。
  • IoT无线电通信威胁建模。

2.1 简介

无论读者具有软件研发背景还是具有系统或者网络运维背景,可能都对各自领域中的攻击面或者攻击向量都已经比较熟悉了。攻击面指的是通过某一输入源实现设备入侵的多种途径。输入源可以来自硬件、软件,也可以来自无线方式。一般来说,设备中包含的攻击面越多,被入侵的可能性就越大。所以,攻击面其实就是进入IoT设备的入口点。有些IoT设备或应用在设计开发时默认信任这些入口点。但是所发现的攻击面都有与之相关联的入侵风险、入侵概率以及入侵影响。因此从本质上来说,攻击面就是可能对设备带来不良影响,进而导致设备执行非预期操作的威胁。为了识别出所有攻击面,在开展渗透测试或开发软件之前需要尽可能详尽地列出理论上存在的威胁用例,这一过程称为威胁建模。
本章将讨论威胁建模的基本原理,以及如何借助威胁建模开展IoT设备的漏洞利用。对固件、Web应用、移动应用、设备硬件和无线电通信建立基本的威胁模型能够帮助读者找到适当的切入点开展渗透测试。
虽然本章仅是对威胁建模的一个介绍。但是关于这一主题已经出版了不少相关书籍。如果读者想深入理解威胁建模概念并需要查阅相关资料的话,可以选择有关威胁建模的书籍或者参考第三方网站进行了解。

2.2 威胁建模概念简介

威胁建模同软件开发存在一定联系,因为威胁建模是在软件设计阶段之后、软件部署阶段之前开展的一次演练。演练通常由软件开发团队、系统运维团队、网络运维团队以及安全团队在重大软件发布之前开展,通过绘制完整的端-端数据流图,或者通过绘制数据流与网络图,都能够对部署安全控制措施与入侵对抗措施提供帮助。上述图表可以画在白板上也可以借助软件来绘制,例如微软就提供了免费的威胁建模工具Threat Modeling Tool,此外还有Web应用https://draw.io 也可以用来完成这项工作,链接中给出的Web应用提供了大量模板可以用于绘制多种用途的图表。图表绘制的思路是将设备的所有功能、特性同与之关联的技术建立映射。而如何绘制威胁模型的版式则取决于机构或者绘制者自身。需要谨记的是,当将组件逐个分解时,威胁模型会进一步细化。对于威胁建模而言,非常重要的一方面在于需要不断进行文档迭代,因为当设备添加了新特性之后或者对设备所采用的技术有了更深了解时,对威胁的认识也会不断深化。
一旦确定了IoT设备的攻击面之后,就需要使用STRIDE等方法确定威胁用例,STRIDE方法将会放在后面的章节中进行讨论。这些威胁需要通过评级系统进行评级,进而确定所识别出的威胁的风险等级。在不同的行业中,可以采用不同的威胁评级系统,其中最常见的是DREAD评级系统以及通用安全漏洞评分系统(Common Vulnerability Scoring System,CVSS)。下面分别对CVSS评分系统和DREAD评级系统进行介绍。
CVSS系统的评分粒度更加细致,该系统囊括了3个度量组共14个度量维度,3个度量组分别是:基本得分、临时得分和环境得分。这3个度量组又分别包含了6个基本度量维度、3个临时度量维度和5个环境度量维度。当向厂商提交漏洞时,CVSS系统的评级结果是非常有用的,但是对于威胁建模来说则可能不够直观。想要了解更多关于CVSS系统的内容可以访问链接https://www.first.org/cvss/user-guide
DREAD评级系统名称中的每个字母分别表示如下含义:

  • 潜在危害(Damage potential):如果漏洞利用成功可能造成的危害有多大?
  • 可重现性(Reproducibility):重现攻击的难易度如何?
  • 可利用性(Exploitability):发起攻击的难易度如何?
  • 受影响用户(Affected users):大概会有多少用户受到影响?

发现难度(Discoverability):发现该漏洞的难易度如何?
DREAD评级系统的风险评级范围为1~3。其中1代表低风险,2代表中风险,3代表高风险。
表2-1展示了各评级类别的评级结果所对应的含义。

image.png

在开展威胁评级之前,需要识别出威胁。为了准确地阐释安全隐患,进而识别出潜在威胁,可以采用STRIDE模型。STRIDE模型将威胁分为6种类型。这6种威胁类型分别对应于英文缩写STRIDE的首字母,其含义如下:

  • 身份欺骗(Spoofing Identity):身份欺骗即通过使用虚假身份信息来尝试获取系统的访问权限。攻击者可以使用窃取的用户认证信息或者伪造的IP地址来实现身份欺骗。当攻击者以合法用户或者本地主机的身份成功获得目标系统访问权限后,就可以进一步以授权身份开展权限提升或者其他恶意操作。
  • 数据篡改(Tampering with Data):篡改是指在未经授权的情况下恶意修改数据,例如篡改网络中两台计算机之间的通信数据。
  • 抵赖(Repudiation):抵赖是指用户能够(以合法或者不合法的形式)否认其执行了某项操作或业务。如果未配备适当的审计措施,则难以证实攻击者发起了抵赖攻击。
  • 信息泄露(Information Disclose):信息泄露是指私有数据的意外公开。例如,用户能够查阅未授权表格或文件的内容,或者监控通过网络发送的明文数据。信息泄露漏洞的部分实例包括隐藏的表单字段、Web页面注释中遗留的数据库连接语句和连接信息,以及可能向用户泄露内部系统信息的不完善的异常处理等。所有这些信息对于攻击者实施攻击都大有帮助。
  • 拒绝服务(Denial of Service):拒绝服务是指导致系统或应用不可用的过程。举个例子,通过向服务器发送海量请求消耗掉目标系统所有可用的系统资源就可以实现针对目标的拒绝服务攻击,此外,发送足以导致应用进程崩溃的畸形输入也可以实现拒绝服务攻击。
  • 权限提升(Elevation of Privilege):当拥有有限权限的用户以特权用户的身份取得了某应用的特权操作权限时即实现了权限提升。例如,权限受限的攻击者通过提权可以实现入侵,或者接管具有较高权限并且受信任的进程或账户。

可以通过以下链接来了解关于STRIDE模型的更多细节:
https://msdn.microsoft.com/en-us/library/ee823878(v=cs.20).aspx
https://msdn.microsoft.com/en-us/library/ff648641.aspx
微软公司提出了一种非常好的威胁建模方法,该方法采用多步处理来确定新应用或者新系统所引入威胁的严重程度。其威胁建模处理步骤如图2-1所示。

image.png

了解微软威胁建模过程的更多内容可以参考以下链接:
https://msdn.microsoft.com/en-us/library/ff648644.aspx
后面我们将采用STRIDE模型和DREAD评级系统以黑盒测试的方式开展威胁建模演练,并将IoT设备进行分解,对其中的各个组件分别进行威胁建模。这里我们建议,读者无论在开展任何安全测试之前,最好都先进行威胁建模,通过威胁建模来保障测试的覆盖面。思考所有潜在威胁发生的概率并对其分类的过程很有意思,需要读者好好动动脑筋。

2.2.1 准备工作

在逐一介绍威胁建模方法时,我们将会用到微软公司提供的免费威胁建模工具Threat Modeling Tool以及基于制图网站https://draw.io 所绘制的图表。在本书撰写阶段,我们从链接https://www.microsoft.com/en-us/download/details.aspx?id=49168 下载了微软的威胁建模工具Threat Modeling Tool 2016。

2.2.2 测试流程

在本节中,我们使用微软威胁建模工具Threat Modeling Tool来进行图表绘制,采用该工具绘制网络图表非常简单:
1)启动微软威胁建模工具Threat Modeling Tool 2016。选择“创建模型”(Create A Model)选项,如图2-2所示。

image.png

2)然后,熟悉工具中所提供的用于表示设备、通信传输以及输入输出可信边界的模板(Stencils)。微软针对不同的模板与选项提供了用户指南,当下载工具时可以一并下载,但并不做强制要求。
2016版的微软威胁建模工具Threat Modeling Tool中允许用户自定义模板,用户可以创建模板(Stencils),从而更加准确地刻画各个组件同威胁之间的关系,如图2-3所示。

image.png

3)每套模板的属性都可以根据设备、网络或者应用的实际情况加以调整,如图2-4所示。
4)至此,我们通常就可以从一个较高的角度来识别IoT系统的资产了,并且,当通过研究或逆向分析对目标设备具备了更深的了解之后,可以进一步聚焦于所感兴趣的领域。资产识别的过程可以采用表格或者思维导图的形式加以记录。表2-2列出了一份基本的资产清单,其中对各项资产进行了简要说明。
5)图2-5展示了部署了智能门铃、LED灯具、移动应用以及IoT Hub的智能家居环境。

image.png

image.png
image.png

image.png

上面的例子只是威胁建模演练的开始。我们已经介绍了如何下载微软威胁建模工具Threat Model Tool,并熟悉了模板及其相关属性。然后,我们通过研究或逆向分析对智能家居环境进行了简单描述,进行了智能家居环境中的资产识别。接下来我们绘制了架构图,形象地展示了识别出的资产。下一步将是威胁建模的核心,即通过分解IoT系统的各个组成部分,帮助读者发现攻击入口点、确定攻击方法,以及分析IoT系统的某一部分遭受攻击后所造成的影响。与其他安全分析工作一样,测试人员对目标测试平台越熟悉,成功实施入侵的可能性也就越大。

2.3 IoT设备威胁建模剖析

2016年,我们见证了一起针对IoT设备的大规模漏洞利用事件,事件中的IoT设备主要包括网络摄像头和数字视频录像机(Digital Video Recorder,DVR),攻击者利用这些设备发起了全球有史以来最大规模的分布式拒绝服务攻击(Distributed Denial of Service,DDoS)。这次DDoS攻击缘起于厂商对IoT设备安全问题的轻视,而这些问题通过基本的威胁建模演练就可以避免。考虑到上述类型的设备在互联网中普遍存在以及它们可能给互联网带来的风险,我们将对联网DVR与网络摄像头安防系统开展威胁建模,并详细介绍威胁建模过程。普通个人用户或者中小型企业通过电商平台或者众多电子用品商店以相当低的价格就可以购买到这些联网的安防系统。联网DVR系统可以作为IoT系统的一个绝佳示例,因为为了能够查看摄像头监控视频,设备中包含了很多入口点,用户还可以在路由器无须开放端口的情况下连接到第三方服务提供商以远程查看监控视频。从黑盒测试的角度来看,搜集IoT设备及其应用程序的细节信息可能有点棘手。但是,这些产品一般都有大量在线资源可以利用,从而有助于威胁建模。
测试流程
开展针对联网DVR系统的威胁建模时,我们将继续采用之前介绍的微软多步威胁建模方法。
步骤1 资产识别
首先统计所有DVR资产并形成文档,以便了解哪些设备最可能遭受攻击从而予以重点关注。对于攻击者而言,如果能够找到那些存在已知漏洞的资产,那么在针对DVR系统开展漏洞利用时将节省大量时间。部署设备时,查看设备背部粘贴的标签以及用户手册就可以了解到有关DVR系统资产的信息,具体信息如表2-3所示。

image.png

步骤2 IoT设备架构概况构建
通过构建架构概况,可以采用可视化的方式形象地展示出攻击者如何攻击DVR系统,进而以非预期的手段利用系统。在构建IoT设备架构概况时,我们的目标是基于在整套流程中搜集或了解到的数据将DVR系统的功能、应用及其物理架构形成文档。我们希望能够发现DVR系统设计和实现中的漏洞,其中也包括识别出系统所采用的不同技术。接下来我们将架构概况的构建分为以下3项工作:

  • 编制DVR系统功能特性文档
  • 构建架构图,详细刻画DVR生态系统
  • 识别系统所采用的技术

在编制DVR系统功能特性文档之前,我们先准备一组用例。
用例1:用户在本地网络中通过本地Web应用查看视频
1)用户安装DVR设备及摄像头。
2)用户创建用户账户。
3)用户对DVR设备和摄像头配置进行设置。
4)用户通过以太网连接DVR设备并确保网络连通。
5)用户记录下DVR设备的IP地址。
6)用户安装厂商提供的插件与软件。
7)用户通过Web浏览器登录DVR设备。
8)用户选择摄像头并查看监控视频。
用例2:用户通过移动应用远程查看视频
1)用户对平台配置进行设置,确保能够访问厂商的SaaS服务。
2)用户下载并安装Android或iOS应用。
3)在应用安装时,用户为厂商的SaaS应用创建独立的用户账户。
4)用户登录移动应用。
5)用户使用移动应用扫描DVR设备下方的条形码进行厂商验证。
6)用户选择摄像头并查看监控视频。
图2-6给出了上述用例的架构图,图中包含了DVR生态系统各组件的详细信息。

image.png

架构图绘制完成后,就需要识别并分析系统所采用的各种技术了。鉴于某些操作系统、协议和底层函数库可能早已存在已知漏洞。因此,为了便于开展进一步分析,并清晰刻画出潜在的威胁用例,将系统中所采用的技术(见表2-4)形成文档非常重要。

image.png
image.png

步骤3 IoT设备分解
接下来,我们对DVR系统环境中的应用与协议数据流进行分析,定位设备或客户端应用中的漏洞。我们所要搜索的位置可能需要更高权限才能访问,在此过程中需要记录下每个可能的入口点。其中,只需要找到一个能够危害到DVR系统的机密性和完整性的攻击入口点,就能够帮助攻击者赢得攻防中的主动权。
这些入口点根据所使用的平台、技术和协议的区别可能有所不同,在本节中,我们将从一个更高的层次来看待这个问题。同时,我们还需要检查技术和特性之间的各种信任边界。一旦完成了对DVR架构的分解,读者就可以更好地理解攻击面以及针对数据的破坏方式。
图2-7是DVR系统环境中对数据流的分解示意图示例:

image.png

数据流绘制完成后,表2-5对入口点进行说明。

image.png

步骤4 威胁识别
到了这个阶段,我们已经绘制完成了DVR系统的数据流,并确定了都有哪些入口点。现在我们必须判断每个入口点的风险,这些风险同用户、网络和应用以及应用的开发厂商息息相关。从攻击者的视角来看,我们需要识别出影响网络、应用以及主机的威胁,因为其中存在可以被利用的漏洞,进而可能导致以下后果:

  • 影响大量使用某DVR系统的用户。
  • 入侵厂商基础设施并造成大规模漏洞利用。
  • 入侵DVR设备,给用户带来隐私泄露的风险。
  • 入侵DVR设备,给DVR用户带来功能安全方面的风险。

为了帮助定位威胁并对威胁进行分类,我们采用STRIDE模型对DVR IoT系统进行安全评估。在表2-6中,我们使用一组威胁类型来代替IoT中的安全隐患。表中所列内容可能并不完备,但是在考虑可能对整个DVR系统环境造成的安全威胁时,能够为读者提供一些思路。

image.png

或者,在这里我们也可以从更高的层面上简单列出可能存在的威胁,后面的章节中我们将对每个组件的威胁进行深入探讨。受知识面所限,有些威胁可能是未知的或者还停留在理论层面,但是对围绕这些威胁开展头脑风暴开拓思维也是很重要的。为了识别出尽可能多的威胁,读者可以找个小伙伴一起练习,或者找到正在尝试入侵你所感兴趣的某套IoT系统的人组团开黑。下面是我们找出的DVR系统高级别威胁示例,攻击者可以执行这些操作:

  • 远程接管DVR系统。
  • 在未经认证的情况下,远程查看视频(秘密监视)。
  • 关闭摄像头的回放功能。
  • 跟踪某个个人。
  • 基于所搜集的情报闯入某片区域。
  • 在DVR设备中植入木马。
  • 获得物理接触的权限,并破坏视频记录。
  • 通过发送请求过载DVR系统,使其不能正常工作。
  • 窃听DVR系统通信数据。

步骤5 威胁建档
接下来,我们将在步骤4中识别出的部分威胁用例形成文档(见表2-7~表2-9),文档中主要包括威胁描述、威胁目标、攻击技术以及可能采用的对抗措施。
威胁1

image.png

威胁2

image.png

威胁3

image.png

步骤6 威胁评级
现在,我们已经识别出了针对DVR系统的威胁并将其形成了文档,下面根据威胁发生的可能性以及可能导致的影响,我们采用DREAD评级系统对威胁进行评级。在本章前文我们已经对DREAD评级系统进行了介绍,也正如前文所指出的那样,用户也可以根据实际情况采用其他评级系统进行威胁评级。DREAD评级系统中每个方面的评级都分为3个等级:3表示高风险;2表示中风险;1表示低风险。
在DREAD模型中,按照表2-10所示的评级标准确定最终的风险等级。

image.png

DVR系统中某威胁用例的威胁评级示例如表2-11所示。

image.png

起初,由于DVR系统用到了众多不同的组件,因此在考虑到所有的威胁用例的情况下,对整个DVR系统进行威胁建模可能会有点儿困难。尽管存在这样或那样的困难,但是一旦建模完成,读者将会发现许多潜在的高风险脆弱点,在渗透测试过程中就可以对这些高风险脆弱点予以重点关注。同时,这一工作也使得我们在对IoT系统开展渗透测试时更容易确定脆弱点的优先级。

2.4 固件威胁建模

在之前介绍的内容中,我们对DVR系统进行了威胁建模并对威胁用例进行了评级,这有助于对测试中所要针对的脆弱点进行优先级排序。在本节中,我们将对同一DVR系统中的固件进行威胁建模。

2.4.1 准备工作

在针对固件的威胁建模演练中,我们将使用免费在线绘图软件https://draw.io刻画固件中各组件的关系。该软件是一款Chrome应用,存储绘制的图表时需要同第三方服务绑定,例如Google Drive或GitHub。借助该软件可以绘制出重叠的关系和过程,而在微软的威胁建模工具Threat Modeling Tool则难以做到这一点。其实,任何能够有效刻画出目标设备或软件之间关系架构的工具都可以满足威胁建模的需求。
在开始绘制图表之前,需要完成以下操作:
1)选择“创建新图表”(Create New Diagram)。
2)选择“软件设计”(Software Design)。
3)选择部署图2-8中所示的图表模板。

image.png

4)删除模板中所有未用到的图表,仅为固件及其内部组件保留一个方框。
5)将资产拖放到图表中,刻画出资产之间的关系。

2.4.2 测试流程

对于固件而言,我们能够通过设备封装情况、基本的端口探测或者各种在线资源来识别其所运行的操作系统类型。现在,我们应该对固件如何在嵌入式IoT设备中运行已经具备了一定的认识,这些内容在第1章中已经有所提及。本节不再像前面的章节一样进行细节的深入讨论,但是我们需要依据对固件的了解情况对固件的组件加以刻画,进而识别出潜在威胁并开展渗透测试。简单起见,后面将会对部分威胁建模步骤加以合并。
步骤1 资产识别
根据对DVR固件及其所提供服务的了解,我们对固件资产进行整理,如表2-12所示。

image.png

步骤2及步骤3 架构概况构建及分解
现在我们已经对DVR系统服务所用到的固件组件以及库文件有了一个大致了解。下面绘制设备、固件内容以及文件系统内容之间的关系,形成概况图,如图2-9所示。

image.png

步骤4 威胁识别
基于概况图和对固件内容的了解我们可以将威胁形成文档。需要记住的是,当前阶段我们还没有对固件镜像进行反汇编,也尚未定位其具体位置。图表中的内容是基于DVR系统宣称其所提供的服务和在线文档得到的。下面列出针对固件的潜在威胁,攻击者可以基于所列出的威胁尝试开展漏洞利用:

  • 针对网络服务实施远程代码执行攻击。
  • 获取文件系统的管理员访问权限,并对局域网发起攻击。
  • 拦截网络通信。
  • 通过SSH访问文件系统资源。
  • 篡改DNS配置信息,将流量重定向到被攻击者的网络/计算机。
  • 访问固件中的Web配置信息和敏感信息。
  • 在DVR设备中安装恶意固件或应用。
  • 跟踪用户活动。
  • 篡改摄像头视频和内容。
  • 篡改审计日志信息。
  • 毁瘫DVR设备。
  • 拦截所有向DVR设备发起的网络连接。

步骤5 威胁建档
接下来,我们将挑选一些威胁用例,并依据威胁描述、威胁目标、攻击技术以及可能采用的对抗措施的形成文档(见表2-13~表2-15),进而对威胁风险进行评估。
威胁1

image.png

威胁2

image.png

威胁3

image.png

步骤6 威胁评级
正如我们之前所做的那样,这里我们仍然采用DREAD评级系统对每个威胁进行评级。我们将使用表2-16评定威胁的风险等级,评级过程中首先选择某种威胁,然后找出其对应的风险等级即可。

image.png

大多数嵌入式设备的操作系统通常以root或admin权限运行。这意味着任何针对固件的漏洞利用无须提权即可获得最高访问权限。对于很多受监管行业而言可能还需要开展进一步研究,但是如果读者正在对消费级设备进行测试,那么如果固件已经能够以root权限运行了,则攻击成功的可能性会显著提高。

2.5 IoT Web应用威胁建模

接下来继续介绍针对DVR系统的威胁建模演练,下一步我们将分解Web应用。DVR系统包含两种类型的Web应用。一种是嵌入式Web应用,在DVR设备内部运行。另一种是由厂商提供的SaaS应用,用于远程访问DVR系统和视频。
SaaS应用能够实现对局域网内嵌入式DVR设备的访问。然而,本文我们主要关注DVR系统中运行的本地嵌入式Web应用,而非厂商的SaaS应用。在本章开头,我们曾简单提到了部分厂商Web应用所采用的技术,但是目前除此之外难以开展更深入的了解。下面,我们将绘制嵌入式Web应用的架构,其中在威胁部分涉及厂商SaaS应用,但是由于不知道其采用的架构,所以无法绘制其架构图。
测试流程
现在,我们应该对如何从头开始构建威胁模型已经能够在脑海中形成大体的思路了。了解了这些内容后,我们就可以忽略威胁建模过程中的部分步骤,而将重心放在更加重要的方面。
步骤1 架构概况创建及分解
下面我们将基于对嵌入式Web应用的了解绘制架构概况图,然后在架构的数据流中识别威胁并进行评估。图2-10展示了嵌入式Web应用的部分基本功能。

image.png

由于只有局域网中的流量,没有公网流量,所以应用的数据流比较简单。因此,识别嵌入式应用中的威胁不算太难。
步骤2 威胁识别
嵌入式Web应用中的数据流比较简单,所以将威胁用例形成文档本应轻而易举,但是考虑到还有厂商基于SaaS的Web应用,因此我们还需要再添加一些额外的场景。
攻击者针对DVR嵌入式Web应用和厂商SaaS应用开展漏洞利用能够实现以下操作:

  • 劫持用户会话查看摄像头监控视频和配置。
  • 监视API调用。
  • 通过命令注入漏洞执行操作系统命令。
  • 泄露敏感用户信息。
  • 采用SQL注入漏洞转储数据库中的数据(拖库)。
  • 任意脚本执行。
  • 获取其他用户账户的访问权限。
  • 伪造已登录用户的请求(CSRF)。
  • 修改DVR配置,将流量重定向到未经授权的用户或网络。
  • 追踪用户。
  • 泄露摄像头回放视频。
  • 删除摄像头回放视频。
  • 对厂商的Web服务器或应用服务器开展漏洞利用。
  • 阻止正常用户的访问。

步骤3 威胁建档
接下来,同之前工作类似,我们选择部分典型威胁用例形成文档(见表2-17~表2-19),文档中包括威胁描述、威胁目标、攻击技术以及可能采用的对抗措施,并对其风险进行评级。
威胁1

image.png

威胁2

image.png

威胁3

image.png

步骤4 威胁评级
我们将使用表2-20评定威胁的风险等级,选择某个威胁之后,即可确定其对应的风险评级。

image.png

显然,对于攻击者而言,针对厂商SaaS应用开展漏洞利用能够取得更理想的效果,因为其中保存了大量的用户信息以及其他内容。但是,希望读者一定要在法律许可的范围内开展测试,并提前获得甲方授权。话又说回来,针对嵌入式Web应用开展渗透测试,虽然可能不一定会取得同针对厂商SaaS应用开展渗透测试一样的评价,但如果充分分析设备的在线资料了解其用法,进而挖掘出一个可以远程利用的漏洞,那么肯定也会大有收获。

2.6 IoT移动应用威胁建模

在下一个威胁建模演练中,我们将对DVR系统中的IoT移动应用进行分析。代理商和不同的OEM为DVR系统(和IoT中的其他系统一样)开发了多套移动应用。出于演示的目的,我们只分别选择了一款Android应用和一款iOS应用进行威胁建模。
测试流程
在前面的章节中,我们已经绘制了很多数据流图,本节中我们将继续使用微软威胁建模工具Threat Modeling Tool进行图表绘制。
步骤1 架构概况构建与分解
与之前绘制图表的步骤类似,这里我们直接展示构建完成的数据流图,其中包括了移动应用中的所有已知资产。图2-11是移动应用的数据流图。
可以看到,应用每次查看账户信息和摄像头视频时,都需要与第三方厂商的云平台建立连接,即使用户与DVR系统处于同一网络中。而远程访问DVR系统所需的用户名和口令就存储在移动设备中。在这里,我们尚不清楚同应用厂商后台系统通信时如何存储或发送这些数据。带着这些疑问,我们开展下一步工作,进行威胁识别。

image.png

步骤2 威胁识别
攻击者可以利用移动应用进行以下操作:

  • 监视API调用。
  • 访问移动设备中的本地资源。
  • 泄露用户敏感信息。
  • 定位在移动设备中以明文存储的用户敏感信息。
  • 通过SQL(ite)注入漏洞转储数据库中的数据。
  • 通过WebView控件的JavaScript接口实现任意脚本执行。
  • 获取其他用户账户的访问权限。
  • 在厂商的云平台环境中追踪用户。
  • 访问存储在设备上的摄像头回放视频。
  • 删除摄像头回放视频。
  • 篡改用户信息。
  • 在未经认证的情况下为摄像头添加共享用户。
  • 建立永久会话,该会话具有持久访问权限不会过期。
  • 截屏并发送给第三方。

步骤3 威胁建档
接下来,同之前的工作类似,我们将选取部分威胁用例并形成文档,评估其风险等级,见表2-21~表2-23。
威胁1

image.png

威胁2

image.png

威胁3

image.png

步骤4 威胁评级
从表2-24中选择某种威胁并评估其风险等级。

image.png

在移动领域中,常见威胁都与数据以及数据的存储和传输方式有关。因此,除非该漏洞能够对大量用户造成影响,或者导致泄露大量用户数据,否则移动应用漏洞风险一般相对较低。在对移动应用的测试过程中,移动应用的漏洞基本不会导致攻击者获取服务器或者移动设备的shell。

2.7 IoT设备硬件威胁建模

现在,我们开始分析目标DVR系统的硬件威胁。大多数消费级DVR设备很容易拆解,因此攻击者可以很方便地对其各个输入源以及外设进行分析。而之所以出现这种情况,一方面可能是为了便于设备将来扩展存储空间,另一方面也可能是因为设备在设计之初就没有被设计为具备防篡改保护等安全功能的产品,举个例子,如果在设计时采用了硬件安全模块(Hardware Security Module,HSM),那么设备会具备一定的防篡改能力。
测试流程
在本节的演练中,我们使用https://draw.io提供的工具绘制硬件输入图。
步骤1 架构概况构建及分解
图2-12是DVR设备硬件示意图。

image.png

从图中可以看到,DVR设备对外连接的接口包括8个用于连接摄像头的BNC连接器、2个USB接口、1个以太网口、1个电源接口、1个VGA接口以及1个HDMI端口。同时,DVR设备中还内置了多款芯片,其中包括1块EEPROM存储芯片,以及PCB中UART接口的多个疑似输入源。
步骤2 威胁识别
攻击者对DVR硬件输入点开展漏洞利用可以完成以下操作:

  • 通过UART接口获取Console口的访问权限。
  • 转储EEPROM存储芯片中机密信息。
  • 利用USB栈中的漏洞控制DVR设备。
  • 插入恶意USB设备造成破坏。
  • 短路DVR设备电源。
  • 攻击DVR bootloader获取Console口的访问权限。
  • 通过USB接口安装恶意软件。

步骤3 威胁建档
接下来,我们将挑选与之前类似的威胁案例,并对其各自风险进行评级,见表2-25~ 表2-27。
威胁1

image.png

威胁2

image.png

威胁3

image.png

步骤4 威胁评级
我们使用表2-28进行威胁评级,从中选择一个威胁并找到其对应的风险等级即可。

image.png

2.8 IoT无线电通信威胁建模

下面,我们开始对无线电/无线通信的威胁建模,除了从客户端应用或摄像头传输到DVR设备的数据之外,DVR系统中并没有太多涉及无线电通信的内容。虽然大多数IoT设备和运行环境会使用不同的协议、在不同的频率上进行无线电通信广播,但幸运的是,在这里我们只需要考虑DVR系统中的Wi-Fi协议和手机厂商的入口点。
测试流程
对于无线电通信威胁建模演练,我们只需要对之前绘制的图表进行简单更新,反映出设备和应用之间的无线电通信过程即可。
步骤1 架构概况构建及分解
DVR系统中无线电通信的示例架构概况如图2-13所示。
正如读者所了解的那样,无线通信仅限于用户通过客户端设备访问DVR设备,其中客户端设备包括浏览器、应用,也包括无线网络摄像头。需要注意的是,当前概况图是根据之前的概况图迭代得到的,因为在前面**的威胁建模过程中我们已经获取到了很多信息。
步骤2 威胁识别**
攻击者可以利用无线通信进行以下操作:

  • 远程访问DVR网络。
  • 窃听DVR系统无线通信。
  • 阻塞DVR系统通信。

image.png

  • 从DVR系统中移除网络摄像头。
  • 建立虚假接入点连接摄像头。
  • 窃听手机通信。
  • 搭建全球移动通信系统(Global System for Mobile Communication,GSM)伪基站。
  • 构造请求欺骗客户端应用。
  • 添加虚假网络摄像头。
  • 通过流氓客户端应用访问DVR系统。

步骤3 威胁建档
接下来,我们将挑选与之前类似的威胁用例,并将其形成文档对其风险进行评级,见表2-29~表2-31。
威胁1

image.png

威胁2

image.png

威胁3

image.png

步骤4 威胁评级
我们将使用表2-32选择拟评级的威胁并评估其风险等级。

image.png

无线中间人攻击技术较为常见,采用该技术,攻击者可以轻而易举地向DVR系统实施无线攻击。而其他威胁(例如添加虚假网络摄像头)实现起来则可能要困难一些,因此,对于急于想要扩大战果的攻击者来说不值得在上面花费过多时间。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:

华章出版社

官方博客
官网链接