VMware来构建Honeypot – 基础

Kurt Seifried, kurt@seifried.org

This Chinese Version Is Translated By Squ4L1(squall@arthemistino.com) Of www.feelids.com, If You Have Any Questions, Advices Or Doubt About It, Don’t Be Hesitate To Tell Me/Us :-)


 

Honeypot目前越来越普及,安全专业人员都希望通过它来对当前攻击者的技术手段进行更深入细致的了解。同时Honeypot也是用来了解攻击者动机,习惯,行为的优秀工具。不幸的是,要建立一个配置周到的Honeypot不是一件简单的工作,正确的配置网络探头来捕获所有的数据以及对最终结果的分析也是相当需要时间和技术的。不过对于现在的Honeypot管理员来说,随着大量相关工具以及技术的出现,他们的工作变得简单多了。

什么是VMware?

VMware是虚拟软件系列产品,其中的workstation版可以让用户在Windows或者Linux下在上面运行大量的基于Intel的操作系统。同时还有一种服务器线的产品可以让用户在一个物理计算机上运行大量的操作系统,其中一个版本甚至提供了它自己的基本操作系统。因此VMware就是一种可以让你在一台机器上运行多个基于Intel的操作系统的软件。这点已经足够让honeypot管理员欢欣鼓舞了,但是VMware目前那么受欢迎还有其他的一些原因。VMware可以运行所有版本的Windows, Linux大多数的BSD, Solaris for Intel, Novell NetWare,以及一些其他的虽然并不支持但是仍然可以运行的系统。

在这篇文章中我会将运行VMware的操作系统称作主机,而将运行在VMware下的操作系统叫做guest操作系统。

 

虚拟磁盘与原始磁盘分区

虚拟磁盘是VMware用来代表guest操作系统“真实”硬盘的一组文件,原始磁盘分区是guest操作系统可以访问的“真实”硬盘上面的“真实”磁盘分区。这两种分区类型都有各自的优点和缺点,具体取决于你构建honeypot的实际目的。如果你的目的是进行快速研究或者主要是用于入侵初期报警系统并且你不打算对入侵者进行起诉的话你可以选择虚拟磁盘。选择虚拟磁盘可以让你在被入侵后可以快速的拷贝文件并重建honeypot并且安装起来也是最简单的。但是如果guest操作系统受到很大的破坏的话你就不能很容易的访问到有用的数据了,因为它使用的是特定的文件格式,所以你就不能很轻易的用常见的例如TCT或者EnCase这样的工具对其进行检查。虚拟磁盘最主要的优点在于方便,但是却在便于分析方面丧失了许多。

如果要进行深入的分析,特别是你想利用获得的信息对攻击者进行起诉的话原始磁盘分区就是最好的选择。我个人建议建议使用一个独立的物理硬盘来创建原始磁盘分区,这样会简化分区的工作并且降低潜在数据污染的可能性。并且我强烈建议:使用一个独立的硬盘并将它放在硬盘架上,这样拆除安装都会很方便。如果你使用硬盘架的话你就可以快速的将硬盘替换到一个专门进行分析的系统上去,虽然攻击者进入一个配置得安全运行VMware的主机的可能性很小,但是这种可能性还是存在的。

设置并安装一个原始磁盘分区相对来说很的工作相对来说很直接并且相关的资料也很多(特别是针对在Windwos下安装可能会遇到的那些问题)。通过使用整个磁盘你可以大大简化自己的工作,你可以很容易的通过dd命令将整个磁盘中的内容克隆到专门用于分析的磁盘中去,并且在搜集证据方面也由于磁盘的用途单一而变得很清晰明了。

初期准备

