对内存代码执行的防护方法与流程

文档序号:17161745发布日期:2019-03-20 00:50阅读:338来源:国知局
对内存代码执行的防护方法与流程

本发明涉及内存防护领域,特别涉及一种对内存代码执行的防护方法。



背景技术:

现代计算机体系结构中,将软件二进制分为代码和数据。其中,二进制代码能被处理器直接识别并执行,而数据不能被处理器执行。内存代码执行是指恶意软件在感染计算机系统时,恶意载体首先作为数据而不是可执行的代码被加载到内存中,通过计算机系统的某些机制,将其对应的内存属性转变为可执行的代码,然后执行恶意代码。通过对恶意数据载体进行各种变换,达到隐藏其恶意功能的目的。内存代码执行的主要实现技术是内存加载技术:恶意软件为实现完全控制计算机系统的目的,需要在计算机系统中执行可执行文件,为避免文件出现在磁盘中,发展出内存加载技术,即恶意代码只在内存中存在、运行。其他形式存在时,是无法被检测的普通数据。现有技术中不能有效识别和防护内存执行类的恶意软件,其对恶意软件的监测和防护能力较弱。



技术实现要素:

本发明要解决的技术问题在于,针对现有技术的上述缺陷,提供一种能有效的识别和防护内存执行类的恶意软件、能增强对传统和新型恶意软件的监测和防护能力的对内存代码执行的防护方法。

本发明解决其技术问题所采用的技术方案是:构造一种对内存代码执行的防护方法,包括如下步骤:

a)开启对内存相关函数的监控;所述内存相关函数为申请可执行内存和修改内存属性的函数;

b)当有应用程序申请可执行内存请求时,过滤具有执行权限的内存操作;

c)对所有的可执行内存请求的内存地址、大小和申请者地址进行记录,并对记录的数据进行机器学习;

d)根据机器学习得到的规则,判断所述可执行内存请求是否是可疑恶意内存操作,如是,阻断应用进一步操作,并上报警告;否则,按照系统正常流程处理。

在本发明所述的对内存代码执行的防护方法中,还包括如下步骤:

e)开启线程创建,并启动对线程入口点的监控;

f)过滤新的线程启动操作;

g)判断线程起始地址是否在可疑内存块,如是,执行步骤h);否则,执行步骤i);

h)进行拦截并报警;

i)判断线程创建者是否在所述可疑内存块,如是,返回步骤h);否则,执行步骤j);

j)对线程起始地址处的内存进行安全分析,并判断是否安全,如是,系统按照正常流程处理;否则,返回步骤h)。

在本发明所述的对内存代码执行的防护方法中,所述步骤d)进一步包括:

d1)获取所述可执行内存请求时的相关元数据;所述相关元数据包括申请者地址、内存大小、所属模块、进程名和是否在栈中;

d2)对所述相关元数据进行机器学习,并判断所述可执行内存请求的恶意评分是否超过预定值,如是,执行步骤d3);否则,执行步骤d4);

d3)拦截操作并上报;

d4)根据已有的规则,判断所述可执行内存请求是否属于恶意请求,如是,返回步骤d3);否则,进行系统正常流程。

在本发明所述的对内存代码执行的防护方法中,所述步骤d2)进一步包括:

d21)分析所述可执行内存请求在计算机所有历史请求中的比例;

d22)分析所述可执行内存请求与前n条历史请求的关系;所述n为大于0的整数;

d23)分析所述可执行内存请求在云端数据中的比例;

d24)识别出所述可执行内存请求是否为危险命令。

在本发明所述的对内存代码执行的防护方法中,所述步骤j)进一步包括:

j1)获取线程起始地址的历史记录信息,当查询到所述线程起始地址的历史记录信息中匹配数小于正常值时,则认为当前线程是高度危险线程;

j2)获取线程创建者的历史记录信息,当查询到所述线程创建者的历史记录信息中匹配数小于正常值时,则认为当前线程是高度危险线程;

j3)获取所述线程起始地址是否位于当前进程的正常已加载模块列表中,当不位于时,则认为当前线程是高度危险线程;

j4)获取所述线程创建者地址是否位于当前进程的正常已加载模块列表中,当不位于时,则认为当前线程是高度危险线程;

j5)获取所述线程起始地址是否位于当前进程的栈空间内,当位于时,则认为当前线程是高度危险线程;

j6)结合预先定义的规则,综合判断线程是否具有危险性,如是,系统按照正常流程处理;否则,返回步骤h)。

实施本发明的对内存代码执行的防护方法,具有以下有益效果:由于当有应用程序申请可执行内存请求时,过滤具有执行权限的内存操作;对所有的可执行内存请求的内存地址、大小和申请者地址进行记录,并对记录的数据进行机器学习;根据机器学习得到的规则,判断可执行内存请求是否是可疑恶意内存操作,如是,阻断应用进一步操作,并上报警告;否则,按照系统正常流程处理,因此能有效的识别和防护内存执行类的恶意软件、能增强对传统和新型恶意软件的监测和防护能力。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明对内存代码执行的防护方法一个实施例中的流程图;

