前言
写了上一篇后我偶然想到网桥也可以用来监听数据:),只要在目标PC或路由器出口上连接一个网桥,监听网桥网卡就可以了。
实现
话说原理其实很简单啦,网桥连接两个子网,因为是二层设备所以对上层的TCP/IP是透明的,而且所有通信都要经过网桥中转,用普通的tcpdump就可以监听了。
在OpenWrt上需要开启VLAN来模拟两个虚拟子网vlan0和vlan1
config switch eth1
option reset 1
option enable_vlan 1
config switch_vlan
option vlan 0
option device eth1
option ports '0 1 2 5t'
config switch_vlan
option vlan 1
option device eth1
option ports '3 5t'
两个vlan网络接口分别为eth1.0和eth1.1,0、1、2口为一个子网,3口单独一个子网。现在把eth1.0和eth1.1两个网络接口组成一个网桥br0:
config interface br0
option type bridge
option ifname 'eth1.0 eth1.1'
option proto none
br0默认不设置ip,因为我直接用TTL线获得Shell所以用不着。如果你想远程访问OpenWrt,则必须按情况设置static或dhcp,当然也可以用前一篇说到底Wifi客户端,这样你就可以舒舒服服的坐在电脑边远程登录查看抓包了:)。
最后一步是关闭防火墙,因为网桥用不着:
/etc/init.d/firewall disable
重启网络后可以用ifconfig看到很多网络接口,只要监听br-br0就行了:
br-br0 Link encap:Ethernet HWaddr 00:74:04:07:4B:CC
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
eth1 Link encap:Ethernet HWaddr 00:74:04:07:4B:CC
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
Interrupt:14
eth1.0 Link encap:Ethernet HWaddr 00:74:04:07:4B:CC
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
eth1.1 Link encap:Ethernet HWaddr 00:74:04:07:4B:CC
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
测试
- 首先在OpenWrt里安装Tcpdump:
opkg install tcpdump
- 用网线连接电脑到路由器3口(eth1.1),路由器2口(或0、1口)连接原本电脑的出口。
- 运行Tcpdump监听POP邮箱密码:
tcpdump -X -i br-br0 port 110
如果你的邮箱没加SSL的话,应该能看到密码明文啦:)。