Snort分析

Snort分析

 

Snort的程序架构

       Snort 由几大软件模块组成,这些软件模块采用插件方式与Snort 结合,扩展起来非常方便,例如有预处理器和检测插件,报警输出插件等。Snort程序的基本框架如下图所示:

 

 

1  Snort程序的框架图

Snort的源代码结构:

snort 源代码主要由以下几个主要部分构成:

 

snort. c snort 主函数

decode. c 包解码器

rules. c 规则引擎

detect. c 检测引擎

log. c 记录引擎

spp-开头预处理器插件

sp-开头处理插件

sop-开头输出插件

 

Snort.c 分析

 

       Snort.cSnort的主函数所在,主要作用是控制程序的工作流程和初始话所需的插件。其中,程序从.SnortMain()函数开始,基本流程如下:

 

 

 

2 SnortMain的流程图

 

 

 

 

 

 

 

 

 

3 Snort的数据包处理流程

Snort的预处理程序

       对于Snort来讲,提供超越规则检验的功能还是必要的,比如协议的异常检测和正确性检测,仅仅通过规则匹配是不能完成这样的任务的,这些额外的规则通过预处理器实现。

预处理程序是Snort的一个可通过插件配置的组成部分。主要包括:①模拟TCPIP堆栈功能的插件,如IP碎片重组、TCP流重组插件;②各种解码插件:http解码插件、unicode解码插件、rpc解码插件、tel-net解码插件等;③规则匹配无法进行攻击检测时所用的插件:端口扫描插件、spade异常入侵检测插件、bo检测插件、arp欺骗检测插件等。

 

      

Snort规则的格式

       Snort采用简单的规则描述格式,举例说明如下:

      

Alert TCP  !$HOME_NET any ->!$HOME_NET (meg : “CAN-1999-0736-IIS-showcode”,  flsgs:A:content:”/selector/showcode.asp”: nocase)

 

前面的alert TCP 代表对应于检测引擎的表头,括号内部的规则选项,其中冒号“:” 的是关键字,引号内部的是规则。当且仅当所有的规则均为真的时候才会触发事件。

 

Snort的检测引擎

       Snort的检测引擎通过一个三维链表维护其检测规则,,首先按规则类型( LogPassAlertDynamicActivation)分类,分成了五个单独的规则链;然后针对这五个规则链的每一个按协议类型(TCPUDPICMPIP)分成相应的节点链表;最后又按照源IP、目的IP、源端口号及目的端口号分为多个规则树节点(RTN);每个规则树节点下又有规则选项,称为选项树节点(OTN);这样每个OTN 节点就对应了一条规则,Snort 规则树结构如图4

 

 

4 Snort 规则树结构

 

       当数据包到达检测引擎时,Snort 将首先匹配规则链,然后根据数据包协议匹配相应的节点链表,于是从左至右遍历RTN,参看源、目的IP 及端口号是否匹配,找到一个匹配后,算法向下进行,在每个OTN 中寻找匹配;当找到一个匹配后,退出树结构返回相应规则链的头部,通过指定格式输出。

       在字符串比较方面,Snort主要采用BoyerMoore算法,同时在2.0以后的版本中有WumanberAhoCroshik可供选择。

 

 

总结

       作为IDS而言,Snort的结构使得其可以方便的扩展和部署。但是,遍历的检测引擎和基于lipcap的数据包捕获机制决定了它只能作为中小型企业的入侵检测系统。

 

 

 

 。。。。。

还不能上图

 

 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值