发明内容
基于此,有必要针对上述技术问题,提供一种能够提高准确率的网络协议异常检测方法、装置、计算机设备和存储介质。
一种网络协议异常检测方法,所述方法包括:
获取待检测二进制协议数据包;
调用预先训练好的检测模型;所述检测模型为预先基于二进制协议数据包对隐马尔科夫模型训练得到;
确定所述待检测二进制协议数据包与所述检测模型的第一匹配度;
获取协议类型与所述待检测二进制协议数据包对应的无异常二进制协议数据包的第二匹配度;
基于所述第一匹配度和所述第二匹配度,得到所述待检测二进制协议数据与所述无异常二进制协议数据包的偏离度;
根据所述偏离度确定所述待检测二进制协议数据包是否异常。
在其中一个实施例中,所述确定所述待检测二进制协议数据包与所述检测模型的第一匹配度,包括:
将所述待检测二进制协议数据包转换成对应的观测序列和状态序列;
基于所述检测模型的预测参数、所述观测序列和所述状态序列,确定前向变量值和后向变量值;
根据所述前向变量值和所述后向变量值计算得到似然概率;
获取所述似然概率的平均对数,得到所述待检测二进制协议数据包与所述检测模型的第一匹配度。
在其中一个实施例中,所述将待检测所述二进制协议数据包转换成对应的状态序列,包括:
将所述待检测二进制协议数据包中各字节转换成观测值,得到观测序列;
获取预设的状态区间以及各所述状态区间包括的观测值;
基于所述状态区间包括的观测值,确定所述观测序列中各观测值的所属状态区间;
将所述所属状态区间的区间号作为状态值,得到状态序列。
在其中一个实施例中,所述基于所述第一匹配度和所述第二匹配度,得到所述待检测二进制协议数据与所述无异常二进制协议数据包的偏离度,包括:
获取所述第二匹配度的均值;
计算所述第一匹配度和所述均值的差的绝对值,得到所述待检测二进制协议数据包与所述无异常二进制协议数据包的偏离度。
在其中一个实施例中,所述根据所述偏离度确定所述待检测二进制协议数据包是否异常,包括:
获取所述第二匹配度的标准方差;
当所述偏离度不小于预设倍数的所述标准方差的值时,确定所述待检测二进制协议数据包异常;
当所述偏离度小于预设倍数的所述标准方差的值时,确定所述待检测二进制协议数据包无异常。
在其中一个实施例中,所述基于二进制协议数据包对隐马尔科夫模型训练得到检测模型,包括:
利用流镜像获取二进制协议数据包;
基于预设五元组信息对所述二进制协议数据包进行分类和流重组,得到二进制协议训练数据包;
将所述二进制协议训练数据包转换成对应的观测序列和状态序列,得到训练观测序列和训练状态序列;
基于预设的前向变量初始值、后向变量初始值、所述训练观测序列以及所述训练状态序列,对所述隐马尔科夫模型的模型参数进行迭代更新,得到检测模型。
在其中一个实施例中,所述基于预设的前向变量初始值、后向变量初始值、训练观测序列以及训练状态序列,对所述隐马尔科夫模型的模型参数进行迭代更新,得到检测模型,包括:
根据预设的前向变量初始值、后向变量初始值以及所述训练状态序列,得到前向变量训练值和后向变量训练值;
将所述前向变量训练值和所述后向变量训练值作为更新值;
利用所述更新值和所述训练观测序列对所述隐马尔科夫模型的参数进行更新,得到更新参数;
当所述更新参数未满足迭代条件时,基于所述更新参数、所述训练观测序列以及所述训练状态序列,对所述前向变量训练值和所述后向变量训练值进行更新,得到更新后的所述前向变量训练值和后向变量训练值;
将更新后的所述前向变量训练值和后向变量训练值作为更新值,返回利用所述更新值和所述训练观测序列对所述隐马尔科夫模型的参数进行更新的步骤,直至满足迭代条件为止,得到检测模型。
一种网络协议异常检测装置,所述装置包括:
获取模块,用于获取待检测二进制协议数据包;
调用模块,用于调用预先训练好的检测模型;所述检测模型为预先基于二进制协议数据包对隐马尔科夫模型训练得到;
确定模块,用于确定所述待检测二进制协议数据包与所述检测模型的第一匹配度;
获取模块还用于获取与所述待检测二进制协议数据包对应的无异常二进制协议数据包的第二匹配度;
计算模块,用于基于所述第一匹配度和所述第二匹配度,得到所述待检测二进制协议数据与所述无异常二进制协议数据包的偏离度;
检测模块,用于根据所述偏离度确定所述待检测二进制协议数据包是否异常。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述任意一项所述的网络协议异常检测方法的步骤。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任意一项所述的网络协议异常检测方法的步骤。
上述网络协议异常检测方法、装置、计算机设备和存储介质,当获取到待检测二进制协议数据包之后,调用预先基于二进制协议数据包对隐马尔科夫模型训练得到的检测模型,进而根据待检测二进制协议数据包与检测模型的第一匹配度以及对应的无异常二进制协议数据包与检测模型的第二匹配度的偏离度确定待检测二进制协议数据包是否异常。该方法通过机器学习模型,将待检测二进制协议数据包与无异常二进制协议数据包进行差异比较实现对二进制协议内容的检测,不仅能适用于各种不同类型的二进制协议的检测,还能提高检测的准确率。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的网络协议异常检测方法,可以应用于如图1所示的应用环境中。该应用环境涉及网关设备102、网络协议异常检测装置104和网络设备106,网关设备102与网络协议异常检测装置104、网络设备106通过网络进行通信。具体地,网关设备102可以基于二进制协议与网络设备106进行通信,从而产生对应的二进制协议数据包。而当需要检测是否遭遇网络攻击时,网络协议异常检测装置104从网关设备102获取待检测二进制协议数据包之后,调用预先训练好的检测模型;检测模型为预先基于二进制协议数据包对隐马尔科夫模型训练得到;网络协议异常检测装置104确定待检测二进制协议数据包与检测模型的第一匹配度;网络协议异常检测装置104获取协议类型与待检测二进制协议数据包对应的无异常二进制协议数据包的第二匹配度;网络协议异常检测装置104基于第一匹配度和第二匹配度,得到待检测二进制协议数据与无异常二进制协议数据包的偏离度;网络协议异常检测装置104根据偏离度确定待检测二进制协议数据包是否异常。其中,网络协议异常检测装置104可以是终端或服务器。终端可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备,服务器可以用独立的服务器或者是多个服务器组成的服务器集群来实现。网关设备102可以但不限于是路由器、交换机、转换机等用于连接多个网络设备的装置。
在一个实施例中,如图2所示,提供了一种二进制协议异常检测方法,以该方法应用于图1中的网络协议异常检测装置为例进行说明,包括以下步骤:
步骤S202,获取待检测二进制协议数据包。
其中,待检测二进制协议数据包是当前需要进行异常检测的二进制协议的数据包。因为网络流量通常都是以数据包的形式存在的,所以二进制协议数据包可以理解为二进制协议产生的网络流量。
具体地,当进行二进制协议异常检测时,首要就是获取被检测的二进制协议对应的网络流量,即获取到待检测二进制协议数据包。待检测二进制协议数据包可以是从网关处获取。预先在网关中设置流量镜像功能,然后利用设置的流量镜像功能从网关中镜像得到待检测二进制协议产生的网络流量,得到待检测二进制协议数据包。镜像传统通常是指一个磁盘上的数据在另一个磁盘上存在一个完全相同的副本。所以,利用流量镜像功能获取待检测二进制协议数据包可以理解为是从网关中复制得到待检测二进制协议产生的网络流量。
在一个实施例中,可以根据二进制协议对应的协议号从网关镜像获取指定的二进制协议数据包。例如,由于二进制协议存在多种不同类型,因此当需要获取指定的某一类型的二进制协议数据包时,将指定的二进制协议的协议号发送给网关。然后,网关根据该二进制协议的协议号将这个指定的二进制协议产生的网络流量复制一份返回给网络协议异常检测装置,网络协议异常检测装置从而得到指定的二进制协议数据包。其中,协议号是二进制协议的唯一标识,通过协议号可以确定唯一的二进制协议。
步骤S204,调用预先训练好的检测模型,检测模型为预先基于二进制协议数据包对隐马尔科夫模型训练得到。
其中,隐马尔科夫模型(Hidden Markov Model,HMM)是经典的机器学习模型之一,它在语言识别、自然语言处理员自己模式识别等领域得到广泛应用。而本实施例中的检测模型即是基于二进制协议数据包对HMM模型训练所得。
具体地,当获取到待检测二进制协议数据包之后,调用预先训练好的,与待检测二进制协议数据包对应的检测模型。例如,当获取到的待检测二进制协议数据包对应的是二进制协议1,那么所调用的检测模型应当是预先基于二进制协议1的数据包训练好的检测模型。而调用指定的检测模型时,可以是根据待检测二进制协议数据包对应的二进制协议的协议号调用。例如,假设预先训练好的检测模型包括1和2,检测模型1是由协议号为1的二进制协议的数据包训练得到的,检测模型2是由协议号为2的二进制协议的数据包训练得到的。而获取的待检测二进制协议数据包对应的二进制协议的协议号是2,则调用检测模型时应当调用检测模型2。
步骤S206,确定待检测二进制协议数据包与检测模型的第一匹配度。
其中,第一匹配度是待检测二进制协议数据包与检测模型的匹配概率值,用于衡量待检测二进制协议数据包与检测模型的匹配程度。
在一个实施例中,确定待检测二进制协议数据包与检测模型的第一匹配度的步骤,具体包括:将待检测二进制协议数据包转换成对应的观测序列和状态序列;基于检测模型的预测参数、观测序列和状态序列,确定前向变量值和后向变量值;根据前向变量值和后向变量值计算得到似然概率;获取似然概率的平均对数,得到待检测二进制协议数据包与检测模型的第一匹配度。
具体地,由于检测模型是由HMM模型训练得到,而HMM模型所解决的问题的特征在于问题是序列的。以及所解决的问题应当存在有两类序列数据,一类序列数据是可以观测到的观测序列。而另一类序列数据是不能观测到的隐藏序列,通常称为状态序列。因此,在确定待检测二进制协议数据包和检测模型的第一匹配度时,应当先将待检测二进制协议数据包转换成对应的观测序列和状态序列。
由于利用二进制协议数据包训练HMM模型得到检测模型时,是将二进制协议数据包作为一个时间序列、这个数据包中的各字节视为观测值以及将每个字节所处的区间作为该字节的状态值。所以,在此基础上,基于预设的观测空间V和状态区间M将二进制协议数据包转换成对应的观测序列和状态序列。因此,在本实施例中,将待检测二进制协议数据包转换对应状态系列时,应当同样将待检测二进制协议数据包作为一个时间序列以及该数据包中各字节视为观测值,并基于训练时预设的观测值空间V和状态区间M转换得到待检测二进制协议数据包的状态序列。其中,数据包作为时间序列是指将数据包中每个字节视为对应的时刻t,总时刻T即是数据包的总字节数。观测空间V是指观测值取值的范围,由于8位二进制能表示的最大值是11111111=255。所以观测空间可以但不限于是V={1,2,…,N=256}。而状态区间M是指需要划分区间的个数,由于划分区间的规则是基于观测值的大小进行划分,所以M的取值范围根据观测空间V设定,当V={1,2,…,N=256}时,M的取值范围为1至256。状态空间即为S={1,2,…,M},也就是状态序列中各状态值的取值范围为1,2,…,M。
在一个实施例中,将待检测二进制协议数据包转换成对应的状态序列,具体包括:将待检测二进制协议数据包中各字节转换成观测值,得到观测序列;获取预设的状态区间以及各状态区间包括的观测值;基于状态区间包括的观测值,确定观测序列中各观测值的所属状态区间;将所属状态区间的区间号作为状态值,得到状态序列。
具体地,将检测二进制协议数据包转换成对应的观测序列和状态序列时,首先确定训练模型时预设的观测空间V和状态区间M,将观测空间V按照观测值的大小从小到大划分为M个区间。然后,将各字节从二进制转换为十进制,在十进制的基础上加1,得到的值为字节对应的观测值。例如,当V={1,2,…,N=256}时,字节11111111=255对应的观测值为256。
然后,确定观测序列中各观测值的所属状态区间的区间号作为字节的状态值。例如,当M为8时,按照1~N/M,N/M+1~2N/M,…这样划分得到8个区间,这8个区间中均包括32个观测值。而假设字节对应的观测值为4,而观测值4的所属状态区间是第一个区间,所以该字节的状态值为1。字节对应的观测值为34,34所属状态区间是第二个区间,所以该字节状态值为2。简单来说,各字节的状态值即相当于该字节对应观测值所属状态区间的区间号,区间号和区间内包括的观测值是根据预设的状态区间M划分确定。当所有字节都确定对应的观测值和状态值之后,分别将所有观测值和状态值按照数据包中字节的顺序进行排序,得到观测序列和状态序列。
当将待检测二进制协议数据包转换成对应的观测序列和状态序列之后,即可利用前向后向算法(Forward-backward algorithm)计算待检测二进制协议数据包与检测模型的似然概率,并且将该似然概率的平均对数作为得到的第一匹配度。首先根据检测模型的预测参数、待检测二进制协议数据包对应的观测序列和状态序列确定前向后向算法所用的前向变量值和后向变量值,前后向变量定义公式如下:
αt(j)=P[St=j,o1:t|θ]
βt(j)=P[ot+1:T|St=j,θ]
θ={π,A,B}
π={π1,π2,…,πM}
A={aij}
B={bi(v)}
αt(j)为前向变量值、βt(j)为后向变量值,O1:t表示1至t时刻的观测值(观测序列),St是状态序列中t时刻状态值为j的概率。T为总时刻,例如t=1,2,3,4,…,50则T=50。θ表示检测模型的参数集合,π、A和B是检测模型θ的预测参数,π表示初始状态概率、A为状态转移概率、B为观测概率。M为预设的状态区间,πi为初始状态为状态i的概率,aij为状态值从i转为j的概率,bi(v)为在状态值i时能观测到观测值V的概率,i和j=1,2,…,M。
然后,根据确定的前向变量值和后向变量值计算得到平均对数似然概率,将得到的平均对数似然概率作为匹配度。计算公式如下:
p[O1:T|θ]=∑jαt(j)βt(j)
p[O
1:T|θ]为似然概率,
为平均对数似然概率,α
t(j)为前向变量,β
t(j)为后向变量。在本实施例中,由于序列长短不一会影响计算的准确性,因此通过对似然概率进行平均对数的处理,可以减少由序列长短所导致的结果误差。
步骤S208,获取协议类型与待检测二进制协议数据包对应的无异常二进制协议数据包的第二匹配度。
具体地,第二匹配度为无异常二进制协议数据包与检测模型的匹配度,第二匹配度可以是在训练HHM模型得到检测模型之后,根据检测模型的预测参数和无异常二进制协议数据包计算得到。可以理解为,第二匹配度的确定方式与第一匹配度的确定方式相同。即,将无异常二进制协议数据转换成对应的观测序列和状态序列之后,根据观测序列、状态序列以及检测模型的预测参数确定无异常二进制协议数据对应的前向变量值和后向变量值。然后,根据确定的对应的前向变量值和后向变量值计算得到无异常二进制协议数据包的平均对数似然概率,从而得到第二匹配度。
应当理解的是,由于训练HMM模型时所用数据包均是无异常的数据包,因此无异常二进制协议数据包可以直接使用训练模型时所用的二进制协议数据包。
步骤S210,基于第一匹配度和第二匹配度,得到待检测二进制协议数据与无异常二进制协议数据包的偏离度。
步骤S212,根据偏离度确定待检测二进制协议数据包是否异常。
其中,由于偏离度是与无异常二进制协议数据包的第二匹配度得到的,因此是用于衡量待检测二进制协议数据包是否偏离正常范围的数值。
具体地,在概率统计学中,如果随机变量X服务均值为Z、标准方差为W的正态分布,那么X的值在[Z-3W,Z+3W]上的概率为99.97%。所以,通常只要当X的值不在这个范围内,即可认为是异常值。基于此,本实施例中的偏离度为待检测二进制协议数据包的第一匹配度与无异常二进制协议数据包的第二匹配度的均值的差值的绝对值。然后,将得到的差值的绝对值与第二匹配度的标准方差进行比较即可确定待检测二进制协议数据包与无异常二进制协议数据包的偏离度是否超出正常范围,从而确定待检测二进制协议数据包是否异常。
在一个实施例中,基于第一匹配度和第二匹配度,得到待检测二进制协议数据与无异常二进制协议数据包的偏离度的步骤,具体包括:获取第二匹配度的均值;计算第一匹配度和均值的差的绝对值,得到待检测二进制协议数据包与无异常二进制协议数据包的偏离度。
具体地,获取到第二匹配度之后,首先计算第二匹配度的均值。第二匹配度的均值由概率统计领域中均值的计算方法计算得到。当得到第二匹配度的均值之后,计算第一匹配度与这个均值的差的绝对值,所得到的值为偏离度。计算公式如下:
|μ-μ0|
μ为第一匹配度,μ0为第二匹配度的均值,||表示绝对值。
在一个实施例中,根据偏离度确定待检测二进制协议数据包是否异常的步骤,具体包括:获取第二匹配度的标准方差;当偏离度不小于预设倍数的所述标准方差的值时,确定待检测二进制协议数据包异常;当偏离度小于预设倍数的所述标准方差的值时,确定待检测二进制协议数据包无异常。
具体地,因为变量X要处于[Z-3W,Z+3W]之内才表示其不为异常值,所以本实施例中所设定的预设倍数应当为3。因此,当计算得到偏离度之后,将得到的偏离度与3倍的第二匹配度的标准方差进行比较。当偏离度大于等于3倍的第二匹配度的标准方差时,即可确定第一匹配度不处于正常范围内,那么对应的待检测二进制协议数据包存在异常。而当偏离度小于3倍的第二匹配度的标准方差时,即可确定第一匹配度处于正常范围内,对应的待检测二进制协议数据包不存在异常。其中,第二匹配度的标准方差的计算可以采用概率统计领域中计算标准方差的计算方式。假设第二匹配值的标准方差为σ0,确定是否异常的判别式如下:
|μ-μ0|≥3σ0
上述网络协议异常检测方法,当获取到待检测二进制协议数据包之后,调用预先基于二进制协议数据包对隐马尔科夫模型训练得到的检测模型,进而根据待检测二进制协议数据包与检测模型的第一匹配度以及对应的无异常二进制协议数据包与检测模型的第二匹配度的偏离度确定待检测二进制协议数据包是否异常。该方法通过机器学习模型,将待检测二进制协议数据包与无异常二进制协议数据包进行差异比较实现对二进制协议内容的检测,不仅能适用于各种不同类型的二进制协议的检测,还能提高检测的准确率。
在一个实施例中,如图3所示,基于二进制协议数据包对隐马尔科夫模型训练得到检测模型的方法,包括以下步骤:
步骤S302,利用流镜像获取二进制协议数据包。
具体地,训练HMM模型时所用的二进制协议数据包同样可利用在网关设置的流量镜像功能复制得到。
步骤S304,基于预设五元组信息对二进制协议数据包进行分类和流重组,得到二进制协议训练数据包。
其中,五元组信息是预先定义用于区分二进制协议数据包的信息,包括源IP、目的IP、传输协议号、源端口、目的端口。流重组是指将得到的二进制协议数据包进行组合的过程。二进制协议训练数据包是用于训练HMM模型的数据包。
具体地,为了保证检测模型的精准性,属于同一类型以及同一来源的二进制协议数据包作为一个模型的训练数据训练得到一个检测模型。即,基于不同类型的二进制协议训练得到多个与类型对应的检测模型。因此,当从网关镜像获取到二进制协议数据包之后,基于预先定义的五元组信息将得到的二进制协议数据包进行分类。源IP、目的IP、传输协议号、源端口、目的端口均相同的二进制协议数据包分为一类。然后,根据到达时间的先后将分为同一类的二进制协议数据包进行流重组,得到二进制协议训练数据包。例如,当根据五元组信息分类得到2类二进制协议数据包时,那么流重组得到的二进制协议训练数据也是2个。然后基于这2个二进制协议训练数据包分别训练HMM模型,得到两个检测模型。当对获取到的待检测二进制协议数据包进行异常检测时,则从这2个检测模型中调用对应的那一个检测模型。
步骤S306,将二进制协议训练数据包转换成对应的观测序列和状态序列,得到训练观测序列和训练状态序列。
其中,训练观测序列和训练状态序列是二进制协议训练数据包的观测序列和状态序列。
具体地,基于预设的观测空间V和状态区间M将二进制协议训练数据包转换得到对应的观测序列和状态序列,得到训练观测序列和训练状态序列。例如,以V={1,2,…,N=256}、M=8为例,同时假设二进制协议数据包X中各字节为:X=X1,X2,X3,X4=11111111(255),11100011(227),00111100(10),01011010(90)。因此,数据包X对应的观测序列X={256,228,11,91},而观测值256属于第8个区间,观测值228属于第8个区间,观测值11属于第1个区间以及观测值91属于第3个区间,所以状态序列Y={8,8,1,3}。并且,由于假设的X数据包括四个字节,所以时刻t=1,2,3,4,以及总时刻T=4。
步骤S308,基于预设的前向变量初始值、后向变量初始值、训练观测序列以及训练状态序列,对隐马尔科夫模型的模型参数进行迭代更新,得到检测模型。
其中,前向变量初始值和后向变量初始值是预设的时间为第t=1时刻的值,用于推导得到初始训练HMM模型的前向变量值和后向变量值。
在一个实施例中,基于预设的前向变量初始值、后向变量初始值、训练观测序列以及训练状态序列,对隐马尔科夫模型的模型参数进行迭代更新,得到检测模型,具体包括:根据预设的前向变量初始值、后向变量初始值以及训练状态序列,得到前向变量训练值和后向变量训练值;将前向变量训练值和后向变量训练值作为更新值;利用更新值和训练观测序列对隐马尔科夫模型的参数进行更新,得到更新参数;当更新参数未满足迭代条件时,基于更新参数、训练观测序列和训练状态序列,对前向变量训练值和后向变量训练值进行更新,得到更新后的前向变量训练值和后向变量训练值;将更新后的前向变量训练值和后向变量训练值作为更新值,返回利用更新值和训练观测序列对隐马尔科夫模型的参数进行更新的步骤,直至满足迭代条件为止,得到检测模型。
其中,前向变量训练值和后向变量训练值即为初始训练HMM模型的前向变量值和后向变量值。确定迭代是否停止的迭代条件可以是迭代次数,或者参数是否收敛。当迭代训练的次数满足预设的迭代次数,或者训练后得到的参数趋于收敛时,即可停止迭代。迭代训练可以理解为是对模型θ中的各个模型参数π、A和B进行不断的更新。
具体地,基于前向变量初始值和后向变量初始值、以及HMM模型的初始模型参数和训练状态序列推导得到前向变量训练值和后向变量训练值,推导公式如下:
α1(j)=πj
βT(j)=1
α1(j)=πj为前向变量初始值、βT(j)=1为后向变量初始值,α′t(j)为前向变量训练值,β′T(j)为后向变量训练值。
然后,将前向变量训练值和后向变量训练值作为更新值,与观测序列对HMM模型的参数进行更新。当得到的更新参数是预设迭代次数的最后一个更新参数,或者更新参数已经处于收敛时,则可以停止迭代。例如,预设迭代次数时5,而当前得到更新参数正好为第5次训练得到的参数,则满足迭代条件可以停止训练。将经过5次训练后得到的模型和参数作为检测模型以及预测参数。而当未满足迭代条件时,基于前后向变量定义公式,根据当前得到的更新参数对前向变量训练值和后向变量训练值进行更新,即根据当前得到更新参数重新计算得到新的前向变量训练值和后向变量训练值之后,在基于新得到的前向变量训练值和后向变量训练值再次更新模型的参数。
例如,根据前向变量初始值和后向变量初始值推导得到前向变量训练值1和后向变量训练值1之后,利用该前向变量训练值1和后向变量训练值1对初始HMM模型进行训练,即更新初始HMM模型的初始参数,得到更新参数1。而此时还未满足迭代条件,在基于更新参数1、训练观测序列以及训练状态序列对前向变量训练值1和后向变量训练值1进行更新,得到前向变量训练值2和后向变量训练值2,具体计算公式可以利用步骤S206中的前后向变量定义公式。然后,利用前向变量训练值2和后向变量训练值2对包括更新参数1的模型再次进行训练,得到更新参数2,直到满足迭代条件为止。迭代训练公式如下:
ξt(i,j)=p[St=i,St+1=j,O1:t|θ]=αt(i)aijbj(Ot+1)βt+1(j)
γt(j)=p[St=j,O1:t|θ]=Σjξt(i,j)
为迭代训练中的参数π,
为迭代训练中的参数A,
为迭代训练中的参数B,ξ
t(i,j)和γ
t(j)为中间变量。其中,当O
t=v时,I(O
t=v)=1,否则I(O
t=v)=0。在本实施例中,通过训练HHM模型得到对应的检测模型,实现了基于机器学习模型对二进制协议数据包的学习,后续可直接根据检测模型对待检测二进制协议数据包进行异常检测。
应该理解的是,虽然图2-3的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2-3中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图4所示,提供了一种网络协议异常检测装置,包括:获取模块402、调用模块404、确定模块406、计算模块408和检测模块410,其中:
获取模块402,用于获取待检测二进制协议数据包。
调用模块404,用于调用预先训练好的检测模型;检测模型为预先基于二进制协议数据包对隐马尔科夫模型训练得到。
确定模块406,用于确定待检测二进制协议数据包与检测模型的第一匹配度。
获取模块402还用于获取与待检测二进制协议数据包对应的无异常二进制协议数据包的第二匹配度;
计算模块408,用于基于第一匹配度和第二匹配度,得到待检测二进制协议数据与无异常二进制协议数据包的偏离度。
检测模块410,用于根据偏离度确定所述待检测二进制协议数据包是否异常。
在一个实施例中,确定模块406还用于将待检测二进制协议数据包转换成对应的观测序列和状态序列;基于检测模型的预测参数、观测序列和状态序列,确定前向变量值和后向变量值;根据前向变量值和后向变量值计算得到似然概率;获取似然概率的平均对数,得到待检测二进制协议数据包与检测模型的第一匹配度。
在一个实施例中,确定模块406还用于将待检测二进制协议数据包中各字节转换成观测值,得到观测序列;获取预设的状态区间以及各状态区间包括的观测值;确定观测序列中各观测值的所属状态区间;将所属状态区间的区间号作为状态值,得到状态序列。
在一个实施例中,计算模块408还用于获取第二匹配度的均值;计算第一匹配度和均值的差的绝对值,得到待检测二进制协议数据包与无异常二进制协议数据包的偏离度。
在一个实施例中,检测模块410还用于获取第二匹配度的标准方差;当偏离度不小于预设倍数的所述标准方差的值时,确定待检测二进制协议数据包异常;当偏离度小于预设倍数的所述标准方差的值时,确定待检测二进制协议数据包无异常。
在一个实施例中,网络协议异常检测装置还包括训练模块,用于利用流镜像获取二进制协议数据包;基于预设五元组信息对二进制协议数据包进行分类和流重组,得到二进制协议训练数据包;将二进制协议训练数据包转换成对应的观测序列和状态序列,得到训练观测序列和训练状态序列;基于预设的前向变量初始值、后向变量初始值、训练观测序列以及训练状态序列,对隐马尔科夫模型的模型参数进行迭代更新,得到检测模型。
在一个实施例中,训练模块还用于根据预设的前向变量初始值、后向变量初始值以及训练状态序列,得到前向变量训练值和后向变量训练值;将前向变量训练值和后向变量训练值作为更新值;利用更新值和训练观测序列对隐马尔科夫模型的参数进行更新,得到更新参数;当更新参数未满足迭代条件时,基于更新参数、训练观测序列以及训练状态序列,对前向变量训练值和后向变量训练值进行更新,得到更新后的前向变量训练值和后向变量训练值;将更新后的前向变量训练值和后向变量训练值作为更新值,返回利用更新值和训练观测序列对隐马尔科夫模型的参数进行更新的步骤,直至满足迭代条件为止,得到检测模型。
关于网络协议异常检测装置的具体限定可以参见上文中对于网络协议异常检测方法的限定,在此不再赘述。上述网络协议异常检测装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是网络协议异常检测装置,其内部结构图可以如图5所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种网络协议异常检测方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图5中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:
获取待检测二进制协议数据包;
调用预先训练好的检测模型;检测模型为预先基于二进制协议数据包对隐马尔科夫模型训练得到;
确定待检测二进制协议数据包与检测模型的第一匹配度;
获取与待检测二进制协议数据包对应的无异常二进制协议数据包的第二匹配度;
基于第一匹配度和第二匹配度,得到待检测二进制协议数据与无异常二进制协议数据包的偏离度;
根据偏离度确定所述待检测二进制协议数据包是否异常。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:将待检测二进制协议数据包转换成对应的观测序列和状态序列;基于检测模型的预测参数、观测序列和状态序列,确定前向变量值和后向变量值;根据前向变量值和后向变量值计算得到似然概率;获取似然概率的平均对数,得到待检测二进制协议数据包与所述检测模型的第一匹配度。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:将待检测二进制协议数据包中各字节转换成观测值,得到观测序列;获取预设的状态区间以及各状态区间包括的观测值;确定观测序列中各观测值的所属状态区间;将所属状态区间的区间号作为状态值,得到状态序列。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:获取第二匹配度的均值;计算第一匹配度和均值的差的绝对值,得到待检测二进制协议数据包与无异常二进制协议数据包的偏离度。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:获取第二匹配度的标准方差;当偏离度不小于预设倍数的所述标准方差的值时,确定待检测二进制协议数据包异常;当偏离度小于预设倍数的所述标准方差的值时,确定待检测二进制协议数据包无异常。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:利用流镜像获取二进制协议数据包;基于预设五元组信息对二进制协议数据包进行分类和流重组,得到二进制协议训练数据包;将二进制协议训练数据包转换成对应的观测序列和状态序列,得到训练观测序列和训练状态序列;基于预设的前向变量初始值、后向变量初始值、训练观测序列以及训练状态序列,对隐马尔科夫模型的模型参数进行迭代更新,得到检测模型。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:根据预设的前向变量初始值、后向变量初始值以及训练状态序列,得到前向变量训练值和后向变量训练值;将前向变量训练值和后向变量训练值作为更新值;利用更新值和训练观测序列对隐马尔科夫模型的参数进行更新,得到更新参数;当更新参数未满足迭代条件时,基于更新参数、训练观测序列以及训练状态序列,对前向变量训练值和后向变量训练值进行更新,得到更新后的前向变量训练值和后向变量训练值;将更新后的前向变量训练值和后向变量训练值作为更新值,返回利用更新值和训练观测序列对隐马尔科夫模型的参数进行更新的步骤,直至满足迭代条件为止,得到检测模型。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
获取待检测二进制协议数据包;
调用预先训练好的检测模型;检测模型为预先基于二进制协议数据包对隐马尔科夫模型训练得到;
确定待检测二进制协议数据包与检测模型的第一匹配度;
获取与待检测二进制协议数据包对应的无异常二进制协议数据包的第二匹配度;
基于第一匹配度和第二匹配度,得到待检测二进制协议数据与无异常二进制协议数据包的偏离度;
根据偏离度确定所述待检测二进制协议数据包是否异常。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:将待检测二进制协议数据包转换成对应的观测序列和状态序列;基于检测模型的预测参数、观测序列和状态序列,确定前向变量值和后向变量值;根据前向变量值和后向变量值计算得到似然概率;获取似然概率的平均对数,得到待检测二进制协议数据包与所述检测模型的第一匹配度。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:将待检测二进制协议数据包中各字节转换成观测值,得到观测序列;获取预设的状态区间以及各状态区间包括的观测值;确定观测序列中各观测值的所属状态区间;将所属状态区间的区间号作为状态值,得到状态序列。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:获取第二匹配度的均值;计算第一匹配度和均值的差的绝对值,得到待检测二进制协议数据包与无异常二进制协议数据包的偏离度。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:获取第二匹配度的标准方差;当偏离度不小于预设倍数的所述标准方差的值时,确定待检测二进制协议数据包异常;当偏离度小于预设倍数的所述标准方差的值时,确定待检测二进制协议数据包无异常。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:利用流镜像获取二进制协议数据包;基于预设五元组信息对二进制协议数据包进行分类和流重组,得到二进制协议训练数据包;将二进制协议训练数据包转换成对应的观测序列和状态序列,得到训练观测序列和训练状态序列;基于预设的前向变量初始值、后向变量初始值、训练观测序列以及训练状态序列,对隐马尔科夫模型的模型参数进行迭代更新,得到检测模型。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:根据预设的前向变量初始值、后向变量初始值以及训练状态序列,得到前向变量训练值和后向变量训练值;将前向变量训练值和后向变量训练值作为更新值;利用更新值和训练观测序列对隐马尔科夫模型的参数进行更新,得到更新参数;当更新参数未满足迭代条件时,基于更新参数、训练观测序列和训练状态序列,对前向变量训练值和后向变量训练值进行更新,得到更新后的前向变量训练值和后向变量训练值;将更新后的前向变量训练值和后向变量训练值作为更新值,返回利用更新值和训练观测序列对隐马尔科夫模型的参数进行更新的步骤,直至满足迭代条件为止,得到检测模型。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。