在2009年时就有国外的研究人员针对各种探针的有效性进行了研究。他们针对数千台主机使用各种不同的探针进行主机发现测试。测试结果如下表所示,表中列出了不同探针的有效性。
主机发现比例 探针
62.47% -PE
44.17% -PS443
43.28% -PA80
43.01% -PA443
42.47% -PS80
40.65% -PA110
40.42% -PA3389
40.41% -PS110
39.89% -PA22
39.62% -PS21
39.62% -PA21
38.75% -PS22
37.50% -PS3389
36.66% -PP
31.17% -PU40125 --source-port 53 --data-length 24
29.96% -PU31338 --source-port 53 --data-length 24
29.05% -PU631 --source-port 53 --data-length 24
26.38% -PU40125
26.09% -PS25
25.69% -PA25
25.35% -PU31338
24.71% -PU631
24.15% -PU53 --source-port 53 --data-length 24
22.20% -PU53
9.09% -PO2
9.03% -PO150
7.20% -PO4
4.21% -PM
表1: 最佳单个主机发现探针
我们从上表中发现了一些有趣的事情。最佳的单个探针是-PE,ICMP echo。紧随其后的是SYN(-PS)和ACK(-PA)探针与一些常用端口的组合。ICMP时间戳探针(-PP)的表现也不错。最好的UDP探针是与随机高端口号的组合,当它们与- -source-port 53,- -data-length 24组合时效果更好。使用SYN和ACK探针和端口25的组合效果明显比其它组合效果差,这可能是因为该端口一般会被过滤掉。各种IP协议ping(-PO)的效果都不好,而效果最槽的是-PM。
表1中的仅只是单个主机发现探针的效果,多个探针组合的效果并不是简单的从表1中选择几个探针并叠加就能得到。这是因为一些探针发现的主机和其它探针发现的主机一样,所以同时用这样的探针效果并不比只用一个好。研究人员设计了一个计算机程序通过检查每个探针能发现多少个主机以及它们与其他探针有多少重叠来找到探针的最佳组合。Nmap默认的四探针组合也是从下表中选出的,这是一个平衡了综合性与速度的选择。
探针数 主机发现比例 探针组合
1 probe 62.47% -PE
2 probes 77.61% -PE -PA80
3 probes 83.83% -PE -PA80 -PS443
4 probes 88.64% -PE -PA80 -PS443 -PP
5 probes 91.12% -PE -PA80 -PS443 -PP -PU40125 --source-port 53
6 probes 92.42% -PE -PS80 -PS443 -PP -PU40125 -PA3389 --source-port 53
7 probes 93.10% -PE -PS80 -PS443 -PP -PU40125 -PS3389 -PA21 --source-port 53
8 probes 93.69% -PE -PS80 -PS443 -PP -PU40125 -PS3389 -PA21 -PU161 --source-port 53
表2: 最佳多个主机发现探针组合