首页 > 代码库 > 如何成为一名黑客(网络安全从业者)——网络攻击技术篇(3/8 网络协议欺骗)

如何成为一名黑客(网络安全从业者)——网络攻击技术篇(3/8 网络协议欺骗)

2016-09-16 Mr.Quark Quark网络安全
技术分享

 

       这篇是今天的。上一节中我们学习了网络嗅探的相关知识。在这一节我们将一起学习4种网络欺骗的方式:IP地址欺骗、ARP欺骗、TCP欺骗、DNS欺骗。

 

1、IP地址欺骗

        IP地址欺骗是指攻击者伪装假冒第三方的IP地址给目标主机发送包含伪造IP地址的数据包。导致IP地址欺骗的原因是由于TCP/IP协议中的IP协议缺乏对发送方的认证手段,所以攻击者可以轻易构造虚假的IP地址实施网络欺骗行为。

 

        由于攻击者发送给目标地址的IP地址是伪造的第三方IP地址,而不是真正自身的IP,所以目标主机回应的数据包也将以伪造的第三方IP地址作为回应数据包的目标IP。因为这个回应数据包攻击者是无法收到的,所以这种攻击的影响不大,主要用于和其他攻击技术结合使用,已达到网络欺骗的目的。

 

IP地址欺骗示意图

技术分享

 

2、ARP欺骗

        ARP协议主要用于从IP地址到MAC地址的转换。

        网络数据包对应于链路层的数据帧帧头,包含了源主机的MAC地址和目标主机的MAC地址。源主机发出的数据帧中已经包含了目标主机的MAC地址,而目标主机的MAC地址是事先通过ARP协议获得的。如果目标主机的MAC地址在本机的ARP缓存表中没有记录,则需要通过ARP协议进行地址解析来获取。目标主机的MAC地址通过ARP协议获取后,会将IP地址和它的MAC地址对应起来并保存在源主机的ARP缓存表中,以后需要时直接查询使用。那么ARP欺骗是如何进行的呢?

 

(1)ARP欺骗原理

        如果本机曾和其他主机通信过,本机就会在其ARP缓存表中记录下其他主机的IP和对应的MAC地址。但是,主机中的ARP缓存表都有更新机制,每台主机在收到ARP数据包时都会更新自己的ARP缓存表,因此ARP欺骗的原理就是攻击者恶意伪装并发送欺骗性的ARP数据包,致使其他主机收到的ARP数据包后,更新其ARP缓存表,从而建立起错误的IP与MAC对应关系。

 

        因此根据使用环境的不同,我们可以将ARP欺骗分为两种:中间人欺骗与伪装网关欺骗。

 

1) ARP的中间人欺骗攻击

        该攻击主要是在局域网内实施的。

        我们知道,局域网的数据传输依靠的是MAC地址,所以我们假设同一个局域网内有A、B、C三台计算机,它们的MAC地址MAC-A、MAC-B、MAC-C。A和B进行直接通信,而C为攻击者,C想窃取A发送给B的通信内容,因此C要通过实施中间人攻击完成该目标。

 

        首先,C伪造B的身份向A发送ARP数据包,该数据包包含的源IP地址为伪造的B的IP地址,MAC地址为MAC-C,C声称B的MAC地址已经变为了MAC-C。

        A收到这个欺骗性的数据包后,会在A自身的ARP缓存表中建立起B的IP地址与C的MAC地址这个被欺骗的非正常对应关系(在正常情况下,在ARP缓存表中B的IP地址对应的的B的MAC地址MAC-B)。在后续A再发给B的所有数据包中,链路层数据帧帧头中目标主机的MAC地址都是从ARP缓存表中查询B的IP地址时查到的C的MAC地址MAC-C。

        A发给B的数据包发送到局域网后,交换机根据MAC地址进行转发。因为目标MAC地址是C的MAC地址,所以这个数据包发送给C。C在收到这个数据包并解析了A发给B的内容后,为了不被通信双方发现,可以将数据包再转发给B。但是,此时C需要将发送给B的数据包的源IP地址和源MAC地址改为A的,从而不引起B的怀疑。

        同样的,C也可以对B进行ARP欺骗,让B认为C就是A。双向ARP均欺骗成功后,A和B之间的所有数据都会经过中间人C进行转发,而A和B又很难发现C的存在。

 

