CN104035866B - 基于系统调用分析的软件行为评估方法和装置 - Google Patents

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

Info

Publication number
CN104035866B
CN104035866B CN201410240265.9A CN201410240265A CN104035866B CN 104035866 B CN104035866 B CN 104035866B CN 201410240265 A CN201410240265 A CN 201410240265A CN 104035866 B CN104035866 B CN 104035866B
Authority
CN
China
Prior art keywords
system call
software
subsequence
evaluation
knowledge base
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
Application number
CN201410240265.9A
Other languages
English (en)
Other versions
CN104035866A (zh
Inventor
李宁
薛静锋
董骁
向恒勇
肖飞
李清俊
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
CETC 15 Research Institute
Original Assignee
CETC 15 Research Institute
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by CETC 15 Research Institute filed Critical CETC 15 Research Institute
Priority to CN201410240265.9A priority Critical patent/CN104035866B/zh
Publication of CN104035866A publication Critical patent/CN104035866A/zh
Application granted granted Critical
Publication of CN104035866B publication Critical patent/CN104035866B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种基于系统调用分析的软件行为评估方法和装置,所述方法包括:在监控到待评估的软件一次软件行为后,获取该软件的监控日志中针对该次软件行为记录的信息,从中提取出系统调用序列、每个系统调用的入口地址和返回地址;根据系统调用序列与知识库中各系统调用子序列之间的比较结果确定系统调用序列的评估值;对于每个系统调用,根据该系统调用的入口地址和返回地址计算出该系统调用的内存相对偏移;根据该系统调用的内存相对偏移与知识库中该系统调用的常见内存偏移之间的比较结果确定该系统调用的评估结果;根据每个系统调用的评估结果、系统调用序列的评估值,对该次软件行为进行评估。应用本发明,可提高评估准确度。

Description

基于系统调用分析的软件行为评估方法和装置
技术领域
本发明涉及软件技术,尤其涉及一种基于系统调用分析的软件行为评估方法和装置。
背景技术
软件行为是指软件程序运行时的表现形态和状态演变的过程;从软件程序的底层的二进制指令到高层的程序语句、系统调用、函数等都属于不同层次的软件行为。当软件程序在遭到黑客攻击、木马攻击篡改以及人为异常操作的时候,其内部流程往往会有所改变,即产生异常的软件行为。
事实上,由于系统调用是操作系统提供给应用程序访问系统资源的接口,相应地,系统调用的状况在一定程度上能够反映软件程序的行为特征。这样,当软件程序的软件行为发生异常时,例如,软件程序在运行过程中可能会加载源程序中并未加载的程序库等,往往会在系统调用上留下痕迹;而通过对系统调用的分析,可以及时发现软件行为的异常并检测出问题所在。
目前,现有已出现了一系列用来表示软件程序的正常行为的基于系统调用的软件行为模型,例如,最基本的N-gram模型、之后对其进行改进的Var-gram模型、以及后续的FSA(Inite State Automaton,有限状态自动机)模型等。相应地,现有的基于系统调用分析的软件行为评估方法中,主要是在获取软件程序的软件行为后,基于上述现有的基于系统调用的软件行为模型,根据其获取的软件程序的软件行为与上述软件行为模型中的正常行为之间的行为特征比对来判定软件行为的异常与否。其中,进行比对的行为特征具体是指软件行为模型中预先训练的系统调用序列。
虽然上述各评估模型采用的建模方式不同,例如,有的采用动态建模方式,动态跟踪监控软件,获取软件实时运行的痕迹,并以此进行动态训练;有的采用混合建模方式,对软件程序代码进行静态分析判断程序的内部流程的同时,还对实际监测的软件行为进行训练。但都主要是利用能够在一定程度上表征软件程序正常运行的系统调用序列来进行建模。例如,通过大量次数的正常运行,来获取一系列较为完善的软件程序正常运行时的正常行为轨迹,利用收集的轨迹进行知识总结,得到软件程序正常运行时的系统调用序列,并通过这些知识建立模型。
然而,由于动态的数据存在一定的误报几率,且系统调用序列并不能够全面表示软件行为,所以,无论是动态建模还是混合建模,若仅利用软件行为模型中预先总结出的系统调用序列来判定软件行为的正常与否,其存在评估准确度不高的不足。因此,有必要提供一种提高评估准确度的软件行为评估方法。
发明内容
本发明实施例提供了基于系统调用分析的软件行为评估方法和装置,提高评估准确度。
根据本发明的一个方面,提供了一种基于系统调用分析的软件行为评估方法,包括:
在监控到待评估的软件的一次软件行为后,获取所述软件的监控日志中针对该次软件行为记录的信息,并从中提取出每个系统调用的入口地址和返回地址,以及系统调用序列;
将提取出的系统调用序列与所述知识库中预先存储的所述软件的各系统调用子序列进行比较,根据比较结果确定提取出的系统调用序列的评估值;并
对于获取的信息中涉及的每个系统调用,根据该系统调用的入口地址和返回地址计算出该系统调用的内存相对偏移后,将计算出的该系统调用的内存相对偏移与知识库中预先存储的该系统调用的常见内存偏移进行比较,根据比较结果确定该系统调用的评估结果;
根据确定出的每个系统调用的评估结果,以及系统调用序列的评估值,对该次软件行为进行评估。
较佳地,所述知识库中的各系统调用子序列是预先对所述软件的若干次软件正常行为进行学习获取的;其中,对所述软件的一次软件正常行为进行学习的过程为:
在监控到所述软件的一次软件正常行为后,从所述软件的监控日志中的针对该次软件正常行为所记录的系统调用信息中提取出系统调用序列,作为本次学习过程中得到的所述软件的样本系统调用序列记录在所述知识库中;
将所述知识库中中记录的所述软件的各样本系统调用序列所共有的若干个子序列作为所述软件的系统调用子序列;
针对所述软件的每个系统调用子序列,将该系统调用子序列在所述软件的所有样本系统调用序列中出现的次数总和与所述软件的样本系统调用序列的个数的比值作为该系统调用子序列的评估因子;并将该系统调用子序列的评估因子对应该系统调用子序列存储在所述知识库中。
较佳地,所述对所述软件的一次软件正常行为进行学习的过程中还包括:
针对该次软件正常行为所包含的每个系统调用,从所述系统调用信息中提取出该系统调用的入口地址和返回地址,并根据提取出的返回地址和入口地址,计算出该系统调用的内存相对偏移,并作为本次学习过程中得到的该系统调用的常见内存偏移记录在所述知识库中。
较佳地,所述将提取出的系统调用序列与所述知识库中预先存储的各系统调用子序列进行比较,根据比较结果确定提取出的系统调用序列的评估值,具体包括:
将提取出的系统调用序列与所述知识库中预先存储的各系统调用子序列进行比较,从该系统调用序列中提取出与所述知识库中预先存储的系统调用子序列相同的子序列作为该系统调用序列中所包含的匹配子序列;并根据各系统调用子序列在所述知识库中的评估因子、各匹配子序列在该系统调用序列中出现的次数,计算出该系统调用序列的评估值。
较佳地,所述根据各系统调用子序列在所述知识库中的评估因子、各匹配子序列在该系统调用序列中出现的次数,计算出该系统调用序列的评估值,具体包括:
根据如下公式1,计算出该系统调用序列的评估值SQ:
(公式1)
式中,n为该系统调用序列中包含的匹配子序列的总数,Fi为第i个匹配子序列在该系统调用序列中出现的次数,sqi为第i个匹配子序列在所述知识库中的评估因子。
较佳地,所述将计算出的该系统调用的内存相对偏移与知识库中预先存储的该系统调用的常见内存偏移进行比较,根据比较结果确定该系统调用的评估结果,具体包括:
对于该系统调用序列中所包含的每个匹配子序列,针对该匹配子序列中所包含的每个系统调用,将该系统调用的内存相对偏移与知识库中预先存储的该系统调用的常见内存偏移进行比较,若该系统调用的内存相对偏移与所述知识库中预先存储的该系统调用的常见内存偏移相同,则将该系统调用评估为该匹配子序列中所包含的正常系统调用。
较佳地,所述根据确定出的每个系统调用的评估结果,以及系统调用序列的评估值,对该次软件行为进行评估,具体包括:
对于所述系统调用序列中所包含的每个匹配子序列,根据该匹配子序列中所包含每个系统调用的评估结果,统计出该匹配子序列中所包含的正常系统调用总数;并根据每个匹配子序列中所包含的系统调用总数、以及每个匹配子序列中所包含的正常系统调用总数,计算出该次软件行为的内存偏移评估值;
将计算出的该次软件行为的内存偏移评估值与系统调用序列的评估值的累加值作为该次软件行为的评估值;若该次软件行为的评估值小于所述知识库中预先存储的异常评估阈值,则评估该次软件行为为异常软件行为;其中,
根据如下公式2,计算出该次软件行为的内存偏移评估值:
(公式2)
式中,n为该系统调用序列中包含的匹配子序列总数,msci为第i个匹配子序列中所包含的正常系统调用总数,sci为第i个匹配子序列中所包含的系统调用总数,SC为该系统调用序列所包含的系统调用总数。
较佳地,在所述将该系统调用子序列的评估因子对应该系统调用子序列存储在所述知识库中之后,还包括:
对于所述软件的每个系统调用子序列,针对该系统调用子序列所包含的每个系统调用,将该系统调用的内存相对偏移与所述知识库中记录的该系统调用的常见内存偏移进行比较;若相同,则将该系统调用子序列的评估因子加上设定的加权因子,否则,将该系统调用子序列的评估因子减去设定的降权因子,得到该系统调用子序列的新的评估因子;以及
若该系统调用子序列的新的评估因子小于设定的评估因子阈值,则将该系统调用子序列及其评估因子从所述知识库中删除。
根据本发明的另一个方面,还提供了一种基于系统调用分析的软件行为评估装置,包括:
软件行为监控模块,用于在监控到待评估的软件的一次软件行为后,发送评估通知;
监控信息分析模块,用于接收到所述评估通知后,获取所述软件的监控日志中针对该次软件行为记录的信息,并从中提取出每个系统调用的入口地址和返回地址,以及系统调用序列进行输出;
序列评估模块,用于接收所述监控信息分析模块输出的系统调用序列后,将接收的系统调用序列与所述知识库中预先存储的所述软件的各系统调用子序列进行比较,根据比较结果确定接收的系统调用序列的评估值后进行输出;
系统调用评估模块,用于接收所述监控信息分析模块输出的各系统调用的入口地址和返回地址;针对每个系统调用,根据该系统调用的入口地址和返回地址计算出该系统调用的内存相对偏移后,将计算出的该系统调用的内存相对偏移与知识库中预先存储的该系统调用的常见内存偏移进行比较,根据比较结果确定该系统调用的评估结果后进行输出;
综合评估模块,用于根据所述系统调用评估模块输出的各系统调用的评估结果,以及所述序列评估模块输出的系统调用序列的评估值,对该次软件行为进行评估。
较佳地,所述装置还包括:
知识库训练模块,用于对所述软件的若干次软件正常行为进行学习;其中,对所述软件的一次软件正常行为进行学习的过程为:在监控到所述软件的一次软件正常行为后,从所述软件的监控日志中的针对该次软件正常行为所记录的系统调用信息中提取出系统调用序列、该次软件正常行为所包含的各系统调用的入口地址和返回地址,根据提取出的返回地址和入口地址,计算出该系统调用的内存相对偏移;将提取出的系统调用序列作为本次学习过程中得到的所述软件的样本系统调用序列记录在所述知识库中;并将计算出的各系统调用的内存相对偏移作为本次学习过程中得到的各系统调用的常见内存偏移记录在所述知识库中;将所述知识库中中记录的所述软件的各样本系统调用序列所共有的若干个子序列作为所述软件的系统调用子序列;针对所述软件的每个系统调用子序列,将该系统调用子序列在所述软件的所有样本系统调用序列中出现的次数总和与所述软件的样本系统调用序列的个数的比值作为该系统调用子序列的评估因子;并将该系统调用子序列的评估因子对应该系统调用子序列存储在所述知识库中。
本发明实施例的技术方案中,在获取待评估的软件的一次软件行为的系统调用序列、各系统调用的入口地址、返回地址后,可以将系统调用序列与知识库中预先存储的该待评估的软件的系统调用子序列进行比较,得到该待测系统调用序列的评估值;根据各系统调用内存相对偏移与知识库中预先存储的各系统调用的常见内存偏移之间的比较结果得到该次软件行为的内存偏移评估值;并根据确定出的该次软件行为的内存偏移评估值、以及系统调用序列的评估值,对该次软件行为进行评估。这样,相比现有基于系统调用分析的软件行为评估方法,本发明的技术方案,基于更为完善和准确的的正常行为知识库,并结合内存偏移与系统调用序列对软件行为评估的影响来判定软件行为是否为异常,大大提高了评估的准确度。
附图说明
图1为本发明实施例的软件行为评估知识库的训练方法流程示意图;
图2为本发明实施例的软件正常行为的评估值计算方法流程示意图;
图3为本发明实施例的软件行为评估方法流程示意图;
图4为本发明实施例的软件行为评估装置的结构示意图。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举出优选实施例,对本发明进一步详细说明。然而,需要说明的是,说明书中列出的许多细节仅仅是为了使读者对本发明的一个或多个方面有一个透彻的理解,即便没有这些特定的细节也可以实现本发明的这些方面。
本申请使用的“模块”、“系统”等术语旨在包括与计算机相关的实体,例如但不限于硬件、固件、软硬件组合、软件或者执行中的软件。例如,模块可以是,但并不仅限于:处理器上运行的进程、处理器、对象、可执行程序、执行的线程、程序和/或计算机。举例来说,计算设备上运行的应用程序和此计算设备都可以是模块。一个或多个模块可以位于执行中的一个进程和/或线程内。
本发明的发明人发现,现有基于系统调用分析的软件行为评估方法的评估准确度不高的主要原因在于:其仅采用用于表示软件正常行为的软件行为模型中的系统调用序列来判断软件行为是否异常。而事实上,软件行为模型中的系统调用序列并不能全面表示软件正常行为,系统调用的参数变化、内存偏移的变化等都能在一定程度上反映软件行为的异常。
因此,本发明人考虑,可以在建模上利用系统调用序列与内存偏移共同表示软件正常行为,以此更加准确的描述软件行为,使得训练出来的正常行为知识库更为完善和准确。这样,在监测到待评估的软件的一次软件行为后,可以获取针对该次软件行为记录的信息,从中获取该次软件行为的系统调用序列,各系统调用的入口地址、返回地址;继而,将系统调用序列与知识库中预先存储的该待评估的软件的系统调用子序列进行比较,得到该待测系统调用序列的评估值;根据各系统调用的内存相对偏移与知识库中预先存储的各系统调用的常见内存偏移之间的比较结果得到该次软件行为的内存偏移评估值;并根据确定出的该次软件行为的内存偏移评估值、以及系统调用序列的评估值,对该次软件行为进行评估。这样,相比现有基于系统调用分析的软件行为评估方法,本发明的技术方案,基于更为完善和准确的的正常行为知识库,并根据内存偏移与系统调用序列的结合来判定软件行为异常情况,大大提高了评估的准确度。
下面结合附图详细说明本发明的技术方案。
本发明实施例中,在对待评估的软件的软件行为进行评估之前,需预先对待评估的软件的若干次软件正常行为进行学习,训练得到基于系统调用的软件行为评估知识库;其中,该知识库中的表示待评估的软件的软件正常行为的各系统调用子序列、各系统调用子序列的评估因子、以及各系统调用子序列所包含的各系统调用的常见内存偏移均是对待评估的软件的若干次软件正常行为进行学习所获取的。而对于待评估的软件的一次软件正常行为的学习方法,如图1所示,具体可以包括如下步骤:
S101:在监控到待评估的软件的一次软件正常行为后,从该软件的监控日志中的针对该次软件正常行为所记录的系统调用信息中提取出系统调用序列、该次软件正常行为所包含的各系统调用的返回地址和入口地址。
具体地,可以采用函数调用监控工具对待评估的软件的程序进行跟踪监控,并形成记录有每次程序运行时留下的系统调用信息的监控日志;从中选择若干个针对软件正常行为所记录的监控日志。
S102:针对该次软件正常行为所包含的每个系统调用,根据提取出的该系统调用的返回地址和入口地址,计算出该系统调用的内存相对偏移,并作为本次学习过程中得到的该系统调用的常见内存偏移记录在知识库中。
S103:将提取出的系统调用序列作为本次学习过程中得到的待评估的软件的样本系统调用序列记录在知识库中。
S104:将知识库中中记录的待评估的软件的各样本系统调用序列所共有的若干个子序列作为该软件的系统调用子序列。
S105:针对待评估的软件的每个系统调用子序列,将该系统调用子序列在该软件的所有样本系统调用序列中出现的次数总和与该软件的样本系统调用序列的个数的比值作为该系统调用子序列的评估因子;并将该系统调用子序列的评估因子对应该系统调用子序列存储在知识库中。
作为一种更优的实施方式,实际应用中,为了提高各系统调用子序列的评估因子之间的区分度,在将系统调用子序列的评估因子对应该系统调用子序列存储在知识库中之后,还可以对于待评估的软件的每个系统调用子序列,针对该系统调用子序列所包含的每个系统调用,将该系统调用的内存相对偏移与知识库中记录的该系统调用的常见内存偏移进行比较,若相同,则将该系统调用子序列的评估因子加上设定的加权因子,否则,将该系统调用子序列的评估因子减去设定的降权因子,以此得到该系统调用子序列的新的评估因子。这样,能够进一步提高训练的知识库的准确度。其中,加权因子、降权因子均由本领域技术人员根据经验进行设定,例如,可以将加权因子、降权因子都设定为1。
更优的,为了进一步提高知识库中知识的准确度,还可以对于知识库中的知识进行筛选,例如,可以对于每个系统调用子序列,将该系统调用子序列的评估因子与设定的评估因子阈值进行比较,若该系统调用子序列的评估因子小于设定的评估因子阈值,则将该系统调用子序列及其评估因子从知识库中删除。相应的,在结合系统调用的内存相对偏移与常见内存偏移之间的比较之后所形成的新的评估因子之后,对于每个系统调用子序列,可以将该系统调用子序列的新的评估因子与设定的评估因子阈值进行比较,若该系统调用子序列的新的评估因子小于设定的评估因子阈值,则将该系统调用子序列及其评估因子从知识库中删除。
本发明实施例中,在训练基于系统调用的软件行为评估知识库的过程中,在对于监控的每次软件正常行为,从监控日志中针对该次软件正常行为所记录的系统调用信息中提取出该次软件正常行为所对应的系统调用序列、该系统调用序列所包含的各系统调用的返回地址和入口地址后,还可以计算出待评估的软件的每次软件正常行为的评估值。关于待评估的软件的一次软件正常行为的评估值的计算方法,如图2所示,具体可以包括如下步骤:
S201:在监控到待评估的软件的一次软件正常行为后,从该软件的监控日志中的针对该次软件正常行为所记录的系统调用信息中提取出系统调用序列、该次软件正常行为所包含的各系统调用的返回地址和入口地址。
S202:针对该次软件正常行为所包含的每个系统调用,根据提取出该系统调用的返回地址和入口地址,计算出该系统调用的内存相对偏移。
S203:从系统调用序列中提取出与知识库中之前存储的该待评估的软件的系统调用子序列相同的子序列作为匹配子序列;根据各系统调用子序列在知识库中的评估因子、各匹配子序列在该系统调用序列中出现的次数,计算出该系统调用序列的评估值。
S204:对于每个匹配子序列,针对该匹配子序列中所包含的每个系统调用,若该系统调用的内存相对偏移与知识库中之前存储的该匹配子序列所包含的该系统调用的常见内存偏移相同,则将该系统调用评估为该匹配子序列中所包含的正常系统调用。
S205:根据该系统调用序列所包含的系统调用总数、每个匹配子序列中所包含的系统调用总数、以及每个匹配子序列中所包含的正常系统调用总数,计算出该次软件正常行为的内存偏移评估值。
S206:将该次软件正常行为的内存偏移评估值与该系统调用序列的评估值的累加值作为该次软件正常行为的评估值。
基于上述基于系统调用的软件行为评估知识库,本发明实施例提供了一种基于系统调用分析的软件行为评估方法,具体流程如图3所示,包括如下步骤:
S301:在监控到待评估的软件的一次软件行为后,获取该软件的监控日志中针对该次软件行为记录的信息,并从中提取出每个系统调用的入口地址和返回地址,以及系统调用序列。
S302:将提取出的系统调用序列与知识库中预先存储的各系统调用子序列进行比较,根据比较结果确定提取出的系统调用序列的评估值。
具体地,可以将提取出的系统调用序列与知识库中预先存储的各系统调用子序列进行比较,从该系统调用序列中提取出与知识库中预先存储的系统调用子序列相同的子序列作为该系统调用序列中所包含的匹配子序列;并根据各系统调用子序列在知识库中的评估因子、各匹配子序列在该系统调用序列中出现的次数,计算出该系统调用序列的评估值。具体地,可以根据如下公式1,计算出该系统调用序列的评估值SQ:
(公式1)
式中,n为该系统调用序列中包含的匹配子序列的总数,Fi为第i个匹配子序列在该系统调用序列中出现的次数,sqi为第i个匹配子序列在知识库中的评估因子。实际应用中,利用上述公式1计算出系统调用序列的评估值之后,也可以对计算出的评估值进行优化,例如,可以将计算出的评估值再乘以一个经验值,使得后续根据该系统调用序列的评估值所计算出的软件行为的评估值的准确度更高。当然,也可以采用本领域技术人员所常用的技术手段来计算统调用序列的评估值,在此不再详述。
S303:对于获取的信息中涉及的每个系统调用,根据该系统调用的入口地址和返回地址计算出该系统调用的内存相对偏移。
S304:对于获取的信息中涉及的每个系统调用,将计算出的该系统调用的内存相对偏移与知识库中预先存储的该系统调用的常见内存偏移进行比较,根据比较结果确定该系统调用的评估结果。
具体地,对于提取的系统调用序列中所包含的每个匹配子序列,针对该匹配子序列中所包含的每个系统调用,将该系统调用的内存相对偏移与知识库中预先存储的该系统调用的常见内存偏移进行比较,若该系统调用的内存相对偏移与知识库中预先存储的该系统调用的常见内存偏移相同,则将该系统调用评估为该匹配子序列中所包含的正常系统调用。实际应用中,也可以将内存相对偏移与知识库中预先存储的该系统调用的常见内存偏移之间的偏移量在设定范围内的系统调用评估为该匹配子序列中所包含的正常系统调用。
S305:根据确定出的每个系统调用的评估结果,以及系统调用序列的评估值,对该次软件行为进行评估。
为了实现综合利用系统调用序列与内存偏移对软件行为进行评估,可以将各系统调用的内存相对偏移对软件行为的影响量化为该次软件行为的内存偏移评估值。具体地,对于系统调用序列中所包含的每个匹配子序列,可以根据该匹配子序列中所包含每个系统调用的评估结果,统计出该匹配子序列中所包含的正常系统调用总数;并根据每个匹配子序列中所包含的系统调用总数、以及每个匹配子序列中所包含的正常系统调用总数,计算出该次软件行为的内存偏移评估值。继而,可以根据确定出的该次软件行为的内存偏移评估值、以及系统调用序列的评估值,对该次软件行为进行评估。
例如,可以将确定出的该次软件行为的内存偏移评估值与系统调用序列的评估值的累加值作为该次软件行为的评估值,若该次软件行为的评估值小于知识库中预先存储的异常评估阈值,则评估该次软件行为为异常软件行为。其中,知识库中预先存储的异常评估阈值可以是知识库中训练的各次软件正常行为的评估值的最大值、或最小值、或均值。实际应用中,知识库中训练的各次软件正常行为的评估值,具体可以参考步骤S201-S206。
其中,可以根据如下公式2,计算出该次软件行为的内存偏移评估值:
(公式2)
式中,n为该系统调用序列中包含的匹配子序列总数,msci为第i个匹配子序列中所包含的正常系统调用总数,sci为第i个匹配子序列中所包含的系统调用总数,SC为该系统调用序列所包含的系统调用总数。
基于上述软件行为评估方法,本发明实施例提供了一种基于系统调用分析的软件行为评估装置,如图4所示,包括:软件行为监控模块401、监控信息分析模块402、序列评估模块403、系统调用评估模块404、以及综合评估模块405。
其中,软件行为监控模块401用于在监控到待评估的软件的一次软件行为后,向监控信息分析模块402发送评估通知。
监控信息分析模块402用于接收到软件行为监控模块401发送的评估通知后,获取待评估的软件的监控日志中针对该次软件行为记录的信息,并从中提取出每个系统调用的入口地址和返回地址,以及系统调用序列进行输出。
序列评估模块403用于接收监控信息分析模块402输出的系统调用序列后,将接收的系统调用序列与知识库中预先存储的待评估的软件的各系统调用子序列进行比较,根据比较结果确定接收的系统调用序列的评估值后进行输出。
具体地,序列评估模块403可以将提取出的系统调用序列与知识库中预先存储的各系统调用子序列进行比较,从该系统调用序列中提取出与知识库中预先存储的系统调用子序列相同的子序列作为该系统调用序列中所包含的匹配子序列;并根据各系统调用子序列在知识库中的评估因子、各匹配子序列在该系统调用序列中出现的次数,计算出该系统调用序列的评估值。其中,根据如下公式1,计算出该系统调用序列的评估值SQ:
(公式1)
式中,n为该系统调用序列中包含的匹配子序列的总数,Fi为第i个匹配子序列在该系统调用序列中出现的次数,sqi为第i个匹配子序列在知识库中的评估因子。
系统调用评估模块404用于接收监控信息分析模块402输出的各系统调用的入口地址和返回地址;针对每个系统调用,根据该系统调用的入口地址和返回地址计算出该系统调用的内存相对偏移后,将计算出的该系统调用的内存相对偏移与知识库中预先存储的该系统调用的常见内存偏移进行比较,根据比较结果确定该系统调用的评估结果后进行输出。
具体地,系统调用评估模块404可以对于序列评估模块403输出的该系统调用序列中所包含的每个匹配子序列,针对该匹配子序列中所包含的每个系统调用,将该系统调用的内存相对偏移与知识库中预先存储的该系统调用的常见内存偏移进行比较,若该系统调用的内存相对偏移与知识库中预先存储的该系统调用的常见内存偏移相同,则可以将该系统调用评估为该匹配子序列中所包含的正常系统调用。实际应用中,也可以将系统调用的内存相对偏移与知识库中预先存储的该系统调用的常见内存偏移之间的偏移量在设定范围内的系统调用评估为该匹配子序列中所包含的正常系统调用。
综合评估模块405用于根据系统调用评估模块404输出的各系统调用的评估结果,以及序列评估模块403输出的系统调用序列的评估值,对该次软件行为进行评估。
具体地,综合评估模块405可以根据系统调用评估模块404输出的各系统调用的评估结果,统计出每个匹配子序列中所包含的正常系统调用总数;并根据每个匹配子序列中所包含的系统调用总数、以及每个匹配子序列中所包含的正常系统调用总数,计算出该次软件行为的内存偏移评估值。例如,根据如下公式2,计算出该次软件行为的内存偏移评估值:
(公式2)
式中,n为该系统调用序列中包含的匹配子序列总数,msci为第i个匹配子序列中所包含的正常系统调用总数,sci为第i个匹配子序列中所包含的系统调用总数,SC为该系统调用序列所包含的系统调用总数。继而,再根据该次软件行为的内存偏移评估值、以及序列评估模块403输出的系统调用序列的评估值,对该次软件行为进行评估:将确定出的该次软件行为的内存偏移评估值与系统调用序列的评估值的累加值作为该次软件行为的评估值,若该次软件行为的评估值小于知识库中预先存储的异常评估阈值,则评估该次软件行为为异常软件行为。其中,知识库中预先存储的异常评估阈值可以是知识库中训练的各次软件正常行为的评估值的最大值、或最小值、或均值。实际应用中,知识库中训练的各次软件正常行为的评估值,具体可以参考步骤S201-S206。
更优地,本发明实施例中,基于系统调用分析的软件行为评估装置还包括:知识库训练模块406。
其中,知识库训练模块406用于对待评估的软件的若干次软件正常行为进行学习;其中,对该软件的一次软件正常行为进行学习的过程为:在监控到该软件的一次软件正常行为后,从该软件的监控日志中的针对该次软件正常行为所记录的系统调用信息中提取出系统调用序列、该次软件正常行为所包含的各系统调用的入口地址和返回地址,根据提取出的返回地址和入口地址,计算出该系统调用的内存相对偏移;将提取出的系统调用序列作为本次学习过程中得到的该软件的样本系统调用序列记录在知识库中;并将计算出的各系统调用的内存相对偏移作为本次学习过程中得到的各系统调用的常见内存偏移记录在知识库中;将知识库中中记录的该软件的各样本系统调用序列所共有的若干个子序列作为该软件的系统调用子序列;针对该软件的每个系统调用子序列,将该系统调用子序列在该软件的所有样本系统调用序列中出现的次数总和与该软件的样本系统调用序列的个数的比值作为该系统调用子序列的评估因子;并将该系统调用子序列的评估因子对应该系统调用子序列存储在知识库中。
本发明实施例中,关于基于系统调用分析的软件行为评估装置的各模块具体是如何实现待评估的软件的软件行为的评估,可以参照上述基于系统调用分析的软件行为评估方法中的各步骤的详细过程,在此不再详述。
由上述技术方案可知,在获取待评估的软件的一次软件行为的系统调用序列、各系统调用的入口地址、返回地址后,可以将系统调用序列与知识库中预先存储的该待评估的软件的系统调用子序列进行比较,得到该待测系统调用序列的评估值;根据各系统调用内存相对偏移与知识库中预先存储的各系统调用的常见内存偏移之间的比较结果得到该次软件行为的内存偏移评估值;并根据确定出的该次软件行为的内存偏移评估值、以及系统调用序列的评估值,对该次软件行为进行评估。这样,相比现有基于系统调用分析的软件行为评估方法,本发明的技术方案,基于更为完善和准确的的正常行为知识库,并根据内存偏移与系统调用序列的结合来判定软件行为异常情况,大大提高了评估的准确度。。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读取存储介质中,如:ROM/RAM、磁碟、光盘等。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (7)

1.一种基于系统调用分析的软件行为评估方法,其特征在于,包括:
在监控到待评估的软件的一次软件行为后,获取所述软件的监控日志中针对该次软件行为记录的信息,并从中提取出每个系统调用的入口地址和返回地址,以及系统调用序列;
将提取出的系统调用序列与知识库中预先存储的所述软件的各系统调用子序列进行比较,根据比较结果确定提取出的系统调用序列的评估值,该步骤具体包括:
将提取出的系统调用序列与所述知识库中预先存储的各系统调用子序列进行比较,从该系统调用序列中提取出与所述知识库中预先存储的系统调用子序列相同的子序列作为该系统调用序列中所包含的匹配子序列;并根据各系统调用子序列在所述知识库中的评估因子、各匹配子序列在该系统调用序列中出现的次数,计算出该系统调用序列的评估值;
对于获取的信息中涉及的每个系统调用,根据该系统调用的入口地址和返回地址计算出该系统调用的内存相对偏移后,将计算出的该系统调用的内存相对偏移与知识库中预先存储的该系统调用的常见内存偏移进行比较,根据比较结果确定该系统调用的评估结果;
根据确定出的每个系统调用的评估结果,以及系统调用序列的评估值,对该次软件行为进行评估。
2.如权利要求1所述的方法,其特征在于,所述知识库中的各系统调用子序列是预先对所述软件的若干次软件正常行为进行学习获取的;其中,对所述软件的一次软件正常行为进行学习的过程为:
在监控到所述软件的一次软件正常行为后,从所述软件的监控日志中的针对该次软件正常行为所记录的系统调用信息中提取出系统调用序列,作为本次学习过程中得到的所述软件的样本系统调用序列记录在所述知识库中;
将所述知识库中中记录的所述软件的各样本系统调用序列所共有的若干个子序列作为所述软件的系统调用子序列;
针对所述软件的每个系统调用子序列,将该系统调用子序列在所述软件的所有样本系统调用序列中出现的次数总和与所述软件的样本系统调用序列的个数的比值作为该系统调用子序列的评估因子;并将该系统调用子序列的评估因子对应该系统调用子序列存储在所述知识库中。
3.如权利要求2所述的方法,其特征在于,所述对所述软件的一次软件正常行为进行学习的过程中还包括:
针对该次软件正常行为所包含的每个系统调用,从所述系统调用信息中提取出该系统调用的入口地址和返回地址,并根据提取出的返回地址和入口地址,计算出该系统调用的内存相对偏移,并作为本次学习过程中得到的该系统调用的常见内存偏移记录在所述知识库中。
4.如权利要求1所述的方法,其特征在于,所述根据各系统调用子序列在所述知识库中的评估因子、各匹配子序列在该系统调用序列中出现的次数,计算出该系统调用序列的评估值,具体包括:
根据如下公式1,计算出该系统调用序列的评估值SQ:
式中,n为该系统调用序列中包含的匹配子序列的总数,Fi为第i个匹配子序列在该系统调用序列中出现的次数,sqi为第i个匹配子序列在所述知识库中的评估因子。
5.如权利要求1-3任一所述的方法,其特征在于,所述将计算出的该系统调用的内存相对偏移与知识库中预先存储的该系统调用的常见内存偏移进行比较,根据比较结果确定该系统调用的评估结果,具体包括:
对于该系统调用序列中所包含的每个匹配子序列,针对该匹配子序列中所包含的每个系统调用,将该系统调用的内存相对偏移与知识库中预先存储的该系统调用的常见内存偏移进行比较,若该系统调用的内存相对偏移与所述知识库中预先存储的该系统调用的常见内存偏移相同,则将该系统调用评估为该匹配子序列中所包含的正常系统调用。
6.如权利要求5所述的方法,其特征在于,所述根据确定出的每个系统调用的评估结果,以及系统调用序列的评估值,对该次软件行为进行评估,具体包括:
对于所述系统调用序列中所包含的每个匹配子序列,根据该匹配子序列中所包含每个系统调用的评估结果,统计出该匹配子序列中所包含的正常系统调用总数;并根据每个匹配子序列中所包含的系统调用总数、以及每个匹配子序列中所包含的正常系统调用总数,计算出该次软件行为的内存偏移评估值;
将计算出的该次软件行为的内存偏移评估值与系统调用序列的评估值的累加值作为该次软件行为的评估值;若该次软件行为的评估值小于所述知识库中预先存储的异常评估阈值,则评估该次软件行为为异常软件行为;其中,
根据如下公式2,计算出该次软件行为的内存偏移评估值:
式中,n为该系统调用序列中包含的匹配子序列总数,msci为第i个匹配子序列中所包含的正常系统调用总数,sci为第i个匹配子序列中所包含的系统调用总数,SC为该系统调用序列所包含的系统调用总数。
7.如权利要求2所述的方法,其特征在于,在所述将该系统调用子序列的评估因子对应该系统调用子序列存储在所述知识库中之后,还包括:
对于所述软件的每个系统调用子序列,针对该系统调用子序列所包含的每个系统调用,将该系统调用的内存相对偏移与所述知识库中记录的该系统调用的常见内存偏移进行比较;若相同,则将该系统调用子序列的评估因子加上设定的加权因子,否则,将该系统调用子序列的评估因子减去设定的降权因子,得到该系统调用子序列的新的评估因子;以及
若该系统调用子序列的新的评估因子小于设定的评估因子阈值,则将该系统调用子序列及其评估因子从所述知识库中删除。
CN201410240265.9A 2014-05-30 2014-05-30 基于系统调用分析的软件行为评估方法和装置 Active CN104035866B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410240265.9A CN104035866B (zh) 2014-05-30 2014-05-30 基于系统调用分析的软件行为评估方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410240265.9A CN104035866B (zh) 2014-05-30 2014-05-30 基于系统调用分析的软件行为评估方法和装置

Publications (2)

Publication Number Publication Date
CN104035866A CN104035866A (zh) 2014-09-10
CN104035866B true CN104035866B (zh) 2017-10-10

Family

ID=51466639

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410240265.9A Active CN104035866B (zh) 2014-05-30 2014-05-30 基于系统调用分析的软件行为评估方法和装置

Country Status (1)

Country Link
CN (1) CN104035866B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109815701B (zh) * 2018-12-29 2022-04-22 奇安信安全技术(珠海)有限公司 软件安全的检测方法、客户端、系统及存储介质
CN110198299B (zh) * 2019-03-07 2021-08-17 腾讯科技(深圳)有限公司 一种入侵检测方法和装置
WO2024112272A1 (en) * 2022-11-24 2024-05-30 Telefonaktiebolaget Lm Ericsson (Publ) Using memory page offsets to detect cybersecurity attacks

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102768638A (zh) * 2012-05-18 2012-11-07 北京工业大学 基于状态转移图的软件行为可信性检测方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102768638A (zh) * 2012-05-18 2012-11-07 北京工业大学 基于状态转移图的软件行为可信性检测方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于行为层次关系分析的入侵检测模型的研究;杨慧锋;《中国知网》;20131201;第14-27页及第28-38页 *

Also Published As

Publication number Publication date
CN104035866A (zh) 2014-09-10

Similar Documents

Publication Publication Date Title
US10354197B2 (en) Pattern analytics for real-time detection of known significant pattern signatures
CN112702342B (zh) 网络事件处理方法、装置、电子设备及可读存储介质
CN110474871B (zh) 一种异常账号检测方法、装置、计算机设备及存储介质
CN110912884A (zh) 一种检测方法、设备及计算机存储介质
US20170139759A1 (en) Pattern analytics for real-time detection of known significant pattern signatures
CN113992340B (zh) 用户异常行为识别方法、装置、设备和存储介质
CN104035866B (zh) 基于系统调用分析的软件行为评估方法和装置
CN110798428A (zh) 一种账号暴力破解行为的检测方法、系统及相关装置
CN118093329B (zh) 基于事件驱动的微服务监控告警方法及系统
CN110858072A (zh) 设备运行状态的确定方法及装置
CN115952446A (zh) 一种火箭发动机稳态振动响应预测方法、装置及设备
US10984105B2 (en) Using a machine learning model in quantized steps for malware detection
CN117972596B (zh) 一种基于操作日志的风险预测方法
CN116861364B (zh) 基于erp系统的数据处理方法与系统
CN115705413A (zh) 异常日志的确定方法及装置
CN107800683A (zh) 一种挖掘恶意ip的方法及装置
CN115664868A (zh) 安全等级确定方法、装置、电子设备和存储介质
CN116484390A (zh) 一种基于元数据和动态插桩技术的堆漏洞攻击检测方法、设备及介质
CN115964701A (zh) 应用安全检测方法、装置、存储介质及电子设备
CN115242457A (zh) 一种日志数据的检测方法、装置、电子设备和存储介质
CN112541177A (zh) 一种基于数据安全的异常检测方法及系统
CN110162806B (zh) 一种仿真误差评估方法及系统
WO2021074995A1 (ja) 閾値取得装置、その方法、およびプログラム
WO2020245968A1 (ja) 異常兆候検知装置、異常兆候検知方法、及び、異常兆候検知プログラム
EP3457609B1 (en) System and method for computing of anomalies based on frequency driven transformation and computing of new features based on point anomaly density

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant