简介
在本实验中,你将学习如何使用 Nmap 绕过防火墙和入侵检测系统(IDS)。本实验涵盖了多种技术,包括运行诱饵扫描、分片数据包、欺骗 IP 地址、调整扫描速率以及组合这些技术。你将在 Xfce 终端中执行各种 Nmap 命令,并验证绕过结果。请记住,要在道德和获得适当授权的情况下使用这些技术。
在本实验中,你将学习如何使用 Nmap 绕过防火墙和入侵检测系统(IDS)。本实验涵盖了多种技术,包括运行诱饵扫描、分片数据包、欺骗 IP 地址、调整扫描速率以及组合这些技术。你将在 Xfce 终端中执行各种 Nmap 命令,并验证绕过结果。请记住,要在道德和获得适当授权的情况下使用这些技术。
在本步骤中,我们将探索如何使用 Nmap 进行诱饵扫描,以混淆扫描源。诱饵扫描会使扫描看起来像是来自多个 IP 地址,从而更难确定实际的扫描器。
Nmap 中的 -D
选项允许你指定诱饵 IP 地址。RND:5
参数告诉 Nmap 除了你实际的 IP 地址外,还使用 5 个随机的、未保留的 IP 地址作为诱饵。
让我们对一个目标执行诱饵扫描。为了演示目的,我们将使用 192.168.1.1
作为目标 IP 地址。请注意,192.168.1.1
是一个占位符。在实际场景中,你需要将其替换为你被授权扫描的目标的实际 IP 地址。
打开你的 Xfce 终端并执行以下命令:
sudo nmap -D RND:5 192.168.1.1
此命令将对 192.168.1.1
发起 Nmap 扫描,使用 5 个随机 IP 地址作为诱饵。你将在终端中看到 Nmap 的输出,显示扫描的进度。
示例输出(具体输出将因目标和网络而异):
Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:00 UTC
Nmap scan report for 192.168.1.1
Host is up (0.00043s latency).
Not shown: 999 closed ports
PORT STATE SERVICE
22/tcp open ssh
Nmap done: 1 IP address (1 host up) scanned in 1.23 seconds
重要注意事项:
在本步骤中,我们将学习如何使用 Nmap 对数据包进行分片。数据包分片是指在将 TCP 或 UDP 数据发送到目标之前,将其分割成更小的片段。此技术可用于绕过一些可能无法正确重组分片数据包的防火墙或入侵检测系统(IDS)。
Nmap 中的 -f
选项启用数据包分片。默认情况下,Nmap 将数据包分片为 8 字节的块。你可以使用 -mtu <大小>
指定不同的最大传输单元(MTU)大小。
让我们对回环地址 127.0.0.1
执行分片扫描。此地址始终指向本地机器,因此用于测试是安全的。
打开你的 Xfce 终端并执行以下命令:
sudo nmap -f 127.0.0.1
此命令将对 127.0.0.1
发起 Nmap 扫描,并对数据包进行分片。你将在终端中看到 Nmap 的输出,显示扫描的进度。
示例输出(具体输出将因系统配置而异):
Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:05 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000028s latency).
Other addresses for localhost: ::1
PORT STATE SERVICE
139/tcp closed netbios-ssn
445/tcp closed microsoft-ds
Nmap done: 1 IP address (1 host up) scanned in 0.12 seconds
解释:
sudo nmap
:以超级用户权限执行 Nmap,这对于像数据包分片这样的原始套接字操作通常是必需的。-f
:启用分片。Nmap 将在发送数据包之前对其进行分片。127.0.0.1
:指定目标 IP 地址(回环地址)。重要注意事项:
-mtu
选项为片段指定自定义 MTU 大小。例如,nmap -f -mtu 32 127.0.0.1
将把数据包分片为 32 字节的块。在本步骤中,我们将探索如何欺骗 Nmap 扫描的源 IP 地址。IP 地址欺骗是指在 Nmap 发送的数据包中伪造源 IP 地址。这可用于隐藏你的实际 IP 地址或测试网络防御。
Nmap 中的 -S
选项允许你指定源 IP 地址。需要明白的是,欺骗 IP 地址可能会带来严重后果,并且仅应在授权环境中进行。此外,请注意,你通常不会收到针对欺骗数据包的响应,因为它们会被发送到欺骗的地址。因此,当你不需要查看响应时,此技术通常与 SYN 扫描(-sS
)或连接扫描(-sT
)等“盲”扫描技术一起使用。
让我们使用欺骗的 IP 地址对目标执行 SYN 扫描。为了演示目的,我们将使用 192.168.1.100
作为欺骗的 IP 地址,192.168.1.1
作为目标 IP 地址。请注意,192.168.1.1
是一个占位符。在实际场景中,你需要将其替换为你被授权扫描的目标的实际 IP 地址。同样,192.168.1.100
只是一个示例,你应该选择一个在你的网络中未使用的 IP 地址以避免冲突。
打开你的 Xfce 终端并执行以下命令:
sudo nmap -sS -S 192.168.1.100 192.168.1.1
此命令将使用 192.168.1.100
作为欺骗的源 IP 地址,对 192.168.1.1
发起 Nmap SYN 扫描。你将在终端中看到 Nmap 的输出,显示扫描的进度。
示例输出(具体输出将因目标和网络而异):
Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:10 UTC
Nmap scan report for 192.168.1.1
Host is up (0.00029s latency).
Not shown: 999 filtered ports
PORT STATE SERVICE
22/tcp open ssh
Nmap done: 1 IP address (1 host up) scanned in 2.12 seconds
解释:
sudo nmap
:以超级用户权限执行 Nmap,这是进行诸如 IP 地址欺骗等原始套接字操作所必需的。-sS
:指定 SYN 扫描,这是一种不完成 TCP 握手的隐蔽扫描。-S 192.168.1.100
:指定欺骗的源 IP 地址。192.168.1.1
:指定目标 IP 地址。重要注意事项:
在本步骤中,我们将学习如何控制 Nmap 的扫描速率。调整扫描速率对于避免被检测到以及防止网络拥塞至关重要。Nmap 提供了多个选项来控制其发送数据包的速率。
--max-rate
选项限制了 Nmap 每秒发送的数据包数量。这对于避免被入侵检测系统(IDS)检测到或防止网络拥塞很有用,特别是在扫描带宽有限的网络时。
让我们对一个目标 IP 地址进行扫描,将最大数据包速率限制为每秒 100 个数据包。为了演示目的,我们将使用 192.168.1.1
作为目标 IP 地址。请注意,192.168.1.1
是一个占位符。在实际场景中,你需要将其替换为你被授权扫描的目标的实际 IP 地址。
打开你的 Xfce 终端并执行以下命令:
sudo nmap --max-rate 100 192.168.1.1
此命令将对 192.168.1.1
发起 Nmap 扫描,将最大数据包速率限制为每秒 100 个数据包。你将在终端中看到 Nmap 的输出,显示扫描的进度。
示例输出(具体输出将因目标和网络而异):
Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:15 UTC
Nmap scan report for 192.168.1.1
Host is up (0.00028s latency).
Not shown: 999 filtered ports
PORT STATE SERVICE
22/tcp open ssh
Nmap done: 1 IP address (1 host up) scanned in 2.50 seconds
解释:
sudo nmap
:以超级用户权限执行 Nmap,某些扫描类型可能需要此权限。--max-rate 100
:将发送速率限制为每秒最多 100 个数据包。192.168.1.1
:指定目标 IP 地址。其他速率限制选项:
Nmap 还提供了其他几个控制扫描速率的选项:
--min-rate <数字>
:指定每秒发送的最小数据包数量。--scan-delay <时间>
:调整 Nmap 在每次发送探测后等待的时间量。--min-rtt-timeout <时间>
、--max-rtt-timeout <时间>
、--initial-rtt-timeout <时间>
:控制探测超时值。重要注意事项:
在本步骤中,我们将结合数据包分段和速率限制技术,进一步优化我们的 Nmap 扫描。组合这些技术有助于规避检测并优化扫描性能。
我们将使用 -f
选项来分段数据包,并使用 --max-rate
选项来限制发送速率。数据包分段会将 TCP 头部分散到多个数据包中,使数据包过滤器和防火墙更难检测到扫描。限制速率可确保扫描不会使网络不堪重负或触发警报。
让我们对回环地址(127.0.0.1
)进行扫描,使用数据包分段并将最大数据包速率限制为每秒 50 个数据包。
打开你的 Xfce 终端并执行以下命令:
sudo nmap -f --max-rate 50 127.0.0.1
此命令将对 127.0.0.1
发起 Nmap 扫描,对数据包进行分段,并将最大数据包速率限制为每秒 50 个数据包。你将在终端中看到 Nmap 的输出,显示扫描的进度。
示例输出(具体输出将因目标和网络而异):
Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:20 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.0000070s latency).
Other addresses for localhost: ::1
Not shown: 999 closed ports
PORT STATE SERVICE
135/tcp open msrpc
Nmap done: 1 IP address (1 host up) scanned in 1.85 seconds
解释:
sudo nmap
:以超级用户权限执行 Nmap,某些扫描类型可能需要此权限。-f
:将数据包分段成更小的片段。--max-rate 50
:将发送速率限制为每秒最多 50 个数据包。127.0.0.1
:指定目标 IP 地址(回环地址)。重要注意事项:
在本步骤中,我们将讨论如何验证我们在前面步骤中使用的规避技术的有效性。虽然我们无法确凿地证明我们的扫描完全无法被检测到,但我们可以使用各种方法来评估规避的可能性。
验证规避效果的方法:
tcpdump
或 Wireshark
等工具捕获网络流量,并分析 Nmap 扫描的特征。查找分段的数据包、诱饵 IP 地址和速率受限的流量。这需要在与目标相同的网络上有一台单独的机器。由于我们处于一个受限的环境中,这不可行。实验环境中的限制:
由于 LabEx VM 环境的限制(例如,缺少单独的监控机器,无法访问 IDS/IPS 或目标系统日志),我们无法对规避效果进行全面验证。然而,我们可以回顾我们执行的命令,并了解它们如何有助于规避。
规避技术回顾:
nmap -D RND:5 192.168.1.1
):此技术使扫描看起来像是来自多个 IP 地址,包括随机生成的地址。这可以迷惑网络管理员,并使追踪扫描回到实际来源变得困难。nmap -f 127.0.0.1
):此技术将 TCP 头部分散到多个数据包中,使数据包过滤器和防火墙更难检测到扫描。nmap -S 192.168.1.100 192.168.1.1
):此技术通过使用不同的源 IP 地址来隐藏你的真实 IP 地址。nmap --max-rate 100 192.168.1.1
):此技术减慢扫描速度,降低触发警报或导致网络拥塞的可能性。nmap -f --max-rate 50 127.0.0.1
):结合分段和速率限制提供了一种多层规避方法。结论:
虽然我们无法在 LabEx VM 环境中确凿地验证规避效果,但理解这些技术背后的原理以及它们的工作方式对于进行隐秘且有效的 Nmap 扫描至关重要。在实际场景中,你将使用上述方法来评估你的规避工作的有效性。
此步骤更多地是关于理解概念和限制,而不是在终端中执行特定操作。因此,验证步骤将仅检查你是否已在实验中访问此步骤。
在本实验中,参与者学习如何使用 Nmap 规避防火墙和入侵检测系统(IDS)。他们探索了各种技术,包括使用 nmap -D RND:5
运行诱饵扫描、使用 nmap -f
对数据包进行分段、使用 nmap -S
欺骗 IP 地址、使用 nmap --max-rate
调整扫描速率以及组合这些技术。每个命令都在 Xfce 终端中执行,并且提醒参与者道德使用、网络影响以及这些规避方法的局限性的重要性。