在 Nmap 中执行 TCP ACK 扫描

NmapNmapBeginner
立即练习

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

简介

在本实验中,你将学习如何使用 Nmap 进行 TCP ACK 扫描。本实验涵盖了 ACK 扫描的各个方面,包括运行基本的 ACK 扫描、扫描特定端口范围、增加扫描的详细程度、保存扫描结果、分析被过滤的端口,以及在 Xfce 终端中将 ACK 扫描与 SYN 扫描进行比较。通过向目标主机发送 TCP ACK 数据包并分析响应,以确定端口是被过滤还是未被过滤,你将了解 ACK 扫描的工作原理。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL nmap(("Nmap")) -.-> nmap/NmapGroup(["Nmap"]) 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/scan_types("Scan Types and Techniques") nmap/NmapGroup -.-> nmap/target_specification("Target Specification") nmap/NmapGroup -.-> nmap/verbosity("Verbosity Levels") subgraph Lab Skills nmap/output_formats -.-> lab-547092{{"在 Nmap 中执行 TCP ACK 扫描"}} nmap/save_output -.-> lab-547092{{"在 Nmap 中执行 TCP ACK 扫描"}} nmap/port_scanning -.-> lab-547092{{"在 Nmap 中执行 TCP ACK 扫描"}} nmap/scan_types -.-> lab-547092{{"在 Nmap 中执行 TCP ACK 扫描"}} nmap/target_specification -.-> lab-547092{{"在 Nmap 中执行 TCP ACK 扫描"}} nmap/verbosity -.-> lab-547092{{"在 Nmap 中执行 TCP ACK 扫描"}} end

使用 nmap -sA 192.168.1.1 运行 ACK 扫描

在本步骤中,你将学习如何使用 Nmap 执行 ACK 扫描。ACK 扫描是一种 TCP 扫描类型,它向目标主机发送 TCP ACK 数据包。与其他扫描类型不同,ACK 扫描不会建立完整的 TCP 连接。相反,它通过分析响应(或无响应情况)来确定端口是被过滤还是未被过滤。

了解 ACK 扫描基础

  • ACK 数据包:TCP ACK(确认)数据包通常用于在已建立的 TCP 连接中确认数据的接收。
  • 防火墙行为:防火墙通常有规则来阻止未经请求的传入 TCP 连接。ACK 扫描利用此行为来映射防火墙规则集。
  • 被过滤与未被过滤
    • 未被过滤:如果目标端口未被过滤,Nmap 将收到一个 RST(重置)数据包作为对 ACK 探测的响应。这表明没有防火墙阻止该连接。
    • 被过滤:如果目标端口被过滤,Nmap 将不会收到响应,或者收到一个 ICMP 错误消息。这表明有防火墙阻止该连接。

执行 ACK 扫描

  1. 打开 Xfce 终端:如果尚未打开,请从桌面环境启动 Xfce 终端。

  2. 执行 ACK 扫描命令:在终端中,输入以下命令并按回车键:

    nmap -sA 192.168.1.1
    • nmap:Nmap 命令行扫描器。
    • -sA:指定 ACK 扫描类型。
    • 192.168.1.1:目标 IP 地址。将其替换为你要扫描的实际 IP 地址。如果你在虚拟环境中运行此命令,你可能想要扫描你的网关或网络上的另一台机器。如果你没有另一台机器,你可以扫描你的本地主机 IP 地址 127.0.0.1
    nmap -sA 127.0.0.1
  3. 分析结果:Nmap 将显示扫描结果。查找标记为“未被过滤”或“被过滤”的端口。

    示例输出(可能因目标而异):

    Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:00 UTC
    Nmap scan report for 127.0.0.1
    Host is up (0.00020s latency).
    Other addresses for localhost (alias(es)): localhost
    
    PORT      STATE      SERVICE
    22/tcp    unfiltered ssh
    80/tcp    unfiltered http
    111/tcp   unfiltered rpcbind
    631/tcp   unfiltered ipp
    ...
    
    Nmap done: 1 IP address (1 host up) scanned in 2.50 seconds

    在此示例中,端口 22、80、111 和 631 是未被过滤的,这意味着发送到这些端口的 ACK 数据包可能会收到 RST 响应。