也许准备工作中最重要的工作就是将准备放置所有与guest操作系统相关信息的磁盘分区清零。对于原始分区来说只需要平时那样格式化分区就可以了。但是对于虚拟磁盘来说工作就要相对复杂点,VMware会根据需要不断的扩大虚拟分区文件的大小的,虚拟磁盘中的数据增加,文件的大小也会跟着增长,因此就有可能污染虚拟磁盘所在驱动器中已存在的数据。还有一种更糟的情况是如果你在一个分区上有多个虚拟磁盘的话(例如有多个guest操作系统)随着这些文件的增长与某种程度的交互,这些虚拟磁盘就有可能使用其他guest操作系统先前用过的硬盘空间。所以对此最简单的解决办法就是对硬盘进行分区让每个guest操作系统的虚拟磁盘文件都在独立的分区上,当然这些分区在使用前最好都先清零。

IBM提供了一个方便的清理小工具,你可以从以下地址免费下载:
http://www.storage.ibm.com/hdd/support/download.htm#Wipe
将它解压缩到一个软盘然后使用命令"wipe x"就可以了,这里x代表设备号(0-7)

对于UNIX系统来说只需要用dd命令就可以完成磁盘清零工作了,例如:

dd bs=1000k if=/dev/zero of=/dev/partitionname

 

检查内存中的数据

易失性内存是当前分析工作中面临的最大问题。类似红色代码这样的蠕虫是常驻内存然后将自身写到硬盘上去,但是如果你关闭了系统他们就会从内存中消失。因此用VMware来构建Honeypot的一个主要的优点就是可以保持内存中的数据进行分析。

 

尽量让数据保存在硬盘中

一种分析内存数据的手段是只给guest操作系统分配尽可能小的内存(可以是32M,甚至可以更小),这样就可以迫使系统使用交换文件或者交换分区,以此来“鼓励”将数据暂时存储在硬盘上,让分析人员有更多的机会对内存的数据进行分析。“保护”写到交换分区上的数据的话可以将交换分区设置得很大,例如设置好几百M的交换分区,这样也可以降低空间被重复使用的风险。对于Windows来说相对简单,只需要创建一个独立的分区,该分区可以设置为几百M,并且将交换文件都放在这个分区,当然你也得保证交换文件不能超过分区的大小否则系统可能会出现问题。这种做法也许看上去很奇怪,但是对于一个谨慎的管理员来说,防止系统因为内存 异常而崩溃做这样的工作毫不奇怪。

 

挂起OS

从外部挂起guest操作系统是VMware提供的功能里面我最喜欢的。于笔记本系统提供的休眠功能不同,VMware的挂起命令在任何系统下都可以运行(并不是所有系统都支持笔记本的休眠功能),并且对于那些受到严重破坏的操作系统也是一样有效的。当系统挂起的时候内存中的所有数据的镜相会被写到一个外部文件中,在“真实”的系统中使用挂起或者休眠功能的一个潜在的问题是磁盘可能会因为空间不足而不能将内存中的内容正确的写到磁盘。该内存镜相会被放置到一个你预先为guest操作系统指定好的目录中,例如运行一个叫做”Red Hat Linux”VMware会产生这样的文件:

V:\Red Hat Linux/Red Hat Linux

该文件可以用多种工具来访问,包括像记事本啊十六进制编辑器这样的工具。我个人强烈建议使用”strings”以及”grep”来快速的从该文件中获取信息。

这项功能还有一个主要的好处在于你可以获得被入侵系统的快照,通过拷贝相关的文件或者分区你就可以在今后空闲的时候反复运行guest操作系统来检查到底发生了什么事情。就好象把电视节目录下来,然后不停的点击播放回放来查看细节一样。

 

确认VMware系统

对于大多数攻击者来说VMware系统不会引起他们的怀疑,他们被表面现象所迷惑,以为它就是运行在单独硬件上的普通操作系统。但是很不幸的是,还是有不少方法可以发现一个系统是运行在VMware下的。

 

VMware Tools

第一个个容易露馅的地方是如果系统运行了VMware工具的话就会很容易让攻击者发现,在Window下的添加/删除程序以及Program Files等地方会出现与VMware工具相关的内容。在UNIX系统下有提高Vmware guest操作系统的性能的Xfree86补丁以及完整的Xfree86服务器,这些都会被攻击者发现。还有一些很明显的破绽,例如/etc/rc.d/init.d/dualconf里面的"Copyright (C) 1998-99, VMware Inc."以及/etc/vmware-tools/这个目录。因此如果不是万不得已建议不要在VMware honeypot上安装VMware工具。

 

