基于机器学习的用户行为异常检测系统和方法

文档序号:7616531阅读:847来源:国知局
专利名称:基于机器学习的用户行为异常检测系统和方法
技术领域
本发明涉及一种用于计算机网络安全的基于机器学习的用户行为异常检测系统和方法,属于网络信息安全技术领域。
背景技术
近年来,随着计算机网络应用范围的不断扩大,对网络的各类攻击与破坏活动与日俱增,所造成的危害也越来越大;全球每年因计算机网络的安全系统被破坏而造成的经济损失达数百亿美元。目前,网络安全已成为国家信息产业发展的关键,同时也是国家与国防安全的重要组成部分。对网络攻击行为进行检测和防范,保障计算机系统、网络系统及整个信息基础设施的安全已经成为刻不容缓的重要课题。入侵检测是一种用于检测计算机网络系统中入侵行为的网络信息安全技术,它主要通过监控计算机网络系统的状态、行为以及系统的使用情况,来检测系统用户的越权使用和误用行为,以及系统外部的入侵者利用系统的安全缺陷所进行的攻击行为。入侵检测系统(IDS,Intrusion DetectionSystem)能够扩展系统管理员的包括安全审计、监视、攻击识别和响应能力的各种安全管理能力,被认为是“防火墙”之后的第二道安全闸门,在网络信息安全体系中占有重要地位。
根据审计数据的来源和所监控的对象,入侵检测系统可分为主机型、网络型和混合型系统。主机型入侵检测系统使用的审计数据主要来自操作系统的审计记录、系统日志和应用程序日志,该类系统保护对象通常是单个服务器。网络型入侵检测系统的信息源则是网络上的原始数据包,该类系统通常担负着保护一个网段的任务。混合型入侵检测系统能够同时分析来自服务器的审计数据和网络上的数据包,系统由多个部件组成,一般采用分布式结构。
主机型和网络型入侵检测系统在不同的检测领域各具优势,两者存在互补性。主机型入侵检测系统主要优点有(1)对网络流量不敏感,一般不会因为网络流量的增加而影响对系统行为的监视;(2)检测的针对性强,检测粒度细,可以很容易地监控系统的一些活动,例如针对敏感文件、目录、程序或端口的活动;(3)配置灵活,不需要额外的硬件,可以根据受保护系统的实际情况进行有针对性的定制,同时能够利用操作系统本身的功能和结合异常分析,更准确地检测攻击行为;(4)对利用操作系统漏洞或应用软件缺陷而进行的攻击有良好的防范效果;(5)可用于加密或采用交换机制的网络环境。网络型入侵检测系统一般被放置在比较重要的网段内,其优点主要有(1)适用于检测基于网络协议的攻击;(2)与服务器的操作系统无关,适用范围广,扩展性好;(3)一般通过网络监听的方式获取数据,所以对受保护网络的性能影响很小,并且不需要改动网络结构;而且,网络监听器对网络中的用户是透明的,降低了检测系统本身遭受入侵者攻击的可能性。
目前,入侵检测技术主要分为三类误用检测、异常检测和混合检测。误用检测通过对入侵(攻击)行为进行分析和表示来检测入侵(本发明中,将“入侵”和“攻击”作为同义词使用);这种方法一般是将入侵行为表示为一种模式或特征,并根据已知的入侵行为和系统缺陷建立入侵模式(特征)库,检测时将被监测系统或用户的实际行为模式同入侵模式进行匹配,根据匹配结果来判断是否存在入侵。误用检测对已知入侵有很强的检测能力,其缺点是模式库需要不断更新,而且难以检测出未知入侵。异常检测是对系统或用户的正常行为(轮廓)进行分析和表示,当被监测系统或用户的实际行为与其正常行为存在一定差异时,即认为有入侵存在。异常检测的优点是不需要过多有关系统缺陷的知识,具有较强的适应性,能够检测出未知入侵或新出现的入侵模式。混合检测是将误用检测和异常检测综合在一起的检测技术,通常具有更好的检测性能。
随着对计算机网络弱点和攻击研究的不断深入,误用检测技术的应用越来越广泛,目前,商用的网络型入侵检测系统大多采用这种技术。误用检测的关键是如何对入侵行为进行表示和更新,以及如何提高报文捕获和模式匹配的速度与效率。由于新的攻击类型和网络漏洞不断出现,实际误用检测系统中的入侵模式(特征)库往往不能及时得到补充和更新,这是造成系统漏报的主要原因。异常检测技术在主机型入侵检测系统中有较多的应用,在网络型入侵检测系统中则常常用作误用检测的补充(例如对网络流量的异常分析)。异常检测的核心问题是如何表示系统或用户的正常行为(轮廓),以及如何将系统或用户的实际行为与其正常行为进行比较。对于异常检测而言,为了全面、准确地表示系统或用户的正常行为(以降低虚警概率),通常需要用大量的、较为完备的训练数据对检测模型进行训练。但是,同误用检测相比,异常检测在许多方面具有优势,特别是有检测未知攻击的能力。作为一种有良好发展前景的入侵检测技术,异常检测正在得到越来越多的研究和应用。
本发明涉及的用户行为异常检测系统是一种主机型入侵检测系统,该系统采用了基于机器学习的异常检测技术。机器学习是指利用机器(计算机)学习知识和解决问题,属于交叉性学科。机器学习的应用研究主要是发展各种学习模型和学习方法,并在此基础上构建具有特定应用的面向任务的学习系统。
参见图1所示的机器学习系统的通用模型。一个机器学习系统主要由学习单元、知识库和执行单元组成。其中学习单元是系统的核心,它利用外界信息源提供的信息来获取知识并对其做出改进(例如重新组织已有知识);学习单元的输入有两种外界环境信息和执行任务后的反馈信息。不同的学习系统采用不同的经验实例表示,最简单的一种是二元特征表示,仅仅描述对象某些属性的存在与否,连接学习和遗传学习方法一般使用这种二元特征的输入。另一种是属性值表示,每个属性有一组相互排斥的值,如颜色属性的值可为红色、蓝色和黄色等,这种属性值表示的典型应用是在归纳学习方法中。还有一种更复杂的是关系或结构表示,它描述两个或多个对象间的关系,这种关系或结构信息一般是以谓词逻辑、语义网络等形式来表示;同前两种表示相比较,这种表示具有更强的表示能力,但同时也为学习中的匹配过程带来了相当的复杂度。知识库用来存储知识,它所存储的知识包括领域知识(这种知识一般是相对稳定的),以及通过学习而获得的各种新知识(这种知识在某些情况下是随时间变化的)。选择何种知识进行存储对学习系统的设计起着非常关键的作用,有的系统只存储具体的单个经验实例,有些系统则存储从这些实例中得到的抽象推广。如果是后者,又存在两种区别以逻辑的、离散的形式表示知识,或者以数值的、连续的形式表示知识。归纳学习和分析学习常使用逻辑的、离散的表示形式,连接学习则主要使用数值的、连续的表示形式。执行单元利用知识库中的知识执行任务,任务执行后的信息又反馈给学习单元作为进一步学习的输入,该单元是使学习系统具有实际用途,同时又能够评价学习方法好坏的关键部分。
机器学习技术可以从不同的角度进行分类。按照学习的综合属性,机器学习技术可分为归纳学习、分析学习、基于实例的学习、连接学习等。归纳学习是在给定关于某个概念的一系列已知的正例和反例的条件下,通过归纳推理得到对该概念的一般性描述的过程;决策树学习算法是目前广为应用的归纳学习算法,典型的决策树学习算法有CLS算法、ID3算法等。分析学习是利用先验知识并通过演绎推理来扩大训练样例提供的信息;在分析学习中,学习系统的输入除了训练样例和假设空间之外,还包括领域理论,它由可用于解释训练样例的先验知识组成。基于实例的学习需要把训练样例存储起来,泛化工作被推迟到分析新实例的时候;通常情况下,当基于实例的学习系统遇到新的实例时,它将分析新实例与以前存储的实例的关系,并据此把一个目标函数值赋给新实例;这种技术的优点是不在整个实例空间上一次性地估计目标函数,而是针对每个待分析新实例作出局部估计;该技术的一个不足是分析新实例所需的计算量可能比较大;所以,适当减少训练样例的数量,并有效地索引训练样例,以减少分析新实例时的计算量是一个重要问题。本发明所提供的异常检测系统采用了基于实例学习的技术。
在一个实际的计算机网络系统中,一般都有多个合法用户;这些合法用户通常具有不同的操作权限(例如,程序员在系统中的主要活动是编程,而不允许执行系统管理员权限内的某些操作);而且,不同的合法用户具有不同的行为特点和行为规律。为了计算机网络系统的安全,在很多情况下都必须对系统中一些关键合法用户的行为进行监视,以防止这些关键合法用户进行非授权操作,或者防止外部入侵者(非法用户)冒用这些关键合法用户的帐号进行非法操作。