ARP中间人欺骗攻击示意图

技术分享

 

        如果C发给A的ARP数据包中伪造的源IP地址为B,而所对应的MAC地址是伪造且不存在的;则在A更新后的ARP缓存表中,B的IP地址对应的MAC地址就是一个不存在的地址。那么,在A和B通信时所构造的数据包中,链路层的目标主机B的MAC地址就是一个不存在的MAC地址。在局域网中的交换机进行转发时,这个不存在的MAC地址就不会转发,从而造成A和B之间的通信无法正常进行。这也就是局域网中ARP病毒发作时能够瘫痪和中断网络通信的原因。

 

2)ARP的伪装网关欺骗攻击

        这种攻击主要针对局域网内部主机与外部通信的情况。

        当局域网内的主机要与外网的主机通信时,需要先将数据包发送到交换机,交换机转发给网关,再由网关传输至外网。当主机A想要与外网的主机通信,它对外传输的数据包进行封装时,就要将目标主机的MAC地址写成网关的MAC地址。这样交换机转发这个数据包时就按照MAC地址先转交给网关,再由网关转发到外网。

        如果局域网内的主机C中了ARP病毒,C想要截获A发出的消息内容,那么C就需要向A发送欺骗性的ARP包,声称网关的MAC地址改成了C的MAC地址。这会导致A将这个非正常的IP和MAC对应关系保存到A的ARP缓存表中,此后A若是再给网关转发数据包,由于这个非正常的对应关系,交换机就会将数据包转发给病毒主机C,C由此获得了A发送到外网的通信数据。为了不影响A正常连接外网,病毒主机C再将数据包转给真正的网关。这样也能实现A和外网的数据传输,但通信的内容通过这种伪造网关被C获取了。

 

(2)ARP欺骗的防范

        1)通过IDS、Antiarp、或ARP防火墙等工具设备检测网络内的ARP欺骗,然后定位ARP主机,再通过杀毒软件或手工分析清除ARP病毒。

        2)还可以通过在局域网中进行MAC地址和IP地址的双向静态绑定,使ARP欺骗失效。

 

3、TCP欺骗

        在传输层实施的通信欺骗攻击包括TCP欺骗和UDP欺骗。

 

        TCP欺骗是攻击者在伪造第三方IP地址的条件下,将伪造的数据加载到基于TCP协议传输的应用程序数据包中发送到目标主机,以实现使目标主机与第三方主机传输数据泄露或者造成数据被破坏。TCP协议是基于三次握手的面向连接传输机制,采用了基于序列号的确认重传机制保证数据包的可靠传输。所以,要进行TCP欺骗必须先行预测出第一次握手数据包中的初始序列号,而TCP第一次握手的初始序列号有一定的随机性,因此只有了解了序列号生成算法,才可以实现TCP初始序列号的准确预测。

 

TCP初始序列号常用的生成算法有3种:

        第一种是64K规则法,即在一个TCP连接启动时,在原有序列号基础上怎家一个64000的常量作为新的序列号。

        第二种是与时间相关的产生规则,序列号的值是与时间相关的值。

        第三种是伪随机数产生规则,通过伪随机数产生器产生序列号。

 

(1)非盲攻击

        在攻击者和目标主机在同一个网络时,可以通过网络嗅探工具获得目标主机的数据包,从而预测出TCP初始序列号的攻击方法。实施步骤如下:

        1)攻击者Z要确定与目标主机A有信任关系的主机B没有连入网络,或者在其连入网络的条件下,使用拒绝服务攻击(DoS)等手段使其处于拒绝服务状态。

        2)攻击者Z发送TCP第一次握手的数据包给A,其中数据包中的源IP地址为B,初始序列号假设为c,TCP的SYN标志位1,请求与A建立TCP连接。

        3)目标主机A回应TCP第二次握手的数据包。因为它收到的第一次握手数据包中源IP地址为B,所以第二次我收的数据包也将返回给主机B。此外,数据包中初始序列号假设为s,确认序号为c+1。由于B处于拒绝服务状态,因此不会发出响应包。攻击者Z使用网络嗅探工具捕获目标主机A发出的TCP第二次握手数据包,从而得到初始序列号s。

        4)攻击者Z伪造TCP第三次握手的数据包发送到A。这个数据包中的源IP伪造为B的IP,标志位为ACK,应答序列号为s+1.这样,Z冒名顶替B和目标A完成第三次握手并建立TCP连接。

        5)攻击者Z后续就可以冒用B的IP地址与A进行通信以实施欺骗了。

 

