CN111414616B - Sgx恶意软件检测方法及系统 - Google Patents
Sgx恶意软件检测方法及系统 Download PDFInfo
- Publication number
- CN111414616B CN111414616B CN202010140575.9A CN202010140575A CN111414616B CN 111414616 B CN111414616 B CN 111414616B CN 202010140575 A CN202010140575 A CN 202010140575A CN 111414616 B CN111414616 B CN 111414616B
- Authority
- CN
- China
- Prior art keywords
- enclave
- cache
- sgx
- monitoring
- memory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/566—Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/567—Computer malware detection or handling, e.g. anti-virus arrangements using dedicated hardware
Abstract
本申请实施例公开一种SGX恶意软件检测方法及系统。所述方法包括:A1、构建驱逐集;A2、从每个所述驱逐集中随机选取一个内存行,将所有选取的所述内存行组织到一个集合中形成探测集;A3、通过将所述探测集中的内存行放入到CPU的最后一级缓存的一个缓存集中以实现连续访问所述探测集的每一个内存行,并且记录本次访存花费的访问时间;如果所述访问时间大于特定阈值,则表明本次访问对应的所述缓存集被过度使用,从而得到一个表示所述缓存集是否被过度使用的缓存监控矩阵;A4、基于所述缓存监控矩阵检测恶意行为。所述系统用于执行所述方法。本申请实施例可通过分析Enclave不变的静态特征和调研从Enclave外观察到的动态特征来检测恶意的SGX程序。
Description
技术领域
本申请涉及计算机安全技术领域,特别涉及一种SGX恶意软件检测方法及系统。
背景技术
Intel Software Guard Extensions(SGX)是现代Intel处理器上新兴的安全功能,它可以创建称为Enclave的内存区域来为用户级的应用程序提供基于硬件的保护,使其免受恶意操作系统的攻击。SGX程序的安全性由扩展的内存管理单元提供的内存隔离功能、内存加密引擎提供的内存加密功能和处理器中内置密钥的远程认证功能来保护。SGX能够保证程序安全地运行在不可信的环境中(如云厂商),从而成功地解除了应用程序和底层系统软件之间的信任关系。然而,与其他被攻击者滥用的安全机制相似,SGX也可能被用来制造恶意软件,并且SGX技术使得该恶意软件变的十分隐蔽,可以逃避当前以下的恶意软件检测方法。
1).基于静态分析的检测。该方案是目前最基础也是应用最广泛的一种解决方案,它通过在样本的可执行文件中检索已知的恶意特征来检测恶意软件。但是,SGX程序至少会划分为两个文件以分别在Enclave内外环境中执行,因此其保持着与传统文件不同的文件结构,这会使传统的静态检测方法失效。更严重的是,恶意软件开发者可能会采用自修改代码(如加密技术)来隐藏恶意载荷。这都会使得逆向工程和静态分析技术完全无效。
2).基于内存取证的检测。该方案利用了加密的恶意载荷会在运行时解密的特点,通过转储并分析样本运行时的内存来检测恶意软件。然而,SGX本质上提供了隔离的内存区域Enclave,当前的技术方案都无法获得Enclave中的数据或追踪其内存访问痕迹。因此,该方法也不能检测SGX恶意软件。
3).基于调试的检测。该方案使用x86指令集提供的高级辅助调试功能,如陷阱和单步调试等来分析程序的执行和识别恶意软件;例如,EDB-Debugger工具已经集成进当前的数据取证操作系统(如Kali Linux)来分析恶意软件。而SGX在Enclave内显式地抑制了这类调试技术,因此传统的基于调试的方法也完全无效。
4).基于沙盒分析的检测。该方案利用了沙盒(如虚拟机和模拟器)提供的灵活的恢复和隔离功能,将待检测样本放入其中执行以收集运行时数据来检测恶意软件。然而虚拟机和模拟器并不能很好的执行SGX程序:在Enclave内执行若干特殊指令(RDRAND)可能会导致虚拟机退出,执行这类指令的时间差异会使得恶意SGX程序意识到虚拟机的存在从而不表现出恶意行为;此外,模拟器通常是基于软件的实现,因此不能完成硬件协助的远程认证功能。
5).基于系统调用的检测。该方案通过分析系统调用的序列及其参数来检测恶意软件。但是:a).部分SGX运行时系统会改变原有系统调用的序列和参数,如Graphene-SGX会将access转换为open access close,这可能会使得训练好的检测模型无效;b).这类方法只能检测出基于系统调用的攻击,而不能检测出其他攻击(如基于处理器缓存的侧信道攻击)。
6).基于性能监控计数器的检测。该方案利用Intel处理器中提供的性能监控计数器来监控程序的cache miss/hit和branch信息,从而检测一系列基于微架构元素的侧信道攻击。而产品级的Enclave会设置Anti Side-Channel Interference(ASCI)比特来抑制性能监控功能,因此攻击者可以利用Enclave来发起侧信道攻击并能够成功躲避当前所有检测方案。
可见,当前主流的各类恶意软件检测方法都不能应对基于SGX技术的恶意软件,且迄今为止并没有专注于检测SGX恶意软件的方案。
以上背景技术内容的公开仅用于辅助理解本申请的发明构思及技术方案,其并不必然属于本申请的现有技术,在没有明确的证据表明上述内容在本申请的申请日已经公开的情况下,上述背景技术不应当用于评价本申请的新颖性和创造性。
发明内容
本申请提出一种SGX恶意软件检测方法及系统,可通过分析Enclave不变的静态特征和调研从Enclave外观察到的动态特征来检测恶意的SGX程序。
在第一方面,本申请提供一种SGX恶意软件检测方法,包括:
A1、构建驱逐集;
A2、从每个所述驱逐集中随机选取一个内存行,将所有选取的所述内存行组织到一个集合中形成探测集;
A3、通过将所述探测集中的内存行放入到CPU的最后一级缓存的一个缓存集中以实现连续访问所述探测集的每一个内存行,并且记录本次访存花费的访问时间;如果所述访问时间大于特定阈值,则表明本次访问对应的所述缓存集被过度使用,从而得到一个表示所述缓存集是否被过度使用的缓存监控矩阵;
A4、基于所述缓存监控矩阵检测恶意行为。
在一些优选的实施方式中,还包括:B1、通过观察侧信道信息来监控Enclave对不可信程序的内存访问。
在一些优选的实施方式中,所述B1具体包括:B11、在CPU切换到Enclave模式之前,清除不可信内存所有可执行页面的页表项的Accessed位,并且在快表TLB中移除所述Accessed位的记录;
B12、在CPU从Enclave模式切换到普通模式之前,重复地进行以下操作:a)、检查不可信内存可执行页面的Accessed位;b)、如果所述Accessed位被置1,则将所述Accessed位记录并清零;c)、清除快表TLB中的记录;
B13、构建一个表示内存页面是否被访问的内存访问监控矩阵;
B14、基于所述内存访问监控矩阵检测恶意内存访问行为。
在一些优选的实施方式中,还包括:C1、静态地分析主应用程序和Enclave文件的二进制代码来提取Enclave元数据和ECall或OCall的函数原型。
在一些优选的实施方式中,还包括:D1、通过对Enclave线程控制结构页面的监控来捕捉Enclave入口;
在一些优选的实施方式中,所述D1具体包括:D11、在SGX驱动加载Enclave页面进入Enclave时,获得一个Enclave中所有的线程控制结构页面的地址;
D12、当Enclave通过EINIT指令初始化完毕,则清除线程控制结构页面PTE的Present位并在快表TLB中移除所述Present位的记录;
D13、获得当前的上下文信息并与标准的Enclave入口比较,以检测异常的Enclave进入行为。
在一些优选的实施方式中,还包括:E1、利用产品版Enclave提供的反调试功能来捕捉Enclave退出;
在一些优选的实施方式中,所述E1具体包括:E11、为当前线程设置调试标志;E12、获取异常上下文并与标准的Enclave退出位置进行比较,以检测异常的退出。
在一些优选的实施方式中,还包括:F1、通过检查Enclave进出前后的栈帧和寄存器值来检测控制流劫持攻击。
在一些优选的实施方式中,还包括:H1、通过创建钩子的方式来监控标准的Enclave接口行为。
在一些优选的实施方式中,所述H1具体包括:挂钩sgx_ecall和sgx_ecall_switchless函数来监控ECall;挂钩sgx_ocall和process_fcall来监控OCall;挂钩内核中的syscall_table来监控系统调用。
在第二方面,本申请提供一种SGX恶意软件检测系统,用于执行上述方法。
在第三方面,本申请提供一种计算机可读存储介质,所述计算机可读存储介质中存储有程序指令,所述程序指令被计算机的处理器执行时使所述处理器执行上述方法。
与现有技术相比,本申请实施例的有益效果有:
基于驱逐集构建探测集,通过将探测集中的内存行放入到CPU的最后一级缓存的一个缓存集中以实现连续访问探测集的每一个内存行并且记录本次访存花费的访问时间,得到一个表示缓存集是否被过度使用的缓存监控矩阵,可以监控CPU的缓存使用情况,并且有着较高的检测率和较低的误报率。
在优选的实施方式中,本申请实施例还具有如下有益效果:
采用侧信道观察页表项的方法,可以精准的监控Enclave的内存访问行为,可覆盖内存访问的攻击面。
通过对Enclave线程控制结构(TCS)页面的监控来捕捉Enclave入口以及利用产品版Enclave提供的反调试功能来捕捉Enclave退出,并使用ECall/OCall作为新的特征来检测SGX恶意软件,可大大提高SGX恶意软件的检测精度。
附图说明
图1为本申请一个实施例的基于侧信道分析的SGX恶意软件检测方法的流程示意图;
图2为本申请一个实施例的基于侧信道分析的SGX恶意软件检测系统的架构图;
图3示出本申请一个实施例的监控CPU缓存使用行为的过程;
图4示出本申请一个实施例的监控Enclave入口和出口的过程。
具体实施方式
为了使本申请实施例所要解决的技术问题、技术方案及有益效果更加清楚明白,以下结合图1至图4及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。
本实施例提供一种SGX恶意软件检测方法以及一种SGX恶意软件检测系统,具体是基于侧信道分析的SGX恶意软件检测方法以及基于侧信道分析的SGX恶意软件检测系统。
本实施例的SGX恶意软件检测系统用于实现本实施例的SGX恶意软件检测方法。
本实施例通过分析Enclave不变的静态特征和调研从Enclave外观察到的动态特征来检测恶意的SGX程序。参考图2,本实施例的SGX恶意软件检测系统包括静态分析程序模块、监控程序模块和检测引擎。
由于加密和混淆等技术,恶意SGX程序的特征主要由其行为体现。为此,本实施例的监控程序模块提供三个子程序模块分别来监控CPU缓存行为以应对基于Cache的侧信道攻击、内存访问行为以应对异常控制流攻击和异常内存访问和Enclave接口行为以应对基于接口的攻击和异常的Enclave进出。具体的,三个子程序模块分别为CPU缓存行为监控程序模块、内存访问监控程序模块和接口行为监控程序模块。
参考图1,本实施例的基于侧信道分析的SGX恶意软件检测方法包括步骤A1至步骤A4。参考图3,由CPU缓存行为监控程序模块执行步骤A1至步骤A4。
A1、构建驱逐集。
步骤A1依赖于驱逐集的构建,一个驱逐集中包含的内存行恰好能够填充满CPU中最后一级缓存(LLC,Last Level Cache)的某个缓存集合,而一组驱逐集能填满整个LLC。
A2、从每个驱逐集中随机选取一个内存行,将所有选取的内存行组织到一个集合中形成探测集。
随机的从每个驱逐集中选取一个内存行,所有选中的内存行被组织到一个集合中形成探测集。
A3、通过将探测集中的内存行放入到CPU的最后一级缓存的一个缓存集中以实现连续访问探测集的每一个内存行,并且记录本次访存花费的访问时间;如果访问时间大于特定阈值,则表明本次访问对应的缓存集被过度使用,从而得到一个表示缓存集是否被过度使用的缓存监控矩阵。
探测集中的每个元素都刚好放入到LLC中的一个缓存集中。CPU缓存行为监控程序模块不断地访问探测集中的每一个内存行并且记录本次访存花费的时间,如果访问时间大于特定阈值则代表本次访问发生了cache miss,即该内存行被驱逐出该缓存集,说明该缓存集被过度使用,比如可能受到Prime+Probe攻击。最后可以得到一个缓存监控矩阵,其中,缓存监控矩阵的每一列代表某个缓存集,而缓存监控矩阵的每一行则代表某次扫描。缓存监控矩阵中的每个元素均为0或1,1代表此刻该缓存集被过度使用,而0则相反。
A4、基于缓存监控矩阵检测恶意行为。
本实施例提供了一种规则描述语言,以允许用户在上述程序模块收集到的数据的基础上定义规则以检测SGX恶意软件。下面将分别描述规则描述语言和如何根据规则文件检测恶意SGX程序。
对规则描述语言进行说明。规则描述语言用于定义若干条检测规则,每条规则由动作和多个规则选项组成。规则动作指定了待检测程序与规则选项匹配时检测引擎采取的行为。一个规则选项包含由冒号分割开的关键字及其参数,而多条规则选项间由逗号分隔,从而构成了一个逻辑与语句。为了检测恶意的Enclave,客户可以提交一个由冒号分割开的包含多条规则的规则文件,每条规则间为逻辑或关系。
规则动作:该规则语言共提供了两类动作,即警报和终止;警报意味着如果待检测程序匹配了规则域,检测引擎将在日志中记录这一事件而不关闭程序;而终止则意味着程序将被立刻关闭并将日志发送给客户。
规则选项:如表1所示,共有11条规则选项,它们都以“C/M/I-Name-N/R/S”的格式命名;“C/M/I“域指明所要使用的监控模块(CPU缓存、内存访问或接口),“Name“域指定检测的内容,“N/R/S“域说明对应选项的参数类型,其中N代表数字值,R代表区间,S指明序列;此外,如果一个规则选项有多个参数,则应当将其括在括号中并以逗号分隔。
表1规则选项
由恶意CPU缓存行为检测程序模块执行步骤A4。本实施例采用窗口算法从收集到的缓存监控矩阵数据中检测恶意行为,具体算法如下:a)以扫描20次探测集得到的矩阵为小窗口,若在20次扫描中得到某列1的数量大于18,则计数器数值加一;b)统计500次小窗口,若计数器的数值大于20则表明目前存在异常的cache使用行为;c)计数器清0,周而复始。
当前的方法无法监控SGX应用程序的CPU缓存使用情况,因此也无法检测在Enclave发起的Prime+Probe/Abort侧信道攻击。相比之下,本实施例采用一种新颖的基于探测集的方法,可以监控CPU的缓存使用情况,并且有着较高的检测率和较低的误报率。
本实施例的基于侧信道分析的SGX恶意软件检测方法还包括步骤B1。
步骤B1、通过观察侧信道信息来监控Enclave对不可信程序的内存访问。由内存访问监控程序模块执行步骤B1,具体是通过检查页表项中Accessed位来监控Enclave内存访问行为。
在CPU切换到Enclave模式之前,内存访问监控程序模块清除不可信内存所有可执行页面的页表项的Accessed位,并且在快表TLB(Translate Lookaside Buffer)中移除该Accessed位的记录。
在CPU从Enclave模式切换到普通模式之前,该系统重复地进行以下三项操作:a)检查不可信内存可执行页面的Accessed位;b)如果该Accessed位被置1,则将该Accessed位记录并清零;c)清除快表TLB中的记录。该方法同样可以构建一个内存访问监控矩阵,其中每列代表每个内存页面而每行代表某次访问的监测情况:1代表被访问,0代表未被访问。
基于内存访问监控矩阵检测恶意内存访问行为。
由恶意内存访问行为检测模块检测恶意内存访问行为。恶意内存访问行为检测模块的检测算法基于内存访问监控算法收集到的内存访问监控矩阵,下面将详细介绍表1中的关键字M-AccDet-N不同参数代表的含义:a)、该值为0时代表不检测异常内存访问;b)、该值为1时代表仅检查矩阵中是否存在1,即不可信应用程序的可执行页面是否被访问;c)、该值为2时代表检查是否存在基于Flush的侧信道攻击,如Flush+Reload和Flush+Flush。
当前的方法并没有深入到程序内部分析内存访问行为,且不能应对代码完全不可见的情况。相比之下,本实施例采用侧信道观察页表项的方法,可以精准的监控Enclave的内存访问行为,可覆盖内存访问的攻击面。
本实施例的基于侧信道分析的SGX恶意软件检测方法还包括步骤C1。
步骤C1、静态地分析主应用程序和Enclave文件的二进制代码来提取Enclave元数据和ECall或OCall的函数原型。
由静态分析程序模块执行步骤C1。本实施例静态地分析主应用程序和Enclave文件的二进制代码来提取Enclave元数据和ECall/OCall的函数原型,这些函数原型后续将用在接口行为监控程序模块中实时地拦截ECall/OCall并输出其参数。提取ECall/OCall函数原型的方法是逆向了Intel SGX SDK处理这类接口函数的过程。具体而言,Intel SGX SDK使用ECall_table和OCall_table来组织所有的ECall/OCall函数地址,每个函数都被分配了一个数字索引。同时为了便于参数的传递,所有参数都被组织到一个封装的结构体中。基于以上信息,本实施例使用逆向分析工具和模拟执行引擎来获取细粒度的数据,如缓冲区位置、长度及其传递的方向等。通过以上分析能推断出来的标记参数的EDL关键字有:in,out,string,size and count。
对前述的接口行为监控程序模块进行说明。该程序模块监控所有的Enclave进出行为(包括指令级和接口级)并检查程序控制流以检测异常的进出和控制流劫持攻击。在Intel SGX SDK提供的运行时库中,共有两个标准的入口和三个标准的出口。两个入口分别为EENTER和ERESUME,三个出口分别为标准的EEXIT,AEP和异常处理句柄的第一条指令。下面将分别描述如何监控这类行为,分别为步骤D1、E1、F1和H1。
步骤D1、通过对Enclave线程控制结构(TCS)页面的监控来捕捉Enclave入口。步骤D1是监控Enclave入口。因为TCS是在执行EENTER和EEXIT时所要访问的第一个页面,且每个TCS都唯一的标记一个将要在Enclave内执行的线程。具体来说,在SGX驱动加载Enclave页面进入Enclave时,可以获得一个Enclave中所有的TCS页面的地址。一旦Enclave通过EINIT指令初始化完毕,接口行为监控程序模块便清除TCS页面PTE(Page Table Entry)的Present位并在TLB中移除Present位的记录。如果TCS页面发生了页面错误,接口行为监控程序模块会获得当前的上下文信息并与标准的Enclave入口比较,以检测异常的Enclave进入行为。
步骤E1、利用产品版Enclave提供的反调试功能来捕捉Enclave退出。步骤E1是监控Enclave出口。在捕捉到Enclave入口时,接口行为监控程序模块将为当前线程设置调试标志。因此,在Enclave退出并执行Enclave外第一条指令之前将会触发单步中断异常,此时接口行为监控程序模块将获取异常上下文并与标准的Enclave退出位置进行比较,以检测异常的退出。
步骤F1、通过检查Enclave进出前后的栈帧和寄存器值来检测控制流劫持攻击。步骤F1是控制流校验。在进入Enclave之前,接口行为监控程序模块记录栈中RBP和RIP对的链式结构,并在Enclave退出后检查当前栈中RBP和RIP链是否发生变化。同时接口行为监控程序模块还检查RDX寄存器,因为RDX寄存器中存储了ocall_table的地址,这会使得恶意的Enclave有机会修改该表的地址以执行任意的代码。
步骤H1、通过创建钩子的方式来监控标准的Enclave接口行为,即ECall/OCall和系统调用。步骤H1是监控函数级接口调用。接口行为监控程序模块挂钩sgx_ecall和sgx_ecall_switchless函数来监控ECall,挂钩sgx_ocall和process_fcall来监控OCall,挂钩内核中syscall_table来监控系统调用。所有收集到的信息将以”ECall/OCall/syscall,函数名称<参数1,参数2,…,参数n>,时间戳”的形式存储。
由恶意接口行为检测程序模块检测恶意接口行为。恶意接口行为检测程序模块主要解析用户输入的规则文件,并根据规则运行启发式检测算法。主要的检测特征有:a)、异常的Enclave进入和退出;b)、控制流劫持;c)、异常的ECall/OCall比例;d)、异常的OCall路由行为;e)、异常的ECall/OCall调用频率。
当前的方法不能准确地监控Enclave进入和退出行为,且忽略了ECall/OCall特征,因而检测精度不高。相比之下,本实施例使用较低的开销和新颖的方法来监控Enclave进入和退出,并使用ECall/OCall作为新的特征来检测SGX恶意软件,可大大提高SGX恶意软件的检测精度。
根据上述可知,本实施例基于侧信道观察到的信息,通过监控Enclave所有通信信道并允许用户定义启发式规则,来检测恶意SGX程序。本实施例可在无法直接获取SGX程序CPU缓存使用行为的情况下,检测侧信道攻击;本实施例可在无法审查Enclave内存访问信息的情况下,检测Enclave异常的内存访问或构造控制流攻击。本实施例可在无法调试Enclave内指令的情况下,检测Enclave的异常进入和退出。
本领域的技术人员可以理解实施例方法中的全部或部分流程可以由计算机程序来命令相关的硬件完成,程序可存储于计算机可读取存储介质中,程序在执行时,可包括如各方法实施例的流程。而前述的存储介质包括:ROM或随机存储记忆体RAM、磁碟或者光盘等各种可存储程序代码的介质。
以上内容是结合具体/优选的实施方式对本申请所作的进一步详细说明,不能认定本申请的具体实施只局限于这些说明。对于本申请所属技术领域的普通技术人员来说,在不脱离本申请构思的前提下,其还可以对这些已描述的实施方式做出若干替代或变型,而这些替代或变型方式都应当视为属于本申请的保护范围。
Claims (8)
1.一种SGX恶意软件检测方法,其特征在于,包括:
A1、构建驱逐集;
A2、从每个所述驱逐集中随机选取一个内存行,将所有选取的所述内存行组织到一个集合中形成探测集;
A3、通过将所述探测集中的内存行放入到CPU的最后一级缓存的一个缓存集中以实现连续访问所述探测集的每一个内存行,并且记录本次访存花费的访问时间;如果所述访问时间大于特定阈值,则表明本次访问对应的所述缓存集被过度使用,从而得到一个表示所述缓存集是否被过度使用的缓存监控矩阵,其中,缓存监控矩阵的每一列代表某个缓存集,缓存监控矩阵的每一行则代表某次扫描;缓存监控矩阵中的每个元素均为0或1,1代表此刻该缓存集被过度使用,而0则相反;
A4、基于所述缓存监控矩阵检测恶意行为;
还包括:B1、通过观察侧信道信息来监控Enclave对不可信程序的内存访问;
所述B1具体包括:
B11、在CPU切换到Enclave模式之前,清除不可信内存所有可执行页面的页表项的Accessed位,并且在快表TLB中移除所述Accessed位的记录;
B12、在CPU从Enclave模式切换到普通模式之前,重复地进行以下操作:a)、检查不可信内存可执行页面的Accessed位;b)、如果所述Accessed位被置1,则将所述Accessed位记录并清零;c)、清除快表TLB中的记录;
B13、构建一个表示内存页面是否被访问的内存访问监控矩阵;
B14、基于所述内存访问监控矩阵检测恶意内存访问行为。
2.根据权利要求1所述方法,其特征在于,还包括:C1、静态地分析主应用程序和Enclave文件的二进制代码来提取Enclave元数据和ECall或OCall的函数原型。
3.根据权利要求2所述方法,其特征在于,
还包括:D1、通过对Enclave线程控制结构页面的监控来捕捉Enclave入口;
所述D1具体包括:
D11、在SGX驱动加载Enclave页面进入Enclave时,获得一个Enclave中所有的线程控制结构页面的地址;
D12、当Enclave通过EINIT指令初始化完毕,则清除线程控制结构页面PTE的Present位并在快表TLB中移除所述Present位的记录;
D13、获得当前的上下文信息并与标准的Enclave入口比较,以检测异常的Enclave进入行为。
4.根据权利要求2所述方法,其特征在于,
还包括:E1、利用产品版Enclave提供的反调试功能来捕捉Enclave退出;
所述E1具体包括:
E11、为当前线程设置调试标志;
E12、获取异常上下文并与标准的Enclave退出位置进行比较,以检测异常的退出。
5.根据权利要求2所述方法,其特征在于,还包括:F1、通过检查Enclave进出前后的栈帧和寄存器值来检测控制流劫持攻击。
6.根据权利要求2所述方法,其特征在于,
还包括:H1、通过创建钩子的方式来监控标准的Enclave接口行为;
所述H1具体包括:挂钩sgx_ecall和sgx_ecall_switchless函数来监控ECall;挂钩sgx_ocall和process_fcall来监控OCall;挂钩内核中的syscall_table来监控系统调用。
7.一种SGX恶意软件检测系统,其特征在于:用于执行根据权利要求1至6任一项所述方法,包括静态分析程序模块、监控程序模块和检测引擎;所述静态分析程序模块用于分析Enclave不变的静态特征;所述监控程序模块包括CPU缓存行为监控程序模块、内存访问行为监控程序模块和接口行为监控程序模块,分别用于监控CPU缓存行为、内存访问行为和Enclave接口行为;所述检测引擎用于检测恶意的SGX程序。
8.一种计算机可读存储介质,其特征在于:所述计算机可读存储介质中存储有程序指令,所述程序指令被计算机的处理器执行时使所述处理器执行根据权利要求1至6任一项所述方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010140575.9A CN111414616B (zh) | 2020-03-03 | 2020-03-03 | Sgx恶意软件检测方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010140575.9A CN111414616B (zh) | 2020-03-03 | 2020-03-03 | Sgx恶意软件检测方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111414616A CN111414616A (zh) | 2020-07-14 |
CN111414616B true CN111414616B (zh) | 2023-03-28 |
Family
ID=71490888
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010140575.9A Active CN111414616B (zh) | 2020-03-03 | 2020-03-03 | Sgx恶意软件检测方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111414616B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113721919B (zh) * | 2021-08-09 | 2024-03-12 | 上海交通大学 | 基于Intel SGX可信执行环境的在线编译混淆实现方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101154258A (zh) * | 2007-08-14 | 2008-04-02 | 电子科技大学 | 恶意程序动态行为自动化分析系统与方法 |
CN102930210A (zh) * | 2012-10-14 | 2013-02-13 | 江苏金陵科技集团公司 | 恶意程序行为自动化分析、检测与分类系统及方法 |
-
2020
- 2020-03-03 CN CN202010140575.9A patent/CN111414616B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101154258A (zh) * | 2007-08-14 | 2008-04-02 | 电子科技大学 | 恶意程序动态行为自动化分析系统与方法 |
CN102930210A (zh) * | 2012-10-14 | 2013-02-13 | 江苏金陵科技集团公司 | 恶意程序行为自动化分析、检测与分类系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111414616A (zh) | 2020-07-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Xu et al. | Malware detection using machine learning based analysis of virtual memory access patterns | |
Tang et al. | Unsupervised anomaly-based malware detection using hardware features | |
KR102160659B1 (ko) | 하드웨어-기반 마이크로-아키텍처 데이터를 이용한 이상 프로그램 실행의 검출 | |
Pfoh et al. | A formal model for virtual machine introspection | |
Carmony et al. | Extract Me If You Can: Abusing PDF Parsers in Malware Detectors. | |
Hirano et al. | RanSAP: An open dataset of ransomware storage access patterns for training machine learning models | |
CN105247532A (zh) | 使用硬件特征的无监督的基于异常的恶意软件检测 | |
Zakeri et al. | A static heuristic approach to detecting malware targets | |
Alsmadi et al. | A survey on malware detection techniques | |
Aurangzeb et al. | On the classification of Microsoft-Windows ransomware using hardware profile | |
Naseer et al. | Malware detection: issues and challenges | |
US20170091454A1 (en) | Lbr-based rop/jop exploit detection | |
CN109409089B (zh) | 一种基于虚拟机自省的Windows加密型勒索软件检测方法 | |
CN111428239B (zh) | 一种恶意挖矿软件的检测方法 | |
CN109120618B (zh) | 一种基于硬件虚拟化的云平台受控侧信道攻击检测方法 | |
CN111414616B (zh) | Sgx恶意软件检测方法及系统 | |
Nunes et al. | Bane or Boon: Measuring the effect of evasive malware on system call classifiers | |
Peng et al. | Micro-architectural features for malware detection | |
Zhang et al. | See through walls: Detecting malware in sgx enclaves with sgx-bouncer | |
Hirano et al. | Machine Learning-based Ransomware Detection Using Low-level Memory Access Patterns Obtained From Live-forensic Hypervisor | |
Botacin et al. | Near-memory & in-memory detection of fileless malware | |
Parida et al. | PageDumper: a mechanism to collect page table manipulation information at run-time | |
Albalawi et al. | Protecting Shared Virtualized Environments against Cache Side-channel Attacks. | |
CN114692162A (zh) | 处理器攻击检测方法、处理器及电子设备 | |
Wang et al. | MrKIP: Rootkit Recognition with Kernel Function Invocation Pattern. |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |