基于系统调用分析的软件行为评估方法和装置制造方法

文档序号:6548405阅读:128来源:国知局
基于系统调用分析的软件行为评估方法和装置制造方法
【专利摘要】本发明公开了一种基于系统调用分析的软件行为评估方法和装置,所述方法包括:在监控到待评估的软件一次软件行为后,获取该软件的监控日志中针对该次软件行为记录的信息,从中提取出系统调用序列、每个系统调用的入口地址和返回地址;根据系统调用序列与知识库中各系统调用子序列之间的比较结果确定系统调用序列的评估值;对于每个系统调用,根据该系统调用的入口地址和返回地址计算出该系统调用的内存相对偏移;根据该系统调用的内存相对偏移与知识库中该系统调用的常见内存偏移之间的比较结果确定该系统调用的评估结果;根据每个系统调用的评估结果、系统调用序列的评估值,对该次软件行为进行评估。应用本发明,可提高评估准确度。
【专利说明】基于系统调用分析的软件行为评估方法和装置
【技术领域】
[0001]本发明涉及软件技术,尤其涉及一种基于系统调用分析的软件行为评估方法和装置。
【背景技术】
[0002]软件行为是指软件程序运行时的表现形态和状态演变的过程;从软件程序的底层的二进制指令到高层的程序语句、系统调用、函数等都属于不同层次的软件行为。当软件程序在遭到黑客攻击、木马攻击篡改以及人为异常操作的时候,其内部流程往往会有所改变,即产生异常的软件行为。
[0003]事实上,由于系统调用是操作系统提供给应用程序访问系统资源的接口,相应地,系统调用的状况在一定程度上能够反映软件程序的行为特征。这样,当软件程序的软件行为发生异常时,例如,软件程序在运行过程中可能会加载源程序中并未加载的程序库等,往往会在系统调用上留下痕迹;而通过对系统调用的分析,可以及时发现软件行为的异常并检测出问题所在。
[0004]目前,现有已出现了一系列用来表示软件程序的正常行为的基于系统调用的软件行为模型,例如,最基本的N-gram模型、之后对其进行改进的Var-gram模型、以及后续的FSA(Inite State Automaton,有限状态自动机)模型等。相应地,现有的基于系统调用分析的软件行为评估方法中,主要是在获取软件程序的软件行为后,基于上述现有的基于系统调用的软件行为模型,根据其获取的软件程序的软件行为与上述软件行为模型中的正常行为之间的行为特征比对来判定软件行为的异常与否。其中,进行比对的行为特征具体是指软件行为模型中预先训练的系统调用序列。
[0005]虽然上述各评估模型采用的建模方式不同,例如,有的采用动态建模方式,动态跟踪监控软件,获取软件实时运行的痕迹,并以此进行动态训练;有的采用混合建模方式,对软件程序代码进行静态分析判断程序的内部流程的同时,还对实际监测的软件行为进行训练。但都主要是利用能够在一定程度上表征软件程序正常运行的系统调用序列来进行建模。例如,通过大量次数的正常运行,来获取一系列较为完善的软件程序正常运行时的正常行为轨迹,利用收集的轨迹进行知识总结,得到软件程序正常运行时的系统调用序列,并通过这些知识建立模型。
[0006]然而,由于动态的数据存在一定的误报几率,且系统调用序列并不能够全面表示软件行为,所以,无论是动态建模还是混合建模,若仅利用软件行为模型中预先总结出的系统调用序列来判定软件行为的正常与否,其存在评估准确度不高的不足。因此,有必要提供一种提高评估准确度的软件行为评估方法。

【发明内容】

[0007]本发明实施例提供了基于系统调用分析的软件行为评估方法和装置,提高评估准确度。[0008]根据本发明的一个方面,提供了一种基于系统调用分析的软件行为评估方法,包括:
[0009]在监控到待评估的软件的一次软件行为后,获取所述软件的监控日志中针对该次软件行为记录的信息,并从中提取出每个系统调用的入口地址和返回地址,以及系统调用序列;
[0010]将提取出的系统调用序列与所述知识库中预先存储的所述软件的各系统调用子序列进行比较,根据比较结果确定提取出的系统调用序列的评估值;并
[0011]对于获取的信息中涉及的每个系统调用,根据该系统调用的入口地址和返回地址计算出该系统调用的内存相对偏移后,将计算出的该系统调用的内存相对偏移与知识库中预先存储的该系统调用的常见内存偏移进行比较,根据比较结果确定该系统调用的评估结果;
[0012]根据确定出的每个系统调用的评估结果,以及系统调用序列的评估值,对该次软件行为进行评估。
[0013]较佳地,所述知识库中的各系统调用子序列是预先对所述软件的若干次软件正常行为进行学习获取的;其中,对所述软件的一次软件正常行为进行学习的过程为:
[0014]在监控到所述软件的一次软件正常行为后,从所述软件的监控日志中的针对该次软件正常行为所记录的系统调用信息中提取出系统调用序列,作为本次学习过程中得到的所述软件的样本系统调用序列记录在所述知识库中;
[0015]将所述知识库中中记录的所述软件的各样本系统调用序列所共有的若干个子序列作为所述软件的系统调用子序列;
[0016]针对所述软件的每个系统调用子序列,将该系统调用子序列在所述软件的所有样本系统调用序列中出现的次数总和与所述软件的样本系统调用序列的个数的比值作为该系统调用子序列的评估因子;并将该系统调用子序列的评估因子对应该系统调用子序列存储在所述知识库中。
[0017]较佳地,所述对所述软件的一次软件正常行为进行学习的过程中还包括:
[0018]针对该次软件正常行为所包含的每个系统调用,从所述系统调用信息中提取出该系统调用的入口地址和返回地址,并根据提取出的返回地址和入口地址,计算出该系统调用的内存相对偏移,并作为本次学习过程中得到的该系统调用的常见内存偏移记录在所述知识库中。
[0019]较佳地,所述将提取出的系统调用序列与所述知识库中预先存储的各系统调用子序列进行比较,根据比较结果确定提取出的系统调用序列的评估值,具体包括:
[0020]将提取出的系统调用序列与所述知识库中预先存储的各系统调用子序列进行比较,从该系统调用序列中提取出与所述知识库中预先存储的系统调用子序列相同的子序列作为该系统调用序列中所包含的匹配子序列;并根据各系统调用子序列在所述知识库中的评估因子、各匹配子序列在该系统调用序列中出现的次数,计算出该系统调用序列的评估值。
[0021]较佳地,所述根据各系统调用子序列在所述知识库中的评估因子、各匹配子序列在该系统调用序列中出现的次数,计算出该系统调用序列的评估值,具体包括:
[0022]根据如下公式1,计算出该系统调用序列的评估值SQ:
【权利要求】
1.一种基于系统调用分析的软件行为评估方法,其特征在于,包括: 在监控到待评估的软件的一次软件行为后,获取所述软件的监控日志中针对该次软件行为记录的信息,并从中提取出每个系统调用的入口地址和返回地址,以及系统调用序列; 将提取出的系统调用序列与所述知识库中预先存储的所述软件的各系统调用子序列进行比较,根据比较结果确定提取出的系统调用序列的评估值;并 对于获取的信息中涉及的每个系统调用,根据该系统调用的入口地址和返回地址计算出该系统调用的内存相对偏移后,将计算出的该系统调用的内存相对偏移与知识库中预先存储的该系统调用的常见内存偏移进行比较,根据比较结果确定该系统调用的评估结果; 根据确定出的每个系统调用的评估结果,以及系统调用序列的评估值,对该次软件行为进行评估。
2.如权利要求1所 述的方法,其特征在于,所述知识库中的各系统调用子序列是预先对所述软件的若干次软件正常行为进行学习获取的;其中,对所述软件的一次软件正常行为进行学习的过程为: 在监控到所述软件的一次软件正常行为后,从所述软件的监控日志中的针对该次软件正常行为所记录的系统调用信息中提取出系统调用序列,作为本次学习过程中得到的所述软件的样本系统调用序列记录在所述知识库中; 将所述知识库中中记录的所述软件的各样本系统调用序列所共有的若干个子序列作为所述软件的系统调用子序列; 针对所述软件的每个系统调用子序列,将该系统调用子序列在所述软件的所有样本系统调用序列中出现的次数总和与所述软件的样本系统调用序列的个数的比值作为该系统调用子序列的评估因子;并将该系统调用子序列的评估因子对应该系统调用子序列存储在所述知识库中。
3.如权利要求2所述的方法,其特征在于,所述对所述软件的一次软件正常行为进行学习的过程中还包括: 针对该次软件正常行为所包含的每个系统调用,从所述系统调用信息中提取出该系统调用的入口地址和返回地址,并根据提取出的返回地址和入口地址,计算出该系统调用的内存相对偏移,并作为本次学习过程中得到的该系统调用的常见内存偏移记录在所述知识库中。
4.如权利要求1-3任一所述的方法,其特征在于,所述将提取出的系统调用序列与所述知识库中预先存储的各系统调用子序列进行比较,根据比较结果确定提取出的系统调用序列的评估值,具体包括: 将提取出的系统调用序列与所述知识库中预先存储的各系统调用子序列进行比较,从该系统调用序列中提取出与所述知识库中预先存储的系统调用子序列相同的子序列作为该系统调用序列中所包含的匹配子序列;并根据各系统调用子序列在所述知识库中的评估因子、各匹配子序列在该系统调用序列中出现的次数,计算出该系统调用序列的评估值。
5.如权利要求4所述的方法,其特征在于,所述根据各系统调用子序列在所述知识库中的评估因子、各匹配子序列在该系统调用序列中出现的次数,计算出该系统调用序列的评估值,具体包括:根据如下公式1,计算出该系统调用序列的评估值SQ:
6.如权利要求1-3任一所述的方法,其特征在于,所述将计算出的该系统调用的内存相对偏移与知识库中预先存储的该系统调用的常见内存偏移进行比较,根据比较结果确定该系统调用的评估结果,具体包括: 对于该系统调用序列中所包含的每个匹配子序列,针对该匹配子序列中所包含的每个系统调用,将该系统调用的内存相对偏移与知识库中预先存储的该系统调用的常见内存偏移进行比较,若该系统调用的内存相对偏移与所述知识库中预先存储的该系统调用的常见内存偏移相同,则将该系统调用评估为该匹配子序列中所包含的正常系统调用。
7.如权利要求6所述的方法,其特征在于,所述根据确定出的每个系统调用的评估结果,以及系统调用序列的评估值,对该次软件行为进行评估,具体包括: 对于所述系统调用序列中所包含的每个匹配子序列,根据该匹配子序列中所包含每个系统调用的评估结果,统计出该匹配子序列中所包含的正常系统调用总数;并根据每个匹配子序列中所包含的系统调用总数、以及每个匹配子序列中所包含的正常系统调用总数,计算出该次软件行为的内存偏移评估值; 将计算出的该次软件行为的内存偏移评估值与系统调用序列的评估值的累加值作为该次软件行为的评估值;若该次软件行为的评估值小于所述知识库中预先存储的异常评估阈值,则评估该次软件行为为异常软件行为;其中, 根据如下公式2,计算出该次软件行为的内存偏移评估值
8.如权利要求2所述的方法,其特征在于,在所述将该系统调用子序列的评估因子对应该系统调用子序列存储在所述知识库中之后,还包括: 对于所述软件的每个系统调用子序列,针对该系统调用子序列所包含的每个系统调用,将该系统调用的内存相对偏移与所述知识库中记录的该系统调用的常见内存偏移进行比较;若相同,则将该系统调用子序列的评估因子加上设定的加权因子,否则,将该系统调用子序列的评估因子减去设定的降权因子,得到该系统调用子序列的新的评估因子;以及 若该系统调用子序列的新的评估因子小于设定的评估因子阈值,则将该系统调用子序列及其评估因子从所述知识库中删除。
9.一种基于系统调用分析的软件行为评估装置,其特征在于,包括: 软件行为监控模块,用于在监控到待评估的软件的一次软件行为后,发送评估通知; 监控信息分析模块,用于接收到所述评估通知后,获取所述软件的监控日志中针对该次软件行为记录的信息,并从中提取出每个系统调用的入口地址和返回地址,以及系统调用序列进行输出; 序列评估模块,用于接收所述监控信息分析模块输出的系统调用序列后,将接收的系统调用序列与所述知识库中预先存储的所述软件的各系统调用子序列进行比较,根据比较结果确定接收的系统调用序列的评估值后进行输出; 系统调用评估模块,用于接收所述监控信息分析模块输出的各系统调用的入口地址和返回地址;针对每个系统调用,根据该系统调用的入口地址和返回地址计算出该系统调用的内存相对偏移后,将计算出的该系统调用的内存相对偏移与知识库中预先存储的该系统调用的常见内存偏移进行比较,根据比较结果确定该系统调用的评估结果后进行输出; 综合评估模块,用于根据所述系统调用评估模块输出的各系统调用的评估结果,以及所述序列评估模块输出的系统调用序列的评估值,对该次软件行为进行评估。
10.如权利要求9所述的装置,其特征在于,还包括: 知识库训练模块,用于对所述软件的若干次软件正常行为进行学习;其中,对所述软件的一次软件正常行为进行学习的过程为:在监控到所述软件的一次软件正常行为后,从所述软件的监控日志中的针对该次软件正常行为所记录的系统调用信息中提取出系统调用序列、该次软件正常行为所包含的各系统调用的入口地址和返回地址,根据提取出的返回地址和入口地址,计算出该系统调用的内存相对偏移;将提取出的系统调用序列作为本次学习过程中得到的所述软件的样本系统调用序列记录在所述知识库中;并将计算出的各系统调用的内存相对偏移作为本次学习过程中得到的各系统调用的常见内存偏移记录在所述知识库中;将所述 知识库中中记录的所述软件的各样本系统调用序列所共有的若干个子序列作为所述软件的系统调用子序列;针对所述软件的每个系统调用子序列,将该系统调用子序列在所述软件的所有样本系统调用序列中出现的次数总和与所述软件的样本系统调用序列的个数的比值作为该系统调用子序列的评估因子;并将该系统调用子序列的评估因子对应该系统调用子序列存储在所述知识库中。
【文档编号】G06F11/36GK104035866SQ201410240265
【公开日】2014年9月10日 申请日期:2014年5月30日 优先权日:2014年5月30日
【发明者】李宁, 薛静锋, 董骁, 向恒勇, 肖飞, 李清俊 申请人:中国电子科技集团公司第十五研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1