分类: 网络与安全
2009-07-17 18:21:06
重写二层头
以上图为例,从Client端发送攻击流量到Server端,如果在Firewall上配置了策略,阻止了Client的MAC地址,Client端可以通过Tcprepaly将攻击报文的源MAC地址重写。具体使用如下:
./tcpreplay -i eth0 -k 00:02:02:03:04:05 /tmp/1.pcap |
参数-i用来指定发送的Primary接口,-k用来指定重写源MAC地址。通过-k指定一个Firewall的可信MAC地址,攻击流量就有可能瞒天过海。如果Firewall工作在transparent模式下,那么我们的攻击流量需要重放,目的MAC则需要改为Server的MAC,我们则可以通过命令行
./tcpreplay -i eth0 -I 00:01:02:03:04 -k 00:02:02:03:02:07 /tmp/1.pcap |
亦即通过添加参数-I来重写通过Primary端口流量的目的MAC。如果我们需要在Client的多个端口上将攻击流量重放,那么我们则可以 通过添加参数-j来指定Secondary接口,通过参数-J来重写Secondary接口流量的目的MAC,通过参数-K来重写Secondary端口 的源MAC,具体应用如下:
./tcpreplay -j eth1 -J 00:01:02:03:04 -K 00:02:02:03:02:07 /tmp/1.pcap |
同样,我们也可以综合运用以上各个参数将同一个攻击报文在Client的不同端口上以不同的目的MAC和源MAC发送,这样乱拳出击,可以充分考验Firewall的应用,具体使用如下:
./tcpreplay -i eth0 -I 00:01:01:02:02:03 -k 00:02:02:04:04:05 -j eth1 -J 00:01:02:03:04 -K 00:02:02:03:02:07 /tmp/1.pcap |
重写三层头
仍旧以上面的TOPO为例,如果Firewall上配置了策略阻止了特定的IP地址,Client端就可以通过Tcpreplay来重写攻击报文的源与目的IP,以此来规避Firewall的规则,达到其攻击的效果。具体的应用如下:
./tcpreplay -e 1.1.1.1:2.2.2.2 -i eth1 /tmp/2.pcap |
通过参数-e来具体的指定攻击报文的源、目的IP,以此来修改成Firewall能够允许通过的IP地址以此来达到攻击的目的。这在修改三层头 中是最常用的一种方式。如果你获得了一个pcap报文,你想把它重放给某人同时又不愿意暴露自己的IP地址,那么可以利用参数-s来随机的选用IP地址, 具体使用如下:
./tcpreplay -s 11 -i eth1 /tmp/2.pcap |
其中参数-s决定了你随机选用的IP地址,不同的seed值会导致不用的pcap报文的IP地址。Tcprepaly在再深一点的应用是可以把报文的IP地址进行映射,类似于NAT的应用,可以将攻击报文的IP地址映射到不用的网段,具体应用如下:
./tcpreplay -N 10.0.0.0/8:11.0.0.0/8 -i eth1 /tmp/2.pcap |
其中参数-N来指定需要映射的网段。
重写四层头
Tcprepaly可以修改二、三层头来修改传输层面的信息,同样也可以修改四层头来修改session层面的信息,例如我们可以修改运行在8080端口上的HTTP的流量使其运行在80端口上,具体应用如下:
./tcpreplay -4 80:8080 -i eth1 /tmp/2.pcap |
我们通过参数-4来重新映射需要重放的报文的端口号。在修改报文头的过程中面临一个checksum的问题,因为许多网卡支持TCP/UDP /IP checksun的offloading,所以如果我们捕获的流量是同一个系统产生的,则checksum就会是错误的,这在以后的重放中就会产生问题, 所以我们需要通过参数-F来固定checksum,在重放的过程中编辑报文时不会改变checksum的值。具体应用如下:
./tcpreplay -4 80:8080 -i eth1 -F /tmp/2.pcap |
参数-F来固定checksum。
小结
灵活的运用tcpreplay的重写功能,相信会在网络的攻防检测给大家带来很大的帮助。