重要注意事项

  • ACK 扫描对于确定端口的确切状态并不总是可靠的。防火墙和网络设备有时可能会产生误导性结果。
  • ACK 扫描主要用于映射防火墙规则并识别进入网络的潜在入口点。

使用 nmap -sA -p 1-100 127.0.0.1 扫描端口范围

在本步骤中,你将通过扫描特定端口范围来扩展对 ACK 扫描的了解。这对于将调查范围缩小到最常用的端口或感兴趣的端口很有用。

了解端口范围

端口范围指定了要扫描的一组端口,而不是扫描所有 65535 个端口。这可以显著减少扫描时间并集中你的分析。常见的端口范围包括:

  • 1-1024:知名端口,通常由系统服务使用。
  • 1-100:用于快速检查的较小范围。
  • 80、443、8080:感兴趣的特定端口(HTTP、HTTPS、备用 HTTP)。

使用 Nmap 扫描端口范围

  1. 打开 Xfce 终端:如果尚未打开,请从桌面环境启动 Xfce 终端。

  2. 执行带有端口范围的 ACK 扫描命令:在终端中,输入以下命令并按回车键:

    nmap -sA -p 1-100 127.0.0.1
    • nmap:Nmap 命令行扫描器。
    • -sA:指定 ACK 扫描类型。
    • -p 1-100:指定要扫描的端口范围(端口 1 到 100)。
    • 127.0.0.1:目标 IP 地址(在这种情况下是本地主机)。
  3. 分析结果:Nmap 将显示扫描结果,仅关注指定范围内(1-100)的端口。

    示例输出(可能因目标而异):

    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.00018s latency).
    Other addresses for localhost (alias(es)): localhost
    
    PORT    STATE      SERVICE
    21/tcp  unfiltered ftp
    22/tcp  unfiltered ssh
    25/tcp  unfiltered smtp
    53/tcp  unfiltered domain
    80/tcp  unfiltered http
    
    Nmap done: 1 IP address (1 host up) scanned in 0.85 seconds

    此输出显示了本地主机上端口 21、22、25、53 和 80 的状态。它们全部未被过滤。

扫描端口范围的好处

  • 效率:通过关注特定端口减少扫描时间。
  • 针对性分析:使你能够调查目标上运行的特定服务或应用程序。
  • 减少干扰:过滤掉无关信息,更容易识别潜在漏洞。

使用 nmap -v -sA 192.168.1.1 增加详细程度

在本步骤中,你将学习如何增加 Nmap 扫描的详细程度。详细程度会提供有关扫描过程的更详细信息,这有助于故障排除或更深入地理解扫描结果。

了解详细程度级别

Nmap 提供不同级别的详细程度,由 -v 选项控制。使用一次 -v 会增加详细程度级别,多次使用(例如 -vv)会进一步增加详细程度。更高的详细程度级别会提供更详细的输出。

