「作者主页」:士别三日wyx
「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者
「推荐专栏」:更多干货,请关注专栏《网络安全自学教程》
ARP欺骗原理
ARP是无状态协议,不需要请求就能响应。比如我伪造一个ARP响应,你收到以后就会把我响应的映射关系保存到你的ARP缓存表里。如果我把你的网关映射到我的MAC地址,你上网的时候找网关就会找到我的电脑,而我的电脑没有提供WEB服务,你就会断网。
如果不了解ARP协议,请先看我的另一篇文章: ARP协议详解
扩展:为什么ARP协议会有这种隐患?因为ARP是早期的协议,那时候的互联网采取信任模式,追求功能、速度,所以就没考虑安全因素。
1、arpspoof实现ARP欺骗
攻方:Kali + arpspoof
冤大头:Win7
Kali默认不带arpspoof这个工具,输入arpspoof
,回车下载安装。
Kali默认使用国外源,很容易下载失败,可以配置成国内的源
1)root权限,vim /etc/apt/sources.list
2)注释掉官方源,最下方添加中科大的源
shell
deb https://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib
deb-src https://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib
3)wq:
保存退出,apt update
更新索引。
1.1、主机探测
用 Kali 自带的 Nmap 扫描当前网段的存活主机
比如我的IP是 192.168.126.131,那我就扫 192.168.126.0/24 这个网段。
从扫描结果判断出,192.168.126.130 是这次实验的冤大头,192.168.126.2 是它的网关。
到Win7上验证下
1.2、欺骗,断网
1)Win7长Ping
百度,确认网络正常。
2)Kali 执行 arpspoof -i eth0 -t 192.168.126.130 192.168.126.2
,同时,Win7请求超时,开始断网。
这里的 -i
指定网卡,-t
指定 冤大头IP,冤大头网关
3)Kali停止命令,过一会Win7恢复上网。
2、ARP欺骗原理分析
ARP欺骗通过伪造ARP响应包修改终端的ARP缓存表。
1)arp -a
先看冤大头的ARP缓存表,192.168.126.2是网关,对应的MAC是 00-50-56-e6-be-5a,记住这个MAC。
2)接下来,用Kali执行ARP欺骗,再看冤大头的网关,MAC地址已经变成了 00-ec-29-6b-8c-e2,这样就会因为找不到网关而断网。
以ARP欺骗为基础,可以实现中间人攻击、数据劫持、DNS欺骗、DDos等攻击。
3、ARP欺骗防御
ARP欺骗的防御主要有四种
- 用 arp -s 手动添加静态ARP缓存,防止ARP欺骗。
- IP/MAC绑定,在路由器上绑定终端的IP/MAC;或者在终端上绑定网关的IP/MAC。
- 使用三层交换设备,通过路由、VLAN限制ARP欺骗的范围。
- 安全产品,比如防火墙拦截ARP欺骗的包。
3.1、静态ARP
ARP缓存表的映射关系有静态和动态两种类型:
- 动态ARP:由ARP协议通过ARP报文自动更新,可以被静态ARP覆盖,接口关闭或超过生命周期会被删除。
- 静态ARP:手动配置固定的映射关系,因为不会被ARP报文更新,所以防止ARP欺骗。
静态ARP使用 arp -s IP地址 MAC地址
添加,但添加网关的静态映射时,会提示拒绝访问,管理员身份打开也提示拒绝访问。
这跟账号权限无关,可以使用下面这种方式:
netsh interface ipv4 show in
找到"本地连接"对应的 "Idx",我这里是11。
netsh interface ipv4 add neighbors 11 "网关IP" "Mac地址"
,添加静态ARP。
再次 arp -a
,可以看到网关的映射类型变成静态了。
Kali再次执行ARP欺骗,已经无法更改ARP缓存表了,防御成功。
取消绑定可以用 netsh interface ipv4 delete neighbors 11 "网关IP" "Mac地址"
或者arp -d
清空缓存表,重新加载网关的映射关系。