【IT专家网独家】网络安全一直以来就是一个热门话题,相信伴随着网络技术的发展这个话题也会无休止的延续下去。“道高一尺,魔高一丈”,针对现在越来越多的入侵检测产品,攻击者也在不断丰富自己攻击手段。介于目前大多数入侵检测都是针对单个报文的,攻击者将自己攻击信息分段隐藏在多个报文,甚至是多个乱序的分段报文中,以此来规避检测。本文介绍的FREL就是这样一种报文分段工具,其是Fragrouter的升级版本,与Fragrouter所不同的是其能够运行在流量发起的机器上。
应用场景

如上图所示,FREL运行在Client机器上,FREL分段所有从Client到Server的流量,这些分段流量都会经过Firewall。如果Client端没有运行FREL,攻击流量流经Firewall会被检测到,分段以后是否能够检测到,就需要考验Firewall的实力了。
具体应用
FREL通过option –i来指定其监听的物理端口,例如-i eth1,从这个端口上侦听流量,捕获它,分段以后再转发出去。对这些分段后的报文FREL并不进行路由查找和ARP查找,它只需要知道目的MAC。如上面TOPO,目的MAC就是Firewall的MAC。目的MAC的指定可以通过option –r
| frel –m2 –i eth1 –r firewallmacaddress –s firewallmacaddress –F1 |
命令行参数的具体解释如下:
1.-m2:运行在流量始发端的机器上
2.-i eth1:捕获并且分段发送流出该接口的报文
3.-r firewallmacaddress:分段以后将报文发往这个地址
4.-s firewallmacaddress:捕获并分段目的MAC为该值的报文
5.-F1:根据需要的攻击手段选择不同的值。
如何防止报文复制
现在一切配置妥当之后,还是以上面的TOPO为例,我们从Client端ping Server端,同时在Client/Firewall接口上运行tcpdump来观察报文。我们仔细观察,我们会发现两部分报文:
1. 正常的ping包
2. 这些正常ping包的分段报文
为什么会出现这两部分报文呢?原因是因为当报文发出去的时候frel并没有停止最初的报文发送,它只是捕获了报文的复制品,将其分段后再重新发送,所以这就导致了报文被发送了两次,一次是完整版的,一次是分段版的。出现复制报文,这在正常的情况下这是不允许的,所以我们需要阻止源报文的发送。要做到阻止源报文的发送,我们需要在Client机器上利用静态路由和静态ARP,本身Client要连接Server,在Client上也需要一条到Firewall的默认路由,同时Firewall的ARP也需要存在在Client的cache里。现在我们在Client上添加一条到Server的静态路由,该路由的gateway指向一个不存在的地址而不是Firewall,这样当Client需要发送报文到Server时,其会将报文发向这个不存在的地址而不是发到Firewall。这个不存在的地址应该与Client在同一个网段,不需要一台实际的机器,只需要一个IP地址即可。同时我们还需要为这个不存在的IP配置一个静态ARP,否则,Client在发送报文的时候会出现ARP请求失败,导致报文不能发送。当然这个ARP我们也配置一个不存在的ARP。在Client上我们需要配置如下命令:
1. Route add –host victim gw dummyip-on-clients-network
2. Arp –s dummyip-on-clients-network 00:01:02:03:04:05
这样当Client ping Server的时候,所有的ping包都会被送往这个不存在的IP和ARP,frel的命令行需要做一下修改,我们捕获发往这个不存在的MAC的报文,但是仍然将分段后的报文发往Firewall的MAC,这样最初的ping包就会因为找不到目的IP而丢失,分段后的报文就正常的发往了Firewall,经Firewall转发后送往Server。这样也就避免了复制的报文。Frel命令行如下:frel –m2 –F1 –i eth1 –s 00:01:02:03:04:05 –r firewallmacaddress。