在 ACK 扫描中增加详细程度

  1. 打开 Xfce 终端:如果尚未打开,请从桌面环境启动 Xfce 终端。

  2. 执行带有详细程度的 ACK 扫描命令:在终端中,输入以下命令并按回车键:

    nmap -v -sA 192.168.1.1
    • nmap:Nmap 命令行扫描器。
    • -v:启用详细输出。
    • -sA:指定 ACK 扫描类型。
    • 192.168.1.1:目标 IP 地址。将其替换为你要扫描的实际 IP 地址。如果你在虚拟环境中运行此命令,你可能想要扫描你的网关或网络上的另一台机器。如果你没有另一台机器,你可以扫描你的本地主机 IP 地址 127.0.0.1
    nmap -v -sA 127.0.0.1
  3. 分析结果:Nmap 将显示带有更详细信息的扫描结果。你将看到有关扫描过程的更多输出,例如正在发送的探测和正在接收的响应。

    示例输出(可能因目标而异):

    Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:10 UTC
    Initiating Ping Scan at 10:10
    Scanning 127.0.0.1 [4 ports]
    Completed Ping Scan at 10:10, 0.00s elapsed (1 total hosts)
    Initiating ACK Scan at 10:10
    Scanning localhost (127.0.0.1) [1000 ports]
    Discovered open port 22/tcp on 127.0.0.1
    Discovered open port 80/tcp on 127.0.0.1
    Discovered open port 111/tcp on 127.0.0.1
    Discovered open port 631/tcp on 127.0.0.1
    Completed ACK Scan at 10:10, 0.15s elapsed (1000 total ports)
    Nmap scan report for localhost (127.0.0.1)
    Host is up (0.00016s latency).
    Other addresses for localhost (alias(es)): localhost
    
    PORT      STATE      SERVICE
    22/tcp    unfiltered ssh
    80/tcp    unfiltered http
    111/tcp   unfiltered rpcbind
    631/tcp   unfiltered ipp
    ...
    
    Nmap done: 1 IP address (1 host up) scanned in 0.16 seconds

    详细输出显示了扫描的不同阶段,包括 Ping 扫描和 ACK 扫描,以及发现的端口。

详细程度的好处

  • 故障排除:有助于在扫描过程中识别问题,例如网络连接问题或防火墙干扰。
  • 更深入理解:提供对 Nmap 如何工作以及如何确定端口状态的更多见解。
  • 详细报告:为报告和分析提供更全面的信息。

使用 nmap -sA -oN ack.txt 127.0.0.1 保存 ACK 扫描结果

在本步骤中,你将学习如何将 Nmap ACK 扫描的结果保存到文件中。这对于后续的分析、报告或与其他扫描结果进行比较很有用。

了解 Nmap 输出选项

Nmap 提供了几种以不同格式保存扫描结果的选项。-oN 选项以“正常”的人类可读格式保存结果。其他选项包括用于 XML 格式的 -oX 和用于脚本小子格式(可读性较差)的 -oS

将 ACK 扫描结果保存到文件

  1. 打开 Xfce 终端:如果尚未打开,请从桌面环境启动 Xfce 终端。

  2. 执行带有输出到文件的 ACK 扫描命令:在终端中,输入以下命令并按回车键:

    nmap -sA -oN ack.txt 127.0.0.1
    • nmap:Nmap 命令行扫描器。
    • -sA:指定 ACK 扫描类型。
    • -oN ack.txt:指定输出应以正常格式保存到名为 ack.txt 的文件中。该文件将保存在你当前的目录(~/project)中。
    • 127.0.0.1:目标 IP 地址(在这种情况下是本地主机)。
  3. 验证文件创建:扫描完成后,验证 ~/project 目录中是否已创建 ack.txt 文件。你可以使用 ls 命令列出目录中的文件:

    ls ~/project

    你应该在文件列表中看到 ack.txt

  4. 查看文件内容:你可以使用 cat 命令或像 nano 这样的文本编辑器查看 ack.txt 文件的内容:

    cat ~/project/ack.txt

    或者

    nano ~/project/ack.txt

    文件将包含以人类可读格式的 Nmap 扫描结果。

    ack.txt 的示例内容(可能因目标而异):

    ## Nmap 7.80 scan initiated Fri Oct 27 10:15:00 2023
    Nmap scan report for localhost (127.0.0.1)
    Host is up (0.00016s latency).
    Other addresses for localhost (alias(es)): localhost
    
    PORT      STATE      SERVICE
    22/tcp    unfiltered ssh
    80/tcp    unfiltered http
    111/tcp   unfiltered rpcbind
    631/tcp   unfiltered ipp
    ...
    
    ## Nmap done at Fri Oct 27 10:15:01 2023 -- 1 IP address (1 host up) scanned in 0.85 seconds

