介绍
在本实验中,你将学习如何在 Kali Linux 中导航并利用核心安全工具来执行渗透测试和网络安全任务。本次动手实践将引导你通过 dpkg -l 查看预装工具、使用 msfconsole 启动 Metasploit 框架、利用 nmap 进行网络扫描、使用 nikto 扫描 Web 服务器、通过 man 手册页访问工具文档,以及将命令输出保存到文件中。本实验专为初学者设计,在 LabEx 虚拟机的受控容器环境中提供 Kali Linux 的逐步引导。当你打开终端时,系统会自动连接到 Kali Linux 容器的 Shell,你可以立即开始练习。
使用 dpkg -l 查看预装工具
在第一步中,你将学习如何使用 dpkg -l 命令查看 Kali Linux 系统上预装的工具和软件包。这是一项基础且必备的技能,可以帮助你了解哪些软件可用于渗透测试和系统管理。
当你打开 LabEx 虚拟机环境中的终端时,你将自动连接到 Kali Linux 容器的 Shell。无需手动启动容器或进入 Shell,环境已经为你准备就绪。
让我们先运行列出所有已安装软件包的命令。在终端中输入以下命令并按回车键:
dpkg -l
此命令会显示所有已安装软件包的详细列表,包括名称、版本、架构和简短描述。
预期输出(示例,实际输出可能有所不同):
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name Version Architecture Description
+++-==============================-====================-============-========================================================
ii adduser 3.118 all add and remove users and groups
ii apt 2.2.4 amd64 commandline package manager
ii base-files 11.1+deb11u7 amd64 Debian base system miscellaneous files
...
输出结果显示了每个软件包的状态(ii 表示已安装)以及其他详细信息。由于列表很长,它会在终端中滚动。你可以使用上下方向键或鼠标滚轮进行浏览。
为了使输出更易于管理,你可以对其进行过滤以搜索特定工具。例如,要查找与 apt 相关的软件包,请输入以下命令并按回车键:
dpkg -l | grep apt
预期输出(示例,实际输出可能有所不同):
ii apt 2.2.4 amd64 commandline package manager
这会过滤列表,仅显示名称或描述中包含 apt 的软件包。这种技术可以帮助你快速定位后续步骤中要使用的工具。在深入研究具体的安全任务之前,了解系统上有哪些可用工具是一个基础步骤。
安装并启动 Metasploit (msfconsole)
既然你已经了解了 Kali Linux 上的可用工具,现在让我们使用 msfconsole 命令启动最强大的渗透测试框架之一:Metasploit。这一步建立在你对系统工具理解的基础上,并向你介绍一个用于安全测试的关键平台。
Metasploit 是一个用于开发、测试和执行针对目标系统漏洞利用的框架。msfconsole 是它的命令行界面,允许你与框架交互、配置设置并启动各种安全任务。
首先,通过更新软件包列表并安装必要的软件包来确保 Metasploit 已安装。在 Kali Linux 容器的终端中输入以下命令,每行结束后按回车键:
apt update
apt install -y metasploit-framework
这些命令会刷新软件包列表,并在 Metasploit 尚未安装时进行安装。等待安装完成;根据系统情况,这可能需要几分钟时间。
安装完成后,输入以下命令并按回车键启动 Metasploit 控制台:
msfconsole
第一次运行此命令时,由于需要设置数据库和加载模块,初始化可能需要一点时间。请在此过程中保持耐心。
预期输出(示例,实际输出可能有所不同):
Metasploit Framework
...
msf6 >
msf6 > 提示符表示你现在已进入 Metasploit 控制台,可以开始与框架交互。数字(例如 6)代表 Metasploit 的版本。

