经 baidu 和 google 以后总结网络尖兵检测的方法:
1. 检测一条 ADSL 线路的 MAC 地址是否有多个。
这个方法从理论上可行,因为每个电脑的网卡的 MAC 地址都不一样,所以同时有几个不同 MAC 就可以猜测有几台电脑在上网。
但这里有好几种情况:
a. 猫以桥接模式工作,用交换机接几个电脑同时拨号。这种除了 E8 套餐以外并不常见,如果可以就肯定能检测。而且电信一般不会允许同时多个机器登录,故排除。
b. 猫以桥接模式工作,一个电脑负责拨号同时充当代理服务器。其余电脑要访问外网都由服务器负责转发,那里理论上来说电信只能看到服务器 MAC,理论上可行,但电费成本太高。
c. 猫以桥接模式工作,后面接个路由器负责拨号。这种理论上和 b 方案是一样的,路由器上做了一层 nat ,外面也只能看到路由器的 mac 才对。但是我看到好像有些路由器可以,但有些不可以。所以在这里猜测有些路由器的 OS 做得太精简,连 mac 地址都没有换去?
d. 猫以路由模式工作,由猫负责拨号,用交换机接多个电脑。这种方式和 c 相比就是将拨号任务由路由器转移到了猫上,视为与 c 同等,因为有可能猫的 OS 不负责没有将 mac 地址替换掉。
e. 猫以路由模式工作,由猫负责拨号,后面接路由器再做 nat,和 cd 相比,多了一层路由器做 nat,那么只要其中有一个将 mac 地址替换掉就可以了。相比安全一点。如果是我的话我会采用这种方式来共享上网。
2. 通过 snmp 协议探测网络结构。
snmp 是简单网管协议,用它可以获得网络上的很多信息,其中就包含网络结构的发现。
要防止这种扫描理论上只要禁用 snmp 协议就可以了,但这样也会有问题,有可能 ISP 给的设备是开启 snmp 协议的,一旦网络尖兵发现没有开启 snmp 协议就将你视为不正常。这里有个方法就是用上面的 e 方案,但是要将路由器上的 snmp 协议关掉。这样的话网络尖兵通过猫只能看到一台路由器在上网。而路由器是一台小型的电脑,它完全无法判断路由器的内部网络信息。
此外类似于 snmp 的还有可能网络尖兵会通过 netbios 判断路由器的操作系统信息,如果发现属于路由器特有的 OS 就完全有理由封杀了。通过 netbios ,我们可以发现网络上主机的基本信息,比如使用的是 windows xp 或者是 debian lenny 等,当然路由器也有它特有的 OS 版本信息。因此在 c 的基础上如果同时禁用 netbios 和 snmp 的效果不知道会怎样。