结合白名单和攻击分类的缓存DOS攻击防御方法
未命名
10-19
阅读:126
评论:0
结合白名单和攻击分类的缓存dos攻击防御方法
技术领域
1.本发明涉及结合白名单和攻击分类的缓存dos攻击防御方法,属于计算机与信息科学技术领域。
背景技术:
2.多核共享缓存拒绝服务攻击是一种对缓存随机化方法构成极大威胁的攻击方式。该攻击通过对缓存随机化方法中的加密引擎的恶意占用或者阻止重映射过程极大削弱了缓存随机化方法的性能,并可能导致密钥或其它机密信息受侧信道攻击而失窃。为确保缓存随机化方法的安全性,所以人们不断提出共享缓存拒绝服务攻击的防御方法。
3.共享缓存拒绝服务攻击防御方法需要解决的基本问题是:判断程序是否在缓存随机化中恶意占用加密引擎或阻止缓存的重映射,常见的共享缓存拒绝服务攻击防御方法可以归为两类:
4.1.基于llc未命中数的防御
5.基于llc未命中数的检测建立在现有的内存带宽调节机制上通过记录llc的未命中数来计算每个核心所消耗的内存带宽量,设置规则对内存消耗的异常情况进行检测,并通过调节内存的读写阈值来防御攻击。然而,由于llc未命中数的计算面向整个llc,因此无法检测部分llc受到攻击的情况。
6.2.基于回写缓存的防御
7.基于回写缓存的检测是指在检测llc未命中数的基础上进一步对回写缓存进行检测。由于大多数共享缓存拒绝服务攻击都是写密集型任务,因此通过设置一个低的写入速度阈值和一个高的读取速度阈值,可以限制写入密集型任务而不影响读取密集型任务,从而达到抑制共享缓存拒绝服务攻击的目的。然而,该方法缺乏针对性,会降低系统所有进程的性能,并且无法防御针对部分llc的攻击。
8.综上所述,现有的共享缓存拒绝服务攻击的检测和防御方法可以在一定程度上防御共享缓存拒绝服务攻击。然而,这些防御方法存在缺陷,一方面,它们在防御方法上对内存和缓存的读写速度设置了阈值,导致整体性能下降且缺乏针对性;另一方面,针对部分llc的共享缓存拒绝服务攻击只攻击部分llc,读写速度的峰值达不到阈值且对整个llc的命中率几乎没有影响,所以可以逃避这种防御方式,使其无法生效。为了解决这些缺陷,本发明提出一种结合白名单和攻击分类的缓存dos攻击防御方法。
技术实现要素:
9.本发明的目的是为了解决当前的针对共享缓存拒绝服务攻击的防御方法防御面不够广且针对性不强两个问题,提出了结合白名单和攻击分类的缓存dos攻击防御方法。
10.首先,生成白名单和检测名单。在生成白名单时,收集已知的合法应用程序列表,并将其用作参考。在生成检测名单时,对白名单再一次复核,以便后续检测过程中进行比对。其次,启动性能计数器收集数据。该步骤旨在收集目标对象的各种性能参数数据,以供
后续计算和分析使用。然后,对数据进行分类、计算和特征提取。通过对数据进行计算和分析,可以提取出一系列特征。这些特征可以反映出目标对象的一些重要属性,从而为后续的检测过程提供有力的支持。将提取出的特征生成时间片。时间片是一种数据结构,可以将目标对象的特征数据按照时间序列进行切割和处理,从而便于后续检测和分析。最后,将时间片输入分类模型进行检测。在这一步中,将利用分类模型对目标对象进行检测,并得出分类结果。根据分类结果,可以进一步进行处理,从而对不同类型的攻击进行针对性的防御。
11.本发明的技术方案是通过如下步骤实现的:
12.步骤1,检测对象确定,在检测前进行白名单设置,扫描正在运行的程序,并将操作系统进程和用户选择进程加入白名单,并生成检测名单。
13.步骤2,数据采集。根据检测名单中的进程id,利用硬件性能计数器检测系统运行时整个llc的缓存命中信息和单个程序的缓存命中信息,并输出计数值。
14.步骤3,时间片生成。通过计数值计算出对应的缓存命中率信息,命中率信息进行加权计算之后组成固定长度的时间片。
15.步骤4,攻击检测并处理。对攻击进行分类和处理,对于步骤3中所获得的时间片输入分类模型中进行分析,根据检测到的攻击弹出警告并进行相对应的处理并记录攻击类型,如果没有检测到攻击则继续检测。
16.有益效果
17.相比于现有的基于llc未命中数的检测方法,本发明通过额外检测了单个程序的llc命中率、一级数据缓存未命中率以及二级缓存未命中率提升了方法的防御面,可以防御更多类型的攻击。
18.而相比于基于回写缓存的检测方法,本发明通过同时检测针对整个缓存进行的共享缓存拒绝服务攻击和针对部分缓存的攻击且使用机器学习模型提高了检测的准确性和可靠性,同时使用进程隔离阻止恶意进程的后续攻击行为且减小了对正常进程的影响。
附图说明
19.图1为本发明结合白名单和攻击分类的缓存dos攻击防御方法原理图。
具体实施方式
20.为了更好的说明本发明的目的和优点,下面结合实例对本发明方法的实施方式做进一步详细说明。
21.本次实验的具体流程为:
22.步骤1,每次检测前生成一次白名单。
23.步骤1.1,白名单生成。对于当前正常运行的计算机进程进行扫描,获取每个进程的唯一标识符(id)并创建相应的进程句柄。将这些进程的id和句柄按照是否为windows系统进程划分为windows进程和非windows进程两类。将划分为windows系统进程的进程id号添加到白名单中。此外,如果用户能够确认进程的安全性,可将进程直接添加到白名单中。
24.步骤1.2,对白名单进行进一步筛查,对当前白名单中的进程id进行检测。使用windows api提取出每个程序对应的用户名,并将其与已知的系统进程用户名进行比较。可被识别为系统进程的用户名见表1windows系统进程用户名用户名无法匹配则将对应的进
程移出白名单。在使用虚拟机或虚拟化技术时,虚拟化技术可能会导致进程用户名为虚拟机管理器用户名,但默认情况下不将其视为系统进程,用户可以手动将其添加到白名单中。
25.·
表1windows系统进程用户名
[0026][0027]
步骤1.3,为所有的进程添加检测计数,白名单中的程序检测计数默认为-1,而白名单之外的程序的检测计数设置为0、1、2中的随机值。获取当前运行的所有进程的id号,并将白名单中存在的id号剔除,然后把所有计数值为0的进程加入检测名单中。如果获取id号时检测到新增进程,将其检测计数设定为0并直接加入检测名单。
[0028]
步骤2,数据采集,根据生成的检测名单中的进程id号创建性能计数器,使用性能计数器对llc的命中数和程序的缓存命中数进行计数。
[0029]
步骤2.1,调用windows计数器管理api来建立性能计数器。随后,针对llc的访问和未命中情况创建计数事件。对于针对部分llc发起的共享缓存拒绝服务攻击,攻击程序需要使其在llc中的命中率达到或接近100%。这将影响该程序在一级数据缓存和二级缓存中的命中率。因此,需要针对程序的llc访问和命中情况以及在一级数据缓存和二级缓存的访问和命中情况进行计数,并且需要计数的进程的id号从检测名单中选取。
[0030]
步骤2.2,启动性能计数器,并设置每次收集的时间长度为t1,t1的大小与使用的缓存随机化方法中一轮加密所需时间相等。启用本机上的缓存随机化方法,运行一轮加密后停止,计算出t1值。重复收集10次数据,再将这些数据与进程id组成计数文件,输出到指定文件夹中,等待进行特征提取,输出完毕后将当次检测进程的检测计数加一并移出检测名单。
[0031]
步骤2.3,重复执行步骤2.1和2.2,直到检测名单中不存在待检测进程,之后,将当前所有不在白名单中的进程的检测计数减一。在数据采集的过程中,检测名单每清空100次,将会为除白名单进程外的所有进程重新分配检测计数,检测计数设置为0、1、2中的随机值。
[0032]
步骤3,时间片生成,步骤2.2中每收集10次数据进行一次输出,根据这10次数据,计算出缓存的命中率,公式如式(1),其中cache miss rate是缓存命中率,cache misses是缓存的未命中数,cache references是缓存的访问数。计算后,每组数据可以得到4个值,包括了:llc未命中率(wllcmr)、单个程序llc命中率(llchr)、单个程序一级数据缓存命中率(l1dhr)、单个程序二级缓存命中率(l2chr)。
[0033][0034]
步骤3.1.1,对整个llc发起的共享缓存拒绝服务攻击会极大影响整个llc的命中率,使得llc未命中率上升;但同样该类型的攻击发起程序本身在一级数据缓存、二级缓存和llc的命中率同样会提升;所以,可以通过计算综合命中率1(chr1)用来检测该类攻击,如
式(2)。
[0035]
chr1=a1*wllcmr+a2*llchr+a3*l1dhr+a4*l2chr
ꢀꢀꢀꢀ
(2)
[0036]
其中a1至a4是权重值,wllcmr为整个llc上的未命中率,llchr为指定程序的llc命中率,l1dhr为指定程序的一级数据缓存命中率,l2chr为指定程序的二级缓存命中率。根据要检测的攻击类型,将a1定为0.8,a2为0.1,a3为0.05,a4为0.05。
[0037]
步骤3.1.2,为了检测针对部分llc发起的共享缓存拒绝服务攻击,要计算出chr2来检测该类攻击,也就是综合命中率2。由于是对部分llc发起攻击,所以对整个llc的命中率只能产生较低程度的影响,但是攻击程序自身的命中率数值较高。根据攻击对不同参数的影响,可以进行权重分配,再通过计算综合命中率2(chr2)用来检测该类攻击,如式(3):
[0038]
chr2=b1*(1-wllcmr)+b2*llchr+b3*l1dhr+b4*l2chr
ꢀꢀ
(3)
[0039]
其中b1至b4是权重值,wllcmr为整个llc上的未命中率,llchr为指定程序的llc命中率,l1dhr为指定程序的一级数据缓存命中率,l2chr为指定程序的二级缓存命中率。根据要检测的攻击类型,将b1定为0.1,b2为0.5,b3为0.2,b4为0.2。
[0040]
步骤3.2,将计算出的10个chr1数据构成长度为t1*10的时间片,格式见表2时间片样式,其中标签在模型训练时使用。对chr2做相同操作,之后在两个时间片的命名中追加进程id信息输出到指定的文件夹中。
[0041]
·
表2时间片样式
[0042][0043]
步骤4,攻击检测和处理,输入时间片,并输出处理结果报告。
[0044]
步骤4.1,使用预先用攻击数据和正常数据训练完毕的随机森林分类模型,将步骤3.2中得到的时间片输入分类模型中,输出该时间片的分类结果,分类结果有在时间片所处时间内遭受对整个缓存发起的共享缓存拒绝服务攻击、在时间片所处时间内遭受对部分缓存发起的共享缓存拒绝服务攻击和在时间片所处时间内无异常三种情况,根据分类结果分别进行处理。
[0045]
步骤4.2,为了应对针对整个llc的共享缓存拒绝服务攻击,使用windows driver kit,一种用于在windows中创建和修改驱动程序的软件,来创建一个新的驱动程序,并利用特定型号的寄存器(model-specific registers,msr)对回写缓存阈值进行设定。之前的防御方法设定缓存的写入和读取阈值相等,但对共享缓存发起的拒绝服务攻击,实现方式主要是基于缓存写入,过高的读取阈值反而影响系统中的正常程序。所以将回写缓存的写入阈值与读取阈值的速率比例设置为1:10。例如,如果基本设定阈值为100mb/s和100mb/s,则修改后的阈值为100mb/s和1000mb/s。随后将驱动程序进行打包和安装。当检测结果表明当前存在针对整个llc的共享缓存拒绝服务攻击时,将启动该驱动程序,并进行回写缓存阈值的调整,并记录攻击类型。
[0046]
步骤4.3,当检测结果显示当前存在针对部分llc的共享缓存拒绝服务攻击时,对
异常程序进行设置,使用windows管理规范(windows management instrumentation,wmi)来操作缓存管理(cpu cache allocation),使用该进程的id号创建新的进程对象,再将选取好的缓存块分配给该进程,使得进程在需要使用缓存时只能使用选定的缓存块,避免该进程干扰或攻击其它进程,实现进程隔离,并记录攻击类型。
[0047]
步骤4.4,当异常处理结束或无异常发生,则继续重复步骤4.1、4.2和4.3的操作。
[0048]
测试结果:首先进行针对整个llc发起的共享缓存拒绝服务攻击的防御效果验证实验,实验在windows平台下进行,主要测试受攻击进程和正常进程在不同情况下的运行时间。实验中使用的内存防御方法(memguard)是一种用于进行内存动态管理的方式,通过其中的调整缓存阈值功能可用于抵御缓存拒绝服务攻击。本方法的防御效果对于遭受攻击的缓存随机化方法进行了验证,实验结果见表3。其中,1x代表缓存随机化程序进行一轮加密所需的时间,相较于过去的方法,本方法提高了约10%的效果。随后进行对其他程序造成的影响验证实验,结果见表4阈值调整对其他程序的影响。其中,1x代表实验中选定的加密程序进行一轮解密操作所需的时间。相较于过去的方法,本方法对其他程序的影响提高了20%至30%。
[0049]
·
表3阈值调整对被攻击方的影响
[0050][0051]
·
表4阈值调整对其他程序的影响
[0052][0053]
之后验证该方法对针对部分缓存发起的共享缓存拒绝服务攻击的效果,实验在windows平台进行,对共享缓存拒绝服务攻击的进行防御。首先验证该方法对遭受攻击的缓存随机化方法的影响,实验结果见表5进程隔离对被攻击方的影响,其中1x代表正常情况下,缓存随机化程序进行一轮加密需要的时间,过去的方法由于针对部分llc发起的共享缓存拒绝服务几乎不受缓存读写阈值的影响,攻击完全无法起到防御作用。
[0054]
·
表5进程隔离对被攻击方的影响
[0055][0056]
用实验验证该方法在限制攻击程序时对其他程序造成的影响,结果见表6进程隔离对其他程序的影响,进程隔离对其他程序几乎不会造成性能上的损失。
[0057]
·
表6进程隔离对其他程序的影响
[0058][0059]
以上所述的具体描述,对发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
技术特征:
1.结合白名单和攻击分类的缓存dos攻击防御方法,其特征在于所述方法包括如下步骤:步骤1,在检测前进行白名单设置,扫描正在运行的程序,并将操作系统进程和用户选择进程加入白名单,并生成检测名单;步骤2,根据检测名单中的进程id,利用硬件性能计数器检测系统运行时整个llc的缓存命中信息和单个程序的缓存命中信息,并输出计数值;步骤3,通过计数值计算出对应的缓存命中率信息,命中率信息进行加权计算之后组成固定长度的时间片;步骤4,对攻击进行分类和处理,对于步骤3中所获得的时间片输入分类模型中进行分析,根据检测到的攻击弹出警告并进行相对应的处理并记录攻击类型,如果没有检测到攻击则继续检测。2.根据权利要求1所述的结合白名单和攻击分类的缓存dos攻击防御方法,其特征在于:步骤1中白名单的成员实际是操作系统进程和用户选择的进程之和,设置白名单的目的是加快检测速度,缩短检测的空窗期。3.根据权利要求1所述的结合白名单和攻击分类的缓存dos攻击防御方法,其特征在于:步骤1中生成的检测名单中的成员包括了除白名单成员之外的所有进程,如果有新增进程,则直接加入检测名单。4.根据权利要求1所述的结合白名单和攻击分类的缓存dos攻击防御方法,其特征在于:步骤2中硬件性能计数器检测的性能事件包括了:llc的访问和未命中情况、进程的llc访问和命中情况以及进程在一级数据缓存和二级缓存的访问和命中情况。5.根据权利要求1所述的结合白名单和攻击分类的缓存dos攻击防御方法,其特征在于:步骤3中生成时间片的过程实际为特征向量提取,通过式chr1=a1*wllcmr+a2*llchr+a3*l1dhr+a4*l2chr和chr2=b1*(1-wllcmr)+b2*llchr+b3*l1dhr+b4*l2chr提取了chr1和chr2两个特征。6.根据权利要求1所述的结合白名单和攻击分类的缓存dos攻击防御方法,其特征在于:步骤4中的攻击类型判别过程,可能出现两种类型的缓存dos攻击,其一为针对整个llc发起的攻击,使用限制缓存读写速度的方式处理,其二为针对部分llc发起的攻击,使用隔离攻击进程的方式处理。
技术总结
本发明涉及结合白名单和攻击分类的缓存DOS攻击防御方法,属于计算机与信息科学技术领域。本发明首先根据人为构建的白名单和所有进程确定待检测进程;然后通过检测进程ID和缓存访问事件组统计各事件发生次数,计算各事件发生率作为攻击行为特征向量;最后根据攻击行为特征向量判别攻击类型为整体缓存DOS攻击或局部缓存DOS攻击,对局部缓存DOS攻击的进程进行隔离,对整体缓存DOS攻击的进程进行缓存读写速度限制。本发明针对现有缓存DOS攻击防御方法易导致缓存整体性能下降,且难以识别针对局部缓存攻击的问题,提出结合白名单和攻击分类的方法,增加了可防御的攻击类型并降低了对缓存整体性能的影响。缓存整体性能的影响。缓存整体性能的影响。
技术研发人员:罗森林 谢宁 潘丽敏 鲁川 张笈 沈宇辉
受保护的技术使用者:北京理工大学
技术研发日:2023.05.06
技术公布日:2023/9/23
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
