CN111814436A - 一种基于互信息和熵的用户行为序列检测方法及系统 - Google Patents
一种基于互信息和熵的用户行为序列检测方法及系统 Download PDFInfo
- Publication number
- CN111814436A CN111814436A CN202010731634.XA CN202010731634A CN111814436A CN 111814436 A CN111814436 A CN 111814436A CN 202010731634 A CN202010731634 A CN 202010731634A CN 111814436 A CN111814436 A CN 111814436A
- Authority
- CN
- China
- Prior art keywords
- sequence
- candidate
- behavior
- entropy
- subsequence
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/12—Use of codes for handling textual entities
- G06F40/151—Transformation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/205—Parsing
- G06F40/216—Parsing using statistical 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/1425—Traffic logging, e.g. anomaly detection
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Audiology, Speech & Language Pathology (AREA)
- General Health & Medical Sciences (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- Probability & Statistics with Applications (AREA)
- Computer Hardware Design (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种基于互信息和熵的用户行为序列检测方法,基于web系统操作日志数据,根据用户行为序列,通过互信息及熵获得专业行为序列库,再通过行为序列的波动检测疑似异常用户的过程,一方面,该方法是一种无监督的方法,适应性较强,不需要业务经验,能够很快获得网站的专有行为序列库;另一方面,通过比较两个周期内行为序列库中行为序列的波动,从异常检测的目的出发,能够快速定位包含“未登录”或“热度”过高的行为序列的疑似异常用户,准确率较高,适应性、时效性较强,灵活性较高。
Description
技术领域
本发明涉及信息安全业务技术领域,具体来说是一种基于互信息和熵的用户行为序列检测方法及系统。
背景技术
随着互联网技术的发展、业务类型的多样化,互联网用户数量急速增长,同时用户类型也出现了多样性,对用户行为的分析以及挖掘出潜在的问题或恶意用户、恶意行为等也逐渐变得越来越困难。网站攻击、“薅羊毛”、窃取企业内部数据等恶意行为也在不断的演化和变异,隐藏在大量正常的网络行为中,给个人、企业、社会都造成了较为严重的不良影响和极大的威胁,因此需要一种能够处理海量数据,快速分析检测出异常行为序列的方法。
目前用户行为序列异常检测一方面主要采用基于规则引擎的方法,结合业务经验,通过人工或半人工方式总结一系列行为序列组合,形成行为序列库,当用户行为序列不在预设的行为序列库,则属于疑似异常行为;一方面通过历史案例,总结用户行为特征,训练有监督或无监督模型,检测用户行为是否异常,或者通过训练历史行为模式构建Markov(马尔可夫)模型,检测行为序列是否异常;另一方面通过比较用户与用户之间行为序列的相似性,从而检测出行为序列异常的用户。
如申请号为201811166418.4公开的一种结合行为序列和文本信息的社交网络用户间因果关系发现方法及系统,该方法通过用户间行为序列和文本序列推断因果关系,可以减少社交网络上显式关系的误导;利用文本做传递熵计算,可以减少时序行为数据因信息不够全面产生的错误结果;通过间隔优化来减少因滞后期长短差异使得结果不准确的情况。目前社交网络用户因果关系分析的研究仅仅是在算法层面,实现一个交互式系统便于更多用户使用和分析社交网络用户间因果关系,对于推广社交网络用户因果关系理论和算法都有重要作用。该方法适用于用户与用户之间的关系推断,且采用了行为序列和文本序列结合的方式进行计算。该方法不适用发现系统中行为序列组合或者“热度”过高的行为序列。
综上,现有的用户行为序列异常检测方法存在些许不足,具体如下:
通过人工或半人工总结规则定义难度大,需要对各个系统及业务都非常了解熟悉,同时具备较丰富的规则配置经验,并且需要深度结合用户实际应用,可操作性相对较差,另一方面当系统更新或者业务变更,很难及时调整,同时随着业务的增长,预设行为序列会越来越多,很难及时更新迭代,灵活性较差;
通过历史案例,构建用户行为的统计特征如频次、波动等,训练有监督或无监督模型,模型很难捕捉到行为序列的信息如行为先后的时序意义,行为组合的业务意义。通过训练历史行为模式构建Markov模型,时序窗口较短,很难捕捉到预设时序窗口之外的异常行为,如预设时序窗口为1,a行为正常、ab、bc行为也正常,如果abc行为属于异常,那么该种方式构建的模型就很难捕捉到,从而造成一定的漏报。
通过用户间行为序列的相似性,对于较为复杂的业务逻辑以及海量的用户行为数据,该方法计算量较大,其次复杂的业务逻辑以及用户间的差异性,很容易造成行为序列的不一致,从而造成一定的误报。
发明内容
本发明所要解决的技术问题在于针对用户行为分析,现有技术存在的时效性低、灵活性较差、漏报率较高、效率低、误报率较高等问题。
本发明通过以下技术手段实现解决上述技术问题的:
一种基于互信息和熵的用户行为序列检测方法,包括以下步骤:
S01.数据采集,采集企业web系统接口操作数据,并标准化处理成web接口调用操作表T_opr,将每个接口编码对应到预设单字符编码集;
S02.基于所述的操作表T_opr,取预设周期的数据,对每个用户的接口操作记录根据操作时间进行排序,计算每个用户每两次操作时间间隔,若两次操作时间间隔大于预设阈值,则在两次操作之间插入预设分隔符编码;
S03.整合所有用户的行为序列,通过分隔符合并各个用户的行为序列,从而生成所有用户的行为序列文本,然后将分隔符替换成换行符,从而将整串的行为序列文本转换成一句句的行为序列文本seqText;
S04.将行为序列文本seqText按照设定长度N进行分割,生成等长的子序列;
S05.遍历步骤S04中每个子序列中长度为N的子序列,将每个子序列进行切片,得到不同长度的序列单元,最终将长度大于1的序列单元作为候选子序列集candidate_seq;
S06.互信息计算,计算候选子序列集candidate_seq中每个序列单元的互信息pmi,取最小pmi值为对应序列单元的互信息pmi值;
S07.对不同长的序列单元预设不同的阈值,根据阈值,筛选出pmi值大于阈值的序列单元加入候选子序列集candidate_seq中,得到候选子序列集candidate_seq1;
S08.基于候选子序列集candidate_seq1构建前缀树,重新遍历行为序列文本seqText,生成新的候选子序列集candidate_seq2,然后遍历候选子序列集candidate_seq2中所有的序列单元是否都存在于候选子序列集candidate_seq1中,若有任一部分不在candidate_seq1中,则将该序列单元从candidate_seq2中删除,最终生成新的候选子序列集candidate_seq3;
S09.统计候选子序列集candidate_seq3中每个序列单元出现的次数,筛选出超过阈值次数的序列单元作为候选子序列集candidate_seq4;
S10.统计候选子序列集candidate_seq4中每个序列单元的左右熵,确定该序列单元的熵,筛选出熵值超过预设阈值的序列单元作为最终的候选子序列集candidate_seq5,并统计候选子序列集candidate_seq5中每个序列单元在行为序列文本seqText中出现的次数;
S11.基于步骤S01-S10,获得次周期用户行为序列库以及次数,计算每个序列单元的热度,基于热度比较两周期结果,从而获取疑似异常用户。
进一步的,所述步骤S04中,基于N-gram模型对行为序列文本进行分割。
进一步的,所述步骤S05中,首先统计步骤S04中每个子序列出现次数,筛选出次数超过预设阈值的子序列ngrams以及各个子序列出现的次数之和total,遍历ngrams,对ngrams中的子序列进行切片,得到不同长度的序列单元。
进一步的,所述步骤S06中,互信息的计算公式为:
其中AB代表子序列整体,A、B分别代表子序列的一部分。
进一步的,所述步骤S10中熵计算具体为:统计候选子序列集candidate_seq4中每个序列单元左边出现的行为编码集、右边出现的行为编码集及每个行为编码出现次数,如果左边或者右边没有编码,则记为分隔符,熵计算公式为:
其中分隔符不参与计算,X表示行为编码集,x表示行为编码集的某个行为,p(x)表示x在行为编码集X中的概率;然后比较序列单元左、右边行为编码集中分隔符出现的次数,如果左边较多,则选取右熵作为该子序列的熵;如果右边较多,则选取左熵作为该子序列的熵;如果左、右边数量一致,则选取左右熵中较小的一个作为该序列单元的熵。
进一步的,所述步骤S11中,对于每个序列单元的热度技术如下:
1)计算每个序列单元两个周期内出现的次数之和sum;
3)计算两个周期所有序列单元出现次数之和:total=∑sum
6)计算每个序列单元的热度得分:
本发明还提供一种基于互信息和熵的用户行为序列检测系统,包括
数据采集模块,采集企业web系统接口操作数据,并标准化处理成web接口调用操作表T_opr,将每个接口编码对应到预设单字符编码集;
数据一次处理模块,基于所述的操作表T_opr,取预设周期的数据,对每个用户的接口操作记录根据操作时间进行排序,计算每个用户每两次操作时间间隔,若两次操作时间间隔大于预设阈值,则在两次操作之间插入预设分隔符编码;
数据二次处理模块,整合所有用户的行为序列,通过分隔符合并各个用户的行为序列,从而生成所有用户的行为序列文本,然后将分隔符替换成换行符,从而将整串的行为序列文本转换成一句句的行为序列文本seqText;
子序列生成模块,将行为序列文本seqText按照设定长度N进行分割,生成等长的子序列;
切片操作模块,遍历步骤S04中每个子序列中长度为N的子序列,将每个子序列进行切片,得到不同长度的序列单元,最终将长度大于1的序列单元作为候选子序列集candidate_seq;
互信息计算模块,计算候选子序列集candidate_seq中每个序列单元的互信息pmi,取最小pmi值为对应序列单元的互信息pmi值;
序列单元筛选模块,对不同长的序列单元预设不同的阈值,根据阈值,筛选出pmi值大于阈值的序列单元加入候选子序列集candidate_seq中,得到候选子序列集candidate_seq1;
最大长度匹配单元,基于候选子序列集candidate_seq1构建前缀树,重新遍历行为序列文本seqText,生成新的候选子序列集candidate_seq2,然后遍历候选子序列集candidate_seq2中所有的序列单元是否都存在于候选子序列集candidate_seq1中,若有任一部分不在candidate_seq1中,则将该序列单元从candidate_seq2中删除,最终生成型的候选子序列集candidate_seq3;
序列单元二次筛选模块,统计候选子序列集candidate_seq3中每个序列单元出现的次数,筛选出超过阈值次数的序列单元作为候选子序列集candidate_seq4;
熵计算模块,统计候选子序列集candidate_seq4中每个序列单元的左右熵,确定该序列单元的熵,筛选出熵值超过预设阈值的序列单元作为最终的候选子序列集candidate_seq5,并统计候选子序列集candidate_seq5中每个序列单元在行为序列文本seqText中出现的次数;
异常识别模块,重复执行上述所有模块,获得次周期用户行为序列库以及次数,计算每个序列单元的热度,基于热度比较两周期结果,从而获取疑似异常用户。
进一步的,所述互信息的计算公式为:
其中AB代表子序列整体,A、B分别代表子序列的一部分。
进一步的,所述熵计算具体为:统计候选子序列集candidate_seq4中每个序列单元左边出现的行为编码集、右边出现的行为编码集及每个行为编码出现次数,如果左边或者右边没有编码,则记为分隔符,熵计算公式为:
其中分隔符不参与计算,X表示行为编码集,x表示行为编码集的某个行为,p(x)表示x在行为编码集X中的概率;然后比较序列单元左、右边行为编码集中分隔符出现的次数,如果左边较多,则选取右熵作为该子序列的熵;如果右边较多,则选取左熵作为该子序列的熵;如果左、右边数量一致,则选取左右熵中较小的一个作为该序列单元的熵。
进一步的,对于每个序列单元的热度技术如下:
1)计算每个序列单元两个周期内出现的次数之和sum;
3)计算两个周期所有序列单元出现次数之和:total=∑sum
6)计算每个序列单元的热度得分:
本发明的优点在于:
本发明基于web系统操作日志数据,根据用户行为序列,通过互信息及熵获得专业行为序列库,再通过行为序列的波动检测疑似异常用户的过程,一方面,该方法是一种无监督的方法,适应性较强,不需要业务经验,能够很快获得网站的专有行为序列库;另一方面,通过比较两个周期内行为序列库中行为序列的波动,从异常检测的目的出发,能够快速定位包含“未登录”或“热度”过高的行为序列的疑似异常用户,准确率较高,适应性、时效性较强,灵活性较高。
附图说明
图1为本发明实施例中基于互信息和熵的用户行为序列检测方法的流程框图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
一种基于互信息和熵的用户行为序列检测方法,包括以下步骤:
S01,采集企业web系统接口操作数据,标准化处理成web接口操作表T_opr,该表包含但不限于以下字段:用户唯一标识(USER_ID),用户IP地址(IP_ADDR),MAC地址(MAC)、操作时间(OPR_DATE)、接口编码(INTF_CODE)、接口名称(INTF_NAME)等,将每个接口编码对应到预设单字符编码集(a、b、c、d…),如接口编码“ESB_CS_QRY_MULTI_MULTIQRY”(接口名称:用户信息查询)对应到预设编码集中的编码“a”,从而减小内存占用,以及便于使用。
S02,基于上述处理后的web接口操作表T_opr,取预设周期(如一天)的数据,对每个用户(USER_ID)的接口操作记录根据操作时间进行升序排列,计算每个用户每两次操作时间间隔,如果两次操作时间间隔大于预设阈值(30分钟),则在两次操作之间插入预设分隔符编码“,”,如用户“A0001”原始行为序列为“adcfkjhsadexfs”,因为“sa”代表的接口操作时间间隔为65分钟,经过处理后该行为序列变为“adcfkjhs,adexfs”,其中序列中各字符均唯一代表相应的某接口编码。
S03,整合所有用户的行为序列,通过分隔符“,”合并各个用户的行为序列,从而生成所有用户的行为序列文本,进而将分隔符“,”替换为换行符“\n”,从而将一整串的行为序列文本转换成为一句句的行为序列文本seqText,如其中“A0001”的行为序列“adcfkjhs,adexfs,a”,变为:
adcfkjhs
adexfs
a
S04,基于N-gram原理,对S03中的行为序列文本seqText进行分割,从而生成等长的子序列。如预设N=3,则
adcfkjhs=>adc dcf cfk fkj kjh jhs
adexfs=>ade dex exf xfs
所述N-gram原理常用于统计语言模型算法中,它的基本思想是将文本内容按照字节进行大小为N的滑动窗口操作,从而形成长度是N的字节片段。
S05,统计S04中每个子序列出现次数,筛选出次数超过预设阈值10次的子序列ngrams以及各个子序列出现的次数之和total。建立N(3)个空字典dict1,dict2,dict3,其中字段的键(key)为序列单元,值(value)为key出现的次数,分别记录不同长度的序列单元出现的次数,如dict1记录由1个字符的序列单元出现的次数,dict2记录由2个字符组成的序列单元出现的次数,dict3记录由3个字符组成的序列单元出现的次数。具体方法为:遍历ngrams中的子序列,对于每个子序列进行分切,得到序列单元,记录其各个序列单元出现的次数,如子序列adc,在dict1中,key为a的value将会加上子序列adc出现的次数,在dict2中,key为ad的value将会加上子序列adc出现的次数,在dict3中,key为adc的value将会加上子序列adc出现的次数,最终将序列长度大于1即dict2、dict3的key作为候选子序列集candidate_seq。
S06,互信息计算,体现了子序列内部的凝合程度,即能不能把一些行为放到一起作为一个整体,类比于中文的词语、短语、成语等,主要是看子序列中的行为是不是经常一起先后出现。计算候选子序列集candidate_seq中每个子序列的互信息pmi,其中互信息计算公式为:
其中AB代表子序列整体,A、B分别代表子序列的一部分。如子序列adc,P(AB)代表adc在所有用户生成的序列文本seqText中出现的概率,P(A)、P(B)此处有两种可能,第一种A代表a,B代表dc,那么P(A)表示a在seqText中出现的概率,P(B)表示dc在seqText中出现的概率;另一种A代表ad,B代表c,那么P(A)表示ad在seqText中出现的概率,P(B)表示c在seqText中出现的概率。在本发明中,需要计算出两种可能的pmi,取两种可能中pmi最小的那个值最为adc这一子序列的互信息pmi值。
所述P(AB)、P(A)、P(B)计算过程为,各自出现的次数除以S05中的total,AB、A、B各自出现的次数可根据各自长度在不同dict中查找,如AB代表adc,长度为3,可在dict3中根据key为adc获取其对应的value值即次数。
S07,对不同长度的序列单元预设不同的阈值,本发明中通过公式y=1.05*序列长度+0.5设定,如序列长度为2,则其对应阈值为2.15。根据预设阈值,筛选出pmi值大于阈值的子序列加入候选子序列集candidate_seq1。
S08,为了最大长度的匹配行为序列,基于S07中候选子序列集candidate_seq1构建前缀树,重新遍历行为序列文本seqText,生成新的候选子序列集candidate_seq2,如adcfkjhs序列,若其子序列adc、cf、fk均存在于candidate_seq1,那么可组合生成新的子序列adcfk。为了保证子序列集candidate_seq2的子序列每部分都是紧密的即每部分构成的序列pmi值都大于阈值,遍历candidate_seq2中的每个子序列每部分是否都在候选子序列集candidate_seq1,如果有任一部分不在,那个该序列需要剔除,否则保留,如adcfk,如果cfk不在候选子序列集candidate_seq1中,那么需要将adcfk从子序列集candidate_seq2中剔除,最终生成新的候选子序列集candidate_seq3。
S09,统计S08中的候选子序列集candidate_seq3中每个子序列出现次数,筛选出超过预设阈值10次的子序列作为候选子序列集candidate_seq4。
S010,左右熵,体现了一个序列单元作为整体的外部自由度,左右熵越大,表现了这个子序列左右连接的行为越自由丰富,其独立成整体的可能性越大。统计S09中子序列集candidate_seq4的每个子序列的左右熵,即统计每个序列单元左边出现的行为编码集、右边出现的行为编码集及每个行为编码出现次数,如果左边或者右边没有编码(即子序列处在整个序列的开头或者结尾),则记为分隔符“,”,通过熵计算公式:
其中分隔符不参与计算,X表示行为编码集,x表示行为编码集的某个行为,p(x)表示x在行为编码集X中的概率;比较左、右边行为编码集中分隔符出现的次数,如果左边较多,则选取右熵作为该子序列的熵;如果右边较多,则选取左熵作为该序列单元的熵;如果左、右边数量一致,则选取左右熵中较小的一个作为该序列单元的熵。筛选出熵值超过预设阈值1.5且长度大于1的序列作为最终子序列集candidate_seq5,并统计candidate_seq5每个子序列在行为序列文本seqText中出现的次数。
S011,基于S01-S010步骤,获得次日用户行为序列库以及次数,比较两日结果,从而获取当天“热度”较高的行为子序列以及“未登录”行为子序列(历史未出现的子序列),以及每日得分(热度)Top5或得分超过预设阈值0.7的子序列作为疑似异常行为序列,从而定位包含这些行为子序列的用户作为疑似异常用户。对于每个序列单元的得分(热度)计算过程大致如下:
1)计算每个序列单元两个周期内出现的次数之和sum;
2)计算每个序列单元当前周期在两个周期内出现次数之和的占比:
3)计算两个周期所有序列单元出现次数之和:total=∑sum
4)计算两个周期内每个序列单元出现次数sum与所有序列单元出现次数total的占比:
5)计算所有序列单元占比的平均值:
6)计算每个序列单元的热度得分:
所述未登录,是指不存在于历史记录里的序列,即上个周期或者更长周期(近一月)内生成的最终序列单元集中不包含该序列单元。
本实施例中,基于web系统操作日志数据,根据用户行为序列,通过互信息及熵获得专业行为序列库,再通过行为序列的波动检测疑似异常用户的过程,一方面,该方法是一种无监督的方法,适应性较强,不需要业务经验,能够很快获得网站的专有行为序列库;另一方面,通过比较两个周期内行为序列库中行为序列的波动,从异常检测的目的出发,能够快速定位包含“未登录”或“热度”过高的行为序列的疑似异常用户。
本实施例还提供一种基于互信息和熵的用户行为序列检测系统,包括:
数据采集模块,采集企业web系统接口操作数据,标准化处理成web接口操作表T_opr,该表包含但不限于以下字段:用户唯一标识(USER_ID),用户IP地址(IP_ADDR),MAC地址(MAC)、操作时间(OPR_DATE)、接口编码(INTF_CODE)、接口名称(INTF_NAME)等,将每个接口编码对应到预设单字符编码集(a、b、c、d…),如接口编码“ESB_CS_QRY_MULTI_MULTIQRY”(接口名称:用户信息查询)对应到预设编码集中的编码“a”,从而减小内存占用,以及便于使用。
数据一次处理模块,基于上述处理后的web接口操作表T_opr,取预设周期(如一天)的数据,对每个用户(USER_ID)的接口操作记录根据操作时间进行升序排列,计算每个用户每两次操作时间间隔,如果两次操作时间间隔大于预设阈值(30分钟),则在两次操作之间插入预设分隔符编码“,”,如用户“A0001”原始行为序列为“adcfkjhsadexfs”,因为“sa”代表的接口操作时间间隔为65分钟,经过处理后该行为序列变为“adcfkjhs,adexfs”,其中序列中各字符均唯一代表相应的某接口编码。
数据二次处理模块,整合所有用户的行为序列,通过分隔符“,”合并各个用户的行为序列,从而生成所有用户的行为序列文本,进而将分隔符“,”替换为换行符“\n”,从而将一整串的行为序列文本转换成为一句句的行为序列文本seqText,如其中“A0001”的行为序列“adcfkjhs,adexfs,a”,变为:
adcfkjhs
adexfs
a
子序列生成模块,基于N-gram原理,对S03中的行为序列文本seqText进行分割,从而生成等长的子序列。如预设N=3,则
adcfkjhs=>adc dcf cfk fkj kjh jhs
adexfs=>ade dex exf xfs
所述N-gram原理常用于统计语言模型算法中,它的基本思想是将文本内容按照字节进行大小为N的滑动窗口操作,从而形成长度是N的字节片段。
切片操作模块,统计S04中每个子序列出现次数,筛选出次数超过预设阈值10次的子序列ngrams以及各个子序列出现的次数之和total。建立N(3)个空字典dict1,dict2,dict3,其中字段的键(key)为序列单元,值(value)为key出现的次数,分别记录不同长度的序列单元出现的次数,如dict1记录由1个字符的序列单元出现的次数,dict2记录由2个字符组成的序列单元出现的次数,dict3记录由3个字符组成的序列单元出现的次数。具体方法为:遍历ngrams中的子序列,对于每个子序列进行分切,得到序列单元,记录其各个序列单元出现的次数,如子序列adc,在dict1中,key为a的value将会加上子序列adc出现的次数,在dict2中,key为ad的value将会加上子序列adc出现的次数,在dict3中,key为adc的value将会加上子序列adc出现的次数,最终将序列长度大于1即dict2、dict3的key作为候选子序列集candidate_seq。
互信息计算模块,体现了子序列内部的凝合程度,即能不能把一些行为放到一起作为一个整体,类比于中文的词语、短语、成语等,主要是看子序列中的行为是不是经常一起先后出现。计算候选子序列集candidate_seq中每个子序列的互信息pmi,其中互信息计算公式为:
其中AB代表子序列整体,A、B分别代表子序列的一部分。如子序列adc,P(AB)代表adc在所有用户生成的序列文本seqText中出现的概率,P(A)、P(B)此处有两种可能,第一种A代表a,B代表dc,那么P(A)表示a在seqText中出现的概率,P(B)表示dc在seqText中出现的概率;另一种A代表ad,B代表c,那么P(A)表示ad在seqText中出现的概率,P(B)表示c在seqText中出现的概率。在本发明中,需要计算出两种可能的pmi,取两种可能中pmi最小的那个值最为adc这一子序列的互信息pmi值。
所述P(AB)、P(A)、P(B)计算过程为,各自出现的次数除以S05中的total,AB、A、B各自出现的次数可根据各自长度在不同dict中查找,如AB代表adc,长度为3,可在dict3中根据key为adc获取其对应的value值即次数。
序列单元筛选模块,对不同长度的序列单元预设不同的阈值,本发明中通过公式y=1.05*序列长度+0.5设定,如序列长度为2,则其对应阈值为2.15。根据预设阈值,筛选出pmi值大于阈值的子序列加入候选子序列集candidate_seq1。
最大长度匹配单元,为了最大长度的匹配行为序列,基于S07中候选子序列集candidate_seq1构建前缀树,重新遍历行为序列文本seqText,生成新的候选子序列集candidate_seq2,如adcfkjhs序列,若其子序列adc、cf、fk均存在于candidate_seq1,那么可组合生成新的子序列adcfk。为了保证子序列集candidate_seq2的子序列每部分都是紧密的即每部分构成的序列pmi值都大于阈值,遍历candidate_seq2中的每个子序列每部分是否都在候选子序列集candidate_seq1,如果有任一部分不在,那个该序列需要剔除,否则保留,如adcfk,如果cfk不在候选子序列集candidate_seq1中,那么需要将adcfk从子序列集candidate_seq2中剔除,最终生成新的候选子序列集candidate_seq3。
序列单元二次筛选模块,统计S08中的候选子序列集candidate_seq3中每个子序列出现次数,筛选出超过预设阈值10次的子序列作为候选子序列集candidate_seq4。
熵计算模块,左右熵,体现了一个序列单元作为整体的外部自由度,左右熵越大,表现了这个子序列左右连接的行为越自由丰富,其独立成整体的可能性越大。统计候选子序列集candidate_seq4的每个子序列的左右熵,即统计每个序列单元左边出现的行为编码集、右边出现的行为编码集及每个行为编码出现次数,如果左边或者右边没有编码(即子序列处在整个序列的开头或者结尾),则记为分隔符“,”,通过熵计算公式:
其中分隔符不参与计算,X表示行为编码集,x表示行为编码集的某个行为,p(x)表示x在行为编码集X中的概率;比较左、右边行为编码集中分隔符出现的次数,如果左边较多,则选取右熵作为该子序列的熵;如果右边较多,则选取左熵作为该序列单元的熵;如果左、右边数量一致,则选取左右熵中较小的一个作为该序列单元的熵。筛选出熵值超过预设阈值1.5且长度大于1的序列作为最终子序列集candidate_seq5,并统计candidate_seq5每个子序列在行为序列文本seqText中出现的次数。
异常识别模块,重复上述所有模块的执行过程,获得次日用户行为序列库以及次数,比较两日结果,从而获取当天“热度”较高的行为子序列以及“未登录”行为子序列(历史未出现的子序列),以及每日得分(热度)Top5或得分超过预设阈值0.7的子序列作为疑似异常行为序列,从而定位包含这些行为子序列的用户作为疑似异常用户。对于每个序列单元的得分(热度)计算过程大致如下:
1)计算每个序列单元两个周期内出现的次数之和sum;
2)计算每个序列单元当前周期在两个周期内出现次数之和的占比:
3)计算两个周期所有序列单元出现次数之和:total=∑sum
4)计算两个周期内每个序列单元出现次数sum与所有序列单元出现次数total的占比:
5)计算所有序列单元占比的平均值:
6)计算每个序列单元的热度得分:
所述未登录,是指不存在于历史记录里的序列,即上个周期或者更长周期(近一月)内生成的最终序列单元集中不包含该序列单元。
以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种基于互信息和熵的用户行为序列检测方法,其特征在于:包括以下步骤:
S01.数据采集,采集企业web系统接口操作数据,并标准化处理成web接口调用操作表T_opr,将每个接口编码对应到预设单字符编码集;
S02.基于所述的操作表T_opr,取预设周期的数据,对每个用户的接口操作记录根据操作时间进行排序,计算每个用户每两次操作时间间隔,若两次操作时间间隔大于预设阈值,则在两次操作之间插入预设分隔符编码;
S03.整合所有用户的行为序列,通过分隔符合并各个用户的行为序列,从而生成所有用户的行为序列文本,然后将分隔符替换成换行符,从而将整串的行为序列文本转换成一句句的行为序列文本seqText;
S04.将行为序列文本seqText按照设定长度N进行分割,生成等长的子序列;
S05.遍历步骤S04中每个子序列中长度为N的子序列,将每个子序列进行切片,得到不同长度的序列单元,最终将长度大于1的序列单元作为候选子序列集candidate_seq;
S06.互信息计算,计算候选子序列集candidate_seq中每个序列单元的互信息pmi,取最小pmi值为对应序列单元的互信息pmi值;
S07.对不同长的序列单元预设不同的阈值,根据阈值,筛选出pmi值大于阈值的序列单元加入候选子序列集candidate_seq中,得到候选子序列集candidate_seq1;
S08.基于候选子序列集candidate_seq1构建前缀树,重新遍历行为序列文本seqText,生成新的候选子序列集candidate_seq2,然后遍历候选子序列集candidate_seq2中所有的序列单元是否都存在于候选子序列集candidate_seq1中,若有任一部分不在candidate_seq1中,则将该序列单元从candidate_seq2中删除,最终生成型的候选子序列集candidate_seq3;
S09.统计候选子序列集candidate_seq3中每个序列单元出现的次数,筛选出超过阈值次数的序列单元作为候选子序列集candidate_seq4;
S10.统计候选子序列集candidate_seq4中每个序列单元的左右熵,确定该序列单元的熵,筛选出熵值超过预设阈值的序列单元作为最终的候选子序列集candidate_seq5,并统计候选子序列集candidate_seq5中每个序列单元在行为序列文本seqText中出现的次数;
S11.基于步骤S01-S10,获得次周期用户行为序列库以及次数,计算每个序列单元的热度,基于热度比较两周期结果,从而获取疑似异常用户。
2.根据权利要求1所述的一种基于互信息和熵的用户行为序列检测方法,其特征在于:所述步骤S04中,基于N-gram模型对行为序列文本进行分割。
3.根据权利要求1所述的一种基于互信息和熵的用户行为序列检测方法,其特征在于:所述步骤S05中,首先统计步骤S04中每个子序列出现次数,筛选出次数超过预设阈值的子序列ngrams以及各个子序列出现的次数之和total,遍历ngrams,对ngrams中的子序列进行切片,得到不同长度的序列单元。
7.一种基于互信息和熵的用户行为序列检测系统,其特征在于:包括
数据采集模块,采集企业web系统接口操作数据,并标准化处理成web接口调用操作表T_opr,将每个接口编码对应到预设单字符编码集;
数据一次处理模块,基于所述的操作表T_opr,取预设周期的数据,对每个用户的接口操作记录根据操作时间进行排序,计算每个用户每两次操作时间间隔,若两次操作时间间隔大于预设阈值,则在两次操作之间插入预设分隔符编码;
数据二次处理模块,整合所有用户的行为序列,通过分隔符合并各个用户的行为序列,从而生成所有用户的行为序列文本,然后将分隔符替换成换行符,从而将整串的行为序列文本转换成一句句的行为序列文本seqText;
子序列生成模块,将行为序列文本seqText按照设定长度N进行分割,生成等长的子序列;
切片操作模块,遍历步骤S04中每个子序列中长度为N的子序列,将每个子序列进行切片,得到不同长度的序列单元,最终将长度大于1的序列单元作为候选子序列集candidate_seq;
互信息计算模块,计算候选子序列集candidate_seq中每个序列单元的互信息pmi,取最小pmi值为对应序列单元的互信息pmi值;
序列单元筛选模块,对不同长的序列单元预设不同的阈值,根据阈值,筛选出pmi值大于阈值的序列单元加入候选子序列集candidate_seq中,得到候选子序列集candidate_seq1;
最大长度匹配单元,基于候选子序列集candidate_seq1构建前缀树,重新遍历行为序列文本seqText,生成新的候选子序列集candidate_seq2,然后遍历候选子序列集candidate_seq2中所有的序列单元是否都存在于候选子序列集candidate_seq1中,若有任一部分不在candidate_seq1中,则将该序列单元从candidate_seq2中删除,最终生成型的候选子序列集candidate_seq3;
序列单元二次筛选模块,统计候选子序列集candidate_seq3中每个序列单元出现的次数,筛选出超过阈值次数的序列单元作为候选子序列集candidate_seq4;
熵计算模块,统计候选子序列集candidate_seq4中每个序列单元的左右熵,确定该序列单元的熵,筛选出熵值超过预设阈值的序列单元作为最终的候选子序列集candidate_seq5,并统计候选子序列集candidate_seq5中每个序列单元在行为序列文本seqText中出现的次数;
异常识别模块,重复上述所有模块执行过程获得次周期用户行为序列库以及次数,计算每个序列单元的热度,基于热度比较两周期结果,从而获取疑似异常用户。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010731634.XA CN111814436B (zh) | 2020-07-27 | 2020-07-27 | 一种基于互信息和熵的用户行为序列检测方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010731634.XA CN111814436B (zh) | 2020-07-27 | 2020-07-27 | 一种基于互信息和熵的用户行为序列检测方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111814436A true CN111814436A (zh) | 2020-10-23 |
CN111814436B CN111814436B (zh) | 2023-10-17 |
Family
ID=72861410
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010731634.XA Active CN111814436B (zh) | 2020-07-27 | 2020-07-27 | 一种基于互信息和熵的用户行为序列检测方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111814436B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112738088A (zh) * | 2020-12-28 | 2021-04-30 | 上海观安信息技术股份有限公司 | 一种基于无监督算法的行为序列异常检测方法及系统 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103020022A (zh) * | 2012-11-20 | 2013-04-03 | 北京航空航天大学 | 一种基于改进信息熵特征的中文未登录词识别系统及方法 |
US20130111019A1 (en) * | 2011-10-28 | 2013-05-02 | Electronic Arts Inc. | User behavior analyzer |
EP3163545A1 (en) * | 2015-10-29 | 2017-05-03 | Thomson Licensing | Abnormal activity detection for elderly and handicapped individuals |
CN108491559A (zh) * | 2018-01-19 | 2018-09-04 | 北京理工大学 | 一种基于归一化互信息估计的时间序列异常检测方法 |
CN108509425A (zh) * | 2018-04-10 | 2018-09-07 | 中国人民解放军陆军工程大学 | 一种基于新颖度的中文新词发现方法 |
CN108881194A (zh) * | 2018-06-07 | 2018-11-23 | 郑州信大先进技术研究院 | 企业内部用户异常行为检测方法和装置 |
US20190147343A1 (en) * | 2017-11-15 | 2019-05-16 | International Business Machines Corporation | Unsupervised anomaly detection using generative adversarial networks |
CN110138793A (zh) * | 2019-05-21 | 2019-08-16 | 哈尔滨英赛克信息技术有限公司 | 一种基于交互行为分析的网络渗透识别方法 |
CN110933080A (zh) * | 2019-11-29 | 2020-03-27 | 上海观安信息技术股份有限公司 | 一种用户登录异常的ip群体识别方法及装置 |
-
2020
- 2020-07-27 CN CN202010731634.XA patent/CN111814436B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130111019A1 (en) * | 2011-10-28 | 2013-05-02 | Electronic Arts Inc. | User behavior analyzer |
CN103020022A (zh) * | 2012-11-20 | 2013-04-03 | 北京航空航天大学 | 一种基于改进信息熵特征的中文未登录词识别系统及方法 |
EP3163545A1 (en) * | 2015-10-29 | 2017-05-03 | Thomson Licensing | Abnormal activity detection for elderly and handicapped individuals |
US20190147343A1 (en) * | 2017-11-15 | 2019-05-16 | International Business Machines Corporation | Unsupervised anomaly detection using generative adversarial networks |
CN108491559A (zh) * | 2018-01-19 | 2018-09-04 | 北京理工大学 | 一种基于归一化互信息估计的时间序列异常检测方法 |
CN108509425A (zh) * | 2018-04-10 | 2018-09-07 | 中国人民解放军陆军工程大学 | 一种基于新颖度的中文新词发现方法 |
CN108881194A (zh) * | 2018-06-07 | 2018-11-23 | 郑州信大先进技术研究院 | 企业内部用户异常行为检测方法和装置 |
CN110138793A (zh) * | 2019-05-21 | 2019-08-16 | 哈尔滨英赛克信息技术有限公司 | 一种基于交互行为分析的网络渗透识别方法 |
CN110933080A (zh) * | 2019-11-29 | 2020-03-27 | 上海观安信息技术股份有限公司 | 一种用户登录异常的ip群体识别方法及装置 |
Non-Patent Citations (3)
Title |
---|
YASAR, D ET AL: "Estimating spatiotemporal focus of documents using entropy with PMI", 《TURKISH JOURNAL OF ELECTRICAL ENGINEERING AND COMPUTER SCIENCES》 * |
孟永伟: "利用残差分析的网络异常流量检测方法", 《西安交通大学学报》 * |
钱玉文等: "基于校正熵的网络行为隐蔽信道的检测算法", 《系统工程与电子技术》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112738088A (zh) * | 2020-12-28 | 2021-04-30 | 上海观安信息技术股份有限公司 | 一种基于无监督算法的行为序列异常检测方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN111814436B (zh) | 2023-10-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2021088385A1 (zh) | 一种在线日志解析方法、系统及其电子终端设备 | |
CN106657410B (zh) | 基于用户访问序列的异常行为检测方法 | |
CN112398779A (zh) | 一种网络流量数据分析方法及系统 | |
CN109784042B (zh) | 时间序列中异常点的检测方法、装置、电子设备及存储介质 | |
CN106375339A (zh) | 基于事件滑动窗口的攻击模式检测方法 | |
CN109450671B (zh) | 一种日志多组合告警归类方法及系统 | |
CN112261645B (zh) | 一种基于分组分域的移动应用指纹自动化提取方法及系统 | |
CN112738088B (zh) | 一种基于无监督算法的行为序列异常检测方法及系统 | |
CN115643035A (zh) | 基于多源日志的网络安全态势评估方法 | |
CN115277113A (zh) | 一种基于集成学习的电网网络入侵事件检测识别方法 | |
CN115544519A (zh) | 对计量自动化系统威胁情报进行安全性关联分析的方法 | |
Hei et al. | Feature extraction optimization for bitstream communication protocol format reverse analysis | |
CN111814436B (zh) | 一种基于互信息和熵的用户行为序列检测方法及系统 | |
CN114372093A (zh) | 一种变压器dga在线监测数据的处理方法 | |
Li et al. | Protocol reverse engineering using LDA and association analysis | |
Wang et al. | An algorithm for mining of association rules for the information communication network alarms based on swarm intelligence | |
CN112039907A (zh) | 一种基于物联网终端评测平台的自动测试方法及系统 | |
CN109460469B (zh) | 一种基于网络轨迹的安全协议格式的挖掘方法及装置 | |
KR101621959B1 (ko) | 로그패턴추출장치, 로그패턴분석장치 및 그 방법 | |
Lin et al. | Dcsa: Using density-based clustering and sequential association analysis to predict alarms in telecommunication networks | |
CN112968865B (zh) | 一种基于关联规则挖掘的网络协议语法特征快速提取方法 | |
CN114880584A (zh) | 一种基于社区发现的发电机组故障分析方法 | |
Sun et al. | A progressive learning method on unknown protocol behaviors | |
CN115913971B (zh) | 一种网络dna特征表示与提取方法 | |
CN117473571B (zh) | 一种数据信息安全处理方法及系统 |
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 |