发明内容
有鉴于此,本发明的目的是提供一种基于机器学习的用户行为异常检测系统和方法。该系统利用机器学习模型来建立计算机网络系统中一个(或一组)关键合法用户的正常行为轮廓,并在检测中通过比较关键合法用户的当前行为与其正常行为轮廓来识别异常行为;如果该用户的当前行为较大程度地偏离了其历史上的正常行为轮廓,即认为发生了异常可能是关键合法用户进行了非授权操作,或是外部入侵者冒用关键合法用户的帐号进行了非法操作。虽然异常并不一定意味着攻击行为,但至少应该引起安全管理员的密切注意。
为了达到上述目的,本发明提供了一种基于机器学习的用户行为异常检测系统,该系统配置在需要监控的服务器上,采用Unix平台上的用户接口shell命令作为审计数据,在用户界面层分析用户行为来检测服务器中是否发生入侵;其技术方案是所述系统包括有控制模块,负责设置系统的工作状态和各种检测参数,并对数据获取和预处理模块、学习模块、检测模块和整个系统的运行进行控制;数据获取和预处理模块,负责从服务器中获取原始的训练数据或审计数据,即用户执行的shell命令行数据,并将这些原始训练数据或审计数据处理成shell命令流的形式后,分别送入学习模块或检测模块,用于学习或检测;学习模块,采用机器学习技术,从训练数据中获取网络系统中某个合法用户正常行为的知识,并在其基础上建立用于表示该合法用户的正常行为轮廓的shell命令序列库;序列存储模块,用于存储学习模块所建立的shell命令序列库,并在检测时,供检测模块进行检索比较;检测模块,负责对所述合法用户在被监测时间内执行的shell命令审计数据进行分析处理,完成包括但不限于“行为模式序列”的挖掘、相似度计算或赋值、相似度的加窗滤噪、判决值计算和用户行为判决的工作;检测结果输出模块,负责显示检测模块生成的判决值曲线,并在检测模块的控制下对异常行为进行报警。
为了达到上述目的,本发明又提供了该用户行为异常检测系统的检测方法,包括下列操作步骤(1)系统启动;(2)系统等待指令的输入时,由控制模块设置系统的工作状态和检测参数,以便在此后输入“开始工作”指令后,由控制模块自动查看系统的设置情况,分别进入两种不同工作状态如果系统被设置为学习状态,执行后续操作;如果系统被设置为检测状态,则跳转执行步骤(6);(3)在控制模块驱动下,数据获取和预处理模块从预先设定的数据接口载入原始训练数据,并对该原始训练数据进行预处理,使其成为shell命令流的形式,再将其输出至学习模块;(4)学习模块利用预处理后的shell命令流训练数据进行学习,建立shell命令序列库,并将该序列库存入序列存储模块后,向控制模块发送“学习结束”的消息;(5)控制模块接收到学习模块的“学习结束”消息后,使系统返回步骤(2),等待输入新的设置指令;或者直接将系统的工作状态转为检测状态,执行后续操作;(6)在控制模块驱动下,数据获取和预处理模块从预先设定的数据接口实时载入shell命令行的原始审计数据,同时对该原始审计数据进行实时预处理,并将预处理后的shell命令流审计数据实时输出至检测模块;(7)检测模块对该审计数据进行实时分析,生成检测结果;(8)检测结果输出模块显示检测结果判决值曲线,并对异常行为进行实时报警。
所述步骤(2)中,如果系统的工作状态被设置为学习状态,需要设置的工作参数包括用于表示该合法用户的正常行为轮廓而需要建立的shell命令序列库的个数W,以及W个序列长度l(1)、l(2)、......、l(W);其中l(i)是第i个shell命令序列库中序列的长度,且l(1)<l(2)<......<l(W);
如果系统的工作状态被设置为检测状态,需要设置的工作参数有两种,分别为第一种判决方法,窗长度w,判决门限λ;或第二种判决方法,窗长度的个数V,V个窗长度w(1)、w(2)、......、w(V),V个判决上限u(1)、u(2)、......、u(V)和V个判决下限d(1)、d(2)、......、d(V);其中,w(1)<w(2)<......<w(V),u(k)和d(k)分别是第k个窗长度c(k)所对应的判决上限和判决下限,k是区间为[1,V]的自然数,且u(1)>u(2)>......>u(V-1)>u(V)=d(V)>d(V-1)>......>d(2)>d(1)。
所述步骤(3)或步骤(6)中数据获取和预处理模块对原始训练数据或原始审计数据进行的预处理包括下列步骤31、提取出shell命令行中命令的名称names、标记flags和元字符metacharacters;32、将包括但不限于文件名、服务器名、目录、网址的信息替换为统一格式的标识符号<n>,其中n表示文件名、服务器名、目录或网址的个数;33、在每个shell会话开始和结束的时间点上分别插入表示起始和结束的标识符号SOF和EOF;34、将包括命令的名称、标记和元字符的符号以及文件名、服务器名、目录、网址的信息标识符号的shell命令符号按照在shell会话中的出现次序进行排列;并按照时间顺序连接不同shell会话的命令符号,且在上述数据中不添加时间戳,经过该预处理后,原始输入数据在形式上成为shell命令流一串按时间顺序排列的shell命令符号,且一个shell命令流可包含多个shell会话的内容。
所述步骤(4)中学习模块利用预处理后的shell命令流训练数据进行的学习操作包括下列步骤41、从数据获取和预处理模块得到经过预处理的、表示该合法用户的正常行为的训练数据R=(s1,s2,......,sr),即一个长度为r的shell命令流,其中sj表示按时间顺序排列的第j个shell命令符号;42、从控制模块中读取学习参数用于表示该合法用户的正常行为轮廓而需要建立的shell命令序列库的个数W,以及W个序列长度l(1)、l(2)、......、l(W);其中l(i)是第i个shell命令序列库中序列的长度,且l(1)<l(2)<......<l(W);43、由shell命令流R生成W个序列长度分别为l(1)、l(2)、......、l(W)的shell命令序列流S1、S2、......、SW,其中Si是序列长度为l(i)的shell命令序列流Si=(Seq1i,Seq2i,......,Seqr-l(i)+1i),]]>式中Seqji=(sj,sj+1,......,sj+l(i)-1),]]>它是Si中按时间顺序排列的第j个shell命令序列,i是区间[1,W]中的自然数;44、计算shell命令序列流Si中的每个shell命令序列在Si中的出现频率,其中i是区间[1,W]中的自然数;即计算序列流Si中的每个shell序列在Si中的出现次数除以该序列流中各个序列出现次数之和;45、读取控制模块中的频率门限参数用于建立W个shell命令序列库的频率门限η1、η2、......、ηW;其中ηi是建立序列长度为l(i)的shell命令序列库时所使用的频率门限,i是区间[1,W]中的自然数;46、按照序列的出现频率,从W个shell命令序列流S1、S2、......、SW中分别提取若干个shell命令序列用作样例,建立W个序列库;其具体方法步骤是设W个用于表示该用户正常行为轮廓的序列库的集合L={L(1),L(2),......,L(W)},其中L(i)表示由长度为l(i)的序列组成的序列库;按照自然数i从1到W的次序,分别将shell命令序列流Si中出现频率大于或等于频率门限ηi的shell命令序列提取出来作为样例,即视为该合法用户的正常行为模式的shell命令序列,并将这些序列集合在一起构成序列库L(i)。
所述步骤(7)中检测模块对审计数据进行实时分析并生成检测结果的实时检测操作包括下列步骤71、从数据获取和预处理模块实时地获取审计数据;即在检测时,数据获取和预处理模块要从shell历史文件中实时地获取该被监测合法用户在被监测时间内执行的shell命令行,并对这些命令行数据进行预处理后,变换为一个shell命令流R={s1,s2,......,sr},其中sj表示按时间顺序排列的第j个shell命令符号,r为该命令流的长度;数据获取和预处理模块按照时间顺序实时地将R={s1,s2,......,sr}中的每个shell命令符号依次输出至检测模块;
72、检测模块利用序列匹配方法来挖掘shell命令流R中的“行为模式序列”,并按照每个“行为模式序列”的长度计算它与序列库集合L={L(1),L(2),......,L(W)}的相似度,得到按时间顺序排列的“行为模式序列”流P=(Seq1*,Seq2*,......,SeqM*),]]>以及相应的相似度流Z=(Sim(Seq1*,L),Sim(Seq2*,L),......,Sim(SeqM*,L)),]]>其中Seqn*表示从R中挖掘到的第n个“行为模式序列”,Sim(Seqn*,L)表示Seqn*与序列库集合的相似度,M是从R中挖掘到的“行为模式序列”的个数,且int(r/l(W))≤M≤r-l(W)+1;73、对相似度流Z=(Sim(Seq1*,L),Sim(Seq2*,L),......,Sim(SeqM*,L))]]>进行加窗并取均值,将得到的相似度均值,即相似度判决值与判决门限进行比较,进而对该被监测合法用户的行为作出判决;在实时检测时,所述三个步骤71、72、73是同步执行的。
所述步骤72中检测模块利用序列匹配方法挖掘所述用户shell命令流审计数据R中行为模式序列及每个行为模式序列与序列库集合的相似度的计算进一步包括下列步骤721、设置三个变量j=1,i=W,n=1;722、如果j≤r-l(W)+1,将Seqji与序列库L(i)进行比较,再执行步骤723;如果j>r-l(W)+1,停止操作,即结束行为模式序列的挖掘和相似度计算;723、如果S‾eqji∈L(i),]]>即Seqji与序列库L(i)中的某个序列相同,则第n个行为模式序列Seqn*:=S‾eqji,]]>Seqn*与序列库集合L的相似度为Sim(Seqn*,L):=2l(i)/2l(W),]]>j=j+l(i),i=W,n=n+1,并返回执行步骤722;如果S‾eqji∉L(i),]]>即Seqji与序列库L(i)中的任何序列都不相同,则i=i-1,然后执行步骤724;724、如果i≠0,返回执行步骤722;如果i=0,则Seqn*:=(Sj),]]>Sim(Seqn*,L):=0,]]>j=j+1,i=W,n=n+1,并返回执行步骤722。
所述步骤73中检测模块在对相似度流进行加窗处理和对该用户的行为进行判决时,有两种判决方法可供用户选择;其中第一种判决方法是用固定的窗长度对相似度流进行加窗并取均值,得到的相似度均值,即相似度判决值,再利用相似度判决值和判决门限对该用户的行为进行判决;包括下列操作步骤7301、读取控制模块中设置的参数窗长度w和判决门限λ,当从审计数据R中挖掘到第n个行为模式序列Seqn*,并计算出Sim(Seqn*,L)后,其中n≥w;以Sim(Seqn*,L)为终点对相似度流Z进行加窗,计算以Sim(Seqn*,L)为终点的w个相似度,即Sim(Seqn-w+1*,L)、Sim(Seqn-w+2*,L)、......、Sim(Seqn*,L)的均值,得到Seqn*对应的相似度判决值D(n)D(n)=1wΣm=n-w+1nSim(Seqm*,L);]]>7302、利用判决值D(n)和判决门限λ对该用户的“当前行为”进行判决;如果D(n)>λ,将该用户的“当前行为”判为正常行为;如果D(n)≤λ,将该用户的“当前行为”判为异常行为;其中第二种判决方法是采用可变的窗长度对相似度流进行加窗并取均值,得到的相似度均值,即相似度判决值,再利用相似度判决值和判决门限对该被监测用户的行为进行判决;包括下列操作步骤7311、读取控制模块中设置的参数V个窗长度w(1)、w(2)、......、w(V),V个判决上限u(1)、u(2)、......、u(V)和V个判决下限d(1)、d(2)、......、d(V),其中,w(1)<w(2)<......<w(V),u(k)和d(k)分别是第k个窗长度c(k)所对应的判决上限和判决下限,k是区间为[1,V]的自然数,且u(1)>u(2)>......>u(V-1)>u(V)=d(V)>d(V-1)>......>d(2)>d(1);7312、当从R中挖掘到第n个“行为模式序列”Seqn*,并计算出Sim(Seqn*,L)后,继续计算Seqn*对应的相似度判决值D(n),并对该用户的“当前行为”作出判决。
所述步骤7312进行的计算和判决方法进一步包括下列操作步骤步骤1、设置变量k=1;步骤2、将n同w(k)进行比较如果n≥w(k),执行后续步骤;如果n<w(k),则不计算D(n),也不对该用户的“当前行为”进行判决,结束该操作;步骤3计算相似度均值N(n,k),该数值是对相似度流Z=(Sim(Seq1*,L),Sim(Seq2*L),......,Sim(SeqM*,L))]]>中以Sim(Seqn*,L)为终点的w(k)个相似度Sim(Seqn-w(k)+1*,L)、Sim(Seqn-w(k)+2*,L)、......、Sim(Seqn*,L)进行加窗并取均值后得到的N(n,k)=1w(k)Σm=n-w(k)+1nSim(Seqm*,L),]]>式中w(k)为窗长度,且w(k)≤n≤M;步骤4、判断是否满足判决条件N(n,k)>u(k),如果满足该条件,则Seqn*对应的相似度判决值定义为D(n)=N(n,k),并将该用户的“当前行为”判为正常行为;如果不满足判决条件N(n,k)>u(k),继续执行后续操作;步骤5、判断是否满足判决条件N(n,k)≤d(k),如果满足该条件,则D(n)=N(n,k),并将该用户的“当前行为”判为异常行为,结束对用户“当前行为”的判决;如果不满足判决条件N(n,k)≤d(k),继续执行后续操作。
步骤6、k=k+1,即k的值加1,并返回执行步骤2,循环执行后续操作。
所述检测方法用于对计算机网络系统中的某一个合法用户的行为进行异常检测,或者对网络系统中一组或多个合法用户的行为进行异常检测,对于后者,可采用两种不同的方法如果一组或多个合法用户的权限和行为特点相差比较大,则利用每个合法用户的正常行为训练数据分别建立W个序列库,再分别利用各自的W个序列库对每个用户的行为进行异常检测;如果一组或多个合法用户具有同等的权限,而且行为特点比较接近,则将这些用户的训练数据组合在一起,即将这些用户的shell命令流连接在一起构成总的训练数据,利用该训练数据建立W个序列库,再利用该W个序列库对每个用户的行为进行异常检测。
本发明是一种基于机器学习的用户行为异常检测系统和方法,其优点在于(1)本发明的系统具有很强的实用性和可操作性。该系统采用软件组成,可以灵活配置在需要监控的网络服务器上,不需要额外配置任何硬件,就能够检测网络服务器中的用户异常行为,进而使安全管理员识别对网络系统的各种攻击活动。与现有的一些商用主机型入侵检测系统相比,本发明系统利用多种长度不同的shell命令序列表示合法用户的各种正常行为模式,并建立多个序列库来描述用户的正常行为轮廓,提高了用户行为模式和行为轮廓表示中的灵活性和准确性。实际应用中的检测结果表明,该系统具有很高的检测准确率。
(2)本发明的检测方法是以机器学习技术为基础,在很多主机型入侵检测系统中,学习阶段(训练阶段)所采用的训练样例通常既有正例,又有反例。本发明的系统在学习时只需要正例,不需要反例,从而大大降低了训练数据收集的难度,扩展了系统的应用范围和领域。另外,本发明采用了独特的相似度计算(赋值)方法;在本发明中,合法用户的正常行为模式被认为是其正常操作过程中频繁执行的shell命令序列,因此,系统是按照训练数据中shell命令序列的出现频率来提取样例序列。在试验性的实际应用中的检测结果表明,这种提取样例序列的方法是一种很稳健的方法。
(3)在本发明的第二种检测判决方法中,对相似度流进行加窗滤噪时引入了“可变窗长度”的技术手段,并联合采用多个判决门限对被监测用户的行为进行判决,增强了检测性能的稳定性和检测的实时性。
(4)本发明的检测方法在进行“行为模式序列”挖掘时,采用了“全序列比较”的匹配方式。因此,在序列存储和匹配时,可以利用不同的编号(整数)来替代各个互不相同的shell命令序列。同一些现有的主机型入侵检测系统和检测方法相比较,本发明所采用的序列匹配和存储方法可以大大减小数据存储量和检测中的运算量,从而降低对系统所安置的服务器的资源的消耗和影响。


