首页> 中国专利> 基于系统调用分析的软件行为评估方法和装置

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

摘要

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

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2017-10-10

    授权

    授权

  • 2014-10-15

    实质审查的生效 IPC(主分类):G06F11/36 申请日:20140530

    实质审查的生效

  • 2014-09-10

    公开

    公开

说明书

技术领域

本发明涉及软件技术,尤其涉及一种基于系统调用分析的软件行为评估 方法和装置。

背景技术

软件行为是指软件程序运行时的表现形态和状态演变的过程;从软件程 序的底层的二进制指令到高层的程序语句、系统调用、函数等都属于不同层 次的软件行为。当软件程序在遭到黑客攻击、木马攻击篡改以及人为异常操 作的时候,其内部流程往往会有所改变,即产生异常的软件行为。

事实上,由于系统调用是操作系统提供给应用程序访问系统资源的接口, 相应地,系统调用的状况在一定程度上能够反映软件程序的行为特征。这样, 当软件程序的软件行为发生异常时,例如,软件程序在运行过程中可能会加 载源程序中并未加载的程序库等,往往会在系统调用上留下痕迹;而通过对 系统调用的分析,可以及时发现软件行为的异常并检测出问题所在。

目前,现有已出现了一系列用来表示软件程序的正常行为的基于系统调 用的软件行为模型,例如,最基本的N-gram模型、之后对其进行改进的 Var-gram模型、以及后续的FSA(Inite State Automaton,有限状态自动机)模 型等。相应地,现有的基于系统调用分析的软件行为评估方法中,主要是在 获取软件程序的软件行为后,基于上述现有的基于系统调用的软件行为模型, 根据其获取的软件程序的软件行为与上述软件行为模型中的正常行为之间的 行为特征比对来判定软件行为的异常与否。其中,进行比对的行为特征具体 是指软件行为模型中预先训练的系统调用序列。

虽然上述各评估模型采用的建模方式不同,例如,有的采用动态建模方 式,动态跟踪监控软件,获取软件实时运行的痕迹,并以此进行动态训练; 有的采用混合建模方式,对软件程序代码进行静态分析判断程序的内部流程 的同时,还对实际监测的软件行为进行训练。但都主要是利用能够在一定程 度上表征软件程序正常运行的系统调用序列来进行建模。例如,通过大量次 数的正常运行,来获取一系列较为完善的软件程序正常运行时的正常行为轨 迹,利用收集的轨迹进行知识总结,得到软件程序正常运行时的系统调用序 列,并通过这些知识建立模型。

然而,由于动态的数据存在一定的误报几率,且系统调用序列并不能够 全面表示软件行为,所以,无论是动态建模还是混合建模,若仅利用软件行 为模型中预先总结出的系统调用序列来判定软件行为的正常与否,其存在评 估准确度不高的不足。因此,有必要提供一种提高评估准确度的软件行为评 估方法。

发明内容

本发明实施例提供了基于系统调用分析的软件行为评估方法和装置,提 高评估准确度。

根据本发明的一个方面,提供了一种基于系统调用分析的软件行为评估 方法,包括:

在监控到待评估的软件的一次软件行为后,获取所述软件的监控日志中 针对该次软件行为记录的信息,并从中提取出每个系统调用的入口地址和返 回地址,以及系统调用序列;

将提取出的系统调用序列与所述知识库中预先存储的所述软件的各系统 调用子序列进行比较,根据比较结果确定提取出的系统调用序列的评估值; 并

对于获取的信息中涉及的每个系统调用,根据该系统调用的入口地址和 返回地址计算出该系统调用的内存相对偏移后,将计算出的该系统调用的内 存相对偏移与知识库中预先存储的该系统调用的常见内存偏移进行比较,根 据比较结果确定该系统调用的评估结果;

根据确定出的每个系统调用的评估结果,以及系统调用序列的评估值, 对该次软件行为进行评估。

较佳地,所述知识库中的各系统调用子序列是预先对所述软件的若干次 软件正常行为进行学习获取的;其中,对所述软件的一次软件正常行为进行 学习的过程为:

在监控到所述软件的一次软件正常行为后,从所述软件的监控日志中的 针对该次软件正常行为所记录的系统调用信息中提取出系统调用序列,作为 本次学习过程中得到的所述软件的样本系统调用序列记录在所述知识库中;

将所述知识库中中记录的所述软件的各样本系统调用序列所共有的若干 个子序列作为所述软件的系统调用子序列;

