物联网黑客手册2物联网渗透测试

发布时间 2023-10-19 18:26:10作者: 磁石空杯

2 物联网渗透测试

在本章中,我们将学习如何执行物联网渗透测试,并了解其中的第一个要素,即攻击面映射。 涉及哪些不同的组件?应该使用哪些工具?如何执行整个渗透测试?

本章将介绍如何执行物联网渗透测试并回答这些问题。我们还将介绍渗透测试流程的第一阶段--攻击面映射,我们用它来评估目标物联网设备解决方案,并对测试产品中可能存在的安全问题做出合理估计。

2.1 什么是物联网渗透测试?

物联网渗透测试是对物联网设备解决方案中存在的各种组件进行评估和利用,以帮助提高设备的安全性。与传统的渗透测试不同,物联网涉及多个不同的组件。

我们需要了解渗透测试的范围以及任何其他约束和限制。渗透测试的条件因产品而异,可以是任何条件,从确保测试在晚上10点到凌晨5点之间进行(或通宵进行),到在客户提供的暂存环境中进行渗透测试,不一而足。一旦了解了项目的技术范围,就应该向客户说明你或你的团队将执行哪种类型的渗透测试(白盒、黑盒或灰盒),以确保客户和你的想法一致。物联网渗透测试的另一个特点是需要多台设备。我们使用的某些技术通常涉及破坏性方法,例如从电路板上拆下芯片进行分析,这很可能会导致设备无法用于进一步分析。

下一步就是按照所需的范围和方法执行渗透测试。渗透测试的这一阶段首先要绘制出解决方案的整个攻击面,然后找出漏洞并进行利用,之后再进行后利用。测试结束时,将提交一份深入的技术报告。

在本章中,我们只介绍第一步,即攻击面映射。在接下来的章节中,我们将介绍识别和利用漏洞的各种方法,最后一章将介绍如何撰写物联网设备渗透测试报告。

2.2 攻击面映射

攻击面映射过程是指映射出攻击者在物联网设备解决方案中可能滥用的各种入口点。这是整个物联网渗透测试方法的第一步,也是最重要的一步。它还包括从渗透测试者的角度创建整个产品的架构图。在渗透测试过程中,我们通常会在这一阶段花费一整天的时间。

这一步非常有用,因为它能帮助你了解整个解决方案的架构,同时还能帮助你建立在产品上运行的各种测试,并按优先级排序。攻击的优先级可根据利用的难易程度乘以利用的影响来确定。如果利用漏洞非常容易,并能成功入侵和检索设备中的敏感数据,那么这种漏洞将被归类为高优先级、高关键性漏洞。相比之下,难以执行的漏洞--在测试过程中获得的输出并不那么有用--将被归类为低关键性、低优先级漏洞。在业务约定中,只要我们发现了高危急性漏洞,我们也会在当天立即将漏洞概述和影响通知供应商,而不是等到业务约定完成。

现在,您已经对攻击面映射有了一个基本概念,让我们深入了解一下如何执行此流程的具体细节。

2.3 如何执行攻击面映射

一旦发现新目标,首先要花时间了解设备。在信息不完整或不全面的情况下开始评估,是可能犯的最大错误之一。这意味着要通过所有可能的渠道收集信息,如设备文档和手册、有关产品的在线资源和帖子,以及有关设备的任何可用内容或先前研究。

注意设备中使用的各种组件、CPU 架构类型、使用的通信协议、移动应用程序详情、固件升级过程、硬件端口、设备对外部媒体的支持,以及您能找到的几乎所有其他信息。通常情况下,事情并不像最初看起来那么明显,这就是为什么你应该深入了解设备提供的各种功能。

从物联网解决方案的角度来看,整个架构大致可分为三类:

  • 嵌入式设备
  • 固件、软件和应用程序。
  • 无线通信。

我们分析物联网设备以绘制攻击面图的目的,是对每个类别对应的功能和安全威胁进行分类。我们考虑的是,在根据刚才提到的类别对潜在漏洞进行分类时,应该有怎样的思维过程。接下来提到的每个类别都是对该组件的介绍,在接下来的章节中会有更深入的详细介绍。

