首页> 中国专利> 伪装攻击检测中的模型训练方法和检测方法

伪装攻击检测中的模型训练方法和检测方法

摘要

本发明提供一种伪装攻击检测中的模型训练方法,包括:由合法用户正常行为的训练数据中的shell命令短序列生成多个具有不同长度的shell命令短序列流;一个所述shell命令短序列流包括有具有某一特定长度的shell命令短序列,所述长度为所述shell命令短序列中所含shell命令符号的个数;在各个shell命令短序列流中计算所含shell命令短序列在所在短序列流中的支持度;将shell命令短序列的支持度大小与所在shell命令短序列流的最小支持度参数进行比较,去除各个shell命令短序列流中支持度小于最小支持度参数的shell命令短序列,从而得到用于描述合法用户正常行为的序列库。本发明具有适应性广、稳定性高、容错能力强、检测准确度较高的优点。

著录项

  • 公开/公告号CN101702720A

    专利类型发明专利

  • 公开/公告日2010-05-05

    原文格式PDF

  • 申请/专利权人 中国科学院计算技术研究所;

    申请/专利号CN200910235890.3

  • 申请日2009-10-28

  • 分类号H04L29/06;H04L9/00;

  • 代理机构北京泛华伟业知识产权代理有限公司;

  • 代理人王勇

  • 地址 100190 北京市海淀区中关村科学院南路6号

  • 入库时间 2023-12-17 23:48:38

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2012-09-05

    授权

    授权

  • 2010-06-23

    实质审查的生效 IPC(主分类):H04L29/06 申请日:20091028

    实质审查的生效

  • 2010-05-05

    公开

    公开

说明书

技术领域

本发明涉及计算机网络安全领域,特别涉及伪装攻击检测中的模型训练方法和检测方法。

背景技术

伪装攻击是指非授权用户通过伪装成合法用户来获得访问关键数据或更高层访问权限的行为。近年来,伪装攻击在网络信息安全事件中的比例不断增长,成为对系统破坏最为严重的攻击方式之一。目前,伪装攻击检测在保障网络信息安全中发挥着越来越大的作用。

伪装攻击检测是当前网络安全领域研究的热点。由于合法用户的行为本身是变化的,且伪装用户的行为可能看起来是正常的,这种不确定性使得实现伪装攻击检测比传统的网络攻击检测更为困难。目前的伪装攻击检测方法和系统大多采用异常检测技术,这种技术对合法用户的正常行为进行建模,通过被监测用户的实际行为与合法用户正常行为之间的比较或匹配来检测攻击。采用异常检测技术的伪装攻击检测方法和系统的优点是不需要过多有关攻击行为的先验知识,且能够检测出未知的攻击类型;但与此同时,此类伪装攻击检测方法和系统也具有误报率高、检测效率难以满足高速网络实时检测需求等问题,从而会降低检测方法和系统的可用性。这也是影响此类伪装攻击检测方法和系统实际应用的主要因素。此外,由于用户行为的多变性,检测所需的训练数据往往不够充分,这就要求检测模型应当具有一定的容错性、泛化能力以及对用户行为变化的适应性。如何利用相对不够充分的训练数据来尽可能精确地描述用户的正常行为轮廓,以及如何利用该正常行为轮廓进行伪装攻击检测是当前主要的技术难点。

目前,在以Unix或Linux平台上shell命令为审计数据的用户伪装攻击检测方法中,基于神经网络、支撑矢量机或隐马尔可夫模型来描述用户的正常行为轮廓是主流的做法。与一般的异常检测方法相类似,此类方法存在的主要问题是对用户行为变化缺乏适应性,检测性能的稳定性和容错能力不够强,检测准确度也有待提高。

发明内容

本发明的目的是克服现有伪装攻击检测方法对用户行为变化缺乏适应性、检测性能的稳定性和容错能力不够强、检测准确度不高的缺陷,从而提供一种适应性广、稳定性高、容错能力强、检测准确度较高的伪装攻击检测方法。

为了实现上述目的,本发明提供了一种伪装攻击检测中的模型训练方法,包括:

