2

例如,在使用带有“-A”选项的 NMAP 进行网络扫描时,它在 OSI 模型的哪一层工作?

作为参考,这是“-A”选项的描述: -A:“启用操作系统检测、版本检测、脚本扫描和跟踪路由”

4

3 回答 3

3

OSI模型是一个有7层的理论模型;有很多资源描述了哪些层映射到各种网络堆栈中的实际协议层,所以我不会深入讨论。相反,我将详细介绍 TCP/IP 堆栈的每一层发生的情况,该堆栈有 5 层。

  1. 物理层。Nmap 不可避免地使用这一层,尽管它通常不关心它。无论您使用的是 Cat 5 电缆、2.4 GHz 无线电还是同轴电缆 - 如果没有物理层,您就无法使用网络。Nmap 也不知道它是什么。网卡中的固件可以解决这个问题。
  2. 数据链路层。同样,Nmap 必须使用该层,否则不会将任何内容发送到目的地。但是在某些情况下,Nmap 知道正在使用的第 2 层协议。这些都需要root权限才能工作:
    • 在 Windows 上,Nmap 无法发送原始 IP 数据包(下一层会详细介绍),因此它转而发送原始以太网(第 2 层)帧。这意味着它只能在类似以太网的数据链路上工作——WiFi 很好,但 PPTP 不起作用。
    • 有一些 NSE 脚本可以探测第 2 层协议:lltd-discoverybroadcast-ospf2-discoverysniffer-detect等。
    • 如果目标在同一数据链路上,Nmap 将使用 ARP 来确定 IP 地址是否响应。然后它将报告目标的 MAC 地址。对于 IPv6 目标,将使用邻居发现数据包。
  3. 网络层。Nmap 支持 IPv4 和 IPv6 网络层协议。对于端口扫描(-sTTCP Connect 扫描除外),Nmap 自己构建网络数据包并直接发送出去,绕过操作系统的网络堆栈。这也是--traceroute发生的地方,通过发送具有不同的小生存时间 (TTL) 值的数据包来确定每个数据包过期的地址。最后,操作系统检测的部分输入来自网络层:初始 TTL 值、IP ID 分析、ICMP 处理等。
  4. 传输层。这就是 Nmap 的“端口扫描器”核心工作的地方。端口是传输层地址;其中一些可能被目标上的服务使用(“开放”端口),而其他可能未被使用(“关闭”端口)。Nmap 可以扫描 3 种不同的传输层协议:TCP、UDP 和 SCTP。操作系统检测的大部分输入来自这里:TCP 选项、序列号分析、窗口大小等。
  5. 应用层。这就是版本检测 ( -sV) 接管的地方,将各种数据字符串(探测)发送到开放服务,让它们以独特的方式响应。SSL/TLS 是特殊处理的,因为其他服务可能在其上分层(在这种情况下,它提供类似于 OSI 会话层的东西)。这也是绝大多数 NSE 脚本工作的地方,探测 HTTP、FTP、SSH、RDP 和 SMB 等服务。
于 2017-11-10T04:46:16.560 回答
0

他们全部?如果你要求某种课程,我会留给你把它变成可以回答你的问题的东西,而不是专注于思考正在发生的事情。

  • 显然第 1 层数据包已发送,但 nmap 并没有真正意识到它们

  • 当在同一个本地网络上时,nmap 会注意 MAC 地址和 ARP。这有助于检测供应商,并为您提供网络距离信息

  • 第 3 层(网络层)用于发送数据包,用于检测主机是否已启动。

  • 传输层(第 4 层)用于 SYN 扫描之类的事情,并检测哪些端口是打开的。发生在第 4 层的序列号检测对操作系统检测很重要。

  • 将 OSI 第 5 层和第 6 层会话以及我永远记不住的会话映射到 TCP/IP 协议栈是很复杂的。我把它留给我不会写的长篇论文。

  • 第 7 层(应用程序)参与脚本和收集网站信息等工作。如果您认为 HTTP 是第 6 层而不是第 7 层(一个有效的世界模型),那么其中一些发生在第 6 层。

正如你所看到的,这真的不是很清楚。

于 2017-11-09T20:20:47.707 回答
0

-A 选项似乎做了一些事情。由于它似乎在进行 TCP/UDP 端口检测以及 traceroute(即 ICMP)(man nmap有关更多信息,请参阅),我想说这包括传输层和网络层。由于它似乎正在检查正在运行的服务器软件的版本,它很有可能也在应用层上。

于 2017-11-09T20:20:47.977 回答