2.3.1 嵌入式设备

嵌入式设备是任何物联网设备架构的关键,也是物联网中的"物"。物联网产品中的嵌入式设备可用于多种不同用途,具体取决于用户的使用场景。它可以作为设备整个物联网架构的枢纽,也可以作为从物理环境中收集数据的传感器,还可以作为显示数据或执行用户预期操作的一种方式。因此,物联网中的"物"可以用来收集、监控、分析数据和执行操作。

智能家居物联网产品由许多设备组成。这些设备包括智能网关或集线器、智能灯泡、运动传感器、智能开关和其他连接设备。

尽管这些设备的用途不同,但在大多数情况下,测试这些设备是否存在安全问题的方法是相同的。根据设备的用途,它将保存敏感信息,一旦泄露将被视为关键信息。

以下是在嵌入式设备中发现的一些漏洞:

  • 串行端口暴露。
  • 串行端口使用了不安全的验证机制。
  • 通过JTAG或闪存芯片转储固件的能力。
  • 外部媒体的攻击。
  • 电源分析和侧信道的攻击。

要评估设备的安全性,应根据以下问题进行思考: 设备有哪些功能?设备可以访问哪些信息?基于这两个因素,我们就能实际估计潜在的安全问题及其影响。

深入了解硬件利用后,我们将在第3章中了解常见物联网设备的更多潜在缺陷,并研究如何利用我们在物联网设备中发现的各种硬件安全漏洞。

参考资料

2.3.2 固件、软件和应用程序

利用完硬件漏洞后,我们要研究的下一个组件是物联网设备的软件部分,其中包括设备上运行的固件、用于控制设备的移动应用程序、连接到设备的云组件等。

在这些组件中,您可以将传统的渗透测试经验应用到物联网生态系统中。这还将涉及不同架构(包括高级 RISC 机器 (ARM Advanced RISC Machines) 和 MIPS)二进制文件的逆向工程以及移动应用程序的逆向工程等主题。这些组件通常可以帮助您揭开许多秘密并发现漏洞。根据测试组件的不同,您将使用不同的工具集和不同的技术。

在对基于软件的组件进行渗透测试期间,其他目标之一是研究我们可以访问要测试的单个组件的各种方法。例如,如果我们要分析固件的漏洞,就需要访问固件,而访问固件往往并不容易。

我们还需要将大量精力放在通信API的逆向工程上,以帮助我们了解不同物联网设备组件之间的交互方式,并研究使用的是何种通信协议。

如果我们看一下现实世界中的物联网设备,智能家居将包含以下组件,这些组件将在组件的软件部分进行介绍:

  • 移动应用

它可以让我们控制智能设备--开关电灯、向智能家居系统添加新设备等。通常情况下,您会有Android和iOS平台的移动应用程序,这两个平台是目前占主导地位的移动应用程序平台。移动应用程序中可能存在几种攻击,这些攻击可能会泄露设备的敏感信息或设备的工作方式。它还可以作为一个切入点,通过逆向工程应用程序二进制文件及其通信API来攻击网络组件(稍后提及)。关于移动应用程序,我们可能还需要处理移动应用程序的本地组件,这可能会让我们对整个应用程序二进制文件和各种底层功能(如加密和其他敏感方面)有更多了解。

  • 管理平台(Web应用)

用户可以通过它监控设备、查看分析和使用信息、控制设备权限等。您会遇到的大多数物联网设备都有一个网络接口,您可以访问从设备发送到网络端点的数据。如果网络应用程序存在漏洞,您就可以访问未经授权的数据,这些数据可能是使用同一物联网设备的同一用户或其他用户的数据,过去许多物联网设备都曾出现过这种情况,特别是婴儿监视器。

  • 不安全的网络接口