保存扫描结果的好处

  • 文档记录:提供扫描结果的记录以供将来参考。
  • 分析:允许你使用文本处理工具或脚本来更详细地分析结果。
  • 报告:使基于扫描结果创建报告变得更容易。
  • 比较:使你能够随时间比较不同扫描的结果,以跟踪网络中的变化。

在 Xfce 终端中分析被过滤的端口

在本步骤中,你将学习如何分析在 Nmap ACK 扫描期间识别出的被过滤端口。理解端口被过滤的原因对于评估网络安全性和识别潜在漏洞至关重要。

了解被过滤的端口

在 Nmap 中,“被过滤”的端口意味着 Nmap 无法确定该端口是开放还是关闭,因为数据包过滤阻止了 Nmap 的探测到达该端口。这通常是由于防火墙规则阻止了 Nmap 用于扫描的特定类型的流量。使用 ACK 扫描时,被过滤的端口通常表明存在防火墙或其他网络设备正在阻止 ACK 数据包。

分析 ACK 扫描中的被过滤端口

  1. 打开 Xfce 终端:如果尚未打开,请从桌面环境启动 Xfce 终端。

  2. 查看 ack.txt 文件:在上一步中,你将 ACK 扫描结果保存到了 ack.txt 文件中。使用 cat 命令或 nano 查看文件内容:

    cat ~/project/ack.txt

    或者

    nano ~/project/ack.txt
  3. 识别被过滤的端口:在输出中查找表明端口处于“被过滤”状态的行。例如:

    PORT      STATE      SERVICE
    21/tcp    filtered  ftp
    23/tcp    filtered  telnet

    这表明端口 21(FTP)和 23(Telnet)被过滤。

  4. 调查过滤的原因:端口被过滤这一事实表明防火墙或其他网络设备正在阻止发送到这些端口的 ACK 数据包。为了进一步调查,你可以考虑以下几点:

    • 防火墙规则:检查目标机器或网络上的防火墙配置,查看是否有阻止到特定端口的 ACK 数据包的规则。由于你正在扫描 127.0.0.1,你可以检查本地防火墙规则。然而,在实验环境中,你可能无法访问以修改防火墙规则。
    • 网络拓扑:考虑扫描机器和目标之间的网络拓扑。是否有任何中间设备(例如路由器、防火墙)可能在过滤流量?
    • 其他扫描类型:使用其他 Nmap 扫描类型(例如 SYN 扫描、TCP 连接扫描),查看它们是否提供有关端口状态的更多信息。你将在下一步中进行此操作。
  5. 示例分析

    如果你看到像 21(FTP)、23(Telnet)和 80(HTTP)这样的常用端口被过滤,很可能防火墙被配置为阻止对这些端口的未经请求的传入连接。这是一种常见的安全措施,用于防止对目标机器上运行的服务进行未经授权的访问。

重要注意事项

  • ACK 扫描通常用于映射防火墙规则集。通过向不同端口发送 ACK 数据包,你可以确定哪些端口被过滤,哪些没有。
  • ACK 扫描的结果可能会受到网络配置和防火墙的影响。
  • 被过滤的端口不一定意味着服务没有运行。这仅仅意味着由于过滤,Nmap 无法确定其状态。

在 Xfce 终端中比较 ACK 扫描和 SYN 扫描

在本步骤中,你将把 Nmap ACK 扫描的结果与 SYN 扫描的结果进行比较。这种比较将帮助你理解这些扫描类型之间的差异,以及它们如何用于收集有关目标的不同信息。

