交换式以太网中的ARP与DNS欺骗技术分析

本文分析了交换式以太网中ARP欺骗和DNS欺骗的原理,探讨了如何利用ARP欺骗成为“中间人”来截获和伪造DNS报文,从而进行DNS欺骗。通过WinPcap在Windows环境下实现这一过程,讨论了欺骗攻击的实施和对Web欺骗的影响,强调了防范ARP欺骗的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

http://www.51kaifa.com/jswz/read.php?ID=2983

摘要:利用TCP/IP协议缺陷进行欺骗攻击是目前网络中常出现的攻击方法,通过与网络监听的结合,攻击者能在不被察觉的情况下实现对被攻击者通信数据的截获并篡改,给当今网络通信安全带来了严重威胁。本文分析了在交换式以太网中利用ARP欺骗突破交换网络对数据监听的限制,成为“中间人”截获DNS报文,进而伪造DNS报文进行DNS欺骗的技术,并给出基于WinPcap的实现。
关键词:交换式以太网;ARP 欺骗;中间人攻击;DNS 欺骗;网络安全

1. 引言
    以太网按其信息交换的方式可分为共享式以太网和交换式以太网。共享式以太网通过集线器进行网络互联,集线器将每个端口收到的数据帧向所有其它端口以广播形式发送,因此任意主机都可以通过将网卡设置为混杂模式来监听网内的所有通信;而交换式以太网是通过交换机将网内主机相连,交换机将对每个端口收到数据帧进行源和目的MAC地址检测,然后与内部动态的MAC端口映射表进行比较,若数据帧的源MAC地址不在映射表中,则将该MAC地址和对应接收端口加入映射表中,同时根据映射表中与目的MAC地址对应的端口号,交换机把数据帧仅从该端口发送出去。因此交换机的每个端口可平行、安全、同时地互相传输信息,其它端口的主机即使将网卡设置为混杂模式,也只能监听到连结在同一端口上主机间的数据传输。
  针对交换式以太网的特点,要使本不应到达本地的数据帧到达本地,实现对网络中通信的监听和进一步的DNS欺骗攻击,目前有两种方法:MAC洪泛和ARP欺骗。MAC洪泛是指向交换机发送大量含有虚假MAC地址和IP地址的数据帧,溢出交换机中存储MAC端口映射表的有限空间,致使交换机就进入了所谓的“打开失效模式(Failopen Mode)”,即进入和集线器相同的广播转发模式;ARP欺骗则是通过欺骗被攻击者将攻击者的MAC地址作为网关MAC地址或使被攻击者认为网关的MAC地址是广播地址FF-FF-FF-FF-FF-FF。MAC洪泛容易造成网络不稳定,且攻击者需要处理接收到的网内大量数据包,所以ARP欺骗技术较为常用。因此,本文将介绍以ARP欺骗突破交换式以太网对数据监听的限制,成为“中间人(man-in-middle)”截获DNS报文,进而伪造DNS报文进行DNS欺骗的技术。

