基于ARP欺骗的TCP伪连接D.o.S
2008-11-21 13:34:22 来源:WEB开发网从某种意义上说,如果能够制造TCP伪连接,那么D.o.S也就比较容易实现了。以前LionD8就曾经用这个思路做出了一个新型D.o.S,而今天,我用的也是这个思路。但是,如果直接伪造TCP三次握手而不作其他任何处理,那却是不行的。因为,当攻击的目标主机接收到我们发过去的伪造的SYN包后会发回一个SYN+ACK包(也就是第二次握手)。而当我们的系统收到这个SYN+ACK包后,由于系统内并没有发起真正的TCP连接,因此系统会发回一个RST包,这个包将使目标主机重置连接。这样,这个伪连接就建立失败了。
要解决这个问题,办法有不少,而我这里要用的方法就是ARP欺骗。首先,我们要对目标主机进行ARP欺骗,让它认为我们是同一网段中的另一台机器。然后我们就可以伪装这台机器向目标主机发起TCP伪连接了。这样一来,即使目标主机返回一个SYN+ACK包,这个包也不会进入到我们的系统(因为这个包的目的IP不会是我们而应该是我们伪装的那台主机的IP),这样,我们的系统也不会向目标主机发送RST包了。
打个比方,假设我们是主机A,现在我想要攻击主机B。首先,我先伪装主机C对B进行ARP欺骗(以C的IP地址和A的MAC地址构造ARP应答包发送到B),这样,B的ARP缓存中就会记录下C的IP对应A的MAC地址。然后,我们再以C的IP为源IP构造SYN数据包,向B发起TCP伪连接。当B收到这个SYN包之后,它会构造一个SYN+ACK包发往C。但是,由于此时在B的ARP缓存中记录着:C的IP对应A的MAC地址,因此,这个SYN+ACK包实际上被发送到了A。虽然,这个包将被A的系统所丢弃(因为这个包的目的IP是C的IP而不是A的IP,所以A的系统将会丢弃这个包),但是,我们仍然可以从链路层直接将这个数据帧获取下来。得到了这个SYN+ACK包之后,我们需要再次伪装C向B发回一个ACK包完成第三次握手。这样,TCP初始化连接的三次握手都完成了,我们的伪连接也成功建立了!
- ››基于IP地址的vsftp服务器
- ››基于MySQL 水平分区的优化示例
- ››基于CentOS5的Linux下pptp和openvpn的搭建及配置
- ››基于JavaScript的网页版塔防游戏
- ››基于Android平台 QQ大战360手机游戏爆红
- ››基于Windows Azure的云计算应用设计
- ››基于AES算法实现对数据的加密
- ››基于SoPC目标板Flash编程设计的创建及应用
- ››基于SolidWarks齿轮机构的运动分析与仿真
- ››基于Windwos Server 2008故障转移群
- ››基于JavaScript的REST客户端框架
- ››基于JavaScript和CSS的Web图表框架横向对比
更多精彩
赞助商链接