网络扫描在 OSI 模型的哪一层工作?

Which layer in the OSI model does a network scan work on?

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

作为参考,这是“-A”选项的描述: -A : "Enable OS detection, version detection, script scanning, and traceroute"

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

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

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

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

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

  • 映射 OS我第 5 层和第 6 层会话以及我永远无法记住的 TCP/IP 协议栈很复杂。我把它留给一篇我不打算写的长篇论文。

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

如你所见,这真的不是很清楚。

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

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

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