目前,你不需要在 Metasploit 中执行任何特定任务。在 msf6 > 提示符下输入以下命令并按回车键退出控制台:
exit
这将使你返回到标准的终端提示符。启动和退出 msfconsole 可以让你熟悉如何访问此工具,这对于你未来将要探索的许多渗透测试活动至关重要。
安装并运行基础 Nmap 扫描
启动 Metasploit 之后,现在让我们专注于使用 nmap 进行网络扫描,这是一个用于网络发现和安全审计的多功能工具。这一步将向你介绍如何识别系统上的开放端口和服务,这是渗透测试中的一项关键技能。
nmap(网络映射器 Network Mapper 的缩写)通过发送数据包并分析响应来发现网络上的主机和服务。它通过显示目标系统上可访问的内容来帮助识别潜在的漏洞。
首先,确保你的 Kali Linux 容器中安装了 nmap。在终端中输入以下命令并按回车键以更新软件包列表并安装 nmap:
apt install -y nmap
等待安装完成;这应该只需要几秒钟。安装完成后,你就可以进行基础扫描了。由于未经许可扫描外部系统是不道德的,我们将扫描 localhost(你自己的容器)作为一个安全的目标。
让我们在容器上运行一个基础的 Web 服务器。
apt install -y apache2
service apache2 start
输入以下命令并按回车键:
nmap localhost
此命令执行默认扫描,以检测本地系统上的开放端口和服务。
预期输出(示例,实际输出可能有所不同):
Starting Nmap 7.91 ( https://nmap.org ) at ...
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00010s latency).
Not shown: 997 closed ports
PORT STATE SERVICE
80/tcp open http
...
Nmap done: 1 IP address (1 host up) scanned in 0.05 seconds
在输出中,Host is up 确认目标是可达的。表格列出了开放端口(如 HTTP 的 80/tcp)、它们的状态(open 表示可访问)以及关联的服务。这些信息对于了解系统上运行的服务至关重要。通过扫描 localhost,你已经练习了如何安全地使用 nmap,为未来步骤中更高级的网络侦察任务做好了准备。
安装并使用 Nikto 扫描 Web 漏洞
在掌握了 nmap 网络扫描技能的基础上,本步骤将向你介绍 nikto,这是一个用于扫描 Web 服务器以识别漏洞和配置错误的工具。这是 Web 安全测试的重要组成部分。
nikto 是一个开源工具,用于检查 Web 服务器是否存在已知问题,如过时的软件、不安全的文件以及其他潜在的安全缺陷。它被安全专业人员广泛用于评估 Web 应用程序的安全性。
首先,确保你的 Kali Linux 容器中安装了 nikto。在终端中输入以下命令并按回车键进行安装:
apt install -y nikto
等待安装完成;这应该只需要几秒钟。安装完成后,你将扫描 localhost 作为一个安全目标,以演示 nikto 的功能。如果 localhost 上没有运行 Web 服务器,该工具仍会显示它尝试连接的过程,这对学习很有价值。输入以下命令并按回车键:
nikto -h localhost
-h 选项指定要扫描的主机,在本例中为 localhost,目标是默认的 Web 服务器端口(通常为 80)。
预期输出(示例,实际输出可能有所不同):
- Nikto v2.1.6
---------------------------------------------------------------------------
+ Target IP: 127.0.0.1
+ Target Hostname: localhost
+ Target Port: 80
---------------------------------------------------------------------------
+ End Time: ...
---------------------------------------------------------------------------
此输出显示 nikto 正在尝试连接到 localhost 上的 Web 服务器。如果没有服务器在运行,它会报告无法连接,如上所示。如果服务器处于活动状态,它将列出潜在的漏洞或配置错误。这一步可以帮助你了解如何使用 nikto 进行 Web 漏洞扫描,这是识别 Web 应用程序安全弱点的关键技能。
使用 man 手册页访问工具文档
现在你已经使用了 nmap 和 nikto 等工具,了解如何访问它们的文档以进行进一步学习非常重要。在这一步中,你将学习使用 man 手册页来探索 Kali Linux 中命令和工具的详细信息。
man 手册页(manual pages 的缩写)是大多数 Linux 工具和命令的综合指南。它们提供详细的描述、选项、示例和使用说明,对于深入理解如何有效使用工具非常有价值。
如果尚未安装 man,请先安装它。
apt install -y man
让我们以访问 nmap 的 man 手册页为例。在终端中输入以下命令并按回车键:
man nmap
这将在分页器界面(如 less)中打开 nmap 的手册页,你可以在其中阅读详细文档。
预期输出(示例,实际输出可能有所不同):
NMAP(1) Nmap Reference Guide NMAP(1)
NAME
nmap - Network exploration tool and security / port scanner
SYNOPSIS
nmap [Scan Type...] [Options] {target specification}
DESCRIPTION
Nmap ("Network Mapper") is an open source tool for network exploration and
security auditing. It was designed to rapidly scan large networks, although
it works fine against single hosts. Nmap uses raw IP packets in novel ways
to determine what hosts are available on the network, what services (application name and version) those hosts are offering, what operating systems (and
OS versions) they are running, what type of packet filters/firewalls are in
use, and dozens of other characteristics.
...
使用上下方向键浏览文档。你会看到关于用法、选项和示例的章节。要退出 man 手册页,请按 q 键返回终端提示符。
学会使用 man 手册页使你具备了独立探索任何工具功能的能力。这在 Kali Linux 中特别有用,因为这里的工具通常拥有众多的选项,你可能需要在执行安全任务期间随时查阅。
将 Nmap 输出重定向到文件
在最后一步中,你将学习如何将命令的输出保存到文件中以供将来参考。这一步建立在你之前使用 nmap 的基础上,并向你介绍输出重定向,这是记录实验结果的一项基础 Linux 技能。
Linux 中的输出重定向允许你将命令的结果保存到文件中,而不是显示在终端中。这是通过使用 > 符号实现的,它会将输出写入指定的文件,如果文件已存在则会覆盖它。
让我们对 localhost 执行另一次 nmap 扫描,并将结果保存到名为 nmap_scan.txt 的文件中。在终端中输入以下命令并按回车键:
nmap localhost > /root/nmap_scan.txt
> 符号将 nmap localhost 命令的输出重定向到文件 /root/nmap_scan.txt。你不会在终端中看到扫描结果,因为它们正被保存到文件中。
要确认输出已保存,请通过输入以下命令并按回车键来查看文件内容:
cat /root/nmap_scan.txt
预期输出(示例,实际输出可能有所不同):
Starting Nmap 7.91 ( https://nmap.org ) at ...
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00010s latency).
Not shown: 997 closed ports
PORT STATE SERVICE
80/tcp open http
...
Nmap done: 1 IP address (1 host up) scanned in 0.05 seconds
这确认了扫描结果已成功保存到 /root/nmap_scan.txt。将输出保存到文件是在渗透测试期间记录发现的实用方法,允许你在以后查看或共享结果,而无需重新运行命令。
总结
在本实验中,你学习了如何探索和使用 Kali Linux 中的核心安全工具进行渗透测试。你首先通过 dpkg -l 查看了预装工具,使用 msfconsole 安装并启动了 Metasploit,利用 nmap 执行了网络扫描,使用 nikto 扫描了 Web 漏洞,通过 man 手册页访问了工具文档,并将命令输出保存到了文件中。这些基础技能为你今后在受控环境中进一步学习网络安全和网络分析打下了坚实的基础。


