本书中的各章都按照“原理—例题—解题思路和工具”的模式进行讲解。为了方便读者进一步复现书中的例题和解题步骤,我们先介绍一些CTF比赛中经常用到的软件,希望大家能掌握它们的使用方法,并提前搭建好环境。
我们使用的电脑也称为物理机,各位读者的物理机中可能使用了不同的操作系统:Windows、macOS、Ubuntu或者CentOS等。在CTF比赛的过程中,物理机使用的操作系统不一定能满足解题的需求,这时我们就需要安装虚拟机软件,通过虚拟机软件安装并操作多个不同的操作系统,从而利用多种工具快速解题。
常见的虚拟机软件有VMware Workstation、VMware Fusion、Parallels Desktop和VirtualBox等。前3款软件是付费软件,最后一个软件是免费的开源软件。VMware Workstation可以在Windows和Linux操作系统上使用,VMware Fusion和Parallels Desktop可以在macOS系统上使用,VirtualBox支持Windows、Linux和maxOS。本节中,我们以VMware Workstation为例进行说明。
我们建议大家安装VMware Workstation专业版(即VMware Workstation Pro),下载地址为:https://www.vmware.com/cn/products/workstation-pro/workstation-pro-evaluation.html。大家可以根据自己的操作系统选择不同的VMware类型进行下载,这里我们选择下载Windows版的VMware。下载完成后,双击exe安装包,根据每一步的提示,即可完成安装。
安装好VMware后,接下来要导入虚拟机。根据虚拟机文件格式的不同,有三种导入方法。 方法1 :直接安装虚拟机镜像。这种方法适用于通过虚拟机镜像文件(文件后缀为.iso)安装虚拟机。如图0.4.1所示,在“文件”菜单中选择“新建虚拟机”,然后选择“典型”安装,在图0.4.2所示界面中选择iso文件的路径。接下来只需要注意虚拟机保存的位置,其他选项按照默认设置即可。
图0.4.1 VMware导入虚拟机
图0.4.2 选择iso镜像文件
方法2 :导入OVF或OVA文件。OVF(Open Virtualization Format,开放虚拟化格式)和OVA(Open Virtualization Appliance,开放虚拟化设备)均包含所有用于部署虚拟机的必要信息。OVF包构造了必要的多个文件,相比之下,OVA包是一个单一的文件。OVF文件使用.ovf作为文件扩展名,OVA文件使用.ova作为文件扩展名。
导入时,在图0.4.1所示的界面中选择“文件→打开”,再选择对应的.ovf或.ova文件。然后,设置虚拟机名称和保存路径,如图0.4.3所示。导入完成后,正常打开虚拟机即可。
图0.4.3 导入OVA文件时填写虚拟机名称和保存路径
方法3 :直接打开.vmx文件。有时候,我们可能复制了别人的虚拟机文件夹,如图0.4.4所示。此时我们可以直接双击.vmx文件,或者在图0.4.1所示的界面中选择“文件→打开”,然后选择对应的.vmx文件。这种方法的好处是,打开就可以使用,不需要安装或者导入,避免等待的过程;缺点是导入者的VMware Workstation Pro版本要和导出者的版本一致,否则可能出现错误。
图0.4.4 直接复制虚拟机文件夹
在本书中,我们会频繁使用Kali虚拟机中自带的工具。Kali虚拟机的下载地址为https://www.kali.org/get-kali/#kali-virtual-machines。读者朋友可以根据自己的需要下载,然后按上述方法导入。该虚拟机的用户名和密码为kali/kali。
本书提供的工具包中包含已经安装好必要工具和相关环境的虚拟机,读者可以直接使用,也可以尝试自己安装所有的工具。
Python是由Guido van Rossum于1990年前后在荷兰国家数学和计算机科学研究所设计出来的。它是一种面向对象的解释型程序设计语言,具有丰富和功能强大的库。Python已经成为继Java、C++之后的第三大语言。Python简单易学,运行方便,因而在CTF比赛中经常使用,一些CTF比赛甚至专门针对Python设计编程或分析类型的题目。
如果读者想自学Python,可以在网络上找到很多学习资源。比如,慕课网(网址为https://www.imooc.com/)里面的Python免费初级课程就能基本满足本书的使用需求。
Python目前有两类版本:Python2和Python3。2020年之后,Python官方不再对Python2进行维护,使用Python3是未来的趋势。但由于历史和个人习惯等因素,一些非常好用的脚本还没有完全转换为Python3,这就要求我们在操作系统中同时搭建Python2和Python3的运行环境。在本书后面的介绍中,会详细说明脚本对应的是Python2还是Python3。
1.在Kali下同时使用Python2和Python3
在上一小节介绍的下载的Kali虚拟机中默认已经安装好Python2和Python3的运行环境。在终端中输入Python,再按回车键,就可以进入Python2的界面。如果在终端中输入Python3,就可以进入Python3的界面。
pip是一个Python包安装与管理工具,有时候,我们需要通过pip安装一些包,才能够正常运行脚本。新版Kali中内置的Python没有安装pip,我们需要打开终端,输入如下命令:
通过上面3条命令就可以在Python2中安装好pip。在Python3中安装pip的命令为:
2.在Windows下同时使用Python2和Python3
根据操作系统配置,可以从Python官网https://www.python.org/downloads/下载对应的安装包。本书的工具包中提供了Windows 64位系统下的Python2和Python3安装包。
双击Python安装包进行安装,可以将不同版本的Python安装到指定的路径下。如图0.4.5所示,我们可以在E盘的根目录下分别建立2个文件夹:python27和python39,以指定Python安装时的路径,便于后面进一步设置时进行区分。在安装过程中,要注意安装路径的选择。另外,安装过程中可以选择是否自动设置环境变量,如图0.4.6所示,建议读者选择“Entire feature will be installed on local hard drive”。
图0.4.5 分别将不同版本的Python安装到不同文件夹下
图0.4.6 安装过程选择自动配置环境变量
两个版本的Python都安装完成后,打开对应的安装路径,将python27文件夹下的python.exe重命名为python2.exe,将pythonw.exe重命名为pythonw2.exe。对python39文件夹也做同样的操作。
接下来,在Windows7或者Windows10中找到计算机或此电脑,单击鼠标右键,然后依次点击“属性”“高级系统设置”“环境变量”,选择“系统变量”窗口下面的“Path”,就能看到已经自动添加的环境变量。
打开一个新的命令行界面,分别输入命令,如图0.4.7所示。如果都能正确执行,说明环境搭建成功。图0.4.7中显示安装路径在F盘根目录下,安装的Python3版本是3.8.10,且只修改了python27文件夹中的文件名。
图0.4.7 多版本Python安装成功
Docker是一个开源的应用容器引擎,让开发者可以将他们的应用以及依赖包打包到一个可移植的镜像中,然后发布到任何流行的Linux或Windows机器上。利用Docker也可以实现虚拟化。容器完全使用沙箱机制,相互之间没有任何接口。
通过命令sudo apt-get install docker.io即可在Kali虚拟机上安装Docker,然后可通过其他命令安装并启动相应的Docker镜像。关于Docker的具体使用方法,后面的章节中会有详细说明。