本章将带领读者初步了解渗透测试专用的独立Linux 操作系统——Kali Linux。本章涵盖下述主题:
● Kali 的发展简史;
● Kali 的一般用途;
● Kali 的下载与安装;
● Kali 的配置与更新。
在本章的结尾部分,我们还会介绍Kali Linux 附加功能包和配置工具。
Kali Linux(Kali)是专门用于渗透测试的Linux操作系统,它由BackTrack 发展而来。在整合了IWHAX、WHOPPIX 和Auditor 这3 种渗透测试专用Live Linux 之后,BackTrack正式改名为Kali Linux。
BackTrack是相当著名的Linux发行版本。在BackTrack发布4.0预览版的时候,它的下载次数已经超过了400万次。
Kali Linux 1.0 版于2013年3 月12 日问世。在5天之后,官方为修复USB 键盘的支持问题而发布了1.0.1 版。在这短短的5 天之内,Kali 的下载次数就超过了9 万次。
根据官网的介绍(http://docs.kali.org/introduction/what-is-kali-linux),?Kali的主要特色有:
● 它是基于Debian 的Linux 发行版;
● 它集成300 多个渗透测试程序;
● 它支持绝大多数的无线网卡;
● 它修改了内核以支持(无线)数据包注入;
● 所有的软件包都有研发团队的PGP 签名;
● 用户可以自制满足各自需求的Kali Linux 发行版;
● 支持基于ARM 的硬件系统。
Kali Linux 含有可用于渗透测试的各种工具。这些工具程序大体可以分为以下几类。
● 信息收集:这类工具可用来收集目标的 DNS、IDS/IPS、网络扫描、操作系统、路由、SSL、SMB、VPN、VoIP、SNMP信息和E-mail地址。
● 漏洞评估:这类工具都可以扫描目标系统上的漏洞。部分工具可以检测Cisco 网络系统缺陷,有些还可以评估各种数据库系统的安全问题。很多模糊测试软件都属于漏洞评估工具。
● Web应用:即与Web应用有关的工具。它包括CMS(内容管理系统)扫描器、数据库漏洞利用程序、Web应用模糊测试、Web应用代理、Web爬虫及Web漏洞扫描器。
● 密码攻击:无论是在线攻击还是离线破解,只要是能够实施密码攻击的工具都属于密码攻击类工具。
● 漏洞利用:这类工具可以利用在目标系统中发现的漏洞。攻击网络、Web 和数据库漏洞的软件,都属于漏洞利用(exploitation)工具。Kali 中的某些软件可以针对漏洞情况进行社会工程学攻击。
● 网络监听:这类工具用于监听网络和Web 流量。网络监听需要进行网络欺骗,所以Ettercap和Yersinia这类软件也归于这类软件。
● 访问维护:这类工具帮助渗透人员维持他们对目标主机的访问权。某些情况下,渗透人员必须先获取主机的最高权限才能安装这类软件。这类软件包括用于在 Web应用和操作系统安装后门的程序,以及隧道类工具。
● 报告工具:如果您需要撰写渗透测试的报告文件,您应该用得上这些软件。
● 系统服务:这是渗透人员在渗透测试时可能用到的常见服务类软件,它包括Apache服务、MySQL服务、SSH服务和Metasploit服务。
为了降低渗透测试人员筛选工具的难度,Kali Linux 单独划分了一类软件——Top 10 Security Tools,即10 大首选安全工具。这10 大工具分别是aircrack-ng、burp-suite、hydra、john、maltego、metasploit、nmap、sqlmap、wireshark和zaproxy。
除了可用于渗透测试的各种工具以外,Kali Linux 还整合了以下几类工具。
● 无线攻击:可攻击蓝牙、RFID/NFC 和其他无线设备的工具。
● 逆向工程:可用于调试程序或反汇编的工具。
● 压力测试:用于各类压力测试的工具集。它们可测试网络、无线、Web 和 VoIP 系统的负载能力。
● 硬件破解:用于调试Android 和Arduino 程序的工具。
● 法证调查:即电子取证的工具。它的各种工具可以用于制作硬盘磁盘镜像、文件分析、硬盘镜像分析。如需使用这类程序,首先要在启动菜单里选择 Kali Linux Forensics | No Drives or Swap Mount。在开启这个选项以后,Kali Linux不会自动加载硬盘驱动器,以保护硬盘数据的完整性。
本书仅介绍Kali Linux 的渗透测试工具。
要安装使用Kali Linux,首先需要下载它。下载Kali Linux的官方网站是http://www. kali.org/downloads/。
在下载页面中(见图1.1),您可以通过下列项目选择适用的Kali Linux 镜像。
图1.1
● 主机架构:i386、amd64、armel 或armhf。
● 镜像类型:ISO 或VMware 镜像。
如果您想要把镜像烧录为DVD 光盘,或者在主机上安装Kali Linux,就需要下载ISO镜像。但是如需在VMware 里使用Kali Linux,直接下载VMware 镜像,然后再在虚拟机环境里安装和配置Kali系统更为方便。
在下载镜像文件之后,您需要校验镜像文件的 SHA1 哈希值是否和下载网站上提示的哈希值一致。检查 SHA1 哈希值主要为了确保下载镜像文件的完整性。这步工作可以使您免受文件下载不完整而带来的灾难,也可验证文件是否用被他人蓄意篡改。
在UNIX/Linux/BSD操作系统中,您可以直接使用sha1sum命令检查下载文件的哈希值。因为镜像文件很大,所以计算哈希值的时间可能较长。例如,您可以使用下述指令检查kali-linux-1.0.1-i386.iso文件的哈希值:
sha1sum kali-linux-1.0.1-i386.iso
41e5050f8709e6cd6a7d1baaa3ee2e89f8dfae83 kali-linux-1.0.1-i386.iso
很多Windows程序都可以生成SHA1的哈希值。我们推荐读者使用sha1sum,它可在下述网址下载:http://www.ring.gr.jp/pub/net/gnupg/binary/sha1sum.exe。
sha1sum短小实用。如果您想要尝试其他程序,可考虑HashMyFiles(http://www. nirsoft.net/utils/hash_my_files.html)。HashMyFiles能够计算MD5、SHA1、CRC32、SHA-256、SHA-384和SHA-512算法的哈希值。
下载HashMyFiles 之后,打开这个程序,在菜单里选择File | Add Files 或直接按快捷键F2,则可添加需要计算哈希值的文件。
使用HashMyFiles 计算Kali Linux i386 ISO 镜像的哈希值,情况会如图1.2 所示。
图1.2
在使用sha1sum、HashMyFile这类工具计算下载文件的哈希值之后,您需要将其与网页所示的哈希值进行比较,检查它们是否相同。
如果两个值相同,那您可直接进入下节的操作。如果两个值不相同,那么就说明您下载的文件有问题,您可能需要在官方的镜像下载网站重新下载有关文件。
Kali Linux 有以下几种使用方式:
● 可以直接通过Live DVD 运行Kali Linux;
● 可以在硬盘上安装并运行Kali Linux;
● 可以在USB 磁盘上安装Kali Linux(即portable Kali Linux)。
后续几个小节将简要介绍这几种安装方式。
如果您想要跳过安装过程直接使用Kali Linux,您可以把ISO 镜像录制在DVD 光盘上。制备好光盘以后,就可以直接通过DVD光盘启动Kali。当然,您需要事先设置好BIOS,使其从光驱启动操作系统,
通过Live DVD 的方式启动Kali Linux,最大的优点就是安装速度快且易用性较好。
不幸的是,Live DVD 的方式有几个不可避免的局限。例如,在重新启动系统之后,设置好的文件和配置都会丢失。另外,因为 DVD 光盘的读写速度比硬盘的速度慢很多,以 DVD 光盘的方式运行Kali Linux 系统,其运行速度远远不如在硬盘上安装的Kali Linux系统。
我们推荐仅在测试的情况下以Live DVD 的运行方式运行Kali Linux。如果您需要在日常工作里使用Kali Linux,我们推荐您首先安装Kali Linux,然后再使用它。
硬盘安装Kali Linux 的方式分为以下两种:
● 安装在物理机/真实主机上(常规安装);
● 安装在虚拟机上。
通常我们会把Kali Linux 安装在虚拟机上。
1.安装在物理主机上
在物理(真实)主机上安装Kali Linux 之前,请务必确认整个硬盘是空磁盘。即使您的硬盘上有数据,在以硬盘方式安装Kali系统时,安装程序(默认选项)将会把整个硬盘格式化。要想轻松安装这个系统,最好把整个硬盘都分配给Kali使用。如果您的主机已经装有其他操作系统,则需要划分出一个单独的分区给Kali Linux。总之,在有数据的硬盘上安装Kali Linux 时应当格外小心,以免破坏原有数据。
Kali Linux官方网站介绍了在Windows操作系统的主机上安装Kali Linux的具体方法。如需查询,请访问下述网址:http://docs.kali.org/installation/dual-?boot-kali-with-windows。
硬盘分区工具有很多。就开源工具而言,可选择的Linux Live CD有:
● SystemRescueCD(http://www.sysresccd.org/);
● GParted Live(http://gparted.sourceforge.net/livecd.php);
● Kali Linux(http://www.kali.org)。
上述Linux Live CD的使用方法很简单,从光盘启动操作系统就可以管理磁盘分区。在使用Linux Live CD的磁盘分区工具之前,建议您事先备份好硬盘上的重要数据。虽然我们认为上述工具都安全可靠,没遇到过事故,但是小心驶得万年船,如果硬盘上有重要数据最好还是事先备份一下。
在您划分好相应分区,或者决定使用整个硬盘安装系统时,就可以从 Kali Linux Live DVD 启动,然后从启动菜单中选择Install 或者Graphical install。
从光盘系统之后,您就会看到安装界面(见图1.3)。在安装过程中,需要设置的几个地方如下所示。
1.需要在安装过程中设置系统语言。默认系统语言是英文。
2.通过下拉选项设置国别。
3.设置区域选项(localesetting)。默认情况下,地区为UnitedStates,编码集是en_US.UTF-8。
4.您需要设置键盘布局(keymap)。通常情况下,设置美式键盘(American English)就可以了。
图1.3
5.安装程序会询问您主机名称、域名等网络配置。
6.安装程序会在下一步提示您设置root密码。
7.安装程序接下来帮您设置时区。
8.在硬盘分区阶段,安装程序会进行磁盘分区。如果您使用的硬盘没有数据,则可选用默认的Guided - use entire disk 选项。如果您的主机安装有其他操作系统,您可能首先分配分区给Kali Linux 使用,这就需要选择菜单中的Manual 选项手动管理磁盘分区。安装程序会根据您的选择创建相应的分区。
9.安装程序会询问您采取何种分区方案。默认情况下,Kali会推荐Allfilesinonepartition,即把所有文件写在一个分区里。考虑到日后可能重新安装系统,通常需要保留 home文件夹里的文件,选择Separate/home partition会更好。之后,您要根据自己的需要设置/home 分区的大小。如果要把所有文件都放在/home 目录(分区)里,您可能需要把分区大小设置得大一些(大于50GB)。一般而言,把这个分区的大小设置为10GB到20GB就可以了。
10.安装程序会总结您的分区设置,如图1.4所示。在您确认之后,它才会真正地进行分区管理操作。
11.接下来,安装程序开始安装Kali Linux 系统。这个过程可能会比较长,不过此后您就把Kali Linux 安装在硬盘上了。在我们的测试环境下,整个安装过程耗时20 分钟左右。
图1.4
12.完成上述安装过程之后,安装程序会提示您配置软件包,然后询问您是否把GRUB (启动管理程序)安装到主引导记录MBR里。在设置两个选项时,采用默认的设置不会有什么问题。请注意,如果您的主机上安装有其他操作系统,您可能不应当在MBR上安装GRUB。
13.如果您看到如图1.5所示的信息,那么您的主机已经成功安装了Kali系统。
图1.5
14.选择Continue就会重新启动计算机,测试刚刚安装好的Kali系统。在重新启动计算机之后,您将看到Kali的登录界面(见图1.6)。
图1.6
15.现在,输入您在安装过程中指定的用户名和密码就可以使用Kali系统了。
2.安装在虚拟机上
您也可以在虚拟机系统里安装Kali Linux。采用这种方式安装Kali Linux 系统,无须单独准备物理硬盘(或分区),也不会影响主机上已有的操作系统。
本文使用VirtualBox(http://www.virtualbox.org)虚拟机系统。VirtualBox是开放源代码的虚拟化软件,支持Windows、Linux、OS?X和Solaris操作系统。
在虚拟机里运行Kali Linux,比在物理机上运行的Kali Linux 系统的性能差。
我们既可以通过 ISO 镜像在虚拟机里安装 Kali Linux 系统,也可以直接下载 VMware磁盘镜像直接加载Kali Linux 系统。采用前面一种方法的安装时间较长,但是可以更为详细地调整Kali的设置。
在虚拟机里使用ISO镜像安装Kali
在虚拟机里通过ISO 镜像安装Kali Linux 的详细步骤如下。
1.在VirtualBox的工具栏里选择New,创建一个新的虚拟机。
2.设置虚拟机的名称和操作系统类型。本例中,我们设置VM 的名称为Kali Linux,并选择操作系统为Linux-Debian(见图1.7)。
3.分配虚拟机的内存。内存分配的越多,虚拟机的性能也就越好。本例中,我们分配给Kali Linux 的虚拟机2048MB 内存(见图1.8)。请注意,您不可能把主机所有内存都分配给虚拟机使用,因为您主机的操作系统也要使用内存。
图1.7
图1.8
4.设置虚拟机的硬盘。您可以设置虚拟硬盘文件的类型为VDI。这种格式的虚拟硬盘文件可以动态调整文件大小。我们推荐您分配给虚拟机32GB以上的虚拟硬盘(见图1.9)。如果您日后需要安装软件,就需要把虚拟硬盘设置得更大一些。
图1.9
5.完成上述步骤之后,虚拟机清单里会列出刚才新建的虚拟机。
6.如需通过Kali Linux的ISO镜像安装系统,要在VirtualBox菜单里选中那个虚拟机,然后点击Storage菜单进行配置(见图1.10)。
图1.10
7.在Storage Tree 里选择IDE Controller-Attributes,然后选中Kali Linux 的ISO 镜像文件。本例中,这个文件应该是kali-linux-1.0.1-i386.iso。如果设置成功,将会在Controller:IDE字段中看到这个镜像的文件名(见图1.11)。
图1.11
8.只要启动虚拟机,就可以从ISO 镜像启动并安装Kali Linux。接下来的设置过程,请参见前文的“安装在物理主机上”的相关内容。
在虚拟机里使用 VM 镜像安装 Kali Linux
我们同样可以使用官方提供的VMware 磁盘镜像,直接安装Kali Linux。
在Kali Linux 团队提供的VMware 磁盘镜像中,适用于 i386 平台的Kali Linux 镜像只有GNOME GUI 版本。
这种安装方法相当简单。
在下载 Kali Linux VMware 硬盘镜像文件(kali-linux-1.0-i386-gnomevm.tar.gz)之后,您需要验证下载文件的SHA1哈希值是否与网站公布的值一致。只有在它们相同的情况下,您才能从文件中解压缩出正确的镜像文件。
官方提供的VMware镜像文件是GZ格式的压缩文件。如果您使用的是Windows系统,您就需要gzip或7-Zip这类工具将其解压缩。这个GZ格式的压缩包包含21个文件。在解压缩之后,您将看到21个文件(见图1.12)。
在VirtualBox的工具栏中,选择New新建VM虚拟机。接下来在程序的向导窗口中进行如下设置,使这个VM加载刚才解压出来的虚拟机镜像文件。
1.我们设置虚拟机名称为kali-gnome-vm-32,并设置操作系统为Linux-Debian。
2.分配2048MB 内存给Kali Linux 虚拟机。
3.设置虚拟机硬盘类型为Use an existing virtual hard drive file,然后指定其硬盘使用镜像文件kali – linux – i386-gnome-vm.vmdk。接下来,点击Create创建虚拟机,如图1.13所示。
图1.12
图1.13
使用硬盘镜像方式安装Kali Linux之后,系统的默认设置值如下所示。
● 硬盘容量:30 GB。
● 联网方式:NAT。
● 用户名:root。
● 密码:toor。
如果要把 Kali当做渗透测试平台使用,应当避免以 NAT方式接入网络。本文推荐您以桥接(bridged)方式联网。
在配置Kali VM 的时候,应当尽快更改默认密码。
如果操作成功,虚拟机管理列表应能列出刚才新建的虚拟机(见图1.14)。
图1.14
在虚拟机菜单条中点击Start 图标,即可运行Kali Linux 虚拟机。完成启动过程之后, Kali Linux 应当会进入登录界面。
如果您遇到了图1.15 所示的问题,那么就需要安装VirtualBox Extension Pack(功能增强包)。您可在http://www.virtualbox.org/wiki/Downloads下载这个工具。
请注意,您应当下载版本号和VirtualBox完全相同的功能增强包。也就是说,如果您使用的是4.3.0版的VirtualBox,就应当下载4.3.0版的Extension Pack。
在VirtualBox管理程序安装功能增强包的步骤如下。
1.通过菜单File | Preferences,进入Settings 设置界面。随后,选择左侧的Extensions (见图1.16)。
图1.15
图1.16
2.点击Add package按钮,选中刚才下载的VirtualBox Extension Pack。这时,VirtualBox 会在弹出窗口里列出扩展功能包的信息,并请您确认是否继续安装(见图1.17)。
3.选择Install按照屏幕上的提示安装扩展功能包。如果安装过程顺利,您将在Extension列表里看到扩展功能包的相关信息(见图1.18)。
图1.17
图1.18
4.现在,您可以使用默认的用户名和密码登录Kali Linux。
安装Kali Linux 的第三种方法,就是把它安装到USB 闪存里。通常,人们把安装在闪存上的Kali Linux 叫做portable(便携)Kali Linux。按照Kali官方文件的说法,这种安装方式的启动和安装速度最快,是Kali研发人员最喜欢的安装方式。相比在硬盘上安装,只能在一台机器上启动Kali 系统而言,装有Kali Linux 的闪存盘可以在所有支持USB 启动的主机上使用Kali系统。
这种安装方法同样适合在内存卡(SSD、SDHC、SDXC 等)上安装Kali Linux。
很多工具都可以制作portable Kali Linux。其中,Rufus(http:// rufus.akeo.ie)就不错。这个工具只能在Windows操作系统下运行。
其他可从ISO镜像文件制作可启动USB的工具如下所示:
● Win32DiskImager(https://launchpad.net/win32-image-writer);
● Universal USB Installer(http://www.pendrivelinux.com/universal-usbinstaller-easy-as-1-2-3/);
● Linux Live USB Creator(http://www.linuxliveusb.com)。
在制作portable Kali Linux 之前,您需要准备好几样素材。
● Kali Linux 的ISO 镜像文件:虽然您可以使用启动磁盘创建工具直接下载镜像文件,但是我们仍然认为提前下载好ISO镜像文件,再用Rufus使用镜像文件比较稳妥。
● USB 闪存盘:您需要一个容量足够大的 USB 闪存盘。我们推荐您使用 16GB 以上的闪存盘。
在下载Rufus之后,在Windows里双击rufus.exe文件就可以运行它。它会显示出程序界面。
如果您使用的是基于UNIX的操作系统,您可以直接使用dd指令创建可启动闪存盘。例如:
dd if=kali-linux-1.0.1-i386.iso of=/dev/sdb bs=512k
此处的/dev/sdb应当是您USB闪存盘的设备名称。
使用Rufus 创建可启动的Kali USB 闪存盘的设置如下(见图1.19)。
● Device:选择USB 闪存驱动器。本例中,它是Windows 系统的E 盘。
● Partition scheme and target system type:设置为MBR partition scheme for BIOS or UEFI computers。
● Create a bootable disk using:设置为ISO Image 并使用右侧磁盘图标选取ISO 镜像文件。
然后点击Start创建可启动闪存盘(见图1.20)。
在完成这些步骤之后,如果您想要立即测试USB闪存盘,则应在保存好所有文件的情况下重启计算机。您可能需要配置计算机的 BIOS,使其从 USB 磁盘启动计算机。如果没有问题的话,您应该可以通过USB 闪存盘启动Kali Linux 系统。
在USB闪存盘上安装系统之后,如果您想要让系统能够保存您所更改的文件(即persistence capabilities),您可参照Kali官方文档进行设置。请参见 Adding Persistence to Your Kali Live USB,地址为http://docs. kali.org/installation/kali-linux-live-usb-install。
图1.19
图1.20
在登录Kali Linux 虚拟机之后,需要进行几项配置。对执行渗透测试来说,这几项配置相当重要。
在 VirtualBox 里配置好 Kali Linux 所用的虚拟机之后,我们建议您安装客户端功能增强包(VirtualBox guest additions)。这个功能增强包的作用有很多。
● 它支持以全屏模式查看虚拟机的桌面。
● 它显著改善鼠标操作方面的用户体验。
● 它支持物理主机到虚拟主机之间的文本复制功能。
● 它支持物理主机和虚拟主机之间的文件夹共享。
安装客户端功能增强包的具体步骤如下。
1. 在VirtualBox的菜单里,选择Devices | Install Guest Additions。此后,被虚拟机会以光盘的形式加载VirutualBox guest additions(见图1.21)。
图1.21
2.在图1.22所示的Virutalbox窗口里,点击Cancel。
图1.22
3.打开终端程序terminal,进入VirtualBox guest additions所在的CDROM目录。一般情况下,这个目录的路径是/media/cdrom0(见图1.23)。
图1.23
4.执行VBoxLinuxAdditions.run,以启动它的安装程序。
sh./VBoxLinuxAdditions.run
5.等待数分钟之后,安装程序会编译并安装好客户端功能增强包的各种模块(见图1.24)。
图1.24
6.进入root的主目录。
7.在VirtualBox的菜单里,使用右键点击VBoxAdditions 的CD镜像文件,然后选中Eject,弹出这个虚拟光驱。如果操作成功,VBoxAdditions的光盘图标将从虚拟机的桌面上消失。
8.在终端窗口里使用reboot指令重新启动虚拟机。
9.待重启之后,您可以在菜单栏选择View|Switch to fullscreen进入全屏模式。
本节将介绍在Kali Linux 里设置有线网络和无线网络的方法。
1.配置有线网络
无论是通过VMware 磁盘镜像还是通过ISO镜像安装Kali Linux,默认情况下Kali Linux接入网络的方式都是NAT(网络地址转换)。在NAT方式下,Kali Linux的虚拟机可以通过物理主机联入外部网络,而外部网络甚至是物理主机自身都无法直接访问安装有Kali Linux的虚拟机。
进行实地的渗透测试时,您可能需要把网络结构变更为Bridged Adapter。具体的设置步骤如下。
1.首先请确定您已经关闭(power off)虚拟机。
2.在VirtualBox 管理程序里,选中相应的虚拟机,即安装Kali Linux 的虚拟机,然后点击窗口右侧的 Network,通过下拉选项把 Attached to 从 NAT 变更为 Bridged Adapter(桥接适配器)。如图1.25所示,其中的Name选项可设置为您需要测试的网卡接口。
图1.25
如需使用桥接连接,首先要使物理主机与网络设备连接,例如路由器或交换机。同时,接入的网络里应当有DHCP服务,以分配IP地址给虚拟机。
您可能已经注意到了,通过DHCP获取的IP地址并不是固定的IP地址,这种IP地址在一定时间后可能会发生变化。如果Kali Linux 通过DHCP 获取IP 地址,在超过固定周期(DHCP的租赁时间)之后,DHCP会重新给虚拟机分配一次IP地址。重新分配的IP地址可能和上次分配的IP地址相同,也可能不同。
如果虚拟机需要使用固定的 IP 地址,应该修改虚拟机的网络设置文件/etc/network/interfaces。
默认情况下,Kali Linux 的网络设置文件如下。
auto lo
iface lo inet loopback
这个配置文件指定所有网卡都通过DHCP获取IP地址。如需为虚拟机绑定固定IP地址,就不得不对这个文件进行相应修改。
auto eth0
iface eth0 inet static
address 10.0.2.15
netmask 255.255.255.0
network 10.0.2.0
broadcast 10.0.2.255
gateway 10.0.2.2
上述文件令第一个有线网卡eth0 绑定了 IP 地址10.0.2.15。您可能需要根据实际情况修改上述设置。
2.配置无线网络
在虚拟机里安装的Kali Linux无法使用笔记本上集成的无线网卡。好在您可以使用USB接口的无线网卡。
在Kali虚拟机上使用USB接口的无线网卡时,要把USB无线网卡插在主机USB接口上,在VirtualBox 的菜单里选Devices|USB Devices,再选中所要使用的USB 无线网卡。
如图1.26所示,我们选择了Realtek芯片的USB无线网卡。
图1.26
如果您的无线网卡可以被Kali识别,可以在dmesg指令的输出中看到无线网卡的硬件信息。
在Kali 桌面的右上角可以找到Network Connection(网络连接)的图标。点击这个图标后,将能看到网络信息。
此时可以看到您的机器可用的有线网络和无线网络的名称(见图1.27)。
图1.27
要想连接无线网络,就要双击该网络的SSID。如果选定的网络要求您进行身份验证,程序会提示您输入密码。在输入正确的无线网络密码后,您就被授权使用该无线网络。
3.启用网络
我们通过service指令来启动和关闭网络。
如需启用网络,可以使用下述指令:
service networking start
如需关闭网络,可以使用下述指令:
service networking stop
您需要有root权限才能运行上述两条指令。
接下来,您可以通过ARP ping 请求(arping 指令)连接同网段的其他主机,来测试网络配置是否正确。
默认情况下,您需要在计算机每次重启后手动启动网络连接服务。您可通过下述指令,让(虚拟)计算机在每次启动的时候都自动启动网络连接服务:
update-rc.d networking defaults
上述指令会在/etc/rc*.d目录里创建必要的连接,以在Kali启动的时候自动执行网络配置的脚本程序。
在进行渗透测试的工作时,我们经常需要在物理主机和虚拟机之间交换文件,例如把渗透测试的文档复制到物理主机上。VirtualBox的文件夹共享(Shared Folders)功能可以满足这一需求。
您要先关闭虚拟机,再在 VirtualBox 里配置文件夹共享。关闭虚拟机之后,选中相应的虚拟机名称(右键点击Settings),然后在窗口左侧菜单里点击Shared Folders,如图1.28所示。
点击右侧的加号“+”图标,即可添加要物理主机共享给虚拟机的文件夹。在此之后, Folder Path 里会显示共享文件夹的信息。
图1.28
您还可以调整Folder Name选项,设置共享文件夹的共享名称。此后,虚拟机(Guest OS)就可以通过这个共享名称访问物理主机的文件夹。
如果不希望虚拟机更改共享文件夹的内容,可设置Read-only选项设置,把该文件夹设置为只读。如果选中Auto-mount选项,虚拟机在每次启动后都会连接这个文件夹。这些设置如图1.29所示。
图1.29
在图1.29所示的设置里,我们共享了主机上的D:\software文件夹给虚拟机,并且设置其文件夹权限为只读。
虚拟机可以通过目录/media/sf_software目录访问物理主机共享的文件夹。
一旦您把虚拟机配置到理想的可工作状态,我们建议您立刻对虚拟机进行快照备份。万一日后出现配置故障,可利用快照备份把虚拟机迅速恢复到正常工作状态。
VirtualBoxti 提供了方便的快照备份功能。您可通过菜单Machine-Take Snapshot 进行快照备份(见图1.30)。只有在启动虚拟机的情况下才能进行快照。
图1.30
Snapshot Name 就是您给此次备份起的名字,我们建议您在里面标注上备份日期。您还可以在Snapshot Description里对此次备份进行详细备注。填写完全部信息并点击OK后, VirtualBox就开始进行备份。备份时间的长短取决于保存信息的信息量大小。
人们时常需要以文件形式备份虚拟机,或通过这种方法把虚拟机分享给他人使用。VirtualBox的虚拟机导出功能简化了这种操作。在关闭需要导出的虚拟机之后,在菜单栏选中File | Export Appliance 就可导出所选的虚拟机。
导出虚拟机的操作步骤如下。
1.选中Export Appliance 选项,调出Appliance Export Wizard。
2.选择需要导出的虚拟机。
3.设置导出文件的目录和文件名。默认情况下,文件将保存在主目录下,文件将保存为ova(Open Virtualization Format Archive)格式。如果您不清楚应该以何种格式保存这个文件,就应当使用默认的文件存储格式。
4.您可以在图 1.31 所示的界面里设置虚拟机的各种属性。如果不需要进行特定设置,可以不填写任何选项。
图1.31
5.点击Export之后,VirtualBox将把虚拟机导出到文件。导出时间的长短取决于虚拟机硬盘容量的大小。它的硬盘文件越多,导出的时间也就越长。在我们的测试环境下,导出Kali Linux 虚拟机的操作耗时大约20 分钟。
Kali Linux 由操作系统内核和数百个软件构成。如果需要使用软件的最新功能,您就需要将其更新到最新的版本。
我们建议您仅从Kali Linux 官方的软件仓库(repository)进行更新。
在您安装和配置好Kali Linux 之后,就应当立即进行系统更新。因为Kali 是基于Debian的操作系统,您需要使用Debian的指令(apt-get)进行系统更新。
更新指令apt-get会查询/etc/apt/sources.list文件,从中获取更新服务器的信息。您需要确定这个文件指定了正确的升级服务器。
默认情况下,Kali Linux 的sources.list 文件包含下述信息。
LIVE/INSTALL Binary 20130315-11:39]/ kali contrib main non-free
INSTALL Binary 20130315-11:39]/ kali contrib main non-free
deb?Index of /kali?kali main non-free contrib
deb-src?Index of /kali?kali main non-free contrib
deb?http://security.kali.org/kali-security?kali/updates main contrib non-free
在进行系统更新之前,要使主机上软件包的索引信息与/etc/apt/sources.list上的服务器进行同步。同步索引的指令是:
apt-get update
在为Kali 安装软件或安装系统更新之前,每次都要执行apt-get update 指令。
待同步软件包的索引信息之后,就可以进行软件更新。
系统更新的指令有两种。
● apt-get upgrade:升级系统上安装的所有软件包。如果在升级软件包时出现什么意外,所涉及的软件包会原封未动地保持在更新之前的状态。
● apt-get dist-upgrade:升级整个Kali Linux系统。如需从Kali Linux 1.0.1升级到Kali Linux 1.0.2,就应当使用这条指令。它不仅能够升级所有已安装的软件包,而且会处理升级过程中可能出现的软件冲突。某些情况下,它的部分升级过程需要人工参与。
在输入升级Kali Linux所需的适当指令之后,apt-get 程序会详细列出将要安装、升级或删除的软件包信息,然后等待您的确认。
在您进行确认之后,apt-get程序将开始进行系统更新。系统更新的时间长短,主要取决于带宽和网速的情况。
Kali Linux 系统可安装多种网络服务。在这一节,我们仅讨论其中三种服务的安装和配置方法:HTTP、MySQL 和SSH 服务。您可以通过菜单Kali Linux | System Services,查看可以安装的其他服务。
从事渗透测试的工作人员,可能会经常用到Web服务器。例如,当需要测试Web程序的恶意脚本时,就需要自己搭建个Web 服务器。其实Kali Linux 已经集成了Apache,只要将之启动就可以开始使用了。
激活Kali Linux 的HTTP服务的步骤如下。
1.如果要通过桌面菜单启动Apache HTTP服务,可在桌面菜单中依次选中Kali Linux |System Service | HTTPD | apache2 start。如果要通过命令行启动它,可在终端窗口里输入下述指令:
service apache2 start
2.如果配置文件没有问题,系统会返回下述响应信息。
[....] Starting web server: apache2 ok
3.在此之后,您可以使用浏览器浏览网页。正常情况下它会显示 It works!的默认页面(见图1.32)。
图1.32
停止Apache HTTP服务的操作步骤如下。
1.如果要通过桌面菜单停止Apache HTTP 服务,可在桌面菜单中依次选中Kali Linux | System Service | HTTPD | apache2 stop。如果要通过命令行停止它,可在终端窗口里输入下述指令:
service apache2 stop
2.系统会返回下述响应信息。
[....] Stopping web server: apache2 [ ok waiting .
请注意,在计算机启动的时候,系统并不会自动启动上述服务。在下次启动Kali Linux系统的时候,您都需要再次执行这个命令。好在我们可以通过下述指令,指定计算机在启动时自动启动Apache HTTP服务:
update-rc.d apache2 defaults
这条指令将把apache2服务添加到自动启动的程序组里。
下面将要介绍MySQL服务。MySQL属于标准的关系数据库(RDBMS)。人们通常会使用Apache服务器执行PHP程序,并通过PHP程序调用MySQL;以这种配置组合来创建动态的Web应用服务程序。就渗透测试的工作而言,您可以把渗透测试的测试结果存储到MySQL服务器里。例如,可以用MySQL数据保存漏洞信息和网络映射的分析结果。当然,这需要您首先启用这个程序。
启动 Kali Linux 自带的MySQL 服务的操作步骤如下。
1.如果要从桌面菜单启动 MySQL 服务,可在桌面菜单中依次选中 Kali Linux | System Service | MySQL | mysql start。如果要通过命令行启动它,可在终端窗口里输入下述指令:
service mysql start
2.系统会返回下述响应信息。
[ ok ] Starting MySQL database server: mysqld . . ..
[info] Checking for tables which need an upgrade, are corrupt or were not closed cleanly..
3.如需测试MySQL的工作状态是否正常,可使用MySQL客户端登录到服务器。我们使用用户名(root)和密码登录MySQL服务器。
mysql –u root -p
4.系统会返回下述响应信息。
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 42
Server version: 5.5.30-1 (Debian)
Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners.
Type ''help;'' or ''\h'' for help. Type ''\c'' to clear the current input statement.
mysql>
5.您可以在MySQL的提示符下直接使用SQL命令。如需退出MySQL客户端程序,请使用quit命令。
出于安全性的考虑,默认情况下,只能从本机访问Kali Linux系统里的 MySQL 服务。如需调整这个设置,请修改配置文件/etc/mysql/my.cnf里的bind-address语句。除非需要从其他主机访问MySQL服务,否则我们建议您不要修改它。
停止MySQL服务的操作步骤如下。
1.如果要通过桌面菜单停止MySQL服务,可在桌面菜单中依次选中Kali Linux | System Service | MySQL | mysql stop。如果要通过命令行停止它,可在终端窗口里输入下述指令。
service mysql stop
2.系统会返回下述响应信息。
[ ok ] Stopping MySQL database server: mysqld.
下述指令可使Kali Linux 系统在启动过程中自动启动MySQL 服务。
update-rc.d mysql defaults
这条指令将把MySQL服务添加到自动启动的程序组里。
SSH 的全称是Secure Shell。它是目前较为可靠的专为远程登录会话和其他网络服务提供安全性的协议。除了远程登录的服务功能以外,它还有很多功能:它支持在主机间安全地传递文件、在远程主机上执行命令,以及X11(Linux的桌面)会话转发等。
管理SSH服务的操作步骤如下。
1.如果要从桌面菜单启动SSH 服务,可在桌面菜单中依次选中Kali Linux | System Service | SSH | sshd start。如果要通过命令行启动它,可在终端窗口里输入下述指令。
service ssh start
2.系统会返回下述响应信息。
[ ok ] Starting OpenBSD Secure Shell server: sshd.
3.如需测试SSHD的工作状态是否正常,可以在其他主机上使用SSH客户端登录到服务器。如果您使用的是 Microsoft Windows 系统,可以使用 putty 进行测试。下载 putty 的官方网站是http://www.chiark.greenend.org.uk/~sgtatham/putty/。
4.如果要通过桌面菜单停止SSHD服务,可在桌面菜单中依次选中Kali Linux | System Service | SSH | sshd stop。如果要通过命令行停止它,可在终端窗口里输入下述指令。
service ssh stop
5.系统会返回下述响应信息。
[ ok ] Stopping OpenBSD Secure Shell server: sshd.
6.下述指令可使Kali Linux 系统在启动过程中自动启动SSH 服务。
update-rc.d ssh defaults
这条指令将把SSH服务添加到自动启动的程序组里。
我们在本节安装渗透和测试的目标——一台存在很多漏洞的虚拟主机。本书很多章节里的特定主题都涉及这台脆弱系统(vulnerable server)。在法律许可的范围之内,我们不可以攻击任何在Internet上的存在漏洞的真实主机,所以我们必须使用自己安装的脆弱系统。我们在此强调,除非有对方的书面许可,否则决不可以渗透或测试他人的主机。此外,我们希望您能够在自己搭建的环境中提高渗透技能。当攻击没有达到预期成效时,只要渗透环境完全可控,您就可以轻易地检查目标主机的情况,从而找到失败的原因。
在很多国家,只要目标主机不是您自己的,哪怕您对其进行端口扫描都会被认为是犯罪。而且,只要使用虚拟机作为目标主机,即使它发生了故障,我们也能很快将其修复。
我们将在虚拟机里安装Metasploitable 2,用它作为我们的脆弱系统。Metasploitable 的研发团队是Rapid7 旗下著名的HD Moore。
除了Metasploitable 2之外,还有很多可用于搭建渗透测试环境的脆弱系统。详情请参见:http://www.felipemartins.info/2011/05/pentesting?vulnerable-study-frameworks-complete-list/。
无论是操作系统、网络,还是Web应用服务方面,Metasploitable 2 都有非常多的漏洞和问题。
有关这些漏洞的详细情况,请参见 Rapid 7 的官方网站:https://community.rapid7.com/docs/DOC-1875。
在VirtualBox 里安装Metasploitable 2 的操作步骤如下。
1.从网络上下载Metasploitable2的虚拟机镜像文件。该网站网址是http://sourceforge. net/projects/metasploitable/files/Metasploitable2/。
2.解压缩下载的ZIP 文件。待解压缩Metasploitable 2 的ZIP文件之后,您将看到5个文件。
○ Metasploitable.nvram
○ Metasploitable.vmdk
○ Metasploitable.vmsd
○ Metasploitable.vmx
○ Metasploitable.vmxf
3.在 VirtualBox 里创建一个虚拟机。本例设置这个虚拟主机的名称(Name)为Metasploitable 2,并设置操作系统为Linux-Ubuntu。
4.给这个虚拟主机分配1024MB内存。
5.在Virtual Hard Disk设置里,选择Use existing hard disk,然后选中我们先前解压缩出来的Metasploitable文件(见图1.33)。
图1.33
6.修改联网类型为Host-only adapter,以保证这台虚拟主机服务器同时可被物理主机和Kali Linux 主机访问。我们还要修改Kali Linux 的虚拟主机,把它的联网类型也改为Host-only adapter。
7.启动虚拟主机 Metasploitable 2。待完成启动过程之后,您可使用下述信息登录Metasploitable 2 的终端。
○ 用户名:msfadmin
○ 密码:msfadmin
8.登录成功之后,Metasploitable 2 的终端窗口如图1.34 所示。
图1.34
虽然最新版本的Kali Linux 带有大量的安全工具,但是由于以下原因,您可能还会需要从软件仓库之外安装程序:
● Kali Linux 所采纳的版本,可能不是该软件的最新版;
● Kali Linux 的软件仓库(repository)可能没有收录您所需要的软件。
我们的建议是首先在软件仓库里搜索软件。如果软件仓库里有您所需要的软件,就通过软件仓库安装该软件。如果在软件仓库里找不到该软件,您可能就不得不从软件作者的网站下载并安装它。
我们的经验表明,您应当尽量通过软件仓库安装软件。这样一来,您就不必关注软件管理(主要是更新)的那些繁琐事项。
Debian系统有很多可助您管理软件包的程序,例如dpkg、apt和aptitude程序。按照默认方式安装的Kali Linux 会带有dpkg 和apt 程序。
如需了解apt和dpkg命令的详细信息,请参见:https://help.ubuntu.com/community/AptGet/Howto/和http://www. debian.org/doc/manuals/debian-reference/ch02.en.html。
本节将通过几个与安装软件包有关的实例来介绍apt命令。
如需在软件仓库中查找某个软件包的名称,可使用指令:
apt-cache search <软件包名称>
上述指令将列出含有“软件包名称”的全部软件包。例如,我们可以使用下述指令搜索一个叫做nessus的软件包。
apt-cache search nessus
如需查看软件包的详细信息(描述信息、软件包大小和版本等信息),可使用命令:
apt-cache show <软件包名称>
如果决定安装或更新某个软件,那么就可用 apt-get 命令安装该软件包。apt-get指令的基本用法是:
apt-get install <软件包名称>
如果您未能在Kali Linux 的软件仓库里找到您所需要的软件,并且您能够确定它日后不会对系统造成不良影响,那么您可以手动安装软件包。
务必从可信的软件源下载软件,尽量从软件研发团队的网站下载。如果研发团队提供.deb安装包(后缀名为.deb的文件是 Debian的安装包文件),您可以使用 dpkg命令安装该软件包。如果他们没有提供.deb安装包,您可以通过源代码安装该软件。虽然实际情况各有不同,但是通过源代码安装软件的方法大体都可归纳为下述几个步骤。
1.使用压缩包管理软件(例如Tar和7-Zip)解压缩软件包。
2.进入到解压缩文件所在的目录。
3.执行指令:
./configure
make
make install
本节后续的篇幅将介绍如何安装没有被Kali软件仓库收录的软件工具。我们将演示以下两种软件安装软件机制:
● 通过Debian 安装包安装应用程序;
● 通过源代码安装应用程序。
本小节将通过第一种安装机制安装最新的Nessus漏洞扫描程序(第5版)。我们在Kali Linux的软件仓库进行过相关搜索,并没有找到这个程序。
与上一版本的程序相比,第5版的Nessus的程序具有更多功能。新版程序能够通过更为详细的过滤规则整理扫描结果,创建创建更为灵活的扫描报告,而且简化了扫描策略的设置过程。因此我们不再使用第4版的Nessus。
如需了解新版Nessus的改进之处,请参见:Tenable Cyber-Exposure Solutions and Products | Tenable??nessus/ nessus-product- overview/why-upgrade to-nessus-5。
我们可以访问Nessus的官方网站(Obtain an Activation Code | Nessus? | Tenable??agreement),并下载其针对Debian 6 的安装包。然后,通过dpkg指令安装这个软件包:
dpkg -i Nessus-x.y.z-debian6_i386.deb
在这个指令里,x.y.z 代表 Nessus 的版本号。请根据下载文件的文件名进行相应替换。
接下来,根据Nessus安装程序在屏幕上的提示进行相应配置。
1.您可通过下述指令启动Nessus的服务端程序。
/etc/init.d/nessusd start
3.上图1.35所示的界面会引导您设置Nessus的管理员账号。而后,它要求您输入Nessus扫描程序的激活码。您可在官方网站(http://www.nessus.org/register/)进行注册,从而获取启动程序所需的激活码(见图1.36)。
图1.35
图1.36
4.您只有在成功注册之后才能下载并使用最新的 Nessus 组件。下载程序组件的时间会比较长,您可以充分利用这个时间做些其他事情。
在第二个实例里,我们将安装一个名为 cisco_crack 的密码破解工具。它主要用来破解Cisco 配置文件中的type 7 类型密码。我们可以在官方网站下载它的源代码,该网站网址是http:// insecure.org/sploits/cisco.passwords.html。
Cisco 配置文件中的 type 7类型密码,其加密强度相当弱,所以应当避免使用这种类型的密码。虽然此类密码已经很少见了,但是还是有些设备在使用这种密码。在这种情况下,Cisco Crack这类工具将会派得上用场。
下载了源代码之后,下一个步骤就是编译源代码。在开始编译它之前,您需要在原文件里添加两条include语句:
现在,这个源代码文件应该有4条include语句。
我们使用下述命令编译程序的源代码。
gcc cisco_crack.c –o cisco_crack
如果编译成功,将会产生一个名为 cisco_crack 的可执行文件。我们可以通过下述指令查看它的帮助信息。
Usage: ./cisco_crack -p
./cisco_crack
本章带您步入Kali Linux的奇妙世界。您可以在实地的渗透测试工作中直接使用其独到的Live DVD 系统。Kali 的前身是BackTrack——一个非常著名的主攻渗透测试的Linux 发行版。
本章首先介绍了Kali Linux 的简史,然后介绍了它的主要功能。最新版本的Kali Linux自带有很多可用于渗透测试的软件工具。除了渗透功能之外,Kali Linux 还可用于电子取证、无线安全研究、逆向工程和硬件破解。
在此基础上,本章介绍了安装Kali Linux 的多种方法。虽然无需安装Kali Linux 系统就可以把它直接当作Live DVD 使用,但是我们也可以把它安装到硬盘上,甚至是USB 闪存里。当我们把它安装到USB 闪存的时候,它就成为了portable Kali Linux。
在使用Kali Linux 开始做渗透测试之前,您还需要设置好或有线或无线的网络连接。我们还介绍了 VirtualBox 虚拟机系统的一些特性,包括安装虚拟机客户端功能增强包,设置文件夹共享,导出虚拟机和快照备份。
因为 Kali Linux 整合了操作系统以外的一些软件,所以在必要的时候需要进行系统更新。我们可以单独更新应用程序,也可以连同 Linux 内核一并更新。
您可能需要进行一些渗透测试方面的练习。但是在多数国家里,未经许可就渗透他人的服务器是违法行为。为了满足教学的需要,人们刻意单独研发出了多种脆弱系统——一种含有很多漏洞的虚拟主机。您可以在虚拟机里安装脆弱系统,以进行渗透测试的练习。本文推荐的脆弱系统是Rapid7 推出的Metasploitable 2。
Kali Linux 系统自带有多种网络应用服务,我们选取了 HTTP、MySQL 和SSH 进行介绍。具体来讲,相关内容都由简介和管理服务(例如启动和停止服务的方法)的篇幅组成。
在本章的最后,我们演示了安装Nessus网络扫描程序和Cisco密码破解工具的过程,介绍了如何安装没有被Kali Linux 收录的信息安全工具。
在下一章,我们将探讨渗透测试的方法学理论。