首页 理论教育计算机网络中的IP欺骗攻击与防范

计算机网络中的IP欺骗攻击与防范

【摘要】:欺骗攻击是利用TCP/IP等本身的漏洞而进行的攻击行为。欺骗攻击本身不是攻击的目的,而是为实现攻击目标所采取的手段。欺骗攻击往往基于相互之间的信任关系。实质上,欺骗就是一种冒充他人身份通过计算机认证骗取计算机信任的攻击方式。攻击者针对认证机制的缺陷,将自己伪装成可信任方,从而与受害者进行交流,最终窃取信息或展开进一步的攻击。(一)IP欺骗攻击与防范IP欺骗就是伪造某台主机IP地址的技术。

欺骗攻击是利用TCP/IP等本身的漏洞而进行的攻击行为。这些攻击包括IP欺骗、DNS欺骗、ARP欺骗等。欺骗攻击本身不是攻击的目的,而是为实现攻击目标所采取的手段。欺骗攻击往往基于相互之间的信任关系。两台计算机进行相互通信时,往往需要首先进行认证。认证是网络上的计算机用于相互之间进行识别的过程,经过认证的过程,获准相互交流的计算机之间就建立起相互信任的关系。信任和认证具有逆反关系,即如果计算机之间存在高度信任关系,交流时就不会要求严格的认证。相反,如果计算机之间没有很好的信任关系,交流时就会要求进行严格的认证。

实质上,欺骗就是一种冒充他人身份通过计算机认证骗取计算机信任的攻击方式。攻击者针对认证机制的缺陷,将自己伪装成可信任方,从而与受害者进行交流,最终窃取信息或展开进一步的攻击。欺骗的种类很多,下面具体介绍IP欺骗和ARP欺骗,其他类型的欺骗攻击,感兴趣的读者可以查找相关方面的材料。

(一)IP欺骗攻击与防范

IP欺骗(IP Spoofing)就是伪造某台主机IP地址的技术。通过IP地址的伪装使得某台主机能够伪装成另外一台主机,其实质就是让一台主机扮演另一台主机,而这台主机往往具有某种特权,或者被另外的主机所信任。IP欺骗大多是利用主机之间的信任关系发动的,所以在介绍IP欺骗攻击之前,先说明一下什么是信任关系,以及信任关系的建立。

1.IP欺骗攻击中的信任关系

在UNIX主机中,存在一种特殊的信任关系。假设有两台主机A和B,上面各有一个账户Alice,在使用中会发现,在A上使用,要输入在A上的相应账户Alice,主机A和B把Alice当作两个互不相关的用户,显然有些不方便。为了减少这种不便,可以在主机A和B中建立起两个账户的相互信任关系。

(1)在A和B的/home/Alice目录中创建.thosts文件。

(2)从主机A的home目录中用命令echo“BAlice”>~,/rhosts实现A和B的信任关系。

这时,从主机B上就能毫无阻碍地使用任何以r开头的远程调用命令,如rlogin、rsh和rcp等,而无须输入口令验证就可以直接登录到A上。这些命令将允许以地址为基础的验证,允许或拒绝以IP地址为基础的存取服务。rlogin是一个简单的客户机/服务器程序,它的作用和Telnet差不多,不同的是Telnet完全依赖口令验证,而rlogin是基于信任关系的验证。它使用了TCP进行传输。当用户从一台主机登录到另一台主机上,并且目标主机信任它,rlogin将允许在不应答口令的情况下使用目标主机上的资源,验证完全基于源主机的IP地址。

2.IP欺骗的原理

IP欺骗通过利用主机之间的正常信任关系来发动。既然A和B之间的信任关系是基于IP地址的,如果能够冒充B的IP,那么就可以使用rlogin登录到A,而不需要任何口令验证。这就是IP欺骗最根本的理论依据,如图10-3所示。但TCP对IP进行了进一步的封装,它是一种相对可靠的协议。下面看一下正常的TCP/IP的会话过程。

图10-3 IP欺骗示意图

由于TCP是面向连接的协议,因此双方正式传输数据之前需要三次握手来建立连接。假设还是A和B两台主机进行通信,B首先发送带有SYN标志的数据通知A建立TCP连接。TCP的可靠性就是由数据包中的数据序列SYN和数据确认标志ACK来保证的。B将TCP包头中的SYN设为自己本次连接中的初始值(ISN)。

当A收到B的SYN包之后,A会发送给B一个带有SYN+ACK标志的数据段,告知自己的ISN,并确认B发送来的第一个数据段,将ACK设置为B的SYN+1。

