科普:嗅探(被动嗅探)与ARP欺骗(主动嗅探)详解

关于嗅探与ARP欺骗的原理,网络上有很多很好的帖子和文章,但大部分都忽略了数据在网络中的转发过程。实际上用嗅探和ARP欺骗来做标题有点忽悠 的成分,因为嗅探本身就包含了主动嗅探和被动嗅探,而ARP欺骗又是一个单独的技术,欺骗的目的只是让数据经过本机,即:主动嗅探=ARP欺骗+抓包。在了解嗅探和ARP欺骗原理之前,我们必须对数据包在各种(交换网络、共享网络等)网络环境中的传输过程,笔者在这边也只针对交换网络和共享网络进行探讨。 若未加说明,文章中的三层指的是网络层,二层指的是数据链路层。

一.数据在网络中的转发过程:

1.数据在交换网络中的传输过程如下图(PC1发包给PC2)

注:此图是以公网网络为基础,如果PC为内网或者加入私有网络则在出口要考虑NAT等情况

a)    PC1 发现目标IP 110.1.1.2(网络号110.1.1.0)与本机不在同网段(掩码为24位,所以本机网络号为1.1.1.0),因此PC1会将数据包丢给网关,为 了数据报文能够到达网关,PC1封装的报文里头会以网关的MAC作为目的MAC(网络数据传输,原目的IP不变,原目的MAC通过三层网络时会不断改 变)。

b)     数 据报文到达二层交换机(这里只涉及二层交换,如果是三层交换机并设置了端口IP,则会有所不同)后,由于二层交换机拆解数据报文时只拆解到二层(只拆解到 原目的MAC),根本看不懂IP,所以会查找MAC-接口映射表(所谓的建立虚拟链路),发现网关MAC对应的是E5口,则将数据包从E5口丢出去。

c)     路 由器R1收到数据报文后查看原目的IP(路由器属于三层设备,拆解数据包到IP层),查看数据包的目的IP为110.1.1.1,进而查找路由表,发现数 据要到达目的网络,数据包必须往下一跳218.1.1.2发送,因此路由器对数据包进行重封装,查看ARP表,原、目的IP保持不变,将原MAC修改成 R1出接口(连接到R2的那个端口)的MAC地址,目的MAC改成R2的进接口(R2接R1的接口MAC地址),接下来和二层传输一样,将数据包丢给 R2。

d)     R2 收到数据包后与R1做的操作一样,直到数据报文到达目标。根据之前的步骤可以推出数据报文到达目标后,原IP、目的IP不变,原MAC为R2接PC2的接 口MAC、目的MAC为PC2的MAC。PC2发现数据报文的目的IP和目的MAC与本机相符(非攻击者),从而拆解数据包,获得数据报文内容。回复报文 的时候和之前的传输一样。

2.数据在共享网络中的传输图(PC1发包给PC2)

数据报文在共享网络中的传输和交换网络唯一的不同在于第二 个步骤,交换网络中交换机会根据MAC-端口对应表进行传输,也就是说除了网关(以图为例),其他同交换机下的PC机无法收到数据报文(没出现攻击的情况 下)。而在共享网络中,由于HUB属于一层设备,对于到达本身的数据报文,HUB会对报文进行广播(除了收到报文的那个接口),因此接在同HUB的所有 PC都能收到该报文。

注:通常情况下,网卡都是工作在非混杂模式,也就是说即使收到数据报文,网卡会判断目的MAC是否和自己的一样,不一样的话代表数据包不是给自己的,因此会丢弃,只接收那些目的MAC和自己一样的数据报文。在嗅探时必须开启混杂模式,在该模式下,网卡不对数据报文进行判断,一锅端!

 

 

二.ARP欺骗:

1.欺骗过程及原理

从上面的数据报文传输过程可以知道二层传输是通过MAC进行传输的,在传输过程中PC需要查询ARP表。因此攻击者只要可以改变目标的ARP表就能实现攻击,从而将数据牵引到自己的机器上,如图

a)     在 正常情况下,PC1通过本地ARP表知道网关1.1.1.2的MAC地址为1.1.1.1 0260.8c01.1111,所以PC1封装包的时候会将目的MAC设置成路由器的MAC地址。交换机通过MAC-端口对应表能够正常的将数据报文从 E1口转发给路由器,实现数据传输。

b)     黑客对PC2有完全的控制权,通过不断发送(假冒的)ARP报文告诉PC1,自己才是1.1.1.1对应的MAC是0260.8c01.1113。

c)     PC1收到黑客发的ARP报文后,刷新自己的ARP表,将1.1.1.1的MAC误认为是0260.8c01.1113。

d)     PC1将要访问外网数据报文的目的MAC设置成0260.8c01.1113(PC2的MAC,目测PC1被自己的ARP表给骗了)。

e)     交换机通过拆解包发现目的MAC对应的端口为E4(PC2的那个接口,连锁反应了!),就将数据报文从E4口丢出。

f)      PC2 成功得到PC1发往外网的请求报文。偷看后重新封包,原IP、目的IP不改变,将原MAC改成PC2的MAC,目的MAC改成网关的(数据包恢复正常,看 起来和没攻击时PC1发出的报文完全一样),PC2修改完后将数据包丢给交换机,从而欺骗实现,当然对于该包的回应报文,由于路由器ARP表没被污染,所 以能够正常的将返回报文直接丢给PC1。

