虚拟蜜罐软件Honeyd(v1.0)简介、安装与使用文档

虚拟蜜罐软件Honeyd(v1.0)简介、安装与使用文档
The Artemis Project/狩猎女神项目组
诸葛建伟,梁知音
1.Honeyd软件简介
Honeyd是一款非常优秀的开源虚拟蜜罐软件,由Google公司软件工程师Niels Provos 于2003年开始研发,2005年发布v1.0正式版,目前已发布了v1.5b。
Honeyd能让一台主机在一个模拟的局域网环境中配有多个地址(曾测试过的最多可以达到65536个),外界的主机可以对虚拟的蜜罐主机进行ping、traceroute等网络操作,虚拟主机上任何类型的服务都可以依照一个简单的配置文件进行模拟,也可以为真实主机的服务提供代理。工业区位论
Honeyd可以通过提供威胁检测与评估机制来提高计算机系统的安全性,也可以通过将真实系统隐藏在虚拟系统中来阻止外来的攻击者。因为Honeyd只能进行网络级的模拟,不能提供真实的交互环境,能获取的有价值的攻击者的信息比较有限,所以Honeyd所模拟的蜜罐系统常常是作为真实应用的网络中转移攻击者目标的设施,或者是与其他高交互的蜜罐系统一起部署,组成功能强大但花费又相对较少的网络攻击信息收集系统。
2.Honeyd的设计与实现
2.1. 网络数据收集
Honeyd被设计用来应答目标地址属于模拟蜜罐范围之内的网络包。要让Honeyd 能够接受到发送给虚拟蜜罐的数据包,必须要正确的配置网络。有几种方法可以实现网络的配置,如为指向Honeyd主机的虚拟IP建立特殊的路由、使用代理ARP或者使用网络隧道等。
这里我们假设A为网络路由器的IP,B是Honeyd主机的IP,最简单的情形是,虚拟蜜罐的IP位于局域网范围之内。我们标识他们为V1,V2……Vn,当攻击者通过互联网发送一个数据包给蜜罐Vi,路由器A会接受到数据包并试图发送该数据包。路由器会查询路由表来决定该将发送到Vi的包传递到哪里。数据会有3种处理方式:
当没有路由指向Vi时,路由器会丢弃该数据包;
路由器A将数据包转发到另一个路由器;
Vi位于路由器所在的局域网范围之内,路由器A可以直接将数据包传送给Vi.
孙吉林
图 1 路由方式
为了将到Vi的数据流导向Honeyd主机B,我们可以使用下面两种方法:
KAD网络
最简单的方法是将到Vi的路由入口设置为指向B,这样一来,路由器转发到虚拟蜜罐的数据包将会直接发送到Honeyd主机。
如果我们没有配置特殊的路由,路由器会使用ARP指令来查询虚拟蜜罐的MAC地址。但由于没有响应的虚拟主机,ARP查询会得不到应答,路由器在重试几次后就会将数据包丢弃。此时,我们可以配置让Honeyd主机利用自己的MAC地址去响应针对Vi的ARP查询。这种方法就称之为代理ARP。代理ARP允许路由器将发送到Vi的数据发送到Honeyd 主机B的MAC地址。
在更复杂的环境下,可以将一段网络地址空间通过网络隧道连接到Honeyd主机。我们可以使用一般路由封装(generic routing encapsulation,GRE)等隧道协议。
2.2. Honeyd软件体系结构
Honeyd体系由几个组件构成,这些组件是配置数据库、中央包分发器、协议处理器、
个性引擎和可选路由构件。如下图所示:
图 2 Honeyd软件体系结构图
系统接受到的数据会由中央包分发器进行处理,首先中央包分发器进行处理会检查IP 包的长度,修改
包的校验和。Honeyd框架响应的是最主要的3种互联网协议:ICMP, TCP 和UDP,其他协议的包在被记入日志后会被悄悄丢弃。
在处理数据包之前,分发器会查询配置数据库以查到一个符合目标地址的蜜罐配置。如果没有特定的配置存在,系统会采用默认配置模板。给定配置后,数据包和相应的配置会被转交给相应的协议处理器处理。
ICMP协议处理器支持多数的ICMP查询。默认情况下,所有的蜜罐配置都会响应echo 请求,并且处理“destination unreachable”消息。其他请求的处理主要依赖于个性引擎的配置。
对于TCP和UDP包,Honeyd可以建立到任意服务的连接。这些服务是外部的应用程序,可以通过标准输入输出来接收和输出数据。不同于为每个连接创建一个新进程,Honeyd 支持子系统(subsystem)和内部服务(internal service), 子系统是一个运行在某个虚拟蜜罐的名称空间下的应用程序,子系统的特定应用是在相应的虚拟蜜罐实例化的时候创建的。一个子系统可以绑定端口、接收连接和创建网络连接。子系统是作为外部进程运行的,而内部服务则是一个Honeyd内部运行的python的脚本。内部服务要求的资源比子系统更少,但只能接收连接,不能创建网络连接。
UDP数据报文会直接传递到应用程序,当接收到一个发送到关闭的端口的数据报文的时候,如果个性化配置中没有设置禁止的话,系统会发送一个端口不可达消息。在发送端口不可达消息的时候,系统
路易斯康允许网络映射工具如traceroute来查探网络路由。
除了可以建立到本地服务的连接外,Honeyd还支持网络连接的重定向。这种重定向可以是静态的,也可以是与网络连接的四个参数相关(源地址与源端口,目标地址与目标端口)。重定向使得我们可以将一个到虚拟蜜罐上的服务的连接请求转发到一台真实服务器运行的服务进程。
自由设计
在发送数据到外部网络之前,数据包会经由个性引擎处理。个性引擎会修改数据包的内容,使得数据包看上去和从指定配置的操作系统的网络栈中发出的一样。
2.3. 个性引擎
不同操作系统的网络栈处理各不相同,这导致他们所发送的数据包具有各自不同的特点。网络攻击者常常会使用一些网络指纹识别工具,如Xprobe、Nmap等来分析接收到的数据包的特点,从而达到收集目标系统信息的目的。
对Honeyd来说,在被指纹识别的时候不要暴露出来是非常重要的。为了使得虚拟蜜罐在被探测得时候显得像真实主机一样,Honeyd模拟给定的操作系统的网络栈行为,我们称之为虚拟蜜罐的“个性”。不同的虚拟蜜罐可以被赋予不同的“个性”。“个性引擎”个性化虚拟蜜罐的网络栈行为的方法就是:在每个发送出去的数据包的协议头中引入适当的修改,使得数据包符合指纹识别软件预期的操作系统的特征。
Honeyd利用Nmap指纹库作为TCP连接和UDP连接个性化的参考,利用Xprobe指纹库作为ICMP连接个性化的参考。
2.4. 路由拓扑的实现
Honeyd可以模拟不同品牌和类型的路由器,也可以模拟网络连接的时延和丢包现象。当我们使用traceroute等工具进行网路映射时,网络流会表现得与配置的路由器及网络结构一致。当我们模拟路由拓扑时,是不可以使用代理ARP将数据包传递给Honeyd主机的,我们必须要配置路由将虚拟蜜罐所在的网络空间指向Honeyd主机。
通常情况下,虚拟路由拓扑是一个树形结构,该树以数据包进入虚拟网络拓扑的入口作为树根。树的每个内部节点代表一个路由器,每条边代表一个有时延和丢包现象的链路。树的终端节点与网络上的主机节点相对应。Honeyd架构支持平行共存的多个网络入口。
接收数据包的时候,系统会到合适的入口路由,从根部开始,周游路由树,直到到包含数据包目标IP地址的节点。每条网络连路上的丢包率和时延会被累积计算以确定一个包是否该被丢弃、该被推迟多长时间后再传递等。当数据包路由途中经过一个路由器时,Honeyd框架也会消耗该包的TTL。当一个包的TTL变为0的时候,该包会被丢弃,系统会发送一个ICMP的超时消息,该消息会包含使该包TTL减到0的路由器的IP地址。
在模拟网络时,我们也可以将真实的系统集成到虚拟路由拓扑中。当Honeyd框架系统接收到一个发送给真实系统的数据包时,该数据包会同样的周游该网络拓扑,直到发现一个可以直接响应该真实系统所处网络空间的虚拟路由器。需要的时候,Honeyd框架系统会发送ARP请求来确定真实系统的硬件地址,然后将该数据包封装在一个以太网帧里发送给该地址。类似的,Honeyd框架系统也可以利用相应的虚拟路由器来响应真实系统所发送的ARP 请求。
我们也可以利用GRE通道来劈开路由拓扑,这样就可以用不同的Honeyd主机来代表地址空间的不同部分,从而在几个Honeyd装置间取得负载均衡。使用GRE通道还可以将属于分离的地址空间的网络委任给同一台Honeyd主机。
反向路由时,一个数据包出去的通道选择既与源地址有关也与目标地址有关。
2.5. 记录日志
Honeyd 软件框架支持多种记录网络活动日志的方法,Honeyd可以记录并报告所有协议的尝试连接与完成连接的日志,也可以配置成以人工可读的方式来存储蜜罐系统所接受到
所有数据包。同时,服务程序也可以通过标准错误输出向Honeyd报告它们收集到的网络信息。Honeyd还可以与网络入侵检测系统结合用来获取更多更全面的网络入侵的信息。
3.Honeyd的安装手术器械包
本文档中Honeyd安装基于CentOS v4 Linux平台。
3.1. Honeyd软件的依赖库安装
Honeyd软件依赖于Libevent事件处理API、Libdnet数据包构造与发送库、Libpcap数据包捕获库、Libdnsres DNS反向解析函数库以及Arpd工具。本文撰写(2006/10/11)时Honeyd 软件依赖的这五个共享库的项目站点及最新版本如下:
Libevent项目站点:/~provos/libevent/
Libevent最新版本(2006/8/9):/~provos/libevent-1.
Libdnet项目站点:libdnet.sourceforge/
Libdnet最新版本(2005/1/19):
prdownloads.sourceforge/libdnet/libdnet-1.?download
Libpcap项目站点:/
Libpcap最新版本(2006/9/19):/release/libpcap-0.9.
Libdnsres项目站点:/~provos/libdnsres
Libdnsres最新版本(2005/9/23):/~provos/libdnsres-0. Arpd最新版本:www.citi.umich.edu/u/provos/honeyd/arpd-0.
Honeyd软件依赖库的安装过程如下:
Libevent库:
Libdnet库:
Libpcap库:CentOS 4.0中自带Libpcap-0.8.3-10.RHEL4

本文发布于:2024-09-22 17:30:10,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/214730.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:数据包   网络   系统   蜜罐
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议