我正在尝试确定是否可以指定 nmap 使用的探测类型。例如,我想扫描子网(例如 192.168.0.0/24)并探测每个主机上的每个端口,以查看 Web 服务器是否在该端口上运行 - 目标是找到在异常端口上运行的服务。
我知道 nmap 默认会检查最常见的探测器/端口组合。我还知道 -sV --version-all 选项将尝试在所有指定端口上进行所有探测器。但是,这非常耗时,如果我只关心查找在异常端口上运行的 Web 服务器,则不需要使用所有可用的探测器。一定有更快的方法。
另外,我对 StackExchange 社区还比较陌生;如果这个问题更适合放在其他社区/网络中,请告诉我。
答案1
--version-intensity
您可以使用选项并选择较低的强度数字来减少发送的探测次数。在nmap-service-probes
文件中,每个探测都有一个rarity
值,如果稀有度高于强度,则不会发送探测(除非它是该端口号的特别重要的探测,如行所示ports
)。绝大多数 HTTP 响应都位于和GetRequest
探测下GenericLines
,它们的值为rarity
1。因此,您的问题的简单答案是,此命令将找到发送探测次数最少的大多数 Web 服务器:
nmap --version-intensity 1 -sV
您还可以使用--version-light
它的简写--version-intensity 3
,它只会添加一些额外的探测。
由于您只对没有横幅的 HTTP 服务器感兴趣,因此您还可以通过编辑文件nmap-service-probes
并将值更改totalwaitms
为较小的值来减少等待 NULL 探测器横幅的时间。一旦您开始对 进行更改nmap-service-probes
,您可能决定采取其他操作,例如将所有其他探测器的稀有度更改为9
,但如果您希望将此文件用于任何常规扫描,请确保将其改回。如果您决定制作自定义文件nmap-service-probes
,您可以使用选项--versiondb
指向它,而不是覆盖 Nmap 附带的文件。
答案2
无法在命令行中准确指定探测器,但您可以删除在中找到的探测器,nmap-service-probes
除非您特别需要。或者,您可以使用来源并编辑nmap/service_scan.cc
为仅处理与类似正则表达式匹配的nextProbes
情况probe->getName()
http.*