了解 ACK 和 SYN 扫描

  • ACK 扫描(-sA:向目标发送 TCP ACK 数据包。它主要用于映射防火墙规则集。如果一个端口未被过滤,通常意味着防火墙允许 ACK 数据包通过。如果一个端口被过滤,则意味着防火墙可能正在阻止 ACK 数据包。ACK 扫描无法确定端口是开放还是关闭。
  • SYN 扫描(-sS:向目标发送 TCP SYN 数据包。它比完整的 TCP 连接扫描更隐蔽,因为它不会完成 TCP 握手。如果收到 SYN/ACK 数据包,则该端口被视为开放。如果收到 RST 数据包,则该端口被视为关闭。

执行 SYN 扫描

  1. 打开 Xfce 终端:如果尚未打开,请从桌面环境启动 Xfce 终端。

  2. 执行 SYN 扫描命令:在终端中,输入以下命令并按回车键:

    nmap -sS 127.0.0.1
    • nmap:Nmap 命令行扫描器。
    • -sS:指定 SYN 扫描类型。
    • 127.0.0.1:目标 IP 地址(在这种情况下是本地主机)。
  3. 执行带有输出到文件的 SYN 扫描命令:在终端中,输入以下命令并按回车键:

    nmap -sS -oN syn.txt 127.0.0.1
    • nmap:Nmap 命令行扫描器。
    • -sS:指定 SYN 扫描类型。
    • -oN syn.txt:指定输出应以正常格式保存到名为 syn.txt 的文件中。该文件将保存在你当前的目录(~/project)中。
    • 127.0.0.1:目标 IP 地址(在这种情况下是本地主机)。

比较结果

  1. 查看 SYN 扫描结果:SYN 扫描完成后,在终端中查看结果。你应该会看到开放、关闭和被过滤端口的列表。

  2. 查看文件内容:你可以使用 cat 命令或像 nano 这样的文本编辑器查看 syn.txt 文件的内容:

    cat ~/project/syn.txt

    或者

    nano ~/project/syn.txt

    文件将包含以人类可读格式的 Nmap 扫描结果。

  3. 与 ACK 扫描结果进行比较:将 SYN 扫描结果与你在前面步骤中获得的 ACK 扫描结果(无论是来自终端输出还是 ack.txt 文件)进行比较。

  4. 分析差异

    • 开放端口:SYN 扫描将向你显示目标上实际开放的端口。ACK 扫描不会直接揭示开放端口。
    • 被过滤端口:如果一个端口在 ACK 扫描中被过滤但在 SYN 扫描中开放,则表明防火墙正在阻止 ACK 数据包但允许 SYN 数据包到达该端口。这是一种常见情况。
    • 关闭端口:SYN 扫描将向你显示哪些端口是关闭的。ACK 扫描不会直接揭示关闭端口。

示例比较

假设 ACK 扫描显示端口 80(HTTP)被过滤,而 SYN 扫描显示端口 80 是开放的。这表明防火墙可能正在阻止到端口 80 的 ACK 数据包,但允许 SYN 数据包。这是 Web 服务器的典型配置,其中允许传入的 SYN 数据包建立连接,但阻止未经请求的 ACK 数据包。

关键要点

  • ACK 和 SYN 扫描提供有关目标的不同类型信息。
  • ACK 扫描对于映射防火墙规则集很有用。
  • SYN 扫描对于识别开放端口很有用。
  • 通过比较这些扫描的结果,你可以更好地了解目标的安全态势。

总结

在本实验中,你将学习使用 Nmap 进行 TCP ACK 扫描。你将首先使用命令 nmap -sA <目标 IP> 执行基本的 ACK 扫描,了解 ACK 数据包的工作原理,以及如何根据响应确定端口是被过滤还是未被过滤。你还将学习扫描特定的端口范围,增加扫描的详细程度,并将结果保存到文件中。此外,你将在 Xfce 终端中分析被过滤的端口,并将 ACK 扫描与 SYN 扫描进行比较。