第十章 Snort分析工具_第1页
第十章 Snort分析工具_第2页
第十章 Snort分析工具_第3页
第十章 Snort分析工具_第4页
第十章 Snort分析工具_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Snort分析1Snort分析Snort分析2第8章Snort分析Snort简介Snort安装与配置Snort总体结构分析Snort的使用Snort的规则使用Snort构建入侵检测系统实例Snort分析3Snort简介Snort是一个基于Libpcap的轻量级网络入侵检测系统,它运行在一个“传感器(Sensor)”主机上,监听网络数据。Snort能够把网络数据和规则集进行模式匹配,从而检测可能的入侵企图;或者使用SPADE插件,使用统计学方法对网络数据进行异常检测。Snort使用一种易于扩展的模块化体系结构,开发人员可以加入自己编写的模块来扩展Snort的功能,如HTTP解码插件、TCP数据流重组插件、端口扫描检测插件、FLEXRESP插件以及各种日志输入插件等。

Snort分析4Snort简介Snort的典型运行环境Snort分析5Snort简介Snort的特点(1)Snort是一个轻量级的入侵检测系统。Snort虽然功能强大,但是其代码极为简洁、短小,其源代码压缩包只有大约110KB。(2)Snort的跨平台性能极佳,Snort具有跨平台的特点,它支持的操作系统广泛,包括Linux、OpenBSD、FreeBSD、NetBSD、Solaris、HP-UX、AIX、IRIX、Win32(Windows9x/NT/2000)等。Snort分析6Snort简介Snort的特点(3)Snort的功能非常强大:Snort具有实时流量分析和日志IP网络数据包的能力。Snort能够进行协议分析,内容的搜索/匹配。Snort的日志格式既可以是Tcpdump式的二进制格式,也可以解码成ASCII字符形式。Snort可以对TCP包进行重组。Snort能够报告非正常的可疑包,从而对端口扫描进行有效的检测。Snort还有很强的系统防护能力。Snort分析7Snort简介Snort的特点(4)扩展性能较好,对于新的攻击威胁反应迅速。作为一个轻量级的网络入侵检测系统,Snort有足够的扩展能力。Snort支持插件,可以使用具有特定功能的报告、检测子系统插件对其功能进行扩展。Snort当前支持的插件包括数据库日志输出插件、碎数据包检测插件、端口扫描检测插件、HTTPURInormalization插件、XML插件等。(5)遵循公共通用许可证GPLSnort遵循GPL,所以任何企业、个人、组织都可以免费使用它作为自己的NIDS。

Snort分析8Snort简介Snort的组成Snort由3个重要的子系统构成:数据包解码器、检测引擎、日志与报警系统。Snort分析9Snort简介Snort的工作模式Snort有以下3种工作模式。

嗅探器——嗅探器模式仅仅是从网络上读取数据包并作为连续不断的流显示在终端上。

数据包记录器——数据包记录器模式把数据包记录到硬盘上。

网络入侵检测系统——网路入侵检测模式是最复杂的,而且是可配置的。用户可以让Snort分析网络数据流以匹配用户定义的一些规则,并根据检测结果采取一定的动作。Snort分析10Snort安装Snort所需的底层库(1)LibpcapLibpcap提供的接口函数主要实现和封装了与数据包截获有关的过程,它是由LawrenceBerkeleyNationalLaboratory创作的,过去只能支持UNIX系统,现在已经可以支持Win32系统。(2)LibnetLibnet提供的接口函数主要实现和封装了数据包的构造和发送过程。Libnet主要由MikeD.Schiffman设计和维护。(3)NDISpacketcaptureDriverNDISpacketcaptureDriver是为了方便用户在Win32/9x/NT/2000环境下抓取和处理网络数据包而提供的驱动程序。PacketDriver分为Windows9x、WindowsNT和Windows20003种不同类型。Snort分析11Snort安装Snort的安装1.Linux环境下的安装(请确认Libpcap已经安装成功)一般的分为以下几个步骤。

首先,确定linux系统中已经安装了libpcap库。

