ARP欺骗与中间人攻击
一、实验目的
- 掌握ARP欺骗攻击
- 掌握ARP欺骗攻击全过程
- 学会防范ARP欺骗
二、实验环境
- 系统环境:Windows环境,kail环境,XP环境
- 软件工具:packEth,
三、实验原理
- ARP缓存
- 在每台安装有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缓存表的长度,加快查询速度。
-
ARP欺骗定义
从前面的介绍可以看出,ARP的致命缺陷是:他不具备任何的认证机制,当有个人请求某个IP地址的MAC时,任何人都可以用MAC地址进行回复,并且这种响应也会被认为是合法的。
ARP并不只在发送了ARP请求后才接收ARP应答。当主机接收到ARP应答数据包的时候,就会对本机的ARP缓存进行更新,将应答中的IP和MAC地址存储在ARP缓存表中。此外,由于局域网中数据包不是根据IP地址,而是按照MAC地址进行传输的。所有对主机实施ARP欺骗就成为可能。 -
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发给网关的数据,并没有转发给网关。
- 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攻击防范:
-
双向绑定:
一般来说,在小规模网络中,比较推荐使用双向绑定,也就是在路由器和终端上都进行IP-MAC绑定的措施,它可以对ARP欺骗的两边,伪造网关 和截获数据,都具有约束的作用。这是从ARP欺骗原理上进行的防范措施,也是最普遍应用的办法。它对付最普通的ARP欺骗是有效的。 -
ARP防火墙:
在一些杀毒软件中加入了ARP防火墙的功能,它是通过在终端电脑上对网关进行绑定,保证不受网络中假网关的影响,从而保护自身数据不被窃取的措施。ARP防火墙使用范围很广,但也会有问题,如,它不能保证绑定的网关一定是正确的。如果一个网络中已经发生了ARP欺骗,有人在伪造网关,那么,ARP防火墙上来就会绑定这个错误的网关,这是具有极大风险的。 -
VLAN和交换机端口绑定:
通过划分VLAN和交换机端口绑定来防范ARP,也是常用的防范方法。做法是细致地划分VLAN,减小广播域的范围,使ARP在小范围内起作 用,而不至于发生大面积影响。同时,一些网管交换机具有MAC地址学习的功能,学习完成后,再关闭这个功能,就可以把对应的MAC和端口进行绑定,避免了病毒利用ARP攻击篡改自身地址。也就是说,把ARP攻击中被截获数据的风险解除了。