这个ARP欺骗案例用最简单的拓扑、场景来显示黑客作案的方式、过程。案例有两个版本:仿真、图解。图解版本,从仿真截图,并加标注,说明主要步骤的关键。
-
-
-
1. 拓扑:在一个局网里,有三台主机H1, H2, H3 连接到一个交换机 S1, 它们的MAC地址分别为 MAC.H1, MAC.H2, MAC.Attacker (H3是黑客) 。
这个拓扑是从ARP Spoofing仿真截图而来,仿真用动画显示ARP Spoofing 仿真的过程,用户可以观察数据包-ARP表-MAC表间的因果关系,控制时间轴,检查数据包内容等细节。
-
2. 初始化
初始化时,主机的ARP表里只有自己的MAC地址,不知道其它主机的MAC。交换机S1的MAC表也是空的。
3. H1 发送ARP Request查询 H2的 MAC地址
-
-
-
交换机S1收到ARP Request时, 因为它是广播包所以将其洪泛。
4. 收到了ARP Request,H2 回复ARP Reply, H3 (黑客) 记录H1的MAC地址
主机收到 ARP Request后有两种反应:不更新ARP表,更新ARP表, 记录方式方的MAC地址 (把ARP Request 报文里的 sender ip, sender mac添加到 ARP表)。多数ARP软件不更新 ARP表, 这是H2的做法,
但黑客一定会把发送行的地址记录到ARP表。
5. H1
H1收到了H2的 ARP Reply后,更新ARP表,(IP.H2, Incomplete)
H2收到ping后, 要发送Echo回复, 但不知道H1的 MAC, 就发送ARP Request (ARP Req2) 查询。
ARP Request 被交换机洪泛,送往H1, H3.
6. H1, H3 都收到了H2的ARP Request,做出不同反应.
H1, H3收到H2的ARP Request,做出不同的反应:H1发送ARP Reply回复H2,H3把H2的地址记录到ARP表。
7. H3开始攻击,冒充 H1发送 ARP Reply给H2.
黑客冒充H1发送一个ARP Reply给H2, 在ARP Reply的报文中,把sender ip设为IP.H1 (H1的IP), sender mac 设为自己的MAC. 这样,下次H2要发送数据包给H1时,会被H3收到,而不是H1. 这是因为在局网中传送是根据Link报头的目的MAC地址。同时, H1若换了一个网卡,就会发送 ARP Reply通知自己的MAC地址改变,H2收到这样的ARP Reply, 也不以为怪。
8. H2 上当,把H1的MAC地址篡改为黑客的MAC地址。
H2 刚收到H1的ARP Reply, 把ARP表的条目(IP.H1, Incomplete)改为 (IP.H1, MAC.H1)。
H2 马上又收到H3的ARP Reply, 把ARP表的条目(IP.H1, MAC.H1)改为 (IP.H1, MAC.HAttacker)。
【注】若操作仿真,用户可以看到两个 ARP Reply对H2 ARP表的连续改变。
9.
10. H2发送给H1的Echo 被黑客收到, H1, H2毫不知情。
黑客得逞了。 H2发送给H1的数据包,都给黑客收到了。这个案是Ping/Echo, 在实际情况,可能是机密信息或银行交易。
黑客收到H2的数据包后,可以记录后再转发给H1, 而H1, H2并不知道这个数据包已被黑客偷听过。黑客也可以把数据包篡改后再转发给H1,收到H1得到错误的信息。
【注】最后一步交换机根据 Echo的目的MAC地址把Echo转发到H3, 与交换机原理有关,若不熟悉,见参考资料、
参考资料:
[a] ARP
Visualland ARP仿真目录 (Overview)
ARP入门,见ARP basic 仿真 http://www.visualland.net/view.php?cid=857&protocol=ARP&title=1. Basic-update
谢希仁 计算机网络第五版 4.2.4 地址解析协议ARP
RFC 826 http://www.faqs.org/rfcs/rfc826.html
[b] MAC 地址: LAN overview
谢希仁 计算机网络第五版 3.4.3 MAC层
Wikipedia MAC address http://en.wikipedia.org/wiki/MAC_address
百度百科 MAC地址 http://baike.baidu.com/view/69334.htm
[c] 交换机怎么转发、洪泛数据包,发现新地址。
VisuallandSwitch 仿真目录,
谢希仁 计算机网络第五版 3.5.2 在数据链路层扩展以太网
Wikipedia: Network Switch. http://en.wikipedia.org/wiki/Network_switch