科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航



ZDNet>安全频道>ZD评测>网络协议欺骗攻防小结

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

在网络的虚拟环境中和现实中一样,各种各样的人都有,各种各样的欺骗技术也都横行。笔者最近闲来无事总结了一下常见的欺骗技术和防范的方法。希望对广大读者有所帮助……

来源:IT168 2008年04月21日

关键字:攻击防范 IP欺诈

  在网络的虚拟环境中和现实中一样,各种各样的人都有,各种各样的欺骗技术也都横行。笔者最近闲来无事总结了一下常见的欺骗技术和防范的方法。希望对广大读者有所帮助。

  一、ARP欺骗

  ARP协议用于IP地址到MAC地址的转换,此映射关系存储在ARP缓存表中,若ARP缓存表被他人非法修改,则会导致发送给正确主机的数据包发送给另外一台由攻击者控制的主机。ARP欺骗(ARP spoofing),也叫ARP毒药(ARP poison),即可完成这些功能。

  假设攻击者和目标主机在同一个局域网中,并且想要截获和侦听目标主机到网关间的所有数据。当然,对于使用集线器的局域网环境,攻击者只需要把网卡设置为混杂模式即可。但是现在的局域网都是交换机了,不仅可以提高局域网的容量,而且可以提高安全性。在这种情况下,攻击者首先会试探交换机是否存在失败保护模式(fail-safe mode),是交换机所处的特殊模式状态。交换机维护IP地址和MAC地址的映射关系时会花费一定处理能力,当网络通信时出现大量虚假MAC地址时,某些类型的交换机会出现过载情况,从而转换到失败保护模式。若交换机不存在失败保护模式,则需要使用ARP欺骗技术。

  攻击者主机需要两块网卡,IP地址分别是192.168.0.5和192.168.0.6,插入交换机的两个端口,准备截获和侦听目标主机192.168.0.3和路由器192.168.0.1之间的所有通信。另外攻击者主机还需要有IP数据包转发功能,此项功能在Linux下只需要执行命令echo 1> /proc/sys/net/ipv4/ip_forward就可以。以192.168.0.4的网络通信为例,正常的ARP转换如下:

  1.主机A192.168.0.4想要与路由器192.168.0.1通信,从而接入Internet。

  2.主机A以广播的方式发送ARP请求,希望得到路由器的MAC。

  3.交换机收到ARP请求,并把此请求发送给连接到交换机的各个主机。同时,交换机将更新它的MAC地址和端口之间的映射表,即将192.168.0.4绑定它所连接的端口。

  4.路由器收到A的ARP请求后,发出带有自身MAC地址的ARP响应。

  5.路由器更新ARP缓存表,绑定A的IP地址和MAC地址。

  6.交换机收到了路由器对A的ARP响应后,查找它的MAC地址和端口之间的映射表,把此ARP响应数据包发送到相应的端口。同时,交换机更新它的MAC地址和端口之间的影射表,即将192.168.0.1绑定它所连接的端口。

  7.主机A收到ARP响应数据包,更新ARP缓存表,绑定路由器的IP地址和MAC地址。

  8.主机A使用更新后的MAC地址信息把数据发送给路由器,通信通道就此建立。

  ARP欺骗需要攻击者迅速地诱使目标主机192.168.0.3和路由器192.168.0.1都和它建立通信,从而使自己成为中间人MiM(Man in Middle)。换句话说,攻击者的主机此时相当于一个被攻击者完全控制的路由器,目标主机和路由器之间的所有数据通信都要由攻击者主机转发,攻击者也就能对数据作各种处理。要达到同时欺骗目标主机和路由器的目的,攻击者应打开两个命令界面,执行两次ARP欺骗:一次诱使目标主机认为攻击者的主机有路由器的MAC地址,这可以利用IP地址欺骗技术,伪造路由器的IP地址,从攻击者主机的一块网卡上发送给目标主机ARP请求包,则错误的MAC地址和IP地址的映射将更新到目标主机;另一次使路由器相信攻击者的主机具有目标主机的MAC地址,方法和前面相似。

  ARP欺骗的防范:

  中毒的网络,就会一直有发送arp病毒包的,这些arp病毒包会误导你的机器对网关mac地址的解析。所以需要绑定mac地址。两种方法:

  1、列出局域网内所有机器的MAC地址。

  # arpAddress HWtype HWaddress Flags Mask Iface

  192.168.1.1 ether 00:07:E9:2A:6F:C6,然后,绑定MAC地址, #arp -s 192.168.1.1 00:07:E9:2A:6F:C6

  注意:假如用户的网关设置了hostname的话,这里192.168.1.1就有可能需要换成hostname。

  2、创建一个/etc/ethers文件,比如你要绑定网关,那就在/etc/ethers里写上:192.168.1.1 00:07:E9:2A:6F:C6,然后执行 #arp -f ,每次重启机器后需要重新绑定MAC地址。

  另外,mac地址的绑定需要双向的,即机器a绑定了机器b,机器b也要绑定机器a,这样arp病毒才会被彻底挡住。

  二、IP地址欺骗

  IP地址欺骗就是攻击者假冒他人IP地址,发送数据包。因为IP协议不对数据包中的IP地址进行认证,因此任何人不经授权就可以伪造IP包的源地址。

  IP包一旦从网络中发送出去,源IP地址就几乎不用,仅在中间路由器因某种原因丢弃它或到达目标端后,才被使用。这使得一个主机可以使用别的主机的IP地址发送IP包,只要它能把这类IP包放到网络上就可以。因而,如果攻击者把自己的主机伪装成被目标主机信任的好友主机,即把发送的IP包中的源IP地址改成被信任的友好主机的IP地址,利用主机间的信任关系和这种信任关系的实际认证中存在的脆弱性(只通过IP确认),就可以对信任主机进行攻击。注意其中所说的信任关系是指一个被授权的主机可以对信任主机进行方便的访问。例如Unix中的所有的R*命令都采用信任主机方案,所以一个攻击主机把自己的IP改为被信任主机的IP,就可以连接到信任主机,并能利用R*命令开后门达到攻击的目的。

  想要实现IP地址欺骗要注意以下两个问题:

  1.因为远程主机只向伪造的IP地址发送应答信号,攻击者不可能收到远程主机发出的信息,即用C主机假冒B主机IP,连接远程主机A,A主机只向B主机发送应答信号,C主机无法收到;

  2.要在攻击者和被攻击者之间建立连接,攻击者需要使用正确的TCP序列号。

  攻击者使用IP地址欺骗的目的主要有两种:

  1.只想隐藏自身的IP地址或伪造源IP和目的IP相同的不正常包,而并不关心是否能收到目标主机的应答,例如IP包碎片、Land攻击等;

  2.伪装成被目标主机信任的友好主机得到非授权的服务。解决办法:目前最理想的方法是使用防火墙,防火墙决定是否允许外部的IP数据包进入局域网,对来自外部的IP数据包进行检验。假如来自外部的数据包声称有内部地址,它一定是欺骗包。如果数据包的IP地址不是防火墙内的任何子网,它就不能离开防火墙。

  三、路由欺骗

  TCP/TP网络中,IP包的传输路径完全由路由表决定。若攻击者通过各种手段改变路由表,使目标主机发送的IP包到达攻击者能控制的主机或路由器,就可以完成侦听,篡改等攻击方式。

  1.RIP路由欺骗

  RIP协议用于自治系统内传播路由信息。路由器在收到RIP数据报时一般不作检查。攻击者可以声称他所控制的路由器A可以最快的到达某一站点B,从而诱使发往B的数据包由A中转。由于A受攻击者控制,攻击者可侦听、篡改数据。

  RIP路由欺骗的防范措施主要有:路由器在接受新路由前应先验证其是否可达。这可以大大降低受此类攻击的概率。但是RIP的有些实现并不进行验证,使一些假路由信息也能够广泛流传。由于路由信息在网上可见,随着假路由信息在网上的传播范围扩大,它被发现的可能性也在增大。所以,对于系统管理员而言,经常检查日志文件会有助于发现此类问题。

  2.IP源路由欺骗

  IP报文首部的可选项中有“源站选路”,可以指定到达目的站点的路由。正常情况下,目的主机如果有应答或其他信息返回源站,就可以直接将该路由反向运用作为应答的回复路径。

  主机A(假设IP地址是192.168.100.11)是主机B(假设IP地址为192.168.100.1)的被信任主机,主机X想冒充主机A从主机B获得某些服务。首先,攻击者修改距离X最近的路由器G2,使用到达此路由器且包含目的地址192.168.100.1的数据包以主机X所在的网络为目的地;然后,攻击者X利用IP欺骗(把数据包的源地址改为192.168.100.11)向主机B发送带有源路由选项(指定最近的G2)的数据包。当B回送数据包时,按收到数据包的源路由选项反转使用源路由,传送到被更改过的路由器G2。由于G2路由表已被修改,收到B的数据包时,G2根据路由表把数据包发送到X所在的网络,X可在其局域网内较方便地进行侦听,收取此数据包。

  防范IP源路由欺骗的好方法主要有:

  1.配置好路由器,使它抛弃那些由外部网进来的、声称是内部主机的报文;

  2.关闭主机和路由器上的源路由功能。

  四、TCP欺骗

  实现TCP欺骗攻击有两种方法:

  1.非盲攻击

  攻击者和被欺骗的目的主机在同一个网络上,攻击者可以简单地使用协议分析器(嗅探器)捕获TCP报文段,从而获得需要的序列号。以下是其攻击步骤:

  (1)攻击者X要确定目标主机A的被信任主机B不在工作状态,若其在工作状态,也使用SYN flooding等攻击手段使其处于拒绝服务状态。

  (2)攻击者X伪造数据包:B->A:SYN(ISN C),源IP地址使用B,初始序列号ISN为C,给目标主机发送TCP的SYN包,请求建立连接。

  (3)目标主机回应数据包:A->B:SYN(ISN S),ACK(ISN C),初始序列号为S,确认序号为C。由于B处于拒绝服务状态,不会发出响应包。攻击者X使用嗅探工具捕获TCP报文段,得到初始序列号S。

  (4)攻击者X伪造数据包:B->A:ACK(ISN S),完成三次握手建立TCP连接。

  (5)攻击者X一直使用B的IP地址与A进行通信。

  2.盲攻击

  由于攻击者和被欺骗的目标主机不在同一个网络上,攻击者无法使用嗅探工具捕获TCP报文段。其攻击步骤与非盲攻击几乎相同,只不过在步骤(3)中无法使用嗅探工具,可以使用TCP初始序列号预测技术得到初始序列号。在步骤(5)中,攻击者X可以发送第一个数据包,但收不到A的响应包,较难实现交互。

  从攻击者的角度来考虑,盲攻击比较困难,因为目的主机的响应都被发送到不可达的被欺骗主机,攻击者不能直接确定攻击的成败。然而,攻击者可使用路由欺骗技术把盲攻击转化为非盲攻击。

  对TCP欺骗攻击的防范策略主要有:

  (1)使用伪随机数发生工具产生TCP初始序号;

  (2)路由器拒绝来自外网而源IP是内网的数据包;

  (3)使用TCP段加密工具加密。

  五、DNS欺骗

  在网上,用户可以利用IE等浏览器进行各种各样的WEB站点的访问,如阅读新闻、订阅报纸、电子商务等。攻击者可以将用户想要浏览的网页的URL改写成指向攻击者自己的服务器,当用户浏览目标网页的时候,实际上是向攻击者服务器发出请求,那么攻击者就可以达到欺骗或攻击的目的了。例如,可以利用Webserver的网页给客户端机器传染病毒。这种攻击的效果是通过DNS欺骗技术得到的。DNS协议不对转换或信息性的更新进行身份认证,这就使得攻击者可以将不正确的信息掺进来,并把用户引向攻击者自己的主机。

  用一个简单的例子说明

  假如cn.wy.com向xinxin.com的子域DNS服务器120.2.2.2询www.xinxin.com的IP地址时,用户冒充120.2.2.2给www.xinxin.com的IP地址,这个IP地址是一个虚拟的地址,列如202.109.2.2,这cn.wy.com就会把202.109.2.2当www.xinxin.com的地址返还给hk.wy.com了。当hk.wy.com连www.xinxin.com时,就会转向我们提供的那个虚假的IP地址了,这样对www.xinxin.com来说,就算是给黑掉了。因为别人根本连接不上这个域名。 这就是DNS欺骗的基本原理,但正如同IP欺骗一样。DNS欺骗在技术上实现上仍然有一些困难,为了理解这些需要看一下DNS查询包的结构。在DNS查询包中有一个重要的域叫做做标识ID。用来鉴别每个DNS数据包的印记,从客户端设置。由服务器返回,它可以让客户匹配请求与响应。

  如cn.wy.com120.2.2.2 这时黑客只需要用假的120.2.2.2进行欺骗,并且在真正的120.2.2.2返回cn.wy.com信息之前,先于它给出所查询的IP地址。cn.wy.com←120.2.2.2 ,www.xinxin.com的IP地址是1.1.1.1 。在120.2.2.2前cn.wy.com送出一个伪造的DNS信息包,如果要发送伪造的DNS信息包而不被识破,就必须伪造正确的ID,但是,如果无法判别这个标识符的话,欺骗将无法进行。这在局域网上是很容易实现的,只要安装一个sniffer,通过嗅探就可以知道这个ID。但如果是在Internet上实现欺骗,就只有发送大量的一定范围的DNS信息包,通过碰运气的办法来提高给出正确标识ID的机会。

  DNS欺骗的真实过程

  如果已经成功的攻击了120.2.2.2子网中任意一台主机,并且通过安装sniffer的方法对整个子网中传输的包进行嗅探,可以设置只对进出120.2.2.2的包进行观察,从而获得我们需要的标识ID。当DNS服务器120.2.2.2发出查询包时,它会在包内设置标识ID,只有应答包中的ID值和IP地址都正确的时候才能为服务器所接受。这个ID每次自动增加1,所以可以第一次向要欺骗的DNS服务器发一个查询包并监听到该ID值,随后再发一个查询包,紧接着马上发送构造好的应答包,包内的标识ID为预测的值。为了提高成功效率可以指定一个范围,比如在前面监听到的哪个ID+1的范围之间。接上列,如cn.wy.com向120.2.2.2发来了要求查www.xinxin.com的IP地址的包,此时,120.2.2.2上的黑客就要欺骗cn.wy.com。

  cn.wy.com→120.2.2.2 [Query]

  NQY:1 NAN:0 NNS:0 NAD:0 QID:6573

  QY:www.xinxin.com A

  其中NQY,NAN等是查询包的标志位。当这两个标志位为“1”时表示是查询包,这时我们就可以在120.2.2.2上监听到这个包,得到他的ID为6573.然后紧接着我们也向120.2.2.2发出一次查询,使它忙于应答这个包。

  1.1.1.1→120.2.2.2 [Query]

  NQY:1 NAN:0 NNS:0 NAD:0

  QY:other.xinxin.com A

  紧接着发带预测QID的应答包

  120.2.2.2→cn.wy.com [Answer]

  NQY:1 NAN:0 NNS:0 NAD:0 QID:6574

  QY www.xinxin.com PTR

  AN www.xinxin.com PTR 111.222.333.444

  111.222.333.444就是由攻击者来指定的IP地址。注意发这个包时标识ID为前面监听到的ID值加1既6574+1=6575。这样,DNS欺骗就完成了cn.wy.com就会把111.222.333.444当www.xinxin.com的IP地址了。假如111.222.333.444是一台已经被用户控制的计算机,可以把它的主页改成想要的内容,这时当被欺骗的其他用户连接www.xinxin.com时,他就以为这个网站已经被黑掉了。

  防范DNS欺骗的方法是用DNS转换得到的IP地址或域名再次作反向转换进行验证,用户可以通过一些软件来实现。

推广二维码
邮件订阅

如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

重磅专题