步骤1)、由合法用户正常行为的训练数据中的shell命令短序列生成多个具有不同长度的shell命令短序列流;一个所述shell命令短序列流包括有具有某一特定长度的shell命令短序列,所述长度为所述shell命令短序列中所含shell命令符号的个数;

步骤2)、在各个shell命令短序列流中计算所含shell命令短序列在所在短序列流中的支持度;

步骤3)、将shell命令短序列的支持度大小与所在shell命令短序列流的最小支持度参数进行比较,去除各个shell命令短序列流中支持度小于最小支持度参数的shell命令短序列,从而得到用于描述合法用户正常行为的序列库。

上述技术方案中,所述的步骤1)包括:

步骤1-1)、设定滑动窗口的大小;

步骤1-2)、利用所述滑动窗口在所述训练数据的shell命令短序列中逐步截取shell命令符号,得到具有相同长度的shell命令短序列,组成所述的shell命令短序列流;

步骤1-3)、改变滑动窗口的大小后重新执行步骤1-2),直到滑动窗口的大小已经涵盖所有shell命令短序列的长度。

上述技术方案中,在所述的步骤2)中,对所述支持度的计算采用如下公式:

support(S+i)=number(S+i)/(r-l(i)+1)

其中,number(S+i)表示shell命令短序列S+i在shell命令短序列流Si的r-l(i)+1个shell命令短序列中的出现次数;support(S+i)表示短序列S+i在Si中的支持度。

本发明还提供了一种伪装攻击检测方法,采用所述的模型训练方法所得到的用于描述合法用户正常行为的序列库实现伪装攻击检测;该方法包括:

步骤1)、由被监测用户的审计数据生成多个具有不同长度的shell命令短序列流;一个所述shell命令短序列流包括有具有某一特定长度的shell命令短序列,所述长度为所述shell命令短序列中所含shell命令符号的个数;

步骤2)、将步骤1)所得到的多个shell命令短序列流与所述用于描述合法用户正常行为的序列库进行比较,实现行为模式的匹配,得到多个匹配结果序列;

步骤3)、由所述的匹配结果序列生成参考判决值,根据参考判决值对被监测用户的行为是否异常作出判决。

上述技术方案中,所述的步骤2)包括:

步骤2-1)、将一shell命令短序列流中的某一shell命令短序列与所述用于描述合法用户正常行为的序列库中的各个序列进行匹配,当该shell命令短序列与所述序列库中的某一序列相同,则该shell命令短序列为正常行为模式序列,并做相应标记;否则,该shell命令短序列为异常行为模式序列,并做相应标记;

步骤2-2)、对该shell命令短序列流中的所有shell命令短序列重复执行步骤2-1),由所述标记得到该shell命令短序列流的匹配结果序列;

步骤2-3)、对由被监测用户的审计数据所生成的所有shell命令短序列流重复执行上述步骤,得到多个匹配结果序列。

上述技术方案中,在所述的步骤3)中,对多个所述的匹配结果序列做加窗平滑处理,从而得到多个与匹配结果序列相对应的参考判决值。

上述技术方案中,在所述的步骤3)中,所述的根据参考判决值对被监测用户的行为是否异常作出判决包括:

步骤3-1-1)、设定W个判决门限a1、a2、...、aW

步骤3-1-2)、设定变量k的初始值为1;

步骤3-1-3)、如果Dk(j)≤ak,则将被监测用户的当前行为判定为伪装攻击行为,并不再执行后续步骤,否则,执行后续步骤;其中,Dk(j)为长度为l(k)的shell命令短序列流所对应的参考判决值,l(k)表示第k种shell命令短序列的长度;

步骤3-1-4)、如果k<W,则变量k的值增加1,并返回执行前一步骤,如果k=W,则执行下一步;

步骤3-1-5)、如果Dk(j)>ak,则将被监测用户的当前行为判为正常行为,否则,将被监测用户的当前行为判为伪装攻击行为。

上述技术方案中,所述的步骤3-1-1)包括:

步骤3-1-1-1)、设定变量k的初始值为1,并确定期望虚警概率的上限q;