改写Snort的配置文件以满足系统的要求。

使用make命令,编译Snort的源文件生成二进制可执行文件。

使用makeinstall命令,将编辑好的可执行文件安装到指定的位置。

根据Snort中头文件定义的简单规则,可以编译一些简单的规则文件。

使用Snort-?命令。Snort分析12Snort安装Snort的安装2.Solaris环境下的安装(请确认Libpcap已经安装成功)在Solaris下,同样可以按照Linux下的步骤和方法使用源代码包进行安装,不同的是,Snort另外还提供了Solaris特有的PackageFormat包,安装过程如下:

#pkgtransSnort-2.4-sol-2.7-sparc-local/var/spool/pkg#pkgadd在此选择“MrSnort”选项进行安装即可。Snort分析13Snort安装Snort的安装3.Windows环境下的安装过程如下:解开Snort-2.4-win32-source.zip。用VisualC++6.0打开位于Snort-2.4-win32-source\Snort-1.7\win32-Prj\目录下的Snort.dsw文件。选择“Win32Release”编译选项进行编译。在Release目录下会生成所需的Snort.exe可执行文件。Snort分析14Snort安装Snort的配置在使用Snort之前,还需要根据网络环境和安全策略对Snort进行具体的配置。主要包括以下几个方面。

设置网络相关变量。

配置预处理器(Preprocessors)。

配置输出插件(OutputPlugins)。

定制Snort规则集(RuleSet)。Snort分析15Snort安装其他应用支撑的安装与配置从1.6.3版开始,Snort加入了对数据库的支持,通过相应的插件,用户可以将Snort日志信息记录到数据库中。Snort当前支持的数据库包括PostSQL,MySQL,unixODBC和Oracle。Snort还可以通过unixODBC向具有ODBC驱动的数据库记录日志信息,例如DB2,Informix等。Snort分析16Snort总体结构分析

Snort的模块组成及其相互关系Snort分析17Snort总体结构分析在Snort中运用了插件机制。对于Snort来说,插件机制具有以下一些明显的优点。

通过增加插件,Snort能够非常容易地增加功能,使程序具有很强的可扩展性。

插件机制简化了Snort的编码工作。插件机制使代码功能内聚,模块行强,程序相对易读。插件模块包括预处理插件、处理插件和输出插件3种,它们通常对应规则中的一个或几个关键字,规则匹配中遇到这些关键字时就会激活相应的插件,以完成相应的功能。Snort分析18Snort总体结构分析1.预处理插件它们的源文件名都是以spp_开头的,在规则匹配(误用检测)之前运行,完成的功能主要分为以下几类。

模拟TCP/IP堆栈功能的插件:如IP碎片重组、TCP流重组插件。

各种解码插件:如HTTP解码插件、Unicode解码插件、RPC解码插件、Telnet协商插件等。

规则匹配无法进行攻击检测时所用的检测插件:如端口扫描插件、Spade异常入侵检测插件、Bo检测插件、Arp欺骗检测插件等。Snort分析19Snort总体结构分析2.处理插件它们的源文件名都以sp_开头,在规则匹配阶段的ParseRuleOptions中被调用,辅助完成基于规则的匹配检测过程。每个规则处理函数通常对应规则选项中的一个关键字,实现对这个关键字的解释或辅助解释。这些插件的主要功能如下。

协议各字段的检查,如TCPFlag,IcmpType,IcmpCode,Ttl,IpId,TcpAck,TcpSeq,Dsize,IpOption,Rpc,IcmpId,IcmpSeq,IpTos,FragBits,TcpWin,IpProto和IpSame等。

