arp欺骗原理

主机通讯的简单描述

arp欺骗防护_第1张图片
如上图,PC1与PC2在同一个网段,PC2要与PC1通讯,由于以太网的通讯机制,PC2需要先知道PC1的mac地址,通过mac地址与PC1通讯。PC2会先通过自己的arp表查找192.168.20.11对应的mac,如下:
PC1的arp表:
arp欺骗防护
PC2的arp表:
arp欺骗防护_第2张图片
可以看到PC2没有192.168.20.11的记录,这时PC2通过arp广播向全网询问谁有ip 192.168.20.11,PC1收到这个广播后发现是要请求192.168.20.11的mac,这个ip正是自己的ip,向PC2回应一个包告诉PC2 192.168.20.11的mac,由于PC2发送的arp广播中已经携带了PC2的mac,PC1这时会将PC2的arp信息记录在自己的arp表中,如下是在PC2中pingPC1后的arp表:
PC1的arp表:
arp欺骗防护
PC2的arp表:
arp欺骗防护_第3张图片
此时PC1和PC2就可以通讯了。

arp欺骗是如何做到的

arp这个协议算个脆弱的协议了,只要PC2能收到arp应答包就会更新自己的arp表,PC2是没法验证这个arp应答包是否真的来自PC1。此时如果PC3不停的发送arp应答包给PC2,告诉PC2我就是192.168.20.11,PC2就会不停的更新自己的arp表,拥有一个错误的arp记录。

可以在PC3上使用arpspoof命令不停的向PC2发送arp应答包。

arpspoof -i eth1 -t 192.168.20.12 192.168.20.11

此时查看PC2的arp表:
arp欺骗防护_第4张图片
可以看到192.168.20.11对应的mac和192.168.20.9的mac相同,08-00-27-37-7b-cc这个mac是PC3的。

这样当PC2向PC1发送数据时就会发送到PC3。此时在PC2上ping PC1是不通的
arp欺骗防护_第5张图片
之所以ping不通,是因为PC3上就没有192.168.20.11这个ip,PC2发送的包是给192.168.20.11的,PC3当然就会丢弃了。

在PC3的eth1上添加ip 192.168.20.11

ip add add dev eth1 192.168.20.11/24

再到PC3上ping 192.168.20.11就可以ping通了。

但这样做,对于一个心怀恶意的人没什么用。因为PC2是要访问PC1的资源。PC3通常是提供不了这些的资源的,除非PC3非常清楚PC1的资源,并能成功克隆一份以至PC2不会怀疑。更为廉价的方式是,PC3把PC1到PC2的流量也劫持了。

arpspoof  -i eth1 -t 192.168.20.11 192.168.20.12

执行上面的命令前需要用下面的命令取消PC3的eth1上绑定的192.168.20.11

ip add del dev eth1 192.168.20.11/24

这样PC3把PC1到PC2的流量也支持了。但此进PC2还是不通ping能PC1。这是因为PC1、PC2的流量都到了PC3,但这些流量的目的地都不是PC3,PC3会丢弃。可以在PC3上开启ip转发来转发双方的流量,PC3开启ip转发后,PC3就相当于一台路由了,可以转发目的地址不是自己的流量。

echo 1 > /proc/sys/net/ipv4/ip_forward

此时PC2和PC1可以正常通讯了,而所有流量都会经过PC3,PC3就可以进行抓包之类的进行流量分析了。如果PC2与PC1的通讯包含明文用户名、密码,这些用户名、密码就会被PC3得知。

arp欺骗防护

查询网上,arp欺骗的防护没有太多的办法,有三种办法。

  • 使用带DAI功能的交换,此类交换机可以解决arp欺骗
  • 使用静态arp记录,arp广播得到的是arp记录是动态的,可以手动设置静态arp记录
    linux使用:
    arp -s ip mac

    windows使用:

    arp -s ip mac

    这种方式法对主机很多的情况不适用。

  • 使用arp防火墙,如xarp(xarp似乎是通过检测mac的变化识别arp欺骗,笔记在PC2已经遭受到arp欺骗后安装了xarp,xarp并未检测到arp欺骗,但取消PC3上对PC1、PC2的arp欺骗后,在PC2上pingPC1,xarp检测到了arp欺骗,且检测到的是正确的mac,由于可见xarp是通过检测mac的变化确认mac欺骗的。)

    arp欺骗的检测

    arp欺骗的隐蔽性还是有点强

  • 在linux中下可以使用arping检测:
    arp欺骗防护
    可以看到除了第一条,后面的都是PC3的mac,arping在检测的时候也是不容易发现。但还是出现了两个不同的mac,这时可以怀疑是有arp欺骗了。

  • 还可以抓包确认:
    arp欺骗防护_第6张图片
    象上图这种,有着连续的同一个arp应答包,有理由怀疑被arp欺骗了。
  • 一些arp检测软件,如:arpwatch
    arpwatch是linux下的一个arp工具,用于监控arp的变化,这个工具通过对流量的分析追踪arp的变化,并发送邮件。这个工具在使用交换机的网络中效果不大,因为使用交换机的网络中,交换机端口是不能接收到整个网络流量的,因此arpwatch就不能监控整个网络的arp变化了 ,但这个工具安装在本机监控arp变化是可以的,这样就起到了arp防火墙的作用。