chap入侵检测技术v
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
本文由蔡泽恩贡献
pdf文档可能在WAP端浏览体验不佳。
建议您优先选择TXT,或下载源文件到本机查看。
入侵检测技术
罗森林
信息安全与对抗技术实验室
内容
入侵检测技术的概念入侵检测系统的功能入侵检测技术的分类入侵检测技术的原理,结构和流程入侵检测技术的未来发展基于SNORT的入侵检测系统
基本概念
入侵检测技术是为保证计算机系统的安全而设计与配置的一种能够及时发现并报告系统中未授权或异常现象的技术,是一种用于检测计算机网络中违反安全策略行为的技术. 违反安全策略的行为有:入侵——非法用户的违规行为。
滥用——用户的违规行为. 入侵检测(Intrusion Detection)就是对计算机网络和计算机系统的关键结点的信息进行收集分析,检测其中是否有违反安全策略的事件发生或攻击迹象,并通知系统安全管理员. 一般把用于入侵检测的软件,硬件合称为入侵检测系统.
为什么会出现IDS
客观因素:
–––––入侵者总可以找到防火墙的弱点和漏洞防火墙一般不能阻止来自内部的袭击由于性能的限制,防火墙通常不能提供实时的监控防火墙对于病毒的网络内部传播也是无能为力的漏洞是普遍存在的
主观因素—入侵和攻击不断增多
–网络规模不断扩大–网络用户不断增加–黑客水平不断提高
IDS的发展史
1980年4月,James Anderson为美国空军做了一份题为《Computer Security Threat Monitoring and Surveillance》(计算机安全威胁监控与监视)的技术报告,第一次提出了入侵检测. 1986年,为检测用户对数据库异常访问,在IBM主机上用Cobol开发的Discovery系统成为最早的基于主机的IDS雏形之一.
IDS的发展史
1987年,Dorothy E.Dennying 提出了异常入侵检测系统的抽象模型,首次将入侵检测的概念作为一种计算机系统安全防御问题的措施提出. 1988年, Morris Internet蠕虫事件使得Internet约5天无法正常使用,该事件导致了许多IDS系统的开发研制. Teresa Lunt等人进一步改进了Dennying提出的入侵检测模型,并创建了IDES(Intrusion Detection Expert System),它提出了与系统平台无关的实时检测思想.
IDS的发展史
1990年, Heberlein等人提出基于网络的入侵检测——NSM(Network Security Monitor),NSM可以通过在局域网上主动地监视网络信息流量来追踪可疑的行为. 1991年,分布式入侵检测系统(DIDS)的研究,将基于主机和基于网络的检测方法集成到一起.DIDS是分布式入侵检测系统历史上的一个里程碑式的产品,它的检测模型采用了分层结构,包括数据,事件,主体, 上下文,威胁,安全状态等6层.
IDS的发展史
1994年,Mark Crosbie 和Gene Spafford建议使用自治代理(Autonomous Agents)以便提高IDS的可伸缩性, 可维护性,效率和容错性. 1995年,IDES后续版本——NIDES(Next-Generation Intrusion Detection System)实现了可以检测多个主机上的入侵. 1996年,
GRIDS(Graph-based Intrusion Detection System)设计和实现解决了入侵检测系统伸缩性不足的问题,使得对大规模自动或协同攻击的检测更为便利. Forrest 等人将免疫原理用到分布式入侵检测领域
IDS的发展史
1997年,Mark crosbie 和 Gene Spafford将遗传算法运用到入侵检测中. 1998年,Ross Anderson和Abida Khattak将信息检索技术引进到了入侵检测系统. 中国的IDS 也得到了长足的发展.据IDC的报告,2000年中国安全市场中,IDS与评估软件占了19%的份额.IDC在2001年4月的调查显示,用户接下来对网络安全产品的需求中,对IDS的需求占到了18.5%.从厂商方面来说,从1999年前后,国外一些软件商开始将其IDS引入到国内,如安氏,CA,NAI,赛门铁克等.国内如冠群金辰,金诺网安等也占据着该市场的较大份额.
IDS的功能与作用
防火墙明显的不足和弱点
–防火墙不能防范如TCP,IP等本身存在的协议漏洞–无法解决安全后门问题。
–不能阻止网络内部攻击,而调查发现,80%以上的攻击都来自内部,对于企业内部心怀不满的员工来说,防火墙形同虚设。
–不能提供实时入侵检测能力,而这一点,对于现在层出不穷的攻击技术来说是至关重要的。
–对于病毒等束手无策.
IDS的功能与作用
识别黑客常用入侵与攻击手段.入侵检测系统通过分析各种攻击特征,可以全面快速地识别探测攻击,拒绝服务攻击, 缓冲区溢出攻击,电子邮件攻击,浏览器攻击等各种常用攻击手段,并做相应的防范和向管理员发出警告监控网络异常通信.IDS系统会对网络中不正常的通信连接做出反应,保证网络通信的合法性。
任何不符合网络安全策略的网络数据都会被IDS侦测到并警告.
IDS的功能与作用
鉴别对系统漏洞及后门的利用. 完善网络安全管理.IDS通过对攻击或入侵的检测及反应,可以有效地发现和防止大部分的网络入侵或攻击行为,给网络安全管理提供了一个集中,方便,有效的工具.使用IDS系统的监测,统计分析,报表功能,可以进一步完善网管.
IDS的功能与作用
IDS只能位于第二安全防线
– IDS仅仅是一种实时监控报警工具,虽能够在检测到非法访问时自动报警,但其本身无法防范攻击行为的发生。
–不能将IDS与如防病毒或防火墙产品混淆在一起. – IDS一般无法实现精确的攻击检测,可能会出现误报现象. –目前IDS面临的最主要的挑战之一是检测速度太慢.大多数 IDS系统在不牺牲检测速度的前提下,会无法处理百兆位网络满负荷时的数据量,而千兆位更是难以企及的目标.
技术分类
根据入侵检测的时序
–实时入侵检测.实时入侵检测在网络连接过程中进行,系统根据用户的历史行为模型,存储在计算机中的专家知识以及神经网络模型对用户当前的操作进行判断,一旦发现入侵迹象立即断开入侵者与主机的连接,并收集证据和实施数据恢复,这个检测过程是不断循环进行的. –事后入侵检测.事后入侵检测需要由网络管理人员进行,他们具有网络安全的专业知识,根据计算机系统对用户操作所做的历史审计记录判断用户是否具有入侵行为,如果有就断开连接,并记录入侵证据和进行数据恢复.事后入侵检测由管理员定期或不定期进行.
技术分类
从入侵检测系统所使用的技术的角度
–基于特征的检测.特征检测假设入侵者活动可以用一种模式来表示,系统的目标是检测主
体活动是否符合这些模式.它可以将已有的入侵方法检查出来,但对新的入侵方法无能为力.其难点在于如何设计模式既能够表达"入侵"现象又不会将正常的活动包含进来. –基于异常的检测.异常检测假设入侵者活动异常于正常主体的活动.根据这一理念建立主体正常活动的"模板",将当前主体的活动状况与"模板"相比较,当违反其统计规律时,认为该活动可能是"入侵"行为.异常检测的难题在于如何建立 "模板"以及如何设计统计算法,从而不把正常的操作作为"入侵"或忽略真正的"入侵"行为.
技术分类
从入侵检测的范围来讲
–基于网络的入侵检测系统.网络入侵检测系统能够检测那些来自网络的攻击,它能够检测到超越授权的非法访问,而不需要改变其它设备的配置,也不需要在其它主机中安装额外的软件,因此不会影响业务系统的性能. –弱点:(1)网络入侵检测系统只检查它直接连接到网段的通信,不能检测在不同网段的网络包,存在监测范围的局限. 而安装多台设备显然增加了成本.(2)采用特征检测的方法可以检测出普通的一些攻击,很难检测复杂的需要大量时间和分析的攻击.(3)大数据流量网络入侵检测上存在一定的困难.(4)加密通信检测上存在困难,而加密通信将会越来越多.
技术分类
–基于主机的入侵检测系统.通常安装在被重点检测的主机上,主要是对该主机的网络实时连接以及系统审计日志进行智能分析和判断,如果其中主体活动十分可疑,入侵检测系统就会采取相应措施. –弱点:(1)安装在保护的设备上会降低系统的效率,也会带来一些额外的安全问题.(2)系统依赖于服务器固有的日志与监视能力,如果服务器没有配置日志功能,则必需重新配置,这将会给运行中的系统带来不可预见的性能影响.(3) 全面布署基于主机的入侵检测系统代价较大,则未安装检测系统的设备将成为保护的盲点,入侵者可利用这些机器达到攻击目标.(4)对网络入侵行为无法检测.
技术分类
从使用的检测方法
–基于特征的检测.特征检测对已知的攻击或入侵的方式作出确定性的描述,形成相应的事件模式.当被审计的事件与已知的入侵事件模式相匹配时,即报警.原理上与专家系统相仿.其检测方法上与计算机病毒的检测方式类似.目前基于对包特征描述的模式匹配应用较为广泛,该方法预报检测的准确率较高,但对于无经验知识的入侵与攻击行为无能为力.
技术分类
从使用的检测方法
–基于统计的检测.统计模型常用异常检测, 在统计模型中常用的测量参数包括:审计事件的数量,间隔时间,资源消耗情况等.操作模型,计算参数的方差,马尔柯夫过程模型,时间序列分析.
技术分类
从使用的检测方法
–基于专家系统的检测.专家系统的建立依赖于知识库的完备性,知识库的完备性又取决于审计记录的完备性与实时性.入侵的特征抽取与表达,是基于专家系统的入侵检测的关键.在系统实现中,就是将有关入侵的知识转化为if-then结构(也可以是复合结构),条件部分为入侵特征,then部分是系统防范措施.运用专家系统防范有特征入侵行为的有效性完全取决于专家系统知识库的完备性.
入侵检测技术的原理
物理链路
网络流量
网络流量
入侵检测数据
入侵检测系统的结构
传感器传感器…传感器信息处理分析管理与控制
数据库
工作流程
信息收集,入侵检测的第一步是信息收集,内容包括网络流量的内容,用户连接活动的状态和行为. 数据分析,对上述收集到的信息,一般通过三种技术手段进行分析:模式匹配,统计分析和完整性分析.其中前两种方法用于实时的入侵检测,而完整性分析则用于事后分析. 结果处理,实时记录,报警或有限度反击.
系统中IDS的位置
系统中IDS的位置
部署1: –放在防火墙和外部网络之间–优点:可充分检测到针对网络和系统的攻击–缺点:无法检测防火墙内部用户之间的事件。
–容易成为黑客入侵的对象。
部署 2 –放在防火墙与路由器之间–优点:可发现防火墙配置是否合理。
可检测内部事件。
部署3 –放于主要的网络中枢部署4 –部署于一些安全级别需求高的子网
IDS面临的主要问题
较高的误报和漏报率不断增大的网络流量基于模式匹配的工作方式无法防御未知的攻击基于网络的IDS基本上无法防止本地缓冲区溢
出的攻击对DoS的检测能力问题
技术发展方向
入侵技术的发展与演化
–大范围的分布式入侵检测.针对分布式网络攻击的检测方法,使用分布式的方法来检测分布式的攻击,其中的关键技术为检测信息的协同处理与入侵攻击的全局信息获取–智能化入侵检测.即使用智能化的方法与手段来进行入侵检测,神经网络,遗传算法,模糊技术,免疫原理等方法可能用于入侵特征的辨识与泛化.智能代理技术可能广泛应用于入侵检测技术. –系统层的安全保障体系.将其它安全技术融入到入侵检测系统中,或者入侵检测系统与其它网络安全设备进行互动,互相协作,构成较为全面的安全保障体系
基于snort的入侵检测系统
Snort介绍
Snort是一个开放源代码的基于 libpcap 的数据包嗅探器,并可以作为轻量级的网络入侵检测系统. 轻量级:对操作系统的依赖程度很低,网络管理员能够轻易的将snort安装到网络中去,可以在很短的时间内完成配置,可以很方便的集成到网络安全的整体方案中,使其成为网络安全体系的有机组成部分.
Snort介绍
Snort采用了基于规则的网络信息搜索机制,对数据包进行内容的模式匹配,从中发现入侵和探测行为.其检测机制十分简单和灵活,用户能够根据自己的需要及时调整检测的策略,从而迅速的对新的入侵行为做出反应,填补网络中潜在的安全漏洞. Snort 集成了多种告警机制来提供实时告警功能,可以输出到文件,数据库,通过syslog机制输出到系统,通过smb报文输出到winpopup进行局域网报警,还可以输出到Unix域的socket.
Snort的工作模式
snort有三种工作模式:嗅探器,数据包记录器, 网络入侵检测系统.
–嗅探器模式仅仅是从网络上读取数据包并作为连续不断的流显示在终端上. –数据包记录器模式把数据包记录到硬盘上. –网络入侵检测模式是最复杂的,而且是可配置的. 可
以让snort分析网络数据流以匹配用户定义的一些规则,并根据检测结果采取一定的动作. Snort的工作模式—嗅探器
命令行格式:snort –v
– example:snort –vde –显示详细信息(v),并且显示应用层信息 (d),显示链路层信息(e)
Snort的工作模式—数据包记录器
命令行格式:snort -l (log目录)
– example:
snort -l ./log snort -dev -l ./log -h 192.168.1.0/24
– -h:指定监视网络
Snort的工作模式—NIDS(1)
命令行格式:snort -c (snort配置文件)
– example:
snort –c ./etc/snort.conf snort -d -l ./log -c snort.conf
不显示详细信息,只进行记录,并记录应用层信息,使用配置文件snort.conf
Snort的工作模式—NIDS(2)
NIDS模式下的输出选项
在默认情况下,snort以ASCII格式记录日志,使用 full报警机制. – snort有6种报警机制:full,fast,socket,syslog, smb(winpopup)和none. –可以通过-A指定告警模式–
-A fast:报警信息包括:一个时间戳(timestamp),报警消息, 源/目的IP地址和端口. -A full:是默认的报警模式。
还有应用层信息 -A unsock:把报警发送到一个UNIX套接字,需要有一个程序进行监听,这样可以实现实时报警. -A none:关闭报警机制.
–通过-M WORKSTATIONS进行SMB告警
Snort目录结构
Snort基本遵照linux的结构,其源程序包分为etc,doc, src,rules,contrib,templates等.
– contrib存放的是一些rpms文件,用于在linux中使用。
– etc中存放配置文件等,主要用于系统配置和输出配置.包括classification.config,gen-msg.map, reference.config,sidmsg.map,snort.conf
– doc中存放一些说明文件,包括使用说明,安装说明等. – src中存放源文件,还包括windows的工程文件.dsw。
– rules中存放规则文件
Snort规则
Snort规则文件都放在rules目录下面,每类攻击都存放在一个文件中(其归类方法还在研究中) 例子: (rules/exploit.rules)
alert tcp $EXTERNAL_NET any -> $HOME_NET 4321 (msg:"EXPLOIT rwhoisd format string attempt"。
flow:to_server,established。
content:"-soa %p"。
reference:cve,CAN-2001-0838。
reference:bugtraq,3474。
classtype:misc-attack。
sid:1323。
rev:4。
)
Snort规则
Snort规则由两个逻辑部分组成:规则头和规则选项.
–规则头包含规则的动作,协议,源和目标ip 地址与网络掩码,以及源和目标端口信息。
–规则选项部分包含报警消息内容和要检查的包的具体部分.
Snort结构分析
snort 从功能上分为三个子系统:数据包解读器,检测引擎和日志/报警子系统.
–数据包解读器负责从网络传输介质上获取数据包。
–检测引擎负责对数据包进行规则匹配以发现那些和规则库相配的攻击,然后传递给日志/报警子系统。
–日志/报警子系统负责产生报警和日志信息,可以以各种指定的格式进行登记.
Snort结构分析
预处理插件
处理插件
输出插件
规则处理模块使用/调用
日志模块
解码模块辅助模块主控模块
snort总体模块图
Snort结构分析—模块分析(1)
主控模块:实现所有模块的初始化,命令行解释,配置文件解释,libpcap的初始化,然后调用libpcap开始捕获数据包,并进行编码检测入侵.此外,对所有插件的管理功能也属于主控模块的范围. 解码模块:把网络中的抓取的数据包,沿着协议栈自上而下进行解码并填充相应的内部数据结构,以便规则处理模块进行处理.
Snort结构分析—模块分析(2)
规则处理模块:实现了对这些报文进行基于规则的模式匹配工作,检测出攻击行为。
在初始化阶段,它还负责完成规则文件的解释和规则语法树的构建工作. 规则处理模块在执行检测工作过程中共使用了三种类型的插件,分别为预处理插件模块,处理插件模块和输出插件模块.主控模块中的插件管理功能(plugbase) 实现的是对所有插件的管理,包括其初始化,启动, 停止等等. 预处理插件:在模式匹配前进行,对报文进行分片重组,流重组和异常检查等预处理.
Snort结构分析—模块分析(3)
处理插件:检查数据包的各个方面,包括数据包的大小,协议类型, IP/ICMP/TCP 的选项等, 辅助规则匹配完成检测功能. 输出插件:实现检测到攻击后执行各种输出的反应. 日志模块:实现各种报文日志功能,也就是把各种类型的报文记录到各种类型的日志中.
Snort结构分析—模块分析(4)
辅助模块:树结构定义子模块定义了几种snort使用到的二叉树结构和相关的处理函数,tag处理子模块完成了和tag相关的功能,其它一些子模块也提供了一些供公用的函数,如安全性较高的字符串处理函数,校验以及Unicode解码等等.
Snort主要数据结构(1)
主要数据结构:
– PV:存储全局的控制变量,如是否检验校验和,告警模式等,其主要来源是命令行, 配置文件。
–规则链表:规则链表的主要结构有 RuleListNode,ListHead,RTN,OTN,都定义于rules.h中.
Snort主要数据结构(3)
在检测中使用的结构: PORT_RULE_MAP,PORT_GROUP, RULE_NODE,OTNX等(如下页图) 包结构packet:主要记录从获取的包中得到的信息,包括各层信息,以及URI 信息等,而且还保留了应用层以上的数据.
Snort主要数据结构(4)
插件使用的数据结构:
– OutputKeywordList(OutputKeywordNode) —〉全局变量OutputKeywords 输出插件–
KeywordXlateList(KeywordXlate) —〉全局变量KeywordList 关键字插件–PreprocessKeywordList(PreprocessKeywordNo de) —〉全局变量PreprocessKeywords 预处理器插件
插件机制介绍(1)
插件机制使得 snort 能够很容易的增加功能, 使得程序有很强的可扩展性。
而且使得代码的模块性强. 前面介绍过 snort 主要的插件有预处理插件, 处理插件和输出插件三种,它们对应规则中的一个或者多个关键字,规则匹配过程中遇到这些关键字时就会激活相应的插件,以完成相应的功能.
插件机制介绍(2)
插件一般由以下函数组成:
名称函数名何时调用程序初始化时调用功能注册插件的初始化函数完成本插件的初始化,注册处理函数在检测过程中完成插件的功能
插件的安装函数 SetupXXX()
插件初始化函数
XXXInit()
解释规则文件时调用
插件的处理函数
XXXXX()
检测流程中调用
Snort主要流程讲解(1)
1. 初始化全局变量:初始化socket,PV,网络 (掩码,协议名数组),fpdetection(配置结构),并开启所有的告警标识。
2. 解读命令行:设置相关参数,主要是PV。
3. 设置运行模式,检查输入的配置是否正确, 如目录是否存在并可写。
4. 对输出插件进行初始化,并设置各层协议所对应的解码函数。
Snort主要流程讲解(2)
5. 进行其余插件的初始化工作,如预处理器, PLUGIN,TAG等,并输出最后生成的链表。
6. 建立初始的规则链表RuleLists,并按照PV的配置确定是否需要排序。
7. 解读配置文件config_file.根据配置文件的内容,设置系统变量的数据,激活使用的插件 (包括输出插件,预处理器插件,处理插件, 初始化并将处理函数挂接到函数链中)
Snort主要流程讲解(3)
8. 导入规则文件进行解读,进而形成规则链表。
9. 去掉root权限,并将当前目录转移到log目录中。
10. 根据PV的配置检查在命令行中是否设定了告警和日志插件。
如果有,则激活相应的插件 (初始化并将处理函数挂接到函数链中)。
Snort主要流程讲解(4)
11. 创建并初始化fast packet输出引擎.建立了四个结构:prmTcpRTNX, prmUdpRTNX,prmIpRTNX, prmIcmpRTNX(*PORT_RULE_MAP), 遍历前面过程中建立的规则链表RuleLists, 将其填入这四个结构中,从而建立起以协议为分类的规则树,而且每种协议又区分为 uri_content,content,no_content三类,这样就大大减少了检索的时间.
一些说明
Snort使用的匹配方法是Boyer-Moore检测方法, 大大提高了检测速度 Snort使用了二维的链表以及递归节点遍历的实现,使得其性能增长了 200% 到 500% 为了加快检索速度,snort中使用了大量的平衡二叉树(为了避免使用递归,增加了父指针),还使用了哈希表来对threshold进行管理.
对Snort的一些评价
Snort 已经基本具备了NIDS 的功能,它的规则具有简单,高效,灵活,更新迅速的特点.它的规则选项概念清楚明确,选项之间没有从属关系,规则之间除了启动与被启动之外没有其它的关系. 规则从技术类型,攻击类型,威胁类型等角度进行了分类,而且还定义了优先级,虽然在理论上不太科学完整,但在实现运用中还是相当实用的,可以比较方便地针对各种网络环境作出调整,对规则集加以剪裁.
对Snort的一些评价
由于Snort 本身定位在一个轻量级的入侵检测工具,尽管与商业的入侵检测工具比起来,它的规则语言略显简陋,在报警方式和图形化使用界面上也显露出不足之处,但是程序的整体结构清晰,规则语言简单实用并提供插件的功能支持,用户可以添加自己的检测规则和处理函数,这对于规则库的及时更新有着极为现实的意义.
对Snort的一些评价
作为NIDS,snort也存在自身弱点,攻击者很容易通过改变特征字符串来逃过其模式匹配的检测 Snort自定义的结构也存在一定的问题,其规则的搜索树定义虽然能够加速其搜索速度,但在一定程度上不利于其多线程的并行检测,从而不利于进行分布式检测. Snort 自身也在进行着不断的改进,如在预处理器插件中加入了协议分析,流分析,碎片重组检查等功能,使得告警的效率和准确率得到提高.
1。