在 Nmap 中模拟真实场景

NmapNmapBeginner
立即练习

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

简介

在本实验中,你将学习如何通过采用规避检测和隐藏扫描来源的技术,在 Nmap 中模拟真实世界的场景。这包括使用诱饵地址和 IP 地址欺骗,使目标更难识别扫描的实际来源。

本实验将指导你使用 -D 选项添加随机诱饵 IP 地址,以及使用 -S 选项欺骗源 IP 地址。你还将在 Xfce 终端环境中探索分段、将扫描与脚本结合、保存结果以及分析规避效果和实际适用性。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL nmap(("Nmap")) -.-> nmap/NmapGroup(["Nmap"]) nmap/NmapGroup -.-> nmap/common_ports("Common Ports Scanning") nmap/NmapGroup -.-> nmap/output_formats("Output Formats") nmap/NmapGroup -.-> nmap/save_output("Save Output to File") nmap/NmapGroup -.-> nmap/port_scanning("Port Scanning Methods") nmap/NmapGroup -.-> nmap/service_detection("Service Detection") nmap/NmapGroup -.-> nmap/scripting_basics("Scripting Engine Basics") nmap/NmapGroup -.-> nmap/script_management("Script Categories and Updating") nmap/NmapGroup -.-> nmap/firewall_evasion("Firewall Evasion Techniques") subgraph Lab Skills nmap/common_ports -.-> lab-547114{{"在 Nmap 中模拟真实场景"}} nmap/output_formats -.-> lab-547114{{"在 Nmap 中模拟真实场景"}} nmap/save_output -.-> lab-547114{{"在 Nmap 中模拟真实场景"}} nmap/port_scanning -.-> lab-547114{{"在 Nmap 中模拟真实场景"}} nmap/service_detection -.-> lab-547114{{"在 Nmap 中模拟真实场景"}} nmap/scripting_basics -.-> lab-547114{{"在 Nmap 中模拟真实场景"}} nmap/script_management -.-> lab-547114{{"在 Nmap 中模拟真实场景"}} nmap/firewall_evasion -.-> lab-547114{{"在 Nmap 中模拟真实场景"}} end

使用 nmap -D RND:5 -S 192.168.1.100 192.168.1.1 进行带诱饵和欺骗的扫描

在本步骤中,我们将探索如何使用 Nmap 通过诱饵地址和 IP 地址欺骗来执行扫描。此技术有助于隐藏扫描的来源,使目标更难识别实际来源。

理解诱饵和欺骗

  • 诱饵:Nmap 可以使扫描看起来像是来自多个 IP 地址,而不仅仅是你自己的。这是通过在扫描中添加“诱饵”地址来实现的。目标会看到来自这些诱饵地址以及你真实 IP 的流量,从而更难确定实际的扫描器。
  • 欺骗:IP 地址欺骗涉及更改 Nmap 发送的数据包中的源 IP 地址。这使得扫描看起来像是来自与你自己不同的 IP 地址。

重要注意事项

  • 欺骗需要 root 权限,因为它涉及在底层操纵网络数据包。
  • 使用你无法控制的欺骗地址可能会导致网络中断,或者被视为不道德/非法行为。请谨慎操作,仅在授权环境中使用欺骗。
  • -D 选项向扫描添加诱饵,而 -S 选项设置特定的源 IP 地址。

实际示例

让我们使用诱饵和欺骗进行一次扫描。在本示例中,我们将使用 -D 选项添加 5 个随机诱饵 IP 地址(RND:5),并使用 -S 选项将源 IP 地址欺骗为 192.168.1.100。我们将扫描目标 IP 地址 192.168.1.1

  1. 打开终端:在你的 LabEx VM 中启动 Xfce 终端。

  2. 执行 Nmap 命令

    sudo nmap -D RND:5 -S 192.168.1.100 192.168.1.1
    • sudo:这是必需的,因为欺骗需要 root 权限。
    • -D RND:5:这告诉 Nmap 使用 5 个随机的、未保留的 IP 地址作为诱饵。
    • -S 192.168.1.100:这将源 IP 地址设置为 192.168.1.100注意:此 IP 地址仅用于演示目的。在实际场景中,你需要确保有权使用此 IP 地址。
    • 192.168.1.1:这是我们正在扫描的目标 IP 地址。
  3. 检查输出

    输出将显示 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.00020s latency).
    Not shown: 999 closed ports
    PORT   STATE SERVICE
    22/tcp open  ssh
    
    Nmap done: 1 IP address (1 host up) scanned in 0.10 seconds

    注意:具体输出将根据目标系统和网络配置而有所不同。

