- 1.59 MB
- 2022-06-16 12:40:06 发布
- 1、本文档共5页,可阅读全部内容。
- 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
- 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
- 文档侵权举报电话:19940600175。
入侵检测蜜罐系统的设计与实现研究型蜜罐被设计用来获取黑客界的信息。这些蜜罐并没有为特定的组织带来直接性的价值。它们的主要使命在于研究组织所面临的威胁,比如说:这些攻击者是谁,他们是怎样组织起来的,他们攻击其它系统所使用的工具是什么,以及他们是从哪里获得这些工具的。研究型蜜罐比产品型蜜罐要复杂得多,但同时能够提供的信息也多得多。从黑客可以与之交户程度的高低,可以把蜜罐分为低交互型(Low.interaction)的和高交互型(Hi曲.interaction)的[8]:低交互型的蜜罐主要针对一些特定类型的攻击,来模拟一些常用的服务,或者是模拟操作系统,来诱使黑客攻击,而黑客在这些蜜罐上所能做的事都被局限在蜜罐本身所模拟的环境里。这种蜜罐的优点是它的简单性,以及低风险性。正是由于这两个特点,大多数的初学者都会选择使用低交互型的蜜罐。例如,前面所提到的BackOfficerFriendly、Specter以及Honeyd和KFSensor都是低交互型的。但是由于攻击者的行为受到了限制,因此这种类型的缺点是,它只能搜集到一些与它所模拟的服务或者操作系统相关的信息;与之相反,高交互型的蜜罐通常是比较复杂的。他们一般都是一些真实的系统,或者实际的一些应用服务。例如,要想实现一个在Linux上运行FTPServer的蜜罐,就要构建一个真实的Linux系统,并在其上运行FTPServer,一切都是真实的。在这种环境下,攻击者的行为基本上不会受到任何的限制,因此这种类型的蜜罐可以最大限度的搜集到相关的信息,这是它的一个突出的优点。其次,由于没有针对一些特定的攻击,相反是提供给黑客一个基本开放的环境,这样我们就会得到一些我们意料之外的信息,捕捉到一些未知类型的攻击。例如,前面提到的Honeynct就是典型的高交互型的蜜罐。当然,提供给黑客一个足够宽松的空间的同时,也意味着比较高的风险性,这也是高交互型的蜜罐的一个缺点。1.2.4蜜罐的优势作为一种新兴的安全策略,蜜罐具有几个独有的优势。(1)数据价值:安全界所面临的难题之一就是从数据中获取有价值的信息。一个安全组织每天都会收集到大量的数据,包括防火墙日志、系统日志以及入侵预警等。这些信息的数据量非常庞大,从而使得从数据中提取有价值的信息变得极为困难。但是蜜罐不具有这样的问题。蜜罐通常只会收集少量的数据,但它们所收集的数据却有很高的价值。蜜罐这种没有任何预期产品活动的理念大大降低了噪声级别。大部分蜜罐每天只会收集到几兆字节的数据,甚至比这还要少,而不是GB字节的数据。而它们所载入日志的任何数据都很有可能是一次扫描、探测或者攻击一极具价值的信息。(2)资源:
大连理工大学专业学位硕士学位论文大多数安全机制所面临的另一个难题是资源限制,甚至是资源枯竭。资源枯竭指的是由于安全资源的过度使用而导致无法起作用的情况。例如,一个防火墙可能会因为其连接表已经满了,其资源已经耗尽或者它不能在监视连接而失效。这就会导致防火墙阻断所有连接,而不是仅仅阻断那些未授权的活动。相对来说蜜罐由于只会对少量活动进行监视和捕获,所以在它们身上通常不会发生资源枯竭问题。因此蜜罐通常不需要太多的资源也不必为一个蜜罐在硬件上投入大量资金。较低的资源消耗与处理机的内部操作有关。在IDS(/x,侵检测系统)方法中,系统中信息包的处理是被监控和分析的。因此,IDS方法要求系统具有高运算能力。对系统数据传输也是如此。由于系统中信息包传送的容量,数据传输将占据整个处理时间的很大一部分。除了处理时间,数据传输还会消耗系统中不同的与数据传输有关的资源。只有当被蜜罐监控的系统资源在使用的时候,才会给蜜罐处理提供处理时间。这样,在蜜罐空闲时间在主机系统上进行的蜜罐操作可以忽略不计。这与计算机硬件设计中基于中断和基于查询的I/O处理方法之间的差别很相似。(3)简洁性:使用蜜罐无需开发奇异的算法,无需维护签名数据库,不会出现错误配置的规则库。只要把蜜罐拿过来放到网络中的某个地方,然后就可以静观其变了。尽管有些蜜罐特别是一些研究型蜜罐可能会很复杂,但是它们都运作在相同的简单前提下:如果有人连接到了蜜罐,就将它检测出来。1.2.5蜜罐的缺点蜜罐本身也存在着一些固有的缺点,也因此蜜罐并不能取代任何安全机制,而只是在与整体安全构架协作并进行强化。(1)视野有限:蜜罐最大的缺点是视野的有限性:它们只能看到那些针对它们自身的活动。如果某个攻击者闯入了网络中并攻击了很多系统,蜜罐会检测不到这些活动正在进行,除非它本身受到了直接攻击。如果攻击者识别出蜜罐的本质所在,就会避开该系统并渗入所在地组织,而蜜罐却永远不知道他们已经进来了。因此,蜜罐对所收集数据的价值具有一种显微效应,可以帮助大家密切关注于价值明了的数据,同时也会忽略掉一些发生在周围的事件。(2)指纹识别:“指纹识别”是指由于蜜罐具备一些特定的预期特征或者行为,因而能够被攻击者识别出其真实身份的情况。如果一名黑客识别出一家组织在内部网络中使用了蜜罐,他
入侵检测蜜罐系统的设计与实现就可以利用其他产品系统进行身份欺骗并对蜜罐实施攻击。蜜罐将会检测出这些欺骗性攻击,并错误地向管理员进行警报。这将会导致系统进入一种恐慌的追击状态。而同时,趁着混乱,攻击者就会集中精力进行实际的攻击。(3)风险:蜜罐可以将风险引入所在地环境中。这里所说的风险指的是一个蜜罐一旦遭受攻击,就可以被用于攻击、渗透,甚至危害其它的系统或者组织。不同的蜜罐具有不同级别的风险性。有些只会招致很低的风险,而另一些则有可能会将整个平台让给攻击者以启动新的攻击。蜜罐越简单,其风险性就越小。例如,仅仅模拟几种服务的蜜罐是很难被攻破并用来攻击其他系统。相比之下,某个创建了监狱的蜜罐会给攻击者提供一个实际的操作系统进行交互,某个攻击者有可能会闯入这个笼子,然后使用它对其他的系统或组织启动被动或者主动攻击。风险是变化的,具体情况取决于的构建和部署方式。1.3蜜罐在安全体系中所扮演的角色由于蜜罐本身的特性,蜜罐无法取代其它诸如防火墙、入侵检测系统之类的安全机制。通常蜜罐是作为整个防护体系的补充和增强,在整个防护体系中扮演一个角色而已。蜜罐对于防护体系中三类不同的安全策略有不同的补充和增强作用。1.3.1蜜罐在阻止策略中的角色蜜罐能够为组织策略带来的价值相当有限。因为蜜罐本身并不去检测攻击,而且如果实现或者配置不正确蜜罐还有可能带来风险从而为攻击者的进攻提供机会。阻止策略最为实用的手段通常是关闭不安全的服务,及时安装补丁以及强制认证机制。蜜罐在阻止攻击中的价值通常体现在欺骗和威慑两方面。欺骗的主要思想是:让攻击者在进攻蜜罐而非实际有用目标上浪费时间和资源。网络诱骗【6】是在一个严格控制的欺骗环境(真实的网络主机或用软件模拟网络和主机)中,诱骗入侵者对其进行攻击或在检测出对实际系统的攻击行为后,将攻击重定向到该严格控制的环境中,从而保护实际运行的系统;同时收集入侵信息,借以观察入侵者的行为,记录其活动,以便分析入侵者的水平、目的、所用工具和入侵手段等,并为入侵响应以及随后可能进行的对入侵者的法律制裁提供证据。将蜜罐伪装成真实的目标系统来诱骗攻击者对其进行攻击。蜜罐的主要目标【7】是容忍攻击者入侵,记录并学习攻击者的攻击工具、手段、动机和目的等行为信息,尤其是未知攻击的行为信息,从而调整网络的安全策略,提高系统的安全能力。浪费攻击者的时间并阻止他们快速危及其他资源的安全。例如,在一个端口扫描方案中让攻击者等待回复可以明显降低整个处理过程的速度。蜜罐可以用一种不
大连理工大学专业学位硕士学位论文同的方式来处理,那就是通过仿效工作环境,蜜罐可以使人侵者认为自己进人了真正的系统而试图实施人侵。蜜罐越可信,人侵者就会在假环境中花费越多的时间。威慑的主要思想是:如果攻击者知道组织中已经设置了一些蜜罐,他们就会被吓跑。原因可能是他们不希望被检测到或者不想在进攻蜜罐上浪费时间和资源。欺骗和威慑都是用来迷惑和淆乱认为进攻的心理武器。也因此它们对于由脚本、自动工具以及蠕虫病毒等通过一些特定程序发动的大范围攻击或者对机会目标进行的攻击通常起7:N什么阻止作用。反而在一些具有高价值资源的目标中这两种手段可以起到一定的作用。因为这些高价值资源很有可能会吸引到一些别有用心的攻击者进行专门攻击,而这些攻击大多是认为发动的。在这种情况下,往往人为的攻击者会对蜜罐提供的信息进行分析。这是蜜罐提供的专门用于欺骗的信息可以在很大程度上迷惑攻击者。1.3.2蜜罐在检测策略中的角色蜜罐的防护功能很弱,却有很强的检测功能。因为蜜罐本身没有任何生产行为,所有与蜜罐的连接都可认为是可疑行为而被纪录。这就大大降低误报率和漏报率,也简化了检测的过程。对于很多组织,检测都是极其困难的.检测所面临的3个常见难题包括:错报、漏报和数据整合。其中错报是指系统对可疑的或者恶意的活动进行了错误的预警。系统所认定的攻击或者捣乱企图实际上是合法的产品活动。漏报则恰恰相反,攻击行为从系统的眼皮底下溜走了。第三个难题是数据整合,将所有用于检测的数据进行集中收集,然后将其确认为有用的信息。由于其简洁性,蜜罐有效地解决了这些问题。大部分蜜罐没有任何产品流,因此很少活动会产生错报。只是在错误发生的情况下才会出现错报,在大部分情况下,蜜罐都会产生有效地预警,从而大大降低了错误的发生。蜜罐也解决了漏报的问题,它们能够根据系统活动(而非签名)检测到一个新型的攻击,所依据的概念是任何进出其辖区的流量都是可疑的,会将经过其辖区的任何攻击捕获。数据整合的解决方法是创建相当少的数据。在蜜罐中,没有任何合法的产品流量需要进行日志记录、收集或者整合,它每天所产生的数据量不过几兆而已,其中大部分都极有价值。这样就很容易用蜜罐诊断出有用的信息。在受IDS保护的系统中,蜜罐能检测到未知攻击。这样,蜜罐可以提高IDS的可靠性,并且提供的检测独立于系统上强制性的攻击类型。
入侵检测蜜罐系统的设计与实现1.3.3蜜罐在响应策略中的角色对事故做出响应的一个难题就是证据收集。这一点不仅对想对攻击者进行起诉的组织非常关键,而且对攻击防御也是如此。一旦被攻入,组织就必须要判定出攻击者是否进入了其它系统,有没有创建后门或者安放逻辑炸弹,是否修改或者捕获了任何诸如用户帐户之类的宝贵信息,其他人是否入侵了网络。当攻击者入侵系统时,他们的活动就会留下证据,一些可以用于断定攻击者是如何进入的,在其获得了控制权之后又从事了什么活动及其身份的证据。即使攻击者采取了一些隐藏活动,比如修改系统日志文件,这些活动还是可以被追踪到的【弘旧]。不过,这份证据很快就会被污染,使它变得一文不值。大量的活动几乎总是在系统中发生着。文件被写回磁盘、进程启动和终止、用户登录、内存页交换。所有这些活动都在不断地改变着系统状态。系统中的活动越多,攻击者的活动就越有可能被覆盖或污染。即使使用高级技术和工具,也很难修复那些已经受损的数据。事故响应的笫二个难题是无法让被黑系统离线。对有些组织来说被黑系统可能担负着重要的任务,组织无法承担系统离线所带来的损失。这给组织应对入侵以及收集证据带来了巨大的困难。蜜罐能够帮助解决事故响应中所面临的难题。因为蜜罐没有任何产品活动因此可以帮助解决数据污染问题。当某个蜜罐被攻破后,系统中唯一的实际活动就是攻击者的活动,这有助于维护其完整性。同时,由于没有产品活动,将蜜罐离线进行进一步分析也相当简单,将它们离线不会对组织的任何商业活动产生影响。同时蜜罐能给响应系统或系统安全员更多时间来对攻击企图做出正确的响应。跟踪攻击者可能是十分困难的,它需要大量的经验和时间来追溯攻击者的发起端。区为对于响应系统做出反应来说供给速度可能太快了,所以响应反应时间十分重要,倘若系统管理员有足够的时间就可以有助于他找出攻击者使用连接的根源。1.4蜜罐的风险性分析1.4.1蜜罐的风险运行蜜罐和蜜网存在三个主要的危险:(1)未发现黑客对蜜罐的接管蜜罐被黑客控制并接管是非常严重的,这样的蜜罐己毫无意义且充满危险。一个蜜罐被攻陷却没有被蜜罐管理员发现,则蜜罐的监测设计存在着缺陷。(2)对蜜罐失去控制
大连理工大学专业学位硕士学位论文对蜜罐失去控制也是一个严重的问题,一个优秀的蜜罐应该可以随时安全地终止进出蜜罐的任何通讯,随时备份系统状态以备以后分析。要做到即使蜜罐被完全攻陷,也仍在控制之中。操作者不应该依靠与蜜罐本身相关的任何机器。虚拟机同样存在危险,黑客可能突破虚拟机而进入主机操作系统,因此虚拟蜜罐系统的主机同样是不可信的。失去控制的另一方面是指操作者被黑客迷惑。如黑客故意制造大量的攻击数据和未过滤的日志事件以致管理员不能实时跟踪所有的活动,黑客就有机会攻击真正目标。(3)对第三方的损害一指攻击者可能利用蜜罐去攻击第三方,如把蜜罐作为跳板和中继发起端口扫描、DDoS攻击等。1.4.2降低蜜罐的风险首先,要根据实际需要选择最低安全风险的蜜罐。事实上并不总是需要高交互蜜罐,如只想发现公司内部的攻击者及谁探查了内部网,中低交互的蜜罐就足够了。如确实需要高交互蜜罐可尝试利用带防火墙的蜜网而不是单一的蜜罐。’其次,要保证攻击蜜罐所触发的警告应当能够立即发送给蜜罐管理员。如探测到对root权限的尝试攻击就应当在记录的同时告知管理员,以便采取行动。要保证能随时关闭蜜罐,作为最后的手段,关闭掉失去控制的蜜罐,阻止了各种攻击,也停止了信息收集。相对而言保护第三方比较困难,蜜罐要与全球的网络交互作用才具有吸引力而返回一些有用的信息,拒绝向外的网络交通就不会引起攻击者太大的兴趣,而一个开放的蜜罐资源在黑客手里会成为有力的攻击跳板,要在二者之间找到平衡,可以设置防火墙对外向连接做必要的限定:(1)在给定时间间隔只允许定量的P数据包通过。(2)在给定时间间隔只允许定量的TCPSYN数据包。(3)限定同时的TCP连接数量。(4)随机地丢掉外向口包。这样既允许外向交通,又避免了蜜罐系统成为入侵者攻击他人的跳板。如需要完全拒绝到某个端口的外向交通也是可以的。另一个限制方法是布置基于包过滤器的IDS,丢弃与指定特征相符的包,如使用Hogwash包过滤器。
入侵检测蜜罐系统的设计与实现1.5蜜罐的历史及发展趋势1.5.1蜜罐的发展历史蜜罐的概念最初是由计算机安全界的几个泰斗提出的。1986年,CliffStoll发现一个德国计算机程序师攻入了California的LBL伯克利实验室的系统通过悄悄追踪,发现此人是个间谍,把软件和军事数据出卖给了前苏联的KGB。鉴于这个故事情节C1if!fstoll在其论文“stalkingtheWilyHacker"[13】的基础上,写了neCuckoos。Egg一书,详细描述了计算机、网络、间谍和他在伯克利实验室的生活。作者在书中提到,如果使伪造的文件包含不同类型的信息,如财政、军事等,就可能试探出入侵者的兴趣,记录对这些文件的访问自然也起到检测入侵者的效果。这就是蜜罐的基本思想。蜜罐作为一个独立的系统正式出现于BinCheswick在1991年发表的一篇题为“AnEveniwi也BerferdInWhichacrackerisLured,Endureandstudied"[14】的文献。作者指出,已有的安全工具虽可以检测黑客攻击,但有所遗漏。并提出用伪造的服务吸引黑客。BinCheswick在其与StevenMBellovin合作的“FirewallsandIntemetSecurity:RpellingthewilyHacker’’一书中再次提到伪造服务用到Honeypots一词。并提到蜜罐记录黑客信息的功能可以用于检测的目的。FredCohen在1996年发表的文献“IntemetHoles.InternetLightningRods"[15】中,把密罐喻为“LightningRods’’,保护真实的系统。作者提到可以利用防火墙技术把未授权访问“引”向蜜罐——对攻击进行分流,消耗黑客的资源。他认为honeypot的基本思想是创建一个对攻击有诱惑力的目标,把攻击者的攻击从有较高价值的目标引向密罐,在honeypot上花费时间,减少对真正目标的威胁,同时描述了它的局限性。而他在1998年发表的文献“ANoteontheRoleofDeceptioninformatiOilProtec.fion"06】中,认为蜜罐实质上是一种欺骗系统,设计了采用伪造服务技术的欺骗系统DTK(DeceptionToolkit)。DTK是第一个公共可以得到的蜜罐系统,作者希望DTK的广泛使用使黑客难辨真伪,增加黑客实施有效攻击的难度。在1999年发表的另外一份文献“AMathematicalstructureofsimpleDefensiveNetworkDeceptions”【17】中,FredCohen从时间的角度,对欺骗系统的思想进行了完整的表述。分析了欺骗系统能够吸引住黑客的一些途径,包括增加欺骗系统的数量、增加欺骗系统的伪装程度等。他从延缓黑客攻击的角度,看到了蜜罐为保护工作系统赢得时间的作用。FredCohen的工作较大地推进了蜜罐的发展。但人们更感兴趣的是蜜罐记录的黑客信息。Recource公司的蜜罐产品Mantrap就是一个典型的代表。它使用真实的系统作为蜜罐,提供了从系统级到网络级的强大的记录黑客活动功能。
大连理工大学专业学位硕士学位论文LanceSpitzer明确提出蜜罐是一个了解黑客的有效手段。1999年他倡议成立了Honeynet研究组织。Honeynet组织设置了一个一定规模的向黑客开放的网络环境,以观察黑客活动,对黑客群体进行系统的研究。该方案包括隐蔽地采集黑客在蜜罐上的活动信息、控制蜜罐引入的风险、分析蜜罐采集的数据等等。他们的研究引起越来越多的人注意到蜜罐。该研究组织是蜜罐研究的中坚力量。目前,除了最初的研究组织外,也出现了一些其它团体使用这样的系统进行研究,这些不同的团体又组成了一个更大的组织——-Honevnet研究联盟(HoneynResearehAlliance),以共享搜集到的黑客信息。1.5.2蜜罐的发展趋势蜜罐为整个安全界注入了新鲜的血液。它不仅可以作为独立的信息安全工具,还可以与其他的安全工具(如防火墙和pS等)协作使用。蜜罐可以查找并发现新型攻击和新型攻击工具,从而解决了IDS中无法对新型攻击迅速做出反应的缺点。想面对不断改进的黑客技术,蜜罐技术要保持目前具有所有的功能就必须不断地发展和更新。(1)增加蜜罐可以模拟的服务只有不断增多可以模拟的服务类型,才可以获得更多的黑客信息,从而达到蜜罐的设计目的。攻击者不断发现各种服务中的弱点和漏洞,并使用各种不同的方法对攻击对象采取行动,试图绕过安全工作者的监视达到自己的目的。蜜罐可以模仿的服务类型越多,可以捕获的入侵行为就越多,从而可以更好地保护重要的资源和数据。(2)能够跨平台工作的蜜罐目前,大部分蜜罐只能在特定的操作系统下工作。如果蜜罐可以在任何操作系统下生效,使用者的范围就会不断增加、扩大,同时使用者也可以更加方便的使用蜜罐。跨平台蜜罐带来的不仅是方便,还可以将蜜罐的适用范围变得更加宽泛,使更多的人了解蜜罐从而使用蜜罐。(3)交互程度不断提高蜜罐如果仅仅支持简单的交互行为,入侵者会很快发现自己所处的环境,并迅速全身而退。因此蜜罐技术在不断进步的过程中,必须要提高自身与入侵者之间的交互程度,以便能够更好的了解入侵者的行为并得出结论。(4)降低蜜罐的引入风险既要获得更多有价值的信息和数据,又要求系统保持足够的安全,这的确难倒了安全专家。交互的程度越高,模拟得越像,自己陷入危险的概率就越大。目前,虽然安全专家们已经找到很多方式防止蜜罐在被攻陷以后成为入侵者进行攻击的工具,但是这种
入侵检测蜜罐系统的设计与实现方式也会引起入侵者的注意,使入侵者发现自己所处的是蜜罐系统,从而不能够进一步记录攻击者接下来的行为。
大连理工大学专业学位硕士学位论文2需求分析‘而小刀Wl2.1需求描述建立大规模网络入侵检测系统(NIDS)q丁的蜜罐模块。该模块运行与独立的进程中,根据部署情况运行于网络中某个独立的主机上。该蜜罐系统作为NIDS的辅助与补充模块存在。蜜罐系统的运行与否对NIDS的运行没有影响,蜜罐系统在网络中虚拟若干台虚拟的蜜罐主机,这些虚拟主机每台占用网络中的一个ip地址,同时提供一些预设的虚拟服务。虚拟主机提供对连接的响应能力。同时对进出虚拟主机的每一个数据包的信息记录到数据日志中。蜜罐系统包含数据日志分析模块。该模块对日志进行分析并根据分析情况提供预警。2.2蜜罐系统过程模型2.2.1上下文数据流图图2.1为系统的上下文数据流图,它描述了系统边界。其中蜜罐系统是我们的目标系统,攻击者和系统管理员都是系统之外的成员,他们与系统交互,推动系统功能的完成。攻击者是网络内或网络外攻击蜜罐系统黑客或者自动攻击程序。他们通常在不知情的情况下使用系统完成与系统的交互。管理员是部署蜜罐的网络管理人员或安全管理人员。他们接受蜜罐发出的预警信息然后做出相应的应对行为。攻击者和管理员都是系统之外的成员他们的行为不受系统约束,但他们的行为对系统的行为产生影响。攻击预警图2.1上下文数据流图Fig.2.1ContextDFD
入侵检测蜜罐系统的设f与实现2.2.2系统数据流图(1)O级数据流图图2.2是系统的0级数据流图,它概要的表示了系统的主要过程、数据流和数据存贮。其中过程“在网络中虚拟主机"代表在部署系统的网络中虚拟若干台预设好多虚拟主机,蜜罐系统对外就表现为这几台虚拟的主机。过程“处理数据包并产生应答”代表对通过虚拟主机获取的数据包进行分析,然后根据过预设的规则对不同的数据包产生不同的应答数据包,接着把生成的应答数据包交给虚拟主机发送给攻击者。过程“更新日志文件”表示对每台虚拟主机接受和发送的每一个数据包生成一条包含该数据包信息的日志条目并写入到日志中。过程“分析日志并产生预警”表示系统将检测日志文件,每当有新的条目写入日志文件时系统将对新条目进行分析,针对新条目代表的事件产生预警信息。新增日志信息(2)1级数据流图预警信息式化的日志信息出入虚拟主机数据信息厂、过程3.o更新日志文件\/系统管理员图2.20级数据流图Fig.2.20levelDFD
大连理工大学专业学位硕士学位论文图2.3中过程“建立虚拟主机”是在系统刚启动时根据虚拟主机配置数据库中的预设规则建立指定数量的虚拟主机。过程“处理I/O数据”负责转换网络数据包与针对特定主机的数据包。虚拟主机信息厂过程1.1建立虚拟主机~虚拟主机动态信息图2.31级数据流图:过程1分解Fig.2.31levelDFD:Process1图2.4中过程“生成应答数据"负责根据虚拟主机配置数据库的预设规则对攻击数据包产生对应的应答数据。应答数据发送两份,一份交给输出过程最终返回倒网络上,另一份交给过程“生成日志信息’’,由这个过程将其转化为存贮在日志中的格式。图2.6中的过程“生成预警信息”将日志中的新增信息与安全历史记录进行匹配,从而得到最新行为的安全状态。一方面它根据安全状态产生预警信息并发送给管理员,另一方面它将安全信息交给过程“更新历史信息"。过程“更新历史信息”根据收到的安全信息更新安全历史数据库。(3)2级数据流图图2.5和图2.7到2.11是系统的2级数据流图。它们都是对系统1级数据流图中某个过程的分解细化。对1级数据流图中逻辑功能惟一的过程不进行细化。图2.6中过程“配置虚拟主机”表示根据虚拟主机的配置信息创建虚拟主机,比如从网络管理员或dhep服务器申请ip,获取端口地址,修改网卡mac地址等。
入侵检测蜜罐系统的设计与实现服务配置信息,、厂、过程1.O在网络中虚拟攻击数据包7过程2.1主杌生成应答数据\/▲\/特定主机应答数据包厂、过程2.2应答数据输出应答数据\/攻击应答数据图2.4l级数据流图:过程2分解Fig.2.41levelDFD:Process2置信息出入虚拟主机数据信息虚拟主机动态信息厂、过程1.2处理I/0数据\/图2.52级数据流图:过程1.1分解Fig.2.52levelDFD:Process1.1一16一
大连理工大学专业学位硕士学位论文新增日志信息图2.61级数据流图:过程4分解Fig.2.61levelDFD:Process4图2.7中过程“分析动态主机信息’’将获取系统启动创建虚拟主机时虚拟主机的动态信息,然后将其转换为特定的格式。过程“转换数据包"根据格式化后的动态主机信息将网络数据包与特定主机数据包进行转换。过程“收发网络数据包"负责将程序你数据包与网络连接。据。图2.8中过程“匹配生成应答"负责根据攻击数据包和预设的服务配置产生应答数
入侵检测蜜罐系统的设计与实现图2.72级数据流图:过程1.2分解Fig.2.72levelDFD:Process1.2图2.9中的过程“分析数据包"负责将系统收发的数据包进行拆包,从中取出数据包相关信息然后传给过程“格式化数据”。过程“格式化数据”负责将数据包的相关信息格式化成日志中规定的格式。厂、过程1.0在网络中虚拟主机\L/特定主机应答数据包针对某主机的攻击数据包答数据服务配置信息厂、过程2.1.2获取服务配置L/网络数据包服务配置数据攻击应答数据图2.82级数据流图:过程2.1分解Fig.2.82levelDFD:Process2.1厂、过程2.3生成曰志信息\/
大连理工大学专业学位硕士学位论文击应答数据,过程2.3.1获取数据包信息\.包日志图2.92级数据流图:过程2.3分解Fig.2.92levelDFD:Process2.3数据包数据图2.10中的过程“信息匹配"将日志信息和安全历史信息进行匹配,得到当前日志信息代表的行为的匹配结果,并将其发给过程“确认危险级别"。过程“确认危险级别”根据匹配结果得到包含危险级别的安全信息。过程“生成预警信息”根据不同的安全信息产生与之对应的预警信息并发送给管理员。配结厂、,、过程4.3.2过程4.3.3确认危险级别一安全信息——’生成预警信息L/、L/厂、安全信息~过程4.4更新历史信息L/图2.102级数据流图:过程4.3分解F远.2.102levelDFD:Process4.3预警信息
入侵检测蜜罐系统的设计与实现图2.11中过程“分析安全信息”根据得到的安全信息产生新的历史信息,用于更新历史信息数据库。历史信息数据库会根据每次新的目志动态修改逐步扩充。也就是说系统运行时间越久得到的结果越精确。安全历史数据麾新的历史信惠历史信息安全信息、过程4.4.2分析安全信息/图2.112级数据流图:过程4.4分解Fig.2.112levelDFD:Process4.4(4)3级数据流图图2.12、2.13和2.14是3级数据流图。系统的大部分逻辑过程在2级数据流图中已经分解细化完成,因此3级数据流图只是针对很少的几个尚未分解完全的过程继续分解。图2.12中过程“解析配置信息”将虚拟主机的配置信息转换成用于申请网络配置的格式。过程“生成配置申请”读取解析后的配置信息生成配置申请并发送给网络管理员或dhcp服务器等机构。得到申请的应答后过程“生成动态主机信息"在系统内维护动态主机的信息。过程1.1.2.4“解析配置信息"将动态主机信息解析成用于处理数据包的格式。2。3非功能性需求(1)系统运行需要管理员的维护与支持,因此部署该系统的网络需要有网络管理员参与。(2)由于系统的特殊性,运行该系统的主机在网络中不应承担任何实质的功能。最好除了管理员外没有任何人知道系统的存在。
大连理工大学专业学位硕士学位论文(3)系统的部署与运行应当符合当地法律法规。攻击数据包配置信息攻击数据解析后的配置信息输出动态主机信息态主机信息置申请图2.123级数据流图:过程1.1.2分解Fig.2.123levelDFD:Process1.1.2答数据包定主机击数据特定主机应答数据针对某主机的攻击数据包应答特定主机图2.133级数据流图:过程1.2.3分解Fig.2.133levelDFD:Process1.2.3—21.包
入侵检测蛋罐系统的设计与实现危险级别数据危险级别信息安全信息图2.143级数据流图:过程4.3.2分解Fig.2.143levelDFD:Process4.3.2—22一安全信息——j熏]【生:j
大连理工大学专业学位硕士学位论文3系统概要设计3.1架构设计该蜜罐系统主体采用管道过滤器体系结构,分多个进程,进程之间使用管道连接。如图3.1所示。蜜罐系统启动后共有三个程序运行。地址欺骗程序用于修改蜜罐运行的网络状态,虚拟主机程序用于实现蜜罐的主体功能,日志分析程序用于分析日志并发出预警。图3.1软件架构F遮.3.1softwarearchite虻mre3.2界面设计本软件运行与命令行模式下,不提供图形操作界面。提供系统启动命令,系统运行时设置命令和系统停止命令。所有提供的命令都运行在命令行模式下。3.3模块设计3.3.1系统HDO图图3.2是系统的H图,用于描绘软件的层次结构。在图3.2中,每一个矩形框代表一个模块,图中最顶层的矩形框表示系统中的主控模块,矩形框之间的连线用于表示模块之间的调用关系。
入侵检测蜜罐系统的设计与实现图3.2蜜罐系统H图Fig.3.2honeypotHchart图3.3是系统虚拟主机模块神图。图3.3描绘出模块的输入数据、加工和输出数据之间的关系。与层次图中每个矩形框相对应,图3.3描述该矩形框所代表的模块的具体处理过程,作为对层次图中内容的补充说明。在图3.3中左边的框中列出模块涉及的所有输入数据,在中间的框中列出主要的加工,在右边的框中列出处理后产生的输出数据;图中的箭头用于指明输入数据、加工和输出结果之间的关系。图3.4为检测风险级别模块ipo图。它与系统H图中的3.1模块相对应。描述了日志分析模块中输入数据、加工和输出数据之间的关系。3.4实现环境系统运行平台:UbtmtuLinux7.04编程语言:c、perl
大连理工大学专业学位硕士学位论文图3.3虚拟主机模块ipo图Fig.3.3virtualpcipochart图3.4检测风险级别模块ipo图Fig.3.4warnninglevelipochart一25.
入侵检测蜜罐系统的设计与实现4详细设计4.1地址欺骗模块详细设计地址欺骗需要在同一块网卡或者少量网卡上模拟出多个网卡的效果。根据网络组网方式的不同地址欺骗模块分三种情况使用不同的解决方案。4.1.1基于自动分配iP的地址欺骗动态分配ip网络通常使用dhcp服务为连入网络用户动态分配ip地址。因此使用砷欺骗技术可以实现将特定ip的数据包发送到指定的网卡。基于重用原则使用arpd系列软件。由于兼容性问题,这里选择farpd作为基于自动分配ip的地址欺骗的解决方案。4.1.2基于静态iO的地址欺骗对于这类网络,通常不提供dhcp服务。网络中每台机器有一个固定的ip地址在机器进入网络是分配好。对于这用网络使用asp代理技术。所谓的arp代理,就是用虚拟主机自身的MAC地址来冒充所要虚拟的主机的MAC地址,从而对ARP请求能够作出响趔19】。具体做法是,运行ARPD软件,这样,网卡处于混杂模式,可以接受LAN内所有的帧,并且不会丢弃。然后,从我们指定的网络地址范围中逐个取出ip,向外发送针对这个ip的arp请求包。如果这个ip当前已经被其他用户使用,那么会正常收到响应包;否则,就将虚拟主机的MAC地址代替,添加如arp表中。这样一来,由于虚拟主机网卡处于混杂模式,当外界有数据包发向虚拟蜜罐对应的地址时,查询arp表后顺利接收,上交处理。除了运行ARPD软件以外,还可以直接在虚拟主机的aria表中添加记录。如下所示:ar”202.195.151.22500一CO·26·8B一3F-05permanentpubaI”202.195.151.22700一CO-26-8B-3F-05permanentpub4.1.3基于绑定iP的地址欺骗这类网络通常会将网络中每台机器的MAC地址与一个提前分配的ip地址绑定,然后将绑定信息存贮在网络的交换机中。因此在这类网络中要实现地址欺骗需要设置相应的路由器,通过配置相应的路由表来实现。在最简单的情况下,虚拟蜜罐的D地址在我们的本地网中。我们用V1,V2⋯⋯,Vn表示。当敌人从因特网上发送一个数据包给Vi,路由器A接收到并且尝试着去交付这个数据包,路由器A查找路由表以找到给Ⅵ的地址。有这么几种可能的结果:由于没有可能的到达Vi的路由,A将丢弃数据包;A交付数据包给下一个路由器;或者Vi就在路由器能交付的本地网络序列中,因此A将
大连理工大学专业学位硕士学位论文直接把数据包交付给Vi。我们使用后面两种途径把对vi的通信交付给主机B(1≤i≤力时指向B)。在那种情况下,路由器把对虚拟主机的数据包直接交付给运行蜜罐系统主机。4.2虚拟主机模块设计对于虚拟主机模块我们在开源软件honeyd基础上进行扩展。之所以选择honeyd有以下几方面原因:(1)Honeyd最早是在Linux下开发的一款软件,延续了Linux精神,Honeyd免费开放源代码,能相互修改。(2)由于程序的模块化设计,Honeyd设计了很多功能的插件接口,人们可以方便地进行修改。(3)可以模拟的主机系统类型有500种之多,比如Wmdows、Linux、FreeBSD、CiscoRouter7200、ZyxelRouter等。(4)Honeyd占用的系统资源非常少贮oj。4.2.1honeyd主体结构如图4.1所示是honeyd的逻辑结构图。其中libnet和libpcap分别是用于抓包和发包的两个开发库。4.2.2honeyd软件设计图4.1honeyd主体结构图F远.4.1honeydslruetchart
入侵检测蜜罐系统的设计与实现(1)honeyd主函数的程序流程如图4.2所示是honeyd主函数的程序流程图。Honeyd主要调用函数有:Honeyd._recv._cb0、Honeyd_input()Honeydroute_packet0、Honeyd_delay__packet()Honeyd_de]ay_cb0、Honeyd_dispatch()tcprecv_cb0、udp_recvcbO、icmprecv.cb0数据包接收到后,Honeydrecvcb()函数开始工作。在逻辑上,它属于数据包分配器,做一些对数据包的基本检查,确保数据包正确无误。随后,Honeyd陷井的数据包进行路由转发或者直接转发,应用何种方式取决于是否使用了路由器。如果使用路由,那么数据包将交付给Honeydroutepacket()处理,Honeyd.routepacket()函数在处理数据包时会参考配置数据库中的配置数据,根据数据库中配置的逻辑链路,调用相关函数来处理TrL、Delay、Latency等参数,以体现数据包在网络拓扑内传输的特征。HoneydHoneyddelaycbO是个比较关键的函数,这个函数发送被延迟函数处理好的数据包。根据送来的数据包的FWN。FERNALIFWEXTERNAL标记进行分流。它借调用系统函数ip完成内部转发和外部转发;进而通过以太网的封装机制做成帧。协议处.sendO理机Honeyd数根据ip包的头部字段的类型,分别调用不同的协议处.dispatch()函ip.P理函数:t(:precvcbOludp。他们各自有各自的发送函数,但是.recv.cb()liemprecvcbO都要依靠Honeydipsend()。完成协议方面处理的数据包要先通过Honeydipsend()的加工,包括决定是否要参照路由表等重要环节。如果需要,那么调用HoneydroutepacketO,完成数据包从内部蜜罐主机遍历整个虚拟网络,以及附加参数的计算,打上FWEXTERNAL标记调用Honeyd发送。_delay(2)honeyd数据包处理的流程图4.3是honeyd数据包处理的流程图。Honeyd数据包分配器接收到数据包后,它首先检查IP数据包的长度,并且核查校验和【211。在分配器处理一个数据包之前,分配器将再次查询配置数据库中是否有配置符合端口m地址的蜜罐。如果没有详细的配置存在,就使用默认的处理模式进行处理。如果存在这样的详细配置,数据包和相应的配置将被转入协议管理器。
大连理工大学专业学位硕士学位论文图4.2honeyd主函数流程图Fig.4.2honeydmainfunctionflowchal嚏一29.
入侵检淝蜜罐系统的设计与实现—_强她’p。■l_:-=_}:??·2:::&嚣i啊垒:掣毡t一。匹毒:蔫⋯./蔓、.N《砥氟三磊矗≯.-:::-q二:.和pIL:移一lcMi4j:———---‘-●●,o74‘‘⋯“V...............】[........一瑟“,,虹÷:哆.,j强拼童:l雕辩(:,S剁.跳一.&≮毫二:>Y,05是警扔.:勉锉辫秽皇.....,...............j!:.............一魏玫勰瑟:较芏-rCP●tjDP...................!!:.........一ij0‘4:&羔乒.......:!LlC酗P擞敬黔既t图4.3Honeyd数据处理流程图Fig.4.3honeyddamprocessingflowchart①tcp数据包处理流程图4.4为数据处理中的t印数据包的处理过程。对于TCP数据包,协议管理器和服务处理单元能够建立特定服务的连接。服务其实就是标准的接受数据和发送数据的外部应用。服务的行为完全依赖于外部应用。当一个连接请求到达时,Honeyd框架检查数据包是否己经建立连接的。这样,任何的新数据都送到存在的应用中去。但是,一旦数据包含一个连接请求,这就要创建新的进程来处理每个连接。K一.~R..一垃,蒜。。.1甜童一
大连理工大学专业学位硕士学位论文图4.4top数据包处理流程图Fig.4.4tcpdamprocessingflowchal"t②udp数据包处理流程图4.5为数据处理中的udp数据包的处理过程。UDP数据包被直接的送到应用中去。当Honeyd框架接收到一个属于关闭端口的UDP数据包后,它将发送一个目的端口不可达信息的ICⅧ报文。③icmp数据包处理流程ICMP协议处理支持ICMP请求。通常在默认的模式下面,所有的蜜罐配置都响应回射请求端口的地址不可达信息。通过对配置数据库中配置的修改,也可以改变ICMP响应的行为。在发送ICMP不可达报文时,Honeyd允许敌人用Nmap工具去发现虚拟的网络拓扑。并且,虚拟的网络拓扑具有很好的伪装性。在一个数据包发送到网络上之
入侵检测蜜罐系统的设计与实现前,它还要经过特征引擎处理。特征引擎改变包的内容,使它能够符合源操作系统的网络协议栈。!厂一—』—]!竺竺竺三i。●。。。。’‘。。。。。。1。。。1●。。。。。。‘_。。‘。。。。‘。。。。。。。。。。。。。●。一”\\之/7/1r’rl返回icmp端口不可!查询对应的服务程达数据包.序,做出响应—图4.5udp数据包处理流程图Fig.4.5udpdataprocessingflowchart4.3Iibpcap库藤析Libpcap是一个与实现无关的访问操作系统所提供的,分组捕获机制的分组捕获函数库,用于访问数据链路层。这个库为不同的平台提供了一致的编程接口,在安装了Libpcap的平台上,以Libpcap为接口写的程序,能够自由的跨平台使用。操作系统所提供的分组捕获机制主要有三种:BPF(BerkeleyPacketFilter)、DLPI(DataLi!ll(ProviderInterface)及Linux下的SOCKPACKET类型套接口。Honeyd用这个库来对数据链路层进行访问。一在具体的实现中,我们采用了Libpcap的库函数来实现对网络数据包的捕获。Libpcap数据包捕获函数库,它实现了一个系统独立的API函数接口,其目的是统一不
大连理工大学专业学位硕士学位论文同操作平台上所提供的捕获数据包的接口,并使得类似的高层应用程序的编写和移植工作变得简单有效,不再需要对每个应用程序都用不同的数据包截获模块。Libpcap接口支持基于BSD数据包过滤BPF的数据过滤机制。可以把BPF过滤规则编译后装到分组捕获设备,信息的过滤可以有IP地址过滤、数据包类型过滤、TCP端口过滤等,采用了BPF信息过滤机制可以极大地提高数据采集模块的工作效率。Libpcap库结构如图4.6所示。图4.6Libpcap库结构Fig.4.6libpeapstmct主要的函数功能说明如下:(1)选择监听网络接口函数原型:char.peap_iook.updev(char,ebuo)功能:用于寻找本机可用的网络接口,调用成功就返回指向网络接口的指针。其中errbuf为函数调用失败时返回的错误信息字符串。
入侵检测蜜罐系统的设计与实现(2)建立监听会话函数原型:char*pcap_openlive(char宰device,hatsnaplen,intpromise,inttoms,char牛ebu)功能:用于获取一个包捕获器描述符,调用成功就返回监听会话旬柄。其中,device为指向网络接口的指针、snaplen定义了监听程序所捕获的最大字节数、promise定义了是否将网卡设置为混杂模式、toms表示读操作等待的毫秒时间、ebuf为函数调用失败返回的错误信启、字符串。(3)编辑过滤器函数原型:hatpcapcompile(pcapeet*p,structbpf,rogam木fp,char水slr,intopfimize,bpfaes,int32netmask)功能:将字符串形式的过滤要求编译成二进制形式存储在bpf_rogram结构中。从而实现通过设置过滤起来捕获感兴趣的数据。其中,P为指向监听会话旬柄的指针、bpf为指向结构bpCrogram的指针、用于存放编译后的BPF程序、str为tcpdump表达式字符串指针、optimize为优化标志、netmask是予网掩码。(4)设置过滤器函数原型:char*pcap_setfilter(pcapest*p,structbpf__gro辱"am*P)功能:通过调用本函数,设置内核过滤器使得编译了的过滤器生效。其中,P为指向监听会话句柄的指针+、审为指向结构bpf_program的指针,一般为函数pcap_compile编译后的结果÷也可以用手工编BPF代码。(5)捕获并处理数据包函数原型:intpcap*loop(pcap_t宰P,hatcnt,pcaphandlercallback,a_char木user)功能:捕获并处理数据包。其中,P为指向监听会话句柄的指针、ent为指定函数返回前所处理数据包的最大值(值为负时表示处理缓冲区中所有的数据包,为0时表示处理所有的数据包),直到读取到EOF错误为止,callback参数指定带有3个参数的回调函数,USer为用户传递给回调函数的指针,通常设置为null。(6)用户自定义的回调函数函数原型:voidcallback(u_char木args,conststructpcap,kthdr幸header,constu—char木packetloop)功能:在pcap函数每捕获到一个数据包后被自动调用,用于对捕获到的数据包进行用户自定义的..10处op理。其中,args为从pcap_loop函数传递过来的u—char指针、pheader为指向pcapkthdr结构的指针、packet是指向所捕获的数据包的指针。(7)关闭监听会话旬柄函数原型:voidpcap_close(pcap木p)
大连理工大学专业学位硕士学位论文功能:关闭监听会话句柄,并释放资源。通过Libpc印函数库,我们得到了网络中传输的原始网络数据包,为了从中得到可理解的数据信息,接下来就要对原始数据包进行解析,也就是进行网络协议的解析工作[20.22】o4.4日志分析模块详细设计4.4,1日志分析模块主函数日志分析模块的主函数是一个无限循环。每次读取一条新的日志信息,并交给处理模块处理。如果日志无新信息则进程休眠一段时间然后重新读取直到有新信息为止。如果读入的是结束信息,则程序退出。··—————-———-/厂——————_k——————————————一11两蕊■}。——_一}<垂多Y盛,.——L~.f结束j‘..————.———————/,图4.7日志分析模块主函数流程图Fig.4.7loganalysismainfunctionflowc瞰4,4.2分析日志信息流程如图4.8所示是系统分析日志信息流程图。该过程首先将日志信息与安全历史数据库比较,如果数据库中有对应的历史记录就更新历史记录,然后根据更新的历史记录产
入侵检测蜜罐系统的设计与实现生预警信息。如果没有对应的历史记录,则建立一条新的历史记录然后根据这个历史记录生成预警信息。不论哪种情况都要更新历史数据库以保证历史数据库存储的是最新的安全信息。Y——厂一—上——]:匹配安全历史信息;数据库fI更新历史信息数据库上输出预蝥信息图4.8分析日志信息流程图Fig.4.8analysislogdataflowchart
大连理工大学专业学位硕士学位论文5实现与部署5.1虚拟主机模块关键技术5.1.1honeyd指纹匹配相关函数Honeyd的特征引擎是由相关的函数参考配置数据库中的参数,然后分别对各自的数据包进行指纹处理得到的。这些被处理的主要由TCP、UDP和ICMP数据包∞】。处理这些数据包的函数的功能分别介绍如下:。(1)Tcp_sendO负责发送基于TCP协议的数据包,重要的是,它对即将发送的数据包进行改动,修改报头,使其看上去和对应的操作系统的特征准确地吻合,以达到欺骗的效果。因而此函数只是在通过查询特征库后,得到返回的id(口报头的标识字段的值),调整其他参数,封装成P包发送(调用Honeydipsend),调用时传递的参数有:structt印con*coil、uint8一tflags、u_ehar*payload、u_intlen。Tep_con*con,它的内部值涉及了当前TCP连接的基本信息:如IIl端口以及其它一些TCP控制相关的参数、flags当然是TCP报头中要用的标志位、payload是指向负载数据的指针。Tep的流程如图5.1所示。.send其核心代码如下:intwindow=16000;/*默认了窗口是16000字节车/uintl6tid=rand_uintl6(Honeyd_rand);/*随即产生id标识幸/If(tep__personality(eon,&flags,&window,&dontfragment,&id,&options)一-1){if(flags&TH_RST){严如果没有匹配到对应的特征库,且准备发送宰/options=NULL;/*复位连接标志,那么报头中不设置option选项宰/window-con->window;)elseif(flags&TH_SYN){产否则,如果是SYN请求包,那么默认填写m*/options="m”;))
入侵检测蜜罐系统的设计与实现一-,‘begin,一...............:!!:.................一缀鬈冀篡篡,游——.≮一77蠢配’、!!型兰墼“L,!≥一。N...。.................j【................一暖{籀:flagh笺£矗‘)priorij譬眷;,lcgm。ntt£成ip色—.......................:!:...。.......,.......一如皱’Fop也匀Ip色溺ⅢtcP-per∞nal”’’l,搿列运”j鸵lSN,.、t:·≠i毒≯-二‘·一~-..·,...................:I:..。.......一溉移10缸咎敬...............j::.........一一t£磁蟊二分阪j:÷I!毪j≯4避喇lcP-personalit~‘一option竣宛征”f勺劣..........................,.j!!:....一一;}弓o“。ydip—endl·图5.1tm5一send0函数流程Fig.5.1top_send(、flowchart其中调用的函数tcp__personality()(返[]ISN,windows等参数)在对将要回应的数据包作处理前,先根据数据包的内容进行判断,决定这个包是否属于使用Nmap工具进行扫描而发出的包。因为作者NielsProvos在对蜜罐的配置过程中,就是参照了Nmap工具,了解如何使TCP/UDP协议下的行为方式符合Nmap的响应。测试远程系统指纹的方法是连续作出7个测试:FingerprintIRIX6.5.15monSGl02Tseq(Class=TD%gcd=<104%SI=∑—____-___--_o-oh●_■■■___o-----。--●■-■-_■-■_■-●■一Y;.....................:!:.............一!获褥爱礁静id轹识蟹谣用tep—personality—l镧f)遂嘲ISN,佟兔藏替掰竣譬默滔、选颈俊图5.2Nmap探测过程Hg.5.2NmapdetectionflowChal"t一39.
入侵检测蜜罐系统的设计与实现如果专门去特征库中匹配一个特征,而且找到了,那么数据包中的option选项不能为空。因为按照请求包的要求,我们找到了目标系统的特征库,那么说明这个包是对那个Nmap探测的回应。所以,选项不能为空,除非回复包没有涉及到一个完整的操作系统的特征。在7个TCP探测测试中,仅有一对可以返回带有SYN标记的数据包。需要去除某几个包的SYN标记。核心代码如下:If(options!=NULL)tep__personality_options(con,tcp.options);/木判断包是否含有option选项牛/ip_pack_hdr(pkt,0,iplen,id,dontfi-agrnent?IP_DF:0,/奉构造口包幸/Honeyd_ttl,IP_PROTO_TCP,con一>con_ipdst,con->con__ipsrc);Honeyd_ip_send(pkt,iplen);/唪发送木/(2)Udp_send()负责发送基于UDP协议的数据包,发送前必须参考特征库,修改适当的报头。参数涉及structudp_con*con,下为有关UDP连接的数据结构:u,u数据负载和长度.char*payloadintlen;//ip.根据这个连接中的模板的特征,产生正确的id标识.personality(con>tmpla牢i分d)配;//pla砷ool_ailoc(pool__pkt);/资源,并且封装成ip包木/UDP=(STRUCTUDP_HDR宰)(PKT+IP_HDR--LEN);udp_paek_hdr(udp,con·>con_dport,con->con_sport,UDP_HDR_LEN+len);ip_pack_hdr(pkt,0,iplen,id,dontfi"agment?IP_DF:0,Honeyd_ttl,IP_PROTO_UDP,con·>con_ipdst,con一>con_ipsre);ipchecksum(pkt,iplen);/*计算校验码木/Honeyd_ip_.send(pkt,iplen);/拳发送掌/(3)Icmp—sendO负责发送基于ICMP协议的数据包,发送前,同样必须参考特征库,修改适当的报头。具体实现的时候,通过改变P包的头部信息,来做到和操作系统特征相符和。比如code、ipid、tos、offset等参数都要传递过去,这样特征匹配函数icmp_personality0就可以控制了。i蜘npl!三NULL)严根据定义的模板的属性,得到正确的id标识掌/
大连理工大学专业学位硕士学位论文ip..personality(tmpl,&ipid);else.ipid--rand_uintl6(Honeyd_rand);ip_pack_hdr(pk"t,tos,iplen,ipid?df?IP_DF:0,ttl,IP__PROTO_ICMP,src,dSt);Honeydipsend(pkt,iplen);’⋯一,●,一5.1.2honeyd网络相关函数蜜罐网络的虚拟主要是通过以下几个主要函数来完成,首先在配置数据库中给定需要虚拟的网络拓扑参数,在运行的过程中,函数会根据配置数据库中提供的参数来虚拟网络。主要参与处理的函数有Honeyd_delay_eb0、Honeyd_delay__packet()、Honeyd。这些函数分别处理延迟、路由和丢包等过程处理。主要参与虚_route_packet()拟网络的函数及其功能为:(1)Honeyd__route__packet0沿着经过的链路,将TTL、Delay、Latency,等参数附加到数据包内部。负责查询路由,”返回那个数据包的流向:FW!rcrZRNALIF"~V即向内流,.EXTERNAL[FW.DROP向外流或者丢弃。这里出现FWEXTERNAL的原因是,当内部的蜜罐主机要向外发送一个响应的数据包时,也必须严格按照规则,即从起始位置,遍历整个树结构,因而也将调用这个函数。具体流程为:①找到匹配的路由器模拟的蜜罐r=routerfmd(&host)所有模板都包含在一个二叉树中,这里进行遍历树的操作。②从那个地址开始,作为入口,查询虚拟的网络拓扑结构,最终找到目标D所在主机。其核心代码如下:while(addr_cmp(&host,addr)!=o&&⋯ip>ip_ttl)严直到TrL为0或者目标一个路由器结束幸/{if((rte--network_lookup(r->routes,aaar))钏ⅡI,){if(r->flags&ROUTER_ISENTRY){external=1;break;
入侵检测蜜罐系统的设计与实现)if(rte->gw!=NULL&&lastrouter-一-rte一>gw)gotonoroute;if(rte->type==ROUTETUNNEL)break;if(rte->type==ROUTE_LINKl[rte->type—RClUTE1腿ACH)break;具体实现流程为,将目标】:P和当前路由器比较。①如果订L为0或者目标就是一个路由器,那么就跳出循环,将目标IP地址和当前路由器负责的地址范围进行比较。②如果不属于那个范围,而且当前路由器是一个接入路由器时,那么可以肯定数据包是流向外网的,立刻跳出循环。③如果遍历到某个路由器,它的管辖范围涉及GRE通道或者配置时设置了不可到达UNREACH,那么也要跳出。④如果某次遍历成功,那么就要按照链路的属性给数据包计算附加信息。实现代码为:if(1ink->latency)del∞件=link一>latency;elsedelay+=3;if(1ink·>bandwidth){intms=iplen掌link->bandwidth/link->divider;structtimevalnow,t、,;tv.tv_sec=ms/1000;tv.tv_usec=(ms%l000)木1000;timeradd(&link一>tv_busy,&tv,&link一>tVJus”;del∞件--ms;)if(1ink一>packetloss)packetloss掌=l-((double)link一>packetloss/10000.O);
大连理工大学专业学位硕士学位论文这样,就可以模拟真实情况下,一个数据包遍历某个网络拓扑时的过程了。在找到最后那个直接管辖目标主机的路由器之后,进行以下处理:产根据链路的丢包率情况,随即产生一个值,决定包的命运木/packetloss=(1-packetloss)宰10000;if(rand_uint16(Honeyd__rand)%10000typ吲tOUTEI刀源EACH){syslog(LOG_DEBUG,"ds侈%sunreachableatgⅣ%s”,addr_ntoa(addr),strgw);trnpl--template_find_best(addr_ntoa(addr),ip,iplen);Honeyd_delay__packet(tmpl,ip,iplen,&host,NuLL,delay,DELAY_UNREACH);retum(FW_DROP);)产如果路由器是找到了,但是它却被配置成不可到达某个网段,那么也不得不丢弃这个包车/return(external硎里XTERNAL:FW_INTERNAL);/*external的初始值为0,在上面的操作中,根据不同情况改变external的值;最后返回的时候,就是根据它的值如果为0,返回FWINTERNL,否则FWEXTERNAL*/到这里,Honeyd_input0-’调用Honeyd_route_packet0束。在遍历过内部网络后,数·据包的流动方向已经明确,返回到honeyd_inputoi函数。if(ms醐pROP)retuFll;i坟暂es—-FW.-EXTERN触_一){if(inter!=NULL&&inter->if__ent.intf_link_addr.addr_typC=ADDRn固E_ETH){
入侵检测蜜罐系统的设计与实现syslog(LOG_DEBUG,"Norouteto%s",addr__ntoa(&addr));return;}elseflags!=DELAY_EXTERNAL;,elsetmpl=templatefind_best(addr_ntoa(&addr),ip,iplen);Honeyd_delay_packet(tmpl,ip,iplen,NULL,NULL,delay,tlags);//送N-F--个函数处理(2)Honeyd_delay__packet()主要负责计算数据包在经过路由处理时的延时。代码如下:timeout_set(&Aelay->timeout?Honeyd_delayeb,delay);timerclear(&tv);tv.tvsee--ms/1000;“7.tv_usec=(ms%1000)书1000;fimeoutadd(&delay->timeout?&tv);(3)Honeyd_delay_cb0发送数据包,根据送来数据包的FWINTERNALIFW分流,借用系统.EXTERNAL函数ipsend()完成内部转发和外部转发,进而通过以太网的封装机制做成帧,通过所处的局域网送到外部蜜罐的攻击者那里。到这里的数据包分为两种:①从外网传送进来的可疑的数据包,继续向程序内部流动;②来自虚拟的网络内部的数据包,某些连接在建立成功之后,存在数据的交互。,内部的蜜罐要向外发送数据包,其最终形式都是通过调用Honeydipsend(),进而调用.Honeyd_route__paeket(),经过延时处理Honeyd_delay_packet(),交给Honeyddelay_cb0,借助系统函数ip__sendO送出去。可以这么说,Honeyd_delay_cb0是数据包分流的关卡。支持以下几种情况。①TTL=O(数据包被丢弃,发送ICMP超时消息),代码如下:if(!ip·>i”n)ip->ip--m++;
大连理工大学专业学位硕士学位论文ip_checksum(ip,ip->ip_hl<<2);icmp_errorsend(tmpl,&delay->src,ICMP_TIMEXCEED,ICMP_TIMEXCEED_INTRANS,ip);//EXTERNAL标记一表明流向外网if(delay->flags&DELAY_EXTERNAL){ip_checksum(ip,iplen);if(ip_send(Honeyd_ip.ip,ipl=)!--ipl=){hatlevel=LOG_ERR;i坟钮1110==EHOSTDO、VNllemlo=一EHOSTuNREACH)level=LOG—DEBUG;syslog(1evel,"couldn’tsendpacket:%m”);)。②UNREACH标ia(3tNICMP—UNREACH消息),代码如下:if(delay->flags&DELAY_UNREACH){ip一>ipttl++;ip_checksum(ip,ip·爿p_埘<<2);iemp_errorsend(tmpl,&delay->src,ICMP_UNREACH,ICMF_UNREACH_NET,ip);)③Tunnel(要进行GRE封装),代码如下:if(delay->flags&DELAY_TUNNEL){ip_checksum(ip,iplen);if(gre_encapsulate(Honeyd_ip,&delay->src,&delay->dst,ip,iplen)一1)syslog(LOG_ERR,"eouldn’tGREencapsulatepacket:%m”);>④灿心(要封装成帧发送),代码如下:一45.
入侵检测蜜罐系统的设计与实现if((req:arp_find(&addr))=一NULL)arp—request(inter,&addr,Honeyd_ether_cb,ip);elseif(req->cnt---·I)Honeyd—ether_cb(req,1,ip);⑤其他情况(如有必要,完成数据包的重组之后,向内部虚拟网络转发)if((ipoff&IP_OFFMASK)iIfipoff&IP.-MF))rLstructiphdr木nip;u—short.mplen;if(ip_fragment(tmpl,ip,iplen,&nip,&niplen)--w-0)Honeyd_dispatch(tmpl,nip,niplen);检查是否存在分片情况,有分片则进行重组,调用ip_fi"agmentO数,然后调用Honevd_dispatch()进行基于协议方面的处理。否则,直接调用Honeyd_dispatchO。Honeyd—diSpatcb()根据IP包的头部ip_p字段的类型,分别调用不同的函数。暂时仅支持3种协议:TCP、UDP和ICMP,否则记录之后,数据包就被丢弃了。其代码如下:switch(ip->ip__p){caseIP—PROTQ3CP:tcprecv_cb(tmpl,(u_ehar*)ip,iplen);/木专门负责接收基于TCP协议的数据包木/break;c,aseIP——PROTO——UDP:udprecv_cb(tmpl,(u_char*)ip,iplen);/*专门接收基于UDP协议的数据包宰/break;caseIP—.PROTO——ICMP:iemprecv_cb(tmpl,(uchar木)ip,iplen);/*专f-]接收基于ICMP协议的数据包牛/break;default:/*其他的协议类型,忽略幸/)iphdr.ip_src--ip一>ip__src;
大连理工大学专业学位硕士学位论文iphdr.ip_ds仁ip一>ip_dst;iphdr.type=一l;Honeyd__log_.probe(Honeyd_log-fp,ip一>ip-J,&iphdr,iplen,0,NULL);5.1.3虚拟主机配置虚拟主机配置保存于配置数据库中,配置情况如下。表5.1为所有检测ip的默认配置。表5.1所有ip默认配置Tab.5.1defaultconfigureforallip表5.2为虚拟主机模板Xp的配置情况。指定其操作系统为”MicrosoftWindowsXPHomeEdition”。表5.2虚拟主机模板xpTab.5.2virtualpcmodelxp
入侵检测蜜罐系统的设计与实现以下规则设置虚拟主机模板使用的网卡类型以及绑定到这个模板的ip地址:selxpethemet”3corn”bind192.168.0.180xpbind192.168.0.181xpbind192.168.0。182xp表5.3为虚拟主机模板xppro的配置情况。指定其操作系统为”MicrosoftWindowsXPProfessional”。表5.3虚拟主机模板xpproTab.5.3virtualpcmodelxppro以下规则设置虚拟主机模板使用的网卡类型以及绑定到这个模板的ip地址获取方式,使用物理主机上的第一块网卡获取ip:setxpproethemet’’3corn”dhcpxpprooneth0ethernet”3corn”
大连理工7:学专业学位硕士学位论文5.2日志分析模块实现5.2.1主函数实现主函数不实现具体功能,只是建立检测循环。代码如下:charbuf[80];struotLogInfoinfo;intlevel;while(1){if(gets(buO—NULL)//读取日志{sleep(300);continue;)∥分析日志checkm‘&info);//匹配历史数据库level=chec如B(info);{}颈警alert(1evel);}returnO;5.2.2具体功能函数(1)checkOcheck函数负责分析日志条目,从中解析出与虚拟主机同信的ip地址,通信协议等信息。日志条目用逗号分割固定数目的字段,在check函数中使用正则表达式分别匹配每个字段然后将需要的信息写入参数所指向的空间中。(2)checkDBO
入侵检溅蜜罐系统的设计与实现check_DB函数读取历史数据库然后匹配出安全级别。历史数据幸是一个存放哈希表的二进制文件。其中使用远端ip地址作为key,协议类型、连接次数是值中保存的信息。函数使用qdbm库实现对文件的存取。数据库中值的结构为:“icmp:分值:次数,tcp:分值:次数:lastport,udp:分值:次数:lastport,”。风险级别算法:风险级别分10级从l到10。虚拟主机作为目的主机的情况下tCp和icmp协议第一次连接风险级别为2,udp协议风险级别为1。初始值:udp为1分,icrnp和tcp为2分。连接次数对应的协议为1其他为0。非初始值:icmp协议:。Ⅲa’rctan雠\zo÷辅二牟谊:=.................。.二......................—二二分僵=————————二·i————————二暑(5.1)tcp和udp当端口不同时:分值=tcp和udp当端121相同时:姒一n降÷燮:tO)‘剜直墨————————∑——胃—————————-一2风险级别=堕垫堡坌堕兰塑垫2a鎏3坌堕±婴蔓堕鳖坌堡(5.2)(5.3)(5.4)其中updateDB函数将新的远端ip信息加入数据库或将已存在的远端ip信息更新。updateDB函数也使用qdbm函数库实现对数据库文件的写入。(3)alert0alert函数根据checkDB返回的风险级别向管理员发出预警信息。懂|。一訾一冀i鸬专n一凇一竺,_叭一
您可能关注的文档
- xx蜜月旅行解决方案可行性研究报告可编辑
- 蜜桑白皮生产工艺规程
- 江西汪氏蜜蜂园上海分公司管理(shen)
- 东莞地区蜂蜜市场营销战略
- 蜂蜜水瘦身法排毒又减肥
- 蜂采百花酿甜蜜人读群书明真理——谈小学生课外阅读的必要性
- 《蜜蜂总动员》台词
- 昆虫卵黄原蛋白功能多效性以蜜蜂为例doc
- 蜂蜜浓度计蜂蜜水分计蜂蜜波美度测试仪
- 蜂蜜能预防龋齿?误传而已
- 邵阳蜜桔品种多
- 菠萝蜜及医用食用
- 蜂蜜结晶是怎么回事
- 我只在乎你万水千山总是情甜蜜蜜(简谱)
- 中苏关系蜜月时期赫鲁晓夫的对华政策
- 乳化蜂蜜微波杀菌工艺及其保鲜研究
- (果树学专业论文)酵母、天然香料、灰霉对蜂蜜酒发酵及品质影响的研究
- 几种常用农药助剂对意大利蜜蜂急性经口毒性及生理生化影响