引言
当前局域网大部分属于以太网,其主要连接方式主要是通过交换机进行连接。交换机在外型上类似于集线器,但在内部采用了电路交换的原理,将一个端口的输入交换到另一指定的端口。交换式以太网弥补了共享式以太网(用集线器连接的网络)的缺陷,但也从一定程度上增加了网络监听的难度。交换机在工作时维护着一张ARP的数据库表,在这个库中记录着交换机每个端口绑定的MAC地址,当有数据包发送到交换机上时,交换机会将数据包的目的MAC地址与自己维护的数据库内的端口对照,然后将数据包发送到相应的端口上。交换机与集线器最大的不同是通信数据包不再复制到其他所有端口,而是精确地发往目标机器所在的那个端口,所以,其它机器就无法监听这种目的性较强的通信,当然也就无法实现数据包的抓取了。因此我们需要在交换式以太网中寻求一种简单方便的监控部署软件,以实现对现在广泛存在的交换式以太网进行有效的监听。
1 ARP协议及欺骗技术
1.1 ARP协议
IP数据包常通过以太网发送,以太网设备并不识别32位IP地址,它们是以48位以太网地址传输以太网数据包的。因此,IP 驱动器必须把IP目的地址转换成以太网目的地址。在这两种地址之间存在着某种静态的或算法的映射,常常需要查看一张表。ARP地址解析协议 (Address Resolution Protocol)就是负责把网络层的IP地址转变成数据链路层的MAC地址, 建立IP地址和MAC地址之间的一一映射。ARP协议的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。
1.2 ARP欺骗技术
ARP 协议虽然是一个高效的数据链路层协议,但是作为一个局域网协议,它是建立在各主机之间相互信任的基础上的,因此也存在一些安全问题。根据ARP 协议存在的这些安全问题,可以使用以下几种手段来进行ARP欺骗:
(1) 攻击者也就可以在接收到该ARP请求包之后进行应答,进行假冒。
(2) 由于被假冒的机器所发送的ARP应答包有可能比攻击者的应答包晚到达,为了确保被攻击者机器上的缓存中绝大部分时间存放的是攻击者的MAC地址,可以在收到ARP请求广播后稍微延迟一段时间再发送一遍ARP应答。
(3) 由于各种操作系统对于ARP缓存处理实现的不同,一些操作系统(例如Linux)会用向缓存地址发非广播的ARP请求来要求更新缓存。在交换网络环境下,别的机器是不能捕获到这种缓存更新的,这就需要尽量阻止主机发送更新缓存消息。
ARP欺骗技术可以实现全交换环境下的数据监听。因此,我们可以利用该技术对交换式以太网进行监控。
2 采用ARP欺骗技术捕获交换式以太网数据
通过前面的叙述,我们知道,交换式以太网可以利用ARP欺骗技术进行监控。下面说明如何采用ARP欺骗技术捕获交换式以太网数据。
2.1 ARP协议实现
在以太网上解析IP地址时,ARP请求和应答分组的格式如图2所示
以太网报头中的前两个字段是以太网的目的地址和源地址。目的地址为全1的特殊地址是广播地址。同一局域网上的所有以太网接口都要接收广播数据帧。接着是以太网帧类型,2字节长,表示后面数据的类型。对于ARP请求或应答来说,该字段的值为0x0806。硬件类型字段表示硬件地址的类型。值为1即表示以太网地址。协议类型字段表示要映射的协议地址类型。值为0x0800即表示IP地址。硬件地址长度和协议地址长度分别指出硬件地址和协议地址的长度,以字节为单位。对于以太网上IP地址的ARP请求或应答来说,它们的值分别为6和4。操作字段指出操作类型,可以为ARP请求(值为1)、ARP应答(值为2)。其余的四个字段是发送端的硬件地址(以太网地址)、发送端的协议地址(IP地址)、目的端的硬件地址和目的端的协议地址。
对于ARP请求来说,除目的端硬件地址外的所有其它的字段都有填充值。当系统收到一份目的端为本机的ARP请求报文后,它就把硬件地址填进去,然后用两个目的端地址分别替换两个发送端地址,并把操作字段置为2,最后把它发送回去。