我有兴趣使用 nmap 进行发现,并找出每个主机的操作系统。我知道 nmap 可以做到这一点,并且可以按照手册页中的说明启用和控制:
通过以下选项启用和控制操作系统检测:
-O(启用操作系统检测)。
启用操作系统检测,如上所述。或者,您可以使用 -A 来启用操作系统检测以及其他功能。--osscan-limit(将操作系统检测限制为有希望的目标)。如果找到至少一个打开和一个关闭的 TCP 端口,操作系统检测会更加有效。设置此选项,Nmap 甚至不会尝试对不符合此条件的主机进行操作系统检测。这可以节省大量时间,尤其是在对许多主机进行 -Pn 扫描时。仅当使用 -O 或 -A 请求操作系统检测时才重要。--osscan-猜测;--fuzzy(猜测操作系统检测结果)。当 Nmap 无法检测到完美的操作系统匹配时,它有时会提供近似匹配作为可能性。默认情况下,Nmap 必须非常接近匹配才能执行此操作。这些(等效)选项中的任何一个都使 Nmap 猜测更加积极。Nmap 仍然会告诉您何时打印出不完美的匹配,并显示每次猜测的置信度(百分比)。--max-os-tries(设置针对目标的操作系统检测尝试的最大次数)。当 Nmap 对目标执行 OS 检测并未能找到完美匹配时,它通常会重复尝试。默认情况下,如果条件有利于 OS 指纹提交,Nmap 会尝试五次,如果条件不太好,Nmap 会尝试两次。指定较低的 --max-os-tries 值(例如 1)会加速 Nmap,但您会错过可能识别操作系统的重试。或者,当条件有利时,可以设置一个较高的值以允许更多的重试。很少这样做,除了生成更好的指纹提交和集成到 Nmap OS 数据库中。
我的问题是是否可以禁用操作系统检测过程的端口扫描部分。考虑到手册页似乎不可能,但原则上似乎并非不合理。
Nmap 至少需要 1 个封闭端口和 1 个开放端口才能进行可靠的操作系统匹配。默认情况下,Nmap 的端口扫描会扫描 1000 个 TCP 端口。您可以通过减少扫描端口的数量来减少端口扫描阶段所需的时间。这是一个很好的集合,它很有可能导致 1 个打开和 1 个关闭端口:
这将仅扫描列出的 5 个端口,这是正常扫描的 0.5%。
手册页中指定了“-sn”选项来禁用端口扫描,但 nmap 会抱怨操作系统检测在没有端口扫描的情况下不可靠。
http://nmap.org/book/man-briefoptions.html
ping 不会返回足够的信息来识别操作系统。操作系统指纹基于打开和关闭的端口以及对知名端口的响应。如果你不扫描一些端口,你怎么知道打开和关闭了哪些端口,以及响应是什么?
tl;博士:不。
所以快速回复是:NO
Ping 回复在任何地方都很标准。您无法根据 ping 回复进行远程操作系统检测。一些防火墙完全禁用 ping 回复(隐身模式)。在这里,您将找到有关ping别名ICMP的更多详细信息,或者如果您想深入了解它,请尝试RFC。
注意:如果您的目标是远程操作系统检测而不得到通知,您最好阅读 HTTP 标头 -通常您奇怪的 GET 请求会在日志中丢失- 或者尝试类似p0f的方法来执行Passive OS Fingerprinting。注意 POF 仅在您和主机在同一网络中时才有效。
PF也支持这个选项。