01《Detecting Software Attacks on Embedded IoT Devices》随笔

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)面向数据的编程
在直接数据操纵中,攻击者直接改变非控制数据变量以达到所需的恶意目的。在这里,攻击者应该知道目标变量的精确地址。二进制分析或导出存储在存储器中的随机地址可以用来获得一个变量的目标地址。然后攻击者利用程序漏洞覆盖数据变量的内存位置。

防御:远程认证

首先,验证者创建一个唯一的挑战,并向远程证明者发送一个证明请求。
接下来,证明者执行一个证明例程来计算并向验证者发送一个证明响应。
最后,验证者将在认证响应中收到的证明者的状态与设备的预期状态进行比较。如果结果匹配,则验证者声明远程设备为可信设备;否则,远端设备不受信任。

文献综述

使用远程认证检测软件篡改攻击

内存损坏攻击防御

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/59041.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Netty自定义编码解码器

上次通信的时候用的是自带的编解码器&#xff0c;今天自己实现一下自定义的。 1、自定义一下协议 //协议类 Data public class Protocol<T> implements Serializable {private Long id System.currentTimeMillis();private short msgType;// 假设1为请求 2为响应privat…

数据结构---跳表

目录标题 为什么会有跳表跳表的原理跳表的模拟实现准备工作find函数insert函数erase函数 测试效率比较 为什么会有跳表 在前面的学习过程中我们学习过链表这个容器&#xff0c;这个容器在头部和尾部插入数据的时间复杂度为O(1)&#xff0c;但是该容器存在一个缺陷就是不管数据…

【算法|数组】手撕经典二分法

算法|数组——二分查找 文章目录 算法|数组——二分查找引言二分查找左闭右闭写法左闭右开写法 总结 引言 首先学习这个算法之前需要了解数组知识&#xff1a;数组。 大概介绍以下&#xff1a; 数组是存储在连续内存空间上的相同类型数据的集合。数组下标都是从0开始。数组在…

第17章-Spring AOP经典应用场景

文章目录 一、日志处理二、事务控制三、参数校验四、自定义注解五、AOP 方法失效问题1. ApplicationContext2. AopContext3. 注入自身 六、附录1. 示例代码 AOP 提供了一种面向切面操作的扩展机制&#xff0c;通常这些操作是与业务无关的&#xff0c;在实际应用中&#xff0c;可…

2.虚拟机开启kali_linux

首先你应该搞一个虚拟机&#xff0c;搞虚拟机可以看一下这个 附录三 虚拟机的使用_Suyuoa的博客-CSDN博客 然后你需要搞一个 kali linux的镜像 Get Kali | Kali Linux 镜像下载好之后解压&#xff0c;你会得到一个文件夹包含下面这些文件 之后打开VMware&#xff0c;点击打开虚…

SpringBoot配置多数据源

一、pom依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId> </dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring…

企业如何挑选适合自己需求的文件传输软件

随着科技的日新月异&#xff0c;文件传输已成为我们生活中不可或缺的一部分。无论是在工作场合还是在日常生活中&#xff0c;我们经常需要传输各种格式和大小的文件&#xff0c;如文档、照片、音频和视频等。然而&#xff0c;在选择适合自己需求的文件传输软件时&#xff0c;很…

简化AD管理减少IT工作负担

管理和保护混合 AD 环境 IT 管理员几乎每天都要创建和管理多个 AD 对象&#xff0c;利用本机AD工具&#xff08;如Active Directory用户和计算机控制台以及PowerShell脚本&#xff09;来执行这些任务并不理想&#xff0c;因为它们必须在多个控制台之间切换才能执行这些任务&am…

【Java从入门到大牛】File和IO流上篇

&#x1f525; 本文由 程序喵正在路上 原创&#xff0c;CSDN首发&#xff01; &#x1f496; 系列专栏&#xff1a;Java从入门到大牛 &#x1f320; 首发时间&#xff1a;2023年8月9日 &#x1f98b; 欢迎关注&#x1f5b1;点赞&#x1f44d;收藏&#x1f31f;留言&#x1f43e…

Easys Excel的表格导入(读)导出(写)-----java

一,EasyExcel官网: 可以学习一些新知识: EasyExcel官方文档 - 基于Java的Excel处理工具 | Easy Excel 二,为什么要使用easyexcle excel的一些优点和缺点 java解析excel的框架有很多 &#xff1a; poi jxl,存在问题&#xff1a;非常的消耗内存&#xff0c; easyexcel 我们…

Llama 2 with langchain项目详解(一)

Llama 2 with langchain项目详解(一) 2023年2月25日,美国Meta公司发布了Llama 1开源大模型。随后,于2023年7月18日,Meta公司发布了Llama 2开源大模型,该系列包括了70亿、130亿和700亿等不同参数规模的模型。相较于Llama 1,Llama 2的训练数据增加了40%,上下文长度提升至…

Arduino 项目笔记 | Arduino LED Memory Game 颜色记忆游戏机

成果展示 颜色记忆游戏机 &#xff5c; Arduino DIY 1. 线路链连接 1.1 原理图 1.2 PCB 免费PCB打样 Arduino LED Memory Game 颜色记忆机资料下载 1.3 烧录 Bootloader 第二部分&#xff1a;Burn bootloader 2. 程序实现 #define NOTE_B0 31 #define NOTE_C1 33 #define NOT…