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

文档序号:7719640阅读:176来源:国知局
专利名称:伪装攻击检测中的模型训练方法和检测方法
技术领域
本发明涉及计算机网络安全领域,特别涉及伪装攻击检测中的模型训练方法和检
测方法。
背景技术
伪装攻击是指非授权用户通过伪装成合法用户来获得访问关键数据或更高层访 问权限的行为。近年来,伪装攻击在网络信息安全事件中的比例不断增长,成为对系统破坏 最为严重的攻击方式之一。目前,伪装攻击检测在保障网络信息安全中发挥着越来越大的 作用。 伪装攻击检测是当前网络安全领域研究的热点。由于合法用户的行为本身是变化 的,且伪装用户的行为可能看起来是正常的,这种不确定性使得实现伪装攻击检测比传统 的网络攻击检测更为困难。目前的伪装攻击检测方法和系统大多采用异常检测技术,这种 技术对合法用户的正常行为进行建模,通过被监测用户的实际行为与合法用户正常行为之 间的比较或匹配来检测攻击。采用异常检测技术的伪装攻击检测方法和系统的优点是不需 要过多有关攻击行为的先验知识,且能够检测出未知的攻击类型;但与此同时,此类伪装攻 击检测方法和系统也具有误报率高、检测效率难以满足高速网络实时检测需求等问题,从 而会降低检测方法和系统的可用性。这也是影响此类伪装攻击检测方法和系统实际应用的 主要因素。此外,由于用户行为的多变性,检测所需的训练数据往往不够充分,这就要求检 测模型应当具有一定的容错性、泛化能力以及对用户行为变化的适应性。如何利用相对不 够充分的训练数据来尽可能精确地描述用户的正常行为轮廓,以及如何利用该正常行为轮 廓进行伪装攻击检测是当前主要的技术难点。 目前,在以Unix或Li皿x平台上shell命令为审计数据的用户伪装攻击检测方法 中,基于神经网络、支撑矢量机或隐马尔可夫模型来描述用户的正常行为轮廓是主流的做 法。与一般的异常检测方法相类似,此类方法存在的主要问题是对用户行为变化缺乏适应 性,检测性能的稳定性和容错能力不够强,检测准确度也有待提高。

