首页 -> 安全研究

安全研究

绿盟月刊
绿盟安全月刊->第34期->技术专题
期刊号: 类型: 关键词:
Ettercap有关技术说明

作者:yaojs@263.net
日期:2002-08-16

技术说明

一、    基于ARP的sniffing技术

基于ARP的sniffing并不需要把网卡设置为全收方式,因为我们并不需要这样做。通过ARP欺骗,被监听的主机会自动地把数据发送给我们,因此这种方法是在交换网环境下实现sniffing的有效方法。
现在让我们来看看这一切是怎样实现的。

首先,我们需要了解ARP协议以及它的安全缺陷。在TCP/IP协议中,每一个网络结点的标识是它的IP地址。需要注意的是IP地址是一个逻辑地址,在局域网以外,IP地址可以作为路由器的寻址依据。但是在局域网内部(以太网),网络结点根据数据包的MAC地址(物理地址),而不是IP地址(逻辑地址)来决定是否要接收数据包。这是由网络适配器的工作原理决定的。所以在局域网内,我们就有了两套地址:IP地址和MAC地址。为了正常的网络通信,TCP/IP协议必须解决IP地址与MAC地址之间的对应问题,把IP地址与具有该IP地址的网络适配器的MAC地址对应起来,这样才能真正把数据包送给具有该IP地址主机。ARP协议就是为解决这一问题而设计的。

利用TCP/IP协议进行通信的应用程序只需要知道通信对方的IP地址,而TCP/IP协议栈需要了解该IP地址对应的MAC地址。TCP/IP协议栈保留了一个IP地址与MAC地址的映射表:ARP表,在构造网络数据包的时候,TCP/IP协议栈会在ARP表中查找目标IP对应的MAC地址,如果找到了,就把它填写到以太报头的目的MAC地址域中;如果找不到,就会发一个ARP请求,请求具有该IP地址的主机报告它的MAC地址。这个过程是通过两次ARP通信实现的:一个ARP请求,一个ARP响应。看起来这个协议是很合理的,但是在ARP协议的具体实现中,为了减少用于解决地址的ARP数据流,当一个主机接收到任何一个ARP响应的时候(不是对于自己发送的ARP请求的响应),都会主动把ARP响应中的IP地址与MAC地址映射关系填写到自己的ARP表中。这本是一个高效率的设计,但ARP欺骗就正是利用了这个设计:对于被欺骗的A、B两台主机,我们可以发送一个伪造的ARP响应包,告诉A主机B主机的MAC地址是我们的MAC地址,再发送一个伪造的ARP响应包告诉B主机A主机的MAC地址是我们的MAC地址。由于ARP协议实现中的上述特点,A主机和B主机都不会考虑这个ARP响应的真实性,“不假思索”地把这个地址映射关系填写的本机的ARP表中。在以后A与B的通信中,TCP/IP都会在ARP表中查到这个经过我们设计的地址映射关系,从而自动地把发给对方的数据发送给我们。这样我们就站到了A、B的中间,接收着A、B之间的所有通信数据。

需要注意的是,主机A和主机B都把发送给对方的数据发给了监听主机,而主机A和主机B都不会收到它们应收到的数据,为了保证A、B之间的正常通信,监听主机必须完成A、B之间的数据转发。

二、Ettercap的五种监听模式、它们之间的差别和使用方法

Ettercap提供了五种监听模式:IP BASED、MAC BASED、ARP BASED、PUBLICARP 和SMARTARP。正确理解这五种模式是有效使用Ettercap的前提。

从实现原理来说,本质上不同监听模式只有两种:通过网卡全收方式的监听和通过ARP欺骗的监听。前者与传统的sniffing方式是一样的,通过共享网络环境接收我们感兴趣的数据流;后者则依赖于上面介绍的ARP欺骗技术,把想要监听的网络数据流引导到我们这里。在这五种监听模式中IP BASED和MAC BASED方式沿用了传统的监听模式,因而它们需要把网卡设置为全收模式,它们之间的差别在于数据包的过滤依据不同。后三者则是基于ARP欺骗的,它们之间的不同在于以什么方式进行ARP欺骗。有了这样一个大的概念,下面具体分析一下每一种监听方式,以及如何正确使用它们。
1、IP BASED模式

