使用 Nmap 绕过防火墙和 IDS

NmapNmapBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在本实验中,你将学习如何使用 Nmap 绕过防火墙和入侵检测系统(IDS)。本实验涵盖了多种技术,包括运行诱饵扫描、分片数据包、欺骗 IP 地址、调整扫描速率以及组合这些技术。你将在 Xfce 终端中执行各种 Nmap 命令,并验证绕过结果。请记住,要在道德和获得适当授权的情况下使用这些技术。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL nmap(("Nmap")) -.-> nmap/NmapGroup(["Nmap"]) nmap/NmapGroup -.-> nmap/scan_types("Scan Types and Techniques") nmap/NmapGroup -.-> nmap/target_specification("Target Specification") nmap/NmapGroup -.-> nmap/timing_performance("Timing and Performance") nmap/NmapGroup -.-> nmap/syn_scan("SYN Scan") nmap/NmapGroup -.-> nmap/firewall_evasion("Firewall Evasion Techniques") nmap/NmapGroup -.-> nmap/stealth_scanning("Stealth and Covert Scanning") subgraph Lab Skills nmap/scan_types -.-> lab-530178{{"使用 Nmap 绕过防火墙和 IDS"}} nmap/target_specification -.-> lab-530178{{"使用 Nmap 绕过防火墙和 IDS"}} nmap/timing_performance -.-> lab-530178{{"使用 Nmap 绕过防火墙和 IDS"}} nmap/syn_scan -.-> lab-530178{{"使用 Nmap 绕过防火墙和 IDS"}} nmap/firewall_evasion -.-> lab-530178{{"使用 Nmap 绕过防火墙和 IDS"}} nmap/stealth_scanning -.-> lab-530178{{"使用 Nmap 绕过防火墙和 IDS"}} end

使用 nmap -D RND:5 192.168.1.1 运行诱饵扫描

在本步骤中,我们将探索如何使用 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

重要注意事项

  • 道德使用:始终确保你有明确的权限扫描网络或系统。未经授权的扫描是非法且不道德的。
  • 网络影响:诱饵扫描会产生大量网络流量。请谨慎使用,避免使目标网络过载。
  • 有效性:虽然诱饵扫描可以使追踪扫描源更加困难,但它们并非万无一失。复杂的入侵检测系统(IDS)仍可能能够识别真正的来源。

使用 nmap -f 127.0.0.1 对数据包进行分片

在本步骤中,我们将学习如何使用 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 地址(回环地址)。

重要注意事项

  • 防火墙/IDS 规避:数据包分片有时可以绕过无法正确重组分片的简单防火墙或 IDS。然而,现代安全设备通常能够处理分片数据包。
  • 性能影响:分片会增加网络开销,并可能减慢扫描速度。
  • MTU 选项:你可以使用 -mtu 选项为片段指定自定义 MTU 大小。例如,nmap -f -mtu 32 127.0.0.1 将把数据包分片为 32 字节的块。

使用 nmap -S 192.168.1.100 192.168.1.1 进行 IP 地址欺骗

在本步骤中,我们将探索如何欺骗 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 地址。

重要注意事项

  • 道德使用:IP 地址欺骗仅应用于授权环境中的合法目的,例如安全测试。
  • 根权限:欺骗 IP 地址需要根权限。
  • 功能有限:由于你不会收到针对欺骗数据包的响应,你可能需要使用其他技术来收集有关目标的信息。
  • 网络配置:如果你的网络配置为阻止欺骗,那么欺骗可能不起作用。路由器和防火墙通常具有防止带有欺骗源地址的数据包离开网络的机制。

使用 nmap --max-rate 100 192.168.1.1 调整扫描速率

在本步骤中,我们将学习如何控制 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 <时间>:控制探测超时值。

重要注意事项

  • 网络状况:最佳扫描速率取决于网络状况。如果网络拥塞,可能需要较低的速率以避免数据包丢失。
  • IDS/IPS 规避:调整扫描速率有助于规避入侵检测/预防系统的检测。
  • 扫描时间:降低扫描速率会增加整体扫描时间。

使用 nmap -f --max-rate 50 127.0.0.1 组合技术

在本步骤中,我们将结合数据包分段和速率限制技术,进一步优化我们的 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 地址(回环地址)。

重要注意事项

  • 分段开销:数据包分段会增加扫描的开销,因为需要发送更多的数据包。
  • 防火墙行为:一些防火墙可能会在检查之前重新组装分段的数据包,从而抵消分段的效果。
  • 速率限制有效性:速率限制的有效性取决于网络状况和目标系统的敏感度。
  • 组合技术:组合不同的规避技术可以增加绕过安全措施的机会,但也会增加扫描的复杂性。

在 Xfce 终端中验证规避效果

在本步骤中,我们将讨论如何验证我们在前面步骤中使用的规避技术的有效性。虽然我们无法确凿地证明我们的扫描完全无法被检测到,但我们可以使用各种方法来评估规避的可能性。

验证规避效果的方法

  1. 网络监控:使用 tcpdumpWireshark 等工具捕获网络流量,并分析 Nmap 扫描的特征。查找分段的数据包、诱饵 IP 地址和速率受限的流量。这需要在与目标相同的网络上有一台单独的机器。由于我们处于一个受限的环境中,这不可行。
  2. IDS/IPS 日志:如果你有权访问入侵检测/预防系统(IDS/IPS)的日志,检查其中是否有与 Nmap 扫描相关的任何警报。没有警报并不保证规避成功,但这是一个积极的迹象。这也需要访问外部系统,而我们没有。
  3. 目标系统日志:检查目标系统的日志,寻找 Nmap 扫描的任何证据。这可能包括对特定端口的连接尝试或异常的网络活动。同样,这需要访问目标系统。
  4. 第三方在线服务:一些在线服务可以分析网络流量并识别潜在的安全威胁。你可以将 Nmap 扫描流量的样本提交给这些服务进行分析。

实验环境中的限制

由于 LabEx VM 环境的限制(例如,缺少单独的监控机器,无法访问 IDS/IPS 或目标系统日志),我们无法对规避效果进行全面验证。然而,我们可以回顾我们执行的命令,并了解它们如何有助于规避。

规避技术回顾

  • 诱饵扫描(nmap -D RND:5 192.168.1.1:此技术使扫描看起来像是来自多个 IP 地址,包括随机生成的地址。这可以迷惑网络管理员,并使追踪扫描回到实际来源变得困难。
  • 数据包分段(nmap -f 127.0.0.1:此技术将 TCP 头部分散到多个数据包中,使数据包过滤器和防火墙更难检测到扫描。
  • IP 欺骗(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 终端中执行,并且提醒参与者道德使用、网络影响以及这些规避方法的局限性的重要性。