本节书摘来自异步社区《网络安全测试实验室搭建指南》一书中的第1章1.3节软件要求,作者【美】Michael Gregg(迈克尔 格雷格),更多章节内容可以访问云栖社区“异步社区”公众号查看。
1.3 软件要求
本节我们关注你的实验室里的软件要求,包括操作体统和应用软件。你可能会疑惑该如何选择正确的操作系统或者怎样判断哪款操作系统才是你最需要的。在搭建网络安全实验室过程中,你使用的软件起着至关重要的作用。如果你的预算紧张,那么正确选择适合你的软件尤为重要,有几款软件是你必须安装的。
最大程度利用你的预算的一个办法就是购置虚拟机。这个选择节省硬件的开销因而性价比非常高。此外你也需要考虑一下哪些应用程序和工具需要安装在新系统里。最后不要忘了你搭建这个测试实验室的最终目标:实验室是专门用来做实验和测试的,而你永远不要在你工作所在的生产网络上运行测试软件或实验。当几个你不熟悉的程序同时运行时,它们可能相互影响并产生不可预估的后果,最严重的甚至可以导致系统的崩溃。你当然不希望来承担系统崩溃造成的损失,因此,实验室一定要建在非生产网络上。
1.3.1 操作系统
在安装操作系统和应用软件之前,你的硬件几乎什么都干不了。所以,下一节我们来讨论一下各种不同的操作系统的优劣。我们从微软公司的操作系统开始。
1.微软公司的Windows系列
不用我说你也知道,任何一个测试网络中都会或多或少运行某个版本的Windows系统。在过去的20年中,在微软公司的帮助下,计算的概念已经被重新定义。 这段历史最早可以追溯到Window 3.11和Windows for Workgroups的那个时代。这款操作系统是微软公司早期的畅销产品之一,它给用户提供了图形用户界面和连接网络的功能。在1994年,微软发布了Windows NT 3.5系统,这是一个为企业打造的用户/服务器模式的操作系统。随后的版本包括Windows XP、Server 2003、Server 2008、Server 2012、Vista、Windows 7、Windows 8和Windows 10等。
第一个要考虑的问题就是你需要安装哪个版本的Windows系统。如果你能找来一份Server 2003系统的拷贝,对你来说它是个不错的选择,因为有相当多的针对该系统的漏洞攻击程序可供你学习。此外,出于在企业中普遍性的考虑,你可以选择Windows 7。如果你决定安装Windows 7操作系统了,先检查一下你的硬件是否满足安装该系统的最低要求。
处理器——1GHz主频,32位处理器或64位处理器。
内存——1GB RAM(32位系统)或2GB RAM(64位系统)。
硬盘——16GB(32位系统)或20GB(64位系统)的可用硬盘空间。
显示器——VGA(800 × 600)。
光盘驱动——支持CD-ROM或DVD。
其他配件——键盘和鼠标。
以上配置对比起Windows Server 2012系统,会发现Windows Server 2012的最低要求高出了很多。
处理器——1.4 GHz主频,64位处理器。
内存——4GB RAM。
硬盘——32GB的可用硬盘空间。
显示器——Super VGA(1024 × 768)或高分辨率显示器。
光盘驱动——DVD。
其他配件——键盘、鼠标和互联网接入。
以上数据可以清楚看出,满足Windows 7系统的最低要求要比达到Windows Server 12系统容易很多。本书中所涉及的大多数内容,Windows 7操作系统可以完全应对。你可能会考虑升级到Windows 8系统,当然没有问题,不过需要注意并不是所有人都喜欢Metro风格界面。我们刚刚说到硬件,值得一提的是微软公司发布过一个硬件兼容性列表:www.microsoft.com/whdc/hcl/default.mspx。在你安装前一定要去该站点进行检查,确保你的硬件设施和你要安装的软件完美兼容。如果你购买的是二手设备的话,这一步就更加必要。
如果你现在还不确定应该购买哪个版本的Windows系统,表1-2列出了对几款Windows系统的评价,哪些是“必安装的”,哪些是“推荐安装的”。
2.Linux
Linux系统是像微软的Windows操作系统一样可以运行因特尔计算机上的类Unix操作系统。Linux操作系统最初是由Linus Torvalds和世界各地的程序员们共同开发的。如果你还不熟悉Linux系统,那你一定要多花些时间学习它了,这是你必须了解的一个操作系统。Linux系统的优点在于它的开源免费、构造简介、性能稳定。
Linux的各种发行版很容易在网上找到,一般来说它们都提供免费下载。Linux的各种版本包括Red Hat、Debian、Mandrake、Ubuntu等。也有一些版本是为了特定的需求而特别开发的,如KNOPPIX、Fedora Security Spin、Kali等。
学习Linux系统最好的方法就是在使用中学习,正是因为这样Wiley网站也提供了可下载的Kali系统。这些系统都是以ISO镜像文件的形式存储的,下载后你可以使用该镜像文件进行直接安装或者把该镜像文件刻录到可启动的DVD光盘中。如果你想在你的安全实验室中添加其他侧重安全工作的Linux发行版,你可以在这个站点查一查:www.livecdlist.com/。
由于Linux是开源系统,也就意味着任何人可以随意发布新的版本,并且你也有权利修改他人的源码。因此在Linux系统中部署你自己的程序会更加轻松。这也解释了为什么许多安全应用在Windows平台上线之前都事先会发布在Linux平台上。本节我们将细致了解一下Linux系统的安装过程,同时回顾一些它的基本特征。
开始学习Linux的最简单方式就是下载一个免安装可直接使用的版本。在我们之前提到网站(www.livecdlist.com)上列出了许多最常见的发行版,如图1-6所示。
你选择好要下载的版本后,你就进入到了该版本的下载界面。
图1-7显示了Fedora 安全实验室版本的下载界面。
在下载ISO镜像文件时,你需要做一些额外工作使ISO文件变为可用。比如,如果你想从一个DVD光盘启动该文件,你要做的第一件事就是把它刻录到一个可启动光盘上。这样你就需要光盘驱动引导而不是硬盘驱动引导了。
在Wiley网站或其他网站下载了ISO文件后,该文件的使用和刻录过程需要以下工具。
一个CD/DVD刻录机。
一个空的光盘。
可以将ISO文件刻录到光盘上的刻录程序。
确保你的计算机可以从BIOS菜单中把引导模式改成光驱引导。
有不少Windows程序支持ISO文件的刻录功能,包括Nero Ultra Edition、the ISO Recorder power toy、Roxio Easy Media Creator Suite等。如果你是用的是苹果公司的OS X操作系统或者UNIX或类UNIX工作站,这些已将刻录软件预装在你的操作系统中了。如下是整个安装过程的简要概述。
1.如果你使用的是Fedora安全实验室版本并且你只有一个光驱,你在刻录前要先把该系统的ISO文件拷贝到你的硬盘上再从硬盘上向光盘刻录。不然的话你可以直接用一张光盘向另一张光盘刻录。
2.无论你用的哪款刻录工具,打开该程序并选择向光盘上刻录镜像。当提示你选择要刻录的镜像时,选择fedora-live-i686-21-5.iso文件。当让你选择刻录模式时(Burn Disk at Once还是Burn Track at Once),选择Burn Disk at Once。
3.当你完成刻录后,重启电脑并把刚刻录好的光盘留在光驱中。然后你可能需要进入BIOS菜单更改引导模式,在启动过程中按F2或Del键来进入BIOS菜单。
4.把你的电脑设置成光盘引导模式后,再次重启电脑。
5.开始你的Fedora安全实验室之旅吧。熟悉一下界面,你会发现不少应用程序和工具,我们在后面的章节会详细讨论。
3.Linux新手导航
把Fedora安全实验室系统安装在可启动光盘上之后,我们来花一点时间讨论一下这个操作系统的基本架构以及其他Linux系统和Windows操作系统的区别。如下列出了一些主要区别。
Linux系统大小写敏感——这和Windows操作系统正相反。 这意味着FAQ.txt和faq.txt是两个完全不同的文件。
Linux系统的目录和文件都有所有权限制——你可以用chmod命令来设置文件或目录的操作权限。可以设定成指定用户、组或其他人才能对文件进行操作或访问。Windows系统中却没用与之对应的设定。
常规用户能更改系统设置——在Linux世界里,最高权限的用户就是root用户,root用户有权力控制系统的核心设置。在Windows中与之最接近的就是管理员用户了。
Linux系统的硬盘分区并不是基于FAT或NTFS的文件系统——Linux使用ext3文件系统来创建分区,然而Windows使用的是FAT或NTFS分区。
Linux系统的路径名包括反斜线——Windows系统的路径像这样C:Winntsystem32,而Linux则是/var/log。
Linux系统支持多用户同时登录——这点和Windows系统有很大不同。Windows系统来源于DOS操作系统,DOS就是一个单用户登录系统。
Linux系统没有使用驱动器字母——在Windows系统中,盘符被用来表示驱动器标号如A:、C:或D:。Linux里的所有文件都用一种统一的层次结构来表示。
Linux的文件系统是一种储存了该计算机里所有信息的存储结构。文件依据目录的层级来储存,每个目录都会包含子目录或文件。下面列出了Linux系统中最常用的几个目录。
/——反斜线代表根目录。
/bin——包含Linux系统中常用的的用户命令,如ls、sort、date、chmod等。
/dev——包含Linux系统中访问外部设备的端口文件,这些设备包括软盘、硬盘、光盘等。
/etc——包含系统配置文件,例如passwd文件,shadow文件等。
/home——包含用户个人的主目录。
/mnt——为外部设备提供了挂载点,可以把软盘和光盘挂在该目录下。
/sbin——包含系统命令和守护进程。
/usr——包含用户文档、图形文件、库文件、其他用户信息、系统命令及其他文件。
Linux系统中的文件和目录都已经设置了属性来控制用户访问。当你登录到系统中时,你是以用户的身份登录的。除了用户的身份,你可能还属于一个或几个组。因此,每个用户、组或其他身份都被单独赋予了对文件的操作权限。比如,Red Hat发行版设定了三个默认组:超级用户、系统用户和普通用户。每个组的用户对文件的操作权限有以下三种。
读。
写。
执行。
如果想查看文件或目录的操作权限、其所有者、其所在组等信息,在命令行输入ls-l命令来实现。该命令会显示出你所在的当前目录的内容、用户和组拥有的对其操作的权限以及一些其他信息。例如,当前目录下包括一个文件mikesfile和一个文件夹mikesdir,输入ls-l会显示如下结果。
drwxr-xr-x 2 mikeg users 32162 Aug 20 14:31 mikesdir
-rw-r--r-- 1 mikeg users 3106 Aug 16 15:21 mikesfile
第一类列出的是操作权限。第一个字符表示该行所显示的内容是一个目录还是文件。如果字符是d,就代表该行显示的是一个目录,如上所示的mikesdir。对于文件mikesfile,第一个字符则显示为短线(-)。之后的九个字符代表了mikesdir目录的操作权限,权限以“读写执行|读写执行|读写执行(rwx|rwx|rwx)”的形式列出。九个字符中的前三个是拥有者权限,可以看出文件拥有者对mikesdir拥有读写和执行的权限。中间三个字符代表了文件所在组的其他用户的权限,该组的用户对文件拥有读和执行的权限。最后三个字符显示所有其他用户对mikesdir目录拥有的权限,可见其他用户拥有读和执行的权限。第三列的mikeg指的是文件或目录的所有者,第四列users指的是文件或目录所在的组。目录的所有者mikeg是唯一有权力对目录内部的文件进行修改和删除操作的用户。
文件的所有者或管理员可以使用chmod命令来修改文件的权限,可以同时修改一个文件或多个文件。使用chmod命令时有两种方法,可以用字母来表示文件权限如rwx,也可以用十进制数字来表示。使用十进制数字表示时,对于每一个文件的三种权限——读、写、执行都有特定的数字来表示。4表示读权限,2表示写权限,1表示执行权限。比如你想为你自己、文件所在组和其他用户赋予所有权限,你输入的命令应该如下所示。
chmod 777 demofile
(7来自于4+2+1,表示可读可写可执行;三个7分别对应所有者、所在组、其他用户。记住4代表读、2代表写、1代表执行,赋予超过一种权限即把数字相加。)
4.Linux基础知识
本节的目的是带领你回顾一下Linux系统的基础知识和操作。尽管使用Linux系统的图形用户界面可以完成许多工作,但是很多时候你不得不利用终端或shell进行操作。Linux里的终端界面和Windows的命令提示符界面类似,如果你是以root身份打开终端的话,你会看到类似这样的身份信息:[root@slax /]#。这一行信息里#符号最为重要,它代表着你的身份是root账户。在Linux世界里,root就是神一样存在。在你以root权限执行命令时,一定要格外小心,Linux同Windows不一样,当你修改系统关键设置时Linux不会对你进行提示或警告。
了解Linux系统的基本命令及其作用是很重要的。Linux的命令可以说不计其数,为了简洁考虑,表1-3只是列举了一些常用的命令。如果你不满足于此,你可以访问下面的网站浏览一下Linux命令大全。
www.mediacollege.com/linux/command/linux-command.html
www.laynetworks.com/linux.htm
Linux系统要求所有的账户设定密码,但系统也不会阻止你把密码设为空。如果你安装的是BackTrack发行版,在启动时要注意你的默认用户名和密码分别是root和toor。Linux系统会把密码进行加密并储存在/etc目录下。绝大多数的Linux发行版包括Kali都是默认使用MD5算法进行加密。如果你不想使用MD5算法,你也可以使用DES算法,不过DES算法会把你的密码限制为8位字母或数字。Linux系统里的/etc/shadow文件的作用是加强密码的安全。把密码转移到shadow文件后使得经过加密算法加密后的密码密文不容易被解码,因为只有root用户才有权限访问shadow文件。如果你是用root身份登录的,而且你想看你系统里结果加密后的密码密文,使用这个命令:
ls /etc/shadow
shadow文件的格式是这样:
Account_name:Password:Last:Min:Max:Warn:Expire:Disable:Reserved
Linux系统也用到了Salt值。Salt值的存在为密码增加了一层随机性。由于MD5是一种散列算法,这就意味着如果你和另一个用户都使用“topsecret”作为密码,经过MD5加密过的密文也是一样的。Salt值可以是4096个值里任意一个,它可以帮助混杂散列后的密文。在Linux系统中,MD5生成的密文是32位字符长度并且是以$1$开始的,第一个$符和第二个$符之间的字符串带Salt值。由于这个密文生成过程是不可逆的,因此想从密文逆推出明文不是一件容易事。图1-8展示了Linux生成这个密文的过程。
Shadow与Salt的对比
计算机领域曾经是一个充满信任的世界。在不久的过去,Linux系统里的密码还是以明文的形式存储在passwd文件里。而passwd文件是完全可读的,也就是说任何人可以访问这个文件并读取密码,不光包括正规用户和进程,也包括入侵系统的坏人。这也促使了shadow文件的引入。
shadow文件只允许root用户访问,这就防止了未授权的用户偷看这些他们本不应该看的密码文件。现在即使他们看见了密码,他们看见的也不是未加密的明文,而是经过散列函数散列过的密文。散列函数被视为不可逆的单向函数,即由原始值散列出散列值很容易,但由散列值逆推出原始值非常困难。而散列函数存在的问题是如果两个原始值相同的话就会得到相同的散列值。Salt值正是为了解决这个问题而出现,它能为加密提供一层随机性。一个完整的散列值是这样的:$1$_SALT_$_HASH_。$1$表示生成这个hash的算法,在这个例子里,就是指MD5算法。Salt值可以是任意长度,一般使用两个随机字符,并且作为加密后密文的前两个字符来存储。比如,加密后的密文是1yAkjfqifnips,那么1y就是salt值。这个值不仅在用户登录时要用到,在黑客攻击想要破解账户时也要面对。
由于散列过程是不可逆的,目前没有已知的破解方法可以根据散列值逆推出原始值。然而,攻击者可以从密文中提取出salt值,然后从密码字典中选择密码,把salt值逐一与密码字典中的密码匹配计算MD5的散列值,然后比较得到的散列值和密文。如果某个用户的密码正好出现在密码字典中,这种穷举法破解就能生效。
现在你熟悉了Linux系统的基本操作了,接下来了解一下苹果公司的Mac OS X操作系统。
5.苹果公司Mac OS X
自1984年发行至20世纪90年代末由于更新而停止生产,Macintosh操作系统一直被认为是极具创新性的。而这个更新则是Mac OS X系统的发布。NeXT软件公司开发的OS系统就是OS X的前身。OS X是一款基于FreeBSD的类Unix操作系统,该系统为了满足当前和未来的计算需求而特别开发的。截止到本书出版时,OS X发布了10.10 Yosemite版本。10.44版本发布以来,该系统从原先的只支持PowerPC处理器转变成兼容Intel处理器。不过当你还沉醉于能在自己的因特尔计算机上运行苹果系统的喜悦之中时,苹果公司宣布Mac OS X只能在他们自己生产的基于因特尔处理器的苹果电脑上运行,其他的计算机不行。最后的结果是,如果你想在你的计算机上安装OS X系统,需要添加额外的硬件。所以你不得不考虑值不值得应用这项技术。
在你准备安装苹果系统之前,了解一下你所在的公司的苹果机使用情况。有些企业苹果机普及率很高。学校、广告公司和其他需要进行图像、视频、音频编辑的产业都会热衷于苹果机。一些安全领域专家也会更倾向于苹果机。还有许多的计算机终端用也在购买,这在某些程度上平衡了日益增长的安卓市场。
Alpha软件和Beta软件
Beta一词据说在20世纪60年代起源于IBM公司。Alpha测试是程序员和质量工程师对软件进行的第一轮测试,目的是检测软件是否正常运行。Beta测试在其之后。Beta测试在软件开发产业被广泛地应用。这个第二轮的产品开发过程包括潜在用户对产品进行的内部和外部的测试。
尽管此时软件可能仍然性能不稳定,但是会比Alpha测试阶段更加用户友好,并能给程序员、质量工程师、用户展现出产品的最终模样。在从这些初始用户收集到足够多的反馈后,产品会在最终发布前进行新一轮的改良和优化。
1.3.2 软件和应用程序
安装操作系统只是革命胜利的一半。安装好操作系统后,你需要部署一些客户端的安全工具进行一些实际探索工作了。安全应用已经出现有一段时间了。Dan Farmer和Wietse Venema在1995年开创了安全应用程序流派并且开发了最早的漏洞评估程序之一:安全管理员的网络分析工具(SATAN)。这个程序为之后的众多安全工具定下了标准,它不仅允许用户通过互联网扫描防范薄弱的计算机,还提供了包含许多可调用函数的包文件。尽管SATAN对于安全管理员来说是不可多得的工具,但它同样为黑客们提供了便利。工具没有善恶之分,主要看使用者如何使用。
撒旦的日子屈指可数
在1995年,当时网络漏洞工具还很少。这也是SATAN能在网络安全领域产生轰动的原因。在那时,争论的焦点是关于开发出这项工具的真正意图,到底是为了让安全管理员更好地检验安全配置还是为了黑客更好地扫描和入侵系统?而在1996年Dan Farmer做的一项调查时争论进入了白热化,在该调查中,Dan Farmer利用SATAN扫描了互联网上的2200个主机,发现超过半数的系统很容易被攻陷。Dan Farmer是在系统的所有者不知情的情况下进行的扫描,而且这些扫描对象并不是个体小商户,而是银行、金融机构这样的知名大企业。
另外一个问题是关于这个程序的名字。为了解决这个问题,程序的安装包里包含一个叫repent(忏悔)的程序。这个repent程序可以把所有的以SATAN(撒旦)命名的实例转变成以SANTA(圣诞老人)命名。
SATAN是在Web浏览器上运行,这使得它易于使用并且能以简明的格式总结出结果。尽管SATAN在现如今看来有些过时了,但它掀起了网络安全软件的开发热潮,这项功绩是空前的。如今,以SATAN为基础开发的后续产品包括SARA、SAINT和Nessus等。
如今,有不计其数的客户端安全工具可以用来扫描和探测漏洞,评估安全级别。一部分安全工具是合法的然而另一部分是由黑客或一些心术不正的人编写的。作为安全领域专家,你当然需要一些趁手的工具,不过在把它们部署到网络上之前要确认你得到了授权。
1.3.3 学习软件
本章的最后一小节关于学习软件和黑客软件,这些软件可以帮助你分析常见的安全问题,修正错误的配置。我们使用学习软件的根本目的是用它来提高你的网络安全技能。https://www.vulnhub.com/网站是开启你学习之旅的一个不错的起点。该网站提供应用程序的下载和任务挑战,适合任何水平的人汲取网络安全工作的实际操作经验,如图1-9所示。实验室的创建者研究主机或服务器系统的缺陷,然后利用这些缺陷去完成任务挑战比如入侵“hack me”站点。该网站订阅服务的可接受使用策略规定禁止订阅者对网站进行任何形式的攻击行为。
下一个网站是www.wechall.net/。这个网站内包含了各种任务挑战网站的链接,包括黑客技术、密码学、信息伪装等。如果这些挑战还不能满足你的话,下面还有两个网站值得一看。
Hacme Bank——这是一个基于网络的银行系统,可供练习你的黑客技术,这并不是真正的银行网络,所以你完全没有后顾之忧。
Damn Vulnerable Linux——这是一个Linux发行版,但里面的应用程序有不少漏洞让你练手。
Hacme Bank和我们之前列出的那些工具工作原理相近。它可以从Foundstone公司的网站下载:www.foundstone.com/us/resources-free-tools.asp。该应用也会安装一个虚拟的银行系统用来教你如何创建安全的软件。Hacme Bank里也被预先植入了各种各样的常见漏洞,比如SQL注入和跨站脚本攻击。这项工具也被用在Foundstone的安全培训课程中。
Damn Vulnerable Linux可能并不是最新的有关黑客技术的发行版,但它一直很受欢迎。 你可以在这个站点下载: http://distrowatch.com/table.php? distribution=dvl。Damn Vulnerable Linux上安装了许多不完整的、有错的、过时的、可被攻陷的程序。它的主要目的就是为像你这样的实验室管理员提供一个超级脆弱的Linux系统,你可以在上面尝试各种攻击和实验,比如代码注入、缓冲区溢出攻击、shell编写、网络漏洞攻击、SQL注入等。
1.3.4 黑客软件
可能你已经被本节的标题所吸引了。其实,黑客程序是指黑客和安全专家们经常使用的软件和应用程序。事实上,你建立网络实验的过程就是建立了一个你可以完全控制并且随意“入侵”的环境。此时必须再一次提醒你,永远不要把攻击程序部署在外部网络或不属于你个人的网络上,除非你得到了该网络管理员的允许。不要因为学到了知识而忽视了法律。
许多软件不仅可以用来做好事,也可能用来做坏事。比如端口扫描器,攻击者用它来扫描开放端口,利用这些端口实施他的攻击;安全专家用端口扫描器检测端口是否关闭,防火墙规则是否工作良好。因此,如果你想列一个表总结一下这些双用软件,如下列出的工具会对你有所帮助。
http://sectools.org是收集这些黑客工具的最好网站。这个网站由Insecure.Org维护,在2000年起一直在发布热门安全工具排名。登录这家的网站就能查看到完整排名,这里我们只列举以下最热门的前十名。
Wireshark——包嗅探工具。
Metasploit——漏洞攻击程序框架。
Nessus——漏洞评估工具。
Aircrack——无线漏洞攻击工具。
Cain&Abel——各类Windows系统漏洞攻击工具。
Netcat——后端命令行隧道工具。
tcpdump——包嗅探工具。
John the Ripper——密码恢复工具。
Kismet——无线黑客工具。
Burp suite——网络代理和网络应用测试器。
还有下面几个是必须提到的。
OWASP Web Proxy。
Capsa Network Analyzer。
Nmap。
BeEf Browser Exploit Framework。
IDA Pro。
OWASP Xenotix Exploit Framework
FOCA Network Intelligence tool。
另外还有许多其他的黑客工具可以在网络上找到,但其中一大部分除了传播恶意软件和病毒外没有任何实际作用,比如病毒制造机和远程登录木马。本书不会花时间讲解这类软件,但是不要忽略它们的存在。