这种模式只能在共享网络环境下使用,在交换环境中是无效的。通过-s选项指定这种模式。因为它需要把网卡设置为全收模式,所以除了不能在交换网环境中接收其它主机间的通信以外,还有两个比较大的弱点。一是在很多主机上,当网卡被设置为全收模式的时候在系统操作台或系统日志中会产生一些消息,会引起目标主机管理员的注意。二是见听主机会收到大量数据包,在网络繁忙的时候会严重影响监听主机的工作效率,引起目标主机管理员的注意。

2、MAC BASED模式

这种模式只能在共享网络环境下使用,在交换环境中是无效的。通过-m选项指定这种模式。它具有IP BASED方式的一些相同的特点和弱点。你可以通过指定两个IP地址来指示Ettercap监听该对主机之间的通信,但是Ettercap在实施监听的时候,并不是以IP地址作为过滤标准,而是以IP地址对应的MAC地址作为过滤标准。这样这种模式就有了一个很好的应用:监听通过网关的通信。如果你要监听内网上一台主机与Internet之间的所有数据通信,只要指定被监听的主机的IP地址和网关的IP地址就可以了。想一想这是为什么呢?因为所有到外网的通信都要经过网关,而且外网IP地址是很随机的。但无论怎样,以网关和被监听主机的MAC地址作为过滤标准的话,一切到外网的通信都被过滤出来了,代价是被监听主机的内网通信都被丢弃了。

3、ARP BASED模式

这种模式通过ARP欺骗监听一对主机之间的通信。由于采用了ARP欺骗技术,可以应用于交换网络环境的监听。通过-a选项以及两个IP MAC地址对来指定这种模式,它们分别代表被监听双方的IP地址和MAC地址。使用这种方式的一个前提条件是必须知道被监听的两台主机的IP地址和对应的MAC地址。当然。我们可以事先通过Ettercap的其它功能来获取这些信息,也可以不用Ettercap而采用可以获得这个信息其它一切手段,想起来手段是不是很多呀。这种模式的优点是Ettercap可以不发送大量的ARP响应数据包,减少被网络IDS发现的机会。

4、PUBLICARP模式

这种模式通过ARP欺骗监听一台主机到所有主机之间的通信。由于采用了ARP欺骗技术,可以应用于交换网络环境的监听。通过-a选项以及一个IP地址来指定这种模式,如果与-z选项连用,还要指定一个MAC地址。这里IP地址和MAC地址均为被欺骗主机的地址。为了欺骗所有的主机把发往被监听主机的数据包发送给监听者,Ettercap通过以广播方式发送ARP响应包的方式来把所有主机上的ARP地址表中被监听主机的MAC地址修改为自己的地址。这是由于这种欺骗方式,PUBLICARP模式是一种半双工的模式,即发往被监听主机的数据包会送给监听者,而被监听者发出的数据包却被直接送往真正的目的主机,没有经过监听者的主机。可以想象到这里有一个问题,被监听者自己也会收到这个以广播方式发送的ARP响应包,发现其中对自己的IP的映射是错误的(正如win2K下)。由此会引起什么样的问题呢?我们需要做一些实验验证才行。
由于这种模式是半双工的,因此它不支持那些需要全双工模式的功能,如修改数据包、监听SSH口令等等。
为了解决上面的问题,引入了SMARTARP模式。

5、SMARTARP模式