使用 nmap -f -D RND:3 127.0.0.1 添加分段

在本步骤中,我们将学习如何使用 Nmap 为扫描添加 IP 分段。分段可用于规避一些依赖分析完整数据包的防火墙和入侵检测系统(IDS)。

理解 IP 分段

IP 分段是将数据包分成较小片段的过程,以便它能够通过具有较小最大传输单元(MTU)的网络链路。当分段数据包到达目的地时,这些片段会重新组装成原始数据包。

Nmap 如何使用分段

Nmap 的 -f 选项会使扫描使用小的分段 IP 数据包。这可能会使防火墙和入侵检测系统更难检测到扫描,因为它们必须在分析数据包之前重新组装它们。有些系统可能未配置为正确重新组装分段数据包,从而使扫描能够绕过它们的防御。

将分段与诱饵相结合

我们可以将分段与上一步中介绍的诱饵相结合,以进一步混淆扫描。这会使目标更难识别扫描的来源和性质。

实际示例

让我们进行一次带有分段和诱饵的扫描。在本示例中,我们将使用 -f 选项启用分段,并使用 -D 选项添加 3 个随机诱饵 IP 地址(RND:3)。我们将扫描目标 IP 地址 127.0.0.1(localhost)。

  1. 打开终端:在你的 LabEx VM 中启动 Xfce 终端。

  2. 执行 Nmap 命令

    sudo nmap -f -D RND:3 127.0.0.1
    • sudo:这是必需的,因为在某些系统上分段可能需要 root 权限。
    • -f:这告诉 Nmap 使用分段 IP 数据包。
    • -D RND:3:这告诉 Nmap 使用 3 个随机的、未保留的 IP 地址作为诱饵。
    • 127.0.0.1:这是我们正在扫描的目标 IP 地址(localhost)。
  3. 检查输出

    输出将显示 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.0000090s latency).
    Other addresses for localhost (not scanned): ::1
    
    PORT     STATE SERVICE
    22/tcp   open  ssh
    631/tcp  open  ipp
    
    Nmap done: 1 IP address (1 host up) scanned in 0.15 seconds

    注意:具体输出将根据目标系统和网络配置而有所不同。关键是扫描在使用分段的情况下成功完成。

使用 nmap -sC -f 192.168.1.1 与脚本结合

在本步骤中,我们将把 Nmap 的脚本引擎与分段功能相结合,以执行更全面且可能更隐蔽的扫描。

了解 Nmap 脚本

Nmap 拥有一个强大的脚本引擎(NSE),它允许你自动化执行各种任务,例如漏洞检测、服务枚举等等。脚本使用 Lua 编写,可用于扩展 Nmap 的功能。

-sC 选项告诉 Nmap 运行默认的脚本集。这些脚本旨在提供目标系统的大致概况。

将脚本与分段相结合

通过将脚本与分段(来自上一步)相结合,我们可以尝试绕过某些可能会阻止或检测基于脚本的扫描的安全措施。分段可以使入侵检测系统更难分析脚本生成的流量。

实际示例

让我们使用默认脚本和分段进行一次扫描。在本示例中,我们将使用 -sC 选项运行默认脚本,并使用 -f 选项启用分段。我们将扫描目标 IP 地址 192.168.1.1

  1. 打开终端:在你的 LabEx VM 中启动 Xfce 终端。

  2. 执行 Nmap 命令

    sudo nmap -sC -f 192.168.1.1
    • sudo:这是必需的,因为在某些系统上分段可能需要 root 权限。
    • -sC:这告诉 Nmap 运行默认的脚本集。
    • -f:这告诉 Nmap 使用分段的 IP 数据包。
    • 192.168.1.1:这是我们正在扫描的目标 IP 地址。
  3. 检查输出

    输出将显示 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.00020s latency).
    Not shown: 999 closed ports
    PORT   STATE SERVICE
    22/tcp open  ssh
    | ssh-hostkey:
    |   2048 SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx (RSA)
    |_  256 SHA256:yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy (ECDSA)
    Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
    
    Nmap done: 1 IP address (1 host up) scanned in 5.20 seconds

    注意:具体输出将根据目标系统和网络配置而有所不同。关键是扫描成功完成、使用了分段并执行了默认脚本。ssh-hostkey 脚本是默认脚本集的一部分,它提供有关 SSH 主机密钥的信息。