图1是机器学习系统的通用模型图。
图2是本发明基于机器学习的用户行为异常检测系统的结构示意图。
图3是本发明用户行为异常检测系统的工作流程方框图。
图4是本发明基于机器学习的用户行为异常检测系统的检测方法示意图。
图5是本发明中的学习模块进行学习的步骤方框图。
图6是本发明中的检测模块进行检测的步骤方框图。
图7是本发明中的检测结果输出模块输出的判决值曲线图。
具体实施例方式
为使本发明的目的、技术方案和优点更加清楚,下面结合附图对本发明作进一步的详细描述。
参见图2,本发明是一种基于机器学习的用户行为异常检测系统,该系统为软件产品,配置在需要监控的服务器上,采用Unix平台上的shell命令作为审计数据,在用户界面层分析用户行为来检测服务器中是否发生入侵。该系统由控制模块、数据获取和预处理模块、学习模块、序列存储模块、检测模块、检测结果输出模块组成。
系统中的控制模块负责设置系统的工作状态和各种检测参数,并对数据获取和预处理模块、学习模块、检测模块和整个系统的运行进行控制。数据获取和预处理模块负责从服务器中获取原始的训练数据或审计数据,即用户执行的shell命令行数据,并将这些原始训练数据或审计数据处理成shell命令流的形式后,分别送入学习模块或检测模块,用于学习或检测。学习模块利用机器学习技术,从训练数据中获取网络系统中某个(某组)关键合法用户的正常行为的知识,并在此基础上建立用于表示该合法用户的正常行为轮廓的shell命令序列库。序列存储模块用于存储学习模块所建立的shell命令序列库;在检测时,该shell命令序列库可供检测模块进行检索比较。检测模块负责对该合法用户在被监测时间内所执行的shell命令进行分析和处理,完成“行为模式序列”的挖掘、相似度计算(赋值)、相似度的加窗滤噪、判决值计算、用户行为判决等工作。检测结果输出模块负责显示检测模块生成的判决值曲线,并在检测模块的驱动下对异常行为进行报警。
参见图3,介绍本发明系统的工作流程如下(1)系统启动;(2)系统等待指令的输入;此时,由控制模块设置系统的工作状态和检测参数,设置完毕后,可输入“开始工作”的指令;再由系统控制模块自动查看系统的设置情况,分别进入两种不同工作状态如果系统被设置为学习状态,执行后续操作;如果系统被设置为检测状态,则跳转执行步骤(6);需要说明的是,系统启动后有一组缺省的工作状态和检测参数,即上一次运行时所设置的工作状态和检测参数;如果不需要更改以上的缺省设置,则可直接输入“开始工作”的指令使系统进行相应的步骤;
(3)在控制模块驱动下,数据获取和预处理模块从预先设定的数据接口载入原始训练数据,并对该原始训练数据进行预处理,使其成为shell命令流的形式,再将其输出至学习模块;(4)学习模块利用预处理后的shell命令流训练数据进行学习,建立shell命令序列库,并将该序列库存入序列存储模块后,向控制模块发送“学习结束”的消息;(5)控制模块接收到学习模块的“学习结束”消息后,使系统返回步骤(2),等待输入新的设置指令;(6)在控制模块驱动下,直接将系统的工作状态切换为检测状态,数据获取和预处理模块从预先设定的数据接口实时载入shell命令行的原始审计数据,同时对该原始审计数据进行实时预处理,并将预处理后的shell命令流审计数据实时输出至检测模块;(7)检测模块对数据获取和预处理模块所提供的该审计数据进行实时分析,生成检测结果;(8)检测结果输出模块显示检测结果判决值曲线,并对异常行为进行实时报警。
由上述本发明系统的工作流程可见,本发明作为一种基于机器学习的用户行为异常检测方法,主要包括三个步骤(参见图3)获取数据并对其进行预处理、进行学习或训练、检测用户行为并输出检测结果。下面对这三部分工作分别进行具体介绍。
(一)获取数据并对其进行预处理本发明系统在学习和检测时都需要获取原始的训练数据或审计数据,并对其进行预处理,该工作由数据获取和预处理模块完成。
本发明采用Unix平台上用户执行的shell命令行作为原始审计数据。其原因主要有三个(1)同其它审计数据(如CPU使用量、内存占用率等)相比,shell命令行能够更直接地反映用户的行为;(2)在Unix平台上,shell是终端用户与操作系统之间最主要的界面,很大比例的用户活动都是利用shell完成的;(3)shell命令行比较容易收集,也便于分析。
Unix平台上的shell有多种类型,如tcsh、ksh、bash。本发明系统实际应用于tcsh;tcsh是具有类似C语法的命令解释器,它的历史机制可以将用户输入的shell命令行放入历史清单中保存下来。由于不同类型的shell的命令输入方式和历史机制具有很多共性,因而本发明的用户行为异常检测方法(包括数据预处理方法、学习方法和检测方法)也适用于tcsh之外的其它类型的shell。
本发明在学习和检测时所需要的shell命令行原始输入数据可以从tcsh的历史文件中获取。但是,shell命令行不能直接用于学习或检测,而是需要进行预处理。预处理的目的主要有两个(1)使数据在形式上便于存储、分析和处理;(2)减小审计数据中互不相同的命令符号的个数。在学习和检测时,数据获取和预处理模块对原始输入数据进行预处理的方法是相同的。具体方法是1、提取出shell命令行中命令的名称(names)、标记(flags)及元字符(metacharacters)。
2、将文件名、服务器名、目录、网址等信息替换为统一格式的标识符号<n>,其中n表示文件名、服务器名、目录或网址的个数。
3、在每个shell会话开始和结束的时间点上分别插入表示起始和结束的标识符号SOF和EOF。
4、将包括命令名称、标记和元字符的符号以及文件名、服务器名等信息的标识符号的shell命令符号(shell command tokens)按照在shell会话中的出现次序进行排列;并按照时间顺序连接不同shell会话的命令符号,且在上述数据中不添加时间戳。
原始输入数据经过该预处理后,在形式上成为shell命令流一串按时间顺序排列的shell命令符号,且一个shell命令流可包含多个shell会话的内容。例如,某个用户在tcsh上进行的两个时间上相邻的shell会话的命令行#Start session 1cd~/games/xquake &fgvi scores.txtmailx john_doe@somewhere.comexit#End session 1 和#Start session 2cd~/private/docsls-laF|morecat foo.txt bar.txt zorch.txt>somewhereexit# End session 2经预处理后成为如下的shell命令流(SOF,cd,<1>,xquake,&,fg,vi,<1>,mailx,<1>,exit,EOF,SOF,cd,<1>,ls,-laF,|,more,cat,<3>,>,<1>,exit,EOF)其中<1>、<3>是文件名、目录、Email地址等内容的标识符号,SOF和EOF分别是会话开始和结束的标识符号。可见,shell命令流是一串按时间顺序排列的shell命令符号;一个shell命令流可以包含多个shell会话的内容。
(二)进行学习或训练系统在执行检测之前,首先需要进行学习(训练),即从训练数据中获取网络系统中某个关键合法用户的正常行为的知识,并在该基础上建立用于表示该用户的正常行为轮廓的shell命令序列库,以供检测模块在检测时进行检索比较。系统的学习工作由学习模块完成。
参见图5,介绍学习模块的学习步骤如下(1)从数据获取和预处理模块得到该合法用户的正常行为训练数据原始的正常行为训练数据是该合法用户历史上正常操作时执行的shell命令行,这些命令行数据经过预处理后成为一个shell命令流(该命令流代表了该合法用户历史上的正常行为)R=(s1,s2,.....,sr),它是一个长度为r的shell命令流,其中sj表示按时间顺序排列的第j个shell命令符号。
(2)从控制模块中读取学习参数用于表示该合法用户的正常行为轮廓而需要建立的shell命令序列库的个数W,以及W个序列长度l(1)、l(2)、......、l(W);其中l(i)是第i个shell命令序列库中序列的长度,且l(1)<l(2)<......<l(W)。
该系统在学习时用W种长度不同的shell命令序列表示该合法用户的各种行为模式,并将训练数据中的各种正常行为模式(即出现频率较高的shell命令序列)集合在一起构成该用户的正常行为轮廓。在W确定的情况下,l(1)、l(2)、......、l(W)可有不同的选择。例如W=3时,l(1)、l(2)、l(3)可以分别为1、2、3(即3个序列库中序列的长度分别为1,2,3),也可以分别为3、6、9或其它组合。W和l(i)对检测性能和检测效率都有直接影响,W和l(i)越大,系统的数据存储量和检测中的运算量也会越大。
(3)由shell命令流R生成W个序列长度分别为l(1)、l(2)、......、l(W)的shell命令序列流S1、S2、......、SW,其中Si是序列长度为l(i)的shell命令序列流Si=(Seq1i,Seq2i,......,Seqr-l(i)+1i),]]>式中Seqji=(sj,sj+1,......,sj+l(i)-1),]]>它是Si中按时间顺序排列的第j个shell命令序列,i是区间[1,W]中的自然数。
下面举例说明shell命令序列流的生成过程。
例如W=3,l(1)、l(2)、l(3)分别为1、2、3,R=(s1,s2,......,s12)=(**SOF**,cd,<1>,xquake,&,fg,vi,<1>,mailx,<1>,exit,**EOF**),则由R可以生成序列长度分别为1、2、3的3个shell命令序列流S1、S2、S3,其中 (<1>),(mailx),(<1>),(exit),(EOF****))]]>S2=(Seq12,Seq22,......,Seq112)=((SOF****,cd),(cd,<1>),(<1>,xquake),]]> EOF****))]]>S3=(Seq13,Seq23,......,Seq103)=((SOF****,cd,<1>),(cd,<1>,xquake),(<1>,]]> <1>),(mailx,<1>,exit),(<1>,exit,EOF****))]]>(4)计算shell命令序列流Si中的每个shell命令序列在Si中的出现频率,其中i是区间[1,W]上的自然数;即计算序列流Si中的每个shell序列在Si中的出现次数除以该序列流中各个序列出现次数之和。
下面举例说明计算过程。例如,在前面所示的序列流S1=((**SOF**),(cd),(<1>),(xquake),(&),(fg),(vi),(<1>),(mailx),(<1>),(exit),(**EOF**))中,序列(<1>)的出现频率是1/4,序列(cd)的出现频率是1/12。而在序列流S2=((**SOF**,cd),(cd,<1>),(<1>,xquake),(xquake,&),(&,fg),(fg,vi),(vi,<1>),(<1>,mailx),(mailx,<1>),(<1>,exit),(exit,**EOF**))中,序列(<1>,xquake)的出现频率是1/11(其它序列的出现频率也是1/11)。
(5)读取控制模块中的频率门限参数用于建立W个shell命令序列库的频率门限η1、η2、......、ηW;其中ηi是建立序列长度为l(i)的shell命令序列库时所使用的频率门限,i是区间[1,W]中的自然数。
(6)按照序列的出现频率,从W个shell命令序列流S1、S2、......、SW中分别提取若干个shell命令序列用作样例,建立W个序列库;其具体方法步骤是设W个用于表示该用户正常行为轮廓的序列库的集合L={L(1),L(2),......,L(W)},其中L(i)表示由长度为l(i)的序列组成的序列库;按照自然数i从1到W的次序,分别将shell命令序列流Si中出现频率大于或等于频率门限ηi的shell命令序列提取出来作为样例,即视为该合法用户的正常行为模式的shell命令序列,并将这些序列集合在一起构成序列库L(i)。
需要特别说明的是学习模块在对输入的原始训练数据进行的学习过程中,如果有了新的训练数据时,会自动根据新数据重新计算各序列的出现频率,进而对序列库进行调整;即该系统能够自动适应合法用户正常行为的变化。
(三)检测用户行为并输出检测结果利用学习模块建立的所述合法用户的正常行为轮廓,对该用户的当前行为进行实时监测如果该用户的当前行为较大程度地偏离其历史上的正常行为轮廓,即认为发生异常,执行相关处理;该异常是由该用户执行非授权操作或外部入侵者冒用该用户的帐号执行非法操作的结果。检测工作主要由检测模块完成。
参见图6,介绍检测模块的实时检测步骤如下(1)从数据获取和预处理模块实时地获取审计数据;即在检测时,数据获取和预处理模块要从shell历史文件中实时地获取该被监测合法用户在被监测时间内执行的shell命令行,并对这些命令行数据进行预处理后,变换为一个shell命令流R={s1,s2,......,sr},其中sj表示按时间顺序排列的第j个shell命令符号,r为该命令流的长度;数据获取和预处理模块按照时间顺序实时地将R={s1,s2,......,sr}中的每个shell命令符号依次输出至检测模块。
(2)检测模块利用序列匹配方法来挖掘shell命令流R中的“行为模式序列”,并按照每个“行为模式序列”的长度计算它与序列库集合L={L(1),L(2),......,L(W)}的相似度,得到按时间顺序排列的“行为模式序列”流P=(Seq1*,Seq2*,......,SeqM*),]]>以及相应的相似度流Z=(Sim(Seq1*,L),Sim(Seq2*,L),......,Sim(SeqM*,L)),]]>其中Seqn*表示从R中挖掘到的第n个“行为模式序列”,Sim(Seqn*,L)表示Seqn*与序列库集合的相似度,M是从R中挖掘到的“行为模式序列”的个数,且int(r/l(W))≤M≤r-l(W)+1。
其中“行为模式序列”挖掘和相似度计算的方法具体步骤描述如下步骤1、设置三个变量j=1,i=W,n=1;步骤2、如果j≤r-l(W)+1,将Seqji与序列库L(i)进行比较,再执行步骤3;如果j>r-l(W)+1,停止操作(“行为模式序列”挖掘和相似度计算过程结束);步骤3、如果S‾eqji∈L(i)]]>(即Seqji与L(i)中的某个序列相同),则第n个“行为模式序列”Seqn*:=S‾eqji,]]>Seqn*与序列库集合L的相似度Sim(Seqn*,L):=2l(i)/2l(W),]]>j=j+l(i),i=W,n=n+1,并返回执行步骤2;如果S‾eqji∉L(i)]]>(即Seqji与L(i)中的任何序列都不相同),则i=i-1,然后执行步骤4;步骤4、如果i≠0,返回执行步骤2;如果i=0,则Seqn*:=(sj),]]>Sim(Seqn*,L):=0,]]>j=j+1,i=W,n=n+1,并返回执行步骤2。
以上的“行为模式序列”挖掘和相似度计算方法可以理解为以第一个shell命令(符号)为起点,组成W个长度分别为l(W)、l(W-1)、......、l(1)的序列,并按照长度从大到小的顺序依次将这些序列与相应的序列库进行比较(匹配),如果其中一个序列与相应序列库中的某个序列相同,则认为该序列是该合法用户的一个正常行为模式,将该序列定义为“行为模式序列”,并根据序列长度计算该序列与序列库集合的相似度,序列长度越长,相似度的值也越大。如果任何一个序列与相应序列库中的序列都不相同,则将当前shell命令(符号)定义成长度为1的“行为模式序列”,并将该序列对应的相似度值赋为0,然后,再以该序列之后的下一个shell命令(符号)为起点组成W个长度不同的序列,按照以上方法继续进行序列比较和相似度计算,直到第r-l(W)+1个shell命令(符号)为止。这种方法主要关心被监测用户的当前命令序列是否能够与该用户历史上的某个正常行为模式(正常序列)完全匹配。在上述步骤3中,公式Sim(Seqn*,L):=2l(i)/2l(W)]]>表示将长度为l(i)的“行为模式序列”Seqn*与序列库集合L的相似度Sim(Seqn*,L)赋为2l(i)/2l(W)。这里,“行为模式序列”对应的相似度是关于其长度的增函数,该函数的最大值为1。例如,在W=3,C={l(1),l(2),l(3)}={1,2,3}的情况下,长度为1、2、3的三种“行为模式序列”对应的相似度分别为2/8、4/8、8/8。
按照以上方法进行“行为模式序列”挖掘和相似度计算,可得到按时间顺序排列的“行为模式序列”流P=(Seq1*,Seq2*,......,SeqM*),]]>以及相应的相似度流Z=(Sim(Seq1*,L),Sim(Seq2*,L),......,Sim(SeqM*,L)),]]>其中M是从R中挖掘到的“行为模式序列”的个数,int(r/l(W))≤M≤r-l(W)+1。(int表示取整运算。)需要指出,从R中挖掘到的“行为模式序列”的长度是不固定的。这些“行为模式序列”的长度可以为1、l(1)、l(2)、......、l(W-1)或l(W)。当从R中挖掘到的“行为模式序列”的长度全部为l(W)时(这种情况下合法用户在被监测时间内的行为与其历史上正常行为轮廓的吻合程度最好),M取最小值int(r/l(W));当从R中挖掘到的“行为模式序列”的长度全部为1时(这种情况下该用户在被监测时间内的行为同其历史上正常行为轮廓的吻合程度最差),M取最大值r-l(W)+1。
(3)对相似度流Z=(Sim(Seq1*,L),Sim(Seq2*,L),......,Sim(SeqM*,L))]]>进行加窗并取均值,将得到的相似度均值,即相似度判决值与判决门限进行比较,进而对该被监测合法用户的行为作出判决。此时,有两种可选择的判决方法。
其中第一种判决方法是用固定的窗长度对相似度流进行加窗并取均值,得到的相似度均值,即相似度判决值,再利用相似度判决值和判决门限对该用户的行为进行判决;包括下列操作步骤
(101)首先读取控制模块中设置的参数窗长度w和判决门限λ,当从审计数据R中挖掘到第n个行为模式序列Seqn*,并计算出Sim(Seqn*,L)后,其中n≥w;以Sim(Seqn*,L)为终点对相似度流Z进行加窗,计算以Sim(Seqn*,L)为终点的w个相似度,即Sim(Seqn-w+1*,L)、Sim(Seqn-w+2*,L)、......、Sim(Seqn*,L)的均值,得到Seqn*对应的相似度判决值D(n)D(n)=1wΣm=n-w+1nSim(Seqm*,L);]]>(102)利用判决值D(n)和判决门限λ对该用户的“当前行为”进行判决;如果D(n)>λ,将该用户的“当前行为”判为正常行为;如果D(n)≤λ,将该用户的“当前行为”判为异常行为;其中该用户的“当前行为”是相对于Seqn*而言的,是指该用户执行的以Seqn*为终点的w个“行为模式序列”,即Seqn-w+1*、Seqn-w+2*、......、Seqn*;D(n)中,n的初值为w,即n≥w,n的增长步长为1,在挖掘到第w个“行为模式序列”之后,每再挖掘到一个“行为模式序列”,就可以对该用户的行为作出一次判决;当n<w时,不计算D(n),也不作判决。
其中第二种判决方法是采用可变的窗长度对相似度流进行加窗并取均值,得到的相似度均值,即相似度判决值,再利用相似度判决值和判决门限对该被监测用户的行为进行判决;包括下列操作步骤(201)读取控制模块中设置的参数,包括V个窗长度w(1)、w(2)、......、w(V),V个判决上限u(1)、u(2)、......、u(V)和V个判决下限d(1)、d(2)、......、d(V),其中,w(1)<w(2)<......<w(V),u(k)和d(k)分别是第k个窗长度c(k)所对应的判决上限和判决下限,k是区间为[1,V]的自然数,且u(1)>u(2)>......>u(V-1)>u(V)=d(V)>d(V-1)>......>d(2)>d(1);(202)当从R中挖掘到第n个“行为模式序列”Seqn*,并计算出Sim(Seqn*,L)后,继续计算Seqn*对应的相似度判决值D(n),并对该用户的“当前行为”作出判决;具体包括下列操作步骤步骤1、设置变量k=1;步骤2、将n同w(k)进行比较如果n≥w(k),执行步骤3;如果n<w(k),则不计算D(n),也不对该用户的“当前行为”进行判决,结束该操作;
步骤3计算相似度均值N(n,k)=1w(k)Σm=n-w(k)+1nSim(Seqm*,L),]]>该数值是对相似度流Z=(Sim(Seq1*,L),Sim(Seq2*,L),......,Sim(SeqM*,L))]]>中以Sim(Seqn*,L)为终点的w(k)个相似度Sim(Seqn-w(k)+1*,L)、Sim(Seqn-w(k)+2*,L)、......、Sim(Seqn*,L)进行加窗,并取均值后得到的相似度均值。这里,w(k)为窗长度,且w(k)≤n≤M。
步骤4、判断是否满足判决条件N(n,k)>u(k),如果满足该条件,则Seqn*对应的相似度判决值定义为D(n)=N(n,k),并将该用户的“当前行为”判为正常行为(这里,该用户的“当前行为”是相对于Seqn*而言的,它是指该用户执行的以Seqn*为终点的w(k)个“行为模式序列”,即Seqn-w(k)+1*、Seqn-w(k)+2*、......、Seqn*)。至此,结束对用户“当前行为”的判决操作,不再执行后续步骤;如果不满足判决条件N(n,k)>u(k),继续执行步骤5。
步骤5、判断是否满足判决条件N(n,k)≤d(k),如果满足该条件,则D(n)=N(n,k),并将该用户的“当前行为”判为异常行为,结束对用户“当前行为”的判决,不再执行后续步骤;如果不满足判决条件N(n,k)≤d(k),继续执行步骤6。
步骤6、k=k+1,即k的值加1,并返回执行步骤2,循环执行后续操作。
上述第二种判决方法中,计算相似度判决值和对被监测用户当前行为进行判决的方法可以理解为当计算出相似度流中的第n个相似度Sim(Seqn*,L)之后,首先将窗长度设为最小值w(1),在n大于或等于窗长度的情况下,以Sim(Seqn*,L)为终点对相似度流进行加窗并取均值(窗内相似度的个数等于窗长度),然后将该相似度均值与该窗长度对应的判决上限和下限进行比较,如果满足判决条件(即该相似度均值大于窗长度对应的判决上限或小于等于窗长度对应的判决下限),则将该相似度均值定义为相似度判决值D(n),同时对被监测用户的当前行为作出判决,判决方法为若该相似度均值(相似度判决值)大于相应的判决上限,将被监测用户的“当前行为”判为正常行为,若该相似度均值小于等于相应的判决下限,则将其判为异常行为;如果不满足判决条件(即该相似度均值大于窗长度对应的判决下限并且小于等于窗长度对应的判决上限),则按照w(2)、w(3)......w(V)的先后次序增加窗长度,在n大于窗长度的情况下,重复以上的相似度加窗、取均值和比较过程,直到满足判决条件为止,从而得到D(n);同时根据判决条件对被监测用户的“当前行为”作出判决(当遇到n小于窗长度的情况时,则停止操作,不再计算D(n),也不对被监测用户的“当前行为”进行判决)。
按照上述第二种判决方法,当n<w(1)时,不计算相似度判决值D(n),也不对该用户的“当前行为”进行判决。当w(1)≤n<w(V)时,不一定能够得到D(n)并对该用户的“当前行为”作出判决。当w(V)≤n≤M时,总可以得到D(n),并能够对该用户的“当前行为”作出判决(注u(V)=d(V));此时,D(n)中n的增长步长为1,也就是说,每挖掘到一个“行为模式序列”就可以对该用户的行为作出一次判决。而且,在实际应用中,从R中挖掘到的“行为模式序列”的个数M通常远大于最长的窗长度w(V);所以,相对于w(V)≤n≤M来说,n<w(1)和w(1)≤n<w(V)都属于少数情况。
需要指出,检测模块在进行检测时,被监测用户所执行的三个步骤shell命令行的获取和预处理,“行为模式序列”的挖掘和相似度的计算,对相似度流的加窗处理,以及对用户行为的判决都是同步进行的。在检测过程中,当被监测用户执行完若干个“行为模式序列”(其个数同窗长度有关)之后,每再执行完一个“行为模式序列”,本发明检测系统就可以对该“行为模式序列”进行挖掘,并计算该“行为模式序列”对应的相似度,然后以该相似度为终点对相似度流进行加窗处理(得到该“行为模式序列”对应的相似度判决值),进而对被监测用户的“当前行为”作出一次判决。
在以上检测步骤(3)中,两种判决方法的区别在于窗长度和判决方法不同。在第一种判决方法中,窗长度w是一个重要参数,它决定了从被监测用户行为发生到检测系统第一次对其行为做出判断的时间(即检测时间),该方案的最短检测时间等于w个shell命令符号的最短持续时间(不考虑检测中序列比较和判决值计算的时间)。所以,窗长度w越小,检测的实时性就越强。但在系统的实际应用中,随着窗长度w的减小,检测准确度呈现降低的趋势。第二种判决方法则兼顾了检测时间和检测准确度;该方案采用可变窗长度,与第一种判决方法相比较,能够在保证同等检测准确度的前提下提高检测的实时性,但该方案的复杂度相对要高一些。
需要说明的是上述检测方法只对计算机网络系统中的某一个(而不是一组)合法用户的行为进行异常检测。实际上,本发明检测系统和方法还可以对网络系统中一组(多个)合法用户的行为进行异常检测。这种情况下可以采用两种做法(1)如果这些合法用户的权限和行为特点相差比较大,可利用每个合法用户的正常行为训练数据分别建立W个序列库,再分别利用各自的W个序列库对每个用户的行为进行异常检测;(2)如果这些合法用户具有同等的权限,而且行为特点比较接近,则可将这些用户的训练数据组合在一起(即将这些用户的shell命令流连接在一起)构成总的训练数据,利用该训练数据建立W个序列库,再利用该W个序列库对每个用户的行为进行异常检测。
下面介绍一个试验应用实例来具体说明本发明的实施方案。在该试验应用实例中,本发明的用户行为异常检测系统配置在某公司局域网中的一个服务器上,用于监测该局域网中某个关键程序员的行为,以防止该程序员进行非授权操作,并防止外部入侵者冒用该程序员的帐号进行恶意操作。该试验应用实例包括系统的工作状态为学习状态(训练状态)和检测状态的两个情况。
其中学习状态的实施例操作步骤如下(1)启动系统。
(2)该局域网的安全管理员对系统的工作状态和参数进行配置将系统的工作状态设为学习状态,shell命令序列库的个数W设为5,序列长度l(1)、l(2)、l(3)、l(4)、l(5)分别设为1、2、3、4、5,频率门限η1、η2、......、ηW均设为0.0002。设置完毕后,安全管理员输入“开始工作”的指令,系统接受指令后即开始自动运行。
(3)控制模块自动查看对系统的设置情况,发现系统的工作状态被设为学习状态,于是将系统切换至学习状态。
(4)控制模块驱动数据获取和预处理模块将原始训练数据从指定的位置载入。这些数据是该程序员8个月时间内在该服务器上正常操作时所执行的shell命令行。
(5)数据获取和预处理模块把原始训练数据(shell命令行)处理成shell命令流的形式,并将其输出至学习模块。对原始训练数据进行预处理后得到的shell命令流如下R=(**SOF**,cd,<1>,cd,<1>,......,vi,<1>,logout,**EOF**),该shell命令流中共包含9935个shell命令符号。
(6)学习模块利用以上的shell命令流进行学习,建立shell命令序列库,并将序列库存入序列存储模块。学习模块所建立的序列长度为1、2、3、4、5的序列库L(1)、L(2)、L(3)、L(4)、L(5)分别由160、508、860、1015、1526个shell命令序列组成。
(7)学习模块向控制模块发送“学习结束”的消息,控制模块接受到消息后使系统返回到等待指令的状态,即系统启动后的状态。
(8)系统关闭。
在以上实施例中,系统进行学习的核心是根据训练数据建立shell命令序列库,供检测模块在检测时使用(检索比较)。步骤(2)中所设置的频率门限η1、η2、......、ηW是很重要的参数,它们决定了5个序列库L(1)、L(2)、L(3)、L(4)、L(5)中shell序列的个数。频率门限越小,序列库中的序列个数就越多,系统所要存储的数据量就会越大,因此频率门限不能太小;但是,如果频率门限过大,在建立序列库时会漏掉一些能够反映合法用户操作规律的shell命令序列(行为模式),使得所建立的序列库不能很好地代表用户的正常行为轮廓,从而影响系统的检测准确率;所以,合理设置频率门限是学习中的关键问题。下面的表1给出了频率门限设为不同数值时,5个序列库中的序列个数。

