Snort入侵检测系统

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Snort入侵检测系统

赵鹏通信一团技术室

摘要本文介绍了Snort入侵检测系统的结构、功能。具体介绍了Snort入侵检测系统各部件的功能,并分析了Snort入侵检测系统的优缺点。

关键词IDS 特征检测规则分析预处理净荷

1 概述

Snort是由一个简单的网络管理工具发展分布式入侵检测系统,被用于各种与入侵检测相关的活动,可以用作嗅探器、包记录器或者网络入侵检测系统NIDS。

作嗅探器时,Snort对发往同一个网络其他主机的流量进行捕获。嗅探器利用了以太网的共享特性。它将网路上传输的每一个包的内容都显示在你的监视器上,包括包头和包载荷。

以包记录器模式运行时,Snort以和嗅探器相似的方式抓包,不同的是将收集的数据记入日志而不是显示在屏幕上。

当Snort以网络入侵检测系统(NIDS)模式运行时,Snort也抓取并存储网络上传输的每一个包,关键的不同在于NIDS模式能对数据进行处理。这种处理不是简单的将数据写入文件或是显示在屏幕上,而是对每一个包进行检查以决定它的本质是良性的还是恶意的。当发现看似可疑的流量是,Snort就会发出报警。

NIDS因其能监控大片网段而比其他类型的IDS更受欢迎,这里要关注的是NIDS模式的Snort。

2 Snort入侵检测系统的组成

Snort有5个主要部件:捕包程序库libpcap、包解码器、预处理程序、检索引擎、输出组件。

图1 Snort组件数据流程图

捕包装置把包以原始状态捕获后送给解码器。解码器是进入Snort的第一步,它将特殊协议元素翻译成内部数据结构。它的目的是剥落包头。利用TCP-IP栈解码并且将包放入

一个数据结构中。在最初的捕包和解码完成后,有预处理程序处理流量。许多插入式预处理程序对包进行检查或操作后将它们交给下一个组件——检索引擎。检索引擎对每一个包的一个方面进行简单的检验以检测入侵。最后一个组件是输出插件,它对可疑行为产生报警。

2.1 捕包程序库libpcap和包解码器

大规模的应用程序很少采用单机模式,Snort通常采用分布式体系对网络进行入侵检测。最典型的安装方式是三层体系,即传感器层、服务器层、分析员控制台。

捕包程序库libpcap和包解码器运行在传感器上,负责对抓来的包进行解释并传递警报。由于传感器必须放置在要监控入侵的网段,为了保证安全,通常只安装Snort和它在之上运行的支撑应用程序。建议Linux或BSD等UNIX类型的操作系统。传感器的两块网卡一块用作捕包接口不分配IP,一块用作管理接口分配IP。捕包程序库libpcap运行在Libpcap平台上,由于Libpcap平台的独立性使得Snort可以被移植到任何地方,成为一个真正与平台无关的应用程序。

2.2 预处理程序

预处理是Snort的一类插件。它在检测引擎之前对数据进行处理,并且努力与不断变化的漏洞和攻击保持同步。可以添加新的协议为Snort提供支持。它既能对数据包操作以便检测引擎能正确分析包,又能检测特征检测所不能单独发现的可疑流量。按功能可以分为三类:数据标准化,协议分析和非特征匹配检测。

数据标准化

新的攻击方法和IDS躲避技术不断涌现,以至Snort的检测引擎要么不能检测,要么检测效率不高。预处理程序可以将数据标准化以便检测引擎能正确对其分析。

多态病毒是为了躲避反病毒程序的特征匹配引擎而将病毒代码任意改造和变异。同样的技术也被用于远程利用,shell代码具有多种形态。Fnord预处理程序能检测出变异的NO-OP sled,从而避免了由于缓冲区溢出使处理器强制执行恶意代码导致的程序崩溃。No-op sled能被许多IDS轻易地检测到,除非它在每次被使用时都做修改。如果没有Fnord预处理,Snort将无法检测多态shell代码。

协议分析

由于检测引擎能分析的协议很少,所以用协议处理程序来协助检测。ASNI_decode就能检测ASNI(Abstract Syntax Notation抽象语法标记)协议中的不一致性。较高的协议比如SNMP、LDAP和SSL都依赖ASNI。几乎所有起用SNMP的设备都受到缓冲区溢出或是拒绝服务(DoS)攻击的影响。