2.如何选择欺骗方向

在欺骗过程中,选择正确的欺骗方向也是很重要的,通过阅读我们可以看到上面的欺骗方向是PC1à网关。那么我们如何确定正确的欺骗方向呢?

a)    员工工作网络,我们知道正常请求报文里面含有大量的敏感信息,如网站管理后台账户密码等。而请求包的走向是员工PCà网关,如果黑客控制的电脑与员工内部同一网段,那么正常情况下黑客会欺骗员工的PC机自己是网关,从而截获请求报文

b)    服务器网络,而在机房(服务器网络)中,管理员一般会在外部进行访问,即请求报文是由网关转发给服务器,也就是说请求报文的走向是网关à服务器,如果黑客控制的是机房里的一台服务器,为了截获到请求报文中的服务器登录密码等敏感信息,攻击者一般会对网关发起欺骗,告诉网关自己是某台或者某些服务器。

c)    实际上不管在员工网络或者机房内部网络,黑客比较习惯与进行双向欺骗,一方面告诉网关自己是某些终端,另一方面告诉同网段的其他终端自己是网关,但是该方法会产生大量的垃圾信息,因为在回应报文中基本上不会携带敏感的信息。

3.ARP欺骗的瓶颈

为了得到更多的敏感信息,很多人会使用双向+批量的欺骗方 式,一方面告诉网关自己的MAC对应的IP是网段内所有的IP(这样无论数据报文是给哪台机子的,只要是发送给同网段机器网关都会转发给攻击者);另一方 面欺骗所有同网段终端自己是网关(实际上欺骗同网段所有的终端比较容易,直接将ARP包的目的mac设置成FF-FF-FF-FF-FF-FF就行了),从而所有终端发出的报文都会经过攻击者的机器。但是如果这样子做,攻击者控制的机器直接承载了整个网段的数据流量,要对整个网段的数据进行处理,重封装、再转发,这在服务器的性能和配置上要求可不是一般的苛刻,所以选择好欺骗对象和方向显得非常重要。

三.嗅探和ARP欺骗的区别

a)    嗅探一般存在于共享网络中,在共享网络中一般使用HUB作为接入层,经过HUB的数据报文不管长得什么样,因为HUB工作在第一层,看不懂二层以上的报文是啥样子的,所以一律以广播处理,在同一网段的计算机只要将网卡设置成混杂模式即可。

b)    嗅探在交换网络中不适用,因为交换机是通过MAC-端口对应表来转发数据报文的,所以在交换网络中如果只将网卡设置成混杂模式,而不进行ARP欺骗,其结果只能接受到网络中的广播包。

c)    共享网络中适用ARP欺骗,那是多此一举,适用ARP欺骗的方式会对影响网络流量,对网络造成很大的影响,另外适用ARP欺骗会产生大量的ARP报文,很容易被发现。而嗅探对整个网络几乎没有影响,因为嗅探只是做监听,而不会产生多余的数据报文。

四.加密是否安全

很多人说使用HTTPS或者VPN等手段就可以防止嗅探或者ARP欺骗,这是不全面的。具体要看什么网络及什么技术。下面笔者针对HTTPS和VPN在共享、交换网络中进行探讨。

1.共享网络+嗅探

a)    在共享网络使用HTTPS确实可以很好的解决数据被窃取的问题(当然个人证书泄露除外),由于监听的机器没有证书也就无法进行解密。

b)   在共享网络中使用VPN技术不一定能够防止,部分VPN技术只是在原有的数据报文多加一个IP报头,对于数据内容本身未做加密,攻击者使用监听技术获取该类数据还是能正常获取报文的内容的

2.交换网络+ARP嗅探

从原理上讲,该类型的攻击属于中间人攻击,可以伪造任何证 书,因此对于HTTPS等来说,攻击者只要偷梁换柱,伪造证书就可以成功获得数据的明文信息。但对于部分使用秘钥不通过公网传输的协议(例如使用 publikey验证的SSH,KEY不通过网络传输)就无法截取明文信息,也无法伪造。

3.共享网络+ARP欺骗

该类型攻击和第2中攻击没啥两样,就不做详细讨论了

五.如何防止ARP欺骗及嗅探。

实际上网上已经有很多种解决方案了,但在这边还是小提一下简单的防止方式。第四点也有提到了一部分。

在交换网络中一般使用双向绑定就可以解决ARP欺骗的问题了,有些牛人说可以直接伪造MAC欺骗交换机,这也是一种绕过方法,但实际上这种方法可行 性不高,虽然有时候确实能够截获到数据报文,但会时交换机的MAC-端口对应表产生混乱,另外报文若发给你就不会发给目标服务器,会产生拒绝服务攻击。

在共享网络中使用双向绑定理论上是没效果的,因为只要经过HUB的数据都会进行广播,即使绑定,所有终端也会收到数据报文。Hub不像二层交换,没有MAC-端口对应表。

当然对于嗅探和ARP攻击的原理、利用和防御不止文中提到的这些,文章只是笔者的一点心得体会,仅供参考。说这么多,实际上要进行ARP攻击的话,一个cain、一个sniffer、一个ettercap就可以完全搞定了。

 

相关文章推荐:《arp双向和单向欺骗原理解析》《在VLAN中可能遇到的九种攻击方式

[via@灰帽]