TCP非盲攻击示意图

技术分享

 

(2)盲攻击

        盲攻击发送在攻击者和目标主机不再同一个网络中的情况。由此,攻击者无法通过网络嗅探捕获TCP数据包。因此,无法获得目标主机的初始序列号,而只能通过猜测或探测目标主机的初始序列号,盲攻击也因此得名。

        盲攻击的攻击步骤与非盲攻击类似,不同之处在于无法再第三步中使用嗅探方法得到目标主机A的初始序列号,而只能通过TCP初始序列号预测技术来得到初始序列号。而且在第五步中,攻击者Z可以发送数据包,但收不到A的响应包,难以实现数据的交互。由于目标主机A的相应都被发送到主机B,攻击者不能通过捕获发送给B的数据包以确定攻击是否成功。

        除非攻击者利用路由欺骗技术把目标主机A返回给主机B的数据包转回攻击者,这样可将盲攻击转化为非盲攻击而提高攻击成功的概率。

 

4、DNS欺骗

        DNS欺骗可分为基于DNS服务器的欺骗和基于用户计算机的欺骗。

 

(1)基于DNS服务器的欺骗

        这种欺骗的目标是DNS服务器。

        攻击者先向DNS服务器发送域名对应IP地址的查询请求,DNS服务器在没有此域名的条件下会向更高级别的DNS服务器上传查询请求。此时,攻击者可以伪造更高级别DNS服务器返回的DNS应答包给被他欺骗的DNS服务器,告之此DNS服务器要查询域名的IP地址,这个IP地址往往被设置成攻击者自己服务器的IP地址。被欺骗的DNS服务器收到应答的数据包后,将域名和对应的虚假IP地址记录到自身的缓存中。当有用户查询时,就从缓存中找到虚假IP地址返回给用户,使得用户范文虚假IP地址对应的攻击者的服务器,从而实现欺骗攻击。

        基于DNS服务器的攻击会受到DNS协议本身机制的限制。例如,如果DNS服务器中已经存在相应的记录,DNS欺骗就无法实现。此外,DNS服务器的缓存记录有一定的生存时间,过期失效。

 

(2)基于用户计算机的欺骗

        这种攻击针对的是用户的计算机。

        如果用户计算机所在局域网中有感染ARP病毒的计算机,那么病毒可以通过仿冒网关的ARP欺骗技术将外网返回的DNS应答包进行拦截,并伪造虚假的DNS应答包返回给用户计算机。

        在虚假的DNS应答包中,域名对应的IP地址被替换为攻击者自己服务器的IP地址。用户计算机收到这个虚假的DNS服务器应答包后,会按照DNS应答包中的虚假IP去访问攻击者的服务器,致使用户遭受DNS欺骗。

 

        今天我们一起学习了网络嗅探和网络协议欺骗的相关知识,学习的重点在于理解各种技术的攻击流程,下一节我们一起来学习诱骗式攻击。

 


 

        欢迎大家关注我的微信公众号,学习更多关于网络安全的知识。如果你有什么好的建议,也欢迎通过公众号给我留言,一定虚心接受有益的建议。

 

搜索公众号:Quark网络安全

长按扫下方的二维码↓↓↓↓↓

技术分享


 

        免责声明:本公众号发表的所有文章均旨在传播网络安全知识及指导用户保护隐私,至于用户将所学知识用于何种目的或造成何种后果,本微信公众号均无力控制,也概不负责。

        图片源自网络,如有侵权,请告之。

 

如何成为一名黑客(网络安全从业者)——网络攻击技术篇(3/8 网络协议欺骗)