一种基于系统调用的软件行为评估方法

文档序号:9765888阅读:479来源:国知局
一种基于系统调用的软件行为评估方法
【技术领域】
[0001] 本发明属于计算机软件技术领域,具体设及一种基于系统调用的软件行为评估方 法。
【背景技术】
[0002] 现有的软件行为评估模型,依据其采集系统调用的方式的不同可W分为如下3类: 动态模型、静态模型和混合模型,运=种模型对应的收集系统调用的方式分别是动态,静态 W及混合。
[0003] 静态建模的方法指不对程序进行执行,但是直接分析程序的二进制代码或者程序 的源代码,从分析的结果里面捜集到所需要的系统调用等信息,进而建立模型。
[0004] 动态建模的方法需要大量的数据来支撑,可W对程序进行大量的正常运行,在运 行过程中对程序的系统调用进行监控和记录,从而生成模型,该模型是依赖外部输入的。 [000引Dyck模型是第一个动态和静态相结合的模型,即混合模型,该模型是被Giffin提 出的。该异常检测系统会按照某种特定的规则对二进制代码进行重新写,运样,重写后的二 进制可W使生成的模型更加完备。然后运行重写后的可执行文件,对运行过程进行实时的 监控,检测该程序的行为,然后查看自己建立的模型,看检测得到的结果是否与模型吻合。
[0006] 其中现有的一种模型为隐马尔科夫模型,通过建立隐马尔科夫模型来对软件行为 进行评估。
[0007] 其中隐马尔科夫模型由5部分组成,分别为:
[0008] 隐含状态S:无法直接观察得到的状态,但是运些状态之间的关系是满足马尔科夫 的性质的。
[0009] 可观测状态0:可W直接观测得到的状态,运些状态是与W上提到的隐含状态相关 联的,虽然关联,但是0的个数不一定和S的个数相同。
[0010] 初始矩阵31:表示在初始时刻,W上提到的隐含状态S的概率矩阵,例如,在时刻t = 1时,P(Si) =Pi,则此时JT= [P1,化…化]。
[0011] 隐含状态转移矩阵A:是指从一个状态转移到另一个状态的概率矩阵,例如,Au = P (Sj I Si)就表示状态Si转移为Sj的概率。
[0012] 观测状态转移矩阵B:表示在隐含状态是某条件下观测状态为某状态的概率,例 如,Bu = P(化I &),表示隐含状态&条件下观测状态为化的概率。
[0013] 评估问题解决的是如果给出了某个观测序列和特定的模型参数,从而计算出该观 测序列在给出的运个模型下出现的概率,该问题是异常检测的关键问题,也就是说,异常检 测就是检测给定的观测序列,在良性执行软件后形成的马尔科夫模型中出现的概率,从而 评估运个概率的大小来确定被检测的运个观测序列是不是软件正常执行产生的。向前算法 (forward)是用来计算给定观测序列在训练形成的马尔科夫模型下出现的概率PIOlM的算 法。W下是PIOlM的算法:
[0014] 定义向前变量at(i)为:
[0015] at(i)=P{〇i〇2〇3'''〇t,H(t) = SilW
[0016] 上式中,某个参数模型A和部分观测序列O1O2O3…〇T,并且t时刻的时候,状态为Si 的几率。可用递归法解得at(i),其步骤如下:
[0017] 1)将 at(i)初始化:ai(i)= Wibi(Oi)
[0018] 2)递归法计算:而1 (./') = [i>, (0。,-, A 化1),其中如; /=1
[0019] 3)最后计算:巧 = /=1
[0020] 给定某观测序列和某模型参数,从而找到依照某种原则的情况下隐含状态。
[0021] 状态最优的情况,解码问题其实就是找到隐含状态最优解的问题,解码问题中,常 用维特比,即Viterbi,算法来寻找答案。
[0022] 给定模型参数人=(A,B,3t巧的见察序列〇1〇2〇3..价,在运里假设在T时刻,让P(Q,01人)的取值 能够变成最大的状就的值知,则记p(Q,〇i入}为見I;!品;貫在
[002引在运里,定义辅助变量Sw(j): Sw(j) = [maxSt(i )aij]bj(Ot+1)
[0024] 要想找到最优的隐含状态序列,需要记录每个能让P(Q,〇| A)的取值变成最大的状 态值,所W,在运里,还需要定义一个状态回溯公式:恥+1( j) =argmaxSt(i)aijbj(〇t+i)
[0025] 如果不知道隐马尔科夫模型的参数,怎样设定模型里面的参数才能让给出的观察 序列的概率实现最大化的效果,一般采用Baum-WeIch和Reversed Viterbi算法来找到答 案。
[0026] 首先定义前向变量和后向变量:at(i) = P(〇i〇2'''〇t,qt=Si I A) ;Pt(i ) = P(〇t+ l〇t+2...〇T,Clt = Si I 入);
[0027] 然后给出隐马尔科夫模型参数A和观测序列0,并且t时刻的时候,隐藏状态为Si的 几率大小为:
[0028] 在某隐马尔科夫模型参数和某观察序列的条件下,t运个时刻是状态Si,与此同 时,t+1运个时刻是状态Sj的概率大小记为W下值:Ct (i , j)-p (qt-Si, qt+1-Sj I 0,入)
[0029] W上定义的两个概率变量也存在一定关系:^妈= £《〇'J)。 ?/=1
[0030] 现有的隐马尔科夫模型在生成模型时,通常把所有的系统调用当做可能的观察 值,系统调用序列当做观察值序列,软件的安全状态和不安全状态作为隐马尔可夫模型中 的两个隐藏状态,由于系统调用本身数量众多,加之对软件的一个操作有可能又很多系统 调用序列组成,所W生成模型的时间消耗较大,效率较低;同时,仅靠隐马尔科夫模型对软 件行为评估,最终得到的评估结果准确率有所偏差。在传统的软件行为动态分析建模的方 法中采用的软件系统调用序列与训练得到的软件系统调用序列知识库进行比对从而发现 软件此次行为异常的方法效率较低。

【发明内容】

[0031] 有鉴于此,本发明提供了一种基于系统调用的软件行为评估方法,目的是将隐马 尔科夫模型对软件行为的评估值与系统调用监测评估结果相结合对软件行为进行评估,得 到更加完善和准确的软件行为的评估结果。
[0032] 为了达到上述目的,本发明的技术方案包括如下步骤:
[0033] 步骤1、对软件执行进行监控,跟踪软件运行轨迹,并从中提取出软件运行时的系 统调用信息、模块入口地址和函数调用返回地址。
[0034] 步骤2、根据模块入口地址和系统调用函数返回地址计算出相对内存偏移量;利用 系统调用信息和相对内存偏移量形成的二元组和确认知识库中的标准二元组进行对比,得 到一个评估值,该评估值作为系统调用监测评估结果;确认知识库为由在软件正常运行过 程中形成的系统调用信息和相对内存偏移量的二元组组成的集合。
[0035] 步骤3通过隐马尔科夫模型评估得到的在正常的软件行为的模型下此次软件运行 出现的概率,作为模型评估结果,将系统调用监测评估结果和模型评估结果相结合作为软 件行为最终评估结果。
[0036] 进一步地,利用系统调用信息和相对内存偏移量形成的二元组和确认知识库中的 标准二元组进行对比,设定评估值初始为0,若系统调用信息或者相对内存偏移量与确认 知识库中的每一项标准二元组不同,则该软件的评估值减1,若系统调用信息和相对内存偏 移量与确认知识库中的其中一项标准二元组相同,则该软件的评估值加1。
[0037] 进一步地,系统调用信息中包括系统调用序列,则通过隐马尔科夫模型评估时,对 系统调用序列进行简化后输入到隐马尔科夫模型中,其中系统调用序列的简化过程如下:
[0038] 1)从系统调用序列中提取出长度为1的序列组成序列集。
[0039] 2)若序列集中长度为1的序列不少于2个,则在序列集中任意选取两个长度为1的 序列组成长度为2的序列,判断长度为2的序列的概率是否大于组成该长度为2的序列的任 意一个长度为1的序列概率的a倍,若是则将该长度为2的序列加入序列集中,否则舍弃该长 度为2的序列;若组成长度为2的序列的一个长度为1的序列的概率与该长度为2的序列的概 率相等,则将该长度化的序列从序列集中删除;a为预设值。
[0040] 3)若序列集中长度为2
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1