当B确认收到A的SYN+ACK数据包后,将ACK设置成A的SYN+1。A收到B的ACK后,连接成功建立,双方即可正式传输数据。图10-4所示为TCP三次握手的连接过程。

图10-4 TCP三次握手的连接过程

很明显,假如冒充B对A进行攻击,就要先使用B的IP地址发送SYN标志给A,但是当A收到SYN标志后,并不会把SYN+ACK发送到攻击者主机上,而是发送到真正的B上,这时IP欺骗就失败了,因为B根本无法发送SYN请求。所以要冒充B,首先要让B失去工作能力,也就是所谓的拒绝服务攻击,设法使B瘫痪。

要对目标主机进行攻击,必须知道目标主机使用的数据包序列号。攻击者首先与被攻击主机的一个端口(SMTP是一个很好的选择)建立起正常连接。通常这个过程被重复若干次,并将目标主机最后所发送的ISN存储起来。黑客还需要估计他的主机与被信任主机之间的RTT时间(往返时间),这个RTT时间是通过多次统计平均求出的。RTT对于估计下一个ISN非常重要,因为每秒钟ISN增加128 000,每次连接增加64 000。现在就不难估计出ISN的大小了,它是128 000乘以RTT的一半,如果此时目标主机刚刚建立过一个连接,那么再加上一个64 000。在估计ISN大小后,立即就开始攻击。当黑客虚假的TCP数据包进入目标主机时,根据估计的准确程度会发生以下不同情况。

(1)如果估计的序列号是准确的,进入的数据将被放置在接收缓冲区以供使用。如果估计的序列号小于期待的数字,那么将被放弃。

(2)如果估计的序列号大于期待的数字,并且在滑动窗口(缓冲)之内,那么该数据被认为是一个未来的数据,TCP模块将等待其他缺少的数据。

(3)如果估计的序列号大于期待的数字,并且不在滑动窗口之内,那么TCP将会放弃该数据,并返回一个期望获得的数据序列号。

攻击者伪装成被信任的主机IP,然后向目标主机的513端口(rlogin)发送连接请求。目标主机立刻对连接请求做出响应,并更新SYN+ACK确认包给被信任主机,因为此时被信任主机仍然处于瘫痪状态,它当然无法收到这个包,紧接着攻击者向目标主机发送ACK数据包,该包使用前面估计的序列号加1。如果攻击者估计正确,则目标主机将会接收该ACK,连接就可正式建立。这时就可以将cat813++08 81>3 5>0~3 8/7.5tho3sts7命令发送过去,这样完成本次攻击后就可以不用口令直接登录到目标主机上。如果达到这一步,一次完整的IP欺骗就完成了。黑客已经在目标主机上得到了一个Shell权限,接下来就是利用系统的溢出或错误配置扩大权限。当然,黑客的最终目的还是获得服务器的root权限。

从上面的攻击过程可以看出,一般地,一个IP欺骗攻击的整个步骤如下。

(1)让被信任主机的网络暂时瘫痪,以免对攻击造成干扰。

(2)连接到目标主机的某个端口,猜测ISN基值和增加规律。

(3)把源地址伪装成被信任主机,发送带有SYN标志的数据段请求连接。

(4)等待目标主机发送SYN十ACK包给已经瘫痪的主机。

(5)再次伪装成被信任主机向目标主机发送ACK,此时发送的数据段带有预测目标主机的ISN+1。

(6)连接建立,发送命令请求。(www.chuimin.cn)

3.IP欺骗的防范

对于来自网络外部的欺骗,防范的方法很简单,只需要在局域网的对外路由器上加一个限制设置就可以实现了,即在路由器的设置里面禁止运行由外部来的但声称来自于网络内部的信息包。

对于来自局域网外部的IP欺骗攻击,也可以通过防火墙进行防范。但对于来自内部的攻击,通过设置防火墙起不了什么作用,这时应该注意内部网的路由器是否支持内部接口。如果路由器支持内部网络子网的两个接口,则必须提高警惕,因为它很容易受到IP欺骗。

通过对信息包的监控来检查IP欺骗攻击是非常有效的方法,使用netlog等信息包检查工具对信息的源地址和目的地址进行验证,如果发现了信息包来自两个以上的不同地址,则说明系统有可能受到了IP欺骗攻击。

(二)ARP欺骗攻击与防范

在局域网中,实际传输的数据是按照帧进行传输的,帧里面有目标主机的MAC地址。一台主机要与另一台主机进行直接通信,必须知道目标主机的MAC地址,目标MAC地址就是通过ARP(Address Resolution Protocol,地址解析协议)获得的。地址解析,就是主机在发送帧之前将目标IP地址转换成目标MAC地址的过程。ARP的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。

