- 1、本文档共35页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
snort分析评估.ppt
SNORT原理简介与优化及GNORT初探 刘斐然 主要内容 Snort原理是什么? Snort在实际应用中的缺陷有哪些? 如何对Snort进行优化? Gnort初探。 入侵检测系统的基本结构 入侵检测系统通常包括三功能部件: 信息收集,其来源如下: 系统或网络的日志文件 网络流量 系统目录或文件的异常变化 程序执行中的异常行为 信息分析 模式匹配 统计分析 完整性分析 结果处理 对异常进行记录/报警等 入侵检测系统分类 Snort--基于特征检测的NIDS 在1998年,Martin Roesch先生用C语言开发了开放源代码 Open Source 的入侵检测系统Snort.直至今天,Snort已发展成为一个多平台 Multi-Platform ,实时 Real-Time 流量分析,网络IP数据包记录等特性的强大的网络入侵检测/防御系统 Network Intrusion Detection/Prevention System ,即NIDS/NIPS. Snort有三种工作模式:嗅探器、数据包记录器、网络入侵检测系统。 嗅探器模式仅仅是从网络上读取数据包并作为连续不断的流显示在终端上。 数据包记录器模式把数据包记录到硬盘上。 网路入侵检测模式是最复杂的,而且是可配置的。我们可以让snort分析网络数据流以匹配用户定义的一些规则,并根据检测结果采取一定的动作。 Snort的结构组成 Snort主要包含以下模块: 数据包捕获模块: 通过DAQ调用底层函数库,捕获来自网络的数据包 解码模块 对捕获的数据包进行协议解码 预处理模块 以插件形式存在,对IP分片进行重组,防止ARP欺骗等等 规则匹配模块 根据设置的规则对数据包进行匹配 输出模块 以插件形式存在,当匹配成功时进行记录或报警 Snort原理分析--数据包解码 在Snort内部用Packet数据结构表示一个数据包。数据包解码模块负责根据捕获到的数据包初始化Packet数据结构。(该结构定义在decode.h中) 数据包解码函数均定义在decode.c中,由grinder指针指向其入口函数。解码流程如右图所示。最后生成完整的Packet结构。 Snort原理分析--数据包预处理简介 解码后的数据包还需经过预处理才能被主探测引擎进行规则匹配。预处理器的主要用来应对一些IDS攻击手段。其作用包括: 针对可以行为检查包或修改包,以便探测引擎能对其正确解释。 负责对流量标准化,以便探测引擎能精确匹配特征。 目前已知的IDS逃避技术主要有: 多态URL编码; 多态shellcode; 会话分割; IP碎片; Snort原理分析--预处理器简介 Snort主要包含以下预处理器: 包重组预处理器: Frag3:IP分片重组和攻击监测。 Stream5:维持TCP流状态,进行会话重组。 协议规范化预处理器: HttpInspect:规范HTTP流,如将Unicode或hex翻译成snort可以识别的字符集。 RpcDecode:规范RPC调用。 异常检测预处理器: ARPspoof:检测ARP欺骗。 SfPortscan:检测端口扫描。 在Snort中,捕获的数据包要经过所有已经打开的预处理器。预处理器是由插件来实现的,这样的好处为: 可以根据实际环境启动或停止一个预处理插件,提高Snort效率。 可以灵活添加自己编写的预处理插件,预防新型的IDS逃避手段。(如何编写预处理插件在源码doc/README.PLUGINS中有初步介绍) Snort原理分析--预处理器初始化 Snort预处理器初始化流程如下: 首先调用RegisterPreprocessors函数,将所有预处理插件注册进全局preproc_config_funcs链表中,内容包括:关键字及相关预处理插件的初始化函数等。 调用ConfigurePreprocessors函数,根据配置文件和命令行参数遍历preproc_config_funcs链表,比对关键字。如相同则运行预处理插件的初始化函数。 预处理插件的初始化函数通过调用AddFuncToPreprocList将其实际的预处理函数添加到preproc_eval_funcs链表中,插入时会根据预处理插件的priority进行排序。 当程序捕获到数据包时,首先通过grinder指向的函数进行解码。然后执调用preproc_eval_funcs链中的预处理程序进行预处理。 Snort原理分析--规则简介 Snort规则分为Rules Headers和Rules Options,格式为: rule headers ( rule options ) 规则头 Rules Headers 包含结果处理模式,协议,来源与目地的IP地址,来源与目地的端口等。
文档评论(0)