步骤3-1-1-2)、使用Dk(j)作为最终判决值,并令q(k)=q/W,然后利用所获得的训练数据通过交叉验证的方法来得到期望虚警概率q(k)所对应的判决门限p(k),其中,q(k)表示Dk(j)作为最终判决值时此种判决方案所容忍的最大虚警概率;

步骤3-1-1-3)、将变量k的值加1,然后判断k的值是否小于或等于W,如果是,返回上一步,否则,执行下一步;

步骤3-1-1-4)、设定变量i的初始值为1,对于1≤k≤W,令ak(i)=p(k);

步骤3-1-1-5)、设定判决门限的增量b;

步骤3-1-1-6)、将变量i的值加1,对于1≤k≤W,令ak(i)=p(k)+b;

步骤3-1-1-7)、将a1(i),a2(i),...,aW(i)作为W个判决门限,其中ak(i)与Dk(j)相对应,然后利用训练数据通过交叉验证的方法测试虚警概率u(i);

步骤3-1-1-8)、如果u(i)>q,则对于1≤k≤W,令ak=ak(i-1);如果u(i)=q,则对于1≤k≤W,令ak=ak(i);如果u(i)<q,则重新执行步骤3-1-1-6)。

上述技术方案中,在所述的步骤3)中,所述的根据参考判决值对被监测用户的行为是否异常作出判决包括:

步骤3-2-1)、设定判决门限a;

步骤3-2-2)、从参考判决值D1(j)、D2(j)、...、DW(j)中选取一个Dk(j)作为最终判决值;

步骤3-2-3)、将所选定的Dk(j)与所设定的判决门限a进行比较,如果Dk(j)>a,将被监测用户的当前行为判为正常行为,如果Dk(j)≤a,将被监测用户的当前行为判为伪装攻击行为。

上述技术方案中,所述的步骤3-2-1)包括:

将获得的正常行为训练数据反复交叉地按固定比例分成两部分,一部分用于训练,另一部分用于测试虚警概率和判决门限;在测试中通过调整判决门限来得到不同虚警概率与不同判决门限的对应关系,并将期望虚警概率所对应的判决门限作为实际检测时的门限a。

本发明的优点在于:

适应性广、稳定性高、容错能力强、检测准确度较高。

附图说明

图1为本发明的伪装攻击检测方法在训练阶段的流程图;

图2为本发明的伪装攻击检测方法在检测阶段的流程图;

图3为本发明的伪装攻击检测方法中根据判决值判决用户当前行为的一种实现方式的流程图;

图4为本发明的伪装攻击检测方法中根据判决值判决用户当前行为的另一种实现方式的流程图;

图5为本发明的伪装攻击检测方法中设定判决门限的一种实现方式的流程图;

图6(a)为合法用户user4对应的判决值D1(j)的曲线;

图6(b)为伪装用户user1对应的判决值D1(j)的曲线;

图6(c)为伪装用户user2对应的判决值D1(j)的曲线;

图6(d)为伪装用户user3对应的判决值D1(j)的曲线;

图7(a)为合法用户user4对应的判决值D2(j)的曲线;

图7(b)为伪装用户user1对应的判决值D2(j)的曲线;

图7(c)为伪装用户user2对应的判决值D2(j)的曲线;

图7(d)为伪装用户user3对应的判决值D2(j)的曲线;

图8(a)为合法用户user4对应的判决值D3(j)的曲线;

图8(b)为伪装用户user1对应的判决值D3(j)的曲线;

图8(c)为伪装用户user2对应的判决值D3(j)的曲线;

图8(d)为伪装用户user3对应的判决值D3(j)的曲线。

具体实施方式

下面结合附图和具体实施方式对本发明进行说明。

本发明的伪装攻击检测方法是基于Unix或Linux平台上的shell命令实现的,因此在下面的实施例中,将以Linux平台为例,对如何利用被监测用户在该平台上运行的shell命令实现伪装攻击检测进行说明。但本领域技术人员应当了解,在下面说明中所提到的方法同样适用于Unix平台。

