CN112202726A - 一种基于上下文感知的***异常检测方法 - Google Patents
一种基于上下文感知的***异常检测方法 Download PDFInfo
- Publication number
- CN112202726A CN112202726A CN202010948293.1A CN202010948293A CN112202726A CN 112202726 A CN112202726 A CN 112202726A CN 202010948293 A CN202010948293 A CN 202010948293A CN 112202726 A CN112202726 A CN 112202726A
- Authority
- CN
- China
- Prior art keywords
- model
- behavior
- system behavior
- detection
- sequence
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1408—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
- H04L63/1425—Traffic logging, e.g. anomaly detection
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/049—Temporal neural networks, e.g. delay elements, oscillating neurons or pulsed inputs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1408—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
- H04L63/1416—Event detection, e.g. attack signature detection
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Computer Security & Cryptography (AREA)
- General Health & Medical Sciences (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Biophysics (AREA)
- Molecular Biology (AREA)
- Biomedical Technology (AREA)
- Artificial Intelligence (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种基于上下文感知的***异常检测方法,该方法结合长短期记忆神经网络构建异常检测模型,实现对***异常行为的检测。本方法从在***运行时从***堆栈信息中获取***调用的上下文信息,构建上下文信息列表,然后截取训练数据中固定长度的***行为序列,使用词嵌入向量进行状态压缩并且使用长短期记忆神经网络搭建异常检测模型,训练异常检测模型后便可以实现***异常调用序列的检测。本发明还通过调整参数进行误报率控制,并且通过收集误报的检测结果,进行在线模型更新进行参数的调整以优化模型,实现了高效精确的***异常检测。
Description
技术领域
本发明属于***异常检测领域,特别涉及一种基于上下文感知的***异常检测方法。
背景技术
***异常检测技术可以识别***中与预期不符的状态、事件或其他变量。***异常检测技术的优点是不依赖攻击签名,能够主动防御未知的攻击和异常,然而随着***规模和应用程序的复杂度的增大,***和应用也将遇到越来越多的漏洞和缺陷,而利用这些漏洞和缺陷发起的攻击也变得越来越复杂。这使得异常检测技术变得更加困难,许多传统的基于异常特征的检测方法已不再有效。针对这一问题,许多研究都提出使用***正常运行时的特征的而不是***受到攻击时的特征进行异常检测,对***正常行为进行精确建模,从而通过当前的行为模式检测潜在的异常行为。现有技术构建出***正常行为模型主要分为两大类:确定性模型和概率模型。其中,确定性模型的思想主要是记录***曾出现过的所有正常行为,若检测中发现未知的行为则标记为异常。确定性模型无法区分行为发生的概率上的异常,从而有很高的误报率和低检出率。相反,概率模型则主要通过历史数据计算当前各种行为发生的可能性,若发生概率低于置信区间的门限,则判断为异常。以下专利提供了可供参考的***异常检测方法:
文献1.一种分布式***异常检测方法(201110093278.4)
文献2.云计算中一种基于神经网络的异常检测***(201210559741.4)
文献3.一种日常流异常检测的方法及***(201710607485.4)
文献1根据历史信息确定测度属性的历史关联度,生成测度属性关系网络划分模型,对新采集到的数据进行关联度计算,更新网络模型,依据划分结果判断是否出现异常。它的问题是只考虑相似度单一方面,模型特征不足,提供的信息比较片面。
文献2收集监控主机端上的日志,按照一定的神经网络算法定义异常事件的类型,更新代理规则库,当符合定义的异常特征时产生响应。该方法存在的问题是训练规模较大。
文献3利用检测模型对日志流进行异常检测,从静态统计数据中提取数据特征,并将所述特征输入初始模型中,训练模型后获取日志流,并更新数据。它的问题是只提取静态统计数据特征,没有考虑上下文信息。
以上文献都存在的问题是没有很好地利用上下文信息,无法检测复用***正常代码的各类攻击。总体而言,当前相关异常检测工作缺乏上下文信息,导致当前工作采用的数据特征不足,出现检测性能提升的瓶颈。因此迫切需要将上下文数据加入异常检测模型中进行研究。
发明内容
本发明的目的在于提供一种基于上下文感知的***异常检测方法,该方法可实时学习并更新参数,解决无法实时更新模型的问题。
本发明采用如下技术方案来实现的:
一种基于上下文感知的***异常检测方法,包括以下步骤:
1)根据***调用获得上下文***行为信息;
2)将不同的***行为用不同的哈希值表示;
3)使用词嵌入向量来进行状态的压缩并利用长短期记忆神经网络构建异常检测模型,使用哈希值表示的***行为来进行模型的训练;
4)使用训练好的模型进行异常检测。
本发明进一步的改进在于,该方法还包括:调整参数控制误报率,收集误报的检测结果,并通过该结果更新现有模型来提升准确率。
本发明进一步的改进在于,步骤1)的具体的实现步骤如下:
Step1.获取***调用名称和程序地址
每次***调用时,获取***调用名称和当前的PC即程序计数器,PC代表调用***调用的程序地址;
Step2.构建上下文信息列表
收集***栈中的所有返回地址提取到上下文信息列表中,将当前PC作为元素添加到列表中,这个上下文信息列表记录***的调用结构信息;
Step3.递归函数处理
如果在栈中发现一对相同的返回地址,那么它们可能是产生了递归调用,那么***将它们之间的所有的返回地址都从上下文信息列表中删除。
本发明进一步的改进在于,步骤2)的具体的实现步骤如下:
Step1.***行为表示
定义S={s1,s2,s3...sN}表示所有***行为的集合,其中的元素si即为***行为;定义w={m1,m2,m3,…,mn}为一段时间内的***行为序列,其中mi表示序列中位置i处的行为;那么mi的取值是S中N个元素中的任意一个,并且它的值依赖于mi之前出现的***行为;
模型的输入是最近的***历史数据,输出是n个属于S的***行为的概率分布,分别表示下一个将要发生的***行为是si的概率;如果要预测的下一个***行为是mt,那么用于模型的输入便是长度为h的最近产生的***行为序列w;其中w={mt-h,..,mt-2,mt-1},其中每个mi的值都在集合S中,其中不同的w序列中的不同元素可能取值一样;模型的输出则是mt取值的条件概率分布P[mt=si|w],其中si∈S,i=1,...,n,检测时若实际的mt结果在该条件概率的置信区间外,则认定为异常;
Step2.截取***行为序列
使用步进法,依次截取训练数据中长度为h的时间窗口的***行为序列,并根据它更新模型,以获得将每个si∈S作为下一个***行为的概率分布;
Step3.异常类型判定
模型的检测阶段是在线实时的,将实时捕获的***行为日志流式的传入检测模型中;假设方法要检测传入的***行为mt是否是异常的,方法将w={mt-h,..,mt-2,mt-1}发送到模型中作为输入;此时的输出是概率分布P[mt|w]={s1:p1,s2:p2,...,sn:pn},描述了S中的每个***行为作为mt的概率;此时可能出现的异常有以下几种:
(1).实时获取***行为的程序失效,该异常为数据获取异常;
(2).训练数据中可能无法覆盖所有的***行为,因此检测阶段的mt的取值可能并不包含于***行为的集合S,该异常为***行为异常;
(3).通常检测阶段的mt的取值有多种可能,将mt对不同取值的概率P(mt=si|w,si∈S,i=1,...,n)进行排序,如果真实检测到的mt取值是概率排名前k个,则方法将其视为正常;否则,将其视为异常,该异常为行为序列异常。
本发明进一步的改进在于,步骤3)的具体的实现步骤如下:
Step1.模型简化
首先进行模型简化,假设一个***行为的概率是由它最近的N个前序行为决定,而不是整个历史中的所有前序决定,该简化等价于假设P(mt=si|m1,...,mt-1)=P(mt=si|mt-N,...,mt-1),在该假设下,使用训练数据中的相对频数来计算该概率,以给出其最大似然估计;
给定***行为序列训练数据W,训练LSTM的过程就是减小每个预测出的下一个***行为与训练数据中实际发生的***行为的偏差,训练过程就是学习一个概率分布P(mt=si|m1,...,mt-1),该分布使训练数据整体***行为序列的概率最大化;
Step2.传递历史信息
LSTM节点中每个单元的状态都包含一个隐藏状态向量Ht-i和单元状态向量Ct–i,两者都被传递到下一个时间节点中以初始化其状态,然后来自前一时间节点的状态(Ht-i,Ct-i)和此时的数据输入(mt-i)被共同用来计算此时新的状态和输出;
Step3.模型计算
LSTM通过前一时间节点的状态和此时的数据输入进行计算的过程有三个阶段:遗忘阶段,对上一个状态传来的输入进行选择性忘记;选择记忆阶段,对当前输入进行记忆;输出阶段,将通过计算得到的输出门参数,决定哪些内容将会被当成当前状态的输出;
Step4.模型训练
在训练过程中,使用梯度下降法来减少每个输入/输出对的损失函数;输入包含一个由h个***行为组成的w={mt-h,...,mt-1},输出的训练标签是窗口w对应的下一个***行为的值si,损失函数是使用分类交叉熵来进行计算的;完成训练后,便那个预测行为序列窗口w的输出,预测时,w中的每个***行为都在对应的LSTM块中。
本发明进一步的改进在于,步骤4)的具体的实现步骤如下:
对mt取值的条件概率分布进行排序,并根据概率前k个结果是否正常进行判定;k的取值越小,检出率越高,但是代价就是更高的误报率;k取值越大,误报率越小,但可能造成真正的异常没有被检测出来。
本发明进一步的改进在于,步骤5)的具体的实现步骤如下:
对每个异常进行人工诊断,若为误报,则根据新训练出的参数替换原有模型中的参数来在线更新模型;
如果是***行为异常,即检测阶段的mt的取值并不包含于训练数据中的***行为的集合S;若此时新的mt取值被诊断为正常,则把它添加到集合S中,并以该数据为训练标签更新嵌入层和隐藏层两部分模型;因此方法在初期根据S集合中的元素个数确定输入层维数时,预留出可能在实时检测过程中增加的数量;
若是行为序列异常,若经过人工诊断,发现结果为误报,此时将使用该数据为训练标签更新隐藏层模型的权重;从而使下次给定***行为序列时,***行为序列的下个***行为对应的概率升高,模型更新在原有基础上通过新的训练数据调整参数权重。
本发明至少具有如下有益的技术效果:
本发明提供的一种基于上下文感知的***异常检测方法,上下文特征信息可以生成更具表现力的行为模型从而提高检测准确性。该方法是基于***调用序列进行训练的概率模型异常检测***。首先,为了解决方案模型特征不足的问题,方法提出了使用堆栈信息来丰富现有***调用信息。从堆栈中方法可以获取***调用的上下文信息,然后将不同上下文的相同***调用区别对待,从而生成更准确的正常行为模型。其次,针对训练规模过大问题,受到基于RNN(循环神经网络)的自然语言处理模型的功能和性能优势的启发,方法提出使用词嵌入向量来进行状态的压缩并同时使用LSTM(长短期记忆)神经网络来预测不同***调用的概率,从而达到检测异常的***调用序列的目的。
综上,本发明首次提出根据上下文信息使用词嵌入向量来进行状态压缩并使用长短期记忆神经网络进行概率模型训练的方法,这种方法可以捕捉到各个***调用的潜在非线性和高维依赖性,从而更有效地检测***异常。
附图说明
图1为上下文感知的***调用异常检测机制总体结构示意图。
图2为整体框架流程示意图。
图3为长短期记忆神经网络应用流程示意图。
图4为LSTM模型时序展开示意图。
图5为LSTM整体神经网络结构示意图。
具体实施方式
以下结合附图和实施例对本发明做出进一步的说明。
本实施例基于开源神经网络Keras对Linux操作***下的异常检测进行建模。为了更清楚地说明本发明的技术方案,下面结合附图和具体实施例对本发明一种基于上下文感知的***异常检测方法进行详细描述。
如图1所示,上下文感知的***调用异常检测机制的工作流程主要包括***调用截取和上下文信息获取,模型训练及异常检测,图左侧部分,首先在***正常运行时获取大量***行为序列数据,接着将不同的***行为用不同的哈希值表示,并使用***行为序列来训练异常检测模型。图右侧部分所示,方法将新截获的***行为哈希值传入检测模型以检测其是否正常,同时记录结果。由于训练数据可能没有覆盖到所有情况且同时***正常行为模型可能会随着时间的推移而改变。所以还将收集误报的检测结果,并通过该结果更新现有模型。如图2所示,方法实施过程为:
S201.上下文信息获取
上下文信息在检测执行流程异常方面具有很强的作用,对于上下文不敏感的检测模型来说,正常调用序列中***函数的异常很难被检测到。然而,由于代码重用攻击可以利用整个进程内存中的现有代码,因此这些***调用可以位于任何代码段。虽然仍然符合正常的***调用序列顺序,但是可以通过上下文信息轻松地识别出不正确的函数调用栈信息。
Step 1.获取***调用名称和程序地址
每次***调用时,获取***调用名称和当前的PC。对于32位的Linux***,该入口地址在MSR(特殊模块寄存器)的IA32_SYSENTER_EIP中存储而,对于64位***,该入口地址在MSR的LSTAR中存储。在入口函数处注册监控点进行截获可以得到***调用,截获后可从***调用参数中获取***调用号及其它有用参数。32位***中,***调用的参数分别保存在EAX,EBX,ECX,EDX,ESI,EDI中,64位***中,***调用的参数分别保存在RAX,RDI,RSI,RDX,R10,R8,R9中,通过直接读取寄存器获得参数系信息。
在Linux***中,绝大多数上下文信息都与当前进程结构体task_struct相关,因此需要首先获取当前进程的task_struct。在Linux操作***中,创建进程时会在内核地址空间中预留一些空间存储该进程相关的信息,该空间是一个union类型,大小是2个连续的内存页面,进程的task_struct就保存在该空间中的thread_info中。根据thread_info的地址,可以得到task_struct的地址。其中进程名存储在task_struct下的comm对象中;进程号存储在pid对象中;而用户栈地址对于进程来说存储在mm->start_stack对象中,对于线程来说存储在thread->sp对象中。获取了用户栈地址后,可以模拟glibc的backtrace函数来进行调用栈信息提取。
Step2.构建上下文信息列表
方法将收集***栈中的所有返回地址提取,保存到上下文信息列表中Context={a0,a1,...,an-1},其中n是调用堆栈的层数,an-1代表调用***调用的函数的返回地址。然后将当前的PC作为an添加到列表Context中,此时上下文信息列表Context中便有n个元素。这个上下文信息列表主要记录着***的调用结构信息。
Step3.递归函数处理
对于递归函数来说,递归层数往往和参数等数据强相关。在这种情况下,同一个递归程序往往因为参数不同而造成深度不同,从而导致存在许多不同的上下文信息。这可能使训练过程变得更难以收敛或导致更高的误报率。一旦在栈中发现一对相同的返回地址,那么它们可能是产生了递归调用。此时***将它们之间的所有的返回地址都从上下文信息列表中删除。
S202.数据预处理
Step1.***行为表示
***调用是应用程序访问***资源的主要接口,可以很好地表现***行为。***正常情况下的行为是有限的,定义S={s1,s2,s3...sN}表示所有***行为的集合,其中的元素si代表***行为。另一方面,这种***行为组成的序列可以很好地表现***执行流程。定义w={m1,m2,m3,…,mn}为一段时间内的***行为序列,其中mi表示序列中位置i处的行为。mi的取值可能是S中N个元素中的任意一个,并且它的值强烈依赖于mi之前出现的***行为。
方法将该***调用序列异常检测问题建模为多类分类问题,其中每个不同的***行为是一个类。模型的输入是最近的***历史数据,输出是n个属于S的***行为的概率分布,分别代表下一个将要发生的***行为是si的概率。如果要预测的下一个***行为是mt,那么用于模型的输入便是长度为h的最近产生的***行为序列w。其中w={mt-h,..,mt-2,mt-1},其中每个mi的值都在集合S中,其中不同的w序列中的不同元素可能取值一样。而模型的输出则是mt取值的条件概率分布P[mt=si|w],其中si∈S(i=1,...,n)。那么检测时若实际的mt结果在该条件概率的置信区间外,则认定为异常。
Step2.截取***行为序列
模型的训练阶段主要依赖于***正常执行时捕获的***行为序列。本发明中使用步进法,依次截取训练数据中长度为h的时间窗口的***行为序列,并根据它更新模型,以获得将每个si∈S作为下一个***行为的概率分布。假设***正常执行时截获的***行为的连续数据为:{……,s36,s127,s87,s4,s10,s319,……},给定窗口大小h=3。那么用于训练模型的输入序列和输出标签对将是:{s36,s127,s87→s4},{s127,s87,s4→s10},{s87,s4,s10→s319}。
Step3.异常类型判定
如果方法要检测传入的***行为mt是否是异常的,方法需要将将w={mt-h,..,mt-2,mt-1}发送到模型中作为输入。此时的输出是概率分布P[mt|w]={s1:p1,s2:p2,...,sn:pn},描述了S中的每个***行为作为mt的概率。此时可能出现的异常有以下几种:
(1)实时获取***行为的程序失效。获取***行为的程序可能因为攻击或其他原因失效,从而造成无法正常获取***调用及其上下文的序列的问题,此时方法便不再有提供给异常检测模型的输入。该异常为数据获取异常。
(2)训练数据中可能无法覆盖所有的***行为,因此检测阶段的mt的取值可能并不包含于***行为的集合S。事实上,出现***正常执行中从未见过的***行为是非常高危的,很可能代表***异常发生。该异常为***行为异常。
(3)通常检测阶段的mt的取值有多种可能,而它们都是正常的。将mt对不同取值的概率P(mt=si|w,si∈S,i=1,...,n)进行排序,如果真实检测到的mt取值是概率排名前k个,则将其视为正常;否则视为异常。该异常为行为序列异常。
根据异常行为反馈得到行为异常类型。
S203.长短期记忆(LSTM)神经网络机制应用
下面结合图3-5描述长短期记忆神经网络机制的应用。
S301.模型简化
假设***行为序列训练数据W={m1,m2,…,mt},本发明使用其子序列w1={mt-N,...,mt-1,mt=si}和子序列w2={mt-N,...,mt-1}的相对频数在来预测mt取值为si的概率。
方法使用大小为N的滑动窗口对整个历史***行为序列进行频数计数。
与传统n元组概率模型相比,基于LSTM的模型可以识别更复杂的行为模式并在序列上维持长记忆状态。方法在模型中使用LSTM神经网络对***行为序列进行异常检测。给定***行为序列训练数据W,训练LSTM的过程就是尽量减小每个预测出的下一个***行为与训练数据中实际发生的***行为的偏差,训练过程就是学习一个概率分布P(mt=si|m1,...,mt-1)使训练数据整体***行为序列的概率最大化。
S302.传递历史信息
图4表现了LSTM节点在时序上的展开形式。其中每个单元的状态都包含有一个隐藏状态向量Ht-i和单元状态向量Ct-i。两者都被传递到下一个时间节点中以初始化其状态。然后来自前一时间节点的状态(Ht-i,Ct-i)和此时的数据输入(mt-i)被共同用来计算此时新的状态和输出。这就是LSTM模型中传递历史信息的方法。在方法的例子中,监控数据的时间窗口(h)中每个***行为都占用一个时间点,因此,单层的网络由h个时序上展开的LSTM块组成。
S303.模型计算
LSTM通过前一时间节点的状态和此时的数据输入进行计算的过程主要有三个阶段1)遗忘阶段。这个阶段主要是对上一个状态传来的输入进行选择性忘记。具体来说就是通过计算得到的遗忘门参数,来控制上一个状态中哪些内容需要留下来,哪些内容需要忘记;2)选择记忆阶段,这个阶段对当前输入进行记忆,具体来说就是通过计算得到的输入门参数,来控制当前输入哪些内容重要需要记录;3)输出阶段。这个阶段将通过计算得到的输出门参数,决定哪些内容将会被当成当前状态的输出。与传统递归神经网络有所不同的是,LSTM的输出通常可以从Ht中直接得到。
S304.模型训练
模型训练的过程主要就是对上述门的参数权重进行合适的分配及调整,以便LSTM的最终输出与训练数据的标签更接近。在训练过程中,使用梯度下降法来减少每个输入/输出对的损失函数。其中输入包含一个由h个***行为组成的窗口w={mt-h,...,mt-1},输出的训练标签是窗口w对应的下一个***行为的值si,损失函数是使用分类交叉熵来进行计算的。完成训练后,便可以预测行为序列窗口w的输出,预测时,w中的每个***行为都在对应的LSTM块中。
如图5所示,整个神经网络结构。首先,在输入层(input layer),每个时间窗口中对应的单个***行为mi将以one-hot编码的形式输入到模型中,换句话说,若S={s1,s2,s3...sN}是所有***行为的集合且mi的取值为sj,则此输入是第j个元素为1,其它的所有元素为0的N维向量。此时的输入向量是非常稀疏的,因此在嵌入层(embedding layer),方法会学习到一个嵌入矩阵W,通过与输入相乘,可以将输入压缩并嵌入到一个100维的连续空间中。在隐藏层(hidden layer),LSTM单元具有内部状态,并且在每个时间步骤周期性地更新该状态。在输出层(output layer),方法使用softmax激活函数将下一个可能发生的***行为归一化为统一的概率值的估计,以表示每个si∈S的P[mt=si|w]。图中的结构中仅使用了1个隐藏层,但真实的环境中可以根据数据隐含的状态数量使用更多的层从而变成深度LSTM神经网络。
S204.误报率控制
对于***调用异常检测的场景来说,直接采用分类结果进行异常检测会造成很高的误报率,因为实际场景中预测结果mt可能有多个取值都是正常的。对于给定时间窗口w={open@context1,read@context2,……,read@contexth-1},mt可能是read@contexth(概率为0.8)也可能是close@contexth(概率为0.2);这两种结果都是正常行为。那么直接采用分类结果read@contexth将会造成正常结果close@contexth被分类为异常,造成***的误报。方法对mt取值的条件概率分布P[mt=si|w],其中si∈S(i=1,...,n)进行排序,并规定概率前k个结果都为正常,否则认定为异常。显然,k的取值越小,检出率越高,但是代价就是更高的误报率;k取值越大,误报率越小,但可能造成真正的异常没有被检测出来。因此,为了平衡检出率和误报率,方法会根据实际情况调整k的大小,从而平衡检出率和误报率。
S205.在线模型更新
本发明提出了一套反馈机制来在线更新模型,即对每个异常进行人工诊断,若为误报,则根据新训练出的参数替换原有模型中的参数来在线更新模型。
本发明在初期根据S集合中的元素个数确定输入层维数时,应预留出可能在实时检测过程中增加的数量。如果是***行为异常,即检测阶段的mt的取值并不包含于训练数据中的***行为的集合S。若此时新的mt取值被诊断为正常,则方法需要把它添加到集合S中,并以该数据为训练标签更新嵌入层和隐藏层两部分模型;若是行为序列异常。若经过人工诊断,发现结果为误报,此时将使用该数据为训练标签更新隐藏层模型的权重。从而使下次给定***行为序列时,***行为序列的下个***行为对应的概率升高。模型更新只需在原有模型基础上,通过新的训练数据调整参数权重。
Claims (7)
1.一种基于上下文感知的***异常检测方法,其特征在于,包括以下步骤:
1)根据***调用获得上下文***行为信息;
2)将不同的***行为用不同的哈希值表示;
3)使用词嵌入向量来进行状态的压缩并利用长短期记忆神经网络构建异常检测模型,使用哈希值表示的***行为来进行模型的训练;
4)使用训练好的模型进行异常检测。
2.根据权利要求1所述的一种基于上下文感知的***异常检测方法,其特征在于,该方法还包括:调整参数控制误报率,收集误报的检测结果,并通过该结果更新现有模型来提升准确率。
3.根据权利要求1或2所述的一种基于上下文感知的***异常检测方法,其特征在于,步骤1)的具体的实现步骤如下:
Step 1.获取***调用名称和程序地址
每次***调用时,获取***调用名称和当前的PC即程序计数器,PC代表调用***调用的程序地址;
Step 2.构建上下文信息列表
收集***栈中的所有返回地址提取到上下文信息列表中,将当前PC作为元素添加到列表中,这个上下文信息列表记录***的调用结构信息;
Step 3.递归函数处理
如果在栈中发现一对相同的返回地址,那么它们可能是产生了递归调用,那么***将它们之间的所有的返回地址都从上下文信息列表中删除。
4.根据权利要求3所述的一种基于上下文感知的***异常检测方法,其特征在于,步骤2)的具体的实现步骤如下:
Step 1.***行为表示
定义S={s1,s2,s3...sN}表示所有***行为的集合,其中的元素si即为***行为;定义w={m1,m2,m3,…,mn}为一段时间内的***行为序列,其中mi表示序列中位置i处的行为;那么mi的取值是S中N个元素中的任意一个,并且它的值依赖于mi之前出现的***行为;
模型的输入是最近的***历史数据,输出是n个属于S的***行为的概率分布,分别表示下一个将要发生的***行为是si的概率;如果要预测的下一个***行为是mt,那么用于模型的输入便是长度为h的最近产生的***行为序列w;其中w={mt-h,..,mt-2,mt-1},其中每个mi的值都在集合S中,其中不同的w序列中的不同元素可能取值一样;模型的输出则是mt取值的条件概率分布P[mt=si|w],其中si∈S,i=1,...,n,检测时若实际的mt结果在该条件概率的置信区间外,则认定为异常;
Step 2.截取***行为序列
使用步进法,依次截取训练数据中长度为h的时间窗口的***行为序列,并根据它更新模型,以获得将每个si∈S作为下一个***行为的概率分布;
Step 3.异常类型判定
模型的检测阶段是在线实时的,将实时捕获的***行为日志流式的传入检测模型中;假设方法要检测传入的***行为mt是否是异常的,方法将w={mt-h,..,mt-2,mt-1}发送到模型中作为输入;此时的输出是概率分布P[mt|w]={s1:p1,s2:p2,...,sn:pn},描述了S中的每个***行为作为mt的概率;此时可能出现的异常有以下几种:
(1).实时获取***行为的程序失效,该异常为数据获取异常;
(2).训练数据中可能无法覆盖所有的***行为,因此检测阶段的mt的取值可能并不包含于***行为的集合S,该异常为***行为异常;
(3).通常检测阶段的mt的取值有多种可能,将mt对不同取值的概率P(mt=si|w,si∈S,i=1,...,n)进行排序,如果真实检测到的mt取值是概率排名前k个,则方法将其视为正常;否则,将其视为异常,该异常为行为序列异常。
5.根据权利要求4所述的一种基于上下文感知的***异常检测方法,其特征在于,步骤3)的具体的实现步骤如下:
Step 1.模型简化
首先进行模型简化,假设一个***行为的概率是由它最近的N个前序行为决定,而不是整个历史中的所有前序决定,该简化等价于假设P(mt=si|m1,...,mt-1)=P(mt=si|mt-N,...,mt-1),在该假设下,使用训练数据中的相对频数来计算该概率,以给出其最大似然估计;
给定***行为序列训练数据W,训练LSTM的过程就是减小每个预测出的下一个***行为与训练数据中实际发生的***行为的偏差,训练过程就是学习一个概率分布P(mt=si|m1,...,mt-1),该分布使训练数据整体***行为序列的概率最大化;
Step 2.传递历史信息
LSTM节点中每个单元的状态都包含一个隐藏状态向量Ht-i和单元状态向量Ct–i,两者都被传递到下一个时间节点中以初始化其状态,然后来自前一时间节点的状态(Ht-i,Ct-i)和此时的数据输入(mt-i)被共同用来计算此时新的状态和输出;
Step 3.模型计算
LSTM通过前一时间节点的状态和此时的数据输入进行计算的过程有三个阶段:遗忘阶段,对上一个状态传来的输入进行选择性忘记;选择记忆阶段,对当前输入进行记忆;输出阶段,将通过计算得到的输出门参数,决定哪些内容将会被当成当前状态的输出;
Step 4.模型训练
在训练过程中,使用梯度下降法来减少每个输入/输出对的损失函数;输入包含一个由h个***行为组成的w={mt-h,...,mt-1},输出的训练标签是窗口w对应的下一个***行为的值si,损失函数是使用分类交叉熵来进行计算的;完成训练后,便那个预测行为序列窗口w的输出,预测时,w中的每个***行为都在对应的LSTM块中。
6.根据权利要求5所述的一种基于上下文感知的***异常检测方法,其特征在于,步骤4)的具体的实现步骤如下:
对mt取值的条件概率分布进行排序,并根据概率前k个结果是否正常进行判定;k的取值越小,检出率越高,但是代价就是更高的误报率;k取值越大,误报率越小,但可能造成真正的异常没有被检测出来。
7.根据权利要求6所述的一种基于上下文感知的***异常检测方法,其特征在于,步骤5)的具体的实现步骤如下:
对每个异常进行人工诊断,若为误报,则根据新训练出的参数替换原有模型中的参数来在线更新模型;
如果是***行为异常,即检测阶段的mt的取值并不包含于训练数据中的***行为的集合S;若此时新的mt取值被诊断为正常,则把它添加到集合S中,并以该数据为训练标签更新嵌入层和隐藏层两部分模型;因此方法在初期根据S集合中的元素个数确定输入层维数时,预留出可能在实时检测过程中增加的数量;
若是行为序列异常,若经过人工诊断,发现结果为误报,此时将使用该数据为训练标签更新隐藏层模型的权重;从而使下次给定***行为序列时,***行为序列的下个***行为对应的概率升高,模型更新在原有基础上通过新的训练数据调整参数权重。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010948293.1A CN112202726B (zh) | 2020-09-10 | 2020-09-10 | 一种基于上下文感知的***异常检测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010948293.1A CN112202726B (zh) | 2020-09-10 | 2020-09-10 | 一种基于上下文感知的***异常检测方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112202726A true CN112202726A (zh) | 2021-01-08 |
CN112202726B CN112202726B (zh) | 2021-11-19 |
Family
ID=74015607
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010948293.1A Active CN112202726B (zh) | 2020-09-10 | 2020-09-10 | 一种基于上下文感知的***异常检测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112202726B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112860484A (zh) * | 2021-01-29 | 2021-05-28 | 深信服科技股份有限公司 | 容器运行时异常行为检测、模型训练方法及相关装置 |
CN112882899A (zh) * | 2021-02-25 | 2021-06-01 | 中国烟草总公司郑州烟草研究院 | 一种日志异常检测方法及装置 |
CN114244603A (zh) * | 2021-12-15 | 2022-03-25 | 中国电信股份有限公司 | 异常检测及对比嵌入模型训练、检测方法、装置及介质 |
CN114554490A (zh) * | 2021-12-30 | 2022-05-27 | 国网辽宁省电力有限公司电力科学研究院 | 一种基于时序模型的异常ap检测方法及*** |
CN116991681A (zh) * | 2023-09-27 | 2023-11-03 | 北京中科润宇环保科技股份有限公司 | 结合nlp的飞灰熔融处理***异常报告识别方法及服务器 |
CN117424740A (zh) * | 2023-11-01 | 2024-01-19 | 上海益海信息技术有限公司 | 基于深度学习的智能网络设备服务主机安全管理*** |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109711380A (zh) * | 2019-01-03 | 2019-05-03 | 电子科技大学 | 一种基于全局上下文信息的时序行为片段生成***及方法 |
CN109977118A (zh) * | 2019-03-21 | 2019-07-05 | 东南大学 | 一种基于词嵌入技术和lstm的异常域名检测方法 |
CN111209168A (zh) * | 2020-01-14 | 2020-05-29 | 中国人民解放军陆军炮兵防空兵学院郑州校区 | 一种基于nLSTM-self attention的日志序列异常检测框架 |
CN111291181A (zh) * | 2018-12-10 | 2020-06-16 | 百度(美国)有限责任公司 | 经由主题稀疏自编码器和实体嵌入的用于输入分类的表示学习 |
CN111310583A (zh) * | 2020-01-19 | 2020-06-19 | 中国科学院重庆绿色智能技术研究院 | 一种基于改进的长短期记忆网络的车辆异常行为识别方法 |
CN111371806A (zh) * | 2020-03-18 | 2020-07-03 | 北京邮电大学 | 一种Web攻击检测方法及装置 |
CN111370122A (zh) * | 2020-02-27 | 2020-07-03 | 西安交通大学 | 一种基于知识指导的时序数据风险预测方法、***及其应用 |
WO2020159802A1 (en) * | 2019-02-02 | 2020-08-06 | Microsoft Technology Licensing, Llc | Deep learning enhanced code completion system |
-
2020
- 2020-09-10 CN CN202010948293.1A patent/CN112202726B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111291181A (zh) * | 2018-12-10 | 2020-06-16 | 百度(美国)有限责任公司 | 经由主题稀疏自编码器和实体嵌入的用于输入分类的表示学习 |
CN109711380A (zh) * | 2019-01-03 | 2019-05-03 | 电子科技大学 | 一种基于全局上下文信息的时序行为片段生成***及方法 |
WO2020159802A1 (en) * | 2019-02-02 | 2020-08-06 | Microsoft Technology Licensing, Llc | Deep learning enhanced code completion system |
CN109977118A (zh) * | 2019-03-21 | 2019-07-05 | 东南大学 | 一种基于词嵌入技术和lstm的异常域名检测方法 |
CN111209168A (zh) * | 2020-01-14 | 2020-05-29 | 中国人民解放军陆军炮兵防空兵学院郑州校区 | 一种基于nLSTM-self attention的日志序列异常检测框架 |
CN111310583A (zh) * | 2020-01-19 | 2020-06-19 | 中国科学院重庆绿色智能技术研究院 | 一种基于改进的长短期记忆网络的车辆异常行为识别方法 |
CN111370122A (zh) * | 2020-02-27 | 2020-07-03 | 西安交通大学 | 一种基于知识指导的时序数据风险预测方法、***及其应用 |
CN111371806A (zh) * | 2020-03-18 | 2020-07-03 | 北京邮电大学 | 一种Web攻击检测方法及装置 |
Non-Patent Citations (3)
Title |
---|
梅御东等: "一种基于日志信息和CNN-text的软件***异常检测方法", 《计算机学报》 * |
王毅等: "结合LSTM和CNN混合架构的深度神经网络语言模型", 《情报学报》 * |
鲁沛瑶: "基于LSTM的软件***异常检测方法的研究与实现", 《中国优秀博硕士学位论文全文数据库(硕士)信息科技辑》 * |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112860484A (zh) * | 2021-01-29 | 2021-05-28 | 深信服科技股份有限公司 | 容器运行时异常行为检测、模型训练方法及相关装置 |
CN112882899A (zh) * | 2021-02-25 | 2021-06-01 | 中国烟草总公司郑州烟草研究院 | 一种日志异常检测方法及装置 |
CN114244603A (zh) * | 2021-12-15 | 2022-03-25 | 中国电信股份有限公司 | 异常检测及对比嵌入模型训练、检测方法、装置及介质 |
CN114244603B (zh) * | 2021-12-15 | 2024-02-23 | 中国电信股份有限公司 | 异常检测及对比嵌入模型训练、检测方法、装置及介质 |
CN114554490A (zh) * | 2021-12-30 | 2022-05-27 | 国网辽宁省电力有限公司电力科学研究院 | 一种基于时序模型的异常ap检测方法及*** |
CN116991681A (zh) * | 2023-09-27 | 2023-11-03 | 北京中科润宇环保科技股份有限公司 | 结合nlp的飞灰熔融处理***异常报告识别方法及服务器 |
CN116991681B (zh) * | 2023-09-27 | 2024-01-30 | 北京中科润宇环保科技股份有限公司 | 结合nlp的飞灰熔融处理***异常报告识别方法及服务器 |
CN117424740A (zh) * | 2023-11-01 | 2024-01-19 | 上海益海信息技术有限公司 | 基于深度学习的智能网络设备服务主机安全管理*** |
Also Published As
Publication number | Publication date |
---|---|
CN112202726B (zh) | 2021-11-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112202726B (zh) | 一种基于上下文感知的***异常检测方法 | |
CN111914873B (zh) | 一种两阶段云服务器无监督异常预测方法 | |
CN110912867B (zh) | 工业控制***的入侵检测方法、装置、设备和存储介质 | |
CN111652290B (zh) | 一种对抗样本的检测方法及装置 | |
EP3539060A1 (en) | Systems and methods for continuously modeling industrial asset performance | |
CN111881722B (zh) | 一种跨年龄人脸识别方法、***、装置及存储介质 | |
CN109361648B (zh) | 工控***的隐蔽攻击的检测方法及装置 | |
CN113438114B (zh) | 互联网***的运行状态监控方法、装置、设备及存储介质 | |
CN117041017B (zh) | 数据中心的智能运维管理方法及*** | |
CN113328908B (zh) | 异常数据的检测方法、装置、计算机设备和存储介质 | |
KR102359090B1 (ko) | 실시간 기업정보시스템 이상행위 탐지 서비스를 제공하는 방법과 시스템 | |
JP7331369B2 (ja) | 異常音追加学習方法、データ追加学習方法、異常度算出装置、指標値算出装置、およびプログラム | |
CN110162958B (zh) | 用于计算设备的综合信用分的方法、装置和记录介质 | |
CN113360762A (zh) | 基于人工智能的内容推荐方法及人工智能内容推荐*** | |
CN113468520A (zh) | 应用于区块链业务的数据入侵检测方法及大数据服务器 | |
CN115983087A (zh) | 一种注意力机制与lstm结合检测时序数据异常方法及终端机 | |
Lee et al. | Learning in the wild: When, how, and what to learn for on-device dataset adaptation | |
CN110166422B (zh) | 域名行为识别方法、装置、可读存储介质和计算机设备 | |
CN116842520A (zh) | 基于检测模型的异常感知方法、装置、设备及介质 | |
CN113282920B (zh) | 日志异常检测方法、装置、计算机设备和存储介质 | |
You et al. | sBiLSAN: Stacked bidirectional self-attention lstm network for anomaly detection and diagnosis from system logs | |
CN115017015B (zh) | 一种边缘计算环境下程序异常行为检测方法及*** | |
CN112560252A (zh) | 一种航空发动机剩余寿命预测方法 | |
CN116861214A (zh) | 一种基于卷积长短时记忆网络的健康状态识别方法及*** | |
Aftabi et al. | A Variational Autoencoder Framework for Robust, Physics-Informed Cyberattack Recognition in Industrial Cyber-Physical Systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |