当前位置 博文首页 > 文章内容

    dns欺骗和会话劫持,ARP欺骗、DNS欺骗,与数据流重定向

    作者:dlxiaoyu01 栏目:网站安全 时间:2020-11-24 9:30:41

    本站于2023年9月4日。收到“大连君*****咨询有限公司”通知
    说我们IIS7站长博客,有一篇博文用了他们的图片。
    要求我们给他们一张图片6000元。要不然法院告我们

    为避免不必要的麻烦,IIS7站长博客,全站内容图片下架、并积极应诉
    博文内容全部不再显示,请需要相关资讯的站长朋友到必应搜索。谢谢!

    另祝:版权碰瓷诈骗团伙,早日弃暗投明。

    相关新闻:借版权之名、行诈骗之实,周某因犯诈骗罪被判处有期徒刑十一年六个月

    叹!百花齐放的时代,渐行渐远!



      一、基于ARP欺骗的数据流重定向

      1.1 ARP协议及其工作流程

      ARP是Address Resolution Protocol(地址解析协议)的简写,RFC826中对其功能的描述为:将计算机的网络层协议地址解析成数据链路层的硬件地址。在当前最为流行的TCP/IP网络体系结构中,跨局域网的间接通信依靠IP地址寻址来完成,在同一局域网内的直接通信则通过MAC地址进行。因此ARP协议的作用一般直接说成是将IP地址解析为MAC地址。

      以主机A(IP_A,MAC_A)向同一个局域网内的主机B(IP_B,MAC_B)发数据包为例,ARP协议的工作流程简单描述如下:

      主机A通过IP_B查询本机的ARP缓存列表(其中存放了最近和本机通信过的主机的IP地址和相应MAC地址记录),看是否有相应的记录。有,则解析结束;没有,转下一步。

      主机A向局域网内所有主机广播ARP请求报文:“我是IP_A,我的MAC地址是MAC_A,我想知道IP_B的MAC地址。”

      局域网内所有主机收到主机A的ARP请求报文后,首先检查自己的ARP缓存列表内是否有主机A的IP地址与相应MAC地址的记录,没有记录或者记录与新收到的报文不同,就更新本机的ARP缓存列表。然后比对自己的IP地址是否为IP_B。不是,则本机工作完毕;是,则向主机A发送ARP响应报文:“我是IP_B,我的MAC地址是MAC_B。 ”

      主机A收到来自主机B的ARP响应报文后,更新本机的ARP缓存列表。将MAC_B作为目的MAC地址写入以太帧,通过局域网送达主机B。

      1.2 ARP欺骗及以之为基础的数据流重定向

      为了减少局域网内的ARP通信量,ARP协议规定,即使一台主机收到的ARP响应报文并非自己请求得到,他也会将其更新到本机的ARP缓存列表中。而且ARP缓存列表的更新策略是以最新的为准,也就是说,在ARP缓存列表已存在相关记录的情况下,如果新收到的ARP应答报文中的记录与ARP缓存列表中的记录不符,ARP协议规定用最新的记录更新ARP缓存列表中的旧记录。ARP协议的这些设计原则使得ARP欺骗成为可能。

      ARP 欺骗的原理是由攻击者发送伪造的ARP报文给受骗主机,使得受骗主机原本发送至特定IP 地址的数据流被错误送到攻击者所指定的网卡。

      如果攻击者的目的是阻断受骗主机的通信,那么ARP欺骗包指定的网卡一般是局域网内不存在的一块网卡,并且攻击目标只有一台受骗主机;但如果攻击者的目的是重定向受骗主机的流量从而嗅探的话,那么ARP欺骗包就必须指定自己的网卡,并且同时指定通信的双方为攻击目标。也就是我们常说的,一个完整的ARP欺骗是“欺上瞒下”的。

      若主机M(IP_M,MAC_M)想改变主机A(IP_A,MAC_A)与同一个局域网内的主机S(IP_S,MAC_S)之间的数据流流向,那么主机M只需要在固定时间间隔向主机A发送ARP响应报文:“我是IP_S,我的MAC地址是MAC_M。”,向主机S发送ARP响应报文:“我是IP_A,我的MAC地址是MAC_M。”。这样,主机A就会把本应送达主机S的数据发给主机M,主机S亦然。为了保证主机A与主机S之间的通信不被中断,主机M上需要有相应的数据转发机制。如此,主机M就成为主机A与主机S之间的“中间人”,他就可以监测主机A与主机B之间的会话内容。

      通常通信的双方不在同一个局域网内,例如,主机A位于LAN_A内,主机S位于LAN_A外,LAN_A的网关为R。这种情况下,由于局域网内所有发向外网的流量均需通过网关转发,因此“中间人”只要在主机A与网关R之间进行ARP欺骗就可以完成数据流的重定向。

      二、基于DNS欺骗的数据流重定向

      2.1 DNS服务与域名查询流程

      计算机之间使用IP地址进行网际通信,但是对于使用计算机的人来说,要记住大量的计算机IP地址几乎是不可能的事。为了便于记忆,人们在IP地址的基础上又发展出一种符号化的地址方案,域名。域名(Domain Name)是由一串用点分隔的名字组成的Internet上某一台计算机或计算机组的名称[12],用于在数据传输时标识计算机的电子方位。为了完成两套地址方案之间的转换,人们设计了DNS(Domain Name System,域名系统)。

      以主机A请求获取域名为Name_B的主机的IP地址为例,域名查询的流程简介如下:

      主机A通过Name_B查询本机的DNS缓存列表(其中存放了最近和本机通信过的主机的域名和相应IP地址记录),看其中是否存在相应的记录。若有,则查询结束;若无,则下一步。

      主机A向本地域名服务器发送DNS查询请求报文:“这是标识为ID_A2B的请求,我想知道域名Name_B对应的IP地址。 ”

      本地域名服务器收到请求后,首先在本机的数据库中查看是否存在相应记录,若有,转第5)步;若无,下一步。

      本地域名服务器以客户的身份,通过迭代查询的方式,向其他根域名服务器继续发出查询请求报文。当根域名服务器收到本地域名服务器的迭代查询请求报文时,要么给出Name_B对应的IP地址,要么告诉本地域名服务器:“你下一步应当向哪一个域名服务器进行查询”。然后本地域名服务器进行后续的查询,直到得到Name_B对应的IP地址为止。本地域名服务器先将结果写入本机的数据库中,以备下一次查询。

      本地域名服务器向主机A返回DNS响应报文:“这是对标识为ID_A2B的请求的回复,域名Name_B对应的IP地址是IP_B。”。

      主机A收到DNS响应报文后,首先对响应报文和请求报文进行匹配,仅当DNS响应报文中的标识ID_A2B与域名Name_B都可以与DNS查询请求报文匹配成功时,主机A才将记录(Name_B,IP_B)更新到本机的DNS缓存列表。

      2.2 DNS欺骗及以之为基础的数据流重定向

      DNS缓存列表的更新策略与ARP缓存列表不同,在DNS缓存列表已存在相关记录的情况下,如果新收到了DNS响应报文,DNS协议规定以旧记录为准,不更新缓存列表。

      DNS欺骗的基本原理是攻击者冒充域名服务器,向受骗主机发送伪造的DNS响应报文,使得受骗主机原本发送至特定域名的数据流被重定向到攻击者。

      若主机M(IP_M)想要劫持主机A与服务器S(Name_S,IP_S)之间的会话。那么主机M需要监听主机A发出的DNS查询请求,一旦监听到主机A向域名服务器请求查询Name_S对应的IP地址,那么立刻从中取出查询标识ID_A2S,并赶在真正的DNS响应报文到达之前,向主机A发送伪造的DNS响应报文:“这是对标识为ID_A2S的请求的回复,域名Name_S对应的IP地址是IP_M。”由此,主机A想要访问服务器S时会与主机M建立连接,主机A原本发往服务器S的数据都会被重定向到主机M。同样,为了使主机A仍可以正常访问服务器S,主机M需要与服务器S建立连接,并将服务器S返回的数据转发给主机A。

      DNS欺骗能够顺利实现,一方面要求获取准确的查询标识,这样伪造的DNS响应报文才能够与查询请求相匹配;另一方面,则要求攻击者发送伪造报文的时机刚刚好,必需在受骗主机发送请求之后,在真实域名服务器返回真实响应之前。这两个要求只要有一个不满足,伪造的DNS响应报文就不会被受骗主机接受。为此,攻击者必须要能够监听受骗主机发送的数据,从而获得查询标识,掌握发送伪造报文的时机。要达到这一目的,针对三种不同环境,攻击者有三种做法(依然以受骗者主机A位于局域网LAN_A内,域名服务器位于LAN_A外,存在攻击者主机M为例):

      a) 主机M也处于LAN_A内,LAN_A采用共享介质[现在比较少]连接。主机M直接将网卡设为混杂模式,监听LAN_A内的所有数据;

      b) 主机M也处于LAN_A内,LAN_A采用交换介质连接。主机M在主机A与LAN_A的网关之间进行ARP欺骗,从而监听主机A发往网关的所有数据;

      c) 主机M处于LAN_A外。主机M在主机A对外通信的出口网关(或者必经的主干线路上的网络设备)的镜像端口部署嗅探器,监听主机A对外通信的数据。

      三、两种重定向技术对比小结

      为了表达方便,我们将基于ARP欺骗的数据流重定向简称为ARP重定向,将基于DNS欺骗的数据流重定向简称为DNS重定向。前文提到过,DNS欺骗在三种不同的情形下,有三种不同的手段对受骗者进行监听。本节主要讨论ARP重定向与DNS重定向的不同,因此本节所说的DNS重定向特指利用网络设备镜像端口监听受骗者通信数据的那一类。下面从五个方面对两种重定向技术用于中间人监测中的不同进行比较。

      (1) 对监测主机部署位置的要求

      使用ARP重定向,要求监测主机与被监测主机位于同一局域网内。

      使用DNS重定向,要求监测主机连接在被监测主机对外通信必须经过的网络设备的镜像端口上。

      (2) 对监测主机权限的要求

      使用ARP重定向,不要求监测主机有任何权限,局域网内任意主机都可以实现监测。

      使用DNS重定向,要求监测主机对网络具有一定的管理权限,才能在网络设备的镜像端口上连接监测主机。

      (3) 重定向成功的难易

      使用ARP重定向,由于ARP缓存列表的更新策略是以新记录为准,无论被监测主机上是否存在相应的记录,都容易成功。

      使用DNS重定向,由于DNS缓存列表的更新策略是以有效的旧记录为准,一旦被监测主机的HOST文件或DNS缓存列表中记录未失效,则无法成功。

      (4)对网络性能的影响

      使用ARP重定向,监测主机实际上成为网关的代理,要负责转发被监测主机与外网主机的所有通信流量,容易形成性能瓶颈;而且在监测过程中产生极大的ARP通信流量,局域网内其他主机的通信也会造成一定影响;被监测的主机数量越多,对监测主机的转发性能要求就越高,网络性能能就会越差,因此极不适合监控太多主机。

      使用DNS重定向,监测主机只需转发所监测的特定网络应用的流量(本文中特指SSL通信流量),对网络性能的影响较小;并且只在建立重定向的时候发送一次伪造报文,建立后无额外的通信量,对其他主机几乎没有影响;由于正常情况下,一台主机的SSL通信流量相对较小,因此在一定范围内增加被监测主机的数量对网络性能不会有明显影响。

      (5) 监测行为的隐蔽性

      使用ARP重定向,在监测过程中会发送大量的ARP包,容易被检测出来;由于受监测主机的网络性能受到较大影响,该主机的用户更容易感受到异常。

      使用DNS重定向,伪造报文只发送一次,被检测出来的概率较低;用户一般也无法从网络性能上感受到异常。