针对所述软件的每个系统调用子序列,将该系统调用子序列在所述软件 的所有样本系统调用序列中出现的次数总和与所述软件的样本系统调用序列 的个数的比值作为该系统调用子序列的评估因子;并将该系统调用子序列的 评估因子对应该系统调用子序列存储在所述知识库中。

较佳地,所述对所述软件的一次软件正常行为进行学习的过程中还包括:

针对该次软件正常行为所包含的每个系统调用,从所述系统调用信息中 提取出该系统调用的入口地址和返回地址,并根据提取出的返回地址和入口 地址,计算出该系统调用的内存相对偏移,并作为本次学习过程中得到的该 系统调用的常见内存偏移记录在所述知识库中。

较佳地,所述将提取出的系统调用序列与所述知识库中预先存储的各系 统调用子序列进行比较,根据比较结果确定提取出的系统调用序列的评估值, 具体包括:

将提取出的系统调用序列与所述知识库中预先存储的各系统调用子序列 进行比较,从该系统调用序列中提取出与所述知识库中预先存储的系统调用 子序列相同的子序列作为该系统调用序列中所包含的匹配子序列;并根据各 系统调用子序列在所述知识库中的评估因子、各匹配子序列在该系统调用序 列中出现的次数,计算出该系统调用序列的评估值。

较佳地,所述根据各系统调用子序列在所述知识库中的评估因子、各匹 配子序列在该系统调用序列中出现的次数,计算出该系统调用序列的评估值, 具体包括:

根据如下公式1,计算出该系统调用序列的评估值SQ:

SQ=Σi=1n(Fi×sqi)          (公式1)

式中,n为该系统调用序列中包含的匹配子序列的总数,Fi为第i个匹配 子序列在该系统调用序列中出现的次数,sqi为第i个匹配子序列在所述知识库 中的评估因子。

较佳地,所述将计算出的该系统调用的内存相对偏移与知识库中预先存 储的该系统调用的常见内存偏移进行比较,根据比较结果确定该系统调用的 评估结果,具体包括:

对于该系统调用序列中所包含的每个匹配子序列,针对该匹配子序列中 所包含的每个系统调用,将该系统调用的内存相对偏移与知识库中预先存储 的该系统调用的常见内存偏移进行比较,若该系统调用的内存相对偏移与所 述知识库中预先存储的该系统调用的常见内存偏移相同,则将该系统调用评 估为该匹配子序列中所包含的正常系统调用。

较佳地,所述根据确定出的每个系统调用的评估结果,以及系统调用序 列的评估值,对该次软件行为进行评估,具体包括:

对于所述系统调用序列中所包含的每个匹配子序列,根据该匹配子序列 中所包含每个系统调用的评估结果,统计出该匹配子序列中所包含的正常系 统调用总数;并根据每个匹配子序列中所包含的系统调用总数、以及每个匹 配子序列中所包含的正常系统调用总数,计算出该次软件行为的内存偏移评 估值;

将计算出的该次软件行为的内存偏移评估值与系统调用序列的评估值的 累加值作为该次软件行为的评估值;若该次软件行为的评估值小于所述知识 库中预先存储的异常评估阈值,则评估该次软件行为为异常软件行为;其中,

根据如下公式2,计算出该次软件行为的内存偏移评估值:

