1.定义
ARP欺骗(英语:ARP spoofing),又称ARP毒化(ARP poisoning,网络上多译为ARP病毒)或ARP攻击,是针对以太网地址解析协议(ARP)的一种攻击技术,通过欺骗局域网内访问者PC的网关MAC地址,使访问者PC错以为攻击者更改后的MAC地址是网关的MAC,导致网络不通。此种攻击可让攻击者获取局域网上的数据包甚至可篡改数据包,且可让网络上特定计算机或所有计算机无法正常连线
2.原理
1.1网关
网关并不是指具体的设备,路由器,计算机终端等各种各样的设备都可以是⽹关,⽹关就是数据必须经过的关⼝。正常情况下路由器是⽹关,但是在ARP欺骗的时候,攻击者终端就变成了⽹关,受害者的数据都流向攻击者。
1.2 ARP协议
地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议。主机发送信息时将包含目标IP地址的ARP请求广播到局域网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。地址解析协议是建立在网络中各个主机互相信任的基础上的,局域网络上的主机可以自主发送ARP应答消息,其他主机收到应答报文时不会检测该报文的真实性就会将其记入本机ARP缓存;由此攻击者就可以向某一主机发送伪ARP应答报文,使其发送的信息无法到达预期的主机或到达错误的主机,这就构成了一个ARP欺骗。ARP命令可用于查询本机ARP缓存中IP地址和MAC地址的对应关系、添加或删除静态对应关系等。相关协议有RARP、代理ARP。NDP用于在IPv6中代替地址解析协议。
1.3 ARP欺骗原理
通过欺骗局域网内访问者PC的网关MAC地址,使访问者PC错以为攻击者更改后的MAC地址是网关的MAC,导致网络不通。此种攻击可让攻击者获取局域网上的数据包甚至可篡改数据包
一般情况下,ARP欺骗并不是使网络无法正常通信,而是通过冒充网关或其他主机使得到达网关或主机的流量通过攻击进行转发。通过转发流量可以对流量进行控制和查看,从而控制流量或得到机密信息。
下面这段话很形象:
假设主机
A 192.168.1.2
B 192.168.1.3
C 192.168.1.4
网关 G 192.168.1.1
在同一局域网,主机A和B通过网关G相互通信,就好比A和B两个人写信,由邮递员G送信,C永远都不会知道A和B之间说了些什么话。
双向欺骗
C假扮邮递员G,首先要告诉A说:"我就是邮递员" (C主机向A发送构造好的返回包,源IP为G 192.168.1.1,源MAC为C自己的MAC地址),愚蠢的A很轻易的相信了,直接把"C是邮递员"这个信息记在了脑子里;
C再假扮A,告诉邮递员:"我就是A" (C向网关G发送构造好的返回包,源IP为A 192.168.1.2,源MAC地址为自己的MAC地址),智商捉急的邮递员想都没想就相信了,以后就把B的来信送给了C,C当然就可以知道A和B之间聊了些什么
单向欺骗
ARP单向欺骗就更好理解了,C只向A发送一个返回包,告诉A:G 192.168.1.1 的MAC地址为 5c-63-bf-79-1d-fa(一个错误的mac地址),A把这个信息记录在了缓存表中,而G的缓存表不变,也就是说,A把数据包给了C,而G的包还是给A,这样就是ARP单向欺骗了。
3.实验
3.1参数
-a # 主机 :显示 arp 缓冲区的所有条目;
-H # 地址类型 :指定 arp 指令使用的地址类型;
-d # 主机 :从 arp 缓冲区中删除指定主机的 arp 条目;
-D # 使用指定接口的硬件地址;
-e # 以 Linux 的显示风格显示 arp 缓冲区中的条目;
-i # 接口 :指定要操作 arp 缓冲区的网络接口;
-s # 主机 MAC 地址 :设置指定的主机的 IP 地址与 MAC 地址的静态映射;
-n # 以数字方式显示 arp 缓冲区中的条目;
-v # 显示详细的 arp 缓冲区条目,包括缓冲区条目的统计信息;
-f # 文件 :设置主机的 IP 地址与 MAC 地址的静态映射。
3.2 实验环境
kali
win7
3.3 实验过程
1.在win7的cmd中用ipconfig查看网关ip
使用arp -a 查看网关mac
2.为了使被欺骗的主机能够正常访问网站需要开启路由转发功能
echo 1 > /proc/sys/net/ipv4/ip_forward
3.在kali中使用arpspoof进行ARP欺骗
arpspoof的使用
语法
arpspoof [-i interface] [-c own|host|both] [-t target] [-r] host
参数
-i interface 指定要使用的接口。
-c own|host|both 指定范围own|host|both(自己|主机|两者)
-t target 指定一台特定主机进行ARP(如果未指定,则为LAN上的所有主机)
-r 两个主机(主机和目标)以捕获两个方向的流量。(仅对-t有效)
host 指定您希望抓取数据包的host(通常是本地网关)
arpspoof -i eth0 -t 192.168.75.129 192.168.75.2
表示对目标机,伪装成其网关
4.在win7上查看arp -a 查看可以发现,网关61.2的mac地址与61.130的mac地址一样。证明欺骗成功
4.防御
1、使用静态ARP缓存
2、使用三层交换设备
3、IP 与MAC地址绑定
4、ARP防御工具