本发明的伪装攻击检测方法可分为训练和检测两个阶段,训练阶段的主要工作是根据训练数据对合法用户的正常行为进行描述,进而建立合法用户的正常行为轮廓。检测阶段的工作是根据训练阶段所建立的合法用户的正常行为轮廓,利用相应的检测模型来识别被监测用户当前行为中是否存在伪装攻击或假冒行为。

无论是训练阶段还是检测阶段,都涉及到对用户所执行的原始shell命令的预处理,出于方便说明的考虑,在对训练阶段和检测阶段分别说明前,首先对预处理过程加以描述。

对原始shell命令数据的预处理是要去除命令中不必要的信息,只保留那些与伪装攻击检测有关的信息。在一种滤除实现方式中,在预处理过程中可以只保留shell命令的名称,滤除shell命令数据中的参数和时间等信息。在另一种滤除实现方式中,除了要保留shell命令的名称外,还要保留命令中的参数,滤除包括主机名、网址在内的其它信息。由于对原始shell命令数据的预处理通常不是对单个或少数几个shell命令数据的处理,而是对由若干个shell会话所组成的shell命令数据集的处理,因此,无论是前述何种滤除实现方式,在滤除所得到的结果中,各命令符号按照在shell会话中的出现次序进行排列,不同的shell会话按照时间顺序进行连接,在每个会话开始和结束的时间点上插入标识符号。例如,对某用户的一个shell会话原始命令行数据:

(>cd~/private/docs>ls-laF|more>cat foo.txt bar.txt zlg.txt>~/tian/zly>mailx tianxg@sina.com>exit)。

经前述后一种方式预处理后生成如下shell命令序列:

(*SOF*,cd,<1>,ls,-laF,|,more,cat,<3>,>,<1>,mailx,<1>,exit,*EOF*)。

其中,*SOF*和*EOF*分别是会话开始和结束的标识符号,<1>、<3>为目录名或地址符号。

经过以上两种滤除实现方式预处理后的原始shell命令数据在形式上均表现为shell命令序列,也就是按时序排列的若干个shell命令符号。相对于前一种方式,采用后一种方式预处理后的数据中互不相同的shell命令符号明显增多,但能够更加精确地反映用户行为,因此优选这一滤除实现方式。但无论是采用前述何种滤除实现方式,对本发明以下步骤的实现并不造成影响。

在对训练阶段和检测阶段共有的预处理过程做上述说明后,按照时间的先后顺序先对训练阶段进行说明。

在前面的说明中已经提到,训练阶段是要根据训练数据建立合法用户的正常行为轮廓。因此,训练阶段首先需要有训练数据,且该训练数据是合法用户正常行为的训练数据。合法用户正常行为的训练数据可通过对合法用户在历史上正常操作时所执行的原始shell命令数据进行预处理得到。预处理所得到的结果是shell命令序列,因此可用R=(s1,s2,...,sr)表示合法用户正常行为的训练数据,其中,r代表长度,sj表示按时间顺序排列的第j个shell命令符号。

训练阶段除了要有训练数据外,还要有包括短序列个数W,序列长度l(1)、l(2)、...、l(W),以及最小支持度参数minsup(1)、minsup(2)、...、minsup(W)在内的多个参数的具体取值。这些值可以由用于管理检测过程的管理员自行设定,上述参数的含义及作用将在下文中予以说明。

在前面的说明中已经提到,训练数据是由shell命令符号所组成的序列,在该序列中将按时间顺序排列的连续若干个shell命令符号组合在一起可形成shell命令短序列。shell命令短序列可用来表示前述合法用户的行为模式,一个shell命令短序列中所包含的shell命令符号的个数也被称为该shell命令短序列的长度。为了更加全面地表示合法用户的各种行为模式,根据长度对shell命令短序列进行分类。为了便于识别,shell命令短序列的类别按照长度依次编号,例如,第一类的shell命令短序列的长度小于第二类的shell命令短序列的长度。假设用W表示shell命令短序列的种类数目,则shell命令短序列长度的集合可表示为C={l(1),l(2),……l(W)},其中l(i)表示第i种shell命令短序列的长度,i是区间[1,W]中的自然数,且l(1)<l(2)<……<l(W)。