使用 nmap -D RND:5 -oN scenario.txt 127.0.0.1 保存扫描结果

在本步骤中,我们将学习如何将 Nmap 扫描的结果保存到文件中。这对于记录你的发现、稍后分析结果或与他人共享结果很有用。

了解 Nmap 输出选项

Nmap 提供了几种以不同格式保存扫描结果的选项。-oN 选项以“普通”的人类可读格式保存结果。这是一般使用中最常见的格式。

将扫描结果保存到文件

要将扫描结果保存到文件,你使用 -oN 选项,后跟文件名。例如,-oN results.txt 会将结果保存到名为 results.txt 的文件中。

结合诱饵与保存输出

我们可以将诱饵技术(来自前面的步骤)与将输出保存到文件相结合。这使我们能够执行一次隐蔽的扫描,然后保存结果以供稍后分析。

实际示例

让我们进行一次带有诱饵的扫描,并将结果保存到名为 scenario.txt 的文件中。在本示例中,我们将使用 -D 选项添加 5 个随机诱饵 IP 地址(RND:5),并使用 -oN 选项将结果保存到 scenario.txt。我们将扫描目标 IP 地址 127.0.0.1(localhost)。

  1. 打开终端:在你的 LabEx VM 中启动 Xfce 终端。

  2. 执行 Nmap 命令

    sudo nmap -D RND:5 -oN scenario.txt 127.0.0.1
    • sudo:这是必需的,因为在某些系统上使用诱饵可能需要 root 权限。
    • -D RND:5:这告诉 Nmap 使用 5 个随机的、未保留的 IP 地址作为诱饵。
    • -oN scenario.txt:这告诉 Nmap 将结果以普通格式保存到名为 scenario.txt 的文件中。
    • 127.0.0.1:这是我们正在扫描的目标 IP 地址(localhost)。
  3. 检查输出

    输出将与之前的扫描类似,但结果也会保存到你当前目录(~/project)下的 scenario.txt 文件中。

    Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:15 UTC
    Nmap scan report for localhost (127.0.0.1)
    Host is up (0.0000090s latency).
    Other addresses for localhost (not scanned): ::1
    
    PORT     STATE SERVICE
    22/tcp   open  ssh
    631/tcp  open  ipp
    
    Nmap done: 1 IP address (1 host up) scanned in 0.15 seconds
  4. 验证文件

    你可以使用 cat 命令验证文件是否已创建并包含扫描结果:

    cat scenario.txt

    这将在终端中显示 scenario.txt 文件的内容。

在 Xfce 终端中评估规避检测的有效性

在本步骤中,我们将评估在前几步中使用的规避检测技术的有效性。这是一个概念性步骤,我们将讨论这些技术如何有助于绕过安全措施。由于我们处于一个受控的实验环境中,我们无法确凿地证明规避检测的成功,但我们可以讨论其原理。

理解规避检测技术

规避检测技术是用于避免被安全系统(如防火墙、入侵检测系统 (IDS) 和入侵防御系统 (IPS))检测到的方法。Nmap 提供了多种规避检测的选项,包括:

  • 诱饵:使扫描看起来像是来自多个 IP 地址,从而更难确定实际来源。
  • 分段:将扫描流量拆分为较小的数据包,这可以绕过一些配置为阻止较大数据包或在重组分段数据包时存在困难的防火墙。
  • 欺骗:通过使用不同的源 IP 地址隐藏你的真实 IP 地址。
  • 脚本:使用脚本来执行更有针对性且可能更隐蔽的扫描。

回顾我们使用的技术