一些辅助功能,如Respond,Priority,PatternMatch,Session,React,Reference等,这些插件分别完成响应(关闭连接)、严重级别、模式匹配(内容)、会话记录、攻击响应(高级的响应机制)、攻击参考信息等功能。Snort分析20Snort总体结构分析3.输出插件它们的源文件名都以spo_开头,这些插件分为日志和警告两种类型放入两个列表中,在规则匹配过程中和匹配结束之后调用,以便记录日志和警告。以一个HTTP解码预处理器插件为例来解释插件的内部结构:每个插件都有一个安装函数,名称为SetupXXX(),如Spp_http_decode.c:SetupHttpDecode()。在解释规则文件时,如果检测到相应的关键字,系统就会使用规则文件中这些关键字后的字符串作为参数来调用相应的初始化函数。在检测过程中,一旦规则匹配成功,就会触发处理函数的执行,预处理器就会在预处理过程中对数据报调用相应处理函数进行处理。Snort分析21Snort总体结构分析Snort总体流程图Snort分析22Snort总体结构分析Snort规则内存表示逻辑图Snort分析23Snort总体结构分析Snort规则匹配检测流程Snort分析24Snort的使用Libpcap的命令行Snort和大多数基于Libpcap的应用程序(如Tcpdump)一样,可以使用标准BPF类型的过滤器。过滤器的正确设置将决定Snort是否只看到所感兴趣的数据包,如果没有设置过滤器,Snort将看到所有网络中的数据包。整个过滤器的表达式由一个或多个元语组成,而一个元语则是由一个或多个关键字加上一个相关的值(字符串或数字)所组成。Snort分析25Snort的使用Libpcap的命令行关键字分为以下几类。

属性类关键字:说明后面所跟值的意义,这样的关键字有host、net、port。如果一个元语没有属性关键字,默认为host。

方向类关键字:说明报文的流向,这样的关键字有src,dst,srcordst,srcanddst。对于空连接层(如:使用slip等的点到点协议),可以使用inbound和outbound来说明方向。

协议类关键字:用来限制协议,这样的关键字有ether,fddi,ip,arp,rarp,decnet,lat,sca,moprc,mopdl,tcp,udp。如果一个元语没有协议类关键字,那么所有可能的协议都将符合。Snort分析26Snort的使用Libpcap的命令行过滤器的描述功能非常强大,可以用来描述任何想要得到的报文。例如net192.168.1andnothost说明除了主机外其他所有192.168.1网段的网络数据报文。tcp[13]&3!=0andnotsrcanddstnetlocalnet说明涉及外网的tcp会话中起始和终止报文(SYN和FIN报文)。Snort分析27Snort的使用Snort的命令行Snort的命令行参数很多,可以使用Snort-?命令列出这些参数及其简单的解释,详细的解释可以使用manSnort命令查看帮助页。

-A设置报警模式:fast、full、none(只是使用报警文件)、unsock(使用UNIX套接字记入日志,出于测试阶段)。

-a显示ARP(AddressResolutionProtocol,地址解析协议)包。

-b日志文件使用tcpdump格式(更快)。

-c使用规则文件rules。

-C只使用字符方式打印负载信息(不使用hex方式)Snort分析28Snort的使用Snort的命令行

-d复制应用层。

-D在后台运行Snort(精灵状态)。

-e显示第二层(数据链路层)包头信息。

-FReadBPFfiltersfromfile。

-g初始化完成后,使Snort的gid为gname。-hHome网络为hn。

-i在接口if上监听。

-I把界面名加入到报警输出界面。

-l设置目录ld为日志目录。Snort分析29Snort的使用Snort的命令行-M把SMB消息发送到文件wrkst列出的工作站中(RequiressmbclienttobeinPATH)。

-n收到cnt个包后退出。

-N关闭日志功能(警报功能仍然有效)。

-o把规则测试顺序修改为:Pass|Alert|Log。

-O打乱被日志的IP地址。

-p关闭混杂嗅探模式。

-P设置复制的包的长度为snaplen(默认:1514)。

-q安静模式。不输出banner和状态报告。

-r读取并处理tcpdump文件tf(回放功能)。Snort分析30Snort的使用Snort的命令行-s把所有警告信息记入syslog。

-S设置规则文件中的n的值等于v的值。

-t初始化完成后Chroot到dir目录。

-u初始化完成后,把Snort的uid设置为uname。

-v设置冗余模式。