2. 欺骗原理
2.1 ARP 欺骗

    在TCP/IP网络环境下,一个IP数据包到达目的地所经过的网络路径是由路由器根据数据包的目的IP地址查找路由表决定的,但IP地址只是主机在网络层中的地址,要在实际的物理链路上传送数据包,还需要将 IP数据包封装到MAC帧后才能发送到网络中。同一链路上的哪台主机接收这个MAC帧是依据该MAC帧中的目的MAC地址来识别的,即除了同一链路上将网卡置为混杂模式的主机外,只有当某台主机的MAC地址和链路中传输的MAC帧的目的MAC地址相同时,该主机才会接收这个MAC帧并拆封为IP数据包交给上层模块处理。因此,每一台主机在发送链路层数据帧前都需要知道同一链路上接收方的MAC地址,地址解析协议ARP正是用来进行IP地址到MAC地址的转换的。同时为了避免不必要的ARP报文查询,每台主机的操作系统都维护着一个ARP高速缓存(ARP Cache),记录着同一链路上其它主机的IP地址到MAC地址的映射关系。ARP高速缓存通常是动态的(该缓存可以手工添加静态条目),由系统在一定的时间间隔后进行刷新。
    ARP协议虽然是一个高效的数据链路层协议,但作为一个局域网协议,它是建立在各主机之间相互信任的基础上的,所以ARP协议存在以下缺陷:ARP高速缓存根据所接收到的ARP协议包随时进行动态更新;ARP 协议没有连接的概念,任意主机即使在没有ARP请求的时候也可以做出应答;ARP协议没有认证机制,只要接收到的协议包是有效的,主机就无条件的根据协议包的内容刷新本机ARP 缓存,并不检查该协议包的合法性。因此攻击者可以随时发送虚假ARP包更新被攻击主机上的ARP缓存,进行地址欺骗或拒绝服务攻击。


    针对交换机根据目的MAC地址来决定数据包转发端口的特点,ARP欺骗的实现如图1所示:假设主机C 为实施ARP欺骗的攻击者,其目的是截获主机B和主机A间的通信数据,且主机C 在实施ARP 欺骗前已经预先知道A 和B的IP 地址。这时C 先发送ARP 包获得主机B 的MAC 地址,然后向B发送ARP Reply 数据包,其中源IP地址为A的IP地址,但是源MAC地址却是主机C的MAC地址。主机B收到该ARP Reply后,将根据新的IP与MAC 映射对更新ARP 缓存。这以后当B给A发送数据包时,目标MAC地址将使用C的MAC 地址,因此交换机根据C的MAC地址就将数据包转发到攻击者C所在的端口。同理攻击者C发送ARP Reply使主机A确信主机B的MAC地址为C的MAC地址。在间歇的发送虚假ARP Reply的同时,攻击者C打开本地主机的路由功能,将被劫持的数据包转发到正确的目地主机,这时攻击者对主机A 和B 来说是完全透明的,通信不会出现异常,但实际上数据包却被C 非法截获,攻击者C成为了“中间人”。
2.2 DNS欺骗
    主机域名与IP 地址的映射关系是由域名系统DNS来实现的,现在Internet上主要使用Bind 域名服务器程序。DNS 协议具有以下特点:
    (1) DNS 报文只使用一个序列号来进行有效性鉴别,序列号由客户程序设置并由服务器返回结果,客户程序通过它来确定响应与查询是否匹配,这就引入了序列号攻击的危险;
    (2) 在DNS 应答报文中可以附加信息,该信息可以和所请求的信息没有直接关系,这样,攻击者就可以在应答中随意添加某些信息,指示某域的权威域名服务器的域名及IP,导致在被影响的域名服务器上查询该域的请求都会被转向攻击者所指定的域名服务器上去,从而对网络的完整性构成威胁;
    (3) DNS的高速缓存机制,当一个域名服务器收到有关域名和IP的映射信息时,它会将该信息存放在高速缓存中,当再次遇到对此域名的查询请求时就直接使用缓存中的结果而无需重新查询。
针对DNS协议存在的安全缺陷,目前可采用DNS 欺骗技术有:
    (1)内应攻击。攻击者在非法或合法地控制一台DNS 服务器后,可以直接操作域名数据库,修改指定域名所对应的IP 为自己所控制的主机IP。于是,当客户发出对指定域名的查询请求后,将得到伪造的IP 地址。
    (2) 序列号攻击。DNS协议格式中定义了序列号ID是用来匹配请求数据包和响应数据报,客户端首先以特定的ID向 DNS服务器发送域名查询数据包,在DNS服务器查询之后以相同的ID号给客户端发送域名响应数据包。这时客户端会将收到的DNS响应数据包的ID和自己发送的查询数据包ID相比较,如果匹配则表明接收到的正是自己等待的数据报,如果不匹配则丢弃之。利用序列号进行DNS欺骗的关键是伪装DNS服务器向客户端发送DNS 响应数据包,并在DNS服务器发送的真实DNS响应数据报之前到达客户端,从而使客户端DNS缓存中查询域名所对应的IP就是攻击者伪造的IP,因此将客户端带到攻击者所希望的网站。其欺骗的前提条件是攻击者发送的DNS响应数据包ID必须匹配客户的DNS查询数据包ID。
