这是我使用 netcat 测量的方法:
在我的 Unix 主机 (Mac OS X Darwin) 上,没有防火墙(或者在 Windows 机器上,Windows 防火墙允许 netcat “nc” 可执行文件侦听 UDP 端口),我运行一个 UDP 服务器,它具有由提供的可变延迟远程客户端:
WINHOST=10.116.140.69
mkfifo f
nc -u -p 2222 $WINHOST 6666 < f | \
(while read secs; do for sec in $secs; do echo sleep $sec 1>&2; sleep $sec; echo SLEPT $sec; echo SLEPT $sec 1>&2; done; done) > f
在我的 Windows 主机(Windows 7 Professional SP1 64 位)上,安装了 cygwin 以提供 shell 和 netcat 的 Windows 防火墙,我以交互方式运行 UDP 客户端:
UNIXHOST=192.168.181.1
nc -u -p 6666 $UNIXHOST 2222
您不必使用 cygwin; Windows netcat 应该可以正常工作,但命令行可能会有所不同。
然后在该客户端中输入一系列测试间隔,观察服务器休眠然后响应,观察客户端是否得到响应。这些工作:1、2、10、60、120、180。然后失败:240。继续在 180 和 240 之间进行二分搜索。
示例 1:在客户端,我输入:
10
60
120
180
240
并观察到最多 180 次的请求-响应延迟有效,240 次无效。
示例 2:在客户端,我输入:
180
181
182
182
并观察到 181 的请求-响应延迟有效,而 182 则无效。
示例 3:在客户端,我输入(都在同一行):
180 180 180 181 181 181 182 182 182 183 183 183
从客户端生成一个 UDP 请求,然后生成一系列以 180、181、182 或 183 秒为间隔的响应。据观察,最多 181 秒的请求-响应延迟有效,此外,间隔高达 181 秒的持续响应(没有新请求)也有效。
所以防火墙漏洞有一个不活动计时器,不管不活动是初始响应延迟,还是后续的额外流量。
多台机器上的结果:
- 在那个 Windows 7 Professional SP1 64 位桌面上,UDP 响应漏洞打开了 181 秒。有可能我也在测量两个系统之间的网络防火墙,因为它们位于不同的网络上——但我认为它们的路由没有防火墙。无论如何,此系统上的 Windows 防火墙漏洞至少为 181 秒。
- 另一台 Windows 7 Professional SP1 64 位笔记本电脑,相同的网段(所以绝对没有介入防火墙),UDP 响应漏洞开放 64 秒。
我有兴趣在其他 Windows 机器上查看不同操作系统级别和防火墙配置的类似测量结果。