作者:0431实验室
公众号:吉林省信睿网络
对于安全研究人员而言,每一种新的复杂技术都存在的问题是,不知道从哪里开始以及如何/在哪里进行攻击。这是一个常见的问题,并且具有一个通用的解决方案,即将技术分解为多个小组件并开始分别学习每个组件。这个过程使您掌握了每个组件,并引导您专注于最有趣的组件
这是人们之间普遍的误解,认为物联网仅指硬件,这造成了想象中的障碍,并使大多数安全研究人员不愿涉足物联网安全。是的,其中涉及硬件,并且可以学习分析硬件所需的技能。如果有帮助,“物联网安全研究并不难”,但需要奉献精神和学习意愿。当您阅读本博客文章时,您将意识到硬件仅构成IoT生态系统的1/3。最重要的是,如果您可以破坏其他组件(例如,Cloud),则不仅会入侵设备,还会造成更大的破坏。
互联网上有许多关于物联网的定义,掌握一项技术的关键是要了解其背后的基本思想,这有助于定义您自己的含义和适用性。每个人都可以有自己的定义,对我来说,物联网主要涉及三件事:
1. 自动化:面对现实,我们很懒惰,而未来就是让我们变得更懒惰,并使我们手动完成的任务自动化。
2. 虚拟物理世界接口:在物理世界和虚拟世界之间建立桥梁。简而言之,允许虚拟世界从物理世界读取和写入物理世界。当我说读时,我的意思是感测物理环境并将状态转换为数据,并将其发送到虚拟数据存储以进行进一步分析,例如温度传感器,医疗传感器,照相机等。写方法是通过动作来控制物理世界,即将数据转换为对现实世界的动作,例如门锁,控制车辆运行,喷水,医用泵等。您就明白了。
3. 洞察力和决策能力:可以实时分析从设备收集的数据,以更好地了解环境,对某些事件采取行动,找到任何物理世界问题的根本原因等。
因此,IoT技术为最终用户和供应商提供了实时信息和手头任务的自动化功能。
基于以上定义,如果我们要创建一种技术来解决此问题,我们将需要
第一种通过将经济的硬件设备嵌入相应的传感器/控制器来解决,第二种通过云方便地解决,最后第三种通过移动应用程序和/或Web应用程序轻松解决。
正如我上面提到的,物联网就是让我们变得胖和懒。人类善于创新,无论出于何种原因,我们都可以在几乎完美的系统中找到可以改进的领域。在当今世界,物联网技术的使用是无限的。我敢打赌,如果您环顾四周,您可能会想到一个物联网的想法。当前,物联网在各个领域都有很多创新,其唯一目的是实现来自物理世界的自动化和实时数据分析
物联网架构以其最简单的形式包括三个组件,如下图所示。
组件之间的通信取决于IoT产品的用途和/或类型。以下是一些示例,这些示例将使组件之间如何以及为何不相互交谈变得清晰。
设备只能移动通话-例如。基于BLE的设备
设备仅与IoT网关对话–例如。ZigBee,无线HART设备等
移动仅与云对话–如果用户没有对设备的邻近访问权,并且只能通过云进行控制。
可以进一步扩展功能架构,以定义通过互联网与云和移动/ Web界面通信的传感器网络。在传统的基于TCP / IP的技术无法实现的情况下,传感器可能拥有自己的网络,或者在无法实现传统网络并且无线电通信提供更高效率和更多意义的情况下,具有基于无线电的网络。在后一种情况下,需要有一个网关(我们的IoT网关/集线器/路由器)充当无线电通信与传统TCP / IP通信之间的接口。从现在开始,我将把TCP / IP称为传统的网络/通信。
我们还可以拥有地理位置分散的传感器网络,这些网络可以通过IoT网关通过传统网络相互通信/连接,如下所示。
如果从分层的角度看待物联网技术,我们可以将其定义为构成物联网核心的3个简单层
传感层–由硬件传感器和传感器网络组成。
通信层–它由通信机制组成,该机制允许传感层与管理层进行通信,例如– Wifi,3G,LTE,以太网等。
管理层–这是最顶层,负责从原始数据中弄清楚意义,并为用户提供可呈现的精美视图。它包括云,存储,应用等。
现在我们可以很容易地将IoT的各个组成部分隔离开来,并尝试为每个组件分别定义攻击面,然后将它们组合起来以创建 一个整体的概述。物联网生态系统的攻击面。我称其为IoT生态系统而不是IoT产品,因为它确实是一个由不同组件相互交谈并解决特定现实问题的生态系统。让我们继续定义IoT生态系统的攻击面,并详细讨论每个组件的攻击面。按组件划分的攻击面可以分为三个或四个(如果我们将通信作为攻击面)主要区域如下:
OWASP现在还在IoT安全方面做了很多工作。他们还定义了攻击面。希望大家可以好好阅读它。理解不同的想法是一件好事,因为它可以帮助您创建自己的综合攻击面。
除非特别说明,否则“微控制器”一词的通用形式表示微控制器,微处理器或SoC(片上系统)。
下面的攻击面是我们定义的,可能与其他来源不同。
移动是物联网的重要用户界面之一,通过它最终用户可以洞悉物理世界的状态。由于移动应用程序与IoT生态系统进行通信以发送命令和读取数据,因此它成为IoT生态系统的切入点之一。我们将尝试从物联网的角度列出移动设备的攻击面
云是物联网的重要组成部分之一,通常来自产品线所有实例的数据都在这里汇聚。这使其成为非常有趣的攻击点。记住,我在上一篇文章中提到物联网不仅与硬件有关。原因是云将保存所有已部署的IoT实例的数据,并具有向所有实例发送命令的特权。通常它是由用户启动的,但是如果受到威胁,攻击者将获得对全球部署的设备(及其数据)的控制权,这很危险。总体而言,攻击面专注于它提供的接口,其中包括
接下来是设备,它是IoT技术的游戏规则改变者:)。它与物理世界进行交互,并与虚拟世界进行通信。这是物理世界数据的第一站。鉴于围绕用户隐私存储的用户敏感数据(例如房屋数据,身体数据,个人信息),围绕用户隐私存在着整个争论。将来,设备可能会直接通过其钱包或单独的临时钱包使用用户的加密货币来购买物品,进行维修等。攻击面看起来如下所示
尽管这不是有形的攻击面,但理想情况下,有形的攻击面将是通信接口和负责通信的各个驱动程序/固件。但是,这需要一个单独的部分,因为IoT生态系统可以在有线以及无线介质上使用的通信协议列表很多。以下是构成通信攻击面的一些区域。
硬件接口允许实际通信。但是,实际的数据通信/数据包是由软件中实现的上层定义的。因此,在此“攻击表面积”(通信)中,我们将仅讨论协议。尽管协议中的缺陷可能导致对驻留在移动设备,设备或云上的协议端点的攻击,但为清楚起见,我们将其保留为单独的攻击面。这里的列表中有太多标准要提及。但是,我们将列出各种物联网产品中使用的一些常见协议。
Web或技术术语HTTP(S)是用于通信的最常见协议,并在各处使用。由于网络上的攻击面很大,因此我们专门为此单独输入一个条目。但是,好消息是,由于已经研究了二十多年,因此攻击面,漏洞和缓解技术已基本标准化。在线上有大量资源详细描述了攻击和防护。对于初学者来说,OWASP在其Web Top 10,测试指南和各种开源工具(www.owasp.org)方面做得很好。
除了网络之外,还有许多协议,某些协议是特定于域的,有些是通用的,还有一些是出于效率原因。为简洁起见,这里要列出的协议太多了,为简便起见,我们将列出一些通用协议标准,以使您对所使用的协议种类有一个清晰的了解。历史告诉我们,所有协议都有其实施缺陷,协议设计缺陷和配置缺陷。这些需要在渗透测试中进行分析。
上面的内容应该为您全面概述IoT生态系统的攻击面。既然我们对此有了一个清晰的主意,让我们为设备定义一个详细的攻击面,以便我们知道在标准的IoT渗透测试中到底需要攻击什么。这也有助于物联网安全设计师为物联网产品创建威胁模型。
请注意,我们不会(重新)定义Mobile和Cloud的攻击面,因为您可以在Internet上找到大量描述相同内容的资源。本博客系列的目的是为安全研究人员建立物联网安全性打下桥梁,因此,我们将专注于当前尚无可用或结构化的知识。鉴于我们仍将从我们的角度讨论与物联网生态系统相关的移动和云安全性
好的,让我们这样做:)。以下是IoT攻击面的分离结构化定义。请注意,这是根据我们的理解,并未从其他来源获取。
设备使用的存储空间。这可以进一步分为内部和外部,持久性和易失性。
SD卡通常用于存储配置和产品数据。它们也可以用于存储固件更新。这是一个非常有趣的攻击面,我们将在以后的博客文章中讨论通过SD卡可能发生的某些攻击。
某些产品可能使用USB驱动器来存储与SD卡中相似的数据,以及读取已下载或存储在USB驱动器中的数据。与SD卡类似的攻击也适用于USB存储设备。
这些用于各种用途,包括读/写传感器数据,引导程序,固件,凭证,密钥等。在测试硬件板时,查看存储在芯片上的数据至关重要。我们还可以对内存和微控制器之间的通信进行运行时分析,以分析在不同操作期间存储/读取的数据类型。这可以通过使逻辑分析仪嗅探总线通信来实现。在触发设备上的特定操作时,您会发现正在读取/写入的有趣数据。内存芯片有以下几种:
I2C串行EEPROM
当谈到易失性内存时,“ RAM”一词立即浮现在脑海中。它们广泛用于PC和嵌入式系统中,并在运行时保存代码和数据。关闭设备电源后,数据将丢失。一些常见的RAM类型如下
微控制器还具有自己的内部存储器,通常用于存储代码。这些存储器通常在调试微控制器(例如通过JTAG调试)时可访问。微控制器中使用的各种存储器是:
同一块板上的不同硬件组件需要相互交流,并与外界对话。所有这些通信都是使用定义良好的标准硬件通信协议完成的。从攻击者的角度来看,它可以通过嗅探或注入恶意数据使他们深入了解实际的通信。应该分析下面提到的一些最常见的接口,以发现安全问题。
UART(通用异步接收器发送器)是一个硬件组件,它允许两个硬件外设之间进行异步串行通信。它们可以在同一块板上(例如与电动机或LED屏幕对话的微控制器),也可以在两个不同设备之间(例如与PC对话的设备微控制器)之间。这是一个有趣的攻击面,因为它可能允许通过串行方式对设备进行读/写访问。在许多设备中,板上的UART端口保持开放状态,任何人都可以通过串行端口进行连接和访问,以获得某种类型的控制台,例如简单的外壳,自定义命令行控制台,日志输出等。设备通常具有一组针脚,输出连接到微控制器的UART RX和TX引脚,用于发送和接收串行数据。
典型的4引脚UART端口
微控制器具有使用指定的引脚在运行时进行调试的规定,这些引脚连接到板上的引脚输出。这些引脚(端口)供开发人员和设计人员用来调试,读取/写入固件和微控制器内部存储器,并在生产后控制/测试微控制器引脚。鉴于调试端口提供给攻击者的能力和访问权限,这使得调试端口成为最关键的攻击面之一。有一些用于此目的的标准接口如下:
除测试芯片外,调试器还使用这些引脚与微控制器上实现的TAP(测试访问端口)进行通信。从安全角度来看,识别JTAG端口并与之连接可以使攻击者提取固件,对逻辑进行逆向工程并在设备上刷新恶意固件。以后会在以后的博客文章中提供更多信息。
cJTAG(紧凑型JTAG):这是标准IEEE 1149.7中定义的新JTAG协议。它不会替代1149.1标准,而是会进一步扩展它,并且与JTAG向后兼容。它定义了两个引脚的接口(TCK和TMS)以及实现新功能的新TAP。
SWD(串行线调试):SWD是用于调试微控制器的另一个接口/协议。它是一个两针接口:a。SWDIO(双向)b。SWCLK(时钟)这是ARM特定的协议,使用ARM调试接口v5中定义的ARM CPU标准双向有线协议。SWD的好处是它声称比JTAG更有效。
JTAG端口在PCB板上的外观如何
请注意,如上图所示,JTAG端口不一定是10个引脚。
集成电路间是一种短距离通信协议,用于在同一板上的芯片之间进行通信。它是由飞利浦(现在为NXP)发明的。它具有主从(多)架构,并使用两线总线
I2C的一种使用情况是在EEPROM芯片中,该芯片连接到微控制器的I2C引脚,通常存储数据或代码。典型的攻击包括篡改数据,提取敏感信息,破坏数据等。我们应该分析EEPROM芯片上的静态数据,以及通过嗅探I2C通信执行运行时分析以了解行为和安全隐患。如前所述,我们将在系列文章中专门写一篇博客文章,以了解和分析I2C通信。
串行外设接口也是一种短距离通信协议,用于在同一板上的芯片之间进行通信。它是由摩托罗拉公司开发的。它是全双工的,并使用主从结构(单个主服务器)。与I2C相比,它还具有更高的吞吐量。它使用四线串行总线:
它用于与各种外围设备通信。闪存和EEPROM芯片也使用SPI。测试和分析的方法类似于I2C,只是我们具有不同的总线接口。我们将在后面的博客文章中详细讨论SPI。
该设备可以具有用于充电或通讯的USB(微型/微型等)接口。对于后者,有必要测试接口的已知或未知问题。我们应该嗅探通信以进行运行时分析,并模糊USB接口中的未知错误。
这是一个宽松的名称,我们指的是与物理世界的接口。它可以不必限于感测类型的接口。例如,温度传感器将是一个完美的例子,但门锁除了“ Lock / Unlock”(锁定/解锁)动作可控制物理世界之外,什么也不会感测。根据它们的操作,它们可以分为三种类型:
监控器:这与传感器的字面含义更紧密地联系在一起,即感测或监控物理世界的任何变化。防爆。温度,运动,脉搏,血压,轮胎气压等
控制:这些类型的设备以某种方式控制物理世界。防爆。锁,分配器等
混合:这是上述两种类型的组合,例如温度控制,基于一天中的时间的照明灯等。这是关键接口之一,因为从物理世界获得的所有值和数据都将传输到云中。如果攻击者可以用错误的(错误的)数据强制设备,则整个生态系统都将受到影响,因为所有决策和统计都基于此数据。换句话说,这是物联网生态系统的关键。错误的值可能会对生态系统做出的决定造成灾难性的影响。
与传感器接口一样,我们使用HMI作为通用术语来定义用户与设备之间的接口,而并不局限于工业控制系统中使用的术语。这是用户可用来与设备通信并直接在其上进行操作的界面。一些常见的例子是触摸屏,按钮,触摸板等。测试此接口以发现任何旁路机制,安全漏洞等非常重要。
还有许多其他硬件接口用于与设备通信。作为最后一个阶段,分析并发现所有接口中的缺陷和旁路机制非常重要。一些众所周知的接口包括(但不限于):
该接口允许设备与虚拟世界的其余部分进行对话,包括传感器网络,云和移动设备。负责网络通信的硬件接口可能具有提供通信功能的独立微控制器/固件。在这种情况下,攻击面是实施低级通信的固件或驱动程序代码。
wifi接口存在一些已知问题。从攻击面的角度来看,攻击wifi芯片可能会损坏它,DOS,绕过安全限制或执行代码会很有趣。
以太网接口(与wifi接口一样)具有低级别的TCP / IP堆栈漏洞,硬件实现漏洞和类似的攻击媒介。
考虑到许多物联网产品已转移到/正在使用无线电通信构建,无线电接口已成为最重要的攻击面之一。优先选择源于以下事实:在许多情况下,通过Wifi /有线网络连接使用无线电更为有效。我将Wifi进行单独分类而不是在本节中进行分类的原因主要是为了清楚地区分可以直接连接到互联网的设备(Wifi /有线)和需要网关(例如智能集线器)的设备,这些设备必须同时实现无线电以及Wifi /有线接口,分别用于与传感器和Internet进行通信。从实际的通信角度来看,可以将其视为两种不同的通信模式:
简单/非结构化:这种类型通常用于诸如百叶窗,锁,门铃等简单产品。简单非结构化是指它使用简单(主要是专有的)数据(流)并通过无线电接口发送。作为渗透测试人员,您需要对通信进行反向工程以发现实施中的缺陷。使用诸如SDR(软件定义的无线电)之类的无线电嗅探硬件工具来嗅探无线电通信很容易。
复杂/结构化的:复杂和结构化的通信意味着它使用结构化的数据包进行无线电通信,这是复杂的,因为它们不仅携带数据,还携带有关协议的其他信息和元信息。这些协议由于效率,标准化,经济芯片和实施便利性而在物联网世界中非常出名。同样,有多种工具可用于嗅探和解析协议,以提取跨应用程序发送的特定于应用程序的数据。一些常见的协议包括:
a.Bluetooth and BLE
b.ZigBee
c.Zwave
d.NFC
e.RFID
f.LORA
g.Wireless HART …
在谈论十大漏洞时,我们首先想到的是OWASP。为什么不呢,毕竟他们是定义Web和移动十大漏洞的先锋。我是OWASP的粉丝,仅因为OWASP社区多年来为定义应用程序安全性问题所做的工作,为行业提供了免费的教程和开源工具以减轻风险和漏洞。您不太可能没有听说过OWASP或从他们的网站上阅读过内容,但是,如果您没有听说过,我强烈建议您浏览他们的网站 https://www.owasp.org
OWASP还启动了IoT安全计划,该社区已定义了IoT攻击面和除Web和移动设备之外的IoT十大漏洞。他们朝着正确的方向发展,很快它将成为物联网安全内容的绝佳去处。
OWASP网站上与IoT安全读者相关的内容如下:
OWASP IoT攻击面:https://www.owasp.org/index.php/OWASP_Internet_of_Things_Project#tab=IoT_Attack_Surface_Areas
OWASP IoT十大漏洞:https://www.owasp.org/index.php/Top_10_IoT_Vulnerabilities_(2014)
OWASP最近定义了IoT中的十大漏洞。它们非常全面,我们建议您仔细阅读它们,了解IoT生态系统的威胁和问题。作为一项家庭作业,您可以将其映射到上一篇博客文章中定义的攻击面。OWASP IoT的十大漏洞(根据https://www.owasp.org/index.php/Top_IoT_Vulnerabilities)
我们不会在前十名列表中详细介绍每个项目。可以在OWASP链接(如上)中找到详细信息。相反,我们将根据对我们发现的问题或在Internet上发布的问题的经验来完善前十名。
免责声明:请注意,我们的目标不是要超越OWASP十强,这是伙计们所做的出色工作。OWASP团队敬上!这是根据我们的经验进行的练习,应将重点更多地放在硬件和新的物联网技术上,这一点值得引起我们的注意。
Payatu IoT十大漏洞,将Web和云合并到一个项目中,原因是并非所有传感器或IoT设备都将具有Web界面,因此云是生态系统的重要组成部分,从攻击面的角度来看,云主要是基于Web API的。另外,某些漏洞可能适用于多个组件,例如,硬编码适用于设备和移动应用程序。
我们将定义对IoT安全市场和产品产生影响的十大IoT漏洞。我们将在下面解释所有IoT漏洞,以提供对基本安全问题的理解。
P1. 硬编码的敏感信息
P2. 启用了硬件调试端口
P3. 不安全的固件
P4. 不安全的数据存储
P5. 认证不足
P6. 通信不安全
P7. 配置不安全
P8. 数据输入过滤
P9. 不足。移动接口
P10. 不安全。不安全的云/ Web界面
开发人员在程序中对静态数据进行硬编码是在开发过程中对信息进行硬编码的常见做法。但是,当敏感信息被硬编码时,就会出现问题。很有可能在固件以及移动应用程序或胖客户端中对敏感信息进行了硬编码。问题在于,该产品的所有实例均保持相同,并且可用于攻击现场部署的任何产品实例。一些经过硬编码的敏感信息的示例:
设备硬件可能已打开调试端口以与系统交互。简而言之,它是PCB上的一组引脚,它们连接到微控制器/微处理器引脚,您可以使用客户端软件连接到这些引脚,以通过硬件通信协议进行通信,从而使您可以与系统交互。交互和特权的级别取决于协议的类型及其用法。例如,可能有UART接口的管脚输出,它可以使您访问高级软件/应用程序,即命令外壳,记录器输出等。您还可以使用以下协议与微控制器进行低级交互: JTAG,SWD等,这些可让您直接控制微控制器,因此您可以测试和分析微控制器的引脚值,读/写内部闪存,读/写寄存器值,调试OS /基本固件代码等等。如果在设备上启用了这些端口/引脚,则攻击者可以劫持设备和/或从设备中提取敏感信息,包括固件和数据。通常启用这些端口以解决生产设备中的故障/调试问题。
这里的术语“不安全”是指固件的管理方式,而不是固件本身的代码漏洞。固件包含设备的业务逻辑,并且大多是专有的,即供应商的IP(知识产权)。如果攻击者可以访问纯文本固件,则他/她可以对其进行反向工程以发现安全问题或克隆逻辑并最终克隆产品本身。漏洞取决于在设备上存储和更新固件的方式。如果不小心对存储或移动中的固件进行适当加密(更新),则攻击者可以控制它。固件的一些问题是(但不限于):
正确实施的基于PKI的系统可以确保最佳安全性,但是大多数低功耗传感器缺乏有效实施PKI的计算能力。同样,如果更新是安全的,但是可以使用其他漏洞从设备中提取密钥,那么整个练习将是徒劳的。
该问题在设备和移动应用程序中都很突出。在设备硬件中更明显,可能是由于假设反转硬件很困难。敏感数据(如果未安全存储)可能会被攻击者提取并利用来破坏系统。除了安全问题,如果用户的个人数据没有得到适当的保护,它也可能会涉及隐私。一些常见问题:
设备可能会使用不正确的身份验证机制或不使用身份验证机制,如果身份验证机制实施得不好,则攻击者将完全绕过身份验证机制,并向设备发送未经授权的命令。对于关键的物联网设备而言,这是一个严重的问题,因为网络上的任何人(TCP / IP或无线电)都可以覆盖正常操作并控制设备。设备上发生的一些身份验证问题包括(但不限于):
如果攻击者能够嗅探,分析,重播和提取通信中的敏感信息,则物联网生态系统中的通信可能不安全。该漏洞可能是由于使用不安全的通信协议或协议缺陷本身引起的。为了简单起见,供应商可能选择使用不安全的通信方式。由于IoT是一项新兴技术,因此许多IoT协议没有定义适当的安全机制,或者供应商实施默认的不安全模式。问题包括(但不限于):
当设备配置不安全或设备不允许用户修改配置参数时,会发生此问题。移动应用程序和云配置中也会发生此问题。为了使事情简单或快速交付产品,开发人员可能选择使用简单但不安全的配置和/或不允许更改。一些明显的问题是(但不限于):
随着越来越多的物联网协议在物联网生态系统中实现,这将成为一个重大问题。例如,来自设备的遥测数据可能会被云或IoT网关信任,从而导致已知和未知的安全问题,例如远程代码执行,基于Web的攻击(例如SQL注入),跨站点脚本编写等等。我们希望这一点将来会优先发展。尽管成熟的实现确实可以过滤传统技术的数据,但对于新的物联网协议实现来说,同样有待提高。
从安全的角度来看,与传感器技术相比,移动技术已经成熟,因此我们将所有移动安全问题归为一类。这并不意味着它们的优先级较低,因为您可以看到某些高优先级漏洞也适用于移动设备。但是,由于技术的成熟,它已经具有关于安全性问题和安全实现的大量信息。作为OWASP的粉丝,我们建议从OWASP Mobile十大漏洞开始,这些漏洞将解决大多数安全问题。
如“ P9。不安全的移动界面”,同样适用于云和网络。如果设备具有Web界面,您仍然可以通过Web攻击来拥有该设备,但是这些安全问题已经得到很好的定义和理解。同样,我们建议从OWASP Web十大漏洞开始,以了解和缓解Web安全问题以及来自Cloud Security Alliance的云安全文档。请注意,这不是唯一可用的知识库,并且应该查看互联网上可用的工具和研究论文。重要的是要注意,云构成了物联网生态系统的数据存储和通信主干。如果云遭到破坏,则可能导致整个IoT生态系统遭到破坏,包括全球和整个宇宙中所有已部署的产品。
本文由 Seebug Paper 发布,如需转载请注明来源。本文地址:https://paper.seebug.org/1045/