你们中的许多人可能对专业术语“蜜罐(honeypot)”和“蜜网(honeynets)”比较熟悉。虽然从严格意义上讲,有人可能认为它们是安全研究人员的工具,如果使用得当,它们也可以使企业受益。在本文中,我们所使用的“蜜罐”和“蜜网”表示的是同一个意思,蜜罐一般试图模拟一个更大更多样化的网络,为黑客提供一个更加可信的攻击环境。
蜜罐是一个孤立的系统集合,其首要目的是:利用真实或模拟的漏洞或利用系统配置中的弱点(如一个容易被猜出的密码),引诱攻击者发起攻击。蜜罐吸引攻击者,并能记录攻击者的活动,从而更好地理解击者的攻击。蜜罐一般分为两种类型:高交互蜜罐和低交互蜜罐。
类型和折中
高交互蜜罐是一部装有真正操作系统(非模拟),并可完全被攻破的系统。与攻击者进行交互的是一部包含了完整服务栈(service stack)的真实系统。该系统的设计目的是捕获攻击者在系统中详尽的活动信息。而低交互蜜罐只是模拟出了真正操作系统的一部分(如,网络堆栈、过程和服务),例如模拟某个版本的FTP(文件传输协议)服务,其中的代码存在漏洞。这可能会吸引蠕虫查找服务脆弱部分的漏洞,由此可以深入观察到蠕虫的行为。
不过,在你使用这两种蜜罐时,需要做出一些折中。用于网络安全的高交互蜜罐提供了真实操作系统的服务和应用程序,使其可以获得关于攻击者更可靠的信息,这是它的优势。它还可以捕获攻击者在被攻破系统上的大量信息。这一点可能会非常有帮助,比如说,在组织想要收集关于攻击者是如何找到攻破特定类型系统的详细真实数据,以便增加适当的防御的时候。另一方面,这些蜜罐系统部署和维护起来十分困难,而且需要承担很高的副作用风险:例如,被攻破的系统可能会被用来攻击互联网上其他的系统。
虽然低交互蜜罐容易建立和维护,且一般对攻击者产生了免疫,但模拟可能不足以吸引攻击者,还可能导致攻击者绕过系统发起攻击,从而使蜜罐在这种情况下失效。到底部署哪种蜜罐取决于你最终的目标是什么:如果目标是捕获攻击者与系统的详细交互情况,那么高交互蜜罐是一个更好的选择;如果目标是捕获针对某个有漏洞的服务版本的恶意软件样本,使用低交互蜜罐就足够了。
在你决定使用哪种蜜罐部署时,另一个需要考虑的重要因素是:蜜罐是安装在物理系统上,还是安装在物理系统的几台虚拟机上。这将直接影响到系统维护的工作量。虽然虚拟系统自身的确有一系列安全问题,但虚拟系统允许快速回复,并能显著缩短部署和重新部署的时间。
蜜罐部署
无论是高交互蜜罐还是低交互蜜罐,都被设计成在互联网上不进行传统目的活动。换句话说,除操作系统要求的以外,蜜罐系统不运行其他的进程、服务和后台程序。这种思想实际上把所有与蜜罐有关的交互作用都当作具有恶意活动嫌疑的对象,这样一来反而有利于检测攻击活动。在探讨蜜罐部署的最佳做法之前,先让我们来看一下常用的高交互和低交互蜜罐。
通常情况下,高交互蜜罐不需要专用软件就可以进行底层操作系统的安装。一般来说,安装一个VMware工作站或者用一个类似QEMU的虚拟机,就足以满足蜜罐对操作系统的要求了(典型情况是,主机上的客户操作系统运行虚拟软件)。底层操作系统安装好后,下一步的重点就是进行设置,以对蜜罐(客户操作系统)进行合理的监测。这一设置要分为两部分:监测主机操作系统和监测客户操作系统。主机操作系统应该重点对进出蜜罐的流量进行抓包,这一过程可以利用像tcpdump 或Wireshark之类的程序来完成。同时,如果客户操作系统被感染,恶意带外连接会造成潜在的附加危害,对这一情况用户希望提前被警告,这也被叫做挤压检测(extrusion detection)。这一点可以利用类似iptables(或者基于主机的防火墙)的本地访问控制列表来完成。执行带内过滤实质上是对蜜罐所受攻击的类型实施部分控制。用户可以把主机操作系统流量过滤和入侵检测系统(例如Snort)结合起来,从而获得针对已知攻击媒介的附加报警能力(也就是基于签名的报警)。
对客户操作系统,或者是攻击的实际目标进行监测,需要捕捉到攻击者的所有活动,比如跟踪键盘记录活动、记录攻击者所用的工具和记载权限扩大尝试。Sebek就是一款能够完成上述大规模数据搜集活动的工具。另外一些值得关注的虚拟化高交互蜜罐还有用户模式的Linux和Argos系统。
与高交互蜜罐不同,低交互蜜罐需要在主机操作系统上安装特殊的软件,另外还要进一步配置,以便有效地模拟有缺陷的服务。较受欢迎的低交互蜜罐技术有Nepenthes,以及后续产品Dionaea和mwcollectd。
低交互蜜罐创造性地配置了多种检测功能,包括广泛记录功能、恶意软件捕捉功能、实时安全事件通知,以及提交恶意软件活动进行远程分析。它们的功能还可以进一步提高,方法是使用Nepenthes中的log-IRC附加模块,通过Dionaea和p0f模块一同使用还可以获得被动识别远程操作系统的能力。Dionaea同样支持XMPP(可扩展消息现场协议)模块,该模块可以在企业之间和安全社区中实现恶意软件二进制共享,从而提高用户的安全意识。
笔者接触过一些与高交互蜜罐监测有关的部署最佳实践,这些实践中执行了带内和带外的过滤,以及网络入侵检测。这些功能有待于增强,还需要强化蜜罐和正常网络之间的隔离。理想的情况是,蜜罐环境应该部署在自己专用的互联网入口上,而主机的操作系统管理则放在另一个独立的网络上。另一方面,低交互蜜罐无法被攻击者全部攻破,因此它们的保护工作要简单一些。利用chroot之类的程序,可以把低交互蜜罐系统隔离到一个较小的文件系统中。另外,低交互蜜罐系统也要与正常网络彻底隔离,否则低交互蜜罐仍旧会暴露在与高交互蜜罐相同的威胁下。
典型应用
蜜罐的主要用途之一是收集恶意软件样本。这些样本可能利用零日漏洞(zero-day vulnerabilities),或已知的攻击向量。蜜罐可以让研究者对上述攻击有更好的了解。例如,通过监测IRC控制通道,蜜罐就可以提供实时攻击流量。它们还具备被动识别攻击者操作系统类型,或存储/重演攻击活动的能力。另外,它们允许研究者共享威胁信息(例如XMPP),或者把样本提交给在线沙盒和多反病毒扫描工具(如VirusTotal、Jotti、ThreatExpert和CWSandbox)进行进一步分析。
蜜罐收集恶意软件活动的领域可以扩展到僵尸系统(bot)和僵尸网络(botnet)。僵尸网络拥有分布式的特点,依赖于远程命令通道的使用(一般是通过IRC和 HTTP),利用的往往是零日攻击或已知攻击向量,这种体系结构使得蜜罐可以很好的对其进行跟踪和分析。
对企业而言,蜜罐的实用性远大于上述情况。然而,蜜罐的有效性很大程度上取决于能否有一个好的设计。任何设计缺陷(比如,不充分的隔离、缺乏监测和实时报警能力)都可能把蜜罐变为严重的负债,而不是可以对危险进行管理的资产。使用蜜罐时,适当的小心和谨慎很必要。如果你没有充足的经验却希望使用蜜罐,那你就需要时常向训练过的专业人士咨询。
作者:Anand Sastry
【编辑推荐】