版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
BP神经网络入侵检测系统各个模块的设计与实现案例分析目录TOC\o"1-3"\h\u29155BP神经网络入侵检测系统各个模块的设计与实现案例分析 1273641.1嗅探器模块 11921.1.1WinPcap简介 1221481.1.2开发环境配置 23541.1.3网络数据包的捕获与发送 2260371.2管理员数据审计模块 434933.2.1数据包信息提取与审计 4194673.2.2特征值的提取 539413.2.3管理员平台界面的设计 597621.3数据检测模块 6271953.3.1数据标准化处理 6176523.3.2入侵检测算法设计 8163693.3.3测试数据集 11278851.4数据库模块 1135333.4.1黑名单 11283283.4.2白名单 1143121.5系统测试 12282743.5.1测试环境 1245663.5.2系统环境部署及整体测试 121.1嗅探器模块1.1.1WinPcap简介WinPcap是一款Windows平台下免费的,公共的网络访问系统,该项目的目的在于为加载使用win32应用程序提供访问网络底层的能力,它是用于Windows系统下的直接的网络编程。现在网络上大部分的应用程序在需要使用网络通讯功能的时候,对于网络底层的数据包并不需要去详细了解其原理或者数据包内容,由于Windows已经在底层对这些数据包进行了封装,相对于应用程序来说只需要提供相对应的接口,所以只需要应用程序能够正确符合其所使用接口的规范定义,就可以实现应用程序与计算机之间的网络通信。但是我们的入侵检测系统需要对传输的数据包进行数据分析和特征提取,因此必须要了解每个数据包的具体内容,因此WinPcap就能很好地满足我们的需求。互联网上有很多基于WinPcap产生的功能强大的网络工具,比如网络协议分析器(NetworkandProtocolAnalyzers)、网络扫描器(NetworkScanners)、网络监视器(NetworkMonitors)等。本文设计的嗅探器模块就是基于WinPcap开发出的。1.1.2开发环境配置在开发嗅探器模块之前,我们需要对开发环境进行配置。我们首先从WinPcap官网上下载并安装了WinPcap的对应系统运行库以保证其能在我们的计算机环境中正常运行。本文使用了C++编程语言基于VisualStdio进行嗅探器模块的开发。下载完成后,我们需要在系统的环境变量中添加WinPcap的下载目录以便程序能够顺利调用其中的文件。一旦环境配置完成后,我们就可以成功在程序中调用WinPcap的相应功能模块了,如图1.1所示,没有报错,则证明环境配置成功,可以正常调用。图1.1调用WinPcap相应头文件1.1.3网络数据包的捕获与发送在我们配置完开发环境之后,我们就需要对嗅探器的主要功能进行开发,完成对数据包的捕获以及发送功能。通过查阅WinPcap的官方API文档后,我们定义了以下几个用于数据包捕获的类:InitPacp类主要负责统计所在主机上网卡的个数,为后面的根据不同网卡进行抓包打下基础;Savepacket类主要负责分析刚刚捕获到的数据包,并将分析结果以文本文档的形式保存在程序的根目录下;StartCapture类负责开始捕获数据包进程,其中PCAP_OPENFLAG_PROMISCUOUS表示混合模式是否打开,1表示打开混合模式,0表示关闭混合模式;StopCapture类负责停止捕获数据包进程。其中,针对不同类型的数据包,本文也进行了细致的划分。表3-1中列出了常用的协议以及对应的字段值。表3-1常用协议对应字段值表协议名ICMPIGMPIPTCPEGPIGPUDPOSPF协议字段值1246891789在捕获到一个数据包之后,程序会根据协议字段值的不同来判断该数据包为什么类型,鉴于数据包类型过多,本文仅筛选IP数据包、TCP数据包和UDP数据包进行捕获分析。本文需要提取的IP数据包信息包括但不限于以下几种:版本号version,服务类型rsv_tos,报头总长度length,协议protocol,源IP地址src_ip,目的IP地址dst_ip,报文数据data等。本文需要提取的TCP数据包信息包括但不限于以下几种:源端口src_port,目的端口dst_port,序号sequence,确认号ack_num,ACK标志ack,RST标志rst,SYN标志syn等。本文需要提取的UDP数据包信息包括但不限于以下几种:源端口src_port,目的端口dst_port,数据包长度length,数据data等。整个数据包的信息获取流程如图1.2所示。图1.2数据包信息获取流程在我们捕获到数据包并对其中的数据进行提取之后,我们需要将我们提取出来的信息发送给管理员审计端。在捕获数据包的过程中我发现了有部分数据包内容出现了重复的情况,经过资料的查找,我认为可能是当前网络状况不佳导致数据包多次发送,经过筛选本文已将多余的数据包过滤清除。发送数据包时本文采用的是socket编程,该种方式能够实现数据包的实时发送,测试过程使用了本机的9999端口,结果如图1.3所示。图1.3测试结果至此,嗅探器模块的功能已经初步实现。1.2管理员数据审计模块数据包信息提取与审计在我们设计好嗅探器并使其成功工作之后,我们需要将嗅探器提取出来的数据传递给管理员审计平台。因此,我们可以根据TCP连接的原理,整理出每一条连接的特征信息,提取出相应的特征值。在TCP建立连接的过程中,首先客户端向服务端发出带有SYN标志的数据包,序号为1000,没有任何数据,这段过程表示的是客户端计算机向服务端发出的连接请求。在服务端收到客户端发送过来的连接请求之后,会向客户端发出带有SYN标志位和ACK标志位的数据包,初始的序列号为8000,同时确认序列号会增加1变成1001,表示客户端已经收到了服务端发送过来的确认连接请求的信息,并发起从服务端到客户端的连接,同时向服务端发送带有一个ACK标识的数据包,表示客户端已经收到了服务端的连接请求。到此为止,客户端与服务端的连接已经建立成功,所有数据包的ACK字段位置均为1,表示确认序列号为有效的。此时,我们可以通过上述的过程来检验ACK字段是否为1来判断连接过程是否出现异常。在客户端与服务端建立完连接之后,就会开始进行TCP数据包的传输。从客户端发送出初始序号为1001确认序号为8001的带有20个字节的数据包给服务端,在服务端接收到该数据包后,将会向客户端发送初始序号为8001确认序号为1021的带有10个字节的数据包,用来表示确认收到该数据包并发送了10个字节的数据。最后,客户端发出确认号为8011的数据包表示对服务端发送的10个字节的数据已经确认收到。在数据传递完成后,客户端向服务端发送带有FIN标识的数据包用以请求断开连接。服务端在收到该请求后发出带有ACK确认位的数据包表示确认断开连接。最后服务端发送带有FIN标识的数据包用于请求断开服务端到客户端之间的连接,客户端再进行确认应答。至此,一个完整的TCP数据传输过程就可以由上文体现出来。因此,通过TCP连接的原理,本文将数量庞大的数据包汇总成了单个的连接信息用以简化数据的处理难度。而UDP数据包则会被视为一个单独的连接。特征值的提取在上一阶段的数据包提取并整理结束后,我们得到了用于数据检测模块使用的一些数据,为了让数据检测模块更为直观地处理数据,我们将提取出的数据进行特征值处理,将这些数据转化为更简洁的特征值,而特征值选取的得当与否,直接影响到入侵检测系统的检测精确度。由于我们采用的是CICIDS2017数据集,因此我们需要将提取出来的特征值与该数据集中的特征值一一对应,这样才能使本文所设计的神经网络对训练数据集和测试数据集保持一致。综合CICIDS2017数据集来看,系统的特征值被分为以下几类:TCP连接的基本连接特征(9种)TCP连接的内容特征(13种)2秒时间内网络流量的统计特征(9种)在前100个连接中主机网络流量的统计特征(10种)在对TCP连接进行状态捕获时,我们可以根据其状态的不断更新实时得到它们的特征值,如果想要判断其中的服务类型,则需要根据该种服务使用的端口号来判断,不同的特征值需要通过不同的方式来判断,因此我们需要通过大量的数据集来训练以达到目的。管理员平台界面的设计由于我们的大部分代码采用的是C++编写,因此在管理员审计界面,本文采用了MFC框架对平台界面进行设计与编写。该页面主要用于集成显示针对所有抓取特征值的整合信息以及系统对受到攻击行为事件的响应窗口监测窗口等等。该系统主界面如图1.4所示。图1.4管理员审计界面1.3数据检测模块数据标准化处理在入侵检测系统几十年的发展历程来看,怎样才能在规模巨大的网络流量和系统日志数据中将正常行为的数据与异常行为的数据分离开来,一直都是入侵检测系统设计的一大难点也是最为核心的任务。因此,本文提出的入侵检测模型中的数据检测模块在整个系统中担任了极为重要的角色。首先,该模块需要对上一个模块收集到的特征值进行数值化、标准化、数据降维、特征选择、特征提取等处理操作,最终需要与我们训练神经网络时所使用的CICIDS2017数据集的格式相同。根据CICIDS2017数据集的格式,在我们收集到的41种特征值中有3种需要进行数值化处理,它们分别是协议类型、目标主机的网络服务以及是否正常连接的状态信息(flag)。在数值化处理的过程中,本文采用将字符型转化为数值型进行一一对应。实验数据的规范化也被称为是数据的标准化,是使用某一种特定的方法,将数据向某一范围中收缩已达到一个稳定的状态。现在常用的数据标准化方法有很多,如最大最小标准化,z-score标准化以及小数定标标准化等等方式。本文采用的是z-score标准化算法对使用的训练数据集进行数据处理,在这种处理方法中,属性A的值会根据A的均值和标准差进行统一化处理。计算公式见(3-1)。(3-1)该公式中的avgA是属性A的平均值,是属性A的标准差。接下来,本文将使用特征提取以及数据降维的方式对数据进行规范化处理。这两种方法在机器学习和模式识别领域都是处理海量数据十分有效的方法,能够降低特征的维度,降低我们处理数据时的难度以及复杂程度。较为典型的特征提取以及数据降维流程如图1.5所示。图1.5特征选择过程本文首先需要基于特征选择的过程对训练样本进行处理,利用主成分分析算法(PrincipalComponentAnalysis,PCA)对可能产生入侵的数据进行特征筛选,构建无关联的网络入侵数据特征。再利用线性判别分析算法(LinearDiscriminantAnalysis,LDA)在我们已经生成的多维特征空间中计算出一个最优的鉴定方向,将维度比较高的特征向量投影到这个最佳鉴定方向上去,从而能够计算出在该新的特征空间下的特征,总体变换矩阵如公式(3-2),我们进行降维处理后提取的新的特征计算公式如(3-3)所示。(3-2)(3-3)通过该部分的处理,我们将收集到的数据集的41位特征数据降低得到了4维数据,提升了下一步神经网络的计算效率。入侵检测算法设计BP神经网络算法BP(BackPropagation)神经网络是1986年由Rumelhart和McClelland为首的科学家提出的概念,是一种按照误差逆向传播算法训练的多层前馈神经网络,是目前应用最广泛的神经网络之一。这种神经网络在复杂数据的处理领域中发挥出了非常大的作用。BP神经网络本身有着不同的阈值以及权重,这些阈值会作用于许许多多各种各样的映射函数从而使其能够达到不同的映射效果。通过这种方式,就能够表示一些无法用数学公式表达出来的关系。该神经网络利用误差公式与权重的积分量作为误差数据的计算方式,通过不断地调整每个权重的参数值,使其中的每个环节的误差逐渐减小,最终达到我们能够接受的误差范围之内。BP神经网络的拓扑结构最少分为三层,层与层之间靠若干个神经元连接起来。我们假设某两个相邻层之间的神经元a和神经元b之间的权重为,神经元b的阈值为,同时我们选择的激活函数如公式(3-6)所示,输出值为,每个神经元的输出数据是由上层神经元输出的值与该神经元的权重乘积得出,再通过激活函数的处理变成最终的输出值。每个节点的计算公式如下。(3-4)(3-5)关于每个神经元的权重分配设置在0~1之间的随机数值,在隐藏层中我们采用的激活函数如下。(3-6)选择这种激活函数的原因在于该种函数的图像大致为S型,它的数值递增与递减相对柔和,覆盖率较之其他激活函数更高,微分效果好,非常适合本文场景下使用的BP神经网络,因此本文选用这种激活函数。粒子群优化算法粒子群优化算法(ParticleSwarmOptimization,PSO)是由Eberhart和Kennedy于1995年提出的。这种算法是通过模拟鸟群觅食行为而发展起来的一种基于群体协作的随机搜索算法。该算法启动时,将会初始化一组随机解,通过不断地多次迭代寻找出误差最小的最优解,并跟踪当前最好的粒子,然后使该粒子在整个解集合的空间中飞行寻找最优解。该算法的具体流程如下:将初始的数据集划分为一个个更小的数据集,把第一个数据集中的一组数据设定为第一个粒子,初始化并赋予该粒子位置的坐标属性和速度属性。根据适应度算法来计算出已经确定好的每个粒子的适应度并进行二次筛选。对比所有粒子的适应值并选出与最好位置的值误差最小的粒子作为当前最好的粒子进行计算。根据某一个特定的公式来更新所有粒子的速度和位置。如果已经满足了我们的计算需求,则停止该算法;如果没有满足需求,则从第二步初始化开始继续循环。将所有求得的最优粒子记录下来得到每个数据集经过处理后的特征值。差分演化算法差分演化算法(DifferentialEvolution,DE)是一种已经被提出很久,到现在已经相对其他算法较为成熟的随机计算技术。该算法主要通过模拟自然选择的优胜劣汰制度,通过不断对数据进行筛选,刷新,使得一些适应系统环境的数据被保留了下来成为系统的最优解。差分演化算法与遗传算法非常相似,都包括了变异、杂交和筛选操作,但是这些操作与一般的遗传算法还是存在一些区别。其原理则是从最初的父代个体中选择两个不同的个体进行差分形成差分矢量,再选择另一个个体与刚刚生成的差分矢量个体求和生成实验个体,然后使父代个体分别于生成的实验个体进行交叉操作产生新的子代个体,最后筛选出父代和子代个体中更为优秀的个体保存到下一代的群体中去。整个数据循环的过程中,我们需要的数据不断更新优化最终达到我们期望的效果。基于粒子群优化算法和差分演化算法优化的BP神经网络算法本文在传统BP神经网络的基础上加上了粒子群优化算法和差分演化算法使优化后的BP神经网络能够更好地测试出我们所要的效果。本文构建的BP神经网络分为3层,输入层分为4个神经元,分别对应预处理过的4维数据,并将该预处理过的4维数据作为输入;隐层神经元的个数设置为6个,输出层神经元个数为1个,整个神经网络的工作流程图如图1.6所示。在最终得出结果后,我们使用差分演化算法优化结果的分类情况。图1.6基于PSO和DE算法优化后的神经网络算法上图的流程图可以总结为以下四个阶段:最初的BP神经网络进行自我初始化阶段,根据本文提供的CICIDS2017训练数据集自我构建了一个神经网络。进入了粒子群优化算法阶段,将神经网络中需要优化的参数提取出来,用粒子的形式表示出来并进行粒子最优化。迭代第一步和第二步直到拟合为最小误差值。使用差分演化算法对神经网络进行输出结果优化。至此,本文设计的基于BP神经网络的入侵检测系统的所有主要功能模块已经基本设计完成。测试数据集与搭建审计平台使用C++编程语言不同,设计神经网络部分本文使用的是基于Python的编程,目的是能够更简洁更方便地设计出一个功能齐全的神经网络。神经网络的训练过程如图1.7所示。图1.7BP神经网络训练过程1.4数据库
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026届高考化学考向核心卷含答案(湖北)
- 2026届高考生物考向核心卷含答案(河北)
- 2026年行业新篇:高低压配电柜创新技术深度解析报告
- 小学五年级信息技术浓描淡抹有层次教学设计
- 小学二年级道德与法治教学设计:我是班级值日生第二课时责任与协作实践
- 2027年高中信息技术必修2《组建小型无线网络》项目式教学设计
- 高中地理选择性必修3教学设计:耕地资源与粮食安全单元整体教学设计
- 初中九年级数学《相似三角形的判定》教学设计
- 高三英语一轮复习教学设计:必修二 Unit 1 Cultural Heritage 核心素养导向下的大单元整体教学实践
- 2027年高中地理高二年级《欧洲西部》教学设计
- T/TMAC 248-2025连续石墨化炉能源消耗限额
- 供应链韧性的理论内涵与战略框架构建
- 2026高考英语考前高频词汇+作文万能模板
- 2024人教版八年级英语下册(全册)教案
- 小学五年级上册体育与健康全册教案教学设计
- 2025-2026学年人教版八年级英语上册(unit1-8)各单元测试卷及参考答案
- 洗煤设备专业知识培训课程课件
- 生产清线管理规定
- 国家电投集团所属国家核电招聘笔试题库2025
- 部编1-9年级首小学生必背古诗词带译文
- 公路隧道超前地质预报技术规程DB53∕T 1032-2021
评论
0/150
提交评论