这些是物联网设备中暴露在网络上的组件,可能会因为暴露的网络接口存在漏洞而受到威胁。这可能是一个暴露的端口,在没有任何认证的情况下接受与服务的连接,也可能是一个运行脆弱和过时版本的服务,该版本存在针对该特定版本的已知漏洞。在此之前,我们已经对许多运行简单网络管理协议(SNMP)、文件传输协议(FTP)等组件的易受攻击版本的设备进行了渗透测试。

  • 固件: 固件控制设备上的各种组件,并负责设备上的所有操作。你可以把它想象成掌握王国钥匙的组件。你能想象到的任何可从设备中提取的信息,几乎都能在固件中找到。本书中专门讨论固件的章节将向您介绍什么是固件、固件的内部结构、我们可以在固件中发现的各种漏洞,以及如何对固件执行其他分析。

移动应用、Web应用和嵌入式设备通常通过不同的通信机制与其他组件和后端端点进行通信,例如表示状态传输(REST)、简单对象访问协议(SOAP)、消息队列遥测传输(MQTT)、约束应用协议(CoAP Constrained Application Protocol)等,我们将在接下来的章节中简要介绍这些机制。此外,有些组件会经常收集数据并将其发送到远程端点,这通常也会被视为侵犯隐私,而不是安全问题。攻击面映射的全部重点是确保你有足够的信息来了解设备的各个方面和功能,这将有助于我们了解其中的安全问题。

这些组件涉及许多漏洞,在此列出其中一些。

  • 固件

    • 修改固件的能力。
    • 不安全的签名和完整性验证。
    • 固件中硬编码的敏感值--API密钥、密码、暂存URL等。
    • 私人证书。
    • 通过固件了解设备全部功能的能力。
    • 从固件中提取文件系统。
    • 存在已知漏洞的过时组件。
  • 移动应用

    • 逆向工程移动应用。
    • 转储移动应用程序的源代码。
    • 不安全的身份验证和授权检查。
    • 业务和逻辑缺陷。
    • 侧信道数据泄漏。
    • 运行时操纵攻击。
    • 不安全的网络通信。
    • 过时的第三方库和软件开发工具包 (SDK)。
  • Web应用

    • 客户端注入。
    • 不安全的直接对象引用。
    • 不安全的身份验证和授权。
    • 敏感数据泄漏。
    • 业务逻辑缺陷
    • 跨站请求伪造
    • 跨站脚本

以上列举的只是这些组件中存在的部分漏洞,您应该对影响这些组件的漏洞类型有所了解。

2.3.3 无线通信

无线通信为不同设备之间的通信提供了一种方式。公司在考虑安全问题时通常不会考虑这些通信介质和协议,因此这些介质和协议成为了渗透测试人员识别物联网设备漏洞的最佳地点。

物联网设备中常用的无线电通信协议有蜂窝、Wi-Fi、BLE、ZigBee、Wave、6LoWPAN、LoRa等。根据设备使用的通信协议,可能需要专门的硬件来执行无线电通信分析。

在初步分析过程中,您还应列出对使用中的无线电协议进行安全评估所需的所有不同硬件和软件项目。尽管最初这可能是一项繁重的任务,但一旦获得了执行评估所需的工具,就只需使用这些工具对通信进行分析即可。

设置软件和工具可能是一项艰巨的任务。这就是为什么我们构建了一个名为AttifyOS的定制虚拟机(VM)的原因,您可以使用该虚拟机进行本书中涉及的所有物联网渗透测试练习和实验。您可以从 https://attify.com/attifyos下载AttifyOS。

无线通信的三大类别:

  • 软件定义无线电 (SDR Software Defined Radio)。
  • ZigBee
  • BLE(Bluetooth Low Energy)

无线通信协议和媒介中发现的最常见的漏洞类型:

  • 中间人攻击。
  • 基于重放的攻击。
  • 不安全的循环冗余校验(CRC Cyclic Redundancy Check)验证。
  • 基于干扰的攻击
  • 拒绝服务 (DoS Denial of service)。
  • 缺乏加密。
  • 从无线数据包中提取敏感信息。
  • 实时无线通信拦截和修改。