ARP欺骗攻击是针对ARP的一种攻击技术,可以造成内部网络的混乱,让某些被欺骗的计算机无法正常访问网络,让网关无法同客户机正常通信。一般来说,IP地址的冲突可以通过多种方法和手段来避免,而ARPI作在最底层,当ARP缓存出错时,系统并不会判断ARP缓存正确与否,无法像IP冲突那样给出提示,而且很多黑客工具可以随时发送ARP欺骗数据包和ARP恢复数据包,这样就可以实现在一台普通计算机上通过发送ARP数据包的方式来控制网络中任何一台计算机的网络连接,甚至还可以直接对网关进行攻击,让所有连接网络的计算机都无法正常上网。

1.ARP欺骗攻击的原理

当某机器A要向机器B发送报文,会查询本地的ARP缓存表,找到B的IP地址对应的MAC地址后就进行数据传输,如果未找到,则广播一个ARP请求报文,请求IP地址为B的主机应答其物理地址。网上所有主机包括B都收到ARP请求,但只有主机B响应,于是向A主机发送一个ARP响应报文,其中就包含B的MAC地址。A接收到B的应答后,就会更新本地ARP缓存,接着使用这个MAC地址发送数据。因此,本地高速缓存的这个ARP表是本地网络畅通的基础,并且这个缓存是动态的。

ARP欺骗攻击就是通过伪造IP地址和MAC地址实现ARP欺骗,过程如下:

(1)假设有这样一个网络,包含一个交换机,连接了3台机器,依次是计算机A、B、C。

①A的地址为IP:192.168.1.1,MAC:AA-AA-AA-AA-AA-AA。

②B的地址为IP:192.168.1.2,MAC:BB-BB-BB-BB-BB-BB。

③C的地址为IP:192.168.1.3,MAC:CC-CC-CC-CC-CC。

(2)正常情况下,在A计算机上运行ARP-A,查询ARP缓存表,应该出现如下信息。

(3)在计算机B上运行ARP欺骗程序,发送ARP欺骗包。B向A发送一个伪造的ARP应答,这个应答中的数据为:发送方IP地址是192.168.1.3(C的IP地址),MAC地址是DD-DD-DD-DD-DD-DD(C的MAC地址本来应该是CC-CC-CC-CC-CC-CC)。当A接收到B伪造的ARP应答,就会更新本地的ARP缓存。A不知道这是从B发过来的,A这里只有192.168.1.3(C的IP地址)和无效的MAC地址DD-DD-DD-DD-DD-DD。

(4)在A计算机上运行ARP-A查询ARP缓存信息,原来正确的信息现在也出现了错误。

(5)当A计算机访问C计算机时,MAC地址会被ARP协议错误地解析为DD-DD-DDDD-DD-DD。

当局域网中的一台机器反复向其他机器,特别是网关发送这样无效的假冒ARP应答信息包,严重的阻塞就会开始。由于网关MAC地址错误,因此从网络中计算机发来的数据无法正常发送到网关,自然无法正常上网,就造成了无法访问外网的问题。另外,由于很多时候网关还控制着局域网,这时LAN访问也就出问题了。

2.ARP攻击防护

目前,对于ARP攻击防护主要有两种方法:绑定IP和MAC,使用ARP防护软件

(1)静态绑定

ARP攻击防护最常用的方法就是做IP和MAC的静态绑定,在局域网内把主机和网关都做IP和MAC绑定。欺骗是通过ARP的动态实时的规则欺骗内网机器,所以把ARP全部设置为静态,可以解决对内网计算机的欺骗。同时在网关也要进行IP和MAC地址的静态绑定,这样双向绑定才比较保险

IP和MAC静态绑定可以通过命令“arp-s IP MAC地址”来实现,如arp-s 192.168.1.1 AA-AA-AA-AA-AA-AA。

当然,对于网络中的每台主机都做静态绑定,工作量非常大,而且在计算机每次启动以后都必须重新绑定,因此操作上不是很方便。

(2)使用ARP防护软件

ARP类防护软件的工作原理是过滤所有的ARP数据包,对每个ARP应答进行判断,只有符合规则的ARP包才会被进一步处理,这样就防止了计算机被欺骗。同时对每个发出去的ARP应答都进行检测,只有符合规则的ARP包才会被发送出去,这样就实现了对发送攻击的拦截。例如,360ARP防火墙就可以实现该功能。