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