利用IP地址欺骗突破防火墙(1)
一般的访问控制主要在防火墙中进行设置,制定一些安全策略:如内部局域网的资源不允许外部网上的用户使用;不设防区(又称非军事区)可以为内部或外部局域网,其中的资源允许外部网的用户有限度地使用;可以使外部用户访问非军事区(DMZ区)的WEB服务器等等。深入分析研究防火墙技术,利用防火墙配置和实现的漏洞,可以对它实施攻击。通常情况下,有效的攻击都是从相关的子网进行的,因为这些网址得到了防火墙的信赖,虽说成功与否尚取决于机遇等其他因素,但对攻击者而言很值得一试。
突破防火墙系统最常用的方法是IP地址欺骗,它同时也是其他一系列攻击方法的基础。之所以使用这个方法,是因为IP自身的缺点。IP协议依据IP头中的目的地址项来发送IP数据包。如果目的地址是本地网络内的地址,该IP包就被直接发送到目的地。如果目的地址不在本地网络内,该IP包就会被发送到网关,再由网关决定将其发送到何处。这是IP路由IP包的方法。IP路由IP包时对IP头中提供的IP源地址不做任何检查,并且认为IP头中的IP源地址即为发送该包的机器的IP地址。当接收到该包的目的主机要与源主机进行通讯时,它以接收到的IP包的IP头中IP源地址作为其发送的IP包的目的地址,来与源主机进行数据通讯。IP的这种数据通讯方式虽然非常简单和高效,但它同时也是IP的一个安全隐患,很多网络安全事故都是因为IP这个的缺点而引发的。
黑客或入侵者利用伪造的IP发送地址产生虚假的数据分组,乔装成来自内部站的分组过滤器,这种类型的攻击是非常危险的。关于涉及到的分组真正是内部的还是外部的分组被包装得看起来象内部的种种迹象都已丧失殆尽。只要系统发现发送地址在其自己的范围之内,则它就把该分组按内部通信对待并让其通过。
通常主机A与主机B的TCP连接(中间有或无防火墙)是通过主机A向主机B提出请求建立起来的,而其间A和B的确认仅仅根据由主机A产生并经主机B验证的初始序列号ISN。具体分三个步骤:
主机A产生它的ISN,传送给主机B,请求建立连接;B接收到来自A的带有SYN标志的ISN后,将自己本身的ISN连同应答信息ACK一同返回给A;A再将B传送来ISN及应答信息ACK返回给B。至此,正常情况,主机A与B的TCP连接就建立起来了。
B ---- SYN ----> A
B <---- SYN+ACK ---- A
B ---- ACK ----> A
假设C企图攻击A,因为A和B是相互信任的,如果C已经知道了被A信任的B,那么就要相办法使得B的网络功能瘫痪,防止别的东西干扰自己的攻击。在这里普遍使用的是SYN flood。攻击者向被攻击主机发送许多TCP- SYN包。这些TCP-SYN包的源地址并不是攻击者所在主机的IP地址,而是攻击者自己填入的IP地址。当被攻击主机接收到攻击者发送来的TCP-SYN包后,会为一个TCP连接分配一定的资源,并且会以接收到的数据包中的源地址(即攻击者自己伪造的IP地址)为目的地址向目的主机发送TCP-(SYN+ACK)应答包。由于攻击者自己伪造的IP地址一定是精心选择的不存在的地址,所以被攻击主机永远也不可能收到它发送出去的TCP-(SYN+ACK)包的应答包,因而被攻击主机的TCP状态机会处于等待状态。如果被攻击主机的TCP状态机有超时控制的话,直到超时,为该连接分配的资源才会被回收。因此如果攻击者向被攻击主机发送足够多的TCP-SYN包,并且足够快,被攻击主机的TCP模块肯定会因为无法为新的TCP连接分配到系统资源而处于服务拒绝状态。并且即使被攻击主机所在网络的管理员监听到了攻击者的数据包也无法依据IP头的源地址信息判定攻击者是谁。