让我们回顾一下在前几步中使用的技术:

  1. 诱饵与欺骗 (nmap -D RND:5 -S 192.168.1.100 192.168.1.1):此命令使用了 5 个随机诱饵并欺骗了源 IP 地址。这使得目标更难识别扫描的真正来源。IDS 可能会看到来自不同 IP 地址的多个连接,从而更难关联流量并识别攻击者。

  2. 分段与诱饵 (nmap -f -D RND:3 127.0.0.1):此命令使用了分段和诱饵。分段有助于绕过配置为阻止某些类型流量或在重组分段数据包时存在困难的防火墙。诱饵进一步模糊了扫描的来源。

  3. 脚本与分段 (nmap -sC -f 192.168.1.1):此命令将脚本与分段相结合。分段有助于绕过配置为阻止某些类型流量或在重组分段数据包时存在困难的防火墙。脚本允许进行更有针对性的扫描。

  4. 保存结果 (nmap -D RND:5 -oN scenario.txt 127.0.0.1):此命令将带有诱饵的扫描结果保存到一个文件中。这对于记录你的发现并在以后分析结果很有用。

实验环境的局限性

在我们的 LabEx VM 环境中,我们没有真实的防火墙或 IDS 可供测试。因此,我们无法确凿地证明这些技术在规避检测方面是有效的。然而,我们可以理解这些技术背后的原理以及它们如何在实际场景中使用。

讨论要点

考虑以下问题:

  • 防火墙或 IDS 如何检测这些规避检测技术?
  • Nmap 中还有哪些其他规避检测技术?
  • 使用规避检测技术涉及哪些道德考量?

本步骤旨在鼓励你批判性地思考规避检测技术的有效性及其对安全性的潜在影响。

在 Xfce 终端中分析实际适用性

在本步骤中,我们将分析在本实验中探索的 Nmap 技术的实际适用性。这是一个概念性步骤,重点关注在实际场景中使用这些技术的道德和实际考量。

道德考量

在讨论实际应用之前,解决道德考量至关重要。如果未经你拥有或管理的系统的许可而使用 Nmap,特别是使用规避技术,可能会被视为不道德甚至非法。在扫描任何网络或系统之前,始终要获得明确的许可。

实际场景

尽管存在道德问题,但 Nmap 是一个强大的工具,在各种实际场景中有合理的用途:

  1. 网络安全审计:安全专业人员使用 Nmap 来评估其网络的安全态势。他们可以识别开放端口、运行的服务和潜在漏洞。规避技术可用于模拟实际攻击并测试安全控制的有效性。

  2. 漏洞评估:Nmap 可用于识别系统和应用程序中的已知漏洞。通过将 Nmap 与漏洞数据库相结合,安全专业人员可以主动识别并解决潜在的安全风险。

  3. 入侵检测:Nmap 可用于检测网络上未经授权的访问尝试或恶意活动。通过监控网络流量并分析扫描模式,安全专业人员可以识别并应对潜在的安全事件。

  4. 网络映射:Nmap 可用于创建网络的详细地图,包括设备、服务和连接。此信息可用于改善网络性能、排查连接问题以及规划网络升级。

  5. 合规性测试:Nmap 可用于验证网络是否符合安全策略和法规。通过扫描网络并分析结果,安全专业人员可以确保网络符合所需的安全标准。

局限性和对策

需要注意的是,规避技术并非万无一失。安全系统在不断发展以检测和防范这些技术。一些常见的对策包括:

  • 入侵检测系统 (IDS):IDS 可以检测可疑的网络流量模式,如端口扫描和分段。
  • 防火墙:防火墙可以阻止对网络的未经授权访问并过滤恶意流量。
  • 蜜罐:蜜罐是设计用来吸引攻击者并收集其技术信息的诱饵系统。
  • 日志分析:分析系统日志有助于识别可疑活动和潜在的安全漏洞。

结论

Nmap 是一个多功能工具,在网络安全中有广泛的应用。然而,负责任且符合道德地使用 Nmap 至关重要。在扫描任何网络或系统之前,始终要获得许可,并意识到你行为可能产生的法律和道德后果。了解规避技术的局限性以及用于检测它们的对策对于有效的网络安全至关重要。

总结

在本实验中,我们探索了在 Nmap 中模拟实际场景的技术,重点是模糊扫描的来源。我们学习了如何使用 -D 选项搭配诱饵地址,使扫描看起来像是来自多个 IP 地址,以及如何使用 -S 选项欺骗源 IP 地址(这需要 root 权限)。

此外,我们练习了使用 -f 选项添加分段功能,将其与使用 -sC 的默认脚本扫描相结合,并使用 -oN 选项将扫描结果保存到文件中。本实验最后在 Xfce 终端中评估了规避检测的有效性并分析了实际适用性。