进入Kali Linux后,可以看到一个和Windows桌面类似的图形用户界面,也是由桌面、系统菜单、图标快捷方式、任务栏等构成。Kali Linux默认桌面为Xfce,它的系统菜单称为Whisker菜单,和Windows任务栏与系统菜单位于屏幕下部不同,其任务栏和Whisker菜单位于屏幕上部,单击系统菜单图标,会打开一个下拉菜单,所有工具按照类别分为13类。当选中某类菜单项,该类菜单包含的工具就会在右侧显示,如图2-12所示。
图2-12 系统菜单及任务栏
在图2-12中,当前位于“漏洞利用工具集”菜单项,右侧菜单显示了其包含的所有工具,如果需要使用某个工具,单击该工具图标即可运行该工具,如单击“sqlmap”图标即可运行该工具。单击“全部应用程序”图标可查看所有工具。单击“注销”按钮可进行“重启操作系统”“关闭系统”等操作。菜单方式虽然方便,但有时需要以命令方式执行程序,这时单击“终端模拟器”图标,在打开的命令行窗口中输入命令并按“Enter”键即可。终端模拟器打开后工作目录默认为当前登录用户主目录,因为Kali Linux默认登录账号是kali,所以工作目录为“/home/kali”。系统默认文字为英文,但可将其设置成中文,具体参考以下设置方法。
单击“终端模拟器”图标打开命令行窗口。在输入命令前,先介绍一下Kali的默认账号和密码。对于Kali 2020之前的版本,默认账号是root;密码是toor;2020之后的版本改变了安全策略,采用非root用户策略,改为用户名与密码都是kali。当程序需要以root权限运行时,需使用sudo命令并验证密码运行。输入命令“sudo dpkg-reconfigure locales”,输入密码kali后,终端模拟器打开locales配置窗口,如图2-13所示。
“Locales to be generated”选项很多,按“↓”键慢慢移到目标选项或按“PageDown”键快速定位到目标选项,将红色光标小方块移到“zh_CN.UTF-8 UTF-8”选项处,按空格键将其选中(选项前的[ ]中变成*),然后按“Tab”键转到<Ok>按钮处,按“Enter”键,打开下一配置窗口,如图2-14所示。
图2-13 locales配置窗口1
图2-14 locales配置窗口2
在图2-14所示窗口中,选择“zh_CN.UTF-8 UTF-8”选项,再按“Tab”键跳转到<Ok>按钮处,按“Enter”键,配置窗口关闭,返回命令行窗口,若出现如下提示,表示设置成功。
Generating locales (this might take a while)...
en_US.UTF-8... done
zh_CN.UTF-8... done
Generation complete.
重启操作系统后,操作系统默认文字变为中文。永久化U盘系统,选择以“Live system with USB Persistence(check kail.org/prst)”模式启动Kali Linux,也可这样实现中文显示。
Kali Linux的软件可以用命令“apt-get”从互联网软件源下载安装,但系统默认的软件源位于国外,速度比国内的软件源慢。国内的软件源有很多,如中国科学技术大学(简称中科大)、清华大学、东软信息学院、阿里云、163等都提供了软件源镜像,读者可以根据自己的需要选择、配置软件源。可以使用命令“sudo mousepad /etc/apt/sources.list”修改软件源的配置文件sources.list。mousepad是一个文本文件编辑器,类似Windows记事本,图2-12中,终端模拟器图标左侧是Firefox浏览器图标,浏览器图标左侧就是mousepad图标,要编辑文本文档时,可单击这个图标运行它,也可以在命令行使用命令“mousepad”运行它。使用mousepad打开sources.list后,使用“#”将官方软件源注释掉,使其失效,再将选择的国内镜像软件源添加进去,添加的内容如下所示。
deb http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib
deb-src http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib
这是中国科学技术大学的镜像源,也可以选择清华大学的镜像源,添加的内容如下所示。
deb http://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main contrib non-free
deb-src https://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main contrib non-free
注意: 别贪心,设一个离你近且速度快的软件源生效即可,如图2-15所示。
图2-15 编辑修改软件源
图2-15中笔者的配置只有8、9两行没有“#”,即中科大的软件源生效。执行命令“apt-get update”更新软件源,使用命令“apt-cache”可显示APT内部数据库中的多种信息,这些信息是从sources.list文件聚集的软件源的缓存,通过“apt-cache search 关键词”可以按照关键词搜索软件包,使用命令“apt-get install”可以安装软件。下载的Kali Linux虚拟机只是个基础版,安装的是Kali提供的基本工具集,可在此基础上,按需配置工具集,使用命令“sudo apt-get update && apt-cache search kali-tools”查看当前有哪些可用工具集,结果如下所示。
kali-tools-bluetooth - Kali Linux bluetooth attacks tools
kali-tools-top10 - Kali Linux's top 10 tools
kali-tools-vulnerability - Kali Linux vulnerability analysis menu
kali-tools-web - Kali Linux webapp assessment tools menu
kali-tools-windows-resources - Kali Linux Windows resources
kali-tools-wireless - Kali Linux wireless tools menu
工具集有很多,这里仅选部分显示,如kali-tools-wireless专用于无线渗透,如果需要基础版之外的扩展无线渗透工具,可以安装该工具集。执行命令“sudo apt-get install kali-tools-wireless”,kali-tools-wireless安装成功后,“06-无线攻击”菜单项下就会出现扩展工具图标,如图2-16所示。
图2-16 更新前后对比
还有一种更新是对系统进行更新,即对某些应用场景,需要更新的工具并不只限于某一个菜单项。使用命令“sudo apt-get update && apt-cache search kali-linux”查找系统工具包,结果如下所示。
kali-linux-core - Kali Linux base system (core packages)
kali-linux-default - Kali Linux's default packages (headless & GUI)
kali-linux-everything - Every tool in Kali Linux
kali-linux-firmware - Default firmware files for Kali Linux systems
kali-linux-headless - Kali Linux's default packages (headless)
kali-linux-labs - Environments for learning and practising on
kali-linux-large - Kali Linux extended default tool selection
kali-linux-nethunter - Kali NetHunter devices default packages
其中,kali-linux-everything指所有扩展工具包,使用命令“sudo apt-get install kali-linux-everything”就可把全部扩展工具更新进操作系统。本书使用的一些工具来源于扩展集,如果读者做实验时发现某个工具自己系统没有,请更新相应工具集,或更新kali-linux-everything。此外,Kali Linux系统还支持多桌面,即除了默认的Xfce桌面外,还支持其他桌面,如KDE、GNOME等十余种桌面,安装这些桌面软件同上面操作一样,先用命令“sudo apt-get update && apt-cache search kali-desktop”查找有哪些桌面软件包,然后选择想要安装的桌面软件包进行安装。如想安装KDE桌面,只需使用命令“sudo apt-get install kali-desktop-kde”,但有一点需要注意,安装过程中,会出现一个默认显示管理器窗口,这时一定要选择“sddm”选项,因为只有这样才可以实现多种桌面环境的切换,即你可以使用KDE桌面,又可以切换回Xfce桌面,如图2-17所示。
安装完KDE桌面后,重新启动系统,会发现登录界面变了,在登录界面左下角有个“桌面会话:Xfce Session”按钮,单击该按钮,出现登录桌面选择菜单,如图2-18所示。
图2-17 sddm设定
图2-18 登录桌面选择菜单
其中,Plasma(X11)就是KDE桌面,Xfce Session是原来的桌面,选择“Plasma(X11)”选项后,输入登录密码,即可登录KDE桌面,若想切换回原来桌面,只需注销系统,然后在登录桌面选择菜单中选择“Xfce Session”选项。同理,可以将其他桌面都安装进来,多桌面并存。如需安装其他软件,过程与上述相同,使用命令“sudo apt-get install xxx”下载安装即可,xxx代表要安装的软件名。
做实验时可能需要设置固定IP地址,Kali Linux可通过图形用户界面实现设置。单击系统菜单图标,然后选择“设置”->“高级网络配置”命令,在打开的网络连接窗口中双击“Wired connection1”连接,在打开的“编辑Wired connection1”窗口中选择“IPv4设置”选项卡,设置“方法”为“手动”,单击“添加”按钮,然后输入IP地址、子网掩码、网关、DNS服务器,单击“保存”按钮完成设置,如图2-19所示。
图2-19是笔者虚拟机的IP地址设置,在后续章节的实验中,如果是在VMware中模拟Kali Linux对目标机的渗透测试,均采用192.168.19.8这个IP地址,当然目标机也是和其在同一网段,如192.168.19.17。如果将其嵌入网络模拟环境中,模拟外网对内网的渗透测试,设置的地址为202.1.1.8,DNS设置的是谷歌的服务器地址8.8.4.4。设置完还没有生效,单击任务栏右侧的网络接口图标,如图2-20所示。在打开的菜单中选择“断开”选项,然后再次单击失效的网络接口图标,单击“Wired connection1”连接,设置即可生效。
图2-19 设置固定IP地址
图2-20 网络配置生效
时钟默认设置的不是中国时区。可右击时钟图标,在弹出的快捷菜单中选择“属性”命令,然后在打开的时钟属性设置窗口中“时区”文本框中输入“Asia/Shanghai”,为了布局美观,笔者选择的是液晶式布局,设置完后就会显示中国时区时间了,如图2-21所示。
图2-21 时钟设置
下面了解Kali Linux的文件系统。登录系统后,我们需要先熟悉一下Linux目录结构。Linux系统也存在目录的概念,但是Linux的目录结构和Windows的目录结构存在差异,Windows目录归属于某一盘符(C盘、D盘),文件绝对路径的起点是某一盘符,而Linux根(/)是所有目录的顶点,目录结构像一棵倒置的树。可以理解为Windows是C盘有一棵倒置树,D盘也有一棵倒置树,而Linux只有一棵倒置树。不论是Windows还是Linux,以下几个符号所代表的含义相同。
/:代表根目录,Windows代表驱动器盘符的根。
.:表示当前目录,也用./表示。
..:表示上一级目录,也用../表示。
在终端模拟器窗口,执行命令“cd /”,将当前目录切换到根目标,再执行“ls”命令查看根目录的组成,如图2-22所示。
图2-22 Kali Linux根目录
Kali Linux的文件按类别存放在各目录中,各目录所包含的内容如下所示。
(1) /boot: 存放启动Linux 的内核文件,包括连接文件及镜像文件。
(2) /etc: 存放系统配置文件,如用户账号与密码就存放在该目录的passwd文件与shadow文件中,该目录下文件只有root有修改权限。
(3) /lib: 存放基本代码库(如C++库),其作用类似Windows的DLL文件,几乎所有的应用程序都需要用到这些共享库。
(4) /sys: 该目录下安装了2.6内核后新出现的一个文件系统sysfs。
(1) /bin: 存放最常用的程序和指令。
(2) /sbin: 存放只有系统管理员才能使用的程序和指令。
(1) /dev: 设备(Device)的英文缩写,存放Linux的外部设备,设备也以文件方式存在。
(2) /media: U盘、光驱等外接设备,识别后Linux会把设备加载到该目录下。
(3) /mnt: 临时挂载别的文件系统,如可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容。
(1) /run: 一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件会被清除。
(2) /lost+found: 一般情况下为空,系统非正常关机时这里会出现一些文件。
(3) /tmp: 存放一些临时文件。
(1) /root: 系统管理员的用户主目录。
(2) /home: 用户的主目录都以用户账号名方式存放在该目录下。~代表当前用户主目录,用kali账号登录,其主目录是“/home/kali”,执行命令“cd ~”会将kali主目录设为当前目录。
(3) /usr: 用户的很多应用程序和文件都存放在该目录下,类似Windows的Program Files目录。
(4) /usr/bin: 存放系统用户使用的应用程序与命令。
(5) /usr/sbin: 存放超级用户使用的高级管理程序和系统守护程序。
(6) /usr/src: 内核源代码默认存放在该目录下。
(1) /var: 存放需要经常修改的数据,如程序运行的日志文件(存放在/var/log 目录下)。
(2) /proc: 这个目录的内容并不是存放在硬盘中而是存放在内存中,是系统内存中的进程映射,是一个虚拟的目录,可以直接访问这个目录获取系统信息,也可以直接修改里面的某些文件对进程进行操作。
(1) /opt: 默认为空目录,安装的额外软件可以存放在该目录下。
(2) /srv: 存放服务启动后需要存放的数据,如启动TFTP服务后,会将上传、下载的文件存放在该目录的tftp子目录下。
Kali Linux文件或目录通过颜色显示。白色表示普通文件;蓝色表示目录;绿色表示可执行文件;红色表示压缩文件;浅蓝色表示链接文件;红色闪烁表示链接文件有问题;黄色表示设备文件;灰色表示其他文件。
(1) 查看Linux内核版本。
方法1:cat /proc/version。
方法2:uname -a。
(2) 查看Linux系统版本。
方法1:lsb_release -a。
LSB是Linux Standard Base的首字母缩写,“lsb_release”命令用来显示LSB和特定版本的相关信息。使用该命令即可列出所有版本信息,该命令适用于所有的Linux发行版,包括RedHat、Debian等。若显示“command not found”,表示需安装相关软件包。
方法2:cat /etc/issue。
该命令适用于所有的Linux发行版。
(3) 查看Linux操作系统是32位还是64位。
方法1:getconf LONG_BIT。
如果得到的结果是32,表示当前使用的是32位Linux操作系统;如果得到的结果是64,表示当前使用的是64位Linux操作系统。
方法2:uname -a。
如果得到的结果是x86_64,表示当前使用的是64位Linux操作系统;如果得到的结果是i386,表示当前使用的是32位Linux操作系统。
(1) cd: 切换当前工作目录。
(2) pwd: 显示当前工作目录。
(3) ls: 显示目录与文件信息。ls -a,查看隐藏文件;ls -l,查看详细文件列表。
(4) rm [文件名]: 删除文件或目录。
(5) mv 源文件 目标文件: 移动文件或目录。
(6) cp 源文件 目标文件 :复制文件与目录。
(7) mkdir [目录名]: 创建新目录。
(8) locate: 查找符合条件的文件。
(9) whereis: 查找文件所在位置。
(10) which: 查找文件所有位置。
(11) find: 在指定目录下查找文件。
(12) touch [文件名]: 如果文件不存在,则新建该文件。
(13) chown: 修改拥有者。
(14) chgrp: 修改组。
(15) chmod: 修改权限。
(1) vi: 文档编辑器。
(2) vim: 文档编辑器。
(3) mouspad: 文档编辑器。
(4) nano: 文档编辑器。
(5) cat文件名: 查看文件内容。
(6) more文件名: 类似“cat 文件名”,但可以分页查看文件内容。
(7) grep搜索文本文件名: 用于查找文件中符合条件的字符串。
(1) ip addr show: 查看网络设置信息。
(2) ifconfig: 显示或配置网络设备信息(网卡)。
(3) ip route show: 查看路由信息。
(4) netstat: 显示Linux中网络系统的状态信息。
(5) ping IP地址: 检测到目标IP地址的连接是否通畅。
(1) date: 查看系统时间。
(2) df -h: 显示磁盘剩余空间。
(3) ps aux: 查看进程的详细状况。
(4) top: 动态显示运行中的进程并且排序。
(5) kill [-9] 进程代号: 终止指定代号的进程,-9表示强行终止。
(6) free: 显示当前内存使用情况。
(7) service服务名start/restart/stop/status: 启动、重新启动、停止、查看服务状态。
(1) useradd 用户名: 添加新用户。
(2) passwd 用户名: 设置、更改用户密码。
(3) useradd -r 用户名: 删除用户。
(4) id: 查询用户UID、GID和附加组信息,通过该命令可以查询当前用户权限。
(5) whoami: 用于打印当前有效的用户名称,相当于执行“id -un”命令。
(6) 切换用户命令 。
① sudo:让非root权限用户执行只有root权限才能执行的命令。新版Kali Linux不再像老版那样使用root账号登录,改为使用kali账号登录,当执行的命令需要root权限时,在命令前加sudo,然后输入密码即可执行,如果想切换到root,执行命令“sudo -i”即可实现。
② su -用户名:切换用户,并且切换目录。
③ exit:退出当前登录账号。
Linux Shell是用户与操作系统内核进行交互的命令行解释器,它提供了一个交互式环境,帮助用户方便地输入和执行命令。Linux支持很多种Shell,如zsh、bash、sh等,Kali Linux的默认Shell为zsh,通过命令“echo $SHELL”可查看当前计算机运行的Shell,通过命令“cat /etc/shells”可查看Linux支持的Shell。
命令提示符用于提示用户输入命令并等待执行结果。当提示符出现时,表示Shell已准备好接收用户命令,并且可以根据提示符的样式和位置返回一些有用信息。
Linux系统中,命令提示符格式可以根据个人喜好和系统配置进行自定义。以下是一些常用命令提示符。
(1) 超级用户提示符“#”: 表明当前用户以超级用户(root)权限执行命令。
(2) 默认提示符“$”: 表明当前用户以普通用户权限执行命令,执行“sudo -i”命令,然后输入密码,可切换到超级用户权限模式。
(3) 自定义提示符: 可以根据用户需要自定义提示符样式及内容,如显示用户名、主机名、当前路径等信息。
(1) 输入命令: 在命令提示符后输入要执行的命令,按“Enter”键。
(2) 命令补全: 在输入命令、文件名、目录名前几个字母之后,按“Tab”键,如果输入没有歧义,系统会自动补全信息,如果还存在其他相似的命令、文件名、目录名,再按“Tab”键一次,系统会提示可能存在的信息。
(3) 查看历史命令: 按“↑”“↓”键可以在曾经使用过的命令之间来回切换,方便重复使用或修改命令。
(4) 终止命令: 按“Ctrl+C”组合键可以终止当前正在执行的命令。
(5) 特殊符号。
① &&:代表前面命令执行成功,后面命令才能执行。
② ||:代表前面命令执行失败,后面命令才能执行。
③ |:管道,Linux 允许将一个命令的输出通过管道作为另一个命令的输入。
④ >:表示输出,会覆盖文件原有的内容。
⑤ >>:表示追加,会将内容追加到已有文件的末尾。
⑥ \:转义字符,用于在命令中插入特殊字符或者取消字符的特殊含义。
用户可以通过修改Shell配置文件来自定义命令提示符的样式和内容。通常,Shell配置文件位于用户主目录下的“.bashrc”或“.bash_profile”文件中。通过编辑这些文件,可以修改提示符的颜色,以及显示内容、添加时间戳等,以满足个人偏好和需求。