前言:虚拟蜜罐是由一台计算机模拟的系统,但是可以响应发送给虚拟蜜罐的网络流量,今天我们来浅析一下虚拟蜜罐。
蜜罐可以运行任何操作系统和任意数量的服务。蜜罐根据交互程度(Level ofInvolvement)的不同可以分为高交互蜜罐和低交互蜜罐。蜜罐的交互程度是指攻击者与蜜罐相互作用的程度,高交互蜜罐提供给入侵者一个真实的可进行交互的系统,相反,低交互蜜罐只可以模拟部分系统的功能。高交互蜜罐和真实系统一样可以被完全攻陷,允许入侵者获得系统完全的访问权限,并可以以此为跳板实施进一步的网络攻击。相反的,低交互蜜罐只能模拟部分服务、端口、响应,入侵者不能通过攻击这些服务获得完全的访问权限。
蜜罐分为高交互蜜罐、低交互蜜罐 、物理蜜罐 、虚拟蜜罐。从实现方法上来分,蜜罐可分为物理蜜罐和虚拟蜜罐。物理蜜罐是网络上一台真实的完整计算机,虚拟蜜罐是由一台计算机模拟的系统,但是可以响应发送给虚拟蜜罐的网络流量。今天我们来浅析一下虚拟蜜罐。
对比物理蜜罐而言,虚拟蜜罐要容易的多。可以在一台计算机上部署数千个蜜罐,代价低廉,几乎所有人都可以很容易的使用它们,并且使得其更加容易维护以及较低的物理需求。很多时候我们会使用VMware或者用户模式的Linux (UML)等来建立虚拟蜜罐,这些虚拟系统工具可以在一台物理计算机上运行多个蜜罐系统及应用程序来收集数据。
虚拟蜜罐通常会模拟出真实的操作系统,并将其部属在一台宿主主机上。在虚拟系统中虚拟出漏洞,产生虚假的流量,伪装不存在的文件地址,存储真实但无意义的文件,对网络中的各种信息进行模拟等,来更好的吸引入侵者的攻击虚拟蜜罐。
一是IP地址的空间欺骗。用一台主机就可以完成,利用在一个网卡来分配复数个IP地址,并对每一个IP地址配置单独的MAC地址,可以完成多个主机的虚拟。
第二个是仿真网络流量。因为虚拟蜜罐在一般情况下不会与其他主机主动进行交互,也就没有任何的网络流量,容易被入侵者根据这一点识破虚拟蜜罐。所以产生方针流量以后,可以欺骗入侵者,使入侵者无法通过对流量的观察来判断虚拟蜜罐的存在。
第三个是系统的动态配置。在正常状态下,一个虚拟蜜罐的状态是静态的,没有交互和网络流量,一些有经验的入侵者可以通过观察系统的状态来判断是否是虚拟蜜罐。而系统的动态配置正是针对这一点,虚拟蜜罐的系统状态会不断的发生变化,会尽可能的模拟一个真实系统的行为,防止入侵者轻易的就发现虚拟蜜罐,导致其失去作用。
第四个是组织信息欺骗。可以在虚拟蜜罐里设置一些个人信息,或者存储一些没有意义的虚假信息、文件等,可以让虚拟蜜罐看起来更像是一个有人使用的真实系统,增加对入侵者的迷惑性。
第五个是端口重定向技术。这种技术可以对地址进行数次转换,区别真实和虚拟网络,也可以对常用端口进行重定向,达到隐藏这些端口的目的。
当多个蜜罐组成网络时称为密网,而一个密网的核心是蜜墙,也就是密网网关。蜜墙主要功能:
① 数据捕捉:可以在不被入侵者察觉的情况下,对密网内所有的活动和网络数据信息进行捕捉。
② 数据控制:对进出密网的数据进行流量控制。这样可以在内部蜜罐被攻破以后,确保其所有的活动依然被限制在蜜网之内。
③ 数据分析:帮助密网管理者简化捕捉数据分析,并可以帮助计算机和网络取证。
常用的实现虚拟蜜罐的技术主要有VMware、用户模式Linux、Argos、LaBrea、Honeyd等。
(1)VMware技术
VMware公司是老牌的虚拟化软件公司之一,其提供了多种虚拟化软件应对不同的状况。虚拟化软件表示软件可以模拟一个完整的计算机系统,并且可以在同一个虚拟机上可能运行多个不同的操作系统。下面介绍VMware公司的一些产品,这些VMware产品相互之间的不同点。
实际安装VMware 的物理机器,执行VMware进程的计算机和操作系统实例称为主机(或宿主主机)。运行在虚拟机内部的操作系统被称为客户系统或客户虚拟机。两种系统之间的交互是完全透明的,例如在主机和客户系统之间,使用 VMware可以共享文件夹、复制粘贴各种文件。
虚拟系统起到一个类似于模拟器的作用,主机的物理CPU和内存资源可以被主机与客户虚拟机共享,但同时客户操作系统也可以从VMware中分配到一套完整的虚拟硬件资源。例如,在多个客户系统中,一套相同的虚拟硬件资源可以被所有的客户系统所使用,就像同一配置的多台计算机安装不同的操作系统,而且这些虚拟硬件可以在不超过客户虚拟机配置的情况下任意的进行设置,不需要考虑真实物理硬件资源,这些硬件资源都可以连至主机系统。
(2)用户模式Linux
用户模式Linux 是另一种可以用来创建虚拟蜜罐的系统,用法十分简单,但是与VMware相比,主要缺点就是它只能模拟Linux系统。
UML是一个Linux内核的体系结构端口,系统内称为接口。Linux内核本身可以作为一个用户进程来运行,实际的Linux内核(主机系统〉执行另外一个Linux(客户系统)实例,把它作为一个进程。这个过程与VMware 中的虚拟机类似,每一个UML实例都是一个完整的虚拟机,与一个真实的计算机几乎没什么区别。于是就有了一个简单的方法来实现虚拟机,直接使用UML建立一个虚拟蜜罐,获得一个虚拟系统提供的所有优点。在配置或稳定性上,客户系统不会影响到主机系统。UML的块设备,也称为磁盘,通常是主机文件系统上的文件,不会影响存储正常数据的本地块设备。
UML作为一个操作系统只能运行在Linux上,所以如果运行Windows 或其他系统的时候,不能使用这种方式创建蜜罐。看起来只能选择Linux系统缺点很严重,但也并非没有好处,使用UML可以方便的创建许多不同的运行Linux的蜜罐。由于UML的块设备是正常的文件,客户系统使用这一文件(通常称为根文件系统)作为一个完整的文件系统,可以很容易的把一个UML实例从一台机器上移植到另一台机器上。UML 的另一个选项实用性也很强,能够在写时复制(copy-on-write,COW)模式下使用文件,UML实例在只读模式下使用跟文件系统,把所有的更改写入到一个单独的文件中-COw文件,使得几个蜜罐可以同时使用一个根文件系统,即可以节省磁盘空间,又可以便于维护管理。
(3)ARGOS
荷兰阿姆斯特丹自由大学的研究人员开发了一种新型的虚拟高交互蜜罐,该工具被称为Argos,能够自动检测零天(zero-day)攻击,也就是尚无补丁的攻击。他们使用一种名为动态污点分析的技术来监测蜜罐:第一步,标记所有通过网络接收到的数据,通过内存追踪这些标记数据,一旦这些标记数据被使用,影响了执行流程,Argos检测到这些并产生一个攻击的内存痕迹。相对于其他虚拟蜜罐解决方案,Argos不只是执行客户虚拟机,同时还密切监测蜜罐,试图及时发现攻击者成功攻陷蜜罐的切入点。
动态污点分析是Argos技术的核心,这种技术根本在于观察,一个攻击者控制一个给定程序的执行流程,他一定会是使用某种方式影响它,但不论是何种方式,攻击者都必须向程序发送一个不正常的输入,这样的数据必定会影响执行流,例如,跳转到攻击者提供的数据。
在这一过程中,动态污点分析发挥作用,一个程序的所有外部输入都被当作污点被标记。在分析过程中,密切监视和检查所有污染变量的使用,当一个污染变量通过其他操作得到的结果也被认为受到污染:但如果一个污染变量被赋予一个固定值,则认为该变量不再是受污染变量。这样就可以跟踪外部输入的使用,一旦这种污染输入用于改变执行流,就可以被检测出来。对Argos 来说,它产生的信息转储包含引起正常执行流偏离的相关信息。这个方法对检测网络攻击灵敏度很高,而且我们检测攻击无需任何先验知识。当一个攻击发生时,我们可以精确地检测到,通过分析确定导致该事件的原因。
(4)LaBrea
由Tom Liston 创作的LaBrea,因引入了一个tarpit概念而闻名。tarpit是一种服务,作用是通过使TCP连接非常缓慢或完全停止它们的进程,试图减缓垃圾邮件发送者发送速度甚至是蠕虫的传播速度,虽然 tarpit并不能减缓更高级的蠕虫传播,然而,对于顺序操作的简单蠕虫tarpit具有良好的作用。
在网络上运行LaBrea时,它会发现空闲的IP地址,并代替它们应答连接。一旦连接被建立起来,LaBrea会通过在TCP协议中采用技巧而尽可能长时间地黏住发送者,这样建立的连接会进入到一种不能再取得任何进展的状态。拖延连接的原因很简单,垃圾邮件或病毒发送者在服务器上每多维持一个连接,就减少了向真正的主机发送垃圾邮件的可用资源。
为了检测一个IP地址是否可用,LaBrea利用ARP协议。每当路由器试图向一个IP地址交付一个数据包时,它首先需要找到相应的MAC地址,如果没有主机监听这一IP地址,ARP不会获得应答。
例如:12:20:40.439476 arp who-has 192.168.1.123 tell 192.168.1.2
由于ARP在整个网络上进行广播,LaBrca 监视来自路由器的ARP请求,如果网络中没有主机相应IP地址192.168.1.123,LaBrea就会发送自己的应答:
12:20:42.356431 arp reply 192.168.1.123 is-at 00:3c:2f:1e:52:7a
现在路由器收到了一个MAC地址,就会把这个数据包以及后去的数据包发送给LaBrea 主机。但当一个主机重新启动,它可能会使用一个已经被LaBrea占用的IP地址,不过重启的主机会发送一个无需应答的ARP请求,通知网络上的所有人新的IP地址和MAC的绑定,那么LaBrea将会放弃该IP地址。LaBrea接受网络上所有空闲的IP地址的TCP连接,当它收到一个SYN包,它就会通过完成TCP 三次握于建立一个连接,然后拖延这个连接。LaBrea支持两种放慢连接传输速度的方法:
窗口调节:LaBrea接受一个新的连接,但会公布一个非常小的接收窗口。接收窗口指示发送者,每个数据包不能发送大于窗口允许长度的数据。当采用窗口调节时,连接仍然在继续,但当一个1000字节长度的包被要求以10个字节长度位单位进行传输,显然传输时间会变得非常漫长,速率会变的非常缓慢。
持久捕捉:LaBrea 公布一个TCP接收窗口的大小为0,指示发送者在继续发送数据前等待。发送者周期地回访,发送窗口探测数据包,以确定接收窗口是否再次打开,这种状态可以一直持续下去。
当垃圾邮件发送者试图通过一个La Brea 蜜罐发送电子邮件时,SMTP事务将不产生或者产生很小的进程,一个哑垃圾邮件发送者将保持该连接,浪费网络资源。最终,垃圾邮件发送者一旦发现和 La Brea会话没有取得进展,它可能走掉。
当我们使用DHCP用于IP地址动态分配,LaBrea将接管DHCP地址范围内目前尚未使用的地址。DHCP服务器在分发一个IP地址前,往往首先ping该地址,但是LaBrea对ping 的响应会干扰DHCP服务器的判断。随着时间的推移,用户归还了他们租用的IP地址,最后LaBrea将接管整个DHCP地址空间。所以一个用户需要知道哪些地址是被他的DHCP服务器使用,并在配置文件中排除它们。
(5)Honeyd
Honeyd是一种框架,可以把数千个虚拟蜜罐及对应的网络集成到一起。通常我们使用Honeyd集成现有网络上所有未分配的IP地址,对每一个IP地址,都可以设置Honeyd模拟不同的计算机行为。
一般的来说,当一个蜜罐只使用一个IP地址时,可能需要相当长的一段时间才可以探测到攻击,但当你拥有的IP地址多达成百上千时,可以大大加快被攻击的速度,这就是Honeyd的作用,以一个低交互虚拟蜜罐的框架,在一个网络或者Internet 上建立数千个虚拟蜜罐,充分的利用未分配的网络地址,来更多的观察攻击行为,或者用来阻止入侵者攻击真实系统。
Honeyd通过路由器或代理ARP为其虚拟蜜罐接受流量,对于每一个蜜罐,Honeyd可以模拟不同的操作系统的网络栈行为。
① Honeyd的特性
Honcyd可以同时模拟数几千个不同的虚拟主机:入侵者可以通过网络与每一个单独的主机进行交互。可以通过配置Honeyd得到每个主机的不同行为。
通过配置文件可以配置任意服务:当入侵者与虚拟主机进行交互时,Honeyd可以提供与对手交互的任意程序,这些程序服务都可以使用配置文件进行配置。无论何时Honeyd收到一个新的网络连接,都可以及时启动事先配置好的服务或者程序,回应入侵者。即使不运行相应的程序,Honeyd也可以作为代理将连接转接到其他主机上,或者采用类似于被动指纹识别的功能,识别远程主机和负载的随即采样。
在TCP/IP协议栈层次模拟操作系统:这一特性允许Honeyd 欺骗Nmap和 Xprobe,让他们相信一个虚拟蜜罐上正运行着各种配置的操作系统。组建自由路由拓扑:路由拓扑可以任意复杂,可以配置延迟、丢包和带宽等特征。Honeyd支持非对称路由、物理机器集成到一个虚拟拓扑中,以及通过GRE隧道的分布式操作。
子系统虚拟化:利用子系统,Honeyd可以在一个蜜罐的虚拟空间下执行真正的UNIX应用,如Web服务器、Ftp服务器等等。这一特征也允许虚拟地址空间内进行动态端口绑定和网络连接的后台初始化。
② Honeyd的体系结构
Honeyd使用一个简单的体系结构,一个中央包分发器接受所有入侵者的网络流量,基于实现确定好的配置,对收到的数据流量来创建不同的服务进程处理,为了匹配所配置操作系统的特征,使用个性引擎所修改发送出去的网络数据包。
虽然通过对Honeyd 的配置可以控制它的每一个方面,但是三个重要特征决定了Honeyd的整体行为:
一是入侵者只能从网络中与Honeyd进行交互,我们的基本假设是入侵者不能走近计算机或者键盘进行登录,因为任何一个Honeyd模拟的蜜罐没有与之对应的物理计算机,Honeyd不是模拟操作系统的每一个方面,只有模拟其网络堆栈所以入侵者永远无法获得对一个完整系统的访问,但是可以通过与虚拟机如 VMware相结合,减小Honeyd的这一问题。
二是Honeyd 可以在网络上布置大量的虚拟蜜罐,即使分配大量的IP地址Honeyd也都能模拟出,可以具有不同的操作系统和服务,也可以模拟任意的网络拓扑结构,并支持网络隧道。
三是可以欺骗指纹识别工具,Honeyd可以反转指纹识别工具的数据库,找到数据库中指纹识别的特征,当一个蜜罐需要发送一个网络数据包时,可以通过查找数据库,改变所有的数出数据包内容,使它们与配置的操作系统特征相匹配。
结语:
虚拟蜜罐技术具有物理蜜罐技术的诸多特性,并可以在单一的系统中运行成百上千个虚拟蜜罐,还可以添加诸多应用程序,如网络诱饵、蠕虫探测、垃圾邮件阻止、网络模拟等。相对于物理蜜罐复杂的部署、高额的费用、超长的耗时,虚拟蜜罐技术作为蜜罐技术的突破性解决方案让网络安全防护成本降低、效率增加,在网络安全技术方面也同样有着重要的作用。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。