非特征匹配检测

这类预处理程序利用不同特征匹配的方法来捕获恶意流量。例如所谓的侦察攻击通常只是一个报警信号,无法确定是不是攻击。信息收集尝试利用了不合规格的流量,但这些流量通常在性质上是无害的。Portscan2和stream4就能发现这类流量和一些恶意黑客使用的躲避技术。

2.3 检测引擎

检测引擎是Snort的一个主要部件,有两个主要功能:规则分析和特征检测。检测引擎通过分析Snort规则来建立攻击特征。Snort规则被载入到检测引擎并以树形数据结构分

类。规则按功能分为两个部分:规则头(规则树节点)和规则选项(选项树节点)。规则头包含特征应用的条件信息。树形结构通过最小化发现可疑行为的必要检测次数来提高效率。恶意行为被发现后,Snort将入侵数据写入许多输出插件。

检测可疑净荷

Snort特征能检测的不只限于包头数据,它也能检测藏在一个看似正常的包中的可疑净荷。某些可疑净荷可能会引起Windows协议的缓冲区溢出并导致目标主机崩溃。

Snort还能捕获大范围的内容类型:任何来自最新的P2P文件共享工具的流量都带有导致远程缓冲区溢出的内容。Snort能用来对任何你所担心的包净荷进行监控并报警。

通过特征检测可疑流量

最有效的检测对系统或网络的攻击的方法是基于特征的检测。基于特征的检测的基础是异常或恶意网络流量符合一种独特的模式,而正常或良性流量不符合。对Snort来说,一个恶意流量特征可以被创建成一个规则以载入它的检测引擎,用于进行特征匹配。

Internet控制报文协议(Internet Control Message Protocol,ICMP)主要用于ping 命令来检查某个IP地址是否有主机存在。它被用于黑客常常使用的一个网络发现工具NMAP。NMAP利用的ICMP ping 的特征将ICMP类型域设为8并且净荷数据为空。这与在Windows 或UNIX操作系统下直接用ping命令不同。根据这一点,就可以创建一条相关规则,如果网络中有匹配这一特征的流量就会引起报警。需要强调的是:Snort不一定要运行在这一流量要到达的计算机上,它只需要处于同一个网段就能嗅探到该流量。因此,Snort 能检测出针对大量受保护主机的NMAP ping扫描。

检测具体协议元素

Snort特征可以具体针对特殊协议的一个元素描述。例如.ida扩展名是一个很少用到的微软ISS索引服务的组件,能远程导致严重的缓冲区溢出进而远程控制Web服务器,还能产生大量红色代码蠕虫,使得合法用户几乎从外部通过.ida文件使用的索引服务。Snort 的这个特征规则是只搜索URL内容而不是整个净荷,因而更为高效。

用客户规则扩展覆盖面

Snort支持的规则对所有网络是通用的,要想做好入侵检测工作,需要能针对具体网络指定特定的规则,Snort的一个特色就是能赋予程序员编写自己规则的能力。

启发式的可疑流量检测

特征匹配虽然高效,但不能达到100%的准确率,因为有些有害流量没有可识别的特征。统计包异常检测引擎(SPADE)模块就是通过启发式匹配对无可匹配特征的可疑流量进行检测。

SPADE观测网络并建立一张描述网络低流量的表。这张表记载的数据包括包的类型和源地址、目的地址。在表达到一定大小后,SPADE挑出的每一个包将被赋给一个数值,该数值的大小取决于它在表中出现的频率。频率越低,则该数值越大。当该数值达到某一匹配好的极限时就会产生报警。

这种方法对检测黑客的侦察行动是很有效的。黑客常常缓慢地扫描端口,企图通过把自己的扫描数据淹没在大量的数据中来隐蔽自己。但即使一个黑客使用多个源地址进行活动,也会被SPADE注意。

分布式拒绝服务攻击(DDoS)是多台受控主机向一台主机发送大量伪造的请求使得合法用户无法访问服务器,但它也能被SPADE检测到。

采集入侵数据

想预知黑客会对网络进行哪些恶意行为几乎是不可能的,唯一的解决方案是将与恶意

相关文档
最新文档