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

防御:远程认证

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

文献综述

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

内存损坏攻击防御

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Cloud Studio实战——热门视频Top100爬虫应用开发

最近Cloud Studio非常火,我也去试了一下,感觉真的非常方便!我就以Python爬取B站各区排名前一百的视频,并作可视化来给大家分享一下Cloud Studio!应用链接:Cloud Studio实战——B站热门视频Top100爬虫应用开…

lwip不同的socket分别作为监听和客户端连接

在LWIP中,一个网络设备(如以太网卡)可以创建多个socket,用于处理不同的网络连接。一般,你可以创建一个socket用于监听(listen)连接,另一个socket用于主动发起(connect&am…

华为OD机试(含B卷)真题2023 算法分类版,58道20个算法分类,如果距离机考时间不多了,就看这个吧,稳稳的

目录 一、数据结构1、线性表2、优先队列3、滑动窗口4、二叉树5、并查集6、栈 二、算法1、基础算法2、字符串3、图4、动态规划5、数学 三、漫画算法2:小灰的算法进阶参与方式 很多小伙伴问我,华为OD机试算法题太多了,知识点繁杂,如…

jenkins使用gitlab标签发布

关于jenkins git parameter使用gitlab标签发布和分支发布的用法 手动配置的我就不说了,点点点就行,主要是说一下在pipeline里如何使用 通过分支拉取gitlab仓库代码 pipeline {agent anyenvironment {}parameters {gitParameter(branch: , branchFilte…

ASP.NET Core学习路线图

说明 1. 先决条件 - [C#](https://www.pluralsight.com/paths/csharp) - [Entity Framework](https://www.pluralsight.com/search?qentity%20framework%20core) - [ASP.NET Core](https://www.pluralsight.com/search?qasp.net%20core) - SQL基础知识 2. 通用开发技能 -…

vue3+vite配置多入口文件

1.修改vite.config.ts 文件: 2.在src目录底下建相应的html文件和对应的ts入口文件和vue文件,如下图: npm run dev运行后本地访问: http://127.0.0.1:5173/home_index.htmlnpm run build打包后的结构如图:

Android Studio翻译插件

进入File->Settings->Plugins界面,搜索Translation,选择这个 重启AS后,选中目标单词右键点击Translate即可:

官宣了!Nank南卡耳机签约世界游泳冠军傅园慧!共塑国货好品质

骨传导开放式耳机行业领导品牌Nank南卡今日宣布,将邀请世界游泳冠军傅园慧为品牌形象代言人,Nank南卡对品牌推广大使的选择并非跟随流量的潮向,而是甄选与自身价值观更为相符的游泳冠军。赛场上的傅园慧所体现的不怕输、不放弃,坚…

[LitCTF 2023]Http pro max plus

打开环境后提示说,只允许在本地访问,本地访问,还是想到了XFF字段 好家伙的,直接被嘲讽,还是了解太少了,都不知道还有没有其他方式可以控制ip地址信息 经过查看wp,得知一种新的方式 Client-IP …

【MySQL】基础知识(一)

MySQL基础知识(一) 文章目录 MySQL基础知识(一)00 MySQL安装01 数据库介绍1.1 什么是数据库1.2数据库分类 02 SQL分类03 数据库操作3.1显示数据库3.2创建数据库3.3选中数据库3.4删除数据库 04 常用数据类型4.1数值类型4.2字符串类…

用于实体对齐的联合学习实体和关系表示2019 AAAI 8.7+8.8

用于实体对齐的联合学习实体和关系表示 摘要介绍相关工作实体对齐图卷积网络 问题公式我们的方法整体架构初步实体对齐图卷积层对齐训练 近似关系表示联合实体和关系对齐 实验总结 摘要 实体对齐是在不同知识图之间集成异构知识的一种可行方法。该领域的最新发展通常采用基于嵌…

数字电路基础(MOS管)

1.PMOS和NMOS MOS晶体管的物理结构如下,由衬底和注入粒子的材质不同分为PMOS和NMOS。 2.CMOS CMOS由PMOS和NMOS组成,是一个反相器,其电路图如下所示。当In为1时,PMOS断开,NMOS导通,Out输出为0;…

Springboot @Validated注解详细说明

在Spring Boot中&#xff0c;Validated注解用于验证请求参数。它可以应用在Controller类或方法上 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId> </depen…

【工程优化问题】基于多种智能优化算法的压力容器设计问题研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

【Docker】docker镜像+nginx部署vue项目:

文章目录 一、文档&#xff1a;二、打包vue项目&#xff1a;三、配置nginx&#xff1a;四、配置Dockerfile&#xff1a;五、构建镜像&#xff1a;六、运行容器&#xff1a;七、最终效果&#xff1a; 一、文档&#xff1a; 【1】菜鸟教程&#xff1a;https://www.runoob.com/do…

vscode插件不能搜索安装

1 现象 vscode搜索自己的插件&#xff0c;报错&#xff1a; Error while fetching extensions. HXR failed2 原因 之前用vscode开发golang语言&#xff0c;设置了proxy代理&#xff0c;所以导致错误&#xff0c;删除即可 重启vscode 3 结果

【Spring】使用注解存储Bean对象

目录 一、配置扫描路径&#xff08;使用注解的方式存对象的前提&#xff09; 二、使用类注解存储Bean对象 1、使用五大类注解存储Bean对象 2、为什么要这么多的类注解&#xff1f; 2.1、五大类注解之间的关系 3、获取Bean对象时的默认命名规则 三、使用方法注解来存储…

数据结构:栈的实现(C实现)

个人主页 &#xff1a; 个人主页 个人专栏 &#xff1a; 《数据结构》 《C语言》 文章目录 前言一、栈的实现思路1. 结构的定义2. 初始化栈(StackInit)3. 入栈(StackPush)4. 出栈(StackPop)5. 获取栈顶元素(StackTop)6. 检查栈是否为空(StackEmpty)7. 销毁栈(StackDestroy) 二、…

IO进程线程day9(2023.8.7)

一、Xmind整理&#xff1a; 消息队列的原理&#xff1a; 共享内存的原理&#xff1a; 二、课上练习&#xff1a; 练习1&#xff1a;用信号的方式回收僵尸进程&#xff08;重点&#xff01;&#xff09; 1.子进程退出后&#xff0c;父进程会收到17)SIGCHLD信号。 2.父进程中捕获…

java版直播商城平台规划及常见的营销模式 电商源码/小程序/三级分销+商城免费搭建 bbcbbc

​ Java版工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离 1. 涉及平台 平台管理、商家端&#xff08;PC端、手机端&#xff09;、买家平台&#xff08;H5/公众号、小程序、APP端&#xff08;IOS/Android&#xff09;、微服务平台&#xff08;业务服务…