其中检测状态的实施例操作步骤如下(1)启动系统。
(2)该局域网的安全管理员对系统的工作状态和参数进行配置将系统的工作状态设为检测状态,将判决方法设为第二种判决方法,将该判决方法的窗长度个数V设为3,将3个窗长度分别设为w(1)=30,w(2)=60,w(3)=90,将3个判决上限分别设为u(1)=0.8,u(2)=0.7,u(3)=0.5,将3个判决下限分别设为d(1)=0.3,d(2)=0.4,d(3)=0.5。设置完毕后,安全管理员输入“开始工作”的指令,系统接受指令后即开始自动运行。
(3)控制模块自动查看对系统的设置情况,发现系统的工作状态被设为检测状态,于是将系统切换至检测状态。
(4)控制模块驱动数据获取和预处理模块将原始审计数据从指定的位置载入;同时,数据获取和预处理模块对原始审计数据(shell命令行)进行预处理,并将预处理后的审计数据(shell命令流)输出至检测模块。
(5)检测模块对数据获取和预处理模块所提供的审计数据机进行分析,生成检测结果。
(6)检测结果输出模块显示检测结果(判决值曲线),并对异常行为进行报警。图7即为输出模块输出的判决值曲线。图中,上方的实线是系统在监视该程序员的正常行为时检测结果输出模块输出的判决值曲线。如果将安全管理员执行的shell命令行作为原始审计数据载入,检测结果输出模块输出的判决值曲线是图中下方的虚线;该虚线可视为系统在监视异常行为时输出的判决值曲线,因为安全管理员在服务器中所进行的操作对该程序员而言大都属于非授权操作(异常行为),或者说,该程序员未被授权进行安全管理员权限内的很多操作。若该程序员越权进行了安全管理员权限内的操作,系统输出的判决值曲线中各点的判决值将会比较小(如图中虚线所示),当判决值小于相应的判决门限时,系统就能够检测出这些非授权操作(异常行为)并进行报警。
权利要求
1.一种基于机器学习的用户行为异常检测系统,该系统配置在需要监控的服务器上,采用Unix平台上的用户接口shell命令作为审计数据,在用户界面层分析用户行为来检测服务器中是否发生入侵;其特征在于所述系统包括有控制模块,负责设置系统的工作状态和各种检测参数,并对数据获取和预处理模块、学习模块、检测模块和整个系统的运行进行控制;数据获取和预处理模块,负责从服务器中获取原始的训练数据或审计数据,即用户执行的shell命令行数据,并将这些原始训练数据或审计数据处理成shell命令流的形式后,分别送入学习模块或检测模块,用于学习或检测;学习模块,采用机器学习技术,从训练数据中获取网络系统中某个合法用户正常行为的知识,并在其基础上建立用于表示该合法用户的正常行为轮廓的shell命令序列库;序列存储模块,用于存储学习模块所建立的shell命令序列库,并在检测时,供检测模块进行检索比较;检测模块,负责对所述合法用户在被监测时间内执行的shell命令审计数据进行分析处理,完成包括但不限于“行为模式序列”的挖掘、相似度计算或赋值、相似度的加窗滤噪、判决值计算和用户行为判决的工作;检测结果输出模块,负责显示检测模块生成的判决值曲线,并在检测模块的控制下对异常行为进行报警。
2.一种权利要求1的用户行为异常检测系统的检测方法,其特征在于所述系统的检测方法包括下列操作步骤(1)系统启动;(2)系统等待指令的输入时,由控制模块设置系统的工作状态和工作参数,以便在此后输入“开始工作”指令后,由控制模块自动查看系统的设置情况,分别进入两种不同工作状态如果系统被设置为学习状态,执行后续操作;如果系统被设置为检测状态,则跳转执行步骤(6);(3)在控制模块驱动下,数据获取和预处理模块从预先设定的数据接口载入原始训练数据,并对该原始训练数据进行预处理,使其成为shell命令流的形式,再将其输出至学习模块;(4)学习模决利用预处理后的shell命令流训练数据进行学习,建立shell命令序列库,并将该序列库存入序列存储模块后,向控制模块发送“学习结束”的消息;(5)控制模块接收到学习模块的“学习结束”消息后,使系统返回步骤(2),等待输入新的设置指令;或者直接将系统的工作状态转为检测状态,执行后续操作;(6)在控制模块驱动下,数据获取和预处理模块从预先设定的数据接口实时载入shell命令行的原始审计数据,同时对该原始审计数据进行实时预处理,并将预处理后的shell命令流审计数据实时输出至检测模块;(7)检测模块对该审计数据进行实时分析,生成检测结果;(8)检测结果输出模块显示检测结果判决值曲线,并对异常行为进行实时报警。
3.根据权利要求2所述的用户行为异常检测系统的检测方法,其特征在于所述步骤(2)中,如果系统的工作状态被设置为学习状态,需要设置的工作参数包括用于表示该合法用户的正常行为轮廓而需要建立的shell命令序列库的个数W,以及W个序列长度l(1)、l(2)、......、l(W);其中l(i)是第i个shell命令序列库中序列的长度,且l(1)<l(2)<......<l(W);如果系统的工作状态被设置为检测状态,需要设置的工作参数有两种,分别为第一种判决方法,窗长度w,判决门限λ;或第二种判决方法,窗长度的个数V,V个窗长度w(1)、w(2)、......、w(V),V个判决上限u(1)、u(2)、......、u(V)和V个判决下限d(1)、d(2)、......、d(V);其中,w(1)<w(2)<......<w(V),u(k)和d(k)分别是第k个窗长度c(k)所对应的判决上限和判决下限,k是区间为[1,V]的自然数,且u(1)>u(2)>......>u(V-1)>u(V)=d(V)>d(V-1)>......>d(2)>d(1)。
4.根据权利要求2所述的用户行为异常检测系统的检测方法,其特征在于所述步骤(3)或步骤(6)中数据获取和预处理模块对原始训练数据或原始审计数据进行的预处理包括下列步骤31、提取出shell命令行中命令的名称names、标记flags和元字符metacharacters;32、将包括但不限于文件名、服务器名、目录、网址的信息替换为统一格式的标识符号<n>,其中n表示文件名、服务器名、目录或网址的个数;33、在每个shell会话开始和结束的时间点上分别插入表示起始和结束的标识符号SOF和EOF;34、将包括命令的名称、标记和元字符的符号以及文件名、服务器名、目录、网址的信息标识符号的shell命令符号按照在shell会话中的出现次序进行排列;并按照时间顺序连接不同shell会话的命令符号,且在上述数据中不添加时间戳,经过该预处理后,原始输入数据在形式上成为shell命令流一串按时间顺序排列的shell命令符号,且一个shell命令流可包含多个shell会话的内容。
5.根据权利要求2所述的用户行为异常检测系统的检测方法,其特征在于所述步骤(4)中学习模块利用预处理后的shell命令流训练数据进行的学习操作包括下列步骤41、从数据获取和预处理模块得到经过预处理的、表示该合法用户的正常行为的训练数据R=(s1,s2,......,sr),即一个长度为r的shell命令流,其中sj表示按时间顺序排列的第j个shell命令符号;42、从控制模块中读取学习参数用于表示该合法用户的正常行为轮廓而需要建立的shell命令序列库的个数W,以及W个序列长度l(1)、l(2)、......、l(W);其中l(i)是第i个shell命令序列库中序列的长度,且l(1)<l(2)<......<l(W);43、由shell命令流R生成W个序列长度分别为l(1)、l(2)、......、l(W)的shell命令序列流S1、S2、......、SW,其中Si是序列长度为l(i)的shell命令序列流Si=(Seq1i,Seq2i,......,Seqr-l(i)+1i),]]>式中Seqji=(sj,sj+1,......,sj+l(i)-1),]]>它是Si中按时间顺序排列的第j个shell命令序列,i是区间[1,W]中的自然数;44、计算shell命令序列流Sj中的每个shell命令序列在Si中的出现频率,其中i是区间[1,W]中的自然数;即计算序列流Sj中的每个shell序列在Si中的出现次数除以该序列流中各个序列出现次数之和;45、读取控制模块中的频率门限参数用于建立W个shell命令序列库的频率门限η1、η2、......、ηW;其中ηi是建立序列长度为l(i)的shell命令序列库时所使用的频率门限,i是区间[1,W]中的自然数;46、按照序列的出现频率,从W个shell命令序列流S1、S2、......、SW中分别提取若干个shell命令序列用作样例,建立W个序列库;其具体方法步骤是设W个用于表示该用户正常行为轮廓的序列库的集合L={L(1),L(2),......,L(W)},其中L(i)表示由长度为l(i)的序列组成的序列库;按照自然数i从1到W的次序,分别将shell命令序列流Si中出现频率大于或等于频率门限ηl的shell命令序列提取出来作为样例,即视为该合法用户的正常行为模式的shell命令序列,并将这些序列集合在一起构成序列库L(i)。
6.根据权利要求2所述的用户行为异常检测系统的检测方法,其特征在于所述步骤(7)中检测模块对审计数据进行实时分析并生成检测结果的实时检测操作包括下列步骤71、从数据获取和预处理模块实时地获取审计数据;即在检测时,数据获取和预处理模块要从shell历史文件中实时地获取该被监测合法用户在被监测时间内执行的shell命令行,并对这些命令行数据进行预处理后,变换为一个shell命令流R={s1,s2,......,sr},其中sj表示按时间顺序排列的第j个shell命令符号,r为该命令流的长度;数据获取和预处理模块按照时间顺序实时地将R={s1,s2,......,sr}中的每个shell命令符号依次输出至检测模块;72、检测模块利用序列匹配方法来挖掘shell命令流R中的“行为模式序列”,并按照每个“行为模式序列”的长度计算它与序列库集合L={L(1),L(2),......,L(W)}的相似度,得到按时间顺序排列的“行为模式序列”流P=(Seq1*,Seq2*,......,SeqM*),]]>以及相应的相似度流Z=(Sim(Seq1*,L),Sim(Seq2*,L),......,Sim(SeqM*,L)),]]>其中Seqn*表示从R中挖掘到的第n个“行为模式序列”,Sim(Seqn*,L)表示Seqn*与序列库集合的相似度,M是从R中挖掘到的“行为模式序列”的个数,且int(r/l(W))≤M≤r-l(W)+1;73、对相似度流Z=(Sim(Seq1*,L),Sim(Seq2*,L),......,Sim(SeqM*,L))]]>进行加窗并取均值,将得到的相似度均值,即相似度判决值与判决门限进行比较,进而对该被监测合法用户的行为作出判决;在实时检测时,所述三个步骤71、72、73是同步执行的。
7.根据权利要求6所述的用户行为异常检测系统的检测方法,其特征在于所述步骤72中检测模块利用序列匹配方法挖掘所述用户shell命令流审计数据R中行为模式序列及每个行为模式序列与序列库集合的相似度的计算进一步包括下列步骤721、设置三个变量j=1,i=W,n=1;722、如果j≤r-l(W)+1,将Seqji与序列库L(i)进行比较,再执行步骤723;如果j>r-l(W)+1,停止操作,即结束行为模式序列的挖掘和相似度计算;723、如果S‾eqji∈L(i),]]>即Seqji与序列库L(i)中的某个序列相同,则第n个行为模式序列Seqn*:=S‾eqji,Seqn*]]>与序列库集合L的相似度为Sim(Seqn*,L):=2l(i)/2l(W),]]>j=j+l(i),i=W,n=n+1,并返回执行步骤722;如果S‾eqji∉L(i),]]>即Seqji与序列库L(i)中的任何序列都不相同,则i=i-1,然后执行步骤724;724、如果i≠0,返回执行步骤722;如果i=0,则Seqn*:=(sj),Sim(Seqn*,L):=0,]]>j=j+1,i=W,n=n+1,并返回执行步骤722。
8.根据权利要求6所述的用户行为异常检测系统的检测方法,其特征在于所述步骤73中检测模块在对相似度流进行加窗处理和对该用户的行为进行判决时,有两种判决方法可供用户选择;其中第一种判决方法是用固定的窗长度对相似度流进行加窗并取均值,得到的相似度均值,即相似度判决值,再利用相似度判决值和判决门限对该用户的行为进行判决;包括下列操作步骤7301、读取控制模块中设置的参数窗长度w和判决门限λ,当从审计数据R中挖掘到第n个行为模式序列Seqn*,并计算出Sim(Seqn*,L)后,其中n≥w;以Sim(Seqn*,L)为终点对相似度流Z进行加窗,计算以Sim(Seqn*,L)为终点的w个相似度,即Sim(Seqn-w+1*,L)、Sim(Seqn-w+2*,L)、......、Sim(Seqn*,L)的均值,得到Seqn*对应的相似度判决值D(n)D(n)=1wΣm=n-w+1nSim(Seqm*,L);]]>7302、利用判决值D(n)和判决门限λ对该用户的“当前行为”进行判决;如果D(n)>λ,将该用户的“当前行为”判为正常行为;如果D(n)≤λ,将该用户的“当前行为”判为异常行为;其中第二种判决方法是采用可变的窗长度对相似度流进行加窗并取均值,得到的相似度均值,即相似度判决值,再利用相似度判决值和判决门限对该被监测用户的行为进行判决;包括下列操作步骤7311、读取控制模块中设置的参数V个窗长度w(1)、w(2)、......、w(V),V个判决上限u(1)、u(2)、......、u(V)和V个判决下限d(1)、d(2)、......、d(V),其中,w(1)<w(2)<......<w(V),u(k)和d(k)分别是第k个窗长度c(k)所对应的判决上限和判决下限,k是区间为[1,V]的自然数,且u(1)>u(2)>......>u(V-1)>u(V)=d(V)>d(V-1)>......>d(2)>d(1);7312、当从R中挖掘到第n个“行为模式序列”Seqn*,并计算出Sim(Seqn*,L)后,继续计算Seqn*对应的相似度判决值D(n),并对该用户的“当前行为”作出判决。
9.根据权利要求8所述的用户行为异常检测系统的检测方法,其特征在于所述步骤7312进行的计算和判决方法进一步包括下列操作步骤步骤1、设置变量k=1;步骤2、将n同w(k)进行比较如果n≥w(k),执行后续步骤;如果n<w(k),则不计算D(n),也不对该用户的“当前行为”进行判决,结束该操作;步骤3计算相似度均值N(n,k),该数值是对相似度流Z=(Sim(Seq1*,L),Sim(Seq2*,L),......,Sim(SeqM*,L))]]>中以Sim(Seqn*,L)为终点的w(k)个相似度Sim(Seqn-w(k)+1*,L)、Sim(Seqn-w(k)+2*,L)、......、Sim(Seqn*,L)进行加窗并取均值后得到的N(n,k)=1w(k)Σm=n-w(k)+1nSim(Seqm*,L),]]>式中w(k)为窗长度,且w(k)≤n≤M;步骤4、判断是否满足判决条件N(n,k)>u(k),如果满足该条件,则Seqn*对应的相似度判决值定义为D(n)=N(n,k),并将该用户的“当前行为”判为正常行为;如果不满足判决条件N(n,k)>u(k),继续执行后续操作;步骤5、判断是否满足判决条件N(n,k)≤d(k),如果满足该条件,则D(n)=N(n,k),并将该用户的“当前行为”判为异常行为,结束对用户“当前行为”的判决;如果不满足判决条件N(n,k)≤d(k),继续执行后续操作。步骤6、k=k+1,即k的值加1,并返回执行步骤2,循环执行后续操作。
10.根据权利要求2所述的用户行为异常检测系统的检测方法,其特征在于所述检测方法用于对计算机网络系统中的某一个合法用户的行为进行异常检测,或者对网络系统中一组或多个合法用户的行为进行异常检测,对于后者,可采用两种不同的方法如果一组或多个合法用户的权限和行为特点相差比较大,则利用每个合法用户的正常行为训练数据分别建立W个序列库,再分别利用各自的W个序列库对每个用户的行为进行异常检测;如果一组或多个合法用户具有同等的权限,而且行为特点比较接近,则将这些用户的训练数据组合在一起,即将这些用户的shell命令流连接在一起构成总的训练数据,利用该训练数据建立W个序列库,再利用该W个序列库对每个用户的行为进行异常检测。
全文摘要
一种基于机器学习的用户行为异常检测系统和方法,该系统由控制模块、数据获取和预处理模块、学习模块、序列存储模块、检测模块、检测结果输出模块组成;该系统配置在需要监控的服务器上,采用Unix平台上的shell命令作为训练数据和审计数据,在对数据进行预处理后,利用机器学习模型建立计算机网络系统中关键合法用户的正常行为轮廓,在检测中通过比较关键合法用户的当前行为与其正常行为轮廓来识别异常行为,即是否发生入侵;如果该用户的当前行为较大程度地偏离了其历史上的正常行为轮廓,即认为发生了异常可能是关键合法用户进行了非授权操作,或是外部入侵者冒用关键合法用户的帐号进行了非法操作,以便引起网络管理员的注意,采取措施保证安全。
文档编号H04L12/24GK1649311SQ20051005693
公开日2005年8月3日 申请日期2005年3月23日 优先权日2005年3月23日
发明者田新广, 隋进国, 李学春, 王辉柏, 邹涛 申请人:北京首信科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1