在确定shell命令短序列的类别后,就可以由前面所得到的合法用户正常行为的训练数据R生成W个序列长度分别为l(1)、l(2)、...、l(W)的shell命令短序列流。此处所提到的shell命令短序列流是由具有相同序列长度的shell命令短序列组成的,在本实施例中,要得到所述的shell命令短序列流,可以先设定滑动窗口的大小,然后用该滑动窗口在训练数据中逐步截取shell命令符号,从而得到多个shell命令短序列,这些shell命令短序列组成了shell命令短序列流。上述过程中滑动窗口的大小就是shell命令短序列流中的shell命令短序列的长度。例如,在一个实例中,某一训练数据包括有100个shell命令符号,这些shell命令符号用1到100的数字表示。如果将当前滑动窗口的大小设为3,那么序列长度为3的shell命令短序列流包括{(符号1,符号2,符号3),(符号2,符号3,符号4),(符号3,符号4,符号5),......,(符号98,符号99,符号100)}。如果改变滑动窗口的大小,则可以得到其它序列长度的shell命令短序列流。需要说明的是,前面所提到的诸如“符号1”只是表示shell命令符号的位置,而不是shell命令符号的内容。因此,不同位置的符号的内容可能是一样的。例如,(符号1,符号2,符号3)所代表的shell命令短序列可能与(符号98,符号99,符号100)所代表的shell命令短序列的内容相同。

从上面的说明可以看出,一个训练数据R可以得到W个shell命令短序列流,出于说明方便的考虑,分别用S1、S2、...、SW表示由R生成的序列长度分别为l(1)、l(2)、...、l(W)的W个shell命令短序列流,其中Si是短序列长度为l(i)的shell命令短序列流(i是区间[1,W]中的自然数),Si包含r-l(i)+1个shell命令短序列;其中Sji是以shell命令sj为起点的长度为l(i)的短序列(1≤j≤r-l(i)+1),j是自然数。

在由训练数据得到shell命令短序列流后,还要在各个短序列流中计算所含shell命令短序列在所在短序列流中的支持度。结合前文所提到的数学标记,对支持度做如下定义:

一个长度为l(i)的shell命令短序列S+i在shell命令短序列流Si中的支持度等于该序列在Si中的出现次数除以Si中的序列总数(1≤i≤W),即:

support(S+i)=number(S+i)/(r-l(i)+1).

其中,number(S+i)表示短序列S+i在Si的r-l(i)+1个shell命令短序列中的出现次数;support(S+i)表示短序列S+i在Si中的支持度,support(S+i)描述了短序列S+i在短序列流Si中的出现概率。

在计算出shell命令短序列在其所在shell命令短序列流中的支持度以后,就可以根据支持度的大小对shell命令短序列加以选择,从而构成用于描述合法用户正常行为的序列库。要实现shell命令短序列的选择应当有相应的选择标准,根据这一选择标准从shell命令短序列流中找出能够用来反映合法用户正常行为的shell命令短序列。在本申请中,前文所提到的最小支持度参数就是这一选择标准。本申请为各个shell命令短序列流设置了对应的最小支持度参数,由于shell命令短序列流有W个,因此最小支持度参数也有W个,分别用minsup(1),minsup(2),...,minsup(W)表示,其中,minsup(i)是针对shell命令短序列流Si中长度为l(i)的短序列而设置的(1≤i≤W)。有了最小支持度参数以后,就可以比较shell命令短序列的支持度与最小支持度参数,一旦Si中某一shell命令短序列的支持度大于或等于最小支持度参数minsup(i),则该shell命令短序列就被提取出来,构成满足该支持度要求的序列库L(i)。设Si中支持度大于或等于minsup(i)的序列共有K(i)个,分别记为S1+i,S2+i,...,SK(i)+i(K(i)≤r-l(i)+1),则满足该支持度要求的序列库由于最小支持度参数一共有W个,因此,最后一共可以得到W个序列库来描述该合法用户的正常行为轮廓。这W个序列库组合在一起得到用于异常检测的正常序列库L,L={L(1),L(2),...,L(W)}。