图2为所述实施例中对内存代码执行的防护方法进一步包括的流程图;

图3为所述实施例中根据机器学习得到的规则,判断可执行内存请求是否是可疑恶意内存操作的具体流程图;

图4为所述实施例中对相关元数据进行机器学习,并判断可执行内存请求的恶意评分是否超过预定值的具体流程图;

图5为所述实施例中对线程起始地址处的内存进行安全分析,并判断是否安全的具体流程图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

在本发明对内存代码执行的防护方法实施例中,该对内存代码执行的防护方法的流程图如图1所示。图1中,该对内存代码执行的防护方法包括如下步骤:

步骤s01开启对内存相关函数的监控:现代通用操作系统底层都有提欧共统一的内存操作函数,本步骤中,开启对内存相关函数的监控,该内存相关函数为申请可执行内存和修改内存属性的函数。

步骤s02当有应用程序申请可执行内存请求时,过滤具有执行权限的内存操作:本步骤中,当有应用程序申请可执行内存请求时,会过滤具有执行权限的内存操作,进入本发明的方法的监控流程。

步骤s03对所有的可执行内存请求的内存地址、大小和申请者地址进行记录,并对记录的数据进行机器学习:本步骤中,对所有的可执行内存请求的内存地址、大小和申请者地址进行记录,并对记录的数据进行机器学习。

步骤s04根据机器学习得到的规则,判断可执行内存请求是否是可疑恶意内存操作:本步骤中,根据机器学习得到的规则,判断可执行内存请求是否是可疑恶意内存操作,如果判断的结果为是,则执行步骤s05;否则,执行步骤s06。

步骤s05阻断应用进一步操作,并上报警告:如果上述步骤s04判断的结果为是,即新的可执行内存请求被判定为恶意内存操作,则执行本步骤。本步骤中,阻断应用进一步操作,并上报警告。

步骤s06按照系统正常流程处理:如果上述步骤s04的判断结果为否,则执行本步骤。本步骤中,按照系统正常流程处理。本发明能有效的识别和防护内存执行类的恶意软件、能增强对传统和新型恶意软件的监测和防护能力。

该对内存代码执行的防护方法还包括进一步的流程,图2为本实施例中对内存代码执行的防护方法进一步包括的流程图,图2中,该内存代码执行的防护方法进一步包括:

步骤s07开启线程创建,并启动对线程入口点的监控:现代操作系统的最小调度单位是线程,线程具有执行的完整上下文,本步骤中,开启线程创建,并启动对线程入口点的监控。

步骤s08过滤新的线程启动操作:本步骤中,过滤新线程启动操作,也就是将新线程进入本发明的监控流程。

步骤s09判断线程起始地址是否在可疑内存块:本步骤中,判断线程起始地址是否在可疑内存块,也就是判断线程起始地址是否在具有可读属性的非正常模块,如果判断的结果为是,则执行步骤s10;否则,执行步骤s11。

步骤s10进行拦截并报警:如果上述步骤s09的判断结果为是,则执行本步骤。本步骤中,进行拦截并报警。也就是在程的创建与启动操作时,若线程的入口点在具有可读属性的非正常模块时,则对线程进行拦截并报警。

步骤s11判断线程创建者是否在可疑内存块:如果上述步骤s09的判断结果为否,则执行本步骤。本步骤中,判断线程创建者是否在可疑内存块,如果判断的结果为是,则返回步骤s10;否则,执行步骤s12。

步骤s12对线程起始地址处的内存进行安全分析,并判断是否安全:本步骤中,对线程起始地址处的内存进行安全分析,并判断是否安全,如果判断的结果为是,则执行步骤s13;否则,返回步骤s10,即对线程的执行体进行检测,若有安全危险,阻止操作并上报。

步骤s13系统按照正常流程处理:如果上述步骤s12的判断结果为是,则执行本步骤。本步骤中,系统按照正常流程处理。

对于本实施例而言,上述步骤s04至步骤s06还可进一步细化,其细化后的流程图如图3所示。图3中,上述步骤s04至步骤s06进一步包括:

步骤s41获取可执行内存请求时的相关元数据:本步骤中,获取可执行内存请求时的相关元数据,该相关元数据包括申请者地址、内存大小、所属模块、进程名和是否在栈中。

步骤s42对相关元数据进行机器学习,并判断可执行内存请求的恶意评分是否超过预定值:本步骤中,对相关元数据进行机器学习,并判断可执行内存请求的恶意评分是否超过预定值,如果判断的结果为是,则执行步骤s44;否则,执行步骤s43。值得一提的是,上述预定值的大小可以根据实际情况进行设定。

