这个ARP欺骗案例用最简单的拓扑、场景来显示***作案的方式、过程。案例有两个版本:仿真、图解。图解版本,从仿真截图,并加标注,说明主要步骤的关键。

-          背景:计算机经互联网相连而传递信息,信息标明发送行、接收方的IP地址,而具体的传送是经过链路而实现的。若两个计算机都在同一个局网内,发送方还需要知道接收方的MAC地址(硬件地址)。如果发送方不知道接收方的MAC地址, 就无法发送信息,得问ARP ARP会在局网里向所有的计算机广播:你的地址是这个接收方的地址吗?如果是,请告诉我你的MAC地址。用电话来比喻,IP地址是姓名, MAC是电话号码, ARP是查号台。

-          ARP欺骗原理:计算机通信用IP地址,在以太网中,主机传递信息用IP地址及MAC地址 (硬件地址)。主机之间知道彼此的IP地址,但不知道对方的MAC地址。在传递信息时,发送方得先问ARP找到对方的MAC地址才能发送。 ARP向局网中的所有主机广播询问接收方的MAC地址。这个询问 (ARP Request) 包含了发送方的IPMAC地址,***若在这个局网中,也会收到ARP Request, 而得知发送方的地址。 从偷听各个主机所发送的ARP Request, ***知道了它们的的MAC地址,就可以冒充别的主机,进行欺骗活动,截取数据包。这段说明有些抽象、拗口,看下面的图解能更清楚些。

-          预备知识MAC地址, 交换机洪泛、转发,ARP。见参考资料

 

 

1. 拓扑:在一个局网里,有三台主机H1, H2, H3 连接到一个交换机 S1, 它们的MAC地址分别为 MAC.H1, MAC.H2, MAC.Attacker (H3是***)


这个拓扑是从ARP Spoofing仿真截图而来,仿真用动画显示ARP Spoofing 仿真的过程,用户可以观察数据包-ARP-MAC表间的因果关系,控制时间轴,检查数据包内容等细节。

-          拓扑中的地址以 <地址类别>.<主机> 表示。例:H1IP地址是IP.H1, H1 MAC地址是 MAC.H1

 

 

 

2. 初始化


初始化时,主机的ARP表里只有自己的MAC地址,不知道其它主机的MAC。交换机S1MAC表也是空的。

 

 

 

 

3. H1 发送ARP Request查询 H2 MAC地址


-          H1 要知道H2是否在线,就ping H2。但不知道H2MAC地址,不能发送ping, H1就洪泛ARP Request向局域网查询H2MAC地址.

-          截图中H1ARP表增添一个条目(IP.H2, Incomplete) 意思是H1正在查询H2MAC.

-          若运行ARP Spoofing仿真,用户可以点击ARP Request, 查看报文 target mac0,表示H1不知道H2MAC地址),Link报头 Destination MAC设置为0xFFFFFFFF, 表示这是一个广播包).

交换机S1收到ARP Request, 因为它是广播包所以将其洪泛。

 

 

 

4. 收到了ARP RequestH2 回复ARP Reply, H3 (***) 记录H1MAC地址


主机收到 ARP Request后有两种反应:不更新ARP表,更新ARP, 记录方式方的MAC地址 (ARP Request 报文里的 sender ip, sender mac添加到 ARP)。多数ARP软件不更新 ARP表, 这是H2的做法,

但***一定会把发送行的地址记录到ARP表。

 

 

 

5. H1  ping H2. H2 收到Ping, 要回复Echo, 但不知道H1 MAC, 得发送ARP Request查询。


H1收到了H2 ARP Reply后,更新ARP表,(IP.H2, Incomplete)  变成 (IP.H2, MAC.H2), 并再ping H2.

H2收到ping, 要发送Echo回复, 但不知道H1 MAC, 就发送ARP Request (ARP Req2) 查询。

ARP Request 被交换机洪泛,送往H1, H3.

 

 

 

6 H1, H3 都收到了H2ARP Request,做出不同反应.


H1, H3收到H2ARP Request,做出不同的反应:H1发送ARP Reply回复H2H3H2的地址记录到ARP表。

 

 

 

7 H3开始***,冒充 H1发送 ARP ReplyH2.


***冒充H1发送一个 ARP ReplyH2, ARP Reply的报文中,把sender ip设为IP.H1 (H1IP), sender mac 设为自己的MAC. 这样,下次H2要发送数据包给H1时,会被H3收到,而不是H1. 这是因为在局网中传送是根据Link报头的目的MAC地址。同时, H1若换了一个网卡,就会发送 ARP Reply通知自己的MAC地址改变,H2收到这样的ARP Reply, 也不以为怪。

 

 

 

8. H2 上当,把H1MAC地址篡改为***的MAC地址。


H2 刚收到H1ARP Reply, ARP表的条目(IP.H1, Incomplete)改为 (IP.H1, MAC.H1)

H2 马上又收到H3ARP Reply, ARP表的条目(IP.H1, MAC.H1)改为 (IP.H1, MAC.HAttacker)

【注】若操作仿真,用户可以看到两个 ARP ReplyH2 ARP表的连续改变。

 

 

 

 

9.  H1 ping H2. H2回复Echo ,用的MAC目的地址是***的,不是H1的。


 

 

 

 

 

10 H2发送给H1Echo 被***收到, 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.%20Basic-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] 交换机怎么转发、洪泛数据包,发现新地址。

Visualland Switch 仿真目录,  Switching and flooding 仿真 , MAC discovery 仿真

谢希仁 计算机网络第五版 3.5.2 在数据链路层扩展以太网

Wikipedia: Network Switch. http://en.wikipedia.org/wiki/Network_switch