Y=Σi=1nmscisciSC          (公式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:

SQ=Σi=1n(Fi×sqi)          (公式1)

式中,n为该系统调用序列中包含的匹配子序列的总数,Fi为第i个匹配 子序列在该系统调用序列中出现的次数,sqi为第i个匹配子序列在知识库中的 评估因子。实际应用中,利用上述公式1计算出系统调用序列的评估值之后, 也可以对计算出的评估值进行优化,例如,可以将计算出的评估值再乘以一 个经验值,使得后续根据该系统调用序列的评估值所计算出的软件行为的评 估值的准确度更高。当然,也可以采用本领域技术人员所常用的技术手段来 计算统调用序列的评估值,在此不再详述。

S303:对于获取的信息中涉及的每个系统调用,根据该系统调用的入口 地址和返回地址计算出该系统调用的内存相对偏移。

S304:对于获取的信息中涉及的每个系统调用,将计算出的该系统调用 的内存相对偏移与知识库中预先存储的该系统调用的常见内存偏移进行比 较,根据比较结果确定该系统调用的评估结果。

具体地,对于提取的系统调用序列中所包含的每个匹配子序列,针对该 匹配子序列中所包含的每个系统调用,将该系统调用的内存相对偏移与知识 库中预先存储的该系统调用的常见内存偏移进行比较,若该系统调用的内存 相对偏移与知识库中预先存储的该系统调用的常见内存偏移相同,则将该系 统调用评估为该匹配子序列中所包含的正常系统调用。实际应用中,也可以 将内存相对偏移与知识库中预先存储的该系统调用的常见内存偏移之间的偏 移量在设定范围内的系统调用评估为该匹配子序列中所包含的正常系统调 用。

S305:根据确定出的每个系统调用的评估结果,以及系统调用序列的评 估值,对该次软件行为进行评估。

为了实现综合利用系统调用序列与内存偏移对软件行为进行评估,可以 将各系统调用的内存相对偏移对软件行为的影响量化为该次软件行为的内存 偏移评估值。具体地,对于系统调用序列中所包含的每个匹配子序列,可以 根据该匹配子序列中所包含每个系统调用的评估结果,统计出该匹配子序列 中所包含的正常系统调用总数;并根据每个匹配子序列中所包含的系统调用 总数、以及每个匹配子序列中所包含的正常系统调用总数,计算出该次软件 行为的内存偏移评估值。继而,可以根据确定出的该次软件行为的内存偏移 评估值、以及系统调用序列的评估值,对该次软件行为进行评估。

例如,可以将确定出的该次软件行为的内存偏移评估值与系统调用序列 的评估值的累加值作为该次软件行为的评估值,若该次软件行为的评估值小 于知识库中预先存储的异常评估阈值,则评估该次软件行为为异常软件行为。 其中,知识库中预先存储的异常评估阈值可以是知识库中训练的各次软件正 常行为的评估值的最大值、或最小值、或均值。实际应用中,知识库中训练 的各次软件正常行为的评估值,具体可以参考步骤S201-S206。

其中,可以根据如下公式2,计算出该次软件行为的内存偏移评估值:

Y=Σi=1nmscisciSC          (公式2)

式中,n为该系统调用序列中包含的匹配子序列总数,msci为第i个匹配 子序列中所包含的正常系统调用总数,sci为第i个匹配子序列中所包含的系统 调用总数,SC为该系统调用序列所包含的系统调用总数。

基于上述软件行为评估方法,本发明实施例提供了一种基于系统调用分 析的软件行为评估装置,如图4所示,包括:软件行为监控模块401、监控信 息分析模块402、序列评估模块403、系统调用评估模块404、以及综合评估 模块405。

其中,软件行为监控模块401用于在监控到待评估的软件的一次软件行 为后,向监控信息分析模块402发送评估通知。

监控信息分析模块402用于接收到软件行为监控模块401发送的评估通 知后,获取待评估的软件的监控日志中针对该次软件行为记录的信息,并从 中提取出每个系统调用的入口地址和返回地址,以及系统调用序列进行输出。

序列评估模块403用于接收监控信息分析模块402输出的系统调用序列 后,将接收的系统调用序列与知识库中预先存储的待评估的软件的各系统调 用子序列进行比较,根据比较结果确定接收的系统调用序列的评估值后进行 输出。

具体地,序列评估模块403可以将提取出的系统调用序列与知识库中预 先存储的各系统调用子序列进行比较,从该系统调用序列中提取出与知识库 中预先存储的系统调用子序列相同的子序列作为该系统调用序列中所包含的 匹配子序列;并根据各系统调用子序列在知识库中的评估因子、各匹配子序 列在该系统调用序列中出现的次数,计算出该系统调用序列的评估值。其中, 根据如下公式1,计算出该系统调用序列的评估值SQ:

SQ=Σi=1n(Fi×sqi)          (公式1)

式中,n为该系统调用序列中包含的匹配子序列的总数,Fi为第i个匹配 子序列在该系统调用序列中出现的次数,sqi为第i个匹配子序列在知识库中的 评估因子。

系统调用评估模块404用于接收监控信息分析模块402输出的各系统调 用的入口地址和返回地址;针对每个系统调用,根据该系统调用的入口地址 和返回地址计算出该系统调用的内存相对偏移后,将计算出的该系统调用的 内存相对偏移与知识库中预先存储的该系统调用的常见内存偏移进行比较, 根据比较结果确定该系统调用的评估结果后进行输出。

具体地,系统调用评估模块404可以对于序列评估模块403输出的该系 统调用序列中所包含的每个匹配子序列,针对该匹配子序列中所包含的每个 系统调用,将该系统调用的内存相对偏移与知识库中预先存储的该系统调用 的常见内存偏移进行比较,若该系统调用的内存相对偏移与知识库中预先存 储的该系统调用的常见内存偏移相同,则可以将该系统调用评估为该匹配子 序列中所包含的正常系统调用。实际应用中,也可以将系统调用的内存相对 偏移与知识库中预先存储的该系统调用的常见内存偏移之间的偏移量在设定 范围内的系统调用评估为该匹配子序列中所包含的正常系统调用。

综合评估模块405用于根据系统调用评估模块404输出的各系统调用的 评估结果,以及序列评估模块403输出的系统调用序列的评估值,对该次软 件行为进行评估。

具体地,综合评估模块405可以根据系统调用评估模块404输出的各系 统调用的评估结果,统计出每个匹配子序列中所包含的正常系统调用总数; 并根据每个匹配子序列中所包含的系统调用总数、以及每个匹配子序列中所 包含的正常系统调用总数,计算出该次软件行为的内存偏移评估值。例如, 根据如下公式2,计算出该次软件行为的内存偏移评估值:

Y=Σi=1nmscisciSC          (公式2)

式中,n为该系统调用序列中包含的匹配子序列总数,msci为第i个匹配 子序列中所包含的正常系统调用总数,sci为第i个匹配子序列中所包含的系统 调用总数,SC为该系统调用序列所包含的系统调用总数。继而,再根据该次 软件行为的内存偏移评估值、以及序列评估模块403输出的系统调用序列的 评估值,对该次软件行为进行评估:将确定出的该次软件行为的内存偏移评 估值与系统调用序列的评估值的累加值作为该次软件行为的评估值,若该次 软件行为的评估值小于知识库中预先存储的异常评估阈值,则评估该次软件 行为为异常软件行为。其中,知识库中预先存储的异常评估阈值可以是知识 库中训练的各次软件正常行为的评估值的最大值、或最小值、或均值。实际 应用中,知识库中训练的各次软件正常行为的评估值,具体可以参考步骤 S201-S206。

更优地,本发明实施例中,基于系统调用分析的软件行为评估装置还包 括:知识库训练模块406。

其中,知识库训练模块406用于对待评估的软件的若干次软件正常行为 进行学习;其中,对该软件的一次软件正常行为进行学习的过程为:在监控 到该软件的一次软件正常行为后,从该软件的监控日志中的针对该次软件正 常行为所记录的系统调用信息中提取出系统调用序列、该次软件正常行为所 包含的各系统调用的入口地址和返回地址,根据提取出的返回地址和入口地 址,计算出该系统调用的内存相对偏移;将提取出的系统调用序列作为本次 学习过程中得到的该软件的样本系统调用序列记录在知识库中;并将计算出 的各系统调用的内存相对偏移作为本次学习过程中得到的各系统调用的常见 内存偏移记录在知识库中;将知识库中中记录的该软件的各样本系统调用序 列所共有的若干个子序列作为该软件的系统调用子序列;针对该软件的每个 系统调用子序列,将该系统调用子序列在该软件的所有样本系统调用序列中 出现的次数总和与该软件的样本系统调用序列的个数的比值作为该系统调用 子序列的评估因子;并将该系统调用子序列的评估因子对应该系统调用子序 列存储在知识库中。

本发明实施例中,关于基于系统调用分析的软件行为评估装置的各模块 具体是如何实现待评估的软件的软件行为的评估,可以参照上述基于系统调 用分析的软件行为评估方法中的各步骤的详细过程,在此不再详述。

由上述技术方案可知,在获取待评估的软件的一次软件行为的系统调用 序列、各系统调用的入口地址、返回地址后,可以将系统调用序列与知识库 中预先存储的该待评估的软件的系统调用子序列进行比较,得到该待测系统 调用序列的评估值;根据各系统调用内存相对偏移与知识库中预先存储的各 系统调用的常见内存偏移之间的比较结果得到该次软件行为的内存偏移评估 值;并根据确定出的该次软件行为的内存偏移评估值、以及系统调用序列的 评估值,对该次软件行为进行评估。这样,相比现有基于系统调用分析的软 件行为评估方法,本发明的技术方案,基于更为完善和准确的的正常行为知 识库,并根据内存偏移与系统调用序列的结合来判定软件行为异常情况,大 大提高了评估的准确度。。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤 是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读 取存储介质中,如:ROM/RAM、磁碟、光盘等。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普 通技术人员来说,在不脱离本发明原理的前提下,还可以作出若干改进和润 饰,这些改进和润饰也应视为本发明的保护范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号