蜜罐可以这样来定义:它是一种其价值在于被探测、攻击、破坏的系统。蜜罐可以监视观察攻击者行为的系统,其设计目的是为了将攻击者的注意从更有价值的系统引开,或者提供对网络入侵的及时预警。
本文将讨论现有的蜜罐技术及相关技术的关键不同要点。
基本的蜜罐技术
不同类型的蜜罐的主要区别主要在于攻击者与应用程序或服务的交互能力上。真正有漏洞的系统准许攻击者在各个层面上与系统交互。攻击者可以探测、攻击、破坏这种系统,将漏洞用作进一步攻击的一种工具。因而这种系统称为高交互性的蜜罐。
这就要求安全人员密切监视并详细分析攻击者的行为。我们可能期望这种蜜罐被用于监视一个试图通过猜测SSH用户名和口令而突破进入系统的攻击者。一般而言,我们不太可能模仿一个可令攻击者长久相信的系统(如Unix)外壳,因此我们更喜欢高交互性的系统。这有点类似于许多人所认为的典型蜜罐,这种有漏洞系统的系统带有额外的手段来帮助用户进行监视。
从理论上讲,任何一个有漏洞的机器都可充当一个高交互性的蜜罐。将它连接到网络上,很快你就会发现首次攻击。然而,在这样一种系统上,很难执行一次完整的取证分析,这也正是“蜜墙”(位于蜜网和外部世界之间的设施)经常被使用的原因。它可从网络上收集数据和攻击者的击键信息,并将其全部记录在一个中心的数据仓库中,以备日后的取证分析。记录关键数据,使得攻击者无法通过使用加密协议隐藏其活动。
第二种类型,即低交互性蜜罐,一般来说它要模仿漏洞而不是展现真实有漏洞的系统,因此攻击者并不能与它在各个层面上交互。因为这个原因,这种蜜罐更加安全,因为你不必担心攻击者在系统上的活动,但它也就极大地丧失了灵活性。一种低交互性的蜜罐的典型例子即nepenthes,它可以在最少用户干预的情况下,自动收集基于Windows的蠕虫。Nepenthes是一种收集恶意代码样本的优秀工具,但却并不能提供Windows主机的完整模拟。另外一个程序,honeyd准许用户构建拥有60000台主机的模拟网络,这些主机看似运行着不同的操作系统和服务。
蜜罐工具honeytrap的设计目的是为了捕获未知的攻击。它之所以如此,在于它在所有的TCP端口上监听,并动态监视每个端口上的加载句柄。例如,nepenthes可以捕获针对现有的某种服务的攻击,如在445/TCP上的microsoft-ds,但它却不能处理到达先前未知端口的连接企图。Honeytrap拥有简单的句柄,它可以记录关于TCP会话的信息,重新发出先前捕获的响应,在发出FTP命令时可以下载远程文件,或者说,它可以建立到达另外一种程序的代理连接。
在最低的交互水平上,我们有一个称为“网络望远镜”的工具,或者说darknet,它所宣称的IP地址空间上并没有连接任何的主机。操作人员并不必使用honeyd等工具来伪造一个网络,他只需观察到达这个网络段的数据通信。因为在这个网段上并没有真实的主机,对地址空间的扫描很容易被发现。“网络望远镜”还可以显示欺骗性的“退信”的证据,因为它的一些地址是被互联网上其它地方的机器伪造的,因为这个望远镜可接收RST或SYN+ACK数据包(TCP协议),或应答或ICMP不可到达的消息(UDP协议)。
最有名的莫过于CAIDA的“网络望远镜”,其数据可被用于分析Witty和Slmmer等蠕虫的传播。
客户端蜜罐
客户端蜜罐的示意图:

在传统的服务器蜜罐(如Niels Provos 的honeyd)和客户端蜜罐之间存在着一些相对较新的差异。客户端蜜罐并不是被动地等待攻击,而是主动搜索恶意服务器,典型情况下,也就是围绕着存在客户端浏览器漏洞的Web服务器,但也不限于此。客户端蜜罐已经得以扩展,它已经可以调查对办公应用程序的攻击。
客户端蜜罐的例子有MITRE HoneyClient、Shelia、 Honeymonkey、 CaptureHPC。这些客户端蜜罐都按照同样的原理工作。我们可以从一个专业的系统开始,由于此系统通常基于某种虚拟化技术,所以在被感染后,它可自动被重置为干净的状态。这种系统可与潜在的恶意服务器交互,并可以监视系统,可以在与服务器交互期间或之后查找未授权的状态改变。例如,如果我们在windows的system32 文件夹内发现了额外的文件,并在注册表中发现了新的键值,我们就可以知道,机器已经被恶意代码感染,并且操纵了我们的机器在系统重新启动时运行某种代码。当然,未授权的状态改变还可以包括对网络连接、内存、进程等的改变。
笔者试用了Capture HPC 2.0,此工具准许使用不同的客户端,如Firefox、RealPlayer、Microsoft Word等软件。它还拥有一个选项,即可以收集恶意软件,并记录客户端和Web服务器之间的tcpdump捕获。
客户端蜜罐需要与服务器交互,目的是为了决定这个服务器是否是恶意的。采用高交互性的客户端蜜罐,要实现这个目标,花费的成本是很高的。因此选择与哪个服务器交互可以极大地增加找到网络上恶意服务器的比率。我们可以使用几种资源,但“搜索”也许是访问大量Web 服务器的最传统的方法。
交互水平的区别还适用于客户端蜜罐。驱动一个客户端与服务器交互,并且根据状态的改变将服务器归为恶意服务器的客户端蜜罐是一种高交互性的蜜罐。另外一方面,一种低交互性的客户端蜜罐使用了模拟的客户端,如用wget代替IE浏览器,通过静态分析(如签名)来评估服务器的恶意属性。恶意传播的危险在高交互性的客户端蜜罐上是很现实的,安全人员可以通过低交互性的客户端蜜罐来减少这种危险。SpyBye 和 HoneyC属于低交互性的客户端蜜罐,它们可以执行简单的基于规则的匹配和签名匹配,用以检测客户端的攻击。
速度上的增加和较低的资源消耗是这些低交互性的客户端蜜罐的最大好处。不过,因为这种蜜罐通常都是基于规则和签名的,所以它们并不能检测自己以前未见过的攻击(零日漏洞攻击)。高交互性的蜜罐更容易检测这种攻击,因为这种蜜罐并不需要预先知道这种攻击的知识便可以检测它。