-V显示版本号。

-X从链路层开始复制包的数据。

-?显示帮助信息。Snort分析31Snort的使用如果在一个高数据流量(例如大于100Mbit/s)的网络环境下运行Snort,就需要考虑如何配置Snort才能使它高效率地运行,这就要求使用更快的输出功能,产生更少的警告,可以使用诸如-b,-Afast,-s等选项。例如:./Snort–b–Afast–cSnort-lib使用这种配置选项,日志信息将被以二进制的Tcpdump格式记录到Snort.log文件中。然后,使用下面带有-r选项的命令读取这个文件,做进一步的分析:./Snort–d–cSnort-lib-l./log-h/24–rSnort.logSnort分析32Snort的规则Snort规则分为两个部分:规则头和规则选项。规则头包含规则的动作、协议、源地址、目的地址、子网掩码、源和目的端口信息。规则选项包含报警信息以及用于确定是否触发规则响应动作而检查的数据包区域位置信息。Snort分析33Snort的规则1.规则头(1)规则动作规则的头包含了定义一个包的Who,Where和What信息,以及当满足规则定义的所有属性的包出现时要采取的行动。规则的第一项是“规则动作”(RuleAction),“规则动作”告诉Snort在发现匹配规则的包时要干什么。在Snort中有5种动作:Alert,Log,Pass,Activate和Dynamic。(2)协议规则的下一部分是协议。Snort当前分析可疑包的协议有4种:TCP,UDP,ICMP和IP,将来可能会更多,如ARP,IGRP,GRE,OSPF,RIP,IPX等。Snort分析34Snort的规则1.规则头(3)IP地址规则头的下一个部分处理一个给定规则的IP地址和端口号信息。关键字“any”可以被用来定义任何地址。有一个操作符可以应用在IP地址上,它是否定运算符。这个操作符告诉Snort匹配除了列出的IP地址以外的所有IP地址。否定操作符用“!”表示。下面这条规则对任何来自本地网络以外的流都进行报警。Snort分析35Snort的规则1.规则头(4)端口号端口号可以用几种方法表示,包括“any”端口、静态端口定义、范围、以及通过否定操作符。“any”端口是一个通配符,表示任何端口。静态端口定义表示一个单个端口号,例如,111表示Portmapper,23表示Telnet,80表示HTTP等。端口范围用范围操作符“:”表示。Snort分析36Snort的规则1.规则头(5)方向操作符方向操作符“->”表示规则所施加的流的方向。方向操作符左边的IP地址和端口号被认为是流来自的源主机,方向操作符右边的IP地址和端口信息是目标主机,还有一个双向操作符“<

>”。它告诉Snort把地址/端口号对既作为源,又作为目标来考虑。这对于记录/分析双向对话很方便,例如,Telnet或者POP3会话。Snort分析37Snort的规则1.规则头(6)Activate和Dynamic规则注意:Activate和Dynamic规则将被Tagging所代替。在Snort的将来版本,Activate和Dynamic规则将完全被功能增强的Tagging所代替。Activate和Dynamic规则对给了Snort更强大的能力。用户现在可以用一条规则来激活另一条规则,当这条规则适用于一些数据包时,在一些情况下这是非常有用的,例如用户想设置一条规则:当一条规则结束后来完成记录。Activate规则除了包含一个选择域:Activates外就和一条Alert规则一样。Snort分析38Snort的规则2.规则选项规则选项组成了Snort入侵检测引擎的核心,既易用又强大还灵活。所有的Snort规则选项用分号“;”隔开。规则选项关键字和它们的参数用冒号“:”分开。按照这种写法,Snort中有以下42个规则选项关键字。

msg——在报警和包日志中打印一个消息。

logto——把包记录到用户指定的文件中而不是记录到标准输出。

ttl——检查IP头的TTL的值。

tos检查IP头中TOS字段的值。

id——检查IP头的分片ID值。Snort分析39Snort的规则2.规则选项

ipoption查看IP选项字段的特定编码。

fragbits检查IP头的分段位。

