使用 nmap 仅 ping 操作系统检测?

使用 nmap 仅 ping 操作系统检测?

我对使用 nmap 进行发现以及找出每台主机的操作系统感兴趣。我了解 nmap 可以执行此操作,并且可以按照中所述启用和控制手册页

使用以下选项启用和控制操作系统检测:

-O(启用操作系统检测)。

启用操作系统检测,如上所述。或者,您可以使用 -A 来启用操作系统检测以及其他功能。–osscan-limit(将操作系统检测限制在有希望的目标上)。如果至少找到一个开放和一个关闭的 TCP 端口,操作系统检测将更有效。设置此选项,Nmap 甚至不会对不符合此条件的主机尝试操作系统检测。这可以节省大量时间,特别是在对许多主机进行 -Pn 扫描时。只有在使用 -O 或 -A 请求操作系统检测时才重要。–osscan-guess; –fuzzy(猜测操作系统检测结果)。当 Nmap 无法检测到完美的操作系统匹配时,它有时会提供近似匹配作为可能性。默认情况下,匹配必须非常接近,Nmap 才会这样做。这两个(等效)选项中的任何一个都会使 Nmap 更积极地猜测。Nmap 仍会告诉您何时打印不完美的匹配,并显示每次猜测的置信度(百分比)。–max-os-tries(设置针对目标的操作系统检测尝试的最大次数)。当 Nmap 对目标执行操作系统检测并且无法找到完美匹配时,它通常会重复尝试。默认情况下,如果条件有利于提交操作系统指纹,Nmap 会尝试五次,如果条件不太好,则尝试两次。指定较低的 --max-os-tries 值(例如 1)可加快 Nmap 的速度,但您会错过可能识别操作系统的重试。或者,可以设置较高的值以在条件有利时允许更多重试。除非为了生成更好的指纹以提交并集成到 Nmap 操作系统数据库中,否则很少这样做。

我的问题是,是否可以禁用操作系统检测过程中的端口扫描部分。根据手册页,这似乎是不可能的,但原则上似乎并不不合理。

答案1

Nmap 至少需要 1 个关闭端口和 1 个打开端口才能进行可靠的操作系统匹配。默认情况下,Nmap 的端口扫描会扫描 1000 个 TCP 端口。您可以通过减少扫描的端口数量来减少端口扫描阶段所需的时间。以下是一组很好的端口,它很有可能产生 1 个打开端口和 1 个关闭端口:

nmap -p 22,80,445,65123,56123 -O scanme.nmap.org

这将仅扫描列出的 5 个端口,占正常扫描的 0.5%。

答案2

手册页中指定了“-sn”选项来禁用端口扫描,但是 nmap 会抱怨如果没有端口扫描,操作系统检测就不可靠。

http://nmap.org/book/man-briefoptions.html

答案3

ping 不会返回足够的信息来识别操作系统。操作系统指纹基于开放和关闭的端口以及对知名端口的响应。如果您不扫描某些端口,您如何知道哪些端口是开放和关闭的,以及响应是什么?

tl;dr:没有。

答案4

我的问题是,是否可以禁用操作系统检测过程中的端口扫描部分。根据手册页,这似乎是不可能的,但原则上似乎并不不合理。

因此快速答复是:

Ping 回复在任何地方都是相当标准的。您无法基于 ping 回复进行远程操作系统检测。有些防火墙会完全禁用 ping 回复(隐身模式)。您可以在此处找到有关别名ICMP或者如果你想深入了解,可以尝试请求函数

注意:如果你的目的是在不被通知的情况下进行远程操作系统检测,你最好阅读 HTTP 标头 -通常你的奇怪的 GET 请求将会在日志中丢失- 或者尝试类似p0f确实被动操作系统指纹识别. 注意仅当您和主机位于同一网络时,POF 才会起作用。

PF也支持此选项。

相关内容