snort入侵检测技术
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Snort入侵检测系统分析
2015年12月6日
Snort入侵检测系统分析
简介
Snort的一些源代码是从著名的TCPDUMP软件发展而来的。snort是一个基于LIBPCA包的网络监控软件,可以作为一个十分有效的网络入侵监测系统。它运行在一个“传感器”主机上,监听网络数据。这台机器可能是一台简陋的运行FREEBSD系统的Pentium100 PC,并且至少有一个网卡。 Snort首先根据远端的IP地址建立目录,然后将检测到的包以TCPDUMP的二进制格式记录或者以自身的解码形式存储到这些目录中.这样一来,你就可以使用snort来监测或过滤你所需要的包.Snort是一个轻量级的入侵检测系统,它具有截取网络数据报文,进行网络数据实时分析、报警,以及日志的能力。snort的报文截取代码是基于LIBPCA库的,继承了LIBPCA库的平台兼容性。它能够进行协议分析,内容搜索/匹配,能够用来检测各种攻击和探测,例如:缓冲区溢出、隐秘端口扫描、CGI 攻击、SMB探测、OS指纹特征检测等等。snort使用一种灵活的规则语言来描述网络数据报文,因此可以对新的攻击作出快速地翻译。snort具有实时报警能力。可以将报警信息写到syslog、指定的文件、UNIX套接字或者使用Winpopup消息。snort具有良好的扩展能力。它支持插件体系,可以通过其定义的接口,很方便地加入新的功能。snort还能够记录网络数据,其日志文件可以是TCPDUMP格式,
也可以是解码的ASCII格式。简单的说,Snort是数据包的嗅探器,也是数据包记录器,还是NIDS。提供数据包嗅探和记录功能只是Snort的部分功能,Snort 的特点就是其入侵检测功能—根据入侵规则匹配数据包中的内容。Snort还是一个自由,简介,快速,易于扩展的入侵检测系统,已经被移植到了各种UNIX平台和winY2k上。同时,它也是目前安全领域中,最活跃的开放源码工程之一。
体系结构
Snort有5个主要部件:捕包程序库libpcap、包解码器、预处理程序、检索引擎、输出组件。
图1 Snort组件数据流程图
捕包装置把包以原始状态捕获后送给解码器。解码器是进入Snort的第一步,它将特殊协议元素翻译成内部数据结构。它的目的是剥落包头。利用TCP-IP 栈解码并且将包放入一个数据结构中。在最初的捕包和解码完成后,有预处理程序处理流量。许多插入式预处理程序对包进行检查或操作后将它们交给下一个组件——检索引擎。检索引擎对每一个包的一个方面进行简单的检验以检测入侵。最后一个组件是输出插件,它对可疑行为产生报警。大规模的应用程序很少采用单机模式,Snort通常采用分布式体系对网络进行入侵检测。最典型的安装方式是三层体系,即传感器层、服务器层、分析员控制台。
捕包程序库libpcap和包解码器运行在传感器上,负责对抓来的包进行解释并传递警报。由于传感器必须放置在要监控入侵的网段,为了保证安全,通常只安装Snort和它在之上运行的支撑应用程序。建议Linux或BSD等UNIX类型的操作系统。传感器的两块网卡一块用作捕包接口不分配IP,一块用作管理接口分配IP。捕包程序库libpcap运行在Libpcap平台上,由于Libpcap平台的独立性使得Snort可以被移植到任何地方,成为一个真正与平台无关的应用程序。预处理程序
预处理是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就能发现这类流量和一些恶意黑客使用的躲避技术。
检测引擎
检测引擎是Snort的一个主要部件,有两个主要功能:规则分析和特征检测。检测引擎通过分析Snort规则来建立攻击特征。Snort规则被载入到检测引擎并以树形数据结构分类。规则按功能分为两个部分:规则头(规则树节点)和规则选项(选项树节点)。规则头包含特征应用的条件信息。树形结构通过最小化发现可疑行为的必要检测次数来提高效率。恶意行为被发现后,Snort将入侵数据写入许多输出插件。
检测可疑净荷
Snort特征能检测的不只限于包头数据,它也能检测藏在一个看似正常的包中的可疑净荷。某些可疑净荷可能会引起Windows协议的缓冲区溢出并导致目标主机崩溃。
Snort还能捕获大范围的内容类型:任何来自最新的P2P文件共享工具的流量都带有导致远程缓冲区溢出的内容。Snort能用来对任何你所担心的包净荷进行监控并报警。
通过特征检测可疑流量
最有效的检测对系统或网络的攻击的方法是基于特征的检测。基于特征的检测的基础是异常或恶意网络流量符合一种独特的模式,而正常或良性流量不符合。对Snort来说,一个恶意流量特征可以被创建成一个规则以载入它的检测引擎,用于进行特征匹配。
Internet控制报文协议(Internet Control Message Protocol,ICMP)主要用于ping命令来检查某个IP地址是否有主机存在。它被用于黑客常常使用的一个网络发现工具NMAP。NMAP利用的ICMP ping 的特征将ICMP类型域设为8