AMD 1 gigahertzCPU机器上只有32 megabytesram?

VMware还有一个问题就是不能很好的隐藏CPU类型,机敏的攻击者会对一个32M内存但是却是1G CPU的服务器产生很大的怀疑。但是事实上要将这些信息隐藏起来不被攻击者发现很困难。在Linux下攻击者只需要用"cat /proc/cpuinfo"就可以得到以MHz表示的CPU信息咯。在Linux下去掉/rpro的支持是一种解决办法,但是除此外还有其他查看CPU速度的方法,在其他系统下,隐藏CPU类型信息也比较困难。

 

计算机BIOS

还有一种确定系统是否是运行在VMware上的方法是通过查看它的BIOS信息,在Windows环境下有不少可以查看BIOS信息甚至可以从VMware系统中提取BIOS信息的工具。不过一个好消息是在Windows NT/2000下,用户想直接访问到BIOS就不容易了,在NT/2000下直接对硬件的访问会被阻塞掉的。但是你还是可以很容易的从guest操作系统中获得以下的BIOS信息:

BIOS ID: unknown
BIOS Date: 10/16/01
BIOS Signon: unknown
BIOS Type: PhoenixBIOS 4.0 Release 6.0 licensed to Intel
Super I/O: unknown
Chipset: Intel 440BX/ZX rev 1

很明显这些信息与从宿主操作系统上的BIOS信息有着很大的不同。

目前还有一些可以获得bios拷贝的工具,例如BIOS Wizard这样可以免费获得的工具,使用它可以很容易的获得系统BIOS拷贝。因为VMware使用的BIOS相对独特,所以通过检查BIOS文件中的一些特征来判断它是否是属于VMwareBIOS是一件很容易的事情。对于一个机智的攻击者来说,想隐藏BIOS信息几乎是没有办法的事情,因此这就成了VMware honeypot系统的致命弱点。你可以从:http://www.bioscentral.com/misc/downloads.htm获得相关的工具,在:http://www.cgsecurity.org/还可以找到一个LinuxBSD下的工具。

 

潜在的法律上的缺陷

由于VMware上的系统需要宿主操作系统作为中间媒介才能访问真正的硬件,因此宿主操作系统本身的安全就显得相当重要了。在法庭上辩护律师可能会辩称honeypot搜集到的证据受到了宿主操作系统的影响或者被直接从宿主操作系统上不留痕迹的被修改过了等等。因此对于宿主操作系统的访问必要受到严格的控制并且要有详细的记录,最好是能确保guest操作系统上的平常活动不能或者不会干扰到证据,例如,磁盘重新分区可能会重组虚拟磁盘文件,修改数据。对于其他guest操作系统的访问也必须进行规划,如果你计划用VMware Honeypot获得结果来作为证据的话最佳的选择是在每台机器上只运行一个guest操作系统,虽然guest操作系统相互之间产生冲突或者修改数据的可能性很小,但是总会给辩护律师作为反驳的理由。(译者:好象在中国这个问题不明显哦^O^)

还有一个可能会造成不利局面的因素是guest操作系统是否能够访问宿主操作系统的文件系统。这样的访问可以通过VMware,或者网络文件共享协议例如SMB(Windows)以及NFS(UNIX)ftphttp,点到点文件共享应用程序等等来做到。因此宿主操作系统必须保证安全,对它的访问必须受到严格的控制。建议采用尽量多的日志与审计功能来应对今后可能遇到的麻烦。

 

概要总结

VMware对于那些想建立以研究或者初期预警为目的的Honeypot的安全人员来说是相当有价值的工具。但是作为一个复杂的工具它可能会给你带来很多不必要的工作,也有可能会暴露你的目的如果你不够小心的话。但是VMware在应用方面却十分简单,并且还有很多的方法可以轻松的对运行在VMware下的Honeypot进行分析研究工作。