这种模式通过ARP欺骗监听一台主机到所有特定主机之间的通信。由于采用了ARP欺骗技术,可以应用于交换网络环境的监听。通过-a选项、一个IP地址和一个主机表来指定这种模式。实际上Ettercap采用了一种较为智能的方式:如果存在主机表,就自动采用SMARTARP模式,如果不存在主机表,就自动采用PUBLICARP模式。在这种模式下,Ettercap 不是通过广播方式发送ARP响应包,而是有选择地发送给主机表中的主机,这样就避免了把用于修改被监听者的MAC地址的ARP欺骗包发送给被监听者并引起IP地址冲突。在SMARTARP方式下,不仅修改了指定主机的ARP表中关于被监听主机的MAC地址,还修改了被监听主机中的那些指定主机的MAC地址,这样就可以实现具有全双工功能的中介攻击了。
在SMARTARP方式下需要注意的一个问题是,如果被监听的主机需要作为一个客户访问Internet,必须在配置文件的GWIP选项中定义网关的IP,并通过-e选项加载这个配置文件,否则该主机无法连接到远程主机。
我们可以通过-Nl选项来查看主机表的内容,通过-H选项来指定主机表。

三、如何实现修改网络数据包

通过ARP欺骗方式,被欺骗主机的数据流会主动送到监听主机。这样我们就成了数据流的主人:数据流的目的主机只有在我们转发这些数据流的时候才能收到这些数据。如果我们在转发之前修改这些数据有会怎样呢?那就是目标主机接收到的是经过我们修改的数据。我们可以修改、增加、删除这些数据包的内容,只要重新计算一下校验和,并替换原来的校验和就可以了。
如果更进一步,我们还可以在连接中插入数据包,丢弃数据包。为了保持连接的正确性,我们伪造的数据包要有正确的TCP序列号和确认序列号。对于该连接后面的数据包中,我们还要记得在TCP序列号部分加上或减去我们的伪造包的数据长度。

四、如何以中间人攻击的方式攻击SSH1

简单地说,SSH1的通信过程是这样的:

                服务器                             客户

握手阶段
                                 SYN
                      <---------------------------
                              SYN ACK
                      --------------------------->
                                 ACK
                      <---------------------------

协议协商阶段
                              版本信息
                      --------------------------->
                              版本信息
                      <---------------------------
交换密钥阶段
                           明码传输的服务器公钥
                      --------------------------->
                          服务器公钥加密的会话密钥
                      <---------------------------
认证阶段
                               确认信息
                      <---------------------------
                          会话密钥加密的用户名
                      <---------------------------
                               应答信息
                      --------------------------->
                          会话密钥加密的口令信息
                      <---------------------------
                               应答信息
                      --------------------------->
数据通信阶段
                      ............................

这个过程中,由于监听者处于中间人的地位,它可以在交换密钥的阶段从截获的数据流中取出服务器的公钥,保存起来,然后用自己生成的一对密钥中的公钥替换数据包中的公钥,发送给客户。这样,当客户生成会话密钥的时候就会用我们的公钥加密。当我们收到客户发送的会话密钥的时候,可以用我们所掌握的私钥解密,得到会话密钥,然后再用保存下来的服务器公钥加密,发送给服务器。此时,服务器、客户和监听者都有了同一个会话密钥,以后的通信对于监听者来说就如同明文了。

五、ARP欺骗模式可能引发的问题

使用ARP欺骗的方式解决了在交换网环境下的sniffing问题,但也有一些问题需要注意,充分理解这些问题可以帮助我们注意可能产生的后果。

1、在进行ARP欺骗的时候,如果在一个比较短的时间内产生了大量的ARP请求或响应数据包,会造成一些基于网络的IDS报警,有经验的网管会注意到这个问题。

2、在进行ARP欺骗的时候,某些个人防火墙(如ISS的黑冰)会产生报警,即使仅仅收到一个ARP欺骗数据包也会产生报警信息。

3、由于修改了网上一些主机的ARP表,所以监听者要担负起数据包转发的任务。因此,一旦监听者离开,没有了转发者被监听主机与其它主机的通信会受到影响。这要等到涉及通信的双方自主进行ARP地址表更新之后才能解决这个问题。所以,监听者离开的时候,被监听主机以及与被监听主机通信的主机会感到网络出现了问题。
版权所有,未经许可,不得转载