写点什么

ARP 欺骗与防范

作者:喀拉峻
  • 2021 年 11 月 17 日
  • 本文字数:2764 字

    阅读完需:约 9 分钟

一、实验目的

  1. 掌握 ARP 欺骗攻击

  2. 掌握 ARP 欺骗攻击全过程

  3. 学会防范 ARP 欺骗

二、实验环境

  1. 系统环境:Windows 环境,kail 环境,XP 环境

  2. 软件工具:packEth

三、实验原理

ARP 缓存

1.在每台安装有 TCP/IP 协议的电脑里都有一个 ARP 缓存表,表里的 IP 地址与 MAC 地址是一一对应的,如下图所示是 window7 主机的 ARP 缓存表:



在上图所示的 ARP 缓存表中,IP 地址 192.168.70.129 映射的 MAC 地址为 00-50-56-2b-68-41,下面我们以主体 X(192.168.70.129)向主机 Y(192.168.70.134)发送数据为例,说明 ARP 工作过程。

当主机 X 发送数据时,它会在自己的 ARP 缓存表中寻找是否有主机 Y 的 IP 地址。如果找到了,也就知道了主机 Y 的 MAC 地址,直接把目标 MAC 地址写入数据包里面发送就可以了;如果在 ARP 缓存表中没有找到主机 Y 的 IP 地址,主机 X 就会在网络上发送一个广播,目标 MAC 地址是“FF-FF-FF-FF-FF-FF”,这个表示向同一网段内的所有主机发出这样的询问:192.168.70.129 的 MAC 地址是什么?网络上其他主机并不响应 ARP 询问,只有主机 Y 接收到这个数据包时,才会向主机 X 做出这样的回应:192.168.70.129 的 MAC 地址是 00-50-56-2b-68-41。这样,主机 X 就知道了主机 Y 的 MAC 地址,他就可以向主机 Y 发送信息了,同时它还更新了自己的 ARP 缓存表,下次再向主机 Y 发送信息时,直接从 ARP 缓存表里查找就可以了。ARP 缓存表采用了老化机制,在一段时间内如果表中的某一行没有使用就会被删除,这样可以大大减少 ARP 缓存表的长度,加快查询速度。

2.ARP 欺骗定义

从前面的介绍可以看出,ARP 的致命缺陷是:他不具备任何的认证机制,当有个人请求某个 IP 地址的 MAC 时,任何人都可以用 MAC 地址进行回复,并且这种响应也会被认为是合法的。ARP 并不只在发送了 ARP 请求后才接收 ARP 应答。当主机接收到 ARP 应答数据包的时候,就会对本机的 ARP 缓存进行更新,将应答中的 IP 和 MAC 地址存储在 ARP 缓存表中。此外,由于局域网中数据包不是根据 IP 地址,而是按照 MAC 地址进行传输的。所有对主机实施 ARP 欺骗就成为可能。

3.ARP 常用命令:

arp -a

用于查看缓存表中的所有项目

arp -a ip

只显示包含指定 IP 的缓存表项目

arp -s ip mac

向 ARP 缓存表中添加静态目录,该项目在计算机启动过程中一直有效

arp -d ip

删除 ARP 缓存表中静态项目

四、实验步骤

下面 PC2 要对 PC1 进行 ARP 欺骗攻击,目标是更改 PC1 缓存表中网关的 MAC 地址更新为 aa:aa:aa:aa:aa:aa 实施欺骗,导致 PC1 无法正常上网

**更新前:**PC1 的缓存表如下图所示网关 IP:192.168.70.2 对应的 MAC 地址是:00-50-56-e5-d2-ff



此时 PC1 是可以正常上网的如下图所示:



打开 Windows7 将 packEth 压缩包解压成文件夹后,找到 packEth.exe 文件双击打开



打开 packEth.exe 文件,选择第二个网卡,选择 ARP packet 模式



发送方 IP 和 MAC 填写网关的真实 IP 地址和此处修改 MAC 地址为 aa:aa:aa:aa:aa:aa 以达到欺骗效果,选择 Arp packet 功能以及 ARP reply 应答包,MAC Header 处填写目标真实 MAC 地址(此处为 PC1 的 MAC 地址),源 MAC 地址填写修改的 MAC 地址(此处为 aa:aa:aa:aa:aa:aa)设置好后点击 Send 开始发包



**更新后:**此时我们返回到 PC1 里使用命令 arp -a 查看网关的 MAC 地址成功被我们修改成了 aa:aa:aa:aa:aa:aa



此时我们再次验证 PC1 是否能正常上网,发现已经无法正常上网了,如下图所示:



PC2 向 PC1 发送一个自己伪造的 ARP 应答包,而这个应答数据中发送方 IP 地址是网关的 192.168.70.2 映射的 MAC 更新为 aa:aa:aa:aa:aa:aa(网关的 MAC 地址本来应该是 00-50-56-e5-d2-ff,此时已经被我们伪造了)。当 PC1 收到 PC2 伪造的 ARP 应答,就会更新本地的 ARP 缓存表(PC1 不知道 MAC 已经被伪造了),而且 PC1 不知道这个 ARP 应答包是从 PC2 发送过来的。这样 PC1 发送给网关的数据包都变成了发给 PC2 了。PC1 对所发生的变化一点儿都没有意识到,但是接下来的事情就让 PC1 产生了怀疑,因为它无法正常上网了,这是因为 PC2 只是接收 PC1 发给网关的数据,并没有转发给网关。

2.PC2 做“maninthemiddle”(中间人),进行 ARP 重定向。打开自己的 IP 转发功能,将 PC1 发送过来的数据包转发给网关,就好比一个路由器一样,而网关接收到数据包完全认为是 PC1 发送过来的。不过,网关发送的数据包又直接传递给 PC1,倘若再次进行对网关的 ARP 欺骗,那么 PC2 就完全成为 PC1 和网关的中间桥梁,对于 PC1 与网关的通讯就可以了如指掌了(如果你被人 ARP 监控了,想想是不是很可怕)



启动 kali 虚拟机,打开终端,输入命令:ettercap -G 如图所示:



在进行中间人攻击之前首先需要扫描当前局域网中存在的活动主机,确认攻击目标机器,点击 Unified sniffing 开启嗅探,如下图所示:



选择当前网卡 eth0,点击 OK 进入嗅探,如下图所示:



点击菜单中的 Hosts,选中 Scan for hosts 扫描和本机(kali)同网关所有的主机,如下图所示:



点击菜单 Hosts,选中 Host list 列出同网关所有互动的主机,扫描结果如下图所示:192.168.70.133 为 Windows7 主机的 IP 地址,192.169.70.2 为网关 IP 地址



接下来选择攻击目标,右键 Windows 目标 IP 点击 Add to Target 1,选择第二个攻击目标 IP(网关),右键网关目标 IP 点击 Add to Target 2,如下图所示:




然后确定攻击方式,此处点击菜单 Mitm,选中 ARP posoning 采用 ARP 欺骗的攻击方式,如下图所示:



勾选 Sniff remote connections,点击确认按钮,如下图所示:



点击菜单 start,选中 Start sniffing,开始监听



在 Windows7 虚拟机中,打开 cmd 命令控制窗口,输入 arp -a 查看 arp 缓存表,结果发现网关(192.168.70.2)的 MAC 地址变成了和 kali 主机的 MAC 地址相同,如下图所示:



到此为止我们开始验证 ARP 中间人欺骗是否成功了返回到 Windows7 虚拟机,打开浏览器访问一个登录界面,输入登录用户名和密码,点击确认登陆,如下图所示:



返回到 kali 主机我们已成功获取到 Windows7 主机访问某网站已经登录的用户名和密码,如下图所示:


五、ARP 攻击防范:

1.双向绑定:一般来说,在小规模网络中,比较推荐使用双向绑定,也就是在路由器和终端上都进行 IP-MAC 绑定的措施,它可以对 ARP 欺骗的两边,伪造网关 和截获数据,都具有约束的作用。这是从 ARP 欺骗原理上进行的防范措施,也是最普遍应用的办法。它对付最普通的 ARP 欺骗是有效的。

2.ARP 防火墙:在一些杀毒软件中加入了 ARP 防火墙的功能,它是通过在终端电脑上对网关进行绑定,保证不受网络中假网关的影响,从而保护自身数据不被窃取的措施。ARP 防火墙使用范围很广,但也会有问题,如,它不能保证绑定的网关一定是正确的。如果一个网络中已经发生了 ARP 欺骗,有人在伪造网关,那么,ARP 防火墙上来就会绑定这个错误的网关,这是具有极大风险的。

3.VLAN 和交换机端口绑定:通过划分 VLAN 和交换机端口绑定来防范 ARP,也是常用的防范方法。做法是细致地划分 VLAN,减小广播域的范围,使 ARP 在小范围内起作 用,而不至于发生大面积影响。同时,一些网管交换机具有 MAC 地址学习的功能,学习完成后,再关闭这个功能,就可以把对应的 MAC 和端口进行绑定,避免了病毒利用 ARP 攻击篡改自身地址。也就是说,把 ARP 攻击中被截获数据的风险解除了。

用户头像

喀拉峻

关注

左手Java右手Python,中间纹个C++ 2021.06.26 加入

还未添加个人简介

评论

发布
暂无评论
ARP欺骗与防范