dsize——检查包的净荷尺寸的值。

flags——检查TCPFlags的值。

seq——检查TCP顺序号的值。

ack——检查TCP应答(Acknowledgement)的值。

window测试TCP窗口域的特殊值。

itype——检查ICMPType的值。

icode——检查ICMPCode的值。

icmp_id——检查ICMPECHOID的值。

icmp_seq——检查ICMPECHO顺序号的值。

content——在包的净荷中搜索指定的样式。Snort分析40Snort的规则2.规则选项

content-list——在数据包载荷中搜索一个模式集合。

offset——Content选项的修饰符,设定开始搜索的位置。

depth——Content选项的修饰符,设定搜索的最大深度。

nocase——指定对Content字符串大小写不敏感。

session——记录指定会话的应用层信息的内容。

rpc——监视特定应用/进程调用的RPC服务。

resp——主动反应(切断连接等)。

react——响应动作(阻塞Web站点)。

reference——外部攻击参考IDS。

sid——Snort规则ID。Snort分析41Snort的规则2.规则选项

rev——规则版本号。

classtype——规则类别标识。

priority——规则优先级标识号。

uricontent——在数据包的URI部分搜索一个内容。

tag——规则的高级记录行为。

ip_proto——IP头的协议字段值。

sameip——判定源IP和目的IP是否相等。

stateless——忽略刘状态的有效性。

regex——通配符模式匹配。

distance——强迫关系模式匹配所跳过的距离。within——强迫关系模式匹配所在的范围。

byte_test——数字模式匹配。

byte_jump——数字模式测试和偏移量调整。Snort分析42Snort的规则规则分类存放在规则文件中。规则文件是普通的文本文件,用户可以使用普通的文本编辑器打开进行编辑。3.规则的语法规则文件可以包含注释行,注释行以“#”字符开头,#号前不能有任何非空字符。Snort允许定义变量,并在规则中使用这些变量。变量的定义格式如下所示:var:<name><value>在规则中可以直接使用$<name>,而遇到变量名解释器就会使用<value>替代$<name>。Snort分析43Snort的规则预处理程序预处理程序使得Snort的功能可以很容易地扩展,用户和程序员能够将模块化的插件方便地融入Snort之中。预处理程序代码在探测引擎被调用之前运行,但在数据包译码之后。通过这个机制,数据包可以通过额外的方法被修改或分析。使用preprocessor关键字加载和配置预处理程序。在Snort规则文件中的preprocessor指令格式如下:preprocessor<name>:<options>例如:preprocessorminfrag:128Snort分析44Snort的规则输出插件输出插件使得Snort在向用户提供格式化输出时更加灵活。输出插件在Snort的告警和记录子系统被调用时运行,在预处理程序和探测引擎之后。规则文件中指令的格式非常类似于预处理程序。格式:output<name>:<options>例子:outputalert_syslog:LOG_AUTHLOG_ALERTSnort分析45Snort的规则规则例子(1)记录所有登录到一个特定主机的数据包:logtcpanyany->/3223(2)在第一条的基础上记录了双向的流量:logtcpanyany<

>/3223(3)这一条规则记录了所有到达你的本地主机的icmp数据包:logicmpanyany->/24any(4)这条规则允许双向的从你的机子到其他站点的http包:passtcpany80<

>/24anySnort分析46Snort的规则规则例子(5)这条告警规则显示了本地主机对其他主机的111端口的访问,并在log中显示端口影射调用('portmappercall')信息:alerttcp/24any->any111(msg:"Portmappercall";)(6)记录其他任意地址的小于1024端口访问本地小于1024端口的流量:logtcpany:1024->/24:1024(7)这条规则将会发现SYNFIN扫描:alerttcpanyany->/24any(msg:"SYN-FINscan!";flags:SF;)Snort分析47Snort的规则规则例子(8)这条规则将会发现空TCP扫描:alerttcpanyany->/24any(msg:"Nullscan!";flags:0;)(9)这条规则将会发现Quesofingerpr

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论