《浅谈网络协议之arp协议原理及应用》由会员分享,可在线阅读,更多相关《浅谈网络协议之arp协议原理及应用(6页珍藏版)》请在金锄头文库上搜索。
1、浅谈网络协议之浅谈网络协议之 ARP 协议原理及应用协议原理及应用- 关于关于 ARP 欺骗攻击技术简析和防范欺骗攻击技术简析和防范您是否遇到局域网内频繁性区域或整体掉线,重启计算机或网络设备后恢 复正常?您的网速是否时快时慢,极其不稳定,但单机进行光纤数据测试时一 切正常?您是否时常听到身边人的网上银行密码、游戏及 QQ 账号频繁丢失的 消息? 这些问题的出现有很大一部分要归功于 ARP 攻击,那么什么是 ARP 协议? ARP 是如何攻击的呢?又该怎样防御呢? 一一ARP 协议及其基本原理协议及其基本原理ARP( Address Resolution Protocol),中文名为地址解析协
2、议,它工作在数据 链路层,在本层和硬件接口联系,同时对上层提供服务。IP 数据包常通过以太网发送,以太网设备并不识别 32 位 IP 地址,它们是 以 48 位以太网地址传输以太网数据包。因此,必须把 IP 目的地址转换成以太 网目的地址。在以太网中,一个主机要和另一个主机进行直接通信,必须要知 道目标主机的 MAC 地址。但这个目标 MAC 地址是如何获得的呢?它就是通过 地址解析协议获得的。ARP 协议用于将网络中的 IP 地址解析为的硬件地址 (MAC 地址) ,以保证通信的顺利进行。 如图即为 ARP 报头结构:下面介绍一下 ARP 协议的工作原理。我们知道每台主机都会在自己的 ARP
3、 缓冲区 (ARP Cache)中建立一个存放有本局域网上的各主机和路由器的 IP 地址到硬件地址的映射表,这些都是主机目前知道的一些地址。 假设有三台主机: A: IP 地址 192.168.0.1 硬件地址 AA:AA:AA:AA:AA:AA B: IP 地址 192.168.0.2 硬件地址 BB:BB:BB:BB:BB:BB C: IP 地址 192.168.0.3 硬件地址 CC:CC:CC:CC:CC:CC 当主机 A 需要将一个数据包要发送到本局域网上的某个目的主机 B 时,会首先检查自己 ARP 列表中是否存在该主机 B 的 IP 地址,如果有就在 ARP 高 速缓存中查出其对
4、应的硬件地址,再把这个硬件地址写入 MAC 帧,然后通过 局域网把该 MAC 帧发往此硬件地址;如果查不到主机 B 的 IP 地址的项目,在 这种情况下主机 A 就向本地网段发起一个 ARP 请求的广播包,查询此目的主 机 B 对应的 MAC 地址。此 ARP 请求数据包里包括主机 A 的 IP 地址、硬件地 址、以及目的主机 B 的 IP 地址。 “我是 192.168.0.1,我的硬件地址是 “ AA:AA:AA:AA:AA:AA “.请问 IP 地址为 192.168.0.2 的 MAC 地址是什么? ”网络中所有的主机收到这个 ARP 请求后,会检查数据包中的目的 IP 是否和 自己的
5、 IP 地址一致。如果不相同就忽略此数据包;如果相同,该主机就给主机 A 发送一个 ARP 响应数据包,告诉对方自己是它需要查找的 MAC 地址“我是 192.168.0.2,硬件地址是 BB:BB:BB:BB:BB:BB” ,并把发送端的 MAC 地址和 IP 地址添加到自己的 ARP 列表中,如果 ARP 表中已经存在该 IP 的信息,则将 其覆盖。主机 A 收到这个 ARP 响应数据包后,将得到的目的主机 B 的 IP 地址 和 MAC 地址添加到自己的 ARP 列表中,并利用此信息开始数据的传输。如果 主机 A 一直没有收到 ARP 响应数据包,则表示 ARP 查询失败。 二二ARP
6、攻击攻击 ARP 攻击是指通过伪造 IP 地址和 MAC 地址实现 ARP 欺骗,能够在网络 中产生大量的 ARP 通信量使网络阻塞,攻击者只要持续不断的发出伪造的 ARP 响应包就能更改目标主机 ARP 缓存中的 IP-MAC 条目,造成网络中断或 中间人攻击。 它主要是存在于局域网网络中,局域网中若有一个人感染 ARP 木马,则感 染该 ARP 木马的系统将会试图通过“ARP 欺骗”手段截获所在网络内其它计算机 的通信信息,并因此造成网内其它计算机的通信故障。 其中“恶意窃听”病毒是“ARP 欺骗”系列病毒中影响和危害最为恶劣的。它 不会造成局域网的中断,仅仅会使网络产生较大的延时,但是中
7、毒主机会截取 局域网内所有的通讯数据,并向特定的外网用户发送所截获的数据,对局域网 用户的网络使用造成非常非常严重的影响,直接威胁着局域网用户自身的信息 安全。 那么是如何实现 ARP 欺骗的呢? 如上图所示,ARP 协议并不只在发送 了 ARP 请求才接收 ARP 应答。 当计算机接收到 ARP 应答数据包的时候,就会对本地的ARP 缓存进行更 新,将应答中的 IP 和 MAC 地址存储在 ARP 缓存中。 因此,在上例中如果主机 A 发出 ARP 请求找寻主机 C 的 IP 和 MAC 地址,而此时 主机 B 向主机 A 发送一个自己伪造的 ARP 应答,这个应答 中的数据为发送方 IP
8、地址是 C 的 IP 地址,MAC 地址是 DD-DD-DD-DD- DD-DD( C 的 MAC 地址本来应该是 33-33-33-33-33-33,这里被伪造了)。 当主机 A 接收到主机 B 伪造的 ARP 应答,就会更新本地的 ARP 缓存,将 本地的 IP-MAC 对应表更换为接收到的数据格式,由于这一切都是A 的系 统内核自动完成的, A 却不知道被伪造了 ,而且 A 不知道其实是从 B 发送 过来的。这样 A 这里只有 C 的 IP 地址和无效的 DD-DD-DD-DD-DD-DD MAC 地址。这就实现了 ARP 欺骗。这样主机 A 上的关于主机 C 的 MAC 地址已经错误了
9、,所以即使以后从 A计算机访问 C 计算机这个 1.1.1.3、24 这个地址也会被 ARP 协议错误的解析成MAC 地址为 DD-DD-DD-DD-DD-DD 的。下面介绍两种不同类型的 ARP 欺骗: (1)同一网段的)同一网段的 ARP 欺骗欺骗如图所示,三台主机 A: IP 地址 192.168.0.1 硬件地址 AA:AA:AA:AA:AA:AA B: IP 地址 192.168.0.2 硬件地址 BB:BB:BB:BB:BB:BB C: IP 地址 192.168.0.3 硬件地址 CC:CC:CC:CC:CC:CC 一个位于主机 B 的入侵者想非法进入主机 A,可是这台主机上安装
10、有防火 墙。通过收集资料知道这台主机 A 的防火墙只对主机 C 有信任关系(开放 23 端口(telnet))。而他必须要使用 telnet 来进入主机 A,这个时候他应该如何处 理呢? 我们这样考虑,入侵者必须让主机 A 相信主机 B 就是主机 C,如果主机 A 和主机 C 之间的信任关系是建立在 IP 地址之上的。如果单单把主机 B 的 IP 地 址改的和主机 C 的一样,那是不能工作的,至少不能可靠地工作。如果你告诉 以太网卡设备驱动程序, 自己 IP 是 192.168.0.3,那并不能达到目标。我们可 以先研究 C 这台机器,如果我们能让这台机器暂时当掉,在机器 C 当掉的同时, 将
11、机器 B 的 IP 地址改为 192.168.0.3,这样就可以成功的通过 23 端口 telnet 到 机器 A 上面,而成功的绕过防火墙的限制。 上面的这种想法在下面的情况下是没有作用的,如果主机 A 和主机 C 之间 的信任关系是建立在硬件地址的基础上。这个时候还需要用 ARP 欺骗的手段让 主机 A 把自己的 ARP 缓存中的关于 192.168.0.3 映射的硬件地址改为主机 B 的 硬件地址。 我们可以人为的制造一个 ARP 的应答,发送给想要欺骗的主机(如上文的例 子所示),可以指定 ARP 包中的源 IP、目标 IP、源 MAC 地址、目标 MAC 地址。这样你就可以通过虚假的
12、 ARP 响应包来修改主机 A 上的动态 ARP 缓存达 到欺骗的目的。 下面是具体的步骤: 1.首先研究 192.168.0.3 这台主机,发现这台主机的漏洞。 2.根据发现的漏洞使主机 C 当掉,暂时停止工作。 3.这段时间里,入侵者把自己的 IP 改成 192.168.0.3 4.他用工具发一个源 IP 地址为 192.168.0.3 源 MAC 地址为 BB:BB:BB:BB:BB:BB 的包给主机 A,要求主机 A 更新自己的 ARP 转换表。 5.主机更新了 ARP 表中关于主机 C 的 IPMAC 对应关系。 6.防火墙失效了,入侵的 IP 变成合法的 MAC 地址。 上面就是一
13、个 ARP 的欺骗过程,这是在同网段发生的情况,但是,如果当 B 和 C 处于不同网段的时候,上面的方法是不起作用的。 (2)不同网段的)不同网段的 ARP 欺骗欺骗如图所示 A、C 位于同一网段而主机 B 位于另一网段,三台机器的 IP 地址 和硬件地址如下: A: IP 地址 192.168.0.1 硬件地址 AA:AA:AA:AA:AA:AA B: IP 地址 192.168.1.2 硬件地址 BB:BB:BB:BB:BB:BB C: IP 地址 192.168.0.3 硬件地址 CC:CC:CC:CC:CC:CC 在现在的情况下,位于 192.168.1 网段的主机 B 如何冒充主机
14、C 欺骗主机 A 呢?显然用上面的办法的话,即使欺骗成功,主机 B 和主机 A 之间也无法建 立 telnet 会话,因为路由器不会把主机 A 发给主机 B 的包向外转发,路由器会 发地址在 192.168.0.这个网段之内的。 现在就涉及到另外一种欺骗方式 ICMP 重定向。把 ARP 欺骗和 ICMP 重 定向结合在一起就可以基本实现跨网段欺骗的目的。 什么是 ICMP 重定向呢? 在谢希仁编写的计算机网络(第五版)中是这样描述 ICMP 重定向的: ICMP 重定向报文是 ICMP 控制报文中的一种。路由器把报文发送给主机,让主 机知道下次应将数据报发送给另外的路由器。 在特定的情况下,
15、当路由器检测到一台机器使用非优化路由的时候,它会 向该主机发送一个 ICMP 重定向报文,请求主机改变路由。路由器也会把初始 数据报向它的目的地转发。 这样我们就可以利用 ICMP 重定向报文达到欺骗的目的。 下面是结合 ARP 欺骗和 ICMP 重定向进行攻击的步骤: 1.为了使自己发出的非法 IP 包能在网络上能够存活长久一点,开始修改 IP 包的生存时间 T 为下面的过程中可能带来的问题做准备。把 T 改成 255。2.下载一个可以自由制作各种包的工具。 3.然后和上面一样,寻找主机 C 的漏洞按照这个漏洞当掉主机 C。 4.在该网络的主机找不到原来的 192.168.0.3 后,将更新
16、自己的 ARP 对应 表。于是他发送一个原 IP 地址为 192.168.0.3 硬件地址为 BB:BB:BB:BB:BB:BB 的 ARP 响应包。 5.现在每台主机都知道了,一个新的 MAC 地址对应 192.168.0.3,一个 ARP 欺骗完成了,但是,每台主机都只会在局域网中找这个地址而根本就不会把发 送给 192.168.0.3 的 IP 包丢给路由。于是他还得构造一个 ICMP 的重定向广播。6.自己定制一个 ICMP 重定向包告诉网络中的主机:“到 192.168.0.3 的路 由最短路径不是局域网,而是路由,请主机重定向你们的路由路径,把所有到 192.168.0.3 的 IP 包丢给路由。“ 7.主机 A 接受这个合理的 ICMP 重定向,于是修改自己的路由路径,把对 192.168.0.3 的通讯都丢给路由器。 8.入侵者终于可以在路由外收到来自路由内的主机的 IP 包了,他可以开始 telnet 到主机的 23 口。 其实上面的想法只是一种理想话的情况,主机许可接收的 ICMP 重定向包 其实有很多的限制条