由合法用户在历史上正常操作时所执行的原始shell命令数据得到用于异常检测的正常序列库L就是训练阶段所要完成的工作。训练阶段最后所得到的正常序列库的准确性与训练数据的充分性,短序列个数W,序列长度l(1)、l(2)、...、l(W),以及最小支持度参数minsup(1)、minsup(2)、...、minsup(W)参数的具体取值有关。

在训练阶段完成后,就要利用训练阶段所得到的结果来识别被监测用户当前行为中是否存在伪装攻击或假冒行为,这一过程由检测阶段实现。

与训练阶段不同的是,检测阶段所针对的用户不再是合法用户,而是被监测用户,所述被监测用户既可能是合法用户也可能是非法用户。在获取被监测用户的原始shell命令数据后,对这些数据进行预处理,得到shell命令序列,这一序列也被称为用于检测的审计数据。所述预处理的实现过程在前文中已经有详细的说明,因此不在此处重复。为了便于后续说明,假设预处理后得到的shell命令序列为R=(s1,s2,...,sr),其中sj表示按时间顺序排列的第j个shell命令符号,r为该命令序列的长度。在实时检测(在线检测)的情况下,R中的各个shell命令是按照时间顺序依次得到的。

在得到审计数据后,同样要由审计数据生成W个序列长度分别为l(1)、l(2)、...、l(W)的shell命令短序列流。这些shell命令短序列流的生成过程与训练阶段相类似,出于便于实时检测的需要,本实施例采用了滑动窗后向截取短序列的方式来生成shell命令短序列流。所得到的序列长度分别为l(1)、l(2)、...、l(W)的W个shell命令短序列流分别用S1、S2、...、SW表示,其中Si是短序列长度为l(i)(1≤i≤W)的shell命令短序列流。其中Sji是以shell命令sj为终点的长度为l(i)的短序列(l(i)≤j≤r);Si中共有r-l(i)+1个shell命令短序列。

由审计数据得到shell命令短序列流后,就可以将这些shell命令短序列流与训练阶段所得到的用于表示合法用户正常行为的正常序列库L进行比较,实现行为模式的匹配。由于在匹配过程中要做多次匹配,因此这一匹配过程也被称为多重行为模式匹配。所述的多重行为模式匹配具体包括:对于1≤i≤W,将shell命令短序列流中的每个shell命令短序列同相应的序列库中的序列进行匹配,如果短序列Sji与序列库L(i)中的某个短序列相同(即),则将短序列Sji视为正常行为模式序列,并记如果Sji与序列库L(i)中的任何一个短序列都不相同(即),则将短序列Sji视为异常行为模式序列,并记经过以上序列匹配,对于每一个shell命令短序列流可得到序列(class(Sl(i)i),class(Sl(i)+1i),...,classSri)),这一序列可以被称为匹配结果序列。

虽然通过前述的多重行为模式匹配已经得到匹配结果序列,但由于进行伪装攻击的用户在短时间内的行为可能与合法用户的正常行为没有太大差别,而在较长时间段内表现出的行为特征通常会较大程度地偏离合法用户的正常行为轮廓,因此,鉴于用户伪装攻击的以上特点,作为一种优选实现方式,在本实施例中并不直接利用class(Sji)进行判决,而是通过加窗平滑来得到参考判决值,进而对被监测用户的行为作出判决。具体的说,在对每个shell命令短序列流Si进行模式匹配之后,可对相应的序列(class(Sl(i)i),class(Sl(i)+1i),...,class(Sri))进行加窗平滑处理,得到如下判决值:

Di(j)=1eΣn=j-w+1jclass(Sni)

式中,e为窗长度,Di(j)表示shell命令短序列Sji对应的判决值,且e+l(i)-1≤j≤r;Di(j)反映了以Sji为终点的e个shell命令短序列中正常行为模式序列的比例;shell命令短序列流中第e+l(i)-1个短序列及其后面的每个短序列都分别对应一个判决值;对于W个shell命令短序列流S1、S2、...、S增长步长为1。

