CN115373834A - 一种基于进程调用链的入侵检测方法 - Google Patents
一种基于进程调用链的入侵检测方法 Download PDFInfo
- Publication number
- CN115373834A CN115373834A CN202110584405.4A CN202110584405A CN115373834A CN 115373834 A CN115373834 A CN 115373834A CN 202110584405 A CN202110584405 A CN 202110584405A CN 115373834 A CN115373834 A CN 115373834A
- Authority
- CN
- China
- Prior art keywords
- chain
- abnormal
- calculating
- call
- parent
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 328
- 230000008569 process Effects 0.000 title claims abstract description 306
- 238000001514 detection method Methods 0.000 title claims abstract description 34
- 230000002159 abnormal effect Effects 0.000 claims abstract description 76
- 238000012549 training Methods 0.000 claims description 20
- 238000004364 calculation method Methods 0.000 claims description 17
- 241000239290 Araneae Species 0.000 claims description 4
- 238000004458 analytical method Methods 0.000 claims description 4
- 101150108030 ppiD gene Proteins 0.000 description 13
- 238000010586 diagram Methods 0.000 description 8
- 239000011159 matrix material Substances 0.000 description 7
- 230000006399 behavior Effects 0.000 description 5
- 230000002776 aggregation Effects 0.000 description 4
- 238000004220 aggregation Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 244000089409 Erythrina poeppigiana Species 0.000 description 3
- 235000009776 Rathbunia alamosensis Nutrition 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000001594 aberrant effect Effects 0.000 description 1
- 230000005856 abnormality Effects 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000003066 decision tree Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000013515 script Methods 0.000 description 1
- 239000007858 starting material Substances 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9027—Trees
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/554—Detecting local intrusion or implementing counter-measures involving event detection and direct action
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Computer Security & Cryptography (AREA)
- Data Mining & Analysis (AREA)
- Computer Hardware Design (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种基于进程调用链的入侵检测方法,该方法包括以下步骤:S1、以父子进程ID为关联关系,构建进程调用树;S2、以进程指令的命令,对所述进程调用树进行合并;S3、计算父子进程时间差概率密度函数;S4、计算进程命令参数基尼系数;S5、计算进程调用偏离值,进行异常链判定;S6、计算异常链评分。有益效果:通过利用容器内进程调用信息,构建出容器对应镜像的合并进程调用树;对树节点通过基尼系数计算进程调用参数的离散程度,对树的边通过密度函数计算父子进程调用时间差的概率密度函数,得到进程调用链的模型基线;本方法不需要预设相关规则,适应性强;同时由于容器运行环境的单一性,侦测效率高。
Description
技术领域
本发明涉及计算机网络安全技术领域,具体来说,涉及一种基于进程调用链的入侵检测方法。
背景技术
入侵是针对主机运行环境的攻击行为,攻击者可以通过攻击主机而获得主机的控制权,进而利用该主机攻击其他主机或者直接利用该主机的计算资源,是一种典型的网络威胁。在容器环境中,传统的检测没有利用容器的特性,而是使用规则等方法,效果和效率低下。
传统的入侵检测从信息来源上分为两种,一种是网络数据包的内容,另一种基于主机的行为。由于网络的报文只有网络的数据,缺少***的运行数据,对于构造的攻击行为的检测率低。
从检测技术上分为两种,一种是基于特征码,另一种是基于异常情况。基于特征码的核心是维护一个知识库,对于已知的攻击,可以详细、准确的报告出攻击类型,但对未知的攻击效果有限,而且知识库必须不断更新;基于异常情况的监测技术就是先定义一组***正常情况的数值,然后将***运行的数值与所定义的正常数值进行比较,得出是否被攻击。
现有基于主机行为的异常入侵检测技术都是基于主机环境进行设计建模,比如,专利号CN101588358B公开了基于危险理论和NSA的主机入侵检测***及检测方法,该专利是针对高权限的程序的***调用(syscall)序列,由于***调用的数量多,混杂在不同程序中,依赖,被检测攻击程序的的执行序列,容易被攻击者试错;
比如,CN103065092B公开了一种拦截可疑程序运行的方法,该专利根据执行PE文件形成白名单,仅仅根据单一的进程去判定,存在误报可能;
比如,CN110334508B公开了一种主机序列入侵检测方法,该专利也采用了***调用序列,对攻击行为进行特征提取,并利用特征形成模型,再进行检测,该方法仅仅针对单一进程的攻击行为进行分析;
比如,CN100346611C公开了Linux环境下基于调用栈图的入侵检测方法,该专利通过获取调用栈数据生成调用栈图,然后将调用链与调用栈图进行匹配,该方法采集***调用数据进行分析,存在的问题:第一,在Linux***中,***调用的种类相对有限,总数在300多个,数据的丰富度不够,第二,程序运行过程中会产生大量的***调用,数据量非常大,第三,***中不同程序会非常多,比如ls,wc,甚至不同的脚本,这些***调用和客户的业务相关,所以仅仅通过***调用形成的调用栈图存在误报的可能。
上述这些技术都是基于主机环境完成设计建模,主机环境运行的进程多,而容器环境更为单一,若根据容器的特性加以处理,可以让模型变的更为简单,并且识别侦测率更高。
针对相关技术中的问题,目前尚未提出有效的解决方案。
发明内容
针对相关技术中的问题,本发明提出一种基于进程调用链的入侵检测方法,以克服现有相关技术所存在的上述技术问题。
为此,本发明采用的具体技术方案如下:
一种基于进程调用链的入侵检测方法,该方法包括以下步骤:
S1、以父子进程ID为关联关系,构建进程调用树;
S2、以进程执行的命令,对所述进程调用树进行合并;
S3、计算父子进程时间差概率密度函数;
S4、计算进程命令参数基尼系数;
S5、计算进程调用偏离值,进行异常链判定;
S6、计算异常链评分。
进一步的,所述构建进程调用树包括以下步骤:
S11、对父进程ID进行递归,追溯每个进程的进程调用链;
S12、运行至父进程不再能递归得到下一层父进程,停止递归;
S13、构建得到树的节点数等于训练数据集记录数的进程调用树。
进一步的,所述合并调用树包括以下步骤:
S21、从根节点开始做广度优先遍历;
S22、对父节点相同且深度相同的节点,若进程执行命令相同,则对节点进行合并得到合并节点;
S23、执行完节点的合并操作,实现进程调用树的合并。
进一步的,所述合并节点会记录进程执行命令参数序列和父子进程时间差序列。
进一步的,所述计算父子进程时间差概率密度函数包括以下步骤:
S31、对合并后的进程调用树的所有叶子节点,往根节点进行遍历得到一条调用链;
S32、对每一条调用链的边,获取节点之间的调用时间差集合,计算时间差概率密度函数,计算公式如下:
其中,u代表每个时间差序列的平均值,σ代表标准差。
进一步的,所述计算进程命令参数基尼系数包括以下步骤:
S41、对合并后的进程调用树中每一条调用链的点,获取节点的所有命令参数集合;
S42、对该节点执行命令参数序列求其基尼系数,计算公式为:
其中,K代表进程命令参数序列的种类数,pk代表属于第k类的概率。
进一步的,所述计算进程调用偏离值,进行异常链判定包括以下步骤:
S51、对***运行过程中新生成的进程调用,根据父子进程关系,得到一条新的进程调用树;
S52、通过异常链判定模块,计算新生成的进程调用偏离值,若偏离值超过***设定的阈值,判定为异常链。
进一步的,所述偏离值包括分叉偏离值、父子进程时间差偏离值及进程命令参数偏离值;
其中,所述分叉偏离值包括分叉深度偏离值和分叉链长度偏离值,其计算方式分别为:
L代表新的进程调用链的长度,D代表出现分叉的节点的深度;
所述父子进程时间差偏离值的计算方式为:
N代表不在允许范围内的边的条数,D代表出现分叉节点的深度;
所述进程命令参数偏离值的计算方式为:
M代表偏离节点的数量,D代表出现分叉节点的深度。
进一步的,所述计算异常链评分包括以下步骤:
S61、对异常链的进程以及进程执行参数进一步分析与计算,按照评分标准对异常链进行评分;
S62、将异常链评分后得到的各项分值与***设定的阈值依次进行比较,通过加权平均数计算得到最终的异常值;
S63、根据异常值将异常链设置不同的告警等级;
S63、记录各项告警等级,绘制蜘蛛图,供管理员后续进行异常分析。
进一步的,所述评分标准包括以下组成:
异常链判定得到的各项偏离值;
异常链中涉及的敏感与重要的命令个数;
异常链中的进程,在公开的IOC入侵指标中是否匹配,若匹配IOC库,进程异常程度较高;
异常链中的进程命令参数的关键字,在公开的IOC入侵指标中是否匹配,若匹配IOC库,进程命令参数异常程度较高。
本发明的有益效果为:通过利用容器内进程调用信息,构建出容器对应镜像的合并进程调用树。对树节点通过基尼系数计算进程调用参数的离散程度,对树的边通过密度函数计算父子进程调用时间差的概率密度函数,得到进程调用链的模型基线。对新的进程调用判定是否异常进程时,先计算新的进程调用链,再通过进程调用链的模型基线计算出进程调用链的偏离值,若偏离值超过阈值,判定为异常链,并计算异常链评分,作为入侵检测的判定依据。
此外,本方法基于容器环境进行设计建模,并非采用***调用,而使用容器内***执行的命令,容器运行的环境比较单一,进程命令的执行总数量相比***调用更少,调用关系相对更简单。并且采集容器内进程调用信息,从进程调用信息数据中提取进程调用树,并从父子进程时间差提炼得到相应的密度函数,通过密度函数判定新进程调用与历史数据的偏离值,随着训练数据不断增长,密度函数会更加准确表达数据的分布情况。从进程命令参数得到其基尼系数,若进程的命令参数足够离散,基尼系数的特性会让这个进程的命令参数对偏离值无影响,可以有效的减少异常的误判;若进程的命令参数聚合在一个特定集合中,当新进程的命令参数不在这个特定集合中时,会得到一个较大偏离值。以上两个维度的概率密度函数和基尼系数均由可由训练数据不断校准,在实际应用过程中,把判定为非入侵检测的数据不断加入到训练数据中,可自动的持续优化判定模型。
综上,本方法不需要预设相关规则,适应性强;同时由于容器运行环境的单一性,侦测效率高。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据本发明实施例的一种基于进程调用链的入侵检测方法的流程图;
图2是根据本发明实施例的一种基于进程调用链的入侵检测方法的***框图;
图3是根据本发明实施例的一种基于进程调用链的入侵检测方法中构建进程调用树结构图;
图4是根据本发明实施例的一种基于进程调用链的入侵检测方法中合并进程调用树结构图;
图5是根据本发明实施例的一种基于进程调用链的入侵检测方法中基尼系数特质曲线图之一;
图6是根据本发明实施例的一种基于进程调用链的入侵检测方法中基尼系数特质曲线图之二;
图7是根据本发明实施例的一种基于进程调用链的入侵检测方法中蜘蛛图展示图。
具体实施方式
为进一步说明各实施例,本发明提供有附图,这些附图为本发明揭露内容的一部分,其主要用以说明实施例,并可配合说明书的相关描述来解释实施例的运作原理,配合参考这些内容,本领域普通技术人员应能理解其他可能的实施方式以及本发明的优点,图中的组件并未按比例绘制,而类似的组件符号通常用来表示类似的组件。
根据本发明的实施例,提供了一种基于进程调用链的入侵检测方法。
现结合附图和具体实施方式对本发明进一步说明,如图1-7所示,根据本发明实施例的基于进程调用链的入侵检测方法,该方法包括以下步骤:
S1、以父子进程ID为关联关系,构建进程调用树;
S2、以进程执行的命令,对所述进程调用树进行合并;
S3、计算父子进程时间差概率密度函数;
S4、计算进程命令参数基尼系数;
S5、计算进程调用偏离值,进行异常链判定;
S6、计算异常链评分。
结合具体实施例,提供以下进程调用信息,作为示例训练数据,对各个实施例中步骤提供示例:
[
{"pid":101,"ppid":10,"comm":"java","pcomm":"runc","args":"-jardemo1.jar","ts":20},
{"pid":1011,"ppid":101,"comm":"sh","pcomm":"java","args":"test1.sh","ts":30},
{"pid":10111,"ppid":1011,"comm":"curl","pcomm":"sh","args":"www.***.com","ts":40},
{"pid":10112,"ppid":1011,"comm":"curl","pcomm":"sh","args":"www.sina.com","ts":50},
{"pid":10113,"ppid":1011,"comm":"curl","pcomm":"sh","args":"www.sohu.com","ts":60},
{"pid":1012,"ppid":101,"comm":"sh","pcomm":"java","args":"test2.sh","ts":100},
{"pid":10121,"ppid":1012,"comm":"telnet","pcomm":"sh","args":"localhost8443","ts":10},
{"pid":10122,"ppid":1012,"comm":"telnet","pcomm":"sh","args":"localhost","ts":20},
{"pid":1013,"ppid":101,"comm":"sh","pcomm":"java","args":"test1.sh","ts":300},
{"pid":10131,"ppid":1013,"comm":"curl","pcomm":"sh","args":"www.***.com","ts":60},
{"pid":10132,"ppid":1013,"comm":"curl","pcomm":"sh","args":"www.sina.com","ts":80},
{"pid":10133,"ppid":1013,"comm":"curl","pcomm":"sh","args":"www.sohu.com","ts":100},
]
以上示例训练数据中,pid表示进程ID,ppid表示父进程ID,comm表示进程执行命令,pcomm表示父进程执行命令,args表示进程执行参数,ts表示进程命令执行时间与父进程命令执行时间间隔(单位:毫秒,后续简称父子进程时间差)。
在一个实施例中,所述构建进程调用树包括以下步骤:
S11、对父进程ID进行递归,追溯每个进程的进程调用链;
S12、运行至父进程不再能递归得到下一层父进程,停止递归;
S13、构建得到树的节点数等于训练数据集记录数的进程调用树。
比如,对于示例训练数据中的最后一条记录,其进程ID为10133,父进程ID为1013,父进程1013对应的父进程ID为101,如图3所示,图例中每个节点第一行的数字代表的是进程ID,第二行的字符串代表的是进程执行命令。
在一个实施例中,所述合并调用树包括以下步骤:
S21、从根节点开始做广度优先遍历;
S22、对父节点相同且深度相同的节点,若进程执行命令相同,则对节点进行合并得到合并节点;
S23、执行完节点的合并操作,实现进程调用树的合并。
其中,如图4所示,图例中节点以进程执行命令作为标识,合并节点还会记录进程执行命令参数序列和父子进程时间差序列。
父子进程时间差序列会根据进程调用树中的父子关系,将合并到该节点的所有进程的父子进程时间差合并为m*n阶矩阵,其中m为父进程ID的数量,如上的curl节点的父进程ID有1011和1013两个,1011进程下进程执行命令为curl的子进程时间序列为[40,50,60],1013进程下进程执行命令为curl的子进程时间序列为[60,80,100],组合形成矩阵:
进程执行命令参数序列将合并到该节点的所有进程的参数聚合为m*n阶矩阵,其中m为进程命令执行参数的模式(模式可用参数的个数来表示)的数量,如上的curl节点的进程执行命令参数均为1个,因此m=1,序列为["***.com","sina.com","sohu.com","***.com","sina.com","sohu.com"];另外telnet节点的进程执行命令参数有["telnetlocalhost 8443","telnet localhost"]两种模式,前者的参数个数为2,后者参数个数为1,因此m=2,序列为["localhost8443";"localhost"]。
在一个实施例中,所述合并节点会记录进程执行命令参数序列和父子进程时间差序列。
在一个实施例中,所述计算父子进程时间差概率密度函数包括以下步骤:
S31、对合并后的进程调用树的所有叶子节点,往根节点进行遍历得到一条调用链;
S32、对每一条调用链的边,获取节点之间的调用时间差集合,计算时间差概率密度函数,计算公式如下:
其中,u代表每个时间差序列的平均值,σ代表标准差。
概率密度函数:连续型随机变量的概率密度函数表达的是这个随机变量在某个确定的取值点附近可能性的函数,最常见的连续型概率分布是正态分布,正态分布的概率密度函数曲线呈钟型,得到概率密度函数后,给定一个概率值p,可以推算出在正态分布情况下,随机变量在哪个个取值范围内,能保证出现的概率大于p。
父子进程时间差概率密度函数:在***的进程调用中,父进程p0(进程命令设为pcomm)自身调用m秒之后第一次发起某个子进程p1(进程命令设为comm)的调用,其中m即为父子进程的时间差。采集大量相同进程命令的父进程(pcomm)第一次发起子进程(comm)的父样本数据m之后,形成集合M,对集合M可求得其父子进程时间差概率密度函数。
同样的父进程p0(进程命令设为pcomm)会发起k次进程命令为comm的进程调用{p1,p2,p3,...,pk},设每个comm进程的调用时间为tsk,每次计算每个comm进程与前一个进程的时间差得到集合{ts2-ts1,ts3-ts2,...,tsk-tsk-1},对这个集合也可求得其父子进程时间差概率密度函数。
此外,步骤S2对示例训练数据进行合并进程调用树后,curl节点得到的父子进程时间差序列X=[40,50,60;60,80,100],矩阵中的第一列代表的是父进程sh第一次发起curl的时间。第n(n>1)列是父进程第n次发起curl的时间,根据程序的特性,在第一次发起某个子进程执行后,后续通过定时机制再发起子进程的执行,因此需要分别对以上两种类型的时间序列求对应的概率密度函数。
从X中取出第一列X1=[40,60],该列向量即表示父进程第一次发起子进程调用的时间差,对该列向量求其平均值和标准差,得到该列向量的概率密度函数,***可设置父子进程时间差允许的范围阈值,根据该列向量的概率密度函数,可计算出该阈值下对应的父进程第一次发起子进程调用的时间差的允许范围,比如对于示例训练数据X1可计算得到其平均值为50,标准差为14.14,那么若允许的范围阈值为95.5%时,时间差的允许范围为[21.72,78.28]。
从X中对第n(n>1)列向量减去第n-1列向量,并删除第一列,得到X2=[10,10;20,20],该矩阵即表示父进程第n(n>1)次发起子进程调用与上一次子进程调用的时间差,对该矩阵求其平均值和标准差,得到该矩阵的概率密度函数。***可设置父子进程时间差允许的范围阈值如95%,根据该矩阵的概率密度函数,可计算出该阈值下对应的父进程第n(n>1)次发起子进程调用与上一次子进程调用的时间差的允许范围,比如对于示例训练数据X2可计算得到其平均值为15,标准差为5.77,那么若允许的范围阈值为95.5%时,时间差的允许范围为[3.45,26.55]。
在一个实施例中,所述计算进程命令参数基尼系数包括以下步骤:
S41、对合并后的进程调用树中每一条调用链的点,获取节点的所有命令参数集合;
S42、对该节点执行命令参数序列求其基尼系数,计算公式为:
其中,K代表进程命令参数序列的种类数,pk代表属于第k类的概率。
基尼系数是一种与信息熵类似的做特征选择的方式,可以用来数据的不纯度。在CART(Classification and Regression Tree)算法中利用基尼指数构造二叉决策树。
此外,在步骤S2对示例训练数据合并进程调用树后,通过步骤S4能够求出基尼系数,curl节点得到的进程执行命令参数序列为["***.com","sina.com","sohu.com","***.com","sina.com","sohu.com"],该序列总计6条命令,3个类["***.com","sina.com","sohu.com"],每个类出现的概率为1/3,因此基尼系数计算如下:
基尼系数的特质是,若各个类别数量均一致,当类别越少,基尼系数越低,类别只有1种时最低为0;类别无穷大时为1,基尼系数曲线呈图5所示。
基尼系数的另一个特质是,类别数量固定的情况下,类别的集中度越高,基尼系数越低,以二分类为例,若某类的样本数为1,而另一类无穷大,基尼系数接近于0;若两类数量一致时,基尼系数为0.5,基尼系数曲线呈图6所示。
基尼系数与类别数量及类别的聚集程度相关,如何判定基尼系数高还是低,***可设置节点参数训练结果集最大长度L,设置了最大长度后,根据基尼系数曲线可知,类别固定的情况下,基尼系数的最大即为类别聚集程度最低时,可计算出阈值为:
计算得到每个节点的进程执行命令参数序列的基尼系数后。若基尼系数低于阈值,表示类别在运行范围内或者聚集程度较高,根据参数出现的概率排序,记录出现概率较高的参数作为训练结果;若基尼系数高于阈值,表示类别个数超过L,且聚集程度较低,则标记该节点的进程执行命令参数不可作为可疑链的判定依据。
在一个实施例中,所述计算进程调用偏离值,进行异常链判定包括以下步骤:
S51、对***运行过程中新生成的进程调用,根据父子进程关系,得到一条新的进程调用树;
S52、通过异常链判定模块,计算新生成的进程调用偏离值,若偏离值超过***设定的阈值,判定为异常链。
在一个实施例中,所述偏离值包括分叉偏离值、父子进程时间差偏离值及进程命令参数偏离值;
其中,所述分叉偏离值包括分叉深度偏离值和分叉链长度偏离值,其计算方式分别为:
L代表新的进程调用链的长度,D代表出现分叉的节点的深度;
其中,将进程调用链从根节点开始尝试合并到合并进程调用树,进程执行命令相同即可合并,若合并未出现分叉,则分叉异常值记为0;若出现分叉,说明这是一个新的进程执行;分叉深度偏离值fork_deep_score与分叉节点深度成反比且最大值为1。分叉链长度偏离值fork_len_score与分叉节点往后的链长度成正比且最大值为1。分叉偏离值等于分叉深度偏离值和分叉链长度偏离值的平均值。
所述父子进程时间差偏离值的计算方式为:
N代表不在允许范围内的边的条数,D代表出现分叉节点的深度;
其中,将进程调用链从根节点尝试合并到合并进程调用树,若分叉深度异常值fork_deep_score<0.5说明新的进程调用树与进程调用链模型基线树存在重合的边,每条重合的边在步骤S3已经计算出该条边表达的父进程第一次发起子进程调用的时间差的允许范围以及父进程第n(n>1)次发起子进程调用与上一次子进程调用的时间差的允许范围。
所述进程命令参数偏离值的计算方式为:
M代表偏离节点的数量,D代表出现分叉节点的深度;
其中,将进程调用链从根节点尝试合并到合并进程调用树,若分叉深度异常值fork_deep_score<0.5说明新的进程调用树与进程调用链模型基线树存在重合的点,每个重合的点在步骤S4已经计算出该点进程命令参数的基尼系数,若基尼系数高于阈值,说明该进程执行的命令参数足够离散,跳过该节点;若基尼系数低于阈值,则将进程的命令参数与训练结果进行匹配,若匹配失败则标记该节点为偏离节点。
综上,将以上三个偏离值进行加权平均计算,最终得到该次进程调用链的偏离值,当该偏离值大于***设定的阈值时,该次调用链将判定为异常链。
在一个实施例中,所述计算异常链评分包括以下步骤:
S61、对异常链的进程以及进程执行参数进一步分析与计算,按照评分标准对异常链进行评分;
S62、将异常链评分后得到的各项分值与***设定的阈值依次进行比较,通过加权平均数计算得到最终的异常值;
S63、根据异常值将异常链设置不同的告警等级;
S63、记录各项告警等级,绘制蜘蛛图,供管理员后续进行异常分析,若管理员判定不是异常进程,将调用链加入到训练样本。
在一个实施例中,所述评分标准包括以下组成:
异常链判定得到的各项偏离值;
异常链中涉及的敏感与重要的命令个数;
比如,curl,strace等(下称敏感命令集合),通过枚举可得。假设异常链中命中敏感命令集合的命令个数为n,设定异常链敏感命令命中的阈值为m,记敏感命令分为:
当n>=m时,分值达到最高为1。
异常链中的进程,在公开的IOC入侵指标中是否匹配,若匹配IOC库,进程异常程度较高;
其中,假设异常链中匹配IOC入侵指标库的进程数为n,链的长度为为L,记进程IOC分为:
异常链中的进程命令参数的关键字,在公开的IOC入侵指标中是否匹配,若匹配IOC库,进程命令参数异常程度较高。
其中,假设异常链中匹配IOC入侵指标库的进程命令参数个数为n,异常链中总的参数个数为m,进程命令参数IOC分计算方式同进程IOC分。
综上所述,借助于本发明的上述技术方案,通过利用容器内进程调用信息,构建出容器对应镜像的合并进程调用树。对树节点通过基尼系数计算进程调用参数的离散程度,对树的边通过密度函数计算父子进程调用时间差的概率密度函数,得到进程调用链的模型基线。对新的进程调用判定是否异常进程时,先计算新的进程调用链,再通过进程调用链的模型基线计算出进程调用链的偏离值,若偏离值超过阈值,判定为异常链,并计算异常链评分,作为入侵检测的判定依据。
此外,本方法基于容器环境进行设计建模,并非采用***调用,而使用容器内***执行的命令,容器运行的环境比较单一,进程命令的执行总数量相比***调用更少,调用关系相对更简单。并且采集容器内进程调用信息,从进程调用信息数据中提取进程调用树,并从父子进程时间差提炼得到相应的密度函数,通过密度函数判定新进程调用与历史数据的偏离值,随着训练数据不断增长,密度函数会更加准确表达数据的分布情况。从进程命令参数得到其基尼系数,若进程的命令参数足够离散,基尼系数的特性会让这个进程的命令参数对偏离值无影响,可以有效的减少异常的误判;若进程的命令参数聚合在一个特定集合中,当新进程的命令参数不在这个特定集合中时,会得到一个较大偏离值。以上两个维度的概率密度函数和基尼系数均由可由训练数据不断校准,在实际应用过程中,把判定为非入侵检测的数据不断加入到训练数据中,可自动的持续优化判定模型。
综上,本方法不需要预设相关规则,适应性强;同时由于容器运行环境的单一性,侦测效率高。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种基于进程调用链的入侵检测方法,其特征在于,该方法包括以下步骤:
S1、以父子进程ID为关联关系,构建进程调用树;
S2、以进程执行的命令,对所述进程调用树进行合并;
S3、计算父子进程时间差概率密度函数;
S4、计算进程命令参数基尼系数;
S5、计算进程调用偏离值,进行异常链判定;
S6、计算异常链评分。
2.根据权利要求1所述的一种基于进程调用链的入侵检测方法,其特征在于,所述构建进程调用树包括以下步骤:
S11、对父进程ID进行递归,追溯每个进程的进程调用链;
S12、运行至父进程不再能递归得到下一层父进程,停止递归;
S13、构建得到树的节点数等于训练数据集记录数的进程调用树。
3.根据权利要求2所述的一种基于进程调用链的入侵检测方法,其特征在于,所述合并调用树包括以下步骤:
S21、从根节点开始做广度优先遍历;
S22、对父节点相同且深度相同的节点,若进程执行命令相同,则对节点进行合并得到合并节点;
S23、执行完节点的合并操作,实现进程调用树的合并。
4.根据权利要求3所述的一种基于进程调用链的入侵检测方法,其特征在于,所述合并节点会记录进程执行命令参数序列和父子进程时间差序列。
7.根据权利要求1所述的一种基于进程调用链的入侵检测方法,其特征在于,所述计算进程调用偏离值,进行异常链判定包括以下步骤:
S51、对***运行过程中新生成的进程调用,根据父子进程关系,得到一条新的进程调用树;
S52、通过异常链判定模块,计算新生成的进程调用偏离值,若偏离值超过***设定的阈值,判定为异常链。
9.根据权利要求7所述的一种基于进程调用链的入侵检测方法,其特征在于,所述计算异常链评分包括以下步骤:
S61、对异常链的进程以及进程执行参数进一步分析与计算,按照评分标准对异常链进行评分;
S62、将异常链评分后得到的各项分值与***设定的阈值依次进行比较,通过加权平均数计算得到最终的异常值;
S63、根据异常值将异常链设置不同的告警等级;
S63、记录各项告警等级,绘制蜘蛛图,供管理员后续进行异常分析。
10.根据权利要求9所述的一种基于进程调用链的入侵检测方法,其特征在于,所述评分标准包括以下组成:
异常链判定得到的各项偏离值;
异常链中涉及的敏感与重要的命令个数;
异常链中的进程,在公开的IOC入侵指标中是否匹配,若匹配IOC库,进程异常程度较高;
异常链中的进程命令参数的关键字,在公开的IOC入侵指标中是否匹配,若匹配IOC库,进程命令参数异常程度较高。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110584405.4A CN115373834A (zh) | 2021-05-27 | 2021-05-27 | 一种基于进程调用链的入侵检测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110584405.4A CN115373834A (zh) | 2021-05-27 | 2021-05-27 | 一种基于进程调用链的入侵检测方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115373834A true CN115373834A (zh) | 2022-11-22 |
Family
ID=84059192
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110584405.4A Pending CN115373834A (zh) | 2021-05-27 | 2021-05-27 | 一种基于进程调用链的入侵检测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115373834A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116226846A (zh) * | 2022-12-28 | 2023-06-06 | 北京火山引擎科技有限公司 | 一种容器的安全检测方法、装置及设备 |
CN117082217A (zh) * | 2023-10-17 | 2023-11-17 | 北京比格凯特科技有限公司 | 一种基于Jetson平台的智能视频监控*** |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1710866A (zh) * | 2005-06-30 | 2005-12-21 | 西安交通大学 | Linux环境下基于调用栈图的入侵检测方法 |
CN101944167A (zh) * | 2010-09-29 | 2011-01-12 | 中国科学院计算技术研究所 | 识别恶意程序的方法及*** |
CN102521534A (zh) * | 2011-12-03 | 2012-06-27 | 南京大学 | 一种基于粗糙熵属性约简的入侵检测方法 |
JP2014182561A (ja) * | 2013-03-19 | 2014-09-29 | Hitachi Ltd | 計算機システム、プロセス及びスレッドの監視方法 |
CN106790186A (zh) * | 2016-12-30 | 2017-05-31 | 中国人民解放军信息工程大学 | 基于多源异常事件关联分析的多步攻击检测方法 |
CN109240588A (zh) * | 2015-05-27 | 2019-01-18 | 苹果公司 | 用于在触敏设备上主动识别和显示相关内容的***和方法 |
CN111737099A (zh) * | 2020-06-09 | 2020-10-02 | 国网电力科学研究院有限公司 | 一种基于高斯分布的数据中心异常检测方法及装置 |
CN112214768A (zh) * | 2020-10-16 | 2021-01-12 | 新华三信息安全技术有限公司 | 一种恶意进程的检测方法及装置 |
CN112528277A (zh) * | 2020-12-07 | 2021-03-19 | 昆明理工大学 | 一种基于循环神经网络的混合入侵检测方法 |
CN112699369A (zh) * | 2021-01-12 | 2021-04-23 | 安芯网盾(北京)科技有限公司 | 一种通过栈回溯检测异常登录的方法及装置 |
-
2021
- 2021-05-27 CN CN202110584405.4A patent/CN115373834A/zh active Pending
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1710866A (zh) * | 2005-06-30 | 2005-12-21 | 西安交通大学 | Linux环境下基于调用栈图的入侵检测方法 |
CN101944167A (zh) * | 2010-09-29 | 2011-01-12 | 中国科学院计算技术研究所 | 识别恶意程序的方法及*** |
CN102521534A (zh) * | 2011-12-03 | 2012-06-27 | 南京大学 | 一种基于粗糙熵属性约简的入侵检测方法 |
JP2014182561A (ja) * | 2013-03-19 | 2014-09-29 | Hitachi Ltd | 計算機システム、プロセス及びスレッドの監視方法 |
CN109240588A (zh) * | 2015-05-27 | 2019-01-18 | 苹果公司 | 用于在触敏设备上主动识别和显示相关内容的***和方法 |
CN106790186A (zh) * | 2016-12-30 | 2017-05-31 | 中国人民解放军信息工程大学 | 基于多源异常事件关联分析的多步攻击检测方法 |
CN111737099A (zh) * | 2020-06-09 | 2020-10-02 | 国网电力科学研究院有限公司 | 一种基于高斯分布的数据中心异常检测方法及装置 |
CN112214768A (zh) * | 2020-10-16 | 2021-01-12 | 新华三信息安全技术有限公司 | 一种恶意进程的检测方法及装置 |
CN112528277A (zh) * | 2020-12-07 | 2021-03-19 | 昆明理工大学 | 一种基于循环神经网络的混合入侵检测方法 |
CN112699369A (zh) * | 2021-01-12 | 2021-04-23 | 安芯网盾(北京)科技有限公司 | 一种通过栈回溯检测异常登录的方法及装置 |
Non-Patent Citations (1)
Title |
---|
王镇: "基于特征选择和集成学习的入侵检测方法研究", 《中国优秀硕士学位论文全文数据库 信息科技辑》, 15 December 2020 (2020-12-15) * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116226846A (zh) * | 2022-12-28 | 2023-06-06 | 北京火山引擎科技有限公司 | 一种容器的安全检测方法、装置及设备 |
CN117082217A (zh) * | 2023-10-17 | 2023-11-17 | 北京比格凯特科技有限公司 | 一种基于Jetson平台的智能视频监控*** |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Saxena et al. | Intrusion detection in KDD99 dataset using SVM-PSO and feature reduction with information gain | |
Kayacik et al. | Selecting features for intrusion detection: A feature relevance analysis on KDD 99 intrusion detection datasets | |
Zhang et al. | An anomaly detection model based on one-class svm to detect network intrusions | |
Xia et al. | An efficient network intrusion detection method based on information theory and genetic algorithm | |
CN109587179A (zh) | 一种基于旁路网络全流量的ssh协议行为模式识别与告警方法 | |
US20200195672A1 (en) | Analyzing user behavior patterns to detect compromised nodes in an enterprise network | |
Zhai et al. | Reasoning about complementary intrusion evidence | |
CN115373834A (zh) | 一种基于进程调用链的入侵检测方法 | |
CN111488590A (zh) | 一种基于用户行为可信分析的sql注入检测方法 | |
Pathak et al. | Study on decision tree and KNN algorithm for intrusion detection system | |
CN110768946A (zh) | 一种基于布隆过滤器的工控网络入侵检测***及方法 | |
CN115987615A (zh) | 一种网络行为安全预警方法及*** | |
CN115795330A (zh) | 一种基于ai算法的医疗信息异常检测方法及*** | |
CN109547496B (zh) | 一种基于深度学习的主机恶意行为检测方法 | |
Revathy et al. | Development of IDS using mining and machine learning techniques to estimate DoS malware | |
Hendry et al. | Intrusion signature creation via clustering anomalies | |
CN111104670B (zh) | 一种apt攻击的识别和防护方法 | |
CN112134906A (zh) | 一种网络流量敏感数据识别及动态管控方法 | |
CN112287345A (zh) | 基于智能风险检测的可信边缘计算*** | |
JP2010250607A (ja) | 不正アクセス解析システム、不正アクセス解析方法、および不正アクセス解析プログラム | |
CN113839963B (zh) | 基于人工智能与大数据的网络安全漏洞智能检测方法 | |
Ahmed et al. | Enhancing intrusion detection using statistical functions | |
Sulaiman et al. | Big data analytic of intrusion detection system | |
CN111416812B (zh) | 一种恶意脚本检测方法、设备及存储介质 | |
CN110611636B (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 |