NMAP扫描哪些端口用于OS检测

nmap通过发送六个探测包并分析它们的响应,提供基于TCP / IP指纹识别的操作系统检测function。 在文档中说,其中一些被发送到一个开放的端口,一些被发送到一个封闭的端口。

有谁知道nmap如何决定哪个端口发送探针? 它只是寻找第一个封闭的端口和它可以find的第一个开放的端口? 它是按照一定的顺序search它们吗? 还是它随机挑选一个端口?

在这种情况下,没有比代码本身更好的文档。 Nmap依靠端口扫描结果来确定打开和closures端口的列表。 它正在寻找三件事:

  1. 一个开放的TCP端口
  2. 一个封闭的TCP端口
  3. 一个封闭的UDP端口

一般来说,它会select它所知道的第一个(最低的数字),但是它试图避免的事情有一些规则:

  • 不要使用端口0.对于大多数系统,这不是一个有效的端口号。 如果发现端口0是开放的,那么使用它进行通信的机会不是操作系统的本地IP堆栈。
  • 如果执行服务扫描 ,请避免标记为tcpwrapped端口。 这有时可能是IPSclosures连接的结果,所以跳过这些端口有助于确保Nmap获得未修改的连接到目标。

如果我很好理解,nmap只有在无法通过指纹检测操作系统的情况下尝试打开或closures端口,但文档没有解释检查端口的顺序。 我想你可以在扫描过程中发现如何跟踪自己的stream量。