W,可以并行计算出判决值D1(j)、D2(j)、...、DW(j),其中j的增长步长为1。

在得到判决值以后,就可以利用判决值对被监测用户的当前行为进行判决。考虑到不同的用户对伪装攻击检测有不同的需求,如在某些情况下要求实时性高,而在其它情况下要求准确度高。针对上述不同需求,可以用不同的实现方式进行判决。

在一个实例中,要求有较高的准确度,此时,在实现判决时首先需要设定W个判决门限a1、a2、...、aW,然后参考图3并根据这些判决门限做如下操作。设定变量k的初始值为1(步骤301);如果Dk(j)≤ak,则将被监测用户的当前行为判定为伪装攻击行为,并不再执行后续步骤,否则,执行后续步骤(步骤302);如果k<W,则变量k的值增加1,并返回执行前一步骤,如果k=W,则执行下一步(步骤303);如果Dk(j)>ak,则将被监测用户的当前行为判为正常行为,否则,将被监测用户的当前行为判为伪装攻击行为(步骤304)。需要说明的是,在上述实现过程中,被监测用户的“当前行为”是相对于R=(s1,s2,...,sr)中shell命令sj对应的时间点而言的,它是指以sj为终点的若干个shell命令所对应的行为。此外,上述过程中所涉及的j≥e+l(W)-1,j的值每增加1,都要执行以上步骤来对被监测用户的当前行为做一次判决。

在另一个实例中,要求有较高的实时性,此时,在实现判决时首先需要设定一个判决门限a,然后参考图4并根据该判决门限做如下操作。从前面所得到的判决值D1(j)、D2(j)、...、DW(j)中选取一个Dk(j)作为最终判决值;将所选定的Dk(j)与所设定的判决门限a进行比较,如果Dk(j)>a,将被监测用户的当前行为判为正常行为,如果Dk(j)≤a,将被监测用户的当前行为判为伪装攻击行为。需要说明的是,被监测用户的“当前行为”是相对于R=(s1,s2,...,sr)中shell命令sj对应的时间点而言的,它是指以sj为终点的e+l(k)-1个shell命令所对应的行为,即sj-e-l(k)+2,sj-e-l(k)+3,...,sj所对应的行为。此外,上述过程中所涉及的j≥e+l(k)-1,也就是说,被监测用户执行完第e+l(k)-1个shell命令后才能对其行为做第一次判决。

在前文用于实现判决的两个实例中,所涉及的判决门限a1、a2、...、aW或判决门限a可由管理员自行设定,但在某些应用场合,如需要精确控制虚警概率的应用场合,为了提高伪装攻击检测的准确率,前述的判决门限的值通过计算的方式设定。

在用于实现判决的第一个实例中,可利用训练数据,基于交叉验证并通过等量迭代逼近的方式来设定所述的W个判决门限a1、a2、...、aW。如图5所示,具体的说,首先设定变量k的初始值为1,并确定期望虚警概率的上限q(步骤501);使用Dk(j)作为最终判决值,并令q(k)=q/W,然后利用所获得的训练数据通过交叉验证的方法来得到期望虚警概率q(k)所对应的判决门限p(k),其中,q(k)表示Dk(j)作为最终判决值时此种判决方案所容忍的最大虚警概率(步骤502);将变量k的值加1,然后判断k的值是否小于或等于W,如果是,返回上一步,否则,执行下一步(步骤503);设定变量i的初始值为1,对于1≤k≤W,令ak(i)=p(k)(步骤504);设定判决门限的增量b,所述的b是对p(k)而言较小的、可随意设置的值,一般来说,b设置得越小,结果越精确,但迭代速度越慢(步骤505);将变量i的值加1,对于1≤k≤W,令ak(i)=p(k)+b(步骤506);将a1(i),a2(i),...,aW(i)作为W个判决门限,其中ak(i)与Dk(j)相对应,然后利用训练数据通过交叉验证的方法测试虚警概率u(i)(步骤507);如果u(i)>q,则对于1≤k≤W,令ak=ak(i-1);如果u(i)=q,则对于1≤k≤W,令ak=ak(i);如果u(i)<q,则重新执行步骤506(步骤508)。

