解析蜜罐技术要点及其潜在问题

蜜罐可以这样来定义:它是一种其价值在于被探测、攻击、破坏的系统。也就是说蜜罐是一种我们可以监视观察攻击者行为的系统,其设计目的是为了将攻击者的注意从更价值的系统引开,或者说是为了提供对网络入侵的及时预警。

    基本的蜜罐技术

    不同类型的蜜罐的主要区别主要在于攻击者与应用程序或服务的交互能力上。真正有漏洞的系统准许攻击者在各个层面上与系统交互。攻击者可以探测、攻击、破坏这种系统,将漏洞用作进一步攻击的一种工具。因而这种系统称为高交互性的蜜罐。

    这就要求安全人员密切监视并详细分析攻击者的行为。我们可能期望这种蜜罐被用于监视一个试图通过猜测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属于低交互性的客户端蜜罐,它们可以执行简单的基于规则的匹配和签名匹配,用以检测客户端的攻击。

    速度上的增加和较低的资源消耗是这些低交互性的客户端蜜罐的最大好处。不过,因为这种蜜罐通常都是基于规则和签名的,所以它们并不能检测自己以前未见过的攻击(零日漏洞攻击)。高交互性的蜜罐更容易检测这种攻击,因为这种蜜罐并不需要预先知道这种攻击的知识便可以检测它。

特定应用蜜罐

    现在既有通用的蜜罐可以提供或模仿有漏洞的系统,又有应用或特定协议的蜜罐。有许多蜜罐设计目的是通过伪装成开放的邮件传送服务器或开放代理来捕获垃圾邮件。如Jackpot这个小程序,它由Java语言编写,它可以假装成一个可以转发邮件的配置错误的SMTP服务器。实际上,它将所有的消息发送给用户,然后绕过垃圾制造者的测试消息,并避免受垃圾邮件侵扰。(通常情况下,垃圾制造者会试图发送一个测试邮件,其目的是为了确认主机是否是一个真实的开放服务器) 。另外,Proxypot也有不俗的表现。

    另外HTTP,特别是Web应用蜜罐受到了特别的关注。而谷歌的 Hack Honeypot则提供了不同的种类的模块,其中之一看似是一个配置错误的PHPShell。PHPShell准许管理员通过Web界面来执行外壳命令,但对它的访问却至少受到口令的限制。谷歌这个工具拥有一个中央接口,它准许操作人员监视用户正试图执行的命令。

    一种常见的漏洞利用技术是使用远程文件包含。一些PHP配置准许执行程序,以便于包含可以驻留在其它Web或FTP服务器上的文件。在某种特定的程序在进行包含之前,它并不仔细检查其输入。攻击者能够经常在Web服务器上执行他选择的代码。另外一种方法是,部分PHPHoP脚本会试图分析下载有效负载,作为对恶意请求的一种直接响应。前一种方法可能更有用,因为其设计目的是为了在服务器上运行,同时又不会干扰实际服务器。但在Web应用程序中还有其它的漏洞,如SQL注入、直接命令注入等。

    与其它蜜罐相比,有一些蜜罐能更好地捕获特定类型的攻击,而且理想情况下,几种蜜罐的混合能够提供对当前攻击的最佳洞察方式。例如,用于PHPHoP的 ErrorDocument处理程序不能正确地捕获POST数据,因为Apache并没有将这种信息交给ErrorDocument处理程序。为此,你可能需要定制编写Web服务器,或者用你希望模拟的文件名来创建PHP脚本。

蜜罐的潜在问题

    在部署一个蜜罐或蜜网时,保密是极为重要的。如果每个人都知道这是一个陷阱,除了一些自动化的攻击工具(如一些蠕虫),不会有人尝试攻击它。还有一些蜜罐,特别是一些低交互性的蜜罐,由于其模拟的服务,会很容易就被攻击者识别出蜜罐的身份。对于一个复杂系统的任何模仿总与真实的系统有不同点。例如,可以有多种方法让一个程序决定它是否运行在一个虚拟机内部,并且恶意软件正日益增多地使用这些技术来与蜜罐技术对抗。可以这样说,攻击者正在想方设法找到检测蜜罐的手段和技术,而蜜罐制造者也在努力改善蜜罐,使得攻击者难于发现其“指纹特征”。

    客户端的攻击框架仍然存在,这种攻击包含着一些自动化的机制,这使得用客户端蜜罐来检测和分析恶意Web服务器更加困难。例如,如果客户端蜜罐从一个特定的网络访问一个恶意服务器,客户端攻击就无法触发或只激发一次。由于不断重复的交互,恶意服务器将不可能再发动客户端攻击,这就使得安全人员在跟踪和分析恶意服务器及其攻击时遇到困难。

    另外一个值得关注的问题是,如果一个高交互性的蜜罐被破坏或利用了,那么攻击者会尝试将它用作一个破坏或控制其它系统的垫脚石。理想情况下,蜜罐应当使用多种机制来防止这一点,操作人员应当紧密注意防止对无辜第三方的损害。

    总结

    在过去的这几年里,安全人员利用各种蜜罐技术已经收集了攻击者及其攻击方法的大量数据,而且我们期望这种趋势继续发展下去。现在,蜜罐正越来越多地被用于主流的应用中,并且安全人员可以使用的蜜罐工具也日益增多。我们尤其希望看到客户端蜜罐领域能有一个突破性的发展,因为我们看到浏览器的漏洞特别是IE的漏洞更是Windows平台的一个重要的威胁。Web应用程序是跨平台的应用中最为薄弱的环节。我们也看到,一些更新的应用程序,如VoIP和SCADA蜜罐也大行其道,这是因为对这些协议的滥用已经引起人们的重视。

    蜜罐对于检测和分析攻击自有其优势和重要性,攻击者也会开发相应的技术来检测和避免蜜罐。Mpack这种漏洞利用框架已经在遵循这条路线。随着这些技术变得越来越流行和普遍,蜜罐也需要作出响应来使得攻击者的检测更加困难。分布式蜜网和不以虚拟化为基础的蜜网实施将会引起人们的重视。攻击者和安全研究人员的斗争将一直继续下去。但在目前,从总体上讲,蜜罐技术仍可为我们提供关于攻击者及其攻击方法的珍贵数据。