• 11.29 MB
  • 2022-06-16 12:40:40 发布

具有蜜罐诱捕功能的联动入侵检测系统的研究与实现

  • 77页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
苏州大学硕士学位论文具有蜜罐诱捕功能的联动入侵检测系统的研究与实现姓名:王斐申请学位级别:硕士专业:计算机应用技术指导教师:陆建德20080401 具有蜜罐诱捕功能的联动入侵防御系统的研究与实现中文摘要随着网络技术的快速发展,各种网络应用日益普及,已成为现代社会不可缺少的一部分。然而网络安全问题也日趋显著,网络的安全性和可靠性受到高度重视,已成为当前网络研究和开发的热点。’目前网络安全系统所采用的技术基本上是建立在传统防火墙、入侵检测和漏洞扫描等被动防御措施上,已不能满足网络的安全要求。安全产品的融合、协同是网络安全重要的发展方向。本文在对目前入侵检测系统、防火墙、蜜罐等技术深入研究的基础上,设计和实现了一种带有蜜罐诱捕功能的、能够实时检测网络数据流并可与Netfilter/iptables防火墙联动响应控制网络数据的网络入侵检测系统,以提供一种综合的网络安全解决方案。从而弥补传统网络安全防御措施的不足,在一定程度上增强了网络的安全。本文的主要研究内容和所做的工作如下:◆分析了主流的网络安全模型、入侵检测和事件响应技术,并从动态防御的角度,指出了入侵检测急需解决的问题。◆研究和分析了蜜罐诱捕的主动防御技术,并在此基础上结合入侵检测技术设计实现了系统的蜜罐诱捕模块。◆研究和分析了入侵检测技术,并对AC多模式匹配算法加以改进,实现了一种基于NFA的AC多模式匹配算法,并设计实现了入侵检测模块。◆详细研究了入侵检测与防火墙的联动技术,并利用Libipq技术设计实现了入侵检测模块的联动组件,实现了与防火墙的联动响应功能,加强了对网络数据包的控制。◆对系统的功能进行测试,并给出相关数据、分析和结论。测试结果表明,该系统能够正确解析网络数据包、有效检测网络中发生的入侵,能够对入侵者进行主动诱捕,并可与防火墙联动响应,从而加强对网络的控制,有效地保护了网络资源。关键词:入侵检测,蜜罐诱捕,Netfilter,联动,防御作者:王斐指导老师:陆建德 TheResearchandImplementationofInteractedNetworkIntrusionDetectionSystemwithHoneypotDecoyAbstractfirewaUsindetail,anddesignedandrealizedtheinteractedsubassemblyintheintrusiondetectionmodu]rc.ThesystemhasrealizedinteractingwiththefirewaUtostrengthenthecontroltonetworkpackets.◆Testedthesystem’Sfunctionsandgaveouttherelateddata,analysisandresults.!:ThetestresultsshowthatthesystemCalldecodenetworkpacketscorrectlyanddetecttheintrusionsinnetworkseffectively.TheresultsalsoshowthatthesystemCalldecoyattackersactivelyandinteractwithfn"ewalltomakeresponse,SOastostrengthenthecontroltonetworkandprotectnetworkresourceseffectively.Keywords:intrusiondetect,honeypot,netfilter,interaction,defenseIIIWrittenbyWangFeiSupervisedbyLuJiande 苏州大学学位论文独创性声明及使用授权声明学位论文独创性声明本人郑重声明:所提交的学位论文是本人在导师的指导下,独立进行研究工作所取得的成果。除文中已经注明引用的内容外,本论文不含其他个人或集体已经发表或撰写过的研究成果,也不含为获得苏州大学或其它教育机构的学位证书而使用过的材料。对本文的研究作出重要贡献的个人和集体,均已在文中以明确方式标明。本人承担本声明的法律责任。研究生签名:王斐日学位论文使用授权声明苏州大学、中国科学技术信息研究所、国家图书馆、清华大学论文合作部、中国社科院文献信息情报中心有权保留本人所送交学位论文的复印件和电子文档,可以采用影印、缩印或其他复制手段保存论文。本人电子文档的内容和纸质论文的内容相一致。除在保密期内的保密论文外,允许论文被查阅和借阅,可以公布(包括刊登)论文的全部或部分内容。论文的公布(包括刊登)授权苏州大学学位办办理。研究生签名:墨墼日期:銎堕£印导师签名:型社日期:怠丝业 具有蜜罐诱捕功能的联动入侵检测系统的研究与实现第一章绪论本章主要介绍网络安全的现状,分析了国内外网络入侵检测系统的研究现状,以及具有蜜罐诱捕功能的联动入侵检测系统的研究意义,紧接着列举论文的主要工作,最后介绍了论文的组织结构。1:1研究的背景随着计算机网络技术的迅速发展和广泛应用,不同地理位置的人们可以通过网络快速访问到所需资源。但人们在享受网络带来的便利同时也面临着网络带来的威胁,各种不安定因素的大量涌入致使网络安全问题日益突出。由于网络的开放性和互连性等特征,致使网络易受黑客、病毒、木马、恶意软件和其它不轨的攻击,对国家安全和经济发展造成了极大威胁,并且网络安全事件呈迅猛递增的趋势【1】。网络中信息的安全和保密成为一个至关重要的问题。如何了解这些问题从而防范、解决这些问题是网络安全领域的重要研究方向。据统计,全球平均每20s就发生1次入侵事件,黑客一旦找到系统的薄弱环节,所有用户均会受到影响。网络面临的威胁主要有以下几个方面:(1>信息泄漏、污染且不易受控。例如,资源未授权侵用、未授权信息流出现、系统拒绝信息流和系统否认等,这些都是信息安全的技术难点。(2)在网络环境中,一些组织或个人出于某种特殊目的,进行信息泄密、信息破坏、信息侵权和意识形态的信息渗透,甚至通过网络进行政治颠覆等活动,使国家利益、社会公共利益和各类主体的合法权益受到威胁。(3)网络运用的趋势是全社会广泛参与,随之而来的是控制权分散的管理问题。由于人们利益、目标、价值的分歧,使信息资源的保护和管理出现脱节和真空,从而使信息安全问题变得广泛而复杂。(4)随着社会重要基础设施的高度信息化,社会的“命脉”和核心控制系统有可能面临恶意攻击而导致损坏和瘫痪,包括国防通信设施、动力控制网、金融系统和政府网站等。网络安全是网络信息技术发展的重要保证,随着攻击手段和手法的日趋复杂多样,仅仅依靠传统的安全防范措施已经无法满足对安全高度敏感的部门的需要。入侵检测系统【2】就是在这样的背景下产生的。为了向使用者提供安全可靠的网络环境,安全人员长期以来对网络的安全投入了巨大的精力。作为网络安全的一个重要部分,网络入侵检测系统越来越显示出重要性。作为防火墙的合理补充,网络入侵检测系统根 第一章绪论具有蜜罐诱捕功能的联动入侵检测系统的研究与实现据事先定义的规则实时检测网络中的数据包,监视和记录网络流量,从而发现网络中存在的威胁,并及时提供警报以供安全管理人员采取措施。。‘蜜罐13】是入侵诱捕系统中典型的一种应用。它表面上伪装成一个真实存在的、对黑客具有吸引力的系统,而它的主要目的是用来攻击和探索的,一般在其上放置一些看似重要但其实没有价值的数据,成为所谓的“牢笼”主机,当有攻击者对其实施攻击时,可以通过后台监控程序,记录攻击者与蜜罐主机间的交互数据,然后对这些加以分析,从而发现攻击者进入系统的方法和动机,以制定防范策略。将入侵检测和防火墙进行联动可以构建一个较全面的能实时检测入侵及时响应的安全系统,是构成全方位安全系统的基础。同时,联动技术是网络安全方面发展的一个趋势,能够实现各种现有技术的优势互补,也是构成一个比现有系统具有更高安全性的安全系统的基础。1.2国内外研究现状由于现在的一些入侵技术可以较容易的绕过传统安全防御组件以完成入侵行动,因此近年来入侵检测技术已成为国内外网络安全研究的重点。入侵检测技术是通过实时的对系统和网络的状态进行检泐,识别出是否有非授权用户或攻击者试图操作数据或系统的行为,包括检测外界非法入侵者的试探和恶意攻击,以及内部合法用户的超越使用权限的非法行为。入侵检测技术是网络安全中的一个较新的课题,业界认为其是当前网络安全的最后一道防线,因此许多国家都投入了大量的人力和物力进行研究和设计,也有不少相关商业产品面试。目前国外比较有代表性盼产品有IntemetSecuritySyStem公司的,RealSecure、Cisco公司NetManager,以及开放源代码入侵检测系统AAFID弄flSnort等。RealSeeure分为网络引擎、系统代理和控制台三个部分。网络引擎分别装在各物理网段上,实时监听流动在网络上的数据包,解析IP包建立连接的源、目的地址及源端口、目的端口,协议类型,并能识别具有黑客攻击信息的IP包。系统代理安装在受保护主机上,实时监控主机内的用户活动,监视可能造成访问控制攻击的可疑行为。NetRanger分为两部分:检测网络包和发送警报的传感器,以及接收并分析警报消息和启动对策的控制器。NetRanger的一个特点是其检测问题时不仅检测单个包的内容,而且联系上下文、从多个包中得至IJ线索。因此可实现对隐藏于IP分片包内入侵信息的检测。.AAFID(AutonomousAgentsforIntrusionDetection)是一个分布式的入侵检澳4系统,使用Perl语言编写。它最早是由Purdue大学提出的一个设计入侵检测系统理论框2 具有蜜罐诱捕功能的联动入侵检测系统的研究与实现第一章绪论架,后来其设计者为了验证其理论的实效性而开发了一个原型入侵检测系统。在网络的主机上它使用一个独立于操作系统的Agents程序执行监测功能。AAFID采用分层结构收集每个Agent产生的信息并综合分析。AAFID的每个Agent都能独立运行,收集其所感兴趣的信息并向上汇报。Agent可以直接将数据上传,也可以对数据进行处理和判断。:.Snort是基于误用检测的开源网络入侵检测系统,具有良好的配置性和可移植性。其报文截取代码基于Libpcap库,继承TLibpcap库的平台兼容性。它使用一种灵活的规则语言描述网络数据报文,可以对新的攻击做出快速地翻译。Snort具有良好的扩展能力,支持插件体系,通过其定义的接口,方便地加入新功能。我国在入侵检测研究与应用方面近年来也取得了一定的进展,但目前真正拥有核心自身技术的品牌不多,而且在管理、自身保护、主动防护和产品取证等方面的技术水平良莠不齐。目前国内代表产品有启明星辰的天阗网络入侵检测系统以及绿盟科技的冰之眼IDS等。天阒网络入侵检测系统集成了网络监听、实时协议分析、入侵行为分析及详细日志审计跟踪等功能,能够全方位检测黑客入侵,准确地判断黑客攻击方式,及时地进行报警或阻断等其它措施。可用于Internet和Intranet两种环境中运行。该系统主要包括两部分:探测器和控制器。探测器能监视网络上流过的所有数据包,根据用户定义的条件进行检测,识别网络中发生的攻击,实时检测到入侵信息并向控制器管理控制台发出警告,由控制台给出定位显示,从而将入侵者从网络中清除出去。探测器能够监测所有类型的TCP/IP网络,可为用户提高了全面有效的入侵检测能力。冰之眼网络入侵检测系统是绿盟科技自主知识产权的安全产品,提供基于对象的策略管理系统和基于对象的虚拟系统。实现从事前警告、事中防护到事后取证的一体化解决方案。冰之眼网络入侵检测系统具有三大功能:入侵检测、行为监控、流量分析(4】。目前入侵检测的标准化工作已开始起步。在入侵检测的标准化制定方面,有两个组织对IDS进行标准化工作:IETF的IntrusionDetectionWorkingGroup(IDWG)和CommonIntrusionDetectionFramework(CIDF)。CIDF由S.StanifordChen等人提出,定义了检测体系结构、入侵描述语言规范和应用程序接口规范。IDWG已经完成了入侵检测消息交换需求、入侵检测消息交换数据类型、入侵报警协议和基于XML的入侵检测消息数据模型等文档。 第一章绪论具有蜜罐诱捕功能的联动入侵检测系统的研究与实现1.3研究的意义传统的网络安全技术,如防火墙、加密等技术,实现的是“分而治之”解决方法,是网络安全防护系统构成的一个重要组成部分。这些技术实现的是一种静态的、被动防护,其安全防护的层次处于网络的边界,能阻止大部分的外部攻击,但是对内部攻击却无能为力。作为防火墙等传统网络安全技术的补充,入侵检测能够实时监控网络中的数据流量,并发现潜在盼攻击行为及做出迅速的响应。入侵检测系统就是能完成上述功能的系统,是构建完整的网络安全技术体系的一个必要的组成部分。网络入侵检测从计算机网络系统中的若干关键点收集信息,并分析网络中是否存在入侵行为及迹象。入侵检测位于防火墙之后,在不影响网络性能的情况下对网络进行监测,从而提供对内部攻击、外部攻击和误操作的实时保护。另一方面,作为网络安全的重要组成部分,网络入侵检测软件随着网络规模和复杂程度的不断增长,也面临着若干重要的挑战。目前的传统网络入侵检测系统与理想的入侵检测系统仍有一定差距。主要体现在:(1)高速网络环境下的检测问题。网络带宽的增长速度已经超过了计算能力的提高速度,尤其对于入侵检测而言,为了保证必需的检测能力,通常需要进行网络数据包的重组操作,这就需要耗费更多的计算能力。(2)存在漏报问题和误报问题。NIDS的规则库若没有及时更新,对新的漏洞和攻击方式就可能漏报;对于一些合法的网络访问,由于与某些非法访问具有部分的相似,NIDS很可能会判断错误,产生错报。(3)采用监听方式的网络入侵检测系统只能实现被动的监听,及时检测到攻击,也很难采取实时有效的组织或控制措施15J。(4)没有能力控制外部网对内部网的访阿,在检测到入侵时不能较好的与防火’墙的防御措施联动响应。(5)对时间跨度较大的攻击行为的检i贝!}能力。大多数的入侵检测系统对于一般利用攻击脚本发起攻击活动具有较好的检测能力,但对于熟练攻击者所发起时间跨度较大的慢攻击活动和隐式攻击,如慢扫描和隐式扫描等,缺乏足够的性能表现。(6)大量数据的数据整合。安全界所面临的难题之一是从数据中获取价值。安全组织每天都会收集到大量数据,包括防火墙日志、系统日志以及入侵检测预警等。这些信息的数量非常大,从而使得从数据中提取有价值的信息变得极为困难。NIDS需要收集大量的数据,如何从大量的数据中为攻击检澳4和确认提供有用的信息,进行数据整合,也是传统NIDS未能有效解决的难题【6J。4 具有蜜罐诱捕功能的联动入侵检测系统的研究与实现第一章绪论通过深入研究,在传统入侵检i贝!}系统中加入蜜罐诱捕模块及联动组件,将入侵检测、蜜罐诱捕及联动技术结合,开发一种具有三种功能的综合网络入侵检测系统可以有效解决上述问题。蜜罐不会主动发送任何数据流,任何与蜜罐的互动皆可以认为可疑,使用它可有效降低误报的发生;蜜罐根据系统活动而不是规则数据库检测攻击,不会被新型攻击手段绕过,因此可以解决漏报问题。蜜罐在被扫描和攻击时,可伪装成具有漏洞的系统迷惑入侵者,入侵者若判断错误就可能被诱捕,因此解决了传统NIDS的仅可被动检测不能主动诱捕的不足。目前主要的防御工具是防火墙,但由于传统防火墙与入侵检测系统不能及时沟通,不能有效及时的防御入侵。通过在传统NIDS中加入可与防火墙通信的联动组件,可即时利用防火墙阻断入侵,加强对网络的控制。蜜罐通常只会收集非常少量的数据,但这少量的数据却具有极大的价值。蜜罐收集的信息一般是一段较长时间(通常为几天)的信息,对于各种网络活动能够系统的记录,通过分析其记录的日志可发现时间跨度较大的攻击行为。蜜罐每天产生的数据量很少,大部分都很有价值,从中容易诊断出有用信息,因此可有效解决解决数据整合问题。通过对已有入侵检测系统数据包捕获机制的改进及入侵检测引擎特别是模式匹配算法的改进,可提高入侵检测系统在高速网络中的入侵检测性能。1.4本文所做工作本文深入分析及研究了入侵检测、蜜罐诱捕、防火墙联动等相关技术,结合入侵检测、蜜罐诱捕及联动响应技术设计实现了一种具有蜜罐诱捕功能的联动网络入侵检测系统。系统的检测引擎组件采用基于NFA的改进AC多模式匹配算法,通过在数据链路层捕获网络包并加以分析和检测,尽早发现网络中存在的威胁,并利用Libipq与Netfilter/iptables通信实现联动响应,加强对网络的控制。论文的具体研究和实现工作包括以下几个方面:‘(1)分析了主流的网络安全模型、入侵检测和事件响应技术,并从动态防御的角度,指出了入侵检测急需解决的问题。(2)研究和分析了蜜罐诱捕的主动防御技术,并设计实现了系统的蜜罐诱捕模块,实现了对网络入侵的诱捕。(3)研究和分析了入侵检测技术,并设计实现了系统入侵检测模块,实现对网络数据流的实时检测。(4)设计并实现了入侵检测模块的联动功能,实现了与防火墙的联动,以动态响应实现主动防御。·(5)对系统的功能进行测试,并给出相关数据、分析和结论。 第一章绪论具有蜜罐诱捕功能的联动入侵检测系统的研究与实现1.5论文组织结构本论文共分为七章,文章结构及各章主要内容如下:第一章:介绍系统相关研究背景、现状、研究意义,及本文所做工作与论文的组织结构。第二章:介绍并分析入侵检测系统的相关技术,蜜罐诱捕技术及入侵检测系统与防火墙的联动技术。第三章:总体分析了蜜罐诱捕.联动入侵检测系统的设计思想、架构及运行流程,并分析了实现该系统所需使用的关键技术和关键算法。第四章:详细阐述了系统中蜜罐诱捕模块的设计与实现,包括诱捕原理及内部各部分的具体实现。第五章:详细阐述了系统中联动入侵检测模块体系结构,分析了该模块中各组件的具体设计与实现,并深入分析了关键组件的算法流程设计。第六章:对系统中的各模块和相关组件功能进行测试,并给出了相关数据、分析及结论。第七章:对整篇论文做出总结,并对未来的工作进行展望。6 具有蜜罐诱捕功能的联动入侵检测系统的研究与实现第二章入侵检测及蜜罐诱捕相关技术分析本章首先对入侵检测系统及其相关技术进行分析,阐述了公共入侵检测框架及P2DR模型,接着分析了蜜罐诱捕技术,阐述了其发展历程、分类和意义,最后介绍和分析了入侵检测系统与防火墙的联动技术及该技术现状。2.1入侵检测系统.入侵检测是指通过计算机网络或计算机系统中的若干关键点收集信息并对其进行分析,从中发现网络或系统中是否有违反安全策略的行为和遭到攻击的迹象【.71。入侵检测系统是实现入侵检测功能的一系列的软件,硬件的组合,它是入侵检测的具体实现。优秀的入侵检测系统能够使得管理人员更容易地监视网络系统,了解网络运行状况,从而保障网络系统的安全运行。入侵检测系统的主要功能有【8】:(1)监测并分析用户和系统的活动。(2)审计系统配置和漏洞。(3)评估系统关键资源和数据文件的完整性。(4)识别已知的攻击行为。(5)统计分析异常行为。(6)操作系统的审计跟踪管理,并识别违反安全策略的用户活动。根据检测的数据来源,入侵检测系统一般分为两种:基于主机的入侵检测系统和基于网络的入侵检测系统【9】。基于主机的入侵检测系统以本地主机系统的信息作为数据源,如系统日志、文件系统、用户行为、CPU和内存的使用情况等,其保护的一般是自身所在的系统。早期的工具大多是基于主机的入侵检测工具,但随着网络的迅猛发展,基于网络的入侵检测系统己成为研究与开发的主流。目前的大多商用产品主要是侧重于基于网络的入侵检测系统。基于网络的入侵检测系统(NIDS)使用原始网络包作为数据源,对数据包各个头部信息与负载信息进行检测。通常使用一台专用的主机作为检测器,实时检测网络流量。通过将网络适配器置成混杂模式获得流经本机网网络接口的数据包,并传递到分析检测组件进行检测分析以判断是否有入侵发生,这是整个NIDS系统的核心功能,分析检测组件的实时性与准确性直接决定着整个系统的性能,因此分析检测组件所采用的算法与技术也是整个系统的关键。基于网络的入侵检测系统通常担负着保护整个网段的任务。一旦检测到了攻击行为,DS的响应模块将对入侵进行记录、报警并可对攻击进行响应。 第二章入侵检洳及蜜罐诱捕相关技术分析具有蜜罐诱捕功能的联动入侵检测系统的研究与实现2.1.1公共入侵检测框架及P2DR模型入侵检测是检测计算机网络和系统以发现违反安全策略事件的过程。作为入侵检测的系统至少应该包括三个功能模块:提供事件记录流的信息源、发现入侵迹象的分析引擎和基于分析引擎的响应部件。公共入侵检测框架(CIDF)floj阐述了一个入侵检测系统的通用模型,即入侵检测系统分四个组件:事件产生器、事件分析器、响应单元和事件数据库。公共入侵检测框架如图2.1所示,其将需要分析的数据统称为事件,它可以是网络中的数据,也可以是从系统日志等其他途径得到的信息。在此模型中,前三者以程序的形式出现,而最后一个则往往以文件或数据流的形式。事件产生器的目的是从整个计算环境中获得事件,并向系统的其他部分提供此事件;事件分析器分析得到的数据,并产生分析结果:响应单元则是对分析结果做出反应的功能单元,它可以做出切断连接、改变文件属性等,也可以只是简单的报警;事件数据库是存放各种中间和最终数据的地方的统称,它可以是复杂的数据库,也可以是简单的文本文件。图2.1入侵检狈q系统通用模型P2DR/11】模型是一个动态的计算机系统安全理论模型,其结构如图2.2所示。其指导思想比传统静态安全方案有突破性提高。P2DR是Policy(策略)、Protection(防护),Detection(检测)和Response(响应)的缩写,特点是动态性和基于时间的特性。具体而言,P2DR模型的内容包括如下:(1)策略:P2DR模型的核心内容。在具体实施过程中,策略规定了系统所要达到的安全目标及为达到目标所采取的各种具体安全措施、实施强度等。安全措施的实施必然会影响至lJ系统运行的性能,以及牺牲用户操作的舒适度,因此安全策略应按需而制。(2)防护:包括制定安全管理规则、进行系统安全配置工作以及安装各种安全防护设备.(如防火墙、VPN设备等)。(3)检测:在采取各种安全措施后,根据系统运行情况的变化,对系统安全状8 具有蜜罐诱捕功能的联动入侵检测系统的研究与实现第二章入侵检测及蜜罐诱捕相关技术分析态进行实时的动态监控。(4)响应:当发现了入侵活动后,需要系统做出及时的反应并采取措施,包括记录入侵行为、通告管理员、阻断进一步的入侵活动以及恢复系统正常运行等。防护检测图2.2P2DR通用模型P2DR模型阐述了这样一个结论:安全的目标实际上就是尽可能的增大保护时间,尽量减少检测时间和响应时间。入侵检测技术就是实现P2DR模型中“检测’’部分的主要技术手段。在P2DR模型中,安全策略处于中心地位,但是从另一个角度来看,安全策略也是制定入侵检测中检测策略的一个重要信息来源,入侵检测系统需要根据现有已知的安全策略信息,来更好的配置系统模块参数信息。当发现入侵行为后,入侵检测系统会通过响应模块改变系统的防护措施,改善系统的防护能力,从而实现动态的系统安全模型。从技术手段上分析,入侵检测可以看作是实现P2DR模型的承前启后的关键环节。2.1.2入侵检测发展历程美国军方在20世纪70年代支持了一项内容广泛的关于计算机系统安全的研究计划,最终的研究成果包括了一项重要的计算机安全评估标准:TCSEC(可信计算机系统评估准则)。美国军方计算机安全审计机制研究项目负责人JamesAnderson在1980年完成的技术报告《计算机安全威胁的监控》中,首次明确提出安全审计的目标,并强调应该对计算机审计机制做出若干修改,以便计算机安全人员能够方便的检查和分析审计数据。Anderson在报告中定义了三种类型的恶意用户【12】:伪装者(Masquerader):此类用户试图绕过系统安全访问控制机制,从而利用合法用户的系统账户。 第二章入侵检测及蜜罐诱捕相关技术分析具有蜜罐诱捕功能的联动入侵检测系统的研究与实现违法者(Misfeasor):在计算机系统上执行非法活动的合法用户。秘密活动者(ClandestinedUser):此类用户在获取系统最高权限后,利用此种权限以一种审计机制难以发现的方式进行秘密活动,或者干脆关闭审计记录过程。Anderson在其报告中同时指出,可以通过观察在审计数据记录中的偏离历史正常行为模式的用户活动来检查和发现伪装者和一定程度上的违法者。1984。1986年,Denning和Neumarm在SRI公司内设计和实现了著名的入侵检测专家系统(IDES)。IDES系统采纳了Anderson提出的若干建议。IDES系统包括了统计分析组件和专家系统组件,同时实现了基于统计分析的异常检测技术和基于规则的误用检测技术。1987年,DorothyDenning发表了入侵检测领域内的经典论文《入侵检测模型》【13】。该文中对入侵检测问题进行了深入的讨论,提出了入侵检测的基本模型,并提出了几种可用于入侵检测的统计分析模型。该文献正式启动了入侵检测领域内的研究工作。1990年,加州大学Davis分校的ToddHeberlien发表在IEEE上的论文“ANetworkSecurityMonitor",标志着入侵检测系统第一次将网络数据包作为实际输入的信息源。1991年,StephenSmaha主持设计开发了分布式入侵检测系统(DIDS)。DIDS首次将主机入侵检测和网络入侵检测技术进行集成,其具备在目标网络环境下跟踪特定用户异常活动的能力。1992年,加州大学圣巴巴拉分校的Porras和Ilgun提出了状态转移分析的入侵检测技术,并实现了原型系统USTAT(用于Unix的状态迁移分析系统)。之后发展出NSTAT、NetSTAT等系统。同一时期,KathleenJackson在LosAlamos国家实验室设计开发了NADIR(NetworkAnomalyDetectionandIntrusionReporter)入侵检测系统,用于监控LosAlamos的内部计算网络环境,采用了以每周计算活动档案的统计技术来描述用户的活动情况,并使用专家系统规则来检测异常的用户行为。1994年,Porras在SRI公司开发出IDES系统的后继版本NIDES系统(NextGenerationReal—timeIntrusion.DetectionExpertSystem),后者在系统整体结构设计和统计分析算法上有了较大改进。进一步,SRI公司开发了用于分布式环境的EMERALD系统(EventMonitoringEnablingResponsetoAnomalousLiveDisturbances),该系统设计在大型分布式环境下工作,具备统计分析和规则分析的能力。1995年,普渡大学的S.Kumar在STAT的思路基础上,提出了基于有色Petri网10 具有蜜罐诱捕功能的联动入侵检测系统的研究与实现第二章入侵检测及蜜罐诱捕相关技术分析的模式匹配计算模型,并实现了IDIOT(IntrusionDetectionInOurTime)原型系统。1996年,新墨西哥大学的Forrest提出了基于计算机免疫学的入侵检测技术。1999年,LosAlamos的V.Paxson开发了Bro系统,用于高速网络环境下的入侵检测。同年,加州大学的Davis分校发布了GRIDS系统(Graph.basedIntrusionDetectionSystem),该系统试图为入侵检测技术扩展到大型网络环境提供一个实际的解决方案。同时,WenkeLe提出了用于入侵检测的数据挖掘技术框架。2000年,普渡大学的DiegoZamboni和E.Spafford提出了入侵检测的自治代理结构,并实现了原型系统AAFID系统(AutonomousAgentsforIntrusionDetection)。2.2入侵检测技术分析对各种事件进行分析,从中发现违反安全策略的行为是入侵检测系统的核心功能。从技术上,检测入侵的方法分为两类:误用检测和异常检测【l41。误用检测【15】预先把攻击方法用某种模式或特征表示出来,检测时将收集到的信息与己知攻击模式或特征进行匹配,以判断是否存在入侵行为。用来检测攻击特征的是过滤器,它把攻击特征的描述转换成机器可读的代码或查询表。误用检测的主要问题是对于某种攻击方式如何来描述它的特征并实现过滤器,使之能与该攻击的所有变化方式相匹配,并且不会与非入侵行为匹配而造成误报。异常检测建立在事先对网络系统正常行为的描述,通过分析各种收集到的信息,标识出与网络系统正常行为偏离很大的行为,并将其视为入侵企图。正常行为的描述包括CPU利用率、内存利用率、文件校验和用户行为等。描述过程可以人为定义,也可以利用程序来收集、处理系统行为的特征,并用统计的方法自动获得。误用检测和异常检测所得出的结论可能有非常大的差异。误用检测的核心是维护一个描述入侵特征的知识库,对于己知的攻击,它可以详细、准确的识别出攻击类型,但是对于未知的复杂的攻击却效果有限,因此知识库需要不断的更新;另外,知识库的建立过程往往采用手工的方式,而且依赖于安全专家的安全知识,具有一定的局限性,很难建立一个完备的入侵知识库。异常检测无法准确的判断出攻击类型,但却可以实现对未知的复杂的攻击方式的检测,对于误用检测是个很好的补充方式。所以,误用检测和异常检测都不是完整的解决方法,一个完善的网络入侵检测系统需综合利用该两种检测方式。目前,国际上先进的入侵检测系统主要以误用检测技术为主,并结合异常检测技术。按照所使用的分析方法,可以分为以下几种入侵检测系统:(1)基于审计信息的攻击检测技术。基于审计信息的攻击检测工具以及自动分 第二章入侵检测及蜜罐诱捕相关技术分析具有蜜罐诱捕功能的联动入侵检测系统的研究与实现析工具可以向系统安全管理员报告计算机系统活动的评估报告,通常是脱机的、滞后的。对攻击的实时检测系统的工作原理是基于对用户历史行为建模,以及在早期的证据或模型的基础之上。审计系统实时地检测,当发现有可疑的用户行为发生时,保持跟踪并检测该用户的行为。系统应该能够判断用户行为的合法性或可疑性。这种办法同样适用于检测程序的行为即对数据资源(如文件或数据库)的存取行为。(2)基于神经网络的攻击检预!}技术。基于审计统计数据的攻击检测系统具有一定的弱点:因为用户的行为可能极为复杂,所以准确匹配一个用户的历史行为和当前的行为是较为困难的。错发的警报往往来自于对审计数据的统计算法所基于的不准确或不贴切的假设。SRI的研究小组幂I』用和发展了神经网络技术来进行攻击检测。目前,神经网络技术提出了基于传统统计技术的攻击检澳!}方法的改进方法但尚不完全成熟。传统的统计方法仍将继续发挥作用,也仍然能为发现用户的异常行为提供相当有参考价值的信息。(3)基于专家系统的攻击检测技术。进行安全检测工作自动化的另外一个值得重视的研究方向就是基于专家系统的攻击检测技术,即根据安全专家对可疑行为的分析经验来形成一套推理规则,然后再在此基础之上构成相应的专家系统。由此专家系统自动进行对所涉及的攻击操作的分析工作。所谓专家系统是基于一套由专家经验事先定义的规则的推理系统。例如,在数分钟之内某个用户连续进行登录,并且失败超过若干次则可以被认为是一种攻击行为。类似的规则在统计系统似乎也有,同时应当说明的是基于规则的专家系统或推理系统也有其局限性,因为作为这类系统的基础的推理规则一般都是根据已知的安全漏洞进行安排和策划的,而对系统的最危险的威胁则主要是来自未知的安全漏洞。(4)基于模型推理的攻击检测技术。攻击者在入侵一个系统时往往采用一定的行为程序,如口令破解程序。这种行为程序构成了某种具有一定行为特征的模型,根据这种模型所代表的攻击意图的行为特征,可以实时地检测出恶意的攻击企图。用基于模型的推理方法人们能够为某些行为建立特定的模型,从而能够监视具有特定行为特征的某些活动。根据假设的攻击脚本,这种系统就能检测出不合法的用户行为。一般为了准确判断,要为不同的入侵者和不同的系统建立特定的攻击脚本。当有证据表明某种特定的攻击模型发生时,系统应当收集其他证据来证实或者否定攻击的真实,以尽可能的避免错报。2.3蜜罐诱捕技术分析蜜罐诱捕系统是变被动防守为主动防御的实现方式之一,其中诱捕环境是真实系12 具有蜜罐诱捕功能的联动入侵检测系统的研究与实现第二章入侵检测及蜜罐诱捕相关技术分析统的替身,是整个入侵系统的核心。蜜罐诱捕系统通过设立诱捕环境来保护真实的系统,同时了解和跟踪入侵者。蜜罐即honeypot是一种安全资源,其价值体现在被探测、攻击或者摧毁的时候【l们。蜜罐是一种用来引诱未经验证或非法访问的信息系统资源。它不修补安全漏洞,能提供附加的、有价值的东西,所有流入/流出蜜罐的网络流量都可能预示着扫描或攻击,同时蜜罐还具有转移攻击者注意力,消耗其攻击资源、意志,间接保护真实目标系统的作用。建立蜜罐诱捕系统的目的是监视和学习攻击者的入侵行为,认识其是如何探测和入侵系统,从而采取适当策略以防范入侵。2.3.1蜜罐的发展历程“蜜罐”这一概念最初出现在CliffordStoll1990年出版的一本小说《TlleCuckoo’sEgg))中,在这本小说中描述了作者作为一个公司的网络管理员,如何追踪并发现一起商业间谍案的故事。蜜罐作为一个独立的系统正式出现于BillCheswick在1991年发表的一篇题为“AnEveningwithBerferdInWhichaCrackerisLured,Endured,andStudied”的文献。作者在该文献中指出,虽然已经有一些安全工具可以检测黑客攻击,但有所遗漏。为了提供更多的信息,作者在系统空闲的端口上,打开一些伪造的服务吸引黑客,进而记录下黑客的活动。所谓伪造的服务是指模仿正常服务器软件的一些行为,如建立连接、提示访问者输入用户名和口令等。BillCheswick在其与StevenM.Bellovin合作的“FirewallsandIntemetSecurity:RepellingtheWilyHacker”一书中再次提到伪造服务时,并用到Honeypot一词。作者特别提到,蜜罐记录黑客信息的功能可以用于检测的目的。FredCohen在1996年发表的文献“IntemetHoles.IntemetLightningRods"中,提到可以利用防火墙技术把未授权访问“引”向蜜罐,消耗黑客的资源。作者认为,蜜罐除了可以演示黑客的存在外,自身也起到了把攻击引离产品系统的效果。在1998年发表的文献“ANoteontheRoleofDeceptioninInformationProtectionh中,FredCohen认为蜜罐实质上是一种欺骗系统,并设计了采用伪造服务技术的欺骗系统DTK(DeceptionToolkit)。DTK后来被认为是第一个公共可以得到的蜜罐系统,作者希望DTK的广泛使用可以使黑客难以分辨真伪,增加黑客实施有效攻击的难度。在1999年发表的另外一份文献“AMathematicalStructureofSimpleDefensiveNetworkDeceptions”中,FredCohen从时间的角度,对欺骗系统的思想进行了完整的表述。黑客在欺骗系统上花费时间,就可能暂时不会攻击工作系统。作者分析了欺骗系统能 第二章入侵检测及蜜罐诱捕相关技术分析具有蜜罐诱捕功能的联动入侵检测系统的研究与实现够吸引住黑客的一些途径,包括增加欺骗系统的数量、增加欺骗系统的伪装程度等。FredCohen出发点是如何充分利用蜜罐。他从延缓黑客攻击的角度,看到了蜜罐为保护工作系统赢得时间的作用。FredCohen的工作较大地推进了蜜罐的发展。一些商用或免费的欺骗系统陆续出现,主要有:Specter,Mantrap等。虽然欺骗系统可能为保护工作系统赢得时间,但在实际使用中,人们更感兴趣的是蜜罐记录的黑客信息。更多的注意力开始放在记录黑客信息上面。Recource公司的蜜罐产品Mantrap就是一个典型的代表。它使用真实的系统作为蜜罐,提供了从系统级到网络级的强大的记录黑客活动功能。明确提出蜜罐是一个了解黑客的存效手段始于LanceSpitzer。他在“KnowYourEnemy"系列文献中展示了了解黑客的一些初步成果,并在“ToBuildAHoneypot",文献中简单介绍了自己所使用的蜜罐工具。LanceSpitzer使用真实的系统接受黑客攻击,利用防火墙、网络sniffer工具记录和控制黑客的活动。1999年由LanceSpitzner倡议成立的Honeynet[17】研究组织的出现真正开始引起人们对蜜罐技术的兴趣。Honeynet组织设置了一个一定规模向黑客开放的网络环境,观察黑客活动,称为Honeynet,以对黑客群体进行系统的研究。Honeynet研究组织也被认为是蜜罐研究的中坚力量。2000年到2001年,研究组织使用honeypot捕获和研究蠕虫活动,更多的组织采用honeypot来检测和研究新的威胁。2.3.2蜜罐的分类蜜罐根据应用的目的可以划分为:产品型蜜罐和研究型蜜罐【18】。产品型蜜罐保护的是一个单位或组织,而研究型蜜罐仅用于学习和研究。产品型蜜罐具有事件检测和欺骗功能,其职能是检测并诱捕恶意攻击者,以减轻受保护组织可能受到的攻击威胁。它通常放置于一个部门内部网络环境中,由于其对攻击者具有较大吸引力,可以诱惑或欺骗攻击者将时间和精力花费在攻击该蜜罐系统上,从而远离实际的工作网络。在一定程度上减轻了网络面临的风险,提高了安全性能。研究型蜜罐,被设计用来获取黑客界舟嘴息。这些蜜罐并没有为特定的组织带来直接性的价值,其主要使命是研究组织所面临的威胁,并寻找能够防范这些威胁的最好办法。研究型蜜罐是观察、记录、学习攻击者及其攻击行为的最好工具,而且它还能学习到攻击者在攻陷一个系统后如何与外界通信、留取后门等。研究型蜜罐比产品型蜜罐要复杂得多。要了解攻击者,就必须给他们提供实实在在的操作系统和应用程14 具有蜜罐诱捕功能的联动入侵检测系统的研究与实现第二章入侵检测及蜜罐诱捕相关技术分析序用于交互。这样就可以给我们提供更多的信息而不仅仅是遭受探测的应用程序是什么。不过这种增强的功能也有弊端,研究型蜜罐更为复杂,所承担的风险更大,管理上所需的时间和精力也更多。蜜罐根据与攻击者的交互程度可分为低交互度、中交互度和高交互度【191。::低交互度蜜罐不运行真实操作系统的真实应用服务,而用专门设计的蜜罐诱捕程序模拟这些服务,使其对外呈现真实应用服务的基本功能,攻击者于是与这些模拟服务进行预先设定好的例行交互。中交互度的蜜罐仍然没有提供真实的操作系统应用服务与攻击者交互,但为攻击者提供了更多复杂的诱捕进程,模拟了更多更复杂的特定服务。中交互度蜜罐能够预期一些活动,并且旨在可以给出一些低交互度蜜罐所无法给予的响应。高交互度的蜜罐复杂度大大增加,面对攻击者的是真实操作系统的真实应用服务。高交互度蜜罐为攻击者提供对实际操作系统的访问权,在此环境下无任何实体模拟或受限,蜜罐收集攻击者信息的能力也大大增强,但同时它也面临高风险,一旦攻击者掌握了对某个蜜罐的控制权,珏p拥有了被侵入机器完整可操作系统的控制权,从而会在被侵入系统内进一步扩大侵害。目前,国际上对蜜罐的研究、设计主要集中在低交互度和高交互度蜜罐方面,中交互度的蜜罐只是一个概念上的研究对象。低交互度蜜罐的主要研究价值在于对未授权扫描和未授权连接的检测发现。可以用专门设计的蜜罐诱捕程序来模拟,提供预先设定好的例行交互功能。其优点为占用资源少,部署较为简单;出错很少,风险性最低。蜜罐诱捕程序主要收集攻击的时间和日期、攻击的源IP地址和源端口、攻击的目的IP地址和目的端口以及其它相关信息,以一种预定的方式响应攻击者的某种方式的活动。它在用于捕获自动攻击工具、蠕虫,检测对于特定漏洞的威胁方面尤其具有一定优势£20】。2.3.3蜜罐的作用和意义目前主流的网络信息安全技术有传统防火墙、入侵检测等,但是防火墙依赖于现成的规则库,入侵检测系统需要现成的模式库,通过进行模式匹配来识别非法连接和攻击,就是说这两种技术都是被动的手段,都依赖于事先对非法连接、非法访问有一个清楚的认识,它们对已知的攻击将起到十分重要的作用,但是对于未知攻击、还没有在防火墙规则库和入侵检测模式库中建立规则和模式定义的攻击、非法行为,传统防火墙和入侵检测将一筹莫展。为了解决这一问题,蜜罐技术得到迅速发展。蜜罐技术的出现弥补了防火墙和入 第二章入侵检测及蜜罐诱捕相关技术分析具有蜜罐诱捕功能的联动入侵检测系统的研究与实现侵检测的一些不足,受到了越来越多的重视和关注。它可以迅速检测并捕捉到已知和未知的攻击,从而对攻击者的入侵行为进行分析和学习,还能够消耗入侵者的资源、影响入侵者的意志,所以蜜罐在网络安全领域有着重要的意义。蜜罐需要防火墙和入侵检测系统的主要功能,它们是蜜罐不可或缺的补充。蜜罐的作用和意义有:(1)数据价值。安全界所面临的难题之一就是从数据中获取价值,组织每天都会收集到大量数据,包括防火墙日志、系统日志以及入侵检测预警等。这些信息的数据量非常大,从而使得从数据中提取有价值的信息变得极为困难。而蜜罐通常只会收集非常少量的数据,而它们收集到的数据却有很高的价值。蜜罐这种没有任何预期产品活动的理念大大降低了噪声级别。大部分蜜罐每天只会收集到几MB的数据,甚至比这还要少,而不是数GB字节的数据。而它们所载入日志的任何数据都有可能是一次扫描、探测或者攻击。(2)资源。大多数安全机制所面临的另一个难题是资源限制,甚至是资源枯竭。资源枯竭指的是由于安全资源的过渡使用而导致其无法继续起作用的情况。一个防火墙可能因为连接表已满而耗尽资源或者它不能再监视连接而实效,这会强迫防火墙阻断所有的连接,而不是仅仅阻断那些未授权的活动。一个入侵检测系统可能要对很多的网络活动进行监视,有可能是每秒数百兆字节的数据。在这种情况下,若缓冲区已被填满,数据包就可能被丢弃。由于其资源已经耗尽,因而无法再有效地监视网络活动了,很可能会错过对攻击地检测。由于蜜罐只会对少量活动进行捕获和监视,所以在它们身上通常不会发生资源枯竭问题。蜜罐只会捕获那些直接针对其本身的活动,因此系统并不会受到流量的震荡。(3)简捷性。蜜罐无需开发复杂的算法,无需维护签名数据库,不会出现错误配置的规则库。只要把蜜罐置于网络中的某个地方,就可以静观其变了。(4)提高事件检测、响应能力。当一个系统被入侵以后,机器上的数据和它的网络连接也遭到侵害。对侵害程度进行评估并不是一件简单的事情,不知道入侵者是否窃取了用户的ICl令,是否侵害了其他的系统等。通过对蜜罐所捕获的数据的分析,可以大大提高事件响应人员的业务水平,从而提高检溅、响应、恢复和分析受侵害系统的能力。例如,通过数据分析提取可疑的网络活动特征,将它存储在一个攻击特征库中,即可扩充系统的检测范围,使系统能够应对未知的入侵活动。(5)主动防御。传统的防御手段都是被动的防御手段,它们只限于对已知攻击的响应。而对于各种新攻击,传统的被动防御手段起到的只是亡羊补牢的作用,只能16 具有蜜罐诱捕功能的联动入侵检测系统的研究与实现第二章入侵检测及蜜罐诱捕相关技术分析在系统遭到破坏或造成了不可挽回的损失后才发现并认识新的攻击,因此主动攻击权掌握在攻击者手中。蜜罐可以改变这种局面,它能够诱惑或欺骗攻击者,让他们优先攻击蜜罐而不是实际的工作系统。从捕获的数据中能够学习攻击者的工具、方法和动机,了解他们入侵一个系统后会做什么,这样就能更好的理解面临的威胁,而且赢得了研究对策的时间。(6)蜜罐是很好的入侵者跟踪环境。一般来说,对入侵的响应有两种选择:一是切断入侵者与系统或网络的连接并恢复系统;二是继续开放系统,跟踪并收集更多关于入侵者的信息。对于实际工作网络通常选择第一种,因为继续开放系统将会面临系统被严重破坏的威胁,因此没有足够的时间去搜索入侵者更多的信息。由于蜜罐中没有正常的网络访问,发现入侵后,不必断开连接,还可以利用各种网络攻击诱骗技术迷惑他,让他在系统中长时间地逗留,这样就有充足的时间跟踪他,找到他发起攻击的最初站点。●2.4入侵检测系统与防火墙联动技术传统上,网络中一般采用防火墙作为安全的第一道防线,入侵检测系统作为第二道防线。在目前的网络安全解决方案中,将防火墙与IDS实现互动,从而达到最大程度的安全。防火墙和入侵检测系统之间的互动有以下两种方式【2l】:(1)通过开放接口实现互动。即防火墙或者入侵检测系统开放一个接口供对方调用。按照一定的协议进行通信、传输警报。这种方式比较灵活,防火墙可以行使访问控制的防御功能,入侵检测系统可以行使检测入侵的功能,丢弃恶意通信,确保这个通信不能到达目的地,并通知防火墙进行阻断。此外,通过开放接口实现互动不影响防火墙和IDS产品的性能,对于两个产品的自身发展比较好。但是由于是两个系统的配合,所以要重点考虑防火墙和IDS产品互动的安全性。在目前的技术水平上,这种方式是最有可能实现的。CheckPoint提出的OPSEC和国内的天融信网络卫士防火墙实现的TOPSEC网络安全体系都是通过接口协议实现入侵检测系统和防火墙互动的典型实例。另外,在Linux平台Net-filter提供Libipq通信机制实现应用层程序与内核中防火墙模块的通信。(2)紧密集成实现互动。即把入侵检测技术与防火墙技术集成到同一个硬件平台上,在统一的操作系统管理下有序地运行。这种方式实际上是把两种产品集成到一起,所有通过这个硬件平台的数据不仅要接受防火墙规则的验证,还要被入侵检测系统判断是否有攻击,以达到真正的实时阻断。对于这种紧密集成的安全平台,由于IDS产品和防火墙本身都是很庞大的系统,所以实施的难度比较大,集成后的性能也会受17 第二章入侵检测及蜜罐诱捕相关技术分析具有蜜罐诱捕功能的联动入侵检测系统的研究与实现很大的影响。如果要集成的话,不会仅仅将入侵检测和防火墙两种技术集成,而一定会将更多的安全技术集成到一起。相比而言,将防火墙与入侵检测系统通过开放接口结合起来实现互动,要比将两者紧密结合在一起要好,因为系统越复杂其自身的安全闯题就难以解决【221。所以选择将防火墙和入侵检测系统开放一个接口供对方使用,双方按照固定的协议进行通信,完成网络安全事件的传输。当防火墙和入侵检测系统互动时,所有的数据通信是通过认证和加密来确保传输信息的可靠性和保密性。通信双方可以事先约定并设定通信端口。在防火墙和入侵检测系统所构筑的安全体系中,当入侵检测系统检测到入侵行为时,迅速启动联动机制,产生入侵报告(包括入侵类型、协议类型、攻击源的地址和端口、攻击目标的地址和端口、时间等),经过联动代理封装和加密发送给联动控制模块。联动控制模块中的分析决策功能模块对入侵报告处理后,得出相应的响应策略,并通过策略应用模块通知所有己知防火墙的联动代理。联动代理从中解析响应策略,为各自防火墙新建访闯控制规则,从而达至l}抵街入侵的目的。因此,可以设计为每一次入侵发生时,防火墙都做出相应策略的动态修改,从而实现了对这种突发网络攻击的主动防御。根据联动的目的和技术要求,联动系统应该具备以下几种基本特性【23】:(1)有效性。针对具体的入侵行为,联动采取的响应措施应该能够有效阻止入侵的延续和最大限度降低系统损失,这是联动响应的目的所在。(2)及时性。要求系统能够及时地采取有效响应措施,尽最大可能地缩短从入侵发现到响应执行之间的时间窗口,即缩短响应时间,这也是引入联动实现自动响应的目的所在。(3)合理性。响应措施的选择应该在技术可行的前提下,综合考虑法律、道德、帛jj度、代价、资源约束等因素,采用合理可行的响应措施。联动响应应该以最小的代价换取最大的安全目标,当响应的代价大于攻击持续所造成的损失时,响应就没有必要了。(4)安全性。联动系统的作用在于保护网络及主机免遭非法入侵,显然它自身的安全性是最基本的要求。 具有蜜罐诱捕功能的联动入侵检测系统的研究与实现第三章系统总体分析设计与关键技术研究本章分析了具有蜜罐诱捕功能的联动网络入侵检测系统的设计思想,阐述了系统的功能模块划分,介绍了系统的总体运行流程,并研究分析了实现本系统所需使用的关键技术和算法。3.1蜜罐诱捕.联动网络入侵检测系统的系统分析蜜罐诱捕.联动网络入侵检测系统是对传统网络入侵检测的扩展,传统网络入侵检测系统主要存在以下问题:(1)检测时处于被动地位。传统网络入侵检测系统在网络中发生入侵后才能检测到,不能对入侵者进行有效的诱捕。(2)检测隐式入侵的能力有限。对于将攻击信息分解成多个网络包进行传输的IP分片攻击方式,传统入侵检测系统对IP的重组能力有限,不能有效的检测出隐藏在多个数据包中的攻击信息;并且对于TCPReset、FIN等隐式扫描检测能力有限。(3)检测到入侵时不能联动响应以采取适当的防御措施。针对以上所述的问题,本文将蜜罐诱捕技术及联动技术与入侵检测技术有效结合,设计了一种带有蜜罐诱捕功能并可与防火墙联动响应的网络入侵检测系统,其设计思想为在传统网络入侵系统的功能基础上增加了主动诱捕和联动功能。系统启动后在未通知外界自身存在的情况下伪装成有漏洞的系统,等待网络中对系统有意或无意的扫描和连接,对入侵者进行主动诱捕;同时系统通过分析流经本机网络接口的网络数据包,对数据包按层次进行协议的解码,分析包首部的正常与否及对网络包中的数据负载信息进行检查以发现入侵信息,之后根据规则中预先设定的策略对网络数据包进行响应处理,加强对网络的控制。从而在一定程度上弥补了现有传统网络入侵检测系统的不足,保护了网络的安全。3.2系统功能模块划分与架构设计根据各部分完成功能的不同,本系统总体上划分为两大模块:蜜罐诱捕模块和联动入侵检测模块。蜜罐诱捕模块在系统导入后将伪装成具有一定漏洞的系统,模拟一定数量的常用网络服务以诱捕攻击。其可与攻击者进行低层次的交互,搜集时间跨度大的或隐蔽的扫描和攻击信息,并将攻击和连接信息记录在日志中。其搜集到的信息经安全管理人员系统分析后将作为入侵检测模块所用规则的重要制定参考。19 第三章系统总体分析设计与关键技术研究具有蜜罐诱捕功能的联动入侵检测系统的研究与实现联动入侵检测模块从数据链路层捕获网络包,网络包经过预检测组件和Linux内核模块分析后,提取其中相关协议的首部信息和负载信息并进行解析。解析后所得数据与事先导入的规则进行模式匹配查找入侵信息,若发现入侵或不正常的行为,系统将产生报警信息或根据事先设定的策略进行联动响应。蜜罐诱捕.联动网络入侵检测系统的整体架构如图3.1所示。图3.1系统总体架构该架构中,蜜罐诱捕模块由网络监听、服务模拟、日志记录等组件组成。该模块模拟一定数量的常用服务,并从数据链路层开始抓包。在服务与连接者进行交互后,蜜罐诱捕模块将对连接的IP地址、端口、交互信息等进行记录,安全管理人员在对日志记录进行分析之后判断是否存在异常;若发现异常,则对该异常详细分析并添加相应规则至IJ规则库中。联动入侵检测模块包括网络监听、预检测、包内容检测、日志记录与警报、联动响应等组件。在预处理及包检测引擎对网络数据流进行分析后将判断是否存在入侵,若发现入侵,则对入侵进行日志记录并发出警报信息,并进一步查找是否存在预先设定的响应策略;若存在响应策略,则利用Libnet及Netfiler/iptables 具有蜜罐诱捕功能的联动入侵检测系统的研究与实现第三章系统总体分析设计与关键技术研究做出响应。3.3系统运行总体流程系统运行的总体流程如图3.2所示。A!总图3.2系统总体运行’流程系统运行的具体流程分析如下:(1)配置系统。配置系统阶段完成查找并读入用户配置文件信息及解析用户输入命令行参数的任务。在查找配置文件时,若存在则从配置文件中导入系统配置信息;若不存在则解析命令行参数。配置文件主要记录了预先配置的信息,包括默认网络接口、需要监测的子网地址与网络掩码、入侵检测模块所用的规则文件所在路径、系统Pid文件的路径、日志文件的路径、诱捕模块的响应文件所在路径及系统成功启动后降低权限运行时所要切换到的用户名和组名等。命令行参数的解析工作主要包括:要捕获网路数据包的接口(若不指定,则默认使用ethO);配置文件的路径及文件名;日志和警报输出的方式及输出文件的路径(默认为/var/log/honeyids);是否以后台服务方式运行。系统配置文件如附录2所示。体初始化;.........:;v一 第三章系统总体分析设计与关键技术研究具有蜜罐诱捕功能的联动入侵检测系统的研究与实现(2)网络初始化。包括初始化网络掩码、初始化网络协议、设置包捕获数目为无限循环捕获。系统在获取网络接口的文件描述符后打开该接口,并获去该接口所配置的网络地址和网络掩码,之后编译BPF过滤规则并调用设置BPF过滤规则。最后调用相关函数返回数据链路层状态。(3)安装信号处理器。定义一个sigsett类型的信号集合变量并将该信号集合变量初始化为0。联动入侵检测模块共处理SIGTERM、SIGINT、SIGQUIT、SIGHUP、SIGUSRl、SIGALRM、SIGSEGV、SIGFPE信号;蜜罐诱捕模块处理进程通信中SIGHUP、SIGSEGV、SIGINT、SIGQUIT、SIGTERM、SIGCHLD等信号。初始化信号集合后对相应信号分别安装信号处理函数。(4)导入蜜罐诱捕模块。若成功导入蜜罐诱捕模块,则继续导入联动入侵检测模块;若导入失败,则显示相关出错信息,为尽可能检测出网络中的入侵和威胁,系统将继续导入联动入侵检测模块。蜜罐诱捕模块的详细设计见第四章。(5)导入联动入侵检测模块。该模块实现了对网络包的实时检测,是系统的主要模块。若该模块导入成功则继续执行(6);若导入失败,则显示相关出错信息,并退出系统。联动入侵检测模块的详细设计见第五章。(6)创建Pid文件。Pid文件标识当前正在运行的进程,通常位于/varlrun目录下,该文件保存运行进程的id。定义一个int类型的全局变量pidfile,调用open(pidfile,oEXCLl0CREATJONOCTTYORDWR,0640)函数创建文件并设置相应的权限;为保障Pid文件不被其它程序修改,系统调用lockf(pidfile,FTLOCK,0)函数,在程序运行期间使用排他锁;为获取当前进程的id,系统调用getpid0取得后将其保存于pid_string局部变量并调用write(pid_file,pid_string,strlen(pid_string)i函数写Apid文件。(7)放弃root权限。此时系统的运行已经不需要root权限。为了降低风险、增强安全性,调用drop__privileges0函数放弃root权限,实现降低权限运行。在drop_privileges0中使用setgid(group_id)和setuid(user__id)切换到非root用户和组,从而实现运行权限的降低。(8)持续监测网络数据包。完成以上动作之后,系统的两大模块开始实时监测网络数据包,检查网络中存在的风险。3.4Linux防火墙Netfilter/iptables分析Netfilter/iptablesl24j是Linux2.4和2.6内核集成的IP包过滤系统,由Netfilter和iptables两个组件组成。Netfilter组件工作在内核空间,提供·个对IP包进行操作的 具有蜜罐诱捕功能的联动入侵检测系统的研究与实现第三章系统总体分析设计与关键技术研究框架。iptables组件工作在用户空间,是用户插入、删除及修改保存在Netfilter组件中包过滤规则的工具。在Linux内核版本2.4以上采用的Netfilter架构是内核中一种用于扩展各种网络服务的结构化底层框架。Neffilter的设计思想是生成一个模块结构使之能够较易扩展,新特性可方便加入到内核中而不需要重启内核。可通过简单构造-个内核模块来实现网络新特性的扩展。在Linux2.4及以后内核中配置Netfilter框架的程序为iptables,它是一个使用getsockopt0系统调用与内核通讯的数据报选择系统。内核模块可注册一个新的规则表,并要求数据报流经指定规则表。这种数据报选择用于实现数据报过滤(Filter表),网络地址转换(NAT表)及数据报处理(Mangle表)[251。Linux内核提供的这三种数据报处理功能都基于Netfilter的钩子函数和口表,它们是独立的模块,集成于Netfilter框架中。对Netfilter框架作如下说明:(1)为每种网络协议(如口v4、IPv6等)定义一套钩子函数,这些钩子函数在数据报流过协议栈的几个关键点被调用。在这几个点中,协议栈将把数据报及钩子函数标号作为参数调用Netfilter框架。(2)内核中任何模块可以对每种协议的一个或多个钩子进行注册以实现挂接,当数据包被传递给Netfilter框架时,内核能检测是否有模块对该协议和钩子函数进行了注册。若注册,则调用该模块注册的回调函数以检查或修改该数据包、丢弃该数据包及指示Netfilter将该数据包传入用户空间的队列。(3)排队的数据包被传递给用户空间异步的进行处理。一个用户进程能够检查、修改数据包,甚至可重新将该数据包通过离开内核的同一个钩子函数中注入回内核中。(4)任何在IP层要被抛弃的D数据包在真正抛弃之前都要进行检查。(5)IP层的五个HOOK点的位置如图3.3所示【261。数据报从左边进入系统,进行IP校验以后,数据报经过第一个钩子PREROUTING进行处理;然后就进入路由代码,其决定该数据包是需要转发还是发给本机的;若该数据包是发向本机的,则该数据经钩子INPUT处理后传递给上层协议;若该数据包应该被转发则它被FORWARD处理;经转发的数据报经最后一个钩子POSTROUTING处理以后,再传输到网络上。本地产生的数据经过钩子函数OUTPUT处理后,进行路由选择处理,然后经过POSTROUTING处理以后发送到网络上。数据包进入Netfilter后首先进行校验和、完整性检查,然后通过路由,确定数据包的类型,将数据包传给输入链,如果目的地址不是本机,则将数据包传给转发链;本地进程产生的数据包只经过输出链, 第三章系统总体分析设计与关键技术研究具有蜜罐诱捕功能的联动入侵检测系统的研究与实现经路由转发出去。每条链中可设一条或数条规则。当一个数据包到达一条链时,系统会从第一条规则开始检查。若符合规则,则按规则定义的方法处理;若不符合,则继续检查下一条规则。如果该数据包不符合该链中任何一条规则,系统则按该链预先定义的策略来处理。图3.3Netfilter框架Netfilter可实现以下功能:(1)实现状态检测。每个网络连接包括以下信息:源地址、目的地址、源端口和目的端口、协议类型、连接状态(TCP协议)和超时时间等。防火墙将这些信息称为状态,能够检测每个连接状态的防火墙称为状态包过滤防火墙。它除了能够完成简单包过滤防火墙的包过滤工作外,还在内存中维护一个跟踪连接状态的表,比简单包过滤防火墙具有更大的安全性。(2)实现包过滤。Filter表不对数据报进行修改,而仅对数据报进行过滤。iptables通过钩子函数NFIPLOCAL—IN、NF—IP—FORWARD及NFIPLOCAL_OUT接入Netfilter框架。因此对于任何一个数据报只有一处对其进行过滤。(3)实现NAT。NAT表监听三个Netfilter钩子函数:NFIPPREROUTING,NF—IP—POST—ROUTTNG及NF-IP—LOCAL—OUT。NFIPPRE_ROUTING实现对需转发数据报的源地址进行地址转换,NFIP.POSTROUTING则对需转发的数据包的目的地址的转换,NFjP_-LOCAL—OUT实现本地数据报的目的地址转换。NAT表不24 具有蜜罐诱捕功能的联动入侵检测系统的研究与实现第三章系统总体分析设计与关键技术研究同于Filter表,只有新连接的第一个数据报将遍历该表,随后的数据报将根据第一个数据报的结果进行同样的转换处理。NAT表被用在源NAT、目的NAT、伪装(其是源NAT的一个特例)及透明代理(其是目的NAT的一个特例)。(4)实现数据报从核心态到用户态的转换。标准的队列处理器模块QUENE(ip.o)可将数据报排队后从核心态转换到用户态。是一个特殊的目标,.queueQUENE它将包放到用户空间等待处理,需要两个额外的部件:处理包在内核和用户空间的流通的队列处理器和接受包、操作包的用户空间的应用程序。3.5Netlink通信与Libipq数据采集技术分析Netlink套接字机制可实现内核空间与用户空间的通信,通过Libipq库可实现从内核读取或写入数据包。Netlink套接字的通信依据是一个对应于进程的标识,一般定为该进程的ID。当通信的一端处于中断过程时,该标识为0。当使用Netlink套接字进行通信,通信的双方都是用户态进程,则使用方法类似于消息队列F¨。但通信双方有一端是中断过程,则使用方法有所不同。Netlink套接字的最大特点是对中断过程的支持,它在内核空间接收用户空间数据时不需用户自行启动一个内核线程,而是通过另一个软中断来调用用户事先指定的接收函数。使用软中断而不是内核线程来接收数据可以保证数据接收的实时性。defstructipq_packet_msg{unsignedlongpacket严队列中包ID}/.id;unsignedlongmark;产Netfilter标记值幸/longtimestamp_sec;净4|.10ngtimestamp/卓包到达时间(微秒)率/.usec;unsignedinthook;≯Netfilter钩子★}charindevname[IFNAMSIZ];产输入的接口名宰/charoutdevname[IFNAMSIZ]:产输出的接121名|‘/unsignedshorthwprotocol;严硬件协议木,unsignedshorthwtype;/幸硬件类型+/unsignedcharhwaddrlen;/幸硬件地址长度+/unsignedcharhw,幸硬件地址}/_addr[8];sizetdatalen;产包数据的长度吖unsignedcharpayload[0];/宰可选的包数据吖)ipqpacket.msg_t;图3.4Libipq信包类型结Libipq是一种用于iptables用户空间数据包排队的开发库,提供了一套与ip通讯的281。提供了这样一种机制:首先将数据包传递出栈到用户空..q间ue排ueAPIlNetfilter队,通过判决如何处理这些包(例如ACCEPT或DROP),然后根据情况接收这些信包传回到内核。在被传到内核空间前,这些信包可能在用户空间已被修改。内核模块对于每种支持的协议调用相应的排队处理器,这些处理器在Netfilter中注册以完成传 第三章系统总体分析设计与关键技术研究具有蜜罐诱捕功能的联动入侵检测系统的研究与实现递数据包出入用户空间的机制。IPv4的标准排队处理器是ip,内核和用户空间_queue通信时使用Netlink套接字。在ipqueue被载入内核后,IP包就可以根据排队目标被iptables选取或在用户空间排队处理。Libipq内部数据包类型表示结构如图3.4所示。QUEUE是一个特殊Netfilter框架中的目标(target),是Netfilter实现传递数据包到用户空间这一机制的关键技术。QUEUE可以替用户空间(usergpace)进程排队数据包。一旦装载了ip,数据包可以用工具有选择地通过目标,排队传递数据包到用.户.qu空eu间e处理。任何时候在ipt任ab何les规则链中,Q数U据EU包ENet_filter都可以被排队传递到用户空间去。实际的排队是由内核模块iR来完成的。.queue图3.5Libipq信包处理机制通过上述分析可知,应用程序可以通过Libipq与Netfilter通信,从而通知内核接收和处理信包。系统的联动入侵检测模块使用Libipq与Netfilter内核模块ip_queue通信,从而控制数据包的接收和丢弃。应用进程可以通过libipq库处理这些数据包,进行复杂的数据包操作,从而减轻了内核空间的复杂度。典型Libipq信包处理流程如图3.5所示。3.6Libpcap与Libnet技术分析数据包捕获开发包Libpeap[291由加州Berkeley大学开发,能进行平台无关的网络数据包捕获,它隐藏了操作系统细节,在用户态实现抓包。Libpcap的功能主要包括捕获、过滤、分析、存储网络数据包,使用基于内核的BPF过滤机制过滤网络上无关包,捕获应用感兴趣的包。BPF架构如图3.6所示。BPF工作在核心态,效率高,它由网络转发和数据包过滤器组成。前者从数据链路层中捕获数据包,并将其转发给 具有蜜罐诱捕功能的联动入侵检测系统的研究与实现第三章系统总体分析设计与关键技术研究后者;后者按过滤规则过滤后接收相关数据包,无关数据包则被丢弃【30】。用户内核网络图3.6BPF架构Libpcap库程序直接与内核驱动程序交互操作,实现网络信息的截获。可以使用Libpcap库函数对数据帧进行截获,开发时可依次调用图3.7所示的诸库函数。其中对数据包的检查或处理程序可以通过callback回调函数调用。本系统使用Libpcap完成对网络包的捕获。图3。7Libpcap数据包截获机制Libnet[311是一个专业网络数据包构造和发送开发包,允许开发者构造和发送网络数据包。Libnet提供了对底层网络数据包进行构造、修改和发送的高级接口。它隐藏了许多底层细节如多路技术、缓冲区管理、网络数据包头信息、字节流顺序、操作系统兼容性,以及校验和计算问题等。Libnet主要提供了在数据链路层和IP层构造网27 第三章系统总体分析设计与关键技术研究具有蜜罐诱捕功能的联动入侵检测系统的研究与实现络数据包的功能。但不同版本的Libnet开发包,其函数的调用形式都不相同。Libnet的主要功能有:构造各种不同的数据内容、从IP层构造数据包、从数据链路层构造数据包、发送数据包、自动计算校验和、可以发送多个数据包、修改已知数据包、构造不同平台下的网络数据包等。数据报的构造发送步骤如图3.8所示f32】。原始套接字接口API链路层接口API·网络初始化[二二二巫至垂垂][二二二二二歪亟垂三二二]2内存初始化[二二二二二臣叵圄[二二二二二二二二]j亘国20B。组装数据报[亘互三三二[叵固[二二二[三互圣三]j至固20B,广—————-T—————————广————————1lEthemetIPheaderlTCPheaderI4校验和计算三三三三三三三三三三三三i_—i三三三三三三三凶5发送数据报IPheaderTCPheaderh1_|EthernetmheaderTCPheader.2。B上上14B2。B.网络图3.8Linet构造发送数据报流本系统使用Libnet构造和发送用于切断连接、控制网络的联动响应包。3.7入侵检测的模式匹配模式匹配问题是计算机科学中的一个基本问题,其研究内容在信息检索、模式识别等众多领域均有重要价值,在搜索引擎、入侵检测、计算机病毒特征码匹配等应用中起着重要的作用。串的模式匹配即子串定位是一种重要的串运算。对两个串(T长度为n,下同)和W(长度为m,下同),在主串T中找到等于子串W(tg称为模式)的过程称为模式匹配。如果在T中找到了等于W的子串,则称匹配成功,否则匹配失败133J。模式匹配按照匹配模式的数目分为单模式匹配和多模式匹配两类。多模式匹配指的是对给定包含k个特征模式的攻击特征模式库P{pl:to,pk).,在数据包中找到等于这k个特征模式中的任何一个或多个的过程。在基于特征的网络入侵检测系统中,模式匹配就是将接收到的数据包或会话中的数据与特征库中的每一条攻击特征进行匹配在特征库中查找与接收到的数据特征相同的数据段,若匹配成功,则表明存在入侵行为;否则认为该数据是无害的。 具有蜜罐诱捕功能的联动入侵检测系统的研究与实现第三章系统总体分析设计与关键技术研究在基于特征检测即基于模式匹配的入侵检测系统中,入侵检测引擎处于网络入侵检测系统核心位置。由于需要实时检测网络入侵,因此对入侵检测引擎的设计将直接影响到整个入侵检测系统运行效率,而入侵检测引擎的设计关键部分则是模式匹配算法的设计。实时入侵检测系统的模式搜索引擎需要考虑以下几点:多模式搜索算法、模式字符大小写的敏感性、模式大小、字母表大小、搜索的文本大小、搜索频率等【341。经研究发现基于AC自动机的模式匹配算法在各种情况下都能得到比其它匹配算法都要高的效率【351。本文首先对确定型有限自动机和非确定型有限自动机进行介绍,在此基础上,详细分析了AC算法,并实现了联动入侵检测模块所用的基于NFA的AC多模式匹配算法。3.7.1有限状态机有穷自动机(FSA)是一种能够准确识别由正规文法所定义的语言和由正规式所定义的集合的识别装置。它分为确定型有穷自动机(DFA)和不确定型有穷自动机(NFA)两类。一个确定有穷自动机(DFA)M是一个五元式M=(S,∑,万,So,F)【36】。其中:(1)S是一个有限集,它的每个元素称为一个状态。(2)∑是一个有穷字母表,它的每个元素称为一个输入字符。(3)万是一个从S×∑到S的单值部分映射。8(s,口)=J’意味着:当现行状态为J、输入字符为a时,将转换到下一状态s‘。我们称J’为J的一个后继状态。(4)%∈S,是唯一的初态。(5)F∈S,是一个终态集(可空)。一个DFA可用一个矩阵表示,该矩阵的行表示状态,列表示输入字符,矩阵元素表示6(s,口)的值,这个矩阵称为状态转换矩阵。一个DFA也可以表示成一张(确定的)状态转换图。假定DFAM含有m个状态和n个输入字符,那么,这个图含有m个状态结点,每个结点顶多有11条箭弧射出和别的结点相连接,每条箭弧用∑中的一个不同输入字符作标记,整张图含有唯一的一个初态结点和若干个(可以是0个)终态结点。在实际应用中一般采用状态迁移图来表示一个确定型有限自动机。一个非确定有穷自动机(NFA)M是一个五元式M=(S,∑,万,So,F)瞰】。其中:(1)S是一个有限集,它的每个元素称为一个状态。(2)∑是一个有穷字母表,它的每个元素称为一个输入字符。(3)万是一个从S×∑+到S的子集的映照,即万:S×∑+-9,2s。(4)&£S,是一个非空初态集。 第三章系统总体分析设计与关键技术研究具有蜜罐诱捕功能的联动入侵检测系统的研究与实现(5)FsS,是~个终态集(可空)。确定和不确定的有穷自动机都能且仅能识别正规集,即它们都能识别正规表达式所表示的语言。但它们之间存在着时间和空间的权衡。确定的有穷自动机导出的识别器比不确定的有穷自动机导出的识别器快,但确定的有穷自动机比不确定的有穷自动机占用空间多。因此两者各有优缺点,可根据具体情况确定使用何种自动机。AC状态机是专业的有限状态机。一个有限状态机是一个系统所有可能的表示,伴随着关于系统可接受的状态迁移,一个状态机的处理行为是从初始状态开始,接收一个输入事件,并根据输入的事件将当前的状态转移到下一个正确状态。可以使用矩阵使状态机可视化,其中行表示状态,列表示事件。矩阵中元素表示根据输入的事件迁移到的下一个正确状态。3.7.2Aho.Corasick多模式匹配算法Aho—Corasick(简称AC)137博法是基于有限状态自动机的,在进行匹配之前,先对模式串集合进行预处理,构建树型有限状态自动机,然后依据该FSA,只需对文本串T扫描一次就可以找出与其匹配的所有模式串。预处理生成3个函数:goto(转移)函数、failure(失效)函数和output(输出)函数。转移函数goto表明在当前状态下读入下一个待比较文本的字符后到达的下一个状态;失效函数failure用来指明在某种状态下,当读入的字符不匹配时应转移到的下一个状态;输出函数output的作用是在匹配过程中出现匹配时输出匹配到的模式。Aho.Corasick算法的匹配过程是:从初始状态0出发,每次取出文本串中的一个字符,根据当前的状态和扫描到的字符,利用goto或failure函数进入下一状态。当某个状态的output函数不为空时则表明达到该状态时找到了匹配的模式,于是输出其值。下面介绍3个预处理函数的构建。为了构造goto函数,首先要根据模式构建goto图并设置一个初始状态O,然后依次扫描各个模式,根据模式逐步为这个图添加新的边和顶点,构造出自动机:从状态0出发,由当前状态和读到的下一个字符决定下一状态。如果有从当前状态出发并标注该字符的矢线,则将矢线所指的状态赋为当前状态;否则添加一个标号比已有状态标号大1的新状态,并用一条矢线从当前状态指向新加入的状态,并将新加入的状态赋为当前状态;所有模式串处理完毕后,再画一条O状态的自返矢线,标注的字符为不能从0开始的字符集。这样每个模式都可以由一条从初始状态出发的路径标识出来。对模式串集合{she,he,hers,his}构建的goto图如图3.9所示:30 具有蜜罐诱捕功能的联动入侵检测系统的研究与实现第三章系统总体分析设计与关键技术研究NOTll"s图3.9根据Aho-Corasick算法构建的goto图失效函数f是逐层构造的,设某个状态的层深度为初始状态到该状态的最短路径长度。令第l层状态的failure函数值为0,如坟1)=f【3)=0;对于非第1层状态S,若其父状态为r,即存在字符a使g(r,a)=s(这里S的层深度比r少1),则f(s)=g(f(s奉),a),其中,状态s牛为追溯S的祖先状态得到的第1个使g(f(S幸),a)存在的状态,如f¨4)=g(f(3),11)=g(O,11)=1,f(5)=g(f(4),e)=g(1,e)=.2。输出函数output的作用是在匹配过程中输出匹配到的模式串。output的构造分两步:第1步是在构造转移函数g时,每处理完一个模式串,则将该模式串加入到当前状态S的输出函数中,如output(2)={he},output(5)={she)。第2步是在构造失效函数f时。若f(s)=s’,则output(s)=output(s)uoutput(s’),如output(5)=output(5)UoutputO)2{she,he}。构造完3个函数以后,就可以依次扫描文本,逐个读取输入字符.从状态0开始,根据当前状态和输入的字符,采用goto和failure函数转移到下一个状态,当到达状态的output函数不空时输出匹配模式。AC算法模式匹配的时间复杂度是0∽),而且与模式集中模式串的个数和每个模式串的长度无关。无论模式串尸是否出现在丁中,丁中的每个字符都必须输入状态机中,所以无论是在最好情况还是最坏情况下AC算法模式匹配的时间复杂度都是O(n)。包括预处理时间在内,AC算法总时间复杂度是D阶2),其中M为所有模式串的长度总和【381。 第四章蜜罐诱捕模块的设计与实现具有蜜罐诱捕功能的联动入侵检测系统的研究与实现本章首先对系统中蜜罐诱捕模块的运行原理进行分析,随后阐述了该模块的总体运行流程,详细介绍了该模块各重要组件的设计与实现,最后介绍了对于动态连接的处理逻辑及相应诱捕服务啻争模拟。4.1蜜罐诱捕模块的分析蜜罐诱捕模块是系统完成自身初始化和网络初始化之后首先导入的模块。其运行原理如图4.1所示。诱捕模块匾圈[函匡亟习扫描端口开放端口请求响应发送响应攻击者匝匹翻图4.1蜜罐诱捕模块运行原理模块在自身初始化后进入等待连接状态,等待外界随时进入的连接请求。模块并没有通知网络上其它主机本身服务的存在,因此原则上,所有请求与系统的连接都是可疑的。攻击者可有两种类型:一种是通过自动扫描工具对网络中存在的活跃主机进行扫描以获取开放端口服务列表,进而查找相应漏洞进行攻击;另一种是网络中某主机因感染病毒,病毒程序等恶意代码而扫描网络企图感染其它主机以达到传播的目的。系统在收到攻击者连接请求、确定攻击者要连接的端口号之后开放该端口,并根据自身是否能够模拟出该端口对应的服务进行响应:若可以模拟出,则模拟该服务,向攻击者发送虚假的响应信息以欺骗攻击者;若不能模拟出该服务,则发送空响应迷惑攻击者。在系统接收攻击者发送过来的攻击信息后,系统会记录攻击者本次攻击信息以待分析,从而实现对攻击者的主动诱捕。4.2蜜罐诱捕模块的总体设计蜜罐诱捕模块运行的主体流程如图4.2所示。对图中各部分说明如下:(1)模块初始化。诱捕模块的启动运行阶段需要root权限,定义uidt类型的变量user—id和gid_t类型的group_id用以代表系统运行的权限,并初始化为0,表示初32 具有蜜罐诱捕功能的联动入侵检测系统的研究与实现第四章蜜罐诱捕模块的设计与实现始化时具有root权限;定义模块的响应目录及明确模块要处理的信号。图4.2模块运行主体流程(2)配置模块。配置模块包括四部分的工作:解析系统初始化时保存的命令行输入参数、解析用户配置文件中蜜罐诱捕模块相关信息、载入默认响应文件及设置信号处理器解析配置文件由子函数analyzeconfig/etc/honeyids/honeyids.conf。诱捕模块运行时会首先检查该文件,从中获取用户预配置的相关信息;载入响应文件由loadresponses0子函数完成。信号处理器的设置由setsignal函数完成。.handlers0(3)开始持续监视外部进入的连接及调用wrapper处理。模块设计了调用函数startmonitor(),在其中使用了Libpcap库函数捕获开发包以实现连接监视。定义一个packett类型的全局指针,定义一个Uchar类型的pcap变量,用于指向数据链.offset路层数据帧中去掉头信息后的负载数据;循环捕获数据包时,每当捕获一个数据包,就调用Swrapper0回调函数对捕获到的数据包进行操作。若start函数执_monitorO行时出现差错,则系统释放所占资源,程序结束运行。从以上系统运行的主体流程看,对入侵的主要处理是在服务器wrapper中进行的。4.3服务器wrapper的设计对网络数据包的处理在服务器wrapper部分完成,swrapper()是模块对捕获的网络数据包进行处理的主函数。其设计流程如图4.3所示。其具体设计如下:(1)分析IP数据包的负载。在IP数据包中,可能负载的是TCP、UDP或ICMP的数据。通过从捕获的网络数据包中提取出IP头信息,分析其中的协议位:①若为UDP:fork出一个子进程处理,蜜罐系统调用socket(AFDGRAM,O)函数创建出数据报类型的套接字,并随后调用setsoekopt()函数设置套接字属性SOREUSEADDR,以允许重用本地地址。调用bindOi函数把服务器地址与创建的套接字进行绑定。 第四章蜜罐诱捕模块的设计与实现具有蜜罐诱捕功能的联动入侵检测系统的研究与实现②若为TCP:fork出一个子进程处理,蜜罐系统调用socket(AF_INET,SOCK—STREAM,O)函数创建出字节流类型的套接字,并随后调用setsockopt0函数设置s套接字属性SO—REUSEADDR,以允许重用本地地址。调用bindO函数把服务器地址与创建的套接字进行绑定。(2)持续监视外部进入的连接,循环等待连接和并进行相应的诱捕处理。UDPlJ儿r开始UDP动态服务开始TCP动态服务lfork子进程处理lfork子进程处理l上创建UDPSocket}创建TCPSocket上Listen●等待和处理连接4.4诱捕处理逻辑设计图4.3服务器wraper运行流程I等待连接lI调用select处理I/O输出错误初始化同陋收TcP连接请求I连接UDPScoke山获取对方端点,f,l处理连接I图4.4连接等待循环的设计蜜罐诱捕模块使用循环的方式进行连接等待和处理诱捕到的连接。该部分的逻辑设计分为连接等待和连接处理两部分。连接等待部分逻辑流程设计如图4.4所示。 具有蜜罐诱捕功能的联动入侵检测系统的研究与实现第四章蜜罐诱捕模块的设计与实现在~个无限循环中,对I/O的处理采用VO复用select模型【39】。定义一个fdset类型的rfds文件描述符集合,并定义一个砬类型的listen__filediscripter变量标识监听的套接字接口。调用FD_SET(1isten__file_discfipter,&rfds)将listen_filediscripter添加到rfds中。设置select的等待时间为2秒。定义int类型的isestablished变量用于表示连接是否建立。具体运行流程如下:(1)调用select模型处理I/O,保存返回值。(2)判断select调用的返回值。①若为.1并且elTll0为EINTR:表示select0系统调用失败,调用strerrorO函数输出错误信息,退出循环;②若为0:表示在预设的等待时间里没有连接请求,退出循环。③默认:返回值大于0,表示有连接请求。初始化Intrusion记录,构造Intrusion记录结构如图4.5所示,将本机和对方的口地址和端口以及连接时间导入Intrusion记录结构体中。Intrusion结构体由s—connect、download、s_payload组成,s—connect记录了连接双方的IPv4地址、端口、使用的协议及负载信息;download记录了下载类型、对方的IP和端口、使用的用户名和密码、下载的文件、使用的协议和负载信息;Spayload记录负载信息。structsconnect图4.5Intrusion记录结构(3)判断连接使用的协议:①若为TCP-直接调用accept函数接受连接请求,设置is—established标志为1,表示已经建立连接。②若为UDP:调用connect函数建立连接,调用getpeemameoi垂i数获取对方端点3S 第四章蜜罐诱捕模块的设计与实现具有蜜罐诱捕功能的联动入侵检测系统的研究与实现的信息,设置is—established标志为1。(4)处理连接。连接的处理由disposeconnection0完成。连接的处理流程如图4.6所示。连接的处理仍然采用一个无限循环。对I/O的处理再次采用I/O复用select模型。具体流程如下:图4.6连接处理(1)调用select模型处理I/O并保存返回值(2)判断select调用的返回值。①若为一1并且errno为EINTR-表示select0系统调用失败,调用strerror0函数输出错误信息,退出循环;②若为O:表示在预设的等待时间里没有有效数据,退出循环。structdefaultresponseDOrt131"ntocolSlZe*resoonse*next图4.7defaultresponse结构体③默认:返回值大于0,表示有数据。发送默认响应。定义一个defaultresponse结构体指针链表currentresponse,并将预先设计好的各响应文件导入到该链表中,响应信息的结构类型如图4.7所示。发送默认响应时,首先根据连接请求的端口在响应36 具有蜜罐诱捕功能的联动入侵检测系统的研究与实现第四章蜜罐诱捕模块的设计与实现链表中查找对应端口的响应信息,若有对应的响应信息,则发送该响应;若没有找到响应文件,则发送一个换行标记表示发送一个空响应。(3)读取数据。调用read系统调用从套接字读取数据,并将读取的数据追加到intrusionstring中。(4)处理数据。将intrusion保存到类型的结构体变量的.stringIntrusiondownload.dpayload.data中;记录攻击的结束时间;‘将Intrusion类型的结构体变量中保存的信息存入日志文件。4.5诱捕服务的模拟诱捕模块启动后监听连接到本机的任何端口。对于特定的服务端口如FTP21、HTTP80、SMB445等,预先设计了特定格式的响应文件用于模拟这些服务。目前诱捕模块提供21、25、80、135、139、445等端口服务的模拟。对于25端口SMTP服务,模块模拟Postfix响应信息;对于80端口HTTP服务,模块模拟IIS6响应信息。随着诱捕模块开发的完善,会提供更多端口服务的模拟。 第五章联动入侵检测模块的设计与实现具有蜜罐诱捕功能的联动入侵检测系统的研究与实现本章首先对系统中联动入侵检测模块分析并介绍了其架构设计,紧接着分析了该模块运行的主体流程,进而介绍了模块中各组件详细实现流程,并阐述了基于NFA的AC多模式匹配算法的实现,及各种预处理组件的设计与实现。5.1联动入侵检测模块的分析与架构设计联动入侵检测模块是整个系统的关键部分,该模块实时检测网络中的数据包,通过监测网络数据流了解网络运行状况,对网络中发生的入侵进行日志记录及警报。该模块同时与Netfilter/iptables防火墙相互配合实现联动,以控制网络中数据包的进出,从而实现对内网与外网问通信的控制。该模块是对传统入侵检测的有效改进,并按照公共入侵检测框架规范开发和设计,具备良好扩展性。该模块体系结构如图5.1所示。图5.1联动入侵检测模块体系架构模块的体系结构分为如图5.1所示的几个部分。模块使用网络数据包捕获组件捕获网络数据包,并分别传递给预检测组件和协议解码组件。预检测组件完成对数据链路层和网络层可能发生的入侵的检测,协议解码组件完成从网络层IP协议到应用层各种协议的解析,将网络数据包中的数据传递到入侵分析组件。入侵分析组件在导入预先配置的规则文件后对数据内容进行模式匹配,分析各种网络包的数据负载中可能包含的入侵信息。规则库的规则来源于开源社区贡献的规则及管理人员分析蜜罐诱捕模块记录的日志后总结出的规则。若预检测组件和入侵分析组件发现可能的入侵信 具有蜜罐诱捕功能的联动入侵检测系统的研究与实现第五章联动入侵检测模块的设计与实现息,则利用记录和警报组件记录入侵信息并产生警报信息,之后联动处理组件根据规则策略判断是否丢弃或传递当前处理的网络包,并决定是否发送响应网络包。5.2模块主体运行流程与初始化联动入侵检测模块的主体运行流程如图5.2所示。模块初始化竺阿赢L———广I成功失败。——主一一卜—一创建输出组件L——————r—一l成功.主l创建联动组件导入预检测组件导入规则文件设置包解析器二匹解析数据包并检测入侵联动处理图5.2联动入侵检测总体流程图模块在初始化后创建网络数据包检测引擎,之后创建输出组件用以日志记录及检测到入侵后输出警报信息。随后创建联动组件,实现与Netfilter内核模块间的通信。模块在对网络包中数据进行详细的分析和模式匹配前,导入预检测组件以对在数据链路层、网络层及传输层可能发生的频繁入侵进行先期检测。在导入规则文件后,模块对数据包按照协议分别解码并分析网络数据包内容,若发现入侵,则输出警报信息。最后将网络包传送到联动处理组件,联动处理组件从而根据一定的策略接收或丢弃此包,并决定是否发送响应包。若在创建检测引擎、创建输出组件或设置包解析器时失败,则输出相应的错误信息并退出系统。系统导入蜜罐诱捕模块后,进而导入联动入侵检测模块。入侵检测模块的初始化39 第五章联动入侵检测模块的设计与实现具有蜜罐诱捕功能的联动入侵检测系统的研究与实现主要完成如下工作;(1)定义并初始化入侵检测模块所用的变量。这些变量包括:用于捕获的网络包的当前索引指针,用于指向包负载数据的指针,用于联动的包丢弃标志,用于信包统计信息的结构体,用于指向捕获的数据包的指针变量等。(2)设置模块的警报文件的路径及文件名。默认路径设置为/var/log/honeyids,默认警报文件为honeyids.alert。(3)获取先前系统初始化时建立的Libpcap句柄,并设定包处理函数以处理Libpcap捕获的网络数据包。(4)设置入侵检测模块的检测选项。将模式匹配的算法设为ACNFA。并设置事件队列的最大个数为5。5.3包内容检测引擎的创建对于网络层和传输层,主要有IP、TCP、UDP和ICMP四种常用协议。在调用包解析器解析出包负载数据获得其数据内容的指针后,需要调用包数据内容检测引擎对数据进行模式匹配,以检测出其中包含的潜在威胁。模块在此建立一种端口.规则映射结构PR.MAP用于将规则在内存中分组,该结构的设计如图5.3所示。在该结构中,分别为源端口和目的端口分配最大端口数65536个PORT-GROUP类型的单元。PR-MNumDslRulesPR.MNumSrcRulesPR.MNumGenericRuRPR-MNumDstGroupsPR.MNumSrcGroups$SrcPoft[MAXPORTS}DstPon[MAXPORTS牛PR-MGeneric:PoIU’GROUPPORTGROUPPORTGRoUP图5.3PR:MAP结构体其中PORTGROUP的结构如图5.4所示。每个PORTGROUP中保存了对应于该端口的规则特征信息,并根据规则是针对协议首部信息还是既有首部信息又有数据负载的两种情况分成有内容和无内容两条链表。包内容检测器根据协议的种类为每个端口建立四条检测链表,进而从规则文件中导入相应的规则按照协议类型进行分类,依次将相同协议的规则编连到相应的检测链表上。检测引擎的检测策略如下:(1)分别建立IP、TCP、UDP和ICMP对应的检测链表,分配内存。(2)进行内容规则匹配。对数据包中负载信息在内容列表中进行模式匹配,若 具有蜜罐诱捕功能的联动入侵检测系统的研究与实现第五章联动入侵检测模块的设计与实现发现入侵,则将相应信息发送到事件输出队列等待输出警报信息。(3)进行无内容规则匹配。无内容规则检查网络包首部区域以发现不正常的信息。由于仅对网络包中相应协议首部信息检查,故该检查比(2)中检查迅速。RULENODE结构体十rnNextmRuleData奉rnYext+portgpHeadiRuleNodelDmRuleData·rnNext宰portgpTailiRuleNodeIDmRuleData幸portgpCuriRuleNodelDpgContentCount*portRpHeadNC幸rnNext奉portgpTailNC牛rnNextmRuleData木portgpCurNC+rnNextrnRuleDataiRuleNodeIDpgNoContentCountmRuleDataiRuleNodelD奉portgpPatDataiRuleNodeIDAveralZeLengthMinLengthNOTRULE_NODE结构体MaxLenIgthI木nextl幸pgNotRuleList-liPoslportgpCountportgpNOEventspgOEventsPORT—GROUP结构体图5.4PORT_GROUP结构体5.4检测规则鉴于Snort[40l的规则的开放性、更新及时性及强大的开源社区支持,系统的入侵检测模块使用经过改进的Snort规则文件,其中的改进是对Snort规则中部分入侵属性特征的规则动作进行修改,以配合入侵检测的联动响应组件有效控制网络。下面首先分析Snort规则。5.4.1Snort规则分析Snort使用了一种简单、灵活、高效的规则描述语言。Snort规则可以划分为两个逻辑部分:规则头(RuleHeader)和规则选项(RuleOption)。规则头包含了规则动作、协议、m源地址和目的地址,子网掩码以及源端口号和目的端口号等信息;规则选项包含警报信息及用于确定是否触发规则响应动作而需检查的数据包的详细信息。规则头主要由下列字段的信息组成【41l:.41 第五章联动入侵检测模块的设计与实现具有蜜罐诱捕功能的联动入侵检测系统的研究与实现(1)规则动作。规则动作定义了在一个数据包满足所有在规则中指定的属性特征的情况下,所应采取的行动。它位于规则的首位,在Snort规则中定义了3中可能的动作类型:◆Alert使用选定的报警方式生成警报信号,然后记录该数据包。◆Log记录该数据包。◆Pass忽略该数据包。(2)协议。规则中的下一个字段为协议字段。目前主要支持对TCP、UDP、ICMP和P四种协议进行分析来发现可疑行为。(3)IP地址。规则头的下一个字段主要用来处理给定规则的IP地址和端口信息。关键字any表示任何地址。相关地址以直接的数字地址和网络掩码(无类别域问路由CDIR块)表示。(4)端口号。端口号可使用多种方法进行指定,包括any关键字的指定、静态端口定义、范围定义和求反操作符指定等。any关键字指定的端口为通配符值,用来表示所有的端口号。静态端口由某一单独端口号来指定,如80为HTTPWeb服务端口等。使用范围定义的端口值用范围操作符“:”表示。范围操作符的使用有多种形式,对应的含义也不相同。如1:1024表示端口号的范围为1到1024,:7000表示端口号小于或等于7000,600:表示端口号大于或等于600。端口求反指定使用求反操作符“!"表示。(5)方向操作符。方向操作符“一)”指示规则所使用的流量方向。位于方向操作符左侧的IP地址和端口号用来指示来自源主机的数据包流量,位于右侧的部分则指示来自目的主机的数据包流量。还有一种称为“双向操作符"的符号定义,表示为“()":双向操作符表示任一地址/端口对视为源地址或者目的地址均可,适合于需要同时记录并分析对话双方流量的场合。Snort规则选项的设计将易用、灵活性结合起来。所有的Snort规则选项之间都使用分号“;”来分隔。规贝燧项中参数之间使用冒号“:”隔离。在Snort中存在21中规则选项关键字,如下所示:◆msg在警报信号和数据包日志中显示一条消息。◆log将数据包记录到用户指定名称的文件,而不是标准输出文件。◆m测试IP数据包的TTL字段值。◆id测试P数据包分组的ID字段是否等于指定值。◆dsize测试数据包的负载段大小是否等于指定值。42 具有蜜罐诱捕功能的联动入侵检测系统的研究与实现第五章联动入侵检测模块的设计与实现◆content在数据包负载中搜索指定模式。◆offset选项content的修饰符,设定模式搜索的起始偏移量。◆depth选项content的修饰符,设定某一指定模式匹配尝试的最大搜索深度。◆nocase选项content的修饰符,在进行字符串模式匹配时,不区分大小写。◆flags测试各种TCP标识值。◆seq测试TCP序列号字段是否等于指定值。◆ack测试TCP确认字段是否等于指定值。◆itype测试ICMP类型字段是否等于指定值。◆icode测试ICMP代码字段是否等于指定值。◆session转储某一指定会话的应用层信息。◆icmp测试字段是否等于指定值。..idICMPEchoID◆icmp测试序列号是否等于指定值。◆..seq监控IPIC选M项PE字c段hoipoption中特定代码的出现情况。◆rpc监控RPC服务中特定应用程序/过程的调用情况。◆resp激活响应选项(如切断连接等)。◆content.1ist用于同时指定多个content选项。5.4.2规则的导入本系统中入侵检测模块使用改进的Snort规则。根据规则中事件威胁的严重程度,系统将包含高危入侵特征的规则的默认策略改为abandon或refuse以替代原来的alert动作。联动模块在处理abandon动作时,除了输出相应警报信息外,还通知Netfilter内核模块丢弃该网络包,以消除潜在的威胁;refuse动作除完成abandon的功能外,还根据TCP或ICMP协议利用Libnet发送相应的TCPReset包或ICMP端口不可达控制包以切断网络连接,从而实现对网络的有效控制。系统创建规则链表和导入规则内容到链表中的过程如下:(1)分别创建activation、dynamic、pass、abandon、refuse、alert、log类型的规则链表。每条链表中分别包含IP、TCP、UDP和ICMP类型的规则树节点。规则树节点的结构与Snort中结构相同。(2)将规则链表的顺序调整为activation、dynamic、pass、abandon、refuse、alert、log。(3)读入并解析规则文件,逐行读入规则文件并分别发送到相应的规则解析器,43 ㈤掣竺篡詈篙霉冀。嚣妻祟墓嚣黧篡可判断口量零兰篓艨焉差罢盏?舯船⋯刊”项锻、茎竺麓戮篙嚣篇裂茹踟可选粮瞒c12二竺雩:翟篡墨嚣鬻手蒹。蒜蠹磊翥i格的源这些选紧兰篓篇安黧黧焉淼。州嘴浅干删蝴一师⋯‘站选孵,黧裟慧黑:包中的数据部分封装㈣CP、UDP(3)判断IP负载的协议:通常状况下,IP包甲酮裂蝴口p刀划裉刚届一.44 具有蜜罐诱捕功能的联动入侵检测系统的研究与实现第五章联动入侵检测模块的设计与实现或ICMP报文。通过解析鉴别IP首部的协议位,可知道IP数据部分封装的是何种协议的报文。若为TCP,则调厨TCP解析函数解码TCP报文;若为UDP,则调用UDP解析函数解码UDP报文;若为ICMP,则调用ICMP解析函数解码ICMP报文。(4)分析D负载数据:根据3判断的结果分别调用UDP、TCP或ICMP的解码函数解析UDP、TCP或ICMP协议。分析UDP、TCP和ICMP报文的首部信息,获取其负载数据,并用指针保存下来。对于UDP协议报文,系统在分析其首部信息后保存其中的源端口和目的端口;对于TCP报文,系统分析其首部信息后保存其中的源端口和目的端口,并分析其中的选项。ICMP报文分析待详解。在包解析器对协议解析完成之后,检测引擎对包中数据进行模式匹配,检测潜在的威胁。检测流程如图5.6所示。嗣判断IP负载协议~!竺[在TCP规贝【列表中检测默认f‰UDP列表中检测:IP规则j表中检测图5.6包检测示意图在UDP规则列表中检测(1)调用包解析函数解码包。包解析函数在前面已经设置好函数指针,这里调用指针指向的函数。(2)将包负载中的数据与预先导入的规则进行模式匹配,检测潜在的威胁。从网络层开始检测。分析IP负载中的数据的协议类型:若为UDP,则调用相应函数在UDP规则类表中进行模式匹配,之后在口规则列表中再进行模式匹配检测入侵。若为TCP,则调用相应函数在TCP规则类表中进行模式匹配,’之后在IP规则列表中再进行模式匹配检测入侵。若为ICMP,则调用相应函数在ICMP规则类表中进行模式匹配,之后在IP规则列表中再进行模式匹配检测入侵。45 第五章联动入侵检测模块的设计与实现具有蜜罐诱捕功能的联动入侵检测系统的研究与实现若为其他,在IP规则类表中进行模式匹配,检测入侵。5.6联动组件的设计与实现联动组件利用Netfilter的Libipq通信机制实现应用程序与内核防火墙模块的通信,从而实现入侵检测模块与Netfilter/iptables防火墙之间的联动。联动组件的实现流程如下:(1)创建对应于IPV4协议的mQ旬柄。通过调用ipq_create_handle(0,PF_INET)初始化Libipq,并将旬柄绑定到ip_queue使用的网络连接套接字。(2)设置mQ的运行模式为信包复制模式。调用ipqsetmode(ipqh,IPQ-COPY_PACKET,PKT_BUFSIZE)函数发送一条消息给ip_queue,从内核复制数据信包到用户空间。(3)初始化IS结构体。IS结构体的各成员变量记录了系统需要通知Netfilter对包要采取的动作策略。IS结构体如图5.7所示。abandonrefusereplaceprotocol图5.71S结构体(4)构造Libpcap句柄。由于iptables不提供数据链路层的接口,因此调用pcap_open_dead(DLT_RAW,SNAPLEN)构造一个Libpcap句柄,以传递Libpcap从数据链路层捕获的数据。(5)构造用于联动响应的数据包。数据包的构造需借助Libnet开发包完成。调用libnet_build_tcp0构造包含TH_RSTITH_ACK重建连接和确认序号控制信息的TCP包;调用libnet_build_icmp,unreach0构造网络不可达的ICMP包;调用libnet_.build_ip0将TCP包和ICMP包封装在IP包负载中。借助Libipq从内核的Netfilter模块获取数据包详细流程如图5.8所示详细设计流程为:(1)重置IS结构体。调用Reset/SON数将IS结构体中各成员置为0。(2)读取数据。创建ipq_handle结构体类型的句柄指针ipqh,并调用ipq__read(ipqh,bur,PKTBUFSIZE,1000000)读取数据,并保存返回值。(3)判断返回值:若返回值小于0,表示读取数据失败,调用ipqerror函数显 具有蜜罐诱捕功能的联动入侵检测系统的研究与实现第五章联动入侵检测模块的设计与实现示出错代码;若返回值等于0,表示读取数据超时,检查是否有信号量变化;默认正常情况下返回值大于0,继续判断读取的数据包的类型。图5.8lpqloop示意图(4)判断数据包类型:若为NLMSGERROR,表示Netlink传输过程中出现差错,调用ipq_get__msgerr获取出错信息。若为IPQMPACKET,表示数据包传输成功。数据包中包含元数据和负载数据,调用ipq_get__packet读取数据包并返回到ipq__packetmsgt类型的结构体变量中保存。(5)将ipq__paeket__msg_t格式的包转换为pcap类型的包。’通过传递指向数据部分的指针,可将ipq__packet_rnsg__t格式的包转换为libpc印可处理的格式包。(6)检测数据包的内容。对包进行分析检测后,根据相应策略对包采取相应的动作。其具体流程如图5.9所示:(1)判断是否应该通知Netfilter丢弃的包:若是,则将此包设置为待丢弃;若不是,则通知Netfilter接收此包。(2)继续分析是否应拒绝此包的连接:若是,则重置套接字接口,向另一端发送一个TCP.Reset类型的包或者ICMP.Unreachable类型的包,断开连接;若不是,则通知Net-filter接收此包。(3)默认情况通知Netfilter接收此包。47 图5.9包处理示意图5.7基于AC状态机的多模式匹配算法的设计实现tmelistmemUeUememnextstatememfailstatememmatchlistmem内部模式链表胃.{·neXt卜幸data水next木nextnextstate+nextkeynext———state木nextAho-Corasick状态机结构图5.10AC_NFA状态机结构48模式列表薹一墨嚣~一~一一~一~ 具有蜜罐诱捕功能的联动入侵检测系统的研究与实现第五章联动入侵检测模块的设计与实现入侵检测模块使用的模式匹配算法是经过改进的基于NFA和AC算法的ACNFA算法。该算法占用空间小,而时间需求与使用DFA相差无几。系统用0x脚表示失败状态,规定字母表的最大单元数为256,用无符号整型变量表示状态。系统设计了如图5.10所示的结构体表示ACNFA状态机结构。其中NFAPatterns指针指向用于表示内部模式结构体链表,NFATransTable指向用于表示状态迁移节点的结构体列表,NFAMatchList指向表示模式的结构体列表。入侵检测模块通过调用NFA数添加一个模式到模式列表中。首先.AddPattem()i蚕_1分配一个NFA类型的结构体节点,进而为其分配内存,然后将该节点中数图5.11NFA构建流程据指针指向参数中数据指针指向的数据。模块通过调用NFA_CompileO函数将模式编译进一个NFA状态机中。编译具体流程如下:(1)为NFATransTable分配内存,建立bnfatransnode结构体类型的节点,实现基于状态迁移表的列表。49 第五章联动入侵检测模块的设计与实现具有蜜罐诱捕功能的联动入侵检测系统的研究与实现(2)为NFAMatchList分配内存,建立NFA—matChnodet结构体类型的节点,实现一个对应于每个状态的匹配列表。(3)添加每个模式到状态表中,形成一个关键字歹!l表。(4)建立一个失败状态表,并为其分配内存。(5)创建NFA。NFA的创建过程如图5.11所示。(6)释放迁移列表。图5.12循环内查找流程模块调用NFASearch0函数实现字符串的查找,从而完成模式匹配。查找时该函数将从调用者中传递一定数量的参数。在传递参数后模块调用循环进行查找,循环的出口是要查找的字符数已经超过规定的字符长度。在循环内进行查找的算法如图5.12所示。在循环中首先会定位参数字符T在字母表中的位置,并获得相应指针。进而获取Next状态到参数state中,判断字符T的状态是否为0并且state为非O,若是,则获取Fail状态到state中:或不是,则将T的状态赋予state。判断state是否为非0,若为0,则表示在此过程无法匹配到;若为非O,则在匹配列表中获取state节点的指针。判断该指针是否为NULL,若空,则返回获取下个字符在字母表中的位置;若非 具有蜜罐诱摘功能的联动入侵检测系统的研究与实现第五章联动入侵检测模块的设计与实现空,则获取该节点保存的数据,并比较与参数传递来的信息的异同,若相同则返回匹配信息;若不同,则获取下个节点指针继续在匹配列表中判断。5.8ARP欺骗预检测组件的设计与实现对于某些危害大、不便于模式匹配、需要尽快检测出来的入侵行为,专门设计了预检测组件在对包负载数据进行模式匹配前进行检测。系统在这里导入这些预检测组件。ARP欺骗的危害性极大,轻则使局域网内主机无法提供和获取正常的网络服务,重则丢失数据甚至机密信息被窃,因此当发生ARP欺骗攻击时如何尽快检测出攻击是抵御ARP欺骗攻击的一个重要环节。本系统设计的预检测组件,可用于检测交换网中不正常的ARP通信、恶意覆盖主机ARP缓存信息的ARP攻击、单播ARP请求和特殊的ARP映射。针对某些ARP欺骗源如病毒、自动攻击工具等会囱局域网发送广播欺骗包的问题,本组件不仅检测对于本机与网关间的ARP欺骗,也检测对网络中其他主机的ARP欺骗,从而保护了整个交换式局域网。系统在数据链路层捕获网络包后将首先交给该组件过滤,以检测是否发生ARP欺骗。5.8.1检测原理在交换网中,将上层信包封装成帧时,以太帧首部和ARP首部都会包含源MAC地址。其中以太帧首部中的源MAC地址是发送方的真实MAC地址,而ARP首部的发送方MAC地址可以通过特殊加工修改为虚假MAC地址,因此通过比较以太帧首部有关字段和ARP首部有关字段的异同可以检测到不正常的ARP帧。在交换网正常运行时,安全管理员事先生成~份网络中各主机的IP—MAC地址映射表。检测程序利用用户提供的IP.MAC地址映射表,对涉及映射表中IP地址的包进行检查,通过比较源硬件地址和用户提供的硬件地址,如果不匹配则产生警报信息。触发警报的通常是一个用于涉及远程主机ARP缓存条目改动信息的ARPREQUEST或I也PLY包。5.8.2数据结构的设计rE~lI,Ij-tu.nⅨl广+协议地址长度l目的MAc地址源MAC地址帧硬件协议OP发送端目的类型MAC地址IP地址MAC地址TP地址62126z1.—一以太网首部叫卜———一28字节AI冲请求/应答图5.13以太网的ARP请求或应答包格式5l 第五章联动入侵检测模块的设计与实现具有蜜罐诱捕功能的联动入侵检测系统的研究与实现在交换网上解析口地址时,ARP请求和应答分组的格式如图5.13所示。针对此分组格式,设计如图5.14所示的数据结构用于解析分组。typedefslructEthemet_Headertypedefstruct_ARPHeadertypedefstruct_EthernetARP{u—.int8—.tethernet_dst[6];uintl6_tarp_hardtype;ARPHeadrea_hdr;u——int8——tethernet.sre[6];u_intl.6_tarp_protocol;u—.int8——tarp_s_mac[6];u.intl6_tethemet_type;u—inl8-tarp_hlength;u—int8一tarp_s_ip[4];}EthemetHeader;u——int8—.tarp__p_length;u—.int8..tarpd_mac[6];u_intl6_tarp...op;u—.int8..tarp__d_mac[4];’ARPHeader;}EthemetARP;图5.14以太网ARP分组数据结构其中结构体EthernetHeader用于表示以太网首部,结构体ARPHeader用于表示ARP包首部,结构体EthemetARP用于表示28字节的ARP请求/应答包。用户提供的IP.MAC地址映射表中的数据表示格式为IP:MAC,如192.168.0.1:∞.16.oo.11.11—11。包含多条主机IP.MAC地址映射的格式表设计如图5.15所示,其链表结构用于保存各主机的IP与MAC地址映射关系。结构体IPMac保存了_Entry单台主机的IP和MAC地址,结构体IPMacListNode表示主机节点,多个IPMacListNode合成一条IPMacList链表,此链表记录着交换网内正常运行时多台主机的IP与MAC地址的对应关系。IP——Mac—.Lis五习可函可硼生IPMaeListNode*ipmacentryl*nextllIp_addrIMacaddr[6】lPad[2】IP_Mac_Entryip_macentryI丰next⋯⋯Ip_addr固图5.15IP与MAC映射链5.8.3检测算法检测算法的流程如图5.16所示,详细的执行流程如下:(1)初始化:创建IP.MacList类型的静态链表,定义一个木plist指针指向该链表,将链表中各成员初始化为0;从用户指定的IP.MAC地址映射文件中读取各主机的IP与MAC地址映射关系,将各映射插入到链表节点中;初始化网络,准备截获网络帧。(2)嗅探网络帧:将网络接口卡的运行模式设置成混杂模式,嗅探每一个流经本接口的网络帧。(3)判断网络帧是否为ARP帧:解析并判断网络帧中硬件类型字段是否为以太 具有蜜罐诱捕功能的联动入侵检测系统的研究与实现第五章联动入侵检测模块的设计与实现:一一二———————————————__-——______-____-_-_---l_-。____--____.__.______。__.__.-_______-___----____··-I__________··-·_____-_-。。。。。。‘-。‘1’。’。‘’。’’’’’‘’‘’‘一网且协议类型是否为IP,op字段是否为1或2,即嗅探的帧是否为ARP请求/应答帧。如果不是ARP帧,忽略此帧,继续处理下一帧;如果是ARP帧,继续判断其中操作初始化否嗅探数据包是否为ARP包Ⅵ判断越心操作码瓣MACMAC库P违QtmSt]≈[REPLY首部源\l、地址与发送.1童一。立方地址l是否匹配/Il匹匹配配<匹配比较以太网首部源MAC地址与发送方MAC地址是否匹配不匹配比较是否与用户提供的映射文件中信息存在不一致比较以太网首部目的MAC地址与ARP包目的MAC地址是否匹配图5。16检测算法流程码op位。(4)判断操作码OP位:①若为REQUEST:比较以太帧首部源MAC地址与ARP报文中发送方MAC地址是否匹配。若不匹配,说明ARP报文中发送方MAC地址被修改过,输出报警信息,并说明以太帧首都源MAC地址与ARP报文中发送方MAC地址不一致;若匹配,则跳转到(5)继续执行。②若为REPLY:比较以太帧首部源MAC地址与ARP报文中发送方MAC地址是否匹配。若不匹配,说明ARP报文中发送方MAC地址被修改过,输出报警信息, 第五章联动入侵检测模块的设计与实现具有蜜罐诱捕功能的联动入侵检测系统的研究与实现并说明以太帧首部源MAC地址与ARP报文中发送方MAC地址不一致;继续比较以太帧首部目的MAC地址与ARP报文目的MAC地址是否匹配,比较过程与源地址的比较方法相同;若两次比较都匹配,则跳转到(5)继续执行。(5)检查ARP帧中源地址映射关系是否与用户提供的IP.MAC地址映射文件中的信息一致:(4)中检测的是同一以太帧内不同位置对应的MAC地址是否一致,用以判断以太帧是否被特殊修改过,但对于新加入计算机接入内网的情形无法检测。ARP帧中包含源MAC地址和IP地址的映射关系,原来所有正常主机的MAC地址和IP地址已被事先记录在IP.MAC地址映射文件中,通过比较ARP帧中源MAC地址和IP地址的映射关系是否存在于原用户提供文件中或与其保存的映射关系冲突,可判断是否有新加入用户进入内网或是否有内网用户擅自修改其主机IP地址与MAC地址的映射关系。在此过程中,若发现不一致,则说明交换网环境中有发生ARP欺骗的可能,发出攻击试图修改ARP缓存的警报信息;若一致,则返回到(2)继续嗅探处理下一个帧。5.9端口扫描预检测组件的设计与实现端口扫描预检测组件用于检测入侵者使用端口扫描侦查网络。入侵者通过端口扫描可确定一台主机支持何种网络协议和服务,进而根据不同的情况采取不同的手段。尽早检测出端口扫描可在初始阶段消除网络威胁。端口扫描预处理组件的检测流程如图5.17所示。详细设计流程如下:(1)初始化端口扫描检测组件框架。初始化时设置检测组件所要检测的协议类型,目前组件仅检测TCP协议类型网络包;建立表示和存储扫描者和被扫描者的数据结构,以便之后统计信息。(2)获取网络包。从前面网络数据包捕获组件获取指向数据包的指针,并传递到该组件相应指针变量中。(3)确定被扫描者和扫描者。通过解析IP首部相应位置的源口地址和目的IP地址,可以确定扫描者和被扫描者的IP地址。将其IP地址分别记录在相应的数据结构当中。(4)判断二者是否已建立连接:若已建立,则在相应数据结构中记录连接的数目,并记录连接的端口数目和范围。若未建立,则判断TCP首部的标志位。若标志位中仅含SYN,表示连接尚未建立,累加SYN计数器;若标志位中包含SYN和ACK,表示确认连接,记录连接数目。 具有蜜罐诱捕功能的联动入侵检测系统的研究与实现第五章联动入侵检测模块的设计与实现(5)判断相应数据结构中记载的信息是否已超过触发警报的阈值。模块规定阈值为100秒内连接20个端口或发送20个只含有SYN标志的TCP包则视为端121扫描。若检查相应结构中保存的数值超过该阂值,则产生端口扫描警报信息。输出扫描者和被扫描者的IP地址及端口号。若未超过阈值,则忽略该包,继续处理下一网络包。(6)判断完成之后继续循环处理下一网络包。图5.17端口扫描检测流程 第六章系统测试与结果分析具有蜜罐诱捕功能的联动入侵检测系统的研究与实现本章首先介绍测试目标和测试环境,接着相继测试了发生于应用层常规入侵的检测、发生于数据链路层的ARP欺骗攻击的检测、发生于传输层的端口扫描的检测及入侵检测系统与Netfilter/iptables的联动响应检测,最后分析了蜜罐诱捕功能模块的测试流程和测试数据,分析澳噜试结果并得出结论。6.1测试目标经过以上几章的分析和阐述,本入侵检测系统主要包括以下功能:分析网络包并解析出数据进而与规则中的特征进行模式匹配检测攻击;对ARP帧进行解析并检测ARP欺骗攻击;检测对端口的扫描;与Neffilter/iptables联动丢弃高威胁包、发送响应包切断入侵;对隐式或未知方式的入侵进行诱捕,分析日志记录结果。测试目标包括:观察系统各个模块和组件是否能够正常工作;能否实现协议解析、入侵检测及蜜罐诱捕的基本功能。使用Nessust43】钡!f试工具对应用层常规入侵检测进行检验;使用Dsniff[44】的ARP欺骗工具对ARP欺骗预检测组件进行检验;使用Nmap[45】端口扫描工具对端口扫描预检测组件进行检验;使用Tcpdump捕获联动响应数据包;使用Nessus扫描探测脚本对系统进行扫描探测,观察诱捕模块能否实现诱捕效果并分析其捕获数据的价值。6.2测试环境的建立测试环境的网络拓扑结构如图6.1。局域网通过路由器联入Internet,路由器与交换机间布置一台硬件防火墙。硬件防火墙之后有2个内网,分别使用二层交换机相连并接入2个相应的防火墙接口。在DMZ区和普通用户区分别有一台运行honeyids系统的主机连接到相应交换机,以实现对2个内网的监测;其中honeyIDSl监测普通用户区,honeyIDS2监测DMZ区。本测试环境既可作为实验室功能测验使用,也可部署于实际运行的公司或组织中。对于本系统测试,测试环境仅使用普通用户区内网完成,对运行于honeyIDSl主机蜜罐诱捕一联动入侵检测系统系统进行功能测试。这个普通用户区局域网IP位于192.168.150网段,默认网关地址为192.168.150.1。其中honeyIDSl主机的IP地址为192.168.150.111,操作系统采用Fedora8Linux平台,对其他主机不通知自身的存在:入侵测试者1主机的IP地址为192.168.150.79,操作系统采用WindowsXP平台;入侵测试者2主机的IP地址为192.168.150.101,操作系统采用Ubuntu7.04Linux平台。 具有蜜罐诱捕功能的联动入侵检测系统的研究与实现第六章系统测试与结果分析测试者1192.168.150.79图6.1测试环境网络拓扑168.150.111测试者2192.168.150.1016.3测试协议解析与模式匹配的入侵6.3.1测试目的测试系统能否正确从数据链路层到应用层依次正确解析出各层使用的协议,是否能正确定位出网络包中的数据,能否将数据与导入规则文件中的入侵特征进行模式匹配以检测出入侵,本测试是一个完整的基于规则的入侵检测过程。系统导入规则后解析出网络包中数据,进行模式匹配,如匹配则输出相应入侵的警报信息。6.3.2测试步骤(1)导入规则文件。规则文件使用的是Snort开源社区提供的web—iis.rules文件。该文件提供了对IIS相关漏洞进行攻击的特征信息。本次测试是对IISSamples漏洞攻击的检测,测试规则中的相关内容如图6.2所示。(2)利用Nessus工具检验。Nessus是专业的漏洞检查和扫描工具。本次检验使用测试者1主机,Nessus版本为Windows版本Nessus3.0.5.1BuildW321。对Nessus57 第六章系统测试与结果分析具有蜜罐诱捕功能的联动入侵检测系统的研究与实现alerttcp$EXTERNAL_NETany一>SHn■SERVERS$HTTPPORTS(msg:”WEB·IISiissamplesaccess”;flow:to_server,established;uricontent:”/iissamples/”;nocase;metadata:servicehttp;reference:nessus,11032;classtype:web--application--attack;sid:1402;rev:8;)图6.2规则文件相应内容的设置如图6.3所示,使用Nessus自带的针对WebServer插件集合中的IISSamples漏洞攻击插件进行检测。当Nessus检验系统时,将向honeylDSl主机发送包含IISSamples漏洞攻击信息的网络包。。攀删粥i鬻④Welcome日st.artScanTask圆VieWReportsOtherOptions毯)AddI"855Book隧;谨馘图囤圆一.SelectPIugjnstoLISe{f.==,⋯⋯,:⋯~一⋯⋯一。⋯⋯⋯⋯。⋯,⋯,⋯。⋯~。,::uSecurity卜fI--IIIS5.printerISAPI;^l’iChecks一;Ufilterapplied~j‘;广1UselessiIIs5.0SampleAPP‘}iservicesi团石磊i而sic而aih_回,Webseio黼}五五五ir—一堡{f口Windows;I-1IISdangerous。lWindows:巨·一samplefiles1.:口Nicrosoft;vI口IISper1.exeproblem◆iJ筐些璺曼旦里呈业坐iI!Copgrighto2003·2007TenableNeb.moAWSeCUrit!,.AIIrightsreserqed鲴SaV8’webtest图6.3Nessus设置(3)查看检测结果。6.3.3测试结果及分析系统检测结果如图6.4所示。对结果进行分析可以发现:系统能够检测到入侵,记录入侵发生的时间、入侵者的IPv4地址及端口号,入侵者进行了何种操作,并且系统列出了有关本次入侵的参考信息。因此可判断系统能够正确解析IP、TCP和HTTP等协议网络数据包,能够解析出TCP数据包的HTTP协议数据负载信息,能够正确提取负载数据信息并与预先导入的相应规则信息进行模式匹配,检测出其中的入侵信息,产生和输出警报信息。搂 具有蜜罐诱捕功能的联动入侵检测系统的研究与实现第六章系统测试与结果分析圈隧隧霾薤睫滋剿隧蘧麟激侧圜b1honeyidsA10rt:title:UEB—IISiissampiesaccessClassification:HebApplicationAttackPriority:itime2008/03/29-10:25:34.431481192.168.i50.79:2365一>192.168.150。iil:80TCPTTL:128TOS:0xOID:53731IpLen:20DgmLen:327DF青吉青AP肯1r霄Seq:Ox854ED903Ack:Ox80CA85C4Vin:OxFFFFTCPLen:20moreinformationPleasegotO[http://cgi.nessus.org/plugins/dump.php37id=ii032置薹二【v图6.4入侵检测警报信息6.4测试ARP欺骗预检测组件6.4.1测试目的测试ARP欺骗预检测组件对局域网中ARP欺骗攻击的检测。ARP欺骗发生在数据链路层,通常欺骗者发送ARPReply帧将自己伪装成局域网中默认网关,以改变被欺骗主机的网络包路径为经过自身网络接口后转发至网关,从而嗅探网络数据包以达到获取机密信息的目的。6.4.2测试步骤囵图匿root8上jp—desktop:“牟arpspoof—t192.168。150.1II192.168奎竺.150.10:i6:76:93:6e:4d0:b:db:dO:9d:e8080642:arPreplv192.168.150.1is—at0:i6:76:93:6e:qd0:16:76:93:6e:4d0:b:db:d0:9d:e80806q2:arPrePly192.168.150.1is-at0:16:76:93:6e:4d0:i6:76:93:6e:4d0:b:db:dO:9d:e8080642:arPreply192.168.i50.1is—at0:i6:76:93:6e:4d0:16:76:93:6e:4d0:b:db:d0:9d:e80806q2:arPreplvi92图6.5ARP欺骗攻击示意(1)系统配置文件中设置好IP—MAC匹配列表。本次测试仅对honeylDSl系统进行关于网关的ARP欺骗。在系统配置文件honeyids.conf中的相应部分加入一条针对59 第六章系统测试与结果分析具有蜜罐诱捕功能的联动入侵检测系统的研究与实现网关IP与MAC地址的对应关系:ARPSpoofDetecterhost:192.168.150.100:16:47:88:52:bf,使该预检测模块记住正确的网关的MAC地址。(2)使用Dsniff的arpspoof组件对目标主机进行ARP欺骗攻击。本次测试使用测试者2主机完成,欺骗测试时使用DsniffI具集中的arpspoof-F具。通过在测试者2系统中运行“arpspoof---t192.168.150.11192.168.150.1”命令,循环地向被攻击者(honeylDSl主机)发送ARPReply帧,以改变被攻击主机上AI冲缓存,使攻击者MAC地址与网关口地址形成对应关系,由此改变被攻击者的网络数据包发送方向(将发向网关的网络数据包发向攻击者2)。攻击过程示意如图6.5所示。(3)查看检测结果。6.4.3测试结果及分析图陆■雀叫越■盈甾越曲出戤盐麟豳篮戳hOneyidsar口s口00fdetectoralerts:cime2008/3/2915:30:33fakehost口0:16:76:93:6e:qdistryingtopretendash03t0D:16:q7:8a:52:b士192.168.150.1围I园i图honeyidsarpspoofdetectoralerts:time2006/3/2915:30:3q士akeh0St00:16:76:93:6e:qdistryingtOpretendashost0D:16:47:88:52:bf192.168.15D.1图6.6ARP欺骗攻击检测结果系统对使用Dsniff进行ARP欺骗的检测结果如图6.6所示。从图中可以分析出:ARP欺骗预检测组件能够检测出此次利用arpspoofI具的ARP欺骗攻击,系统该组件能够检测出利用arpspoof工具实施周期性的欺骗,并发出ARP欺骗的警报信息。警报信息输出了欺骗发生的准确日期与时间,实施ARP欺骗者主机的MAC地址及欺骗者主机想要伪装的IP地址。一般情况下在系统正常运行时管理人员会生成并保存一份正确的IP与MAC地址对应关系表。通过检查正常情况下MAC地址与IP地址的对应关系,可定位出攻击者的具体位置(IP地址)。若未提前保存过此表,也可通过利用某些局域网搜索工具(如IPBook)即时找到欺骗攻击者的IP地址。由此,安全管理人员尽快找到威胁的根源以解决网络中存在的问题。 具有蜜罐诱捕功能的联动入侵检测系统的研究与实现第六章系统测试与结果分析6.5测试端口扫描预检测组件6.5.1测试目的本节测试端口扫描预检测组件是否能够正确检测出局域网中发生的端口扫描。端口扫描是攻击者在未知环境中进行攻击行为的第一阶段。端口扫描者通过对一个或多个系统进行开放端口数目和号码的检测,以确定系统提供何种服务或猜测系统可能存在何种漏洞。目前该预检测组件能够检测出TCPconnect0扫描和TCP同步扫描(TCPSYN)。对于隐式扫描如秘密FIN数据包扫描、圣诞树(XmasTree)、空(Null)扫描模式【461,则需蜜罐诱捕模块辅助记录以分析出相应结果。6.5.2测试步骤图6.7Nmap端口扫描测试(1)本次测试使用测试者1主机完成,测试工具使用Windows平台版本的端口扫描工具Nmap,版本号为4.49。测试时通过运行Nmap命令“nmap—sT192.168.150.111"对honeylDSl主机进行TCPconnect0方式扫描。该扫描方式称为全开扫描,通过直接同目标主机进行一次完整的3次TCP/IP建立连接过程,建立标准TCP连接来检查目标主机的相应端口是否打开。扫描示意如图6.7所示。在上述命令运行后,Nmap将迅速对honeylDSl系统进行端口扫描从而得知系统开放的端口号,并判断出系统在相应端口提供何种服务。(2)使用Nmap进行TCP同步扫描(TCPSYN)。扫描时使用Nmap命令“nmap—sS192.168.150.111”。该扫描方式称为半开扫描,其工作流程与完整的3次握手类似,但在TCP三次握手时第三步发送RST包以取代ACK包要求中止连接。该扫描测试如图 第六章系统测试与结果分析具有蜜罐诱捕功能的联动入侵检测系统的研究与实现6.8所示。在上述命令运行后,Nmap将迅速对honeyIDSl系统进行端口扫描从而得知系统开放的端口号,并判断出系统在相应端口提供何种服务。但使用TCPSYN扫描的结果中端口数比TCPconnect0少。i图圆亚墨翟团蕊豳罂翟蕊嚣蕊戳嚣露翮i西面五忑磊■赢—磊瓦丽忑面面面焉鬲ji面F五西前网tartingNnap4.49R06(http://inseculIe.or9)at2008—04一Bt.|Tine≥!nterestingportsOil192.168.150.111:◆otshown:1709Closedports‘iORTSTATESERUICEji2/tcpopensshll/tcpopenrpcbindnCnddress:00:OB:DB:DO:9D:E8(DellESGPcbaTest)●蓦i鬟饔簿爹嚣i雾6.5.3测试结果及分析图6.8NmapSYN类型端口扫描测试圈囤国honeyidsportscandectorTime:08/04/02—2i:57:12.0q2682i92.168.i50.79一>192.168.150.11iTCPPortscanConnectionCOunt:6IPCoun七:1ScannerIPRange:192。168.150.79:192.168.150.79Port/ProtoCount:6Port/ProtoRange:2i:1723Time:08/04102-21:57:i2.0q3700192.i68.IS0.79一>192.168.150.iliOpenPortOpenPort:22Time:081041口2—21:57:12.12q619192.168.ISO.79一>192.168.IS0.111OpenPortOpenPort:111Time:08/04/02—21:57:53.3q030S192.168.150.r79一>192.168.150.111TCPPortscanConnectionCount:6工PCount:1ScannerIPRange:192.168.1S0.79:192.168.150.79Port/ProtoCount:SPort/ProtoRange:23:113图6.9端口扫描检测结果系统联动入侵检测模块的端口扫描预检测组件检测到端口扫描后输出如图6.9的_鬻翻/..,,,7露瞄匿一 具有蜜罐诱捕功能的联动入侵检测系统的研究与实现第六章系统测试与结果分析警报信息。限于篇幅原因,该图仅列出了结果的部分显示。从图中警报信息可以分析出,该组件能够正确检测出利用Nmap发起的TCPconnect0和TCPSYN类型的端口扫描,能够记录端口扫描发生的时间,并能确定扫描者和被扫描者的IP地址及扫描的端口范围。6.6测试联动响应组件6.6.1测试目的测试系统入侵检测模块在检测到高危入侵的时候能否通知Netfilter/iptables丢弃该网络包并做出响应发送联动响应包。发送响应包的目的在于切断TCP连接或阻止入侵者扫描网络,响应包是TCPReset包或者是ICMPUnreachable控制包。本节测试仅测试TCP响应包。6.6.2测试步骤(1)导入ip-queue内核模块。联动入侵检测模块的该联动功能需要LJnux内核导入ip_queue模块,联动入侵检测模块利用Libipq通过ip_queue内核模块与内核通信。在已编译完成的内核源码相应目录中通过输入“insmodip_queue.ko”命令导入预先编译完成的ip_queue内核模块。(2)设置网络数据流经过QUEUE目标。为使Netfilter能够有效控制网路数据包,需使网络数据流流向QUEUE目标。honeynet提供了一份rc.firewall脚本【471配置iptables以控制网络数据流。系统采用改进的FC.firewall脚本以控制网络数据流使其通过QUEUE目标。(3)导入refuse规则。对于Snort规则文件中包含高威胁性的规则特征,本文将其中的alert动作改为abandon或refuse,以阻断攻击。本节以“x86setuid0"shellcode【481为例进行测试。导入的规则文件特征信息如图6.10所示。refuseip$EXTERNAL—NETany一>$HOMENETany(msg:”SHELLCODEx86setuid0”;content:”IS017CD80i”;reference:arachnids,436;classtype:system—call-detect;sid:650;rev:9;)图6.10联动规则文件相应内容若系统检测到网络包数据负载中含有“B017CD80”的内容,则认定入侵者对系统进行“x86setuid0”shellcode入侵,入侵检测模块将发出refuse动作。(4)在测试者1主机上向honeyIDSl系统进行攻击。测试程序采用revenge.setuid.C[47】程序。 第六章系统测试与结果分析具有蜜罐诱捕功能的联动入侵检测系统的研究与实现(5)在honeyIDSl主机上监测捕获相应响应包。6.6.3测试结果及分析一File:i,Edit.’‘view,‘··T-e|rmina|:Tabs’HeIp‘,≯,、.“j一。r.础t_。二五,,一一一二⋯~j—jj7二,:五二刊-鼗o“I叠”:.童一一一_。一j一二、,£o⋯.。i。·,.二一!;二15:27:11.713882IP《toS8x8,ttl64,id2b42,offSeto,flagS【none】,ProtoTCP(6)∥,lenqth83)192。168.150.111.httP>192.1r68.150.79.telnetI-SR16843889:16843032(23L)win32767【!RSTPIeasestopC|’onnection\000】V图6.11捕获系统联动响应包在测试者1主机上向honeyIDSl系统发送包含shellcode的网络包之后,在honeyIDSl主机上监测捕获响应包。本次测试使用Tcpdump[491捕获TCP响应包。捕获结果如图6.11所示。从图中可以分析出,系统的联动组件能够在检测到指定威胁时发出预先指定的相应响应信息包,从而中断威胁的连接,保护网络的安全。6.7测试蜜罐诱捕模块6.7.1测试目的测试系统蜜罐诱捕模块能否对未知的网络连接和攻击主动诱捕,能否对其进行正确日志记录。本次测验使用Nessus进行测验,通过对比系统未运行和运行蜜罐诱捕模块Nessus两次检测结果的不同,判断蜜罐诱捕模块的欺骗效果。在Nessus检测系统之后,查看系统相关日志文件以检验该模块对网络连接的记录能力。6.7.2测试步骤(1)在系统未运行蜜罐诱捕模块时,使用Nessus进行检测。本次利用测试者1完成,测验时使用Nessus默认推荐的设置,该设置中包含对大多数常见漏洞的扫描探测。设置如图6.12所示。(2)在honeylDSl主机上运行蜜罐诱捕模块,继续使用使用Nessus进行检测,测验时使用Nessus的设置同(1)。(3)分别查看Nessus两次检测结果和蜜罐诱捕模块相应的日志记录,比较两次结果的不同。 具有蜜罐诱捕功能的联动入侵检测系统的研究与实现第六章系统测试与结果分析马g毫豳囤I澄@Welcome圄StartScanTask圆ViewReportsOtherOptions—voo⋯Jo·‘⋯。u⋯Jvu产o。:t·:’·一-uvo_二·’竹‘.EnablealIbutdangerousplugins弦withdefaultsettings(Recommended)rEnableallpluginswithdefaultsettings(Evendangerouspluginsareenabled)Chooseapredefinedpolicy(You。:一chnItI—IIc凸531jn3门凸Dnliri口ct-np,Copyrighto2003·2007TenableNebⅢo“Seouri竹.AIIrightsresented6.7.3测试结果及分析图6.12Nessus检测设置在系统未运行蜜罐诱捕模块时,在测试者l主机上使用Nessus检验honeyIDSl系统的摘要信息如图6.13所示。Hostbeingscarmed192.168。150.111ProgressOpenPortsNotesWarningsHoles97%6150图6.13未运行诱捕模块时Nessus检验结果系统运行蜜罐诱捕模块时,在测试者l主机上使用Nessus检验honeyIDSl系统的摘要信息如图6.14所示。Hostbeingscanned192.168.150.111ProgressOpenPortsNotesWarningsHoles85%S957822图6.14系统运行诱捕模块时Nessus检验结果在实际的测验中,系统开启诱蜜罐捕模块后攻击者的检查速度明显减慢,检查系统所需时间极大增加。攻击者检测时发现的漏洞明显增多,但这些漏洞都是系统的蜜65坠鼹瞪医一 第六章系统测试与结果分析具有蜜罐诱捕功能的联动入侵检测系统的研究与实现罐诱捕模块模拟出来的。比较图6.13和图6.14可知,系统的蜜罐诱捕模块可以较好的模拟一定数量的网络服务,对入侵者起到较好的诱捕效果。鼎黜逮躜瑟甄图翟础勰I冒2008一oq一0521:36:56]q2710.79:2902acc已P七ed.1f2008—0zt一0521:36:56]<>52D68.i50.79:520es七ab上ishect.1『2008—0q一052i:36:56】52口|0.79:520accepted.I『20138—0q一052i:36:56]<>6968.150.79:69esl5a曲lishect.r2D08—0q一0521:36:56]690.79:29727acceP七ed.[2008—0q一0S21:36:56]<>13768.150.79:137es七ablished。f2008—0q一0521:36:56]1370.79:137aCcePCed.f2008—0zt一052i:36:56]o69.168.150.79:29727.『2008—0q一0S2i:36:56]<>13568.150.79:i35es七8曲lished.f2008—04—0521:36:56]1350.79:2619accePted.r2008—0q一0S21.:36:56】青520.168.150.79:520.慧勰渤誊遵固I姻Connect;ion士r口rn192。168-15垒MiEEoEeorlD.P_ctiOn七0i92.iConrlect;i012士rom192.168.15MirrorcoD.I_1ec七i013.七o192.1Connecti012frol劬192.i68.i5MirrorcolinecCiors七oi92.iCoI"1ln_ecti01"1士r0瑚192.i68.i5r-Toby七巳3reeeiveal士rorn192Mirrorcolq.r1.ectioin_七Di92.iConnectiorl士r0111i92.168.15Nobyt;e3receivedfrom192滗}■^n‘iV图6.15诱捕模块日志记录在使用Nessus对系统进行检验后,系统的蜜罐诱捕模块记录的日志信息如图6.15所示。由图可见,该模块能够正确、较全面的记录每次连接和攻击测试发生的时间,交互的流量,连接的端口,并能记录攻击者IP地址,该模块对于自动检测病毒和蠕虫及隐式扫描等网络威胁具有重要的作用。目前本系统的日志记录存放在相应文件中,随着系统的开发完善,系统将使用MySQL数据库【50】对日志信息进行记录,以提供更系统化的日志记录。 具有蜜罐诱捕功能的联动入侵检测系统的研究与实现第七章总结与展望本章首先总结了全文的主要工作和研究成果,进而阐述目前工作的局限性和进一步优化完善的可能性,最后对入侵检测技术今后的研究方向进行展望。7:1总绔一本文深入研究了入侵检测技术、蜜罐诱捕技术及联动技术,并结合三者特点设计和实现了一种具有蜜罐诱捕功能的可对网络实时监测的联动入侵检测系统。不仅设计实现了可对入侵进行诱捕的蜜罐诱捕模块,而且实现了可与Netfilter/iptables联动的联动入侵检测模块,并改进和实现了检测组件的多模式匹配算法,从而在一定程度上提高了网络的安全性,保护了网络资源。本文所做的研究、设计和开发工作主要有:>研读了大量有关入侵检测技术、蜜罐诱捕技术、防火墙联动技术的相关资料,确定了研究课题的切入点与核心内容。>分析TCP/IP协议族的层次结构,从入侵检测的基于协议分析的检测方法入手,对ARP欺骗技术和端口扫描技术做了重点研究,并设计实现了相应组件。>详细研究了入侵检测模式匹配的多种算法,比较了各种模式匹配算法的优缺点,对AC多模式匹配算法做了大量的分析研究,实现了一种基于NFA的改进AC算法。>设计和实现了运行于Linux平台的网络入侵检测系统。>在深入分析了开放源码Snort的相关源码基础上,参考其设计的结构和框架,按照面向对象的思想设计了系统的各个模块,实现了私有数据的隐藏,模块间通过规定的公共接口函数进行交互,保持模块间的高内聚、低耦合度。>设计并实现了系统中完成主动防御的蜜罐诱捕模块。>设计并实现了与Netfilter/iptables防火墙联动的联动入侵检测模块,加强了对网络的控制。>对原型系统进行测试。测试结果表明原型系统可以正常工作,并且在兼容性、安全性和效率上比原有系统有所提高,原型系统达到初始设计目标。7.2展望入侵检测技术目前仍处于快速发展时期。本文所做的工作,主要是对传统入侵检测技术的改进和扩展,对蜜罐诱捕技术和传统入侵检测及防火墙防御功能的综合。对67 第七章总结与展望具有蜜罐诱捕功能的联动入侵检测系统的研究与实现于本文设计的系统,作者认为需要在以下几个方面作迸一步研究和改进:◆输出方式的扩展:本文仅初步实现了基于文件的输出方式。系统计划实现基于MySQL数据库的输出方式,以方便统计信息和实现更深层次的数据挖掘。◆信包捕获性能的优化。在目前小流量的网络环境中利用Libipq捕获数据包基本可满足要求,但在大流量的网络环境中会出现丢包现象,不能满足更高的要求。需要用nfnetlink实现性能的提高,以实现在高网速、大流量环境中的完全检测。夺预检测组件的扩展。目前系统已实现ARP欺骗和端口扫描预检测组件,系统计划实现更多的针对常见入侵的预检测组件,以提高本系统的入侵检测能力。夺支持协议种类的增加。目前系统支持以太网及TCP/IP协议簇。随着开发的完善,系统将会增加对更多协议的支持,并支持对无线网络协议的解析。◆模拟服务的完善和增加。目前系统模拟的服务还有很大完善的空间,并计划增加更多服务的模拟。通过完善服务的模拟,将增大诱捕的概率,以实现更好的诱捕效果。◆人机界面的完善。目前对系统的操作可使用命令行方式进行,系统计划设计一套友好易用的人机界面以方便管理人员对系统进行操作,查看日志和警报信息,从而提高工作效率。 具有蜜罐诱捕功能的联动入侵检测系统的研究与实现附录1重要结构体NetworkPacket结构系统内部采用如下机构表示网络数据包:typedefstmctNerwork_Packet·{conststructpcap_pkthdr*pkth;产BPF数据幸/constUint8t*pkt;严指向原始包数据的指针木/constEthemetHeader·eh:严以太19贞首部宰/EthemetARP*ah;产以太网ARP帧首部}/u_int32_tip_options_length;产IP选项长度幸7conStUint8t*ip产选项数据+/.optionsdata;IPconStTCPHeader*tcph;产TCP首部+/u_int32jtcp_options_length;严TCP选项长度幸/constUint8t*tcp产选项数据宰,..options..data;净蓖部TC★PcongUDPHeader*udph;UDPfconStICMPHeader*icmph;,隼ICMP首部·/constUint8t*data;/聿包负载指针}/Uintl6tdatasize;芦包负载尺寸影u_int8_tfrag_flag;p包分片标志幸/Uintl6tfrag严’包分片索引号码幸/.offset;Uint8tdon’tp不分片标志木/.fag;uhat8treserve£妒IP保留位奎/Uintl6tsport;产源端口幸/Uintl6tdport;产目的端口幸/Optionsip_options[IP_OPTMAX];产IP选项解码结构·,Uint32tip妒包中IP选项数木/.option.count;Optionstcp__options[TCPj)PTLENMAX];产TCP选项解码结构木/u_int3ttcp_option_count;u_int8_tcsum_flags;}Network_Packet;产包中TCP选项数}/产校验和数据宰/ 附录2配置文件 具有蜜罐诱摘功能的联动入侵检测系统的研究与实现参考文献[1】张世永.网络信息安全[M】.北京:清华大学出版社,2002:18.23[2】唐正军,李建华.入侵检测技术【M】.北京:清华大学出版社,2004,4.[3](美)LanceSpitzner著,邓云佳译.honeypot:追踪黑客[Ⅶ.北京:清华大学出版社,2004,9.[4】绿盟科技.冰之眼网络入侵检测系统产品白皮书[EB/OLl.http://www.nsfocus,CO—m/1一solution/NIDS.pdf.2007.【5】丁常福,方敏.防火墙与网络入侵检测联动系统研究们.航空计算技术,2003,33(3):124—128.【6】BrianCaswell,JayBeale.Snort2.0IntrusionDetection[M].北京:国防工业出版社,2004,1.【7】7OfirArkin.IdentifyingICMPHackeryToolsUsedIntheWildToday[EB/OL].http://www.securityfocus.com/infocus/1183.2000,12.4.[8]朱树人,李伟琴.入侵检测技术研究叨.计算机工程与设计,2001,22(4):13.17.[9]蒋建春,马恒太,任党思等.网络安全入侵检测研究综述[J】.软件学报,2000,11(11):1460—1466.【10】CIDF[EB/OL].http://gost.isi.edu/cidf/.【11]S.M.Bellovin.SecurityProblemsintheTCP/IPProtocolSuite【J].ComputerCommunicationReview,1989,19(2):32-48.。[12】AndersonJ,JamesRComputerSecurityThreatMonitoringandSurveillance[R].FortWashington:JamesP.AndersonCo,1980.[13】DorothyDenning.AnIntrusionDetectionModel[J].IEEETransactionsonSoftwareEngineering,MenloPark,1987,118—131.【14]B.Muldaerjee,ToddL.Heberlein,KarlN.Levitt.NetworkIntrusionDetection【J】.IEEENetwork,1994,8(3):26-41.[15】阮耀平,易江波,赵战生.计算机系统模型与方法fJj.计算机工程,1999,250):63·65.[16】LanceSpitzner.Honeypots—DefinitionsandValueofHoneypots【EB/OL].http://帆enteract.corn/~lspitz/honeypot.html,2001,10.[17】Honeynet【EB/OL].http://www.honeynet.org/.71 参考文献具有蜜罐诱捕功能的联动入侵检测系统的研究与实现【18】LanceSpitzner.Honeypots:DefinitionsandValueofHoneypots[EB/OL].http://www.tracking-hackers.corn,2003,5.29.【19】LanceSpitzner.Honeypots:CatchingtheInsiderThreat闭.IEEEComputerSociety,2003,11.[20]MoranDB.EffectiveDeploymentofHoneypotsAgainstIntemetandExternalThreats【J】.InformationSecurityBulletin,2000,12:1—3.【21】张兴东,胡华平,况晓辉,陈辉忠.防火墙与入侵检测系统联动的研究与实现[J】.计算机工程与科学,2004,26(4):22-26.【22]黄靖.防火墙与入侵检测联动系统的研究与实现[D】.武汉:华中科技大学,2006.5.【23】胡文,黄皓.自动入侵响应技术研究阴.计算机工程,2005,31(18):143-145.[24]Netfilter/iptables[EB/OL].http://www.netfilter.org/.[25](美)SteveSuehring,RobeIrtL.Ziegler著,何泾沙等译.Linux防火墙(第三版)口咽.北京:机械工业出版社,2006.6.【26】姚晓宇,赵晨.Lniux内核防火墙Netfliter实现与应用研究【J】.计算机工程,2003,29(8):112.[27]陈鑫.Linux系统内核空间与用户空问通信的实现与分析【EB/OL].http://www.ibm.com/developerworks/cn/linux/l-netlink/index.html,2004,7.【28]ManpageofLibipq【EB/OL].http://www.cs.princeton.edu/-nakao/libipq.htm,2002,7.【29】Libpcap[EB/OL].http://www.tcpdump.org.[30】刘文涛.网络安全开发包详解[M】.北京:电子工业出版社,2005.7.[31]Libnet[EB/OL].http://www.securitybugware.org/libnetnet/.【32】权东晓,裴昌幸,朱畅华,刘格非.基于Libnet的网络流量产生器的设计与实现【J】.现代电子技术,2005,28(20):22—24.【33】权东晓,裴昌幸,邓崎皓,罗军勇.基于AC自动机匹配算法的入侵检测系统研究田.微电子学与计算机,2005,22(3):89.95.【34】MareNorton.OptimizingPatternMatchingforIntrusionDetection[EB/OL].http://does.idsresearch.org/OptimizingPattemMatchingForlDS。pdf.[35】杨武,方滨兴,云晓春等,入侵检测系统中高效模式匹配算法的研究川.计算机工程,2004,30(13):92-94.【36](美)AlfredV.Aho,RaviSethi,JeffreyD.Ullman著,李建中,姜守旭译.编译原理 具有蜜罐诱捕功能的联动入侵检测系统的研究与实现参考文献瞰],北京:机械工业出版社,2000.4.【37】AlfredVAho,MargaretJ.Corasick.StringMatching:AnAidto.BibliographicSearch[EB/OL].http://www.win.rue.nl/-watson/2R080/opdrachffp333一aho-corasick.pd£【38]李伟男,鄂跃鹏,葛敬国,钱华林.多模式配皮算法及硬件实现川.软件学报,.2006,17(12):2403—2410.[39】W.RichardStevens,BillFermer.UNIXNetworkProgramming【M】.北京:清华大学出版.2006,1.【40】Snort[EB/oL】.http://www.snort.org.【41】韩东海,王超,李群.入侵检测系统及实例剖析【M】.北京:清华大学出版社,2002.[42](美)W.RichardStevens著,范建华,胥光辉,张涛等译.TCP/IP协议详解卷l:协议【M].北京:机械工业出版社,2003.8.【43]Nessus[EB/OL].http://www.nessus.ore,/.【44]Dsniff【EB/OL].http://www.monkey.o砂dugsong/dsniff/.【45】Nmap【EB/OL].http://nmap.org/.[46】Fyodor.RemoteOSdetectionviaTCP/IPStackFingerPrinting.[EB/OL].http://nmap.org/book/osdetect.html.[47]rcfirewall脚本[EB/OL].http://www.honeynet.org/tools/dcontrol/rc.firewall.【48]x86SetUID0ShellcodeinTCPPacket.[EB/OL].hap://www.juniper.net/security/auto/vulnerabilities/vuln211O.html.[49]Tcpdump[EB/OL].http://www.tcpdump.org【50】Mysql【EB/OL].http://www.mysql.corn.