Snort入侵检测系统的规则库的分析和研究.docx
《Snort入侵检测系统的规则库的分析和研究.docx》由会员分享,可在线阅读,更多相关《Snort入侵检测系统的规则库的分析和研究.docx(36页珍藏版)》请在冰豆网上搜索。
Snort入侵检测系统的规则库的分析和研究
Snort入侵检测系统的规则库的
分析和研究
院系:
专业班:
姓名:
学号:
指导教师:
2013年5月
Snort入侵检测系统的规则库的
分析和研究
AnalysisandResearch
inRuleBaseofSnortIntrusionDetectionSystem
摘要
随着网络技术的快速发展和网络应用环境的不断普及,网络安全问题日益突出。
在传统的加密和防火墙技术已经不能完全满足安全需求的同时,入侵检测技术作为一种全新的安全手段,越来越显示出其重要性。
入侵检测作为一种积极主动的安全防护技术,提供了对内部攻击、外部攻击和误操作的实时保护,对入侵攻击的检测与防范已成为刻不容缓的重要课题。
Snort系统是一个典型的网络入侵检测系统,其设计原理和功能实现的研究,是目前多数商用入侵检测系统的研发基石。
对Snort系统的研究具有较强的学术意义和较高的商业价值。
本文以Snort系统为研究对象,阐述系统的基本架构,剖析其规则,并探讨了Snort规则的具体应用。
首先,本文介绍了入侵检测技术的基本知识,接着描述了Snort系统功能、特点及各模块的工作流程,随后重点对Snort的规则进行了阐述,最后分析了Snort的一些典型规则实例,并就一个实例规则做了改进。
关键词:
入侵检测系统Snort规则规则实例
Abstract
Alongwiththefastdevelopmentofthenetworktechnologyandtheuniversalapplicationofthenetworkenvironmental,thesafeprobleminnetworkisincreasinglyoutstanding.ThetraditionalencryptiontechniquesandtheFirewalltechniquecannotmeettheexpectationsfully.Andasasafemeans,IntrusionDetectiontechniqueshasdisplayeditsimportrole.
IntrusionDetection,asapositivesecurityanddefensetechnology,providesreal-time
securityaimingatinnerattack,outerattackanderroroperation.Itbecomesanimportant
subjectforintrusionattackanddefense.TheSnortisatypicalNetIntrusionDetectionSystemandsomeofdesignprincipleandcharacteristicsofwhichisthebaseofmostpopularmercantileIntrusionDetectionSystem.TherearestrongacademicallyandcommercialvaluetotheresearchofSnort.
Inthistext,thewriterregardsSnortastheresearchobject,analyzingitsrules,expoundingthebasicstructureoftheSnortsystem,andstudyingthetechniqueinapplicationofSnort.Firstofall,thisarticledescribesthebasicsofthetechnologyofintrusiondetection,theSnortsystemfunctions,featuresandworkflowforeachmodule,thenthefocustotheSnortrulessetforth,andfinallyanalysisofsometypicalsnortruleinstances,analysisandimprovementofaruleinstancedid.
Keywords:
IntrusionDetectionSystemSnortrulesRuleinstance
目录
摘要I
AbstractII
绪论1
1入侵检测系统2
1.1IDS的标准与结构2
1.2入侵检测系统分类3
2Snort系统概述5
2.1Snort的功能5
2.2Snort特点5
2.3Snort系统结构6
2.4Snort模块分析8
3Snort规则10
3.1规则的结构10
3.1.1规则头部10
3.1.2规则选项14
3.1.3简单实例分析15
3.2Snort规则典型实例分析16
3.2.1特洛依木马活动16
3.2.2分布式拒绝服务(DDos)攻击17
3.2.3Ping扫描攻击20
3.3Snort规则改进实例分析23
结论27
致谢29
参考文献30
绪论
任何试图破坏网络活动的正常化都可以称为网络安全问题。
过去保护网络安全的最常用、最传统的方法就是防火墙,但是防火墙只是一种被动防御性的网络安全工具。
随着科学技术的不断发展,网络日趋复杂化,传统防火墙已不能满足如今复杂多变的网络安全需求,在这种情况下,逐渐产生了入侵检测系统。
入侵检测系统不仅能够为网络安全提供实时的入侵检测及采取响应的防护手段,还可以识别针对计算机或网络资源的恶意企图和行为,并对此做出反应。
它提供了对系统受到内部攻击、外部攻击和误操作的实时保护,帮助系统对付网络攻击。
入侵检测系统是防火墙的有效补充。
入侵检测技术是一种积极主动的安全防护技术,其核心在于它的检测引擎。
如何实现高效快速的检测,是入侵检测技术的一个研究重点。
目前入侵检测技术主要分为两大类,分别是基于异常的入侵检测和基于规则的入侵检测。
由于目前的攻击主要是针对网络的攻击,因此检测入侵和攻击的最主要的方法是:
捕获和分析网络数据包,使用相应的软件来提取入侵者所发出攻击包的特征,然后将这些特征攻击包和入侵检测系统的特征库进行对比匹配。
如果匹配成功,就会发出入侵报警。
在与特征库进行匹配的过程中,用到的最主要的技术就是模式匹配,所以在入侵检测系统中模式匹配是一个研究重点。
在国内,随着网络应用的日益增长,特别是那些关键部门对网络的应用使得网络安全问题至关重要,迫切需要高效的入侵检测产品来确保网络安全。
但是,由于我国的入侵检测技术在网络安全领域的研究起步较晚,还不够成熟和完善,需要投入较多的精力来对这方面进行探索研究。
特别是基于模式匹配也就是基于规则的入侵检测是一个重要的研究领域,这对抑制黑客攻击和网络病毒的传播,提高网络安全具有重要意义。
本论文所做的主要工作有:
(1)在掌握入侵检测系统基本知识的基础上,熟悉Snort系统结构、主要模块功能、工作流程。
(2)深入分析和研究Snort规则。
(3)分析Snort规则经典应用实例并改进一条不符实际需求的规则。
1入侵检测系统
入侵检测系统(IntrusionDetectionSystem,IDS)工作在计算机网络系统的关键节点上,通过实时收集和分析计算机网络或系统中的信息,来检查是否出现违反安全策略的行为和是否存在入侵的迹象,进而达到提示入侵、预防攻击的目的。
入侵检测系统作为一种主动防护的网络安全技术,有效扩展了系统维护人员的安全管理能力,例如安全审计、监视、攻击识别和响应的能力。
通过利用入侵检测系统,可以有效地防止或减轻来自网络的威胁,它已经成为防火墙之后的又一道安全屏障,并在各种不同的环境中发挥关键作用。
1.1IDS的标准与结构
为了提高IDS产品、组件及与其他安全产品之间的互操作性,美国国防高级研究计划署(DARPA)和互联网工程任务组(IETF)的入侵检测工作组(IDWG)发起制订了一系列建议草案,从体系结构、API、通信机制、语言格式等方面规范IDS的标准。
DARPA提出了公共入侵检测框架(CIDF),CIDF主要包括四部分:
IDS体系结构、通信机制、描述语言和应用编程接口API。
(1)IDS体系结构
CIDF将一个入侵检测系统分为四个组件:
事件产生器(EventGenerators);事件分析器(Eventanalyzers);响应单元(Responseunits);事件数据库(Eventdatabases)。
四个组件间采用GIDO(GeneralIntrusionDetectionObject统一入侵检测对象)格式进行数据交换。
在CIDF模型中,事件产生器、事件分析器和响应单元通常以应用程序的形式出现,而事件数据库则采用文件数据流的形式。
CIDF将IDS需要分析的数据统称为事件(Event)。
事件产生器,从整个计算环境中获得事件,转化成一定格式,以向系统的其他部分提供此事件。
事件分析器,分析得到的数据,并产生分析结果。
分析器是IDS的核心部分,可以以不同的方法来分析数据,以判断入侵。
响应单元,则是对分析结果做出反应的功能单元,它可以做出切断连接、改变文件属性等反应,也可以只做简单的报警。
事件数据库,存放各种中间和最终数据的地方,可以是复杂的数据库,也可以是简单的文本文件。
输出:
反应/事件
输出高级或中级事件输出:
事件有关信息
输出:
原始或低级事件
原始事件源
图1-1IDS体系结构
(2)IDS通信机制
为了保证各个组件之间安全、高效的通信能力,CIDF将通信机制构成一个三层模型:
GIDO层、消息层、协议传输层。
(3)IDS描述语言
CIDF使用一种被称为S表达式的入侵说明语言(CISL)对事件分析结果、响应指示等过程进行表示说明,以达至IDS之间语法互操作。
(4)IDSAPI接口
负责GIDO的编码、解码和传递,使得程序员可以以一种很简单的方式构建和传递GIDO。
1.2入侵检测系统分类
(1)按照检测方法分类
按照检测方法分类,IDS分为特征检测(MisuseDetection)的IDS和异常检测(AnomalyDetection)的IDS。
特征检测又称为误用检测,是基于知识(或规则)的检测。
它通过对已知的入侵方式特征做出确定性的描述,形成事件模式,当用户行为或系统状态同已知的事件模式相匹配时,则认为发生了入侵。
通常采用专家系统法、模型推理法、状态转移法、模式匹配法、Petri网(对离散并行系统的数学表示)、信息反演法等方法。
其优点是准确率较高。
但是不能发现未知的入侵行为,比较难以检测到入侵变种。
异常检测又称为行为检测。
首先它对系统对象的一些测量属性(比如访问次数、CPU使用频率、操作失败次数等)进行统计,找出一个阀值作为基准,如果用户的行为或资源使用的状况超出了这个基准值,则就认为发生了入侵。
通常采用基于概率统计的、基于免疫学的、基于数据挖掘的、基于专家系统的、基于神经网络的方法等。
这种方法的优点通用性强,对具体系统的依赖性较少,并且能够发现未知的入侵行为。
缺点是如何描述正常的行为模式,确定异常的基准值比较困难,导致误报率较高。
(2)按检测所用数据来源分类
按检测所用数据来源通常分为HIDS(Host-basedIntrusionDetectionSystem基于主机的入侵检测系统)、NIDS(NetworkIntrusionDetectionSystem网络入侵检测系统)和DIDS(DistributedIntrusionDetectionSystem分布式入侵检测系统)三大类。
HIDS一般安装在重点保护的主机上,通过对系统日志、审计数据的分析和端口活动的监听发现入侵行为。
其检测目标主要是主机系统和系统本地用户,通过监视操作系统和各种服务生成的日志文件,检测是否有入侵。
NIDS通常置于重要的网段内,监听网络数据包,发现攻击事件,一旦入侵特征匹配或者超过正常的阀值就做出反应。
DIDS将信息采集、分析、响应等构件分布在网络的各个监控点上,他们之间通过通信传输构件联系,由管理中心提供统一管理。
网络上的多个检测器共同收集信息,协同工作,并行地进行检测分析工作。
(3)按实现方法分类
按实现方法可分为基于概率统计模型的检测、基于神经网络的检测、基于专家系统的检测、基于模型推理的检测和基于免疫的检测等技术。
2Snort系统概述
Snort是以开放源代码形式发行的一个功能强大、跨平台、轻量级的网络入侵检测系统。
最初由MartinRoesch编写,并由遍布世界各地的众多程序员共同维护和升级。
从检测模式而言,Snort属于网络入侵检测(NIDS)的误用检测。
它通过libpcap库函数(数据包捕获函数库)从网络中抓取数据包,对数据包进行解析,接着启动检测引擎,将解释好的数据包和规则模式集进行比较。
如果匹配规则成功,则认为该入侵行为成立,使用规定的方式进行响应,然后结束一个数据包的处理过程,再抓取下一个数据包。
如果未被规则匹配到,则是正常行为,直接返回,抓取下一个包进行处理。
2.1Snort的功能
(1)Snort是基于规则检测的入侵检测工具,即针对每一种入侵行为,都提炼出它的特征值,并按照规范写成检测规则,形成一个规则数据库。
利用此规则库和捕获的数据包进行比较,来判断是否为入侵。
目前,Snort的检测规则库主要针对缓冲区溢出、端口扫描和CGI(CommonGatewayInterface公共网关接口)攻击等。
(2)Snort集成了多种告警机制来提供实时告警功能,包括:
syslog(系统日志)、用户指定文件、UnixSocket(套接字)、通过Smblient(查看访问共享资源)使用WinPopup(window中局域网发送和接收消息进程)对Windows客户端告警。
(3)Snort的插件机制使得它具有很好的扩展性和可移植性,用户可以根据自己的需要及时在短时间内调整检测策略,对于新的攻击威胁做出迅速反应。
2.2Snort特点
虽然Snort是一个轻量级的入侵检测系统,但是它的功能却非常强大,其特点如下:
(1)Snort代码短小,简洁,而且移植性非常好。
目前支持Linux系列,Solaris,BSD系列,IRIX,HP-UNIX,Windows系列等。
(2)Snort具有实时流量分析和日志IP网络数据包的能力。
能够快速检测网络攻击,及时发出警报。
它提供的警报方式很多,比如Syslog,UnixSocket,WinPopup等。
(3)Snort能够进行协议分析,内容的匹配和搜索。
能够分析的协议TCP、UDP、ICMP。
它能检测多种方式的攻击和探测。
(4)Snort具有灵活的日志格式。
包括Tcpdump(一种网络数据采集分析具)的二进制格式,ASCLL字符形式,XML格式,而且使用数据库输出插件,还支持数据库日志格式。
当前支持的数据库有Postagresql、Mysql,任何UnixODBC、MicrosoftSQLServer、Oracle等都支持。
(5)使用TCP流插件,Snort可以对TCP包进行重组。
这种能力使得Snort可以对抗“无状态”攻击。
“无状态”攻击是指攻击者每次只发送一个字节的数据包,逃过监视,然后被攻击主机的TCP协议栈会重新组合这些数据包,将攻击数据发送给目标端口上监听的进程,从而摆脱IDS的检测。
(6)使用Spade(StatisticalPacketAnomalyDetectionEngine数据包统计异常检测引擎)插件,Snort能够报告异常的数据包,从而对端口进行有效的检测。
(7)Snort还具有很强的系统防护能力。
使用IPTables,IPFilter插件可以使入侵检测主机和防火墙联动,通过FlexResp(一种对连接处理的功能)功能,Snort能够命令防火墙断开恶意连接。
(8)扩展性好,对于新的攻击威胁反应迅速。
Snort采用了一种简单的则描述语言,最基本的规则知识包含四个域:
处理动作、协议、方向、端口。
可以对新的攻击迅速建立规则表。
(9)Snort支持插件,可以使用具有特定功能的报告,检测子系统插件对其进行功能扩展。
当前支持的插件有:
数据库日志输出插件、破碎包检测插件、端口扫描检测插件、HttpUrl插件、XML网页生成插件等。
2.3Snort系统结构
Snort主要由两大部分组成,一是Snort可执行文件,二是Snort规则。
Snort可执行文件能工作在两种模式下,一是Sniffer(包嗅探)模式,二是IDS(入侵检测)模式。
当它工作在Sniffer模式下时,可以实时捕获网络中的所有数据,并将数据显示在屏幕或记录在日志文件中,当Snort工作在IDS模式下时,系统可以实时检测网络中存在的攻击,予以报警或通知防火墙。
首先通过配置文件确定应该加载哪些预处理插件和规则库,然后通过“规则”判断数据包中是否含有恶意内容。
Snort规则是一种简单的描述语言,每一种攻击特征都可以使用一条或多条规则描述。
Snort采取了全新的方式组织这些规则,并且同时使用了多种匹配算法,使其能在较高速的网络环境下正常工作。
Snort的工作流程如图2-1所示。
它由主控模块、解码模块、预处理模块、检测模块、输出模块几部分组成。
主控模块首先完成各类插件的初始化工作,设置运行参数,然后读取并解析规则文件,最终进入抓包和检测流程;解码模块完成对网络包的解码,并把解码后的内容保存在全局结构Packet中;预处理模块完成一些主控模块难以完成的解码和检测,主要有分片重组、代码转换、异常检测等工作;检测模块是Snort的核心,它包含了对数据包内容的各项检测;输出模块负责将检测结果报告给用户,它支持多种输出方式,如屏幕显示、文件、数据库和SMB信息。
图2-1Snort的工作流程
当一个数据包被Snort接收时,首先进入预处理过程,完成基本的IP包格式校验、IP分片重组和解码工作后,数据包进入核心检测流程,Snort依次对数据包头部和负载内容与预定义的入侵特征进行匹配。
匹配成功意味着发现入侵,这时,输出模块将执行与之相关的记录和报警工作。
2.4Snort模块分析
图2-2为Snort模块结构图,下面就Snort的模块结构及功能做介绍。
数据包
图2-2Snort模块结构图
(1)Sniffer(数据包嗅探器)
该子系统的功能是捕获网络数据包并按照TCP/IP协议的不同层次将数据包进行解析。
Snort利用Libpcap(数据包捕获函数库)库函数进行数据采集,该库函数可以为应用程序提供直接从链路层捕获数据包的接口函数,并可以设置数据包的过滤器来捕获指定的数据。
网络数据采集和解析机制是整个NIDS实现的基础,其中关键的是要保证高速和较低的丢包率,这不仅仅取决于软件的效率还同硬件的处理能力相关。
对于解析机制来说,能够处理数据包的类型的多样性也同样非常重要,目前,Snort可以处理以太网、令牌环以及SLIP等多种类型的包。
(2)预处理器
Snort的预处理器是介于数据包嗅探器与检测引擎之间的可插入模块,它的主要功能是在数据包送到Snort的检测引擎之前提供一个报警、丢弃数据包或修改数据包的框架。
(3)检测引擎
检测引擎是Snort的核心。
Snort根据规则库对预处理器送来的数据包进行匹配检测。
为了能够快速而准确地进行检测,Snort用链表的形式对规则进行组织。
检测引擎的主要性能指标是快速和准确。
为了达到快速的目的,要求Snort的规则链表要进行分类和组织结构优化。
为了达到准确的目的,要求规则的提取十分准确,并且编写十分精确和简洁的规则。
检测引擎是Snort的核心,准确和快速是衡量其性能的重要指标。
准确性主要取决于对入侵行为特征码提取的精确性和规则编写的简洁实用性,由于网络入侵检测系统是被动防御的,只能被动的检测流经本网络的数据,而不能主动发送数据包去探测。
所以只有将入侵行为的特征码归结为协议的不同字段的特征值,通过检测该特征值来决定入侵行为是否发生。
快速性主要取决于引擎的组织结构,是否能够快速地进行规则匹配。
(4)报警/日志
检测引擎检查后的Snort数据需要以某种方式输出。
Snort对每个被检测的数据包都定义了如下的三种处理方式;alert(发送报警信息)、log(记录该数据包)和pass(忽略该数据句)。
这些处理方式其实是具体定义在检测规则中的,具体的完成是在日志/报警子系统中。
日志子系统允许将嗅探器收集到的信息以可读的格式或tcpdump格式记录下来。
报警子系统负责将报警信息发送到syslog(系统日志)、用户指定的文件、套接字或数据库中。
3Snort规则
如同病毒,大多数入侵行为都具有某种特征,Snort的规则就是用这些特征的有关信息构建的。
我们可以使用蜜罐系统来取得入侵者所用的工具和技术的信息,以及他们的具体行为。
此外,还有入侵者会利用的已知的系统弱点数据库,如果入侵者试图利用这些弱点来实施攻击,也可以作为一些特征。
这些特征可能出现在数据包的头部,也可能在数据载荷中。
Snort的检测系统是基于规则的,而规则是基于入侵特征的。
Snort规则可以用来检测数据包的不同部分。
Snort1.x可以分析网络层和传输层的信息,但是不能分析应用层协议。
Snort2.x增加了对应用层头部分析的支持。
所有的数据包根据类型的不同按顺序与规则比对。
规则可以用来产生告警信息、记录日志,或使数据包通过(pass)。
Snort规则用简明易懂的语法书写,大多数规则写在一个单行中,也可以行末用反斜线将一条规则划分为多个行。
规则文件通常放在配置文件Snort.conf(Snort规则默认放置的文件)文件中,也可以用其他规则文件,然后用主配置文件引用它们。
下面将深入细致的分析规则的基本结构。
3.1规则的结构
所有的Snort规则都可以分为两个逻辑组成部分:
规则头部和规则选项。
Snort规则的基本结构如图3-1所示。
规则头部
规则选项
图3-1Snort规则的基本结构
规则的头部包含规则所做的动作的信息,也包含与数据包所比对的一些条件。
选项部分通常包含一个告警消息以及数据包的哪个部分被用来产生这个消息。
一条规则可以用来探测一个或多个类型的入侵活动,一个好的规则可以来探测多种入侵特征。
3.1.1规则头部
Snort规则头部由动作、协议、源/目地址、源/目端口、方向组成,如图3-2所示。
动作
协议
地址
端口
方向
地址
端口
图3-2Snort规则头部结构
(1)规则动作
动作是Snort规则中的第一个部分,它表示规则的条件符合的时候,将会有什么样的动作产生。
Snort有5个预定义的