在用于实现判决的第二个实例中,可利用训练数据,基于交叉验证的方式来设定判决门限a。具体的说,将获得的正常行为训练数据反复交叉地按固定比例分成两部分,一部分用于训练,另一部分用于测试虚警概率和判决门限;在测试中通过调整判决门限来得到不同虚警概率与不同判决门限的对应关系,并将期望虚警概率所对应的判决门限作为实际检测时的门限。

以上是对检测阶段如何利用训练阶段得到的正常序列库L实现对被监测用户当前行为是否为伪装攻击行为的说明。从上述说明可以看出,本发明的检测方法在充分考虑shell命令审计数据时序特征的基础上,针对网络用户伪装攻击行为复杂多变的特点,采用基于多重行为模式并行匹配和多门限联合判决的检测模型,克服了单一序列模式检测模型在性能稳定性和容错能力方面的不足,能够在不明显增加计算成本的条件下大幅度提高检测准确度,有效降低误报率。本发明的检测方法在检测阶段提供了两种判决方案对被监测用户的行为进行判决,在实际的使用中具有较强的针对性,其中第一种判决方案采用单一窗长度和多种判决门限,对系统资源的占用相对较多,特别适用于对检测准确度要求比较高的检测环境;相比之下,第二种判决方案的计算成本相对较低,数据处理速度快,适合在检测实时性要求比较高的检测环境下使用。本发明的检测方法在训练阶段采用了独特的用户行为模式表示方式,通过合理选择用户行为特征并基于阶梯式的序列模式支持度来建立合法用户的正常行为轮廓,提高了用户行为描述的准确性,并且增强了对不同类型用户行为变化的适应性;而且,训练阶段所需的训练数据样例只有正例,没有反例,这降低了训练数据收集的难度,扩展了该方法的应用范围和领域。本发明的检测方法可利用训练数据基于交叉验证和等量迭代逼近的方式来确定最佳门限参数,从而能够对虚警概率进行控制;训练数据越充分,对虚警概率的控制就越精确。

在一个例子中,对4个不同的被监测用户分别在不同的时间段各读取了1次审计数据,并根据审计数据进行了相应的判决操作。其中的用户user4是合法用户,并在执行正常操作,而其它的三个用户user1、user2、user3都是伪装用户,它们都冒用合法用户user4的账号进行伪装攻击操作。图6给出了针对这四个用户的判决值D1(j)的曲线,其中的图6(a)为合法用户user4对应的判决值D1(j)的曲线,图6(b)为伪装用户user1对应的判决值D1(j)的曲线,图6(c)为伪装用户user2对应的判决值D1(j)的曲线,图6(d)为伪装用户user3对应的判决值D1(j)的曲线。图7给出了针对这四个用户的判决值D2(j)的曲线,其中,图7(a)为合法用户user4对应的判决值D2(j)的曲线,图7(b)为伪装用户user1对应的判决值D2(j)的曲线,图7(c)为伪装用户user2对应的判决值D2(j)的曲线,图7(d)为伪装用户user3对应的判决值D2(j)的曲线。图8给出了针对这四个用户的判决值D3(j)的曲线,其中,图8(a)为合法用户user4对应的判决值D3(j)的曲线,图8(b)为伪装用户user1对应的判决值D3(j)的曲线,图8(c)为伪装用户user2对应的判决值D3(j)的曲线,图8(d)为伪装用户user3对应的判决值D3(j)的曲线。上述图中,曲线D1(j)、D2(j)、D3(j)都按照同一公式计算,但在计算过程中的序列长度有所不同。从上面的图可以看出,合法用户对应的判决值曲线同伪装用户对应的判决值曲线具有良好的可分性。综合统计以上4个不同时间段内的判决结果,使用本发明的伪装攻击检测方法的软件对伪装攻击的检测概率为83.02%,而虚警概率为0%。

最后所应说明的是,以上实施例仅用以说明本发明的技术方案而非限制。尽管参照实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,对本发明的技术方案进行修改或者等同替换,都不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围当中。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号