一种基于神经网络和系统调用的异常入侵检测方法.docx
- 文档编号:2960688
- 上传时间:2022-11-16
- 格式:DOCX
- 页数:4
- 大小:19.38KB
一种基于神经网络和系统调用的异常入侵检测方法.docx
《一种基于神经网络和系统调用的异常入侵检测方法.docx》由会员分享,可在线阅读,更多相关《一种基于神经网络和系统调用的异常入侵检测方法.docx(4页珍藏版)》请在冰豆网上搜索。
一种基于神经网络和系统调用的异常入侵检测方法
一种基于神经网络和系统调用的异常入侵检测方法
中图法分类号:
TP39308文献标识码:
A
1引言
随着个人、企业和政府机构日益依赖于Internet进行通信、协作及销售。
起初人们往往指望通过防火墙的身份认证和访问控制来保障通信的安全性,虽然防火墙及强大的身份验证能够保护系统不受XX访问的侵扰,但是它们对专业黑客或恶意的经授权用户却无能为力。
依赖防火墙建立网络的组织往往是“外紧内松”,无法阻止内部人员所做的攻击,且对信息流的控制缺乏灵活性。
由于性能的限制,防火墙通常不能提供实时的入侵检测能力,对于企业内部人员所做的攻击,防火墙形同虚设。
入侵检测是对防火墙及其有益的补充,入侵检测系统能使在入侵攻击对系统发生危害前检测到入侵攻击,并利用报警与防护系统驱逐入侵攻击。
在入侵攻击过程中,能减少入侵攻击所造成的损失。
在被入侵攻击后,收集入侵攻击的相关信息作为防范系统的知识,添加到知识库内,增强系统的防范能力,避免系统再次受到入侵。
入侵检测被认为是防火墙之后的第二道安全闸门,在不影响网络性能的情况下能对网络进行监听,从而提供对内部攻击、外部攻击和误操作的实时保护,大大提高了网络的安全性[1]。
根据IDS分析引擎中使用的检测方法的不同,可以把IDS分为误用检测和异常检测。
所谓误用检测,是指运用已知攻击方法,根据已定义好的入侵模式,通过判断这些入侵模式是否出现来检测。
而异常检测是指根据使用者的行为或资源使用状况的正常程度来判断是否入侵,而不依赖于具体行为是否出现来检测。
在理论研究方面,对于误用检测而言,目前主要有简单模式匹配、专家系统、状态转移法、信息反馈批处理分析等检测方法;而异常检测主要采用了专家系统、量化分析、统计分析、非参量化统计分析和基于规则的检测等处理手段。
神经网络是一种非参量化的分析技术,使用自适应学习技术来提取异常行为的特征,通过对训练数据集进行学习以得出正常的行为模式。
神经网络由大量的处理单元组成,单元间通过带有权值的连接来进行交互。
神经网络使用以下的方法来标志异常事件:
改变单元状态、改变连接的权值、添加连接或删除连接。
K.Fox等人[2]使用神经网络来进行攻击检测,对于异常检测和误用检测分别采用多层感知机(MultiLayerPerception)和多层BP(BackPropagation)的神经网络模型,取得了不错的实验效果。
A.K.Ghosh和A.Schwartzbard[3]基于1998年DARPA数据研究了神经网络在异常检测和误用检测中的应用,他们的实验结果表明基于神经网络的入侵检测模型在误用检测中工作得很好,在低误警率下能够可靠地检测出绝大部分已知的估计样式,但对未知攻击模式则效果不佳。
从以往的基于神经网络的入侵检测模型来看,对入侵行为的识别往往是通过对网络连接的某些特征或主机日志、审计记录的分析和学习来实现的,如TCP连接的流量特征(目的地址、源地址、目的端口号、源端口号、传输协议、发送字节数、TCP选项等)、主机审计记录(CPU利用率、I/O利用率、文件访问、用户命令调用序列等)。
虽然基于神经网络的入侵检测模型在基于上述特征的入侵检测系统中有不错的效果,然而由于这些检测行为是“粗粒度”的,因此对于慢速、持久的网络攻击和刻意冒充用户正常行为的攻击检测效果不佳,不能适应用户行为的变化统计轮廓。
显然,单纯地增加网络或主机事件记录的输入长度是不可取的,较长的滑动窗口事件输入将为神经网络的训练增加时间,并容易导致由于“过拟合”而降低系统的泛化能力。
因此,采用“细粒度”的输入――进程执行轨迹的时域特征将有可能改善神经网络的检测性能。
本文对基于进程执行的系统调用序列进行分析,利用多层BP网络训练正常进程的短序列调用,对1998年DARPA数据源的实验结果表明,基于短系统调用序列的多层BP网络在异常检测中具有可靠的检测精度,同时保持了较低的误警率。
2进程系统调用序列的异常检测
在UNIX系统中,进程运行过程中会产生一系列系统调用,通过对这些系统调用的分析,可以发现进程的异常运行状态,进而判断出该系统是否受到攻击。
1996年Forrest等人[4]在研究基于人工免疫的入侵检测中,发现可以通过对进程正常运行时的执行轨迹建模来刻画进程的正常运行状态,从而建立了执行轨迹的局部模式(短序列)特征,与这些模式的偏离被认为是潜在的入侵行为。
他们提出了所谓的时延嵌入序列(Tide)方法,通过列举出现在训练数据中唯一的、预先定义的长度为K的连续序列来构造进程的正常行为轮廓,这样的短序列以树状存储在进程正常轮廓库中。
进一步,Warrender,Forrest等人[5]发现进程运行不正常时短系统调用序列具有局域特征,因此可以通过研究给定长度的局部区域中长度为K的短序列与进程正常轮廓库中不匹配的短序列数目来检测攻击,称之为序列Tide方法(Stide)。
Stide方法进一步扩展为带(频率)门限的Stide方法,即TStide方法。
它考虑了短序列出现的频率,而将稀有序列从进程的正常轮廓库中忽略。
A.Wespi,M.Dacier和H.Debar[6]基于一种生物序列模式发现方法――Teiresias,提出了一种可变长度的短序列的正常模式建立方法,研究结果表明该方法明显好于定长序列的检测方法。
基于进程系统调用序列的异常检测方法中,一个关键因素是确定短序列的长度。
WenkeLee利用信息论的方法研究了不同长度的短序列对检测结果的影响。
通过对进程执行轨迹建立熵、条件熵、信息增益等概念,定量描述了1998DARPA数据源的特征,结果表明检测性能和审计数据的正则性有密切关系,只有当训练数据和测试数据的相对条件熵较小时,训练获得的模型才对测试数据具有较好的检测性能。
本文的实验数据源来自1998年DARPA数据,这个数据源包含了七周的训练数据和两周的测试数据,大约有500万条训练数据和30万条测试数据。
测试数据包含了38种攻击,分为四大类:
Probing,DenialofService(DoS),UsertoRoot(U2R)和RemotetoLocal(R2L),其中14种攻击在训练数据中没有出现过。
根据M.Sabhnani和G.Serpen[7]的分析,对于U2R和R2L类攻击,现有的模式分类或基于机器学习的误用检测方法效果很差,因为这两类攻击的记录在整个数据源中很少,而且在测试集中有大量训练集中没有出现的攻击记录,分析表明训练集和测试集分别代表了不同的“目标假设”。
据此,本文主要研究采用多层BP网络对进程系统调用的短序列进行训练,并利用训练获得的神经网络的结构进行异常检测。
3基于三层BP网络的异常检测
3.1三层BP网络的结构
利用神经网络进行异常检测,本质上可视为根据训练数据对布尔函数进行逼近。
由于任意函数均可被一个有三层单元的前馈网络逼近,因此这里采用三层BP神经网络来对进程系统调用序列作异常检测,其中隐含层和输出层均使用Sigmoid函数σ(y)=1/(1+e-y)。
根据WenkeLee[8]的研究结果,进程系统调用序列长度为6~14时,训练数据的条件熵较小,这与Forrest等人的研究结果一致,考虑到计算成本,采用长度为6的窗口沿进程执行轨迹滑动以得到用于训练的短序列集。
多层BP网络的训练算法有好几种,如梯度下降法、带冲量因子的梯度下降法、共轭梯度法、拟牛顿法等。
本文采用了带冲量因子的梯度下降法来训练BP网络。
算法过程[9]简述如下:
假设训练样例是形式为的序对,其中x为网络输入值向量,t为目标输出值。
η为学习速率,α为冲量因子。
nin为网络输入的数量,nhidden为隐藏单元的数量,nout为网络输出单元的数量(这里为2)。
从单元i到单元j的输入表示为xji,单元i到单元j的权值表示为wji。
(1)创建具有nin个输入,nhidden个隐藏单元,nout个输出单元的BP网络;
(2)初始化所有的网络权值wji(0)为小的随机值(例如-0.05和0.05之间);
(3)对于第m个训练样例,将输入沿网络前向传播,并计算网络中每个单元u的输出ou,使误差沿网络反向传播;
(4)对于网络的每个输出单元k,计算它的误差项δk,δk=ok(1-ok)(tk-ok);
(5)对于网络的每个隐藏单元h,计算它的误差项δh,δh=oh(1-oh)∑k∈outputswkh(m-1)δk;
(6)利用误差项更新每个网络权值wji(m),wji(m)=wji(m-1)+Δwji(m),其中Δwji(m)=ηδjxji+αΔwji(m-1);
(7)重复第(3)~(6)步,直到满足停止条件(如指定的迭代次数或最小允许误差)。
3.2输入数据预处理
在本文的BP网络中,输入的是进程正常执行的轨迹。
用长度为6的窗口沿正常进程执行轨迹滑动,得到进程正常执行的短系统调用序列库,每个进程可由长度为6的短系统调用序列的组合来表征。
若M为所得短序列库的大小,可对M个不同的短序列编号,从而每个进程可用M维短序列来表示。
由于神经网络只能处理数值逼近,因此在输入之前必须对短序列作预处理,将其转换为数值。
这里采用了Y.Liao和V.Vemuri[10]提出的tf×idf量化方法,这一方法借鉴了文本分类中K?
步?
邻算法对文本“词”的量化思想。
假设fij为短序列i在进程j中出现的频率,N为正常进程数,ni为短序列i在整个短序列库中出现的总次数,则定义进程j中短序列i的取值aij为
这样一来,每个进程j就可用一个M维的数值向量来表示,向量的第i个元素就是编号为i的长度为6的短系统调用序列在进程j中的取值aij。
当短序列库中正常进程的短系统调用序列数M很大时,需要降低处理的维数,可采用的方法有去除对分类无意义的系统调用、进行特征选择和重新参数化等。
4实验结果与性能比较
实验中选取了1998DARPA的550个进程来训练,其中包含20个异常进程,如Ejectexploit,Formateexploit,Ffbexploit等,这些进程来自于Solaris主机轨迹系统调用的BSM日志。
测试数据集由80个进程组成,除了包含训练集中的20个异常进程外,还增加了8个训练集中没有出现的异常进程,以考察三层BP网络对未知异常进程的检测能力,其余52个正常进程是从BSM正常进程库中随机抽取的。
实验中,首先要确定BP网络隐藏层的数目nhidden,nhidden太小,则神经网络学习误差较大;nhidden太大,则网络易出现“过拟合”现象,即系统可以很好地拟合训练数据集,但泛化性能很差。
对隐藏层单元数目的确定理论上没有很好的方法,通常由实验测试得出。
这里采用交叉―测试方法,通过反复试验发现nhidden为25时性能较好。
在BP网络的训练中,取η为0.1,α为0.6,最小允许误差为0.001。
实验结果如表1所示。
表1算法性能比较
由表1可见,几种算法对训练集的检测效果很好,同时保持了很低的误警率。
三层BP网络和K?
步?
邻算法对训练集检测率达到了100%,即可以检测训练集中的所有异常进程。
但对于测试集,均有不同程度的性能下降,这是因为测试集中包含了训练集中未曾出现过的新异常序列。
BP网络具有相对最高的检测率,达到了93%,此时误警率保持在一个较低的水平,为1.37%。
K?
步?
邻算法的检测率低于三层BP网络,同时误警率也更低。
而TStide算法的性能在给定的测试集上明显低于上述两种算法。
5结论
由于进程运行过程中会产生一系列系统调用,通过对这些系统调用的分析和建立进程正常运行的短系统调用序列库,可以发现进程的异常运行状态,进而判断出该系统是否受到攻击。
相应地,提出了各种基于短系统调用序列的异常检测方法。
本文着眼于利用BP神经网络来建立进程执行时短系统调用序列的正常轮廓。
通过对短系统调用序列合适
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 一种 基于 神经网络 系统 调用 异常 入侵 检测 方法