在实际欺骗攻击中,利用序列号进行DNS欺骗可分两种情况:第一,当攻击者与DNS服务器、本地主机与客户端主机均不在同一个局域网内时,攻击者可以向客户端主机随机发送大量DNS响应数据报,其中序列号是任意给定的,因此序列号和客户端查询报文序列号匹配的概率很低; 第二,当攻击者至少与DNS服务器或客户端主机中的某一个处在同一个局域网内时,对于共享式以太网攻击者可以通过嗅探得到DNS查询报文的序列号, 对于交换式以太网攻击者就需要通过ARP欺骗获取DNS查询报文序列号。


3.具体实现 
    为了能在Windows下发送原始数据包,本文利用了WinPcap来开发实验程序。WinPcap是一个Win32平台下进行数据包捕获和网络分析的开源程序库,它具有内核级的包过滤器,提供了捕获原始数据包,按照一定规则过滤数据包,以及发送原始数据包功能。
3.1 实验设计
    实验程序的假设应用环境是攻击者和被攻击客户端(也可以是域名服务器)处于同一个交换式以太网中。首先,打开本地攻击者主机的路由功能,设置Windows2000 Server注册表键值HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/Tcpip/Parameters/IPEnableRouter = 0x1,这样在实施欺骗攻击时被攻击客户端仍能访问互联网,达到隐蔽攻击者的目的。然后根据网关和被攻击客户端的IP发送ARP请求得到两者的MAC地址,为攻击做好准备。
    要突破交换式以太网数据监听的限制,成为“中间人”截获DNS报文,实验程序中创建了两个线程。一个线程进行实时的ARP欺骗,其具体负责间歇地向被攻击客户端和网关发送伪造的ARP响应报文,更新被攻击客户端和网关的ARP缓存,让攻击者成为双方通信的中继节点,即作为“中间人”插入被攻击客户端和网关的通信路径中,从而截获被攻击客户端和网关间的所有数据通信,为进行DNS欺骗奠定基础。
    另一个线程监听网关和被攻击客户端之间的数据包,若发现其中有客户发送的DNS域名服务查询数据包(目的端口为53),则提取客户DNS查询数据包中的ID序列号,伪造一个DNS响应报文发送给查询域名的客户,该响应报文中就带有攻击者希望客户去访问的IP地址。这样客户将先收到伪造的DNS响应报文并访问错误的或者被攻击者控制的网站。整个攻击的过程如图2所示。
3.2对进一步Web欺骗的分析
    通过DNS欺骗,客户将访问到错误的网站,若攻击者在让客户访问的虚假网站上克隆了客户欲访问的真实网站,则对于普通计算机用户来说是无法分辨网站的真实性的,因此攻击者可诱骗客户输入如账号和密码等信息然后再将客户端重定向到真实网站,而客户却对自己遭到欺骗攻击的事实毫无察觉。
    此外,对于Web 服务等有链接服务,客户每次访问获得的数据中常常包含许多链接,而客户端用户也常常根据客户端界面的引导而对这些链接指向的地址进行访问。由于攻击者作为“中间人”转发客户端和Internet间通信的数据流,所以攻击者可以不进行DNS欺骗,直接对服务器返回内容中的链接进行修改,将它们指向攻击者控制的机器上去。当然,攻击者还要保留原来链接的足够信息,以便在收到新的访问请求时攻击者能够代替客户去访问正确的地址,回送看似正确的内容。当然,细心的用户可以通过查看Web 浏览器中的状态行、地址行或网页源代码等发现自己已经进入假冒的页面,这时攻击者就需要进行更细致的欺骗,文献[4]中详细介绍了这些技术。

4.结论
通过本文的分析得知,在交换式以太网中要进行数据监听和DNS欺骗等,都需要先进行ARP欺骗,因此在以太网中防御ARP欺骗显得尤为重要。目前,针对ARP欺骗的防御可以采用在目标主机的ARP缓存中设置静态地址映射记录,但其缺点是若改变了网内主机的IP,就需要重新设置ARP缓存,所以运用不广;也可以对网络中的ARP报文进行被动检测或主动发送ARP查询报文,当发现一个IP地址对应两个MAC地址时,就存在欺骗攻击的可能性。总的来说,由于ARP设计存在缺陷,要根本解决ARP欺骗问题比较困难,作为在IPv6网络中替代ARP协议的邻居发现协议ND同样也存在被欺骗攻击的可能,目前IETF正在开发的安全邻居发现协议SEND可能在下一代网络中解决此问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值