发明内容
本发明的目的是克服现有伪装攻击检测方法对用户行为变化缺乏适应性、检测性 能的稳定性和容错能力不够强、检测准确度不高的缺陷,从而提供一种适应性广、稳定性 高、容错能力强、检测准确度较高的伪装攻击检测方法。 为了实现上述目的,本发明提供了一种伪装攻击检测中的模型训练方法,包括
步骤1)、由合法用户正常行为的训练数据中的shell命令短序列生成多个具有不 同长度的shell命令短序列流;一个所述shell命令短序列流包括有具有某一特定长度的 shell命令短序列,所述长度为所述shell命令短序列中所含shell命令符号的个数;
步骤2)、在各个shell命令短序列流中计算所含shell命令短序列在所在短序列 流中的支持度;
步骤3)、将shell命令短序列的支持度大小与所在shell命令短序列流的最小支 持度参数进行比较,去除各个shell命令短序列流中支持度小于最小支持度参数的shell 命令短序列,从而得到用于描述合法用户正常行为的序列库。
上述技术方案中,所述的步骤1)包括
步骤1-1)、设定滑动窗口的大小; 步骤l-2)、利用所述滑动窗口在所述训练数据的shell命令短序列中逐步截取 shell命令符号,得到具有相同长度的shell命令短序列,组成所述的shell命令短序列 流; 步骤l-3)、改变滑动窗口的大小后重新执行步骤l-2),直到滑动窗口的大小已经 涵盖所有shell命令短序列的长度。 上述技术方案中,在所述的步骤2)中,对所述支持度的计算采用如下公式support ( ) = number( 5^)/( r - /(/) +1) 其中,number (S。表示shel 1命令短序列在shel 1命令短序列流的r_l (i) +1 个shell命令短序列中的出现次数;support(S+i)表示短序列在中的支持度。
本发明还提供了一种伪装攻击检测方法,采用所述的模型训练方法所得到的用于 描述合法用户正常行为的序列库实现伪装攻击检测;该方法包括 步骤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个判决门限ai、 a2.....aw ; 步骤3-1-2)、设定变量k的初始值为1 ; 步骤3-1-3)、如果Dk(j)《ak,则将被监测用户的当前行为判定为伪装攻击行为,并不再执行后续步骤,否则,执行后续步骤;其中,Dk(j)为长度为l(k)的shell命令短序 列流所对应的参考判决值,1 (k)表示第k种shell命令短序列的长度;
步骤3-1-4)、如果k < W,则变量k的值增加1,并返回执行前一步骤,如果k = W, 则执行下一步; 步骤3-1-5)、如果Dk(j) >、,则将被监测用户的当前行为判为正常行为,否则,将
被监测用户的当前行为判为伪装攻击行为。 上述技术方案中,所述的步骤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)表示D"j)作为最终判决值时此种判决方案所容忍的最大虚警概率; 步骤3-1-1-3)、将变量k的值加1 ,然后判断k的值是否小于或等于W,如果是,返
回上一步,否则,执行下一步; 步骤3-1-1-4)、设定变量i的初始值为l,对于l《k《W,令ak(i) = p (k);
步骤3-1-1-5)、设定判决门限的增量b ; 步骤3-1-1-6)、将变量i的值加l,对于l《k《W,令ak(i) =p(k)+b; 步骤3-l-l-7)、将aJi),a2(i),... ,aw(i)作为W个判决门限,其中ak(i)与D"j)
相对应,然后利用训练数据通过交叉验证的方法测试虚警概率u(i); 步骤3-1-1-8)、如果u(i) 〉q,则对于l《k《W,令ak二ak(i-l);如果u(i)=
q,则对于l《k《W,令ak二ak(i);如果u(i) < q,则重新执行步骤3-1_1_6)。 上述技术方案中,在所述的步骤3)中,所述的根据参考判决值对被监测用户的行
为是否异常作出判决包括 步骤3-2-l)、设定判决门限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)为伪装用户userl对应的判决值D1 (j)的曲线; 图6 (c)为伪装用户user2对应的判决值D1 (j)的曲线; 图6 (d)为伪装用户user3对应的判决值D1 (j)的曲线; 图7 (a)为合法用户user4对应的判决值D2 (j)的曲线; 图7 (b)为伪装用户userl对应的判决值D2 (j)的曲线; 图7 (c)为伪装用户user2对应的判决值D2 (j)的曲线; 图7 (d)为伪装用户user3对应的判决值D2 (j)的曲线; 图8 (a)为合法用户user4对应的判决值D3 (j)的曲线; 图8 (b)为伪装用户userl对应的判决值D3 (j)的曲线; 图8 (c)为伪装用户user2对应的判决值D3 (j)的曲线; 图8(d)为伪装用户user3对应的判决值D3(j)的曲线。
具体实施例方式
下面结合附图和具体实施方式
对本发明进行说明。 本发明的伪装攻击检测方法是基于Unix或Linux平台上的shell命令实现的, 因此在下面的实施例中,将以Li皿x平台为例,对如何利用被监测用户在该平台上运行的 shell命令实现伪装攻击检测进行说明。但本领域技术人员应当了解,在下面说明中所提到 的方法同样适用于Unix平台。 本发明的伪装攻击检测方法可分为训练和检测两个阶段,训练阶段的主要工作是 根据训练数据对合法用户的正常行为进行描述,进而建立合法用户的正常行为轮廓。检测 阶段的工作是根据训练阶段所建立的合法用户的正常行为轮廓,利用相应的检测模型来识 别被监测用户当前行为中是否存在伪装攻击或假冒行为。 无论是训练阶段还是检测阶段,都涉及到对用户所执行的原始shell命令的预处 理,出于方便说明的考虑,在对训练阶段和检测阶段分别说明前,首先对预处理过程加以描 述。 对原始shell命令数据的预处理是要去除命令中不必要的信息,只保留那些与伪 装攻击检测有关的信息。在一种滤除实现方式中,在预处理过程中可以只保留shell命令 的名称,滤除shell命令数据中的参数和时间等信息。在另一种滤除实现方式中,除了要保 留shell命令的名称外,还要保留命令中的参数,滤除包括主机名、网址在内的其它信息。 由于对原始shell命令数据的预处理通常不是对单个或少数几个shell命令数据的处理, 而是对由若干个shell会话所组成的shell命令数据集的处理,因此,无论是前述何种滤除 实现方式,在滤除所得到的结果中,各命令符号按照在shell会话中的出现次序进行排列, 不同的shell会话按照时间顺序进行连接,在每个会话开始和结束的时间点上插入标识符号。例如,对某用户的一个shell会话原始命令行数据 ( > cd /private/docs > ls-laF I more > cat foo. txt bar. txt zlg. txt > /tian/zly > mailx tianxg@sina. com > exit)。 经前述后一种方式预处理后生成如下shell命令序列 (*S0F*, cd, 〈1>, ls, -laF, | , more, cat, 〈3>, >, 〈1>, mailx, 〈1>, exit, *E0F*)。
其中,*S0F*和*E0F*分别是会话开始和结束的标识符号,〈1>、 〈3>为目录名或地 址符号。 经过以上两种滤除实现方式预处理后的原始shell命令数据在形式上均表现为 shell命令序列,也就是按时序排列的若干个shell命令符号。相对于前一种方式,采用后 一种方式预处理后的数据中互不相同的shell命令符号明显增多,但能够更加精确地反映 用户行为,因此优选这一滤除实现方式。但无论是采用前述何种滤除实现方式,对本发明以 下步骤的实现并不造成影响。 在对训练阶段和检测阶段共有的预处理过程做上述说明后,按照时间的先后顺序 先对训练阶段进行说明。 在前面的说明中已经提到,训练阶段是要根据训练数据建立合法用户的正常行为 轮廓。因此,训练阶段首先需要有训练数据,且该训练数据是合法用户正常行为的训练数 据。合法用户正常行为的训练数据可通过对合法用户在历史上正常操作时所执行的原始 shell命令数据进行预处理得到。预处理所得到的结果是shell命令序列,因此可用R = (Sl, s2, . . . , Sr)表示合法用户正常行为的训练数据,其中,r代表长度,Sj表示按时间顺序 排列的第j个shell命令符号。 训练阶段除了要有训练数据外,还要有包括短序列个数W,序列长度1(1)、 1(2)、. 、 l(W),以及最小支持度参数minsup(l)、minsup(2)、. 、 minsup (W)在内的多个 参数的具体取值。这些值可以由用于管理检测过程的管理员自行设定,上述参数的含义及 作用将在下文中予以说明。 在前面的说明中已经提到,训练数据是由shell命令符号所组成的序列,在该序 列中将按时间顺序排列的连续若干个shell命令符号组合在一起可形成shell命令短序 列。shell命令短序列可用来表示前述合法用户的行为模式,一个shell命令短序列中所包 含的shell命令符号的个数也被称为该shell命令短序列的长度。为了更加全面地表示合 法用户的各种行为模式,根据长度对shell命令短序列进行分类。为了便于识别,shell命 令短序列的类别按照长度依次编号,例如,第一类的shell命令短序列的长度小于第二类 的shell命令短序列的长度。假设用W表示shell命令短序列的种类数目,则shell命令 短序列长度的集合可表示为C = {1 (1) , 1 (2),……1 (W)},其中1 (i)表示第i种shell命 令短序列的长度,i是区间[l,W]中的自然数,且l(l) <1(2) <……<1(W)。
在确定shell命令短序列的类别后,就可以由前面所得到的合法用户正常行为的
训练数据R生成W个序列长度分别为1 (1) 、 1 (2).....1 (W)的shell命令短序列流。此处
所提到的shell命令短序列流是由具有相同序列长度的shell命令短序列组成的,在本实 施例中,要得到所述的shell命令短序列流,可以先设定滑动窗口的大小,然后用该滑动窗 口在训练数据中逐步截取shell命令符号,从而得到多个shell命令短序列,这些shell命 令短序列组成了 shell命令短序列流。上述过程中滑动窗口的大小就是shell命令短序列流中的shell命令短序列的长度。例如,在一个实例中,某一训练数据包括有100个shell 命令符号,这些shell命令符号用1到100的数字表示。如果将当前滑动窗口的大小设为 3,那么序列长度为3的shell命令短序列流包括{(符号l,符号2,符号3),(符号2,符号
3,符号4),(符号3,符号4,符号5),......,(符号98,符号99,符号100)}。如果改变滑
动窗口的大小,则可以得到其它序列长度的shell命令短序列流。需要说明的是,前面所提 到的诸如"符号l"只是表示shell命令符号的位置,而不是shell命令符号的内容。因此, 不同位置的符号的内容可能是一样的。例如,(符号1,符号2,符号3)所代表的shell命 令短序列可能与(符号98,符号99,符号100)所代表的shell命令短序列的内容相同。
从上面的说明可以看出,一个训练数据R可以得到W个shell命令短序列流,出于
说明方便的考虑,分别用S1、 S2.....Sw表示由R生成的序列长度分别为1(1)、 1(2).....
l(W)的W个shell命令短序列流,其中Si是短序列长度为l(i)的shell命令短序列流(i是 区间[1,W]中的自然数),Si包含r-l (i) +1个shell命令短序列;S'' = (&'', & ,... ,(0+1), 其中《=(~, .. ,力,h) , S/是以shell命令Sj为起点的长度为1 (i)的短序列 (l《j《r-l(i)+l), j是自然数。 在由训练数据得到shell命令短序列流后,还要在各个短序列流中计算所含 shell命令短序列在所在短序列流中的支持度。结合前文所提到的数学标记,对支持度做如 下定义 —个长度为1 (i)的shell命令短序列S/在shell命令短序列流中的支持度 等于该序列在Si中的出现次数除以Si中的序列总数(1《i《W),即support (5"0 = number( S丄)/( r -/(! ) +1)。 其中,number (Sj)表示短序列S 在的r_l (i)+l个shell命令短序列中的出 现次数;support(S+i)表示短序列S/在Si中的支持度,support (Sj)描述了短序列S 在 短序列流Si中的出现概率。 在计算出shell命令短序列在其所在shell命令短序列流中的支持度以后,就可 以根据支持度的大小对shell命令短序列加以选择,从而构成用于描述合法用户正常行为 的序列库。要实现shell命令短序列的选择应当有相应的选择标准,根据这一选择标准从 shell命令短序列流中找出能够用来反映合法用户正常行为的shell命令短序列。在本申 请中,前文所提到的最小支持度参数就是这一选择标准。本申请为各个shell命令短序列 流设置了对应的最小支持度参数,由于shell命令短序列流有W个,因此最小支持度参数也 有W个,分另U用minsup(l) ,minsup (2) ,. ,minsup(W)表示,其中,minsup (i)是针对shell 命令短序列流Si中长度为1 (i)的短序列而设置的(1《i《W)。有了最小支持度参数以 后,就可以比较shell命令短序列的支持度与最小支持度参数,一旦Si中某一 shell命令 短序列的支持度大于或等于最小支持度参数minsup (i),则该shell命令短序列就被提取 出来,构成满足该支持度要求的序列库L(i)。设Si中支持度大于或等于minsup (i)的序列 共有K(i)个,分别记为Sj, Sj, . . . , S啦+i(K(i)《r-l(i)+l),则满足该支持度要求的序 列库£(/) = {&'+, Si+,…,》。由于最小支持度参数一共有W个,因此,最后一共 可以得到W个序列库来描述该合法用户的正常行为轮廓。这W个序列库组合在一起得到用 于异常检测的正常序列库L, L = {L(l) , L(2) , . . . , L(W)}。 由合法用户在历史上正常操作时所执行的原始shell命令数据得到用于异常检测的正常序列库L就是训练阶段所要完成的工作。训练阶段最后所得到的正常序列库的准
确性与训练数据的充分性,短序列个数W,序列长度1 (1) 、 1 (2).....1 (W),以及最小支持度
参数minsup (1) 、 minsup (2) 、 、 minsup (W)参数的具体取值有关。 在训练阶段完成后,就要利用训练阶段所得到的结果来识别被监测用户当前行为 中是否存在伪装攻击或假冒行为,这一过程由检测阶段实现。 与训练阶段不同的是,检测阶段所针对的用户不再是合法用户,而是被监测用户, 所述被监测用户既可能是合法用户也可能是非法用户。在获取被监测用户的原始shell命 令数据后,对这些数据进行预处理,得到shell命令序列,这一序列也被称为用于检测的审 计数据。所述预处理的实现过程在前文中已经有详细的说明,因此不在此处重复。为了便 于后续说明,假设预处理后得到的shell命令序列为R = (Sl, s2, . . . , Sr),其中Sj表示按 时间顺序排列的第j个shell命令符号,r为该命令序列的长度。在实时检测(在线检测) 的情况下,R中的各个shell命令是按照时间顺序依次得到的。 在得到审计数据后,同样要由审计数据生成W个序列长度分别为1 (1) 、1 (2).....
1 (W)的shell命令短序列流。这些shell命令短序列流的生成过程与训练阶段相类似,出 于便于实时检测的需要,本实施例采用了滑动窗后向截取短序列的方式来生成shell命令
短序列流。所得到的序列长度分别为1 (1) 、 1 (2).....1 (W)的W个shell命令短序列流分
别用S\S2.....Sw表示,其中Si是短序列长度为1 (i) (1《i《W)的shell命令短序列流。
f =(Hi,…,忍),其中巧…,J}) ,S/是以shell命令Sj为终点的 长度为l(i)的短序列(l(i)《j《r) ;Si中共有r-l(i)+l个shell命令短序列。
由审计数据得到shell命令短序列流后,就可以将这些shell命令短序列流与 训练阶段所得到的用于表示合法用户正常行为的正常序列库L进行比较,实现行为模 式的匹配。由于在匹配过程中要做多次匹配,因此这一匹配过程也被称为多重行为模 式匹配。所述的多重行为模式匹配具体包括对于1《i《W,将shell命令短序列流 f …,g)中的每个shell命令短序列巧:/(0+1,5}_,(0+2,…,巧)同相应的
序列库丄(0 = {&'+ , &+,…,s",)+》中的序列进行匹配,如果短序列s/与序列库
L(i)中的某个短序列相同(即巧e"z')),则将短序列S/视为正常行为模式序列,并记
class(^一l;如果s/与序列库L(i)中的任何一个短序列都不相同(即g: ),则将短 序列s/视为异常行为模式序列,并记dass(^)^0。经过以上序列匹配,对于每一个shell
命令短序列流^ =0^,^y+1,...,S),可得到序列(class (S1(i)i), class (S训+。 ,, classS/)),这一序列可以被称为匹配结果序列。 虽然通过前述的多重行为模式匹配已经得到匹配结果序列,但由于进行伪装攻 击的用户在短时间内的行为可能与合法用户的正常行为没有太大差别,而在较长时间段 内表现出的行为特征通常会较大程度地偏离合法用户的正常行为轮廓,因此,鉴于用户伪 装攻击的以上特点,作为一种优选实现方式,在本实施例中并不直接利用class (S/)进行 判决,而是通过加窗平滑来得到参考判决值,进而对被监测用户的行为作出判决。具体的 说,在对每个shell命令短序列流Si进行模式匹配之后,可对相应的序列(class (S1(i)i), class (S训+。 , . . . , class (S/))进行加窗平滑处理,得到如下判决值
£>'(_/) = — J] class(巧) 式中,e为窗长度,Di (j)表示shell命令短序列S/对应的判决值,且 e+l(i)-l《j《r ;Di(j)反映了以S/为终点的e个shell命令短序列中正常行为模式序 列的比例;shell命令短序列流f =(5^,^y+1,...,忍)中第e+l(i)-l个短序列及其后面的
每个短序列都分别对应一个判决值;对于W个shell命令短序列流S1、 S2.....S增长步长为l。
W,可以并行计算出判决值D1 (j)、D2(j)-----D、j),其中j的增长步长为1。 在得到判决值以后,就可以利用判决值对被监测用户的当前行为进行判决。考虑
到不同的用户对伪装攻击检测有不同的需求,如在某些情况下要求实时性高,而在其它情
况下要求准确度高。针对上述不同需求,可以用不同的实现方式进行判决。 在一个实例中,要求有较高的准确度,此时,在实现判决时首先需要设定W个判决
门限A、 a2..... ,然后参考图3并根据这些判决门限做如下操作。设定变量k的初始值
为1(步骤301);如果Dk(j)《ak,则将被监测用户的当前行为判定为伪装攻击行为,并不 再执行后续步骤,否则,执行后续步骤(步骤302);如果k〈 W,则变量k的值增加l,并返 回执行前一步骤,如果k二 W,则执行下一步(步骤303);如果Dk(j) >、,则将被监测用户 的当前行为判为正常行为,否则,将被监测用户的当前行为判为伪装攻击行为(步骤304)。 需要说明的是,在上述实现过程中,被监测用户的"当前行为"是相对于R二 (Sl, s2,..., Sr) ^ = (5 , ^,..., J>)中she 11命令sj对应的时间点而言的,它是指以sj为终点的若干个 shell命令所对应的行为。此外,上述过程中所涉及的j > e+l(W)-l, j的值每增加l,都要 执行以上步骤来对被监测用户的当前行为做一次判决。 在另一个实例中,要求有较高的实时性,此时,在实现判决时首先需要设定一个 判决门限a,然后参考图4并根据该判决门限做如下操作。从前面所得到的判决值D1(」)、
D2(j).....Dw(j)中选取一个Dk(j)作为最终判决值;将所选定的Dk(j)与所设定的判决门
限a进行比较,如果Dk(j) 〉a,将被监测用户的当前行为判为正常行为,如果Dk(j)《a, 将被监测用户的当前行为判为伪装攻击行为。需要说明的是,被监测用户的"当前行为"是 相对于R = (Sl, s2, . . . , s》中shell命令Sj对应的时间点而言的,它是指以Sj为终点的 e+1 (k)-l个shell命令所对应的行为,即Sj—e—1(k)+2, Sj—e—1(k)+3, , Sj所对应的行为。此外, 上述过程中所涉及的j > e+l(k)-l,也就是说,被监测用户执行完第e+l(k)-l个shell命 令后才能对其行为做第一次判决。 在前文用于实现判决的两个实例中,所涉及的判决门限ai、 a2.....aw或判决门限
a可由管理员自行设定,但在某些应用场合,如需要精确控制虚警概率的应用场合,为了提 高伪装攻击检测的准确率,前述的判决门限的值通过计算的方式设定。 在用于实现判决的第一个实例中,可利用训练数据,基于交叉验证并通过等量迭
代逼近的方式来设定所述的W个判决门限A、^.....aw。如图5所示,具体的说,首先设定
变量k的初始值为1,并确定期望虚警概率的上限q(步骤501);使用Dk(j)作为最终判决 值,并令q(k) = q/W,然后利用所获得的训练数据通过交叉验证的方法来得到期望虚警概 率q(k)所对应的判决门限p(k),其中,q(k)表示D"j)作为最终判决值时此种判决方案所容忍的最大虚警概率(步骤502);将变量k的值加l,然后判断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);将ai (i) , a2 (i) , , aw (i)作为 W个判决门限,其中ak(i)与D"j)相对应,然后利用训练数据通过交叉验证的方法测试虚 警概率u(i)(步骤507);如果u(i) 〉q,则对于l《k《W,令ak二ak(i-l);如果u(i)= q,则对于1《k《W,令ak = ak (i);如果u (i) < q,则重新执行步骤506 (步骤508)。
在用于实现判决的第二个实例中,可利用训练数据,基于交叉验证的方式来设定 判决门限a。具体的说,将获得的正常行为训练数据反复交叉地按固定比例分成两部分,一 部分用于训练,另一部分用于测试虚警概率和判决门限;在测试中通过调整判决门限来得 到不同虚警概率与不同判决门限的对应关系,并将期望虚警概率所对应的判决门限作为实 际检测时的门限。 以上是对检测阶段如何利用训练阶段得到的正常序列库L实现对被监测用户当 前行为是否为伪装攻击行为的说明。从上述说明可以看出,本发明的检测方法在充分考虑 shell命令审计数据时序特征的基础上,针对网络用户伪装攻击行为复杂多变的特点,采用 基于多重行为模式并行匹配和多门限联合判决的检测模型,克服了单一序列模式检测模型 在性能稳定性和容错能力方面的不足,能够在不明显增加计算成本的条件下大幅度提高检 测准确度,有效降低误报率。本发明的检测方法在检测阶段提供了两种判决方案对被监测 用户的行为进行判决,在实际的使用中具有较强的针对性,其中第一种判决方案采用单一 窗长度和多种判决门限,对系统资源的占用相对较多,特别适用于对检测准确度要求比较 高的检测环境;相比之下,第二种判决方案的计算成本相对较低,数据处理速度快,适合在 检测实时性要求比较高的检测环境下使用。本发明的检测方法在训练阶段采用了独特的用 户行为模式表示方式,通过合理选择用户行为特征并基于阶梯式的序列模式支持度来建立 合法用户的正常行为轮廓,提高了用户行为描述的准确性,并且增强了对不同类型用户行 为变化的适应性;而且,训练阶段所需的训练数据样例只有正例,没有反例,这降低了训练 数据收集的难度,扩展了该方法的应用范围和领域。本发明的检测方法可利用训练数据基 于交叉验证和等量迭代逼近的方式来确定最佳门限参数,从而能够对虚警概率进行控制; 训练数据越充分,对虚警概率的控制就越精确。 在一个例子中,对4个不同的被监测用户分别在不同的时间段各读取了 1次审计 数据,并根据审计数据进行了相应的判决操作。其中的用户user4是合法用户,并在执行正 常操作,而其它的三个用户userl、user2、user3都是伪装用户,它们都冒用合法用户user4 的账号进行伪装攻击操作。图6给出了针对这四个用户的判决值D1(」)的曲线,其中的图 6 (a)为合法用户user4对应的判决值D1 (j)的曲线,图6 (b)为伪装用户userl对应的判决 值D1⑤的曲线,图6(c)为伪装用户user2对应的判决值D1⑤的曲线,图6(d)为伪装用 户user3对应的判决值D1⑤的曲线。图7给出了针对这四个用户的判决值D2(j)的曲线, 其中,图7(a)为合法用户user4对应的判决值D2(j)的曲线,图7 (b)为伪装用户userl对 应的判决值D2(j)的曲线,图7(c)为伪装用户user2对应的判决值D2(j)的曲线,图7(d) 为伪装用户user3对应的判决值D2(j)的曲线。图8给出了针对这四个用户的判决值D3(j)的曲线,其中,图8(a)为合法用户user4对应的判决值D3(j)的曲线,图8(b)为伪装用户 userl对应的判决值D3(j)的曲线,图8(c)为伪装用户user2对应的判决值D3 (j)的曲线, 图8(d)为伪装用户user3对应的判决值D3(j)的曲线。上述图中,曲线D1 (j) 、D2 (j) 、D3(j) 都按照同一公式计算,但在计算过程中的序列长度有所不同。从上面的图可以看出,合法用 户对应的判决值曲线同伪装用户对应的判决值曲线具有良好的可分性。综合统计以上4个 不同时间段内的判决结果,使用本发明的伪装攻击检测方法的软件对伪装攻击的检测概率 为83. 02 % ,而虚警概率为0 % 。 最后所应说明的是,以上实施例仅用以说明本发明的技术方案而非限制。尽管参 照实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,对本发明的技术方 案进行修改或者等同替换,都不脱离本发明技术方案的精神和范围,其均应涵盖在本发明 的权利要求范围当中。
权利要求
一种伪装攻击检测中的模型训练方法,包括步骤1)、由合法用户正常行为的训练数据中的shell命令短序列生成多个具有不同长度的shell命令短序列流;一个所述shell命令短序列流包括有具有某一特定长度的shell命令短序列,所述长度为所述shell命令短序列中所含shell命令符号的个数;步骤2)、在各个shell命令短序列流中计算所含shell命令短序列在所在短序列流中的支持度;步骤3)、将shell命令短序列的支持度大小与所在shell命令短序列流的最小支持度参数进行比较,去除各个shell命令短序列流中支持度小于最小支持度参数的shell命令短序列,从而得到用于描述合法用户正常行为的序列库。
2. 根据权利要求1所述的伪装攻击检测中的模型训练方法,其特征在于,所述的步骤 1)包括:步骤l-l)、设定滑动窗口的大小;步骤1-2)、利用所述滑动窗口在所述训练数据的shell命令短序列中逐步截取shell 命令符号,得到具有相同长度的shell命令短序列,组成所述的shell命令短序列流;步骤l-3)、改变滑动窗口的大小后重新执行步骤l-2),直到滑动窗口的大小已经涵盖 所有shell命令短序列的长度。
3. 根据权利要求1所述的伪装攻击检测中的模型训练方法,其特征在于,在所述的步 骤2)中,对所述支持度的计算采用如下公式support () = number( & )/(r — /(0 +1)其中,number (S+i)表示shell命令短序列在shell命令短序列流的r_l (i)+l个 shell命令短序列中的出现次数;support(S+i)表示短序列S 在中的支持度。
4. 一种伪装攻击检测方法,采用权利要求l-3之一的模型训练方法所得到的用于描述 合法用户正常行为的序列库实现伪装攻击检测;该方法包括步骤1)、由被监测用户的审计数据生成多个具有不同长度的shell命令短序列流;一 个所述shell命令短序列流包括有具有某一特定长度的shell命令短序列,所述长度为所 述shell命令短序列中所含shell命令符号的个数;步骤2)、将步骤l)所得到的多个shell命令短序列流与所述用于描述合法用户正常行 为的序列库进行比较,实现行为模式的匹配,得到多个匹配结果序列;步骤3)、由所述的匹配结果序列生成参考判决值,根据参考判决值对被监测用户的行 为是否异常作出判决。
5. 根据权利要求4所述的伪装攻击检测方法,其特征在于,所述的步骤2)包括 步骤2-1)、将一 shell命令短序列流中的某一 shell命令短序列与所述用于描述合法用户正常行为的序列库中的各个序列进行匹配,当该shell命令短序列与所述序列库中的 某一序列相同,则该shell命令短序列为正常行为模式序列,并做相应标记;否则,该shell 命令短序列为异常行为模式序列,并做相应标记;步骤2-2)、对该shell命令短序列流中的所有shell命令短序列重复执行步骤2_1), 由所述标记得到该shell命令短序列流的匹配结果序列;步骤2-3)、对由被监测用户的审计数据所生成的所有shell命令短序列流重复执行上 述步骤,得到多个匹配结果序列。
6. 根据权利要求4所述的伪装攻击检测方法,其特征在于,在所述的步骤3)中,对多 个所述的匹配结果序列做加窗平滑处理,从而得到多个与匹配结果序列相对应的参考判决 值。
7. 根据权利要求4所述的伪装攻击检测方法,其特征在于,在所述的步骤3)中,所述的根据参考判决值对被监测用户的行为是否异常作出判决包括步骤3-1-1)、设定W个判决门限ai、 a2.....aw ;步骤3-1-2)、设定变量k的初始值为1 ;步骤3-1-3)、如果Dk(j)《ak,则将被监测用户的当前行为判定为伪装攻击行为,并不 再执行后续步骤,否则,执行后续步骤;其中,Dk(j)为长度为l(k)的shell命令短序列流 所对应的参考判决值,1 (k)表示第k种shell命令短序列的长度;步骤3-1-4)、如果k < W,则变量k的值增加1 ,并返回执行前一步骤,如果k = W,则执 行下一步;步骤3-1-5)、如果Dk (j) > ak,则将被监测用户的当前行为判为正常行为,否则,将被监 测用户的当前行为判为伪装攻击行为。
8. 根据权利要求7所述的伪装攻击检测方法,其特征在于,所述的步骤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)表 示D"j)作为最终判决值时此种判决方案所容忍的最大虚警概率;步骤3-1-1-3)、将变量k的值加1,然后判断k的值是否小于或等于W,如果是,返回上一步,否则,执行下一步;步骤3-l-l-4)、设定变量i的初始值为l,对于l《k《W,令ak(i) =p(k); 步骤3-1-1-5)、设定判决门限的增量b ;步骤3-1+6)、将变量i的值加l,对于1《k《W,令ak(i) = p(k)+b ;步骤3-l-l-7)、将aJi), a2(i), , aw(i)作为W个判决门限,其中ak(i)与D"j)相 对应,然后利用训练数据通过交叉验证的方法测试虚警概率u(i);步骤3-1-1-8)、如果u(i) 〉q,则对于l《k《W,令ak二ak(i-l);如果u(i) 二q,则 对于l《k《W,令ak二ak(i);如果u(i) < q,则重新执行步骤3-1-1-6)。
9. 根据权利要求4所述的伪装攻击检测方法,其特征在于,在所述的步骤3)中,所述的根据参考判决值对被监测用户的行为是否异常作出判决包括 步骤3-2-l)、设定判决门限a;步骤3-2-2)、从参考判决值D、j)、D2(j).....Dw(j)中选取一个Dk(j)作为最终判决值;步骤3-2-3)、将所选定的Dk(j)与所设定的判决门限a进行比较,如果Dk(j) 〉a,将被 监测用户的当前行为判为正常行为,如果Dk(j)《a,将被监测用户的当前行为判为伪装攻 击行为。
10. 根据权利要求9所述的伪装攻击检测方法,其特征在于,所述的步骤3-2-l)包括 将获得的正常行为训练数据反复交叉地按固定比例分成两部分,一部分用于训练,另一部分用于测试虚警概率和判决门限;在测试中通过调整判决门限来得到不同虚警概率与不同判决门限的对应关系,并将期望虚警概率所对应的判决门限作为实际检测时的门限a。
全文摘要
本发明提供一种伪装攻击检测中的模型训练方法,包括由合法用户正常行为的训练数据中的shell命令短序列生成多个具有不同长度的shell命令短序列流;一个所述shell命令短序列流包括有具有某一特定长度的shell命令短序列,所述长度为所述shell命令短序列中所含shell命令符号的个数;在各个shell命令短序列流中计算所含shell命令短序列在所在短序列流中的支持度;将shell命令短序列的支持度大小与所在shell命令短序列流的最小支持度参数进行比较,去除各个shell命令短序列流中支持度小于最小支持度参数的shell命令短序列,从而得到用于描述合法用户正常行为的序列库。本发明具有适应性广、稳定性高、容错能力强、检测准确度较高的优点。
文档编号H04L29/06GK101702720SQ200910235890
公开日2010年5月5日 申请日期2009年10月28日 优先权日2009年10月28日
发明者刘悦, 段洣毅, 田新广, 程学旗, 许洪波 申请人:中国科学院计算技术研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1