有两种arp欺骗:一种是对路由器arp高速缓存的欺骗;另一种是对内网电脑arp高速缓存的欺骗。
在每台主机都有一个ARP缓存表,缓存表中记录了IP地址与MAC地址的对应关系,而局域网数据传输依靠的是MAC地址。
假设主机 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之间说了些什么话。但是并不是想象中的那么安全,在ARP缓存表机制存在一个缺陷,就是当请求主机收到ARP应答包后,不会去验证自己是否向对方主机发送过ARP请求包,就直接把这个返回包中的IP地址与MAC地址的对应关系保存进ARP缓存表中,如果原有相同IP对应关系,原有的则会被替换。
这样C就有了偷听A和B的谈话的可能,继续思考上面的例子:
C假扮邮递员,首先要告诉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之间聊了些什么
上面ABCG的故事就是ARP双向欺骗的原理了
ARP单向欺骗就更好理解了,C只向A发送一个返回包,告诉A:G 192.168.1.1 的MAC地址为 5c-63-bf-79-1d-fa(一个错误的mac地址),A把这个信息记录在了缓存表中,而G的缓存表不变,也就是说,A把数据包给了C,而G的包还是给A,这样就是ARP单向欺骗了。
二.arp欺骗流程详解
数据包在局域网上是怎么传输的吗?是靠什么来传输的吗?也许你会说是靠IP地址,那么你只正确了一半。其实真正在传输过程中是靠计算机的网卡地址即MAC来传输。
现在我们就用实例来模拟一下传输的全过程。现在有一台计算机A(IP:192.168.85.1 MAC:AA-AA-AA-AA-AA-AA),另一台计算机B(IP:192.168.85.100MAC:BB-BB-BB-BB-BB-BB)现在用A去 ping B。看见 Reply from 192.168.85.100:bytes=32 time<10ms TTL=32 这样的信息。然后在运行中输入arp -a,会看见 192.168.8.100 BB-BB-BB-BB-BB-BB dynamic这样的信息。那就是arp高速缓存中IP地址和MAC地址的一个映射关系,在以太网中,数据传递靠的是MAC,而并不是IP地址。其实在这背后就隐藏着arp的秘密。你一定会问,网络上这么多计算机,A是怎么找到B的?那么我们就来分析一下细节。首先A并不知道B在哪里,那么A首先就会发一个广播的ARP请求,即目的MAC为FF-FF-FF-FF-FF-FF,目的IP为B的192.168.85.100,再带上自己的源IP,和源MAC。那么一个网段上的所有计算机都会接收到来自A的ARP请求,由于每台计算机都有自己唯一的MAC和IP,那么它会分析目的IP即192.168.85.100是不是自己的IP?如果不是,网卡会自动丢弃数据包。如果B接收到了,经过分析,目的IP是自己的,于是更新自己的ARP高速缓存,记录下A的IP和MAC。然后B就会回应A一个ARP应答,就是把A的源IP,源MAC变成现在目的IP,和目的MAC,再带上自己的源IP,源MAC,发送给A。当A机接收到ARP应答后,更新自己的ARP高速缓存,即把arp应答中的B机的源IP,源MAC的映射关系记录在高速缓存中。那么现在A机中有B的MAC和IP,B机中也有A的MAC和IP。arp请求和应答过程就结束了。由于arp高速缓存是会定时自动更新的,在没有静态绑定的情况下,IP和MAC的映射关系会随时间流逝自动消失。在以后的通信中,A在和B通信时,会首先察看arp高速缓存中有没有B的IP和MAC的映射关系,如果有,就直接取得MAC地址,如果没有就再发一次ARP请求的广播,B再应答即重复上面动作。
好了在了解了上面基本arp通信过程后,现在来学习arp欺骗技术就好理解多了,计算机在接收到ARP应答的时候,不管有没有发出ARP请求,都会更新自己的高速缓存。利用这点如果C机(IP:192.168.85.200MAC:CC-CC-CC-CC-CC-CC)伪装成B机向A发出ARP应答,自己伪造B机的源MAC为CC-CC-CC-CC-CC-CC,源IP依旧伪造成B的IP即192.168.85.100,是那么A机的ARP缓存就会被我们伪造的MAC所更新,192.168.85.100对应的MAC就会变成CC-CC-CC-CC-CC-CC.如果A机再利用192.168.85.100即B的IP和B通信,实际上数据包却发给了C机,B机根本就接收不到了
三.基于ARP欺骗的攻击方法
中间人攻击
中间人攻击(man in the middle attack)是最典型攻击之一,当一个中间人攻击完成以后,一个
恶意用户将在两台相互通信的目的主机之间。这样他就可以完成网络数据包(以太网数据包)
嗅探与分析,中间人计算机将在两台相互通信的目的主机之间转发帧数据包,而两台目的主
机对此毫无察觉,一个完整的中间人攻击过程如下:
这种攻击方式不仅对计算机有效,还可以扩展到路由器与网关设备,从而在路由器与主机之
间使用中间人攻击。
广播攻击
如果以太网帧的目的地址为FF:FF:FF:FF:FF:FF,则该以太网数据帧为广播帧,网段中所有的
计算机都会收到该广播帧,公共扫描网络上的主机,发送假的ARP应答报文,设定网关的
MAC地址为广播地址,所有发送到该网关的数据将被广播发送,导致网络嗅探攻击。
拒绝服务攻击(DOS)
通过更新ARP缓存表,插入一条不存在的MAC地址记录匹配一个目的IP,将会知道该帧数
据被丢弃,从而导致主机不能接受到数据包产生拒绝服务攻击效果,它其实是中间人攻击成
功以后,中间人离开之后而产生的后中间人攻击效应。
会话劫持
连接劫持(会话劫持)是一种类似中间人攻击的方法,当两台计算机相互连接时,中间人通过
ARP欺骗,完成连接劫持。连接劫持一个简单例子是连接劫持者控制一个远程主机登录连接之后,开始进入远程主机,获取相关资料。
四.arp欺骗攻击的防范
(1)在客户端使用arp命令绑定网关的IP/MAC(例如arp -s192.168.1.1 00-e0-eb-81-81-85),在主机绑定网关MAC与IP地址为静态(默认为动态),命令:arp -s 网关IP 网关MAC
(2)在交换机上做端口与MAC地址的静态绑定。
(3)在路由器上做IP/MAC地址的静态绑定。
(4)使用arp服务器定时广播网段内所有主机的正确IP/MAC映射表。
(5)及时升级客户端的操作系统和应用程序补丁。
(6)升级杀毒软件及其病毒库。
(7)使用ARP防火墙