由于内网无法正常连接网关,远程登陆网关已无法实现。因此一切操作均在网关服务器本地进行。
3.1 在服务器本地端口抓包
[root@Routed-Server tmp]# tcpdump -nn -i eth1 > error.network
tcpdump: listening on eth1
2749 packets received by filter
0 packets dropped by kernel
# 将通过eth1端口的包抓下来,存为error.network文件
3.2 将ARP包截取出来
[root@Routed-Server tmp]# grep ‘arp’ error.network > arp.virus
[root@Routed-Server tmp]# ls -l arp.virus
-rw-r--r-- 1 root root 6241 Oct 25 10:59 arp.virus
# 将所有ARP包截取,另存为文件
3.3 分析ARP包
[root@Routed-Server tmp]# vi arp.virus
~省略
10:43:26.086278 arp reply 192.168.2.2 is-at 0:14:78:80:d9:e4
10:43:26.181051 arp reply 192.168.2.3 is-at 0:14:78:80:d9:e4
10:43:26.211026 arp reply 192.168.2.11 is-at 0:14:78:80:d9:e4
10:43:26.242212 arp reply 192.168.2.4 is-at 0:14:78:80:d9:e4
10:43:26.304441 arp reply 192.168.2.162 is-at 0:14:78:80:d9:e4
10:43:26.398826 arp reply 192.168.2.167 is-at 0:14:78:80:d9:e4
~省略
# 问题出来了,可以看到以上几个包括网关IP在内的IP地址都宣称其位于MAC地址
# 为“00:14:78:80;d9:e4”的网卡
3.4 查看网关(192.168.2.11)的MAC地址
[root@Routed-Server tmp]# ifconfig eth1 |grep -A1 'HWaddr'
eth1 Link encap:Ethernet HWaddr 00:0A:EB:55
1:72
inet addr:192.168.2.11 Bcast:192.168.2.255 Mask:255.255.255.0
# 可以看到网关的MAC地址为“00:0A:EB:55
1:72”,与上面arp-reply包不相符
# 这里基本上可以份析出中毒的机器MAC地址为“00:14:78:80:d9:e4”
3.5 准确定位中毒机器
知道可能中毒机器的MAC地址,对其定位应该不是件难事。对于小型的网络我们可以对每台机器的MAC地址进行查询,但是对于大型网络,机器台数超过200台的环境,这样做并不是最高效的办法。由于使用DHCP,这里我想到了DHCP的租约记录。
在/var /lib/dhcp/dhcpd.leases记录中查找MAC地址对应的IP记录
[root@Routed-Server tmp]# vi /var/lib/dhcp/dhcpd.leases
~省略
lease 192.168.2.161 {
starts 3 2006/10/25 02:56:22;
ends 2 2038/01/19 03:14:06;
binding state active;
next binding state free;
hardware ethernet 00:14:78:80:d9:e4;
uid "\001\000\024x\200\331\344";
client-hostname "ABEAAF6E64884EB";
}
~省略
# 在dhcpd.leases文件中,我找到如上记录
# 可以看出MAC地址为“00:14:78:80:d9:e4”的机器,IP地址为192.168.2.161
# 机器名为“ABEAAF6E64884EB”
到这里,中毒机器的机器名,IP地址均已查出。