内容简介:,
作者: {Persist}@ArkTeam
原文作者: Xueyang Wang, Charalambos Konstantinou , Michail Maniatakos
,
Ramesh Karri
原文题目: ConFirm: Detecting Firmware Modifications in Embedded Systems using Hardware Performance Counters
原文来源: ICCAD ’15 Proceedings of the IEEE/ACM International Conference on Computer-Aided Design
程序的行为可以通过其执行期间硬件事件的总出现次数以及不同被监视事件的计数之间的关系来唯一地表征。 此类硬件事件包括退役指令,分支机构,返回,浮点运算等。当对软件进行恶意修改时,执行的硬件事件的计数将与合法的固件运行期间的计数不同。利用HPC来统计硬件事件,开销低。本文在基于ARM和PowerPC的嵌入式平台上实现了ConFirm的原型。 并通过两种固件和攻击证明了该技术的可行性。
HPC是内置于现代微处理器的PMU中的专用寄存器,用于存储有关硬件事件的信息,事件选择器可以指定要监视的用户定义的硬件事件。
本文提出了一种计算路径分析方法,固件的子程序通常在其控制流程图中具有多个计算路径。每个计算路径都经过不同的代码块,因此执行不同的代码。触发不同的硬件事件,从而可以生成不同的硬件事件的计数向量。令C(Ex)表示来自目标计算路径执行的事件x的计数。如果同时监视m个硬件事件,则可以获得具有m个元素的HPC向量V,如下所示:
如下图所示,在被监视的子例程中执行有效路径P1和P2就低级硬件事件的出现而产生不同的向量V1和V2。例如,恶意执行可以通过路径P3,生成与V1和V2不同的意外HPC向量V3。
图1 计算路径
ConFirm核心由三个组件组成:插入模块,将检查点插入受监控的固件,HPC处理程序,驱动HPC,数据库,存储有效的基于HPC的签名。所有这些组件都存储在在写保护的非易失性存储器中。这可以防止攻击损害ConFirm,同时仍允许授权更新
图2 ConFirm的结构示意图
初始化过程:当固件程序加载到内存当中执行之前,bootloader将控制权转交给Confirm,ConFirm中的检查点生成器就会在固件程序中插入检查点,两个检查点形成一个检查窗口,然后HPC handler就开始启动并初始化HPCs,最后Confirm会把控制权转交给bootloader,完成初始化工作。
ConFirm的工作工程如下图所示,当固件程序一旦执行到达检查点,ConFirm就会拦截控制流并将其重定向到核心模块。然后,核心与HPC处理程序和基于HPC的签名数据库进行通信。具体地,读取先前检查窗口的事件计数并与数据库中的相应签名进行比较。然后重置HPC等待下一个检查窗口,并继续执行受监视的固件。HPC会一直计算硬件事件的发生次数,直到达到下一个检查点。
图3 Confirm工作过程示意图
本文还提出利用一种随机化检查点的方法来阻止恶意的检测绕过,如下图所示,如果攻击者知道正确的AB的值,可以修改AC的值,同时修改CB的值,从而使AB不变,系统就检测不到恶意修改。所以随机化检查点可以避免检查窗口被预测。
图4 随机化检查点
Confirm整个检测分为离线和在线两个阶段,如图下图所示,离线阶段执行一些干净的副本,并将检查点插入固件程序中,生成正常的向量存入数据库中,所谓在线阶段就是检测阶段,利用离线阶段的向量数据来检测是否有恶意修改,如果有终止程序或发出警报。
图5 在线阶段和离线阶段示意图
ConFirm是一种检测恶意行为的新思路!
以上所述就是小编给大家介绍的《利用硬件性能计数器(HPCs) 检测嵌入式系统中的固件修改》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 独角兽暑期训练营 | 嵌入式固件自动化漏洞扫描方法研究
- 【IOT安全】IOT固件安全基础-固件仿真介绍
- 设备固件提取小结
- 开源固件大会2018
- 梅林固件设置虚拟内存
- 基于goahead 的固件程序分析
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。