2023.08.05
今天读的是一篇博士论文
论文传送门:Detecting Software Attacks on Embedded IoT Devices
看了很长时间,发现有一百多页,没看完,没看到怎么实现的。
摘要
联网设备的增加使得嵌入式设备成为各种网络攻击的诱人目标,攻击者可以通过访问和控制远程设备进行恶意活动。这些物联网设备可以被攻击者利用,在不需要任何物理硬件访问的情况下破坏受害者平台的安全性。
为了检测此类软件攻击并确保可靠和值得信赖的物联网应用程序,验证设备未受到恶意软件的侵害,并断言程序的正确执行至关重要。在文献中,已经提出了基于远程认证、异常检测、控制流和数据流完整性的解决方案来检测软件攻击。然而,这些解决方案在目标部署和攻击检测方面的适用性有限,我们对此进行了彻底的检查。
在本文中,我们提出了三种检测嵌入式物联网设备软件攻击的解决方案。特别是,我们首先提出了SWARNA,它使用远程认证来验证嵌入式设备的大型网络,并确保设备上的应用软件不被篡改。验证软件的完整性可以保留设备的静态属性。为了保护设备免受各种软件攻击,还必须确保程序的运行时执行符合预期。因此,我们广泛关注于检测程序执行期间可能发生的内存损坏攻击。此外,我们提出了在嵌入式物联网设备上运行的安全程序异常检测SPADE和OPADE,分别使用深度学习和机器学习算法来检测各种运行时软件攻击。我们在真实的嵌入式硬件和物联网测试平台上评估和分析所有提出的解决方案。我们还进行了全面的安全性分析,以展示所建议的解决方案如何检测各种软件攻击。
在这篇论文中,我们提出了三种识别嵌入的ios设备软件的方法。首先我们介绍SWARNA,它用远程照相功能审查了一个大规模嵌入设备网络,确保在设备上没有被操纵。这个机器用了静态性质为了保护设备免受各种软件攻击,必须确保所执行的项目如预期的那样在持续时间内完成。因此,我们主要致力于识别对系统运行过程中可能出现的内存的攻击。我们呈现多种多样的软件突击队和OPADE,让他们可以安全检测嵌入的特别智能设备中的项目异常情况,并使用深层学习算法来识别整个运行过程中软件的攻击行为。
介绍
- 软件的攻击:
上述攻击要么篡改应用程序二进制文件,要么破坏运行时内存,以获得对设备的控制。 - 防御的方法:
远程认证、控制流完整性(CFI)和程序异常检测是目前广泛提倡的检测各种软件攻击的技术。远程认证是远程验证在嵌入式设备上运行的软件的完整性或程序的运行时控制流的一种重要方法。在远程认证中,外部可信实体验证物联网设备,并且本质上是被动的。CFI是一种预防机制,它监视设备上程序在执行时的控制流,确保它遵循预先确定的合法路径。
然而,CFI和远程认证不能捕获程序的非确定性运行时特征(例如,在运行时执行if-else语句)。另一方面,程序异常检测技术使用各种特征来捕获程序的行为。即使运行时行为与正常执行相比有细微的偏差,也会被标记为异常。 - 挑战
为了确保物联网应用真正值得信赖和可靠,必须
(i)确保设备不受恶意软件的侵害
(ii)断言嵌入式控制程序的正确执行
(iii)最后确保所提议的攻击检测机制本身是安全的。已经提出了广泛的解决方案来检测嵌入式物联网设备的软件攻击。
由于嵌入式设备上的资源有限,确保设备安全的目标通常被转移到具有无限资源的远程实体
贡献
- 攻击分类:在过去的几十年里,我们可以在物联网设备上找到各种攻击。在本文中,我们定义并将攻击分为不同的类别,这有助于我们设计针对攻击类的防御解决方案。
- 基于软件的远程网络认证:为了满足物联网部署规模和数量的增长,我们提出了基于软件的远程网络认证(SWARNA),这是一种用于验证远程物联网设备群的系统。SWARNA建立了一个确定性的通信路径,强制跨无线多跳物联网网络的时间限制,用于认证目的。
- 安全程序异常检测:为了在程序运行时检测内存损坏攻击,我们提出了一种用于嵌入式物联网设备(SPADE)的安全程序异常检测。
- 在线程序异常检测:我们首先介绍行为控制异常(BCA),这是一种在程序执行过程中看到的异常,通过修改程序的一个或几个控制方面来影响程序的行为。我们进一步将异常分为控制流异常(CFA)、控制分支异常(CBA)和控制强度异常(CIA)。
我们为嵌入式物联网设备(OPADE)设计了一个在线程序异常检测。OPADE通过其精确的调用位置、调用函数调用的次数和使用硬件计数器的循环执行周期计数来捕获函数调用序列。OPADE实现了一种基于分层时间记忆(HTM)的异常检测技术,该技术支持序列和持续学习,不需要像其他神经网络算法那样单独收集数据和进行训练。与SPADE类似,OPADE在可信执行环境中运行。我们评估了OPADE在检测bca时的异常检测精度及其开销。
论文声明
在本文中,我们介绍了通过保护嵌入式物联网设备来构建值得信赖和可靠的物联网应用的方法。我们提出了一个系统来共同验证远程物联网设备上运行的软件的完整性,并进一步提出了两种解决方案,这两种解决方案在设计上是安全的,可以检测在程序运行时执行期间发生的内存损坏攻击,并且与最先进的检测技术相比,可以在运行时检测对嵌入式设备的更广泛的攻击。
路线图
背景
对嵌入式物联网设备的攻击
在本章中,我们提供了对理解本论文至关重要的攻击和基本防御机制的基本信息。首先,我们在2.1节中对针对嵌入式物联网设备的攻击进行了大致分类。然后,我们在2.2节中详细描述了软件攻击,因为本文的重点是检测软件攻击。我们将软件攻击大致分为软件篡改攻击和内存破坏攻击,分别在2.2.1节和2.2.2节中描述。我们还回顾了最突出的内存损坏攻击:面向控制和面向数据的攻击。最后,在2.3节中,我们解释了用于检测软件攻击的远程认证的工作原理。
我们将针对嵌入式物联网设备的攻击大致分为两类:软件攻击和硬件攻击。图1显示了针对嵌入式物联网的攻击分类。根据文献,我们将仅损害设备软件(即驻留在设备上的代码和数据)的攻击分类为软件攻击。对于软件攻击,攻击者可以利用代码中的漏洞来控制目标设备,从而可能导致灾难性的后果。攻击者可以远程执行软件攻击,使其成为一种简单而广泛的攻击选择。
捕获设备并对其进行物理篡改的攻击被归类为硬件攻击[61,71]。使用昂贵和复杂的设备直接访问设备内部组件的硬件攻击被称为侵入性攻击。使用低成本电气工程工具提取存储在设备上的加密材料的硬件攻击被称为非侵入性攻击。著名的侧信道攻击是一种非侵入性攻击,它利用电磁辐射、电力或时间在设备正常运行期间提取敏感数据。
本文以软件攻击为研究重点,提出了几种检测各种软件攻击的解决方案。因此,在接下来的章节中,我们将对软件攻击进行深入的描述。
软件攻击
当攻击者修改设备上的代码或数据时,攻击被定义为软件攻击。我们进一步将软件攻击分类为软件篡改攻击和内存损坏攻击。
软件篡改攻击
这里的攻击者能够利用源代码或部署设置中的漏洞,在部署之前或之后修改应用程序二进制文件。除了应用软件,攻击者还可以修改设备上的任何配置设置。但是,应用程序二进制文件或设备配置通常驻留在设备的非易失性存储器中(在设备重新启动后仍然存在),并且在程序执行期间不会更改。
因此,我们将仅篡改设备静态属性的攻击定义为软件篡改攻击。
内存损坏攻击(程序运行时攻击)
在程序执行期间,应用程序生成各种运行时信息,这些信息存储在易失性内存中(在设备重新启动时重置)。通常在嵌入式设备中,运行时信息存储在位于易失性RAM上的堆栈或堆中。攻击者可以利用应用程序软件中的漏洞(如缓冲区溢出)来修改应用程序的运行时数据。因此,我们将修改运行时内存内容的攻击归类为内存损坏攻击。由于内存损坏攻击发生在应用程序执行期间,在文献中,内存损坏攻击也被称为运行时攻击。
根据内存中修改的数据,内存损坏攻击可以进一步分为面向控制的攻击和面向数据的攻击
面向控制的攻击
在面向控制的攻击中,攻击者在程序执行期间修改驻留在内存中的程序的控制信息(例如,返回地址、代码指针)。攻击者的目的是转移程序的预期执行流。通过破坏控制流,攻击者可以触发一个或多个恶意操作,例如访问敏感数据、非法执行程序或注入恶意软件。
面向控制的攻击大致可分为:
(1)代码注入攻击
(2)代码重用攻击。
在代码注入中,攻击者首先利用
面向数据的攻击
在文献中,几种类型的攻击破坏非控制数据以改变程序的行为。面向数据的攻击可分为
(1)直接数据操作
(2)面向数据的编程
在直接数据操纵中,攻击者直接改变非控制数据变量以达到所需的恶意目的。在这里,攻击者应该知道目标变量的精确地址。二进制分析或导出存储在存储器中的随机地址可以用来获得一个变量的目标地址。然后攻击者利用程序漏洞覆盖数据变量的内存位置。
防御:远程认证
首先,验证者创建一个唯一的挑战,并向远程证明者发送一个证明请求。
接下来,证明者执行一个证明例程来计算并向验证者发送一个证明响应。
最后,验证者将在认证响应中收到的证明者的状态与设备的预期状态进行比较。如果结果匹配,则验证者声明远程设备为可信设备;否则,远端设备不受信任。