1、Snort入侵检测系统分析2015年12月6日Snort入侵检测系统分析简介 Snort的一些源代码是从著名的TCPDUMP软件发展而来的。snort是一个基于LIBPCA包的网络监控软件,可以作为一个十分有效的网络入侵监测系统。它运行在一个“传感器”主机上,监听网络数据。这台机器可能是一台简陋的运行FREEBSD系统的Pentium100 PC,并且至少有一个网卡。 Snort首先根据远端的IP地址建立目录,然后将检测到的包以TCPDUMP的二进制格式记录或者以自身的解码形式存储到这些目录中.这样一来,你就可以使用snort来监测或过滤你所需要的包.Snort是一个轻量级的入侵检测系统,它具
2、有截取网络数据报文,进行网络数据实时分析、报警,以及日志的能力。snort的报文截取代码是基于LIBPCA库的,继承了LIBPCA库的平台兼容性。它能够进行协议分析,内容搜索/匹配,能够用来检测各种攻击和探测,例如:缓冲区溢出、隐秘端口扫描、CGI攻击、SMB探测、OS指纹特征检测等等。snort使用一种灵活的规则语言来描述网络数据报文,因此可以对新的攻击作出快速地翻译。snort具有实时报警能力。可以将报警信息写到syslog、指定的文件、UNIX套接字或者使用Winpopup消息。snort具有良好的扩展能力。它支持插件体系,可以通过其定义的接口,很方便地加入新的功能。snort还能够记录
3、网络数据,其日志文件可以是TCPDUMP格式,也可以是解码的ASCII格式。简单的说,Snort是数据包的嗅探器,也是数据包记录器,还是NIDS。 提供数据包嗅探和记录功能只是Snort的部分功能,Snort的特点就是其入侵检测功能根据入侵规则匹配数据包中的内容。Snort还是一个自由,简介,快速,易于扩展的入侵检测系统,已经被移植到了各种UNIX平台和winY2k上。同时,它也是目前安全领域中,最活跃的开放源码工程之一。体系结构Snort有5个主要部件:捕包程序库libpcap、包解码器、预处理程序、检索引擎、输出组件。流 量包解码器预处理程序器检测引擎器输出插件器预处理程序器图1 Snor
4、t组件数据流程图捕包程序库捕包装置把包以原始状态捕获后送给解码器。解码器是进入Snort的第一步,它将特殊协议元素翻译成内部数据结构。它的目的是剥落包头。利用TCP-IP栈解码并且将包放入一个数据结构中。在最初的捕包和解码完成后,有预处理程序处理流量。许多插入式预处理程序对包进行检查或操作后将它们交给下一个组件检索引擎。检索引擎对每一个包的一个方面进行简单的检验以检测入侵。最后一个组件是输出插件,它对可疑行为产生报警。大规模的应用程序很少采用单机模式,Snort通常采用分布式体系对网络进行入侵检测。最典型的安装方式是三层体系,即传感器层、服务器层、分析员控制台。捕包程序库libpcap和包解码
5、器运行在传感器上,负责对抓来的包进行解释并传递警报。由于传感器必须放置在要监控入侵的网段,为了保证安全,通常只安装Snort和它在之上运行的支撑应用程序。建议Linux或BSD等UNIX类型的操作系统。传感器的两块网卡一块用作捕包接口不分配IP,一块用作管理接口分配IP。捕包程序库libpcap运行在Libpcap平台上,由于Libpcap平台的独立性使得Snort可以被移植到任何地方,成为一个真正与平台无关的应用程序。预处理程序预处理是Snort的一类插件。它在检测引擎之前对数据进行处理,并且努力与不断变化的漏洞和攻击保持同步。可以添加新的协议为Snort提供支持。它既能对数据包操作以便检测
6、引擎能正确分析包,又能检测特征检测所不能单独发现的可疑流量。按功能可以分为三类:数据标准化,协议分析和非特征匹配检测。数据标准化新的攻击方法和IDS躲避技术不断涌现,以至Snort的检测引擎要么不能检测,要么检测效率不高。预处理程序可以将数据标准化以便检测引擎能正确对其分析。多态病毒是为了躲避反病毒程序的特征匹配引擎而将病毒代码任意改造和变异。同样的技术也被用于远程利用,shell代码具有多种形态。Fnord预处理程序能检测出变异的NO-OP sled,从而避免了由于缓冲区溢出使处理器强制执行恶意代码导致的程序崩溃。No-op sled能被许多IDS轻易地检测到,除非它在每次被使用时都做修改。
7、如果没有Fnord预处理,Snort将无法检测多态shell代码。协议分析由于检测引擎能分析的协议很少,所以用协议处理程序来协助检测。ASNI_decode就能检测ASNI(Abstract Syntax Notation抽象语法标记)协议中的不一致性。较高的协议比如SNMP、LDAP和SSL都依赖ASNI。几乎所有起用SNMP的设备都受到缓冲区溢出或是拒绝服务(DoS)攻击的影响。非特征匹配检测这类预处理程序利用不同特征匹配的方法来捕获恶意流量。例如所谓的侦察攻击通常只是一个报警信号,无法确定是不是攻击。信息收集尝试利用了不合规格的流量,但这些流量通常在性质上是无害的。Portscan2和s
8、tream4就能发现这类流量和一些恶意黑客使用的躲避技术。 检测引擎检测引擎是Snort的一个主要部件,有两个主要功能:规则分析和特征检测。检测引擎通过分析Snort规则来建立攻击特征。Snort规则被载入到检测引擎并以树形数据结构分类。规则按功能分为两个部分:规则头(规则树节点)和规则选项(选项树节点)。规则头包含特征应用的条件信息。树形结构通过最小化发现可疑行为的必要检测次数来提高效率。恶意行为被发现后,Snort将入侵数据写入许多输出插件。检测可疑净荷Snort特征能检测的不只限于包头数据,它也能检测藏在一个看似正常的包中的可疑净荷。某些可疑净荷可能会引起Windows协议的缓冲区溢出并
9、导致目标主机崩溃。Snort还能捕获大范围的内容类型:任何来自最新的P2P文件共享工具的流量都带有导致远程缓冲区溢出的内容。Snort能用来对任何你所担心的包净荷进行监控并报警。通过特征检测可疑流量最有效的检测对系统或网络的攻击的方法是基于特征的检测。基于特征的检测的基础是异常或恶意网络流量符合一种独特的模式,而正常或良性流量不符合。对Snort来说,一个恶意流量特征可以被创建成一个规则以载入它的检测引擎,用于进行特征匹配。Internet控制报文协议(Internet Control Message Protocol,ICMP)主要用于ping命令来检查某个IP地址是否有主机存在。它被用于黑
10、客常常使用的一个网络发现工具NMAP。NMAP利用的ICMP ping 的特征将ICMP类型域设为8并且净荷数据为空。这与在Windows 或UNIX操作系统下直接用ping命令不同。根据这一点,就可以创建一条相关规则,如果网络中有匹配这一特征的流量就会引起报警。需要强调的是:Snort不一定要运行在这一流量要到达的计算机上,它只需要处于同一个网段就能嗅探到该流量。因此,Snort能检测出针对大量受保护主机的NMAP ping扫描。检测具体协议元素Snort特征可以具体针对特殊协议的一个元素描述。例如.ida扩展名是一个很少用到的微软ISS索引服务的组件,能远程导致严重的缓冲区溢出进而远程控制
11、Web服务器,还能产生大量红色代码蠕虫,使得合法用户几乎从外部通过.ida文件使用的索引服务。Snort的这个特征规则是只搜索URL内容而不是整个净荷,因而更为高效。用客户规则扩展覆盖面Snort支持的规则对所有网络是通用的,要想做好入侵检测工作,需要能针对具体网络指定特定的规则,Snort的一个特色就是能赋予程序员编写自己规则的能力。启发式的可疑流量检测特征匹配虽然高效,但不能达到100%的准确率,因为有些有害流量没有可识别的特征。统计包异常检测引擎(SPADE)模块就是通过启发式匹配对无可匹配特征的可疑流量进行检测。SPADE观测网络并建立一张描述网络低流量的表。这张表记载的数据包括包的类
12、型和源地址、目的地址。在表达到一定大小后,SPADE挑出的每一个包将被赋给一个数值,该数值的大小取决于它在表中出现的频率。频率越低,则该数值越大。当该数值达到某一匹配好的极限时就会产生报警。这种方法对检测黑客的侦察行动是很有效的。黑客常常缓慢地扫描端口,企图通过把自己的扫描数据淹没在大量的数据中来隐蔽自己。但即使一个黑客使用多个源地址进行活动,也会被SPADE注意。分布式拒绝服务攻击(DDoS)是多台受控主机向一台主机发送大量伪造的请求使得合法用户无法访问服务器,但它也能被SPADE检测到。采集入侵数据想预知黑客会对网络进行哪些恶意行为几乎是不可能的,唯一的解决方案是将与恶意流量对应的所有净荷
13、保存起来。Snort可以将所有可能含有恶意的净荷记入日志。评估威胁净荷包含的数据常常是反映攻击者意图的窗口。净荷数据能协助确定一次攻击是否是人为操纵。蠕虫病毒加大了这一任务的难度。蠕虫可以具有复杂的攻击步骤,包括一张关于攻击手段和受害主机后门的详细清单。常常与人类攻击者遵循相同的模式。如果能够检查净荷数据,就有可能将他与蠕虫的已知行为比较,并弄清你面对的是哪种类型的威胁。如果最终确定是人进行的攻击,就可以通过净荷数据来确定攻击者的技术水平,是脚本族还是黑客高手。脚本族可以通过将攻击特征与常用工具的特征进行比较来识别。利用输出插件进行报警Snort利用输出插件从检测引擎获取入侵数据,程序员可以根
14、据需要自行配置。输出插件的目的是将报警数据转存到另一种资源或文件中。Snort输出以各种格式记入日志以便入侵数据能方便地为其他应用程序或工具使用。输出插件有以下功能:聚集数据以一种工业标准格式从许多完全不同的安全装置聚集数据。从而进行事件相关。用统一格式和Barnyard程序记录日志传统的关系数据库输出插件是制约Snort处理带宽能力的因素之一,Barnyard能将二进制数据解析成与它相关的数据库插件能识别的格式,以完全独立于Snort的方式运行,而不影响Snort的捕包能力。报警Snort有两种主要的报警方法:syslog和swatch报警、入侵数据库控制台ACID报警。Swatch是一种简
15、单且功能强大的工具。它能积极地监控系统日志,当发生了事先配置的事件是就发出报警。可采用传呼、email或声音等方式。ACID是从数据库读取入侵数据并以友好的格式把它显示在浏览器中,供分析员处理。它具有复杂查询功能。还可以按逻辑功能对报警分组并关联到Internet上CVE标准漏洞库的对应记录上。ACID还有一个绘图组件可以用来生成统计图表。分层报警IDS领域的报警分为三类:无优先级报警、严格编码的优先级报警、可定制的优先级报警。无优先级报警:不能按严重程度进行分类,通告会变得非常多,无法采用紧急时间自动通知机制。严格编码的优先级报警:由销售商为你决定哪些报警重要,程序员可以进行排序和筛选,但这
16、种“一个标准适用全部”的方法对于报警并不适合。可定制的优先级报警:这是现代网络的模块化和独特性所需要的。报警能基于事先设置的优先级进行排序。Snort自带了32种预定义的警报分类,像特征一样,警报分类也是通过简单的规则来定义的。功能入侵检测工具的主要作用是检测网络中是否存在攻击行为。目前的入侵检测工具一般应用模式匹配、特征匹配、签名技术等手段对网络数据包进行识别,如果数据包的某项内容符合其中的一种,则被认定为使网络数据包异常行为,入侵检测系统会主动报告系统管理员相关信息。因为使用的是匹配技术,所以入侵检测系统存在着误报和漏报的情况,但总体来说,它还是系统管理员需要掌握的一项重要工具。Snort
17、可提供Protocol分析、内容查找和匹配,可以用来检测各种攻击和探测,如缓冲区溢出、隐蔽端口扫描、CGI攻击、SMB探测、操作系统指纹识别尝试等其中的包嗅探、数据包记录和入侵检测是其重要功能Snort的架构决定了它的各种功能,而Snort架构由以下4个基本模块构成:嗅探器预处理器检测引擎输出模块 Snort 体系结构Snort的最简单形式就是包嗅探器,但当Snort获取到数据包后会将数据包传送到与处理模块,然后通过检测引擎判断这些数据包是否违反了某些预定义规则。Snort的预处理器、检测引擎和报警模块都以插件形式存在插件就是符合Snort接口定义的程序,这些程序曾经是Snort内核代码的一部
18、分,现在独立出来使内核部分的修改变得简单可靠包嗅探器用来监听数据网络,可以是硬件也可以是软件一个网络嗅探器使应用程序或者硬件设备能够监听网络上的数据流互联网多是IP数据流,在本地局域网或传统网络中多是IPX或AppleTalk数据流具体来说,包嗅探器不仅可以进行网络分析及错误处理、性能分析及基准测量、监听明文密码及其他感兴趣的数据预处理器得到原始数据包,使用不同的插件检测数据包,这些插件检测数据包的某些特定行为一旦数据包被确认具有某些特定行为,就会被送到检测模块插件可以根据需要在与处理层被启用或停用,从而更具网络优化级被分配计算资源并生成报警,插件是入侵检测系统的一个非常有用的功能检测引擎接收
19、预处理器及其插件穿送来的数据,然后根据一系列的规则对数据进行检测如果这些规则和数据包中的数据相匹配,就将数据包传送给报警处理器当数据通过检测引擎后,Snort会对其数据进行不同的处理如果数据和检测引擎的规则相匹配,Snort就会触发报警报警可以通过网络连接、UNIX的套接字或Windows Popup(SMB),甚至SNMP陷阱机制发送到日志文件也可以使用Snort的一些附加工具来通过Web接口显示日志内容,包括一些perl、PHP和Web服务器的插件等日志可以存储在文本文件中报警和日志都可以记录到数据库中,如MySQL或Postgree等另外,Snort报警可以通过系统日志工具如SWATCH
20、发送电子邮件及时通知系统管理员,是系统不需要由专人24小时监控。弊端Snort入侵检测系统适应多种平台,源代码开放,使用免费,受众多用户喜爱,但也有不少缺点。Snort之所以说他是轻量型就是说他的功能还不够完善,比如与其它产品产生联动等方面还有待改进;Snort由各功能插件协同工作,安装复杂,各软件插件有时会因版本等问题影响程序运行;Snort对所有流量的数据根据规则进行匹配,有时会产生很多合法程序的误报。Snort不是一个自动化的过程,需要一个非常熟练聪明的分析员对可疑行为分析并做出响应。它的灵活性也带来了复杂性,它的几个组件必须协调工作才能保证IDS稳定运行。它在捕包和输出模块上的瓶颈问题也不容忽视。Libpcap虽然是一个强大的捕包程序库,但是一次只能处理一个包,在流量超出百兆负荷是便无法正常运转。基于关系数据库的写入很慢,必须由Snort标准日志应用程序Barnyard接管输出。IDS产生数据量过大, Snort也不能避免陷入误报的窘境。Snort是一个以IP为中心的应用程序,需要提高覆盖的协议数量来完全覆盖现代网络,一些厂家也在加大对IDS研究的投入以对抗Snort。
©2010-2024 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100