步骤s43拦截操作并上报:如果上述步骤s42的判断结果为否,即恶意评分超过预定值,则执行本步骤。本步骤中,拦截操作并上报。

步骤s44根据已有的规则,判断可执行内存请求是否属于恶意请求:如果上述步骤s42的判断结果为是,则执行本步骤。本步骤中,根据已有的规则,判断可执行内存请求是否属于恶意请求,如果判断的结果为是,则返回步骤s43,即拦截规则中的恶意请求;否则,执行步骤s45。

步骤s45进行系统正常流程:如果上述步骤s44的判断结果为否,则执行本步骤。本步骤中,进行系统正常流程。通过上述步骤s41至步骤s45,可实现判断可执行内存请求是否为恶意请求。

对于本实施例而言,上述步骤s42还可进一步细化,其细化后的流程图如图4所示。图4中,上述步骤s42进一步包括:

步骤s421分析可执行内存请求在计算机所有历史请求中的比例:本步骤中,分析可执行内存请求在计算机所有历史请求中的比例,具体就是将可执行内存请求与本计算机历史请求统计数据进行对比,对于正常的请求命令,应该有大量相同的请求命令已经执行,并有一定的占比。

步骤s422分析可执行内存请求与前n条历史请求的关系:本步骤中,分析可执行内存请求与前n条历史请求的关系,通过将可执行内存请求与前n条历史请求进行关系分析,若有无明显关联(关联指如果之前是读操作,现在进行写入,有逻辑顺序/关系),则需要继续关注。上述n为大于0的整数。

步骤s423分析可执行内存请求在云端数据中的比例:本步骤中,分析可执行内存请求在云端数据中的比例,具体就是结合云端的大数据,统计大量范围内的请求命令,由于样本数据进一步扩大,对任何的正常命令,将都有很大的统计数据,而恶意命令在统计数据中的占比会比较少。

步骤s424识别出可执行内存请求是否为危险命令:本步骤中,根据上述步骤s421至步骤s423的结果,识别出可执行内存请求是否为危险命令。通过上述步骤s421至步骤s423,能识别出可执行内存请求是否具有危险行为。

对于本实施例而言,上述步骤s11还可进一步细化,其细化后的流程图如图5所示。图5中,上述步骤s11进一步包括:

步骤s111获取线程起始地址的历史记录信息,当查询到线程起始地址的历史记录信息中匹配数小于正常值时,则认为当前线程是高度危险线程:本步骤中,获取线程起始地址的历史记录信息,当查询到线程起始地址的历史记录信息中匹配数小于正常值时,则认为当前线程是高度危险线程。

步骤s112获取线程创建者的历史记录信息,当查询到线程创建者的历史记录信息中匹配数小于正常值时,则认为当前线程是高度危险线程:本步骤中,获取线程创建者的历史记录信息,当查询到线程创建者的历史记录信息中匹配数小于正常值时,则认为当前线程是高度危险线程。

步骤s113获取线程起始地址是否位于当前进程的正常已加载模块列表中,当不位于时,则认为当前线程是高度危险线程:本步骤中,获取线程起始地址是否位于当前进程的正常已加载模块列表中,当线程起始地址不位于当前进程的正常已加载模块列表中时,则认为当前线程是高度危险线程。

步骤s114获取线程创建者地址是否位于当前进程的正常已加载模块列表中,当不位于时,则认为当前线程是高度危险线程:本步骤中,获取线程创建者地址是否位于当前进程的正常已加载模块列表中,如果线程创建者地址不位于当前进程的正常已加载模块列表中,则认为当前线程是高度危险线程。

步骤s115获取线程起始地址是否位于当前进程的栈空间内,当位于时,则认为当前线程是高度危险线程:本步骤中,获取线程起始地址是否位于当前进程的栈空间内,当线程起始地址位于当前进程的栈空间内时,则认为当前线程是高度危险线程。

步骤s116结合预先定义的规则,综合判断线程是否具有危险性:本步骤中,结合预先定义的规则,综合判断线程是否具有危险性,如果判断的结果为是,则执行步骤s117;否则,执行步骤s10。

步骤s117系统按照正常流程处理:如果上述步骤s116的判断结果为是,则执行本步骤。本步骤中,系统按照正常流程处理。

该对内存代码执行的防护方法通过依次获取线程起始地址的模块信息和历史记录,对在栈上的线程或者符合已知规则的线程提升危险等级,对综合评定危险程度高的线程,阻断其操作,并记录上报。

总之,本发明能有效的识别和防护内存执行类的恶意软件;针对内存执行的关键环节,对加载和执行部分分别予以拦截,能够对所有内存执行的恶意软件进行完整地拦截;利用机器学习和云端大数据检测,提高检测的准确性。本发明是针对内存执行的通用性安全解决方案,能提供包括但不限于对windows、linux、android等通用操作系统的内存执行类恶意软件的安全防御能力。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1