我们将在本书后面的章节中介绍这些攻击类别和实施方法。在绘制无线通信攻击面图时,应重点关注以下项目:

  • 各相关组件的角色是什么?
  • 哪个组件启动身份验证和配对机制?
  • 配对机制是什么样的?
  • 每个组件可同时处理多少台设备?
  • 设备的工作频率是多少?
  • 不同组件使用什么协议?是定制协议还是专有协议?
  • 是否有任何类似设备与该设备在相同频率范围内运行?

这些只是在分析特定物联网设备的无线电通信时应考虑的部分问题。

2.3.4 创建攻击面地图

以下是创建任何给定物联网设备的攻击面映射所需的步骤:

  • 列出目标产品中存在的所有组件。
  • 绘制架构图。
  • 标注组件及其之间的通信流。
  • 确定每个组件的攻击向量和使用的通信渠道或协议。
  • 根据不同的关键性对攻击向量进行分类。

初始架构图还有助于我们了解物联网解决方案的整个架构和所涉及的各个组件。确保在架构图绘制过程中,列出所涉及的所有组件,无论它们看起来多么次要,以及该组件的所有技术规格。

对于某些最初可能难以获得的信息,例如设备的工作频率,您可以在网上找到相关信息,例如fccid.io,您可以输入物联网设备的FCC ID,找到有关该特定设备的大量信息。

以三星智能物联套件为例,该套件由多个智能家居自动化设备组成。通过对网站的初步了解,我们可以知道它包含以下项目:

  • 智能家居Hub
  • 运动传感器
  • 电源插座
  • 存在传感器

此外,它还有移动应用程序,可在Google Play Store和Apple AppStore上下载。下一步是绘制这些组件的示意图,以帮助我们更直观地了解它们。图 2-3 是我为一个智能家居设备示例绘制的架构示意图。

  • 该智能家居系统涉及以下组件:
    • 设备
    • 移动应用程序。
    • 物联网网关。
    • 云资产
    • 通信协议: BLE、Wi-Fi、ZigBee、ZWave、6LoWPAN、GSM 和以太网。
    • 设备和移动应用程序通过BLE通信。
    • 智能集线器和设备通过各种协议,即ZigBee、zWave和6LoWPAN 进行通信。
    • 移动应用程序还可以通过Wi-Fi与智能集线器进行交互。
    • 移动应用程序和智能集线器每五分钟与云通信一次,并共享数据。
    • 移动应用程序使用REST API通过云资产进行通信。

额外的细节说明:

  • 智能集线器网关有以太网端口和外部SD卡插槽,可用于固件升级。
  • 设备包含Broadcom处理器。
  • 移动应用程序是本地应用程序,有可能带有附加库。
  • 在初始设置过程中,设备的默认密码为admin。
  • 如果存在证书问题,Android应用程序仍可运行;也就是说,应用程序通过不安全的连接与不信任的SSL证书颁发机构(CA)运行。

根据所有这些信息,准备一份电子表格,列出要对各个组件进行测试的所有测试用例和漏洞利用,包括详细描述要执行的具体测试以及攻击成功后的输出结果。电子表格越详细,五项测试就越有效。如果您是团队成员,则应与团队成员一起集思广益,然后调整电子表格。

您还可以利用各种可用资源,包括以下资源:

2.4 组织渗透测试

由于物联网渗透测试与其他形式的渗透测试相比相对较新,因此熟悉如何执行整体渗透测试的人并不多。本节将介绍如何构建渗透测试、理想的团队规模、所需天数以及其他相关细节。

2.4.1 客户参与和初步讨论电话

这是我们收到企业的物联网设备渗透测试请求后的首次讨论电话。甚至在这一阶段之前,我们就会与技术团队成员进行初步讨论,了解我们是否拥有与所处理的物联网设备相关的专业知识,以及其他后勤要求--可用资源、下次可用日期等。

在这一阶段,我们会让我们的渗透测试负责人与客户通话,讨论设备。我们会讨论以下一些问题: 渗透测试的预期结果是什么?他们最想关注哪些组件?他们想要普通的渗透测试,还是需要额外的研究团队参与的渗透测试?

如果您是一名五线谱学家,客户是您最宝贵的资产,这一点怎么强调都不为过;只有在您和您的团队擅长的领域,您才能提供服务和产品,这一点极其重要。这样,你就能为客户提供最好的服务,并保持长久的合作关系。

2.4.2 额外的技术讨论和简报电话

一旦我们确定这是我们想要参与的项目,并且我们能够通过出色的研究为整个项目贡献价值,我们就会要求客户让他们的技术团队与我们的渗透测试团队一起讨论。请记住,这一阶段是在签署保密协议和其他必要文件之后进行的,这样客户才能自由分享产品的技术规格。

在这一阶段,我们会提出许多问题,以便更好地了解产品。这使我们能够更好地了解产品,并向客户解释我们的渗透测试方法,以及他们在渗透测试的每个阶段可以期待什么。我们还会分享我们的安全报告机制、每日报告系统、我们将要执行的测试用例、评估团队、与客户后端机制的交互等。重要的是,你要对客户透明、公平地介绍你的渗透测试方法,以及他们每天、每个阶段结束时和项目结束时应该期待的结果。

我们还需要了解他们的开发流程、他们的安全团队运行哪种测试、他们的质量保证 (QA) 测试是否涉及安全测试、是否有安全开发生命周期等等。这也有助于团队之间的相互了解,因为我们随后还会在开发人员修复漏洞时为他们提供个性化支持。

很明显,这些内容大多与灰盒评估相对应,但你应该明白其中的含义。在黑盒渗透测试中,你会省略攻击者不会掌握的细节,这也被称为攻击者模拟利用。攻击者模拟利用是一种渗透测试方法,在这种方法中,你将以高度针对性攻击者的方式入侵和攻击终端设备。

2.4.3 攻击者模拟利用

这是实际渗透测试阶段,我们在此阶段发现物联网产品中的漏洞并加以利用。我们的反向工程团队负责对各种二进制文件进行反向工程,嵌入式黑客团队负责入侵物联网硬件设备,软件无线 (SDR) 团队负责利用无线电通信,软件渗透测试团队负责固件、移动应用程序、网络应用程序和基于云的资产。

只有拥有一个强大的团队,其中有不同的渗透测试部门和在各自工作领域拥有专业知识的个人,才有可能做到这一点。如果您是个人安全研究员,您也可以做到这一点,但对于物联网渗透测试,我强烈建议您在执行渗透测试任务之前,组建一个至少由软件和固件、硬件以及无线专家组成的三人团队。

测试完成后,我们会分享一份非常详细的报告,其中包括PoC脚本、高质量视频演示、用于发现漏洞的技术、重现步骤、修复方法以及更多有关已识别漏洞的参考资料。

2.4.4 修复

完成渗透测试后,我们将与开发人员合作,通过语音、视频电话和电子邮件为他们提供支持,明确需要更改的内容和需要安装的补丁。尽管所有这些信息都会在技术报告中提供,但我们发现,在这一阶段与开发人员合作并提供支持,有助于他们更快地修复漏洞,并避免再次犯同样的错误,因为他们在修复讨论中从我们的团队那里学到了很多东西。

2.4.5 重新评估

开发人员修复安全漏洞后,我们会对初始渗透测试中发现的漏洞进行另一次渗透测试。这样可以确保所有补丁都已到位,开发人员应用的补丁是安全的,不会导致其他组件出现漏洞。这是五项测试人员常犯的错误之一: 一旦设备打上了补丁,他们就会将重新评估测试局限于他们发现存在漏洞的组件。然而,您需要特别注意的是,要确保对该处代码的修复不会导致另一处漏洞的产生。就这样,我们结束了对该版本设备的渗透测试。

2.5 小结

在本章中,我们学习了如何开始物联网渗透测试,为产品创建威胁模型,也称为攻击面映射。我们还深入了解了物联网架构中的各种组件,以及在这些组件中可能发现的安全漏洞。