开发者社区> 长征2号> 正文

网络嗅探技术浅析

简介:
+关注继续查看

一.嗅探可以做什么?为什么需要嗅探?

  嗅探(sniff),就是窃听网络上流经的数据包,而数据包里面一般会包含很多重要的私隐信息,如:你正在访问什么网站,你的邮箱密码是多少,你在和哪个MM聊QQ等等......而很多攻击方式(如著名的会话劫持)都是建立在嗅探的基础上的。

二.嗅探技术

  在集线器盛行的年代,要做嗅探是件相当简单的事情,你什么事情都不用干,集线器自动会把别人的数据包往你机器上发。但是那个年代已经过去了,现在交换机已经代替集线器成为组建局域网的重要设备,而交换机不会再把不属于你的包转发给你,你也不能再轻易地监听别人的信息了(不熟悉集线器和交换工作原理的朋友可以参考我之前写的文章《网络基础知识1:集线器,网桥,交换机》),注意,只是不再轻易地,不是不行!呵呵,要在交换机网络下做嗅探还是有方法的,接下来我总结一下最近看到的关于交换机网络嗅探的一些方法:>

1.基于ARP欺骗的嗅探技术(对ARP攻击不熟悉可以参看我另外两篇文章《Arp小记》《Arp攻击实战》

  以前搞ARP攻击没什么意思,它顶多就是把一些机器搞得不能上网,真的没啥意思,但自从交换机成为架设局域网的主流设备后,ARP攻击有了新的用途:用ARP欺骗辅助嗅探!原理很简单,先看看下面两幅图:

  2009012111294478.jpg2009012111295173.jpg

  左图是正常通信时,两台机器数据流向。右图是B被A机器ARP欺骗后,两台机器的数据流向,着重看右图,B被ARP欺骗后,数据的流向改变了,数据先是发给了A,然后再由A转发给网关;而从网关接收数据时,网关直接把发给B的数据转发给了A,再由A转发给B,而A的自己的数据流向是正常的。现在B的数据全部要流经A,如果A要监听B是易于反掌的事情了。

  再简单说说这个ARP欺骗的过程吧,也就是怎么实现改变B的数据流向:

  1).现在架设A的IP地址是192.168.1.11,MAC地址是:11-11-11-11-11-11;B的IP地址是192.168.1.77,MAC地址是77-77-77-77-77-77;网关IP地址是192.168.1.1,MAC地址是:01-01-01-01-01-01。

  2).A发送ARP欺骗包(ARP应答包)给B,告诉B:我(A)是网关,你把访问外网的数据发给我(A)吧!ARP欺骗包如下:

  SrcIP: 192.168.1.1 ,SrcMAC:11-11-11-11-11-11

  DstIP: 192.168.1.77 ,DstMAC:77-77-77-77-77-77

  3).A发送ARP欺骗包(ARP应答包)给网关,告诉网关:我(A)是机器B,结果网关把所有给B的数据都发到A那里了。ARP欺骗包如下:

  SrcIP: 192.168.1. 77,SrcMAC:11-11-11-11-11-11

  DstIP: 192.168.1. 1,DstMAC:01-01-01-01-01-01

  4).机器A有一个辅助用的转发软件,它负责把“网关->B”和“B->网关”的数据包转发。

至此,ARP欺骗的辅助任务完成了,接下来就是用你的嗅探器进行偷窥了~噢~哈哈!

  这里有几点值得注意一下的:

  1).ARP欺骗包每隔一段时间要发一次,否则网关和B的ARP缓存会更新!

  2).ARP欺骗完成后,网关的ARP记录会有两记录的MAC地址是相同的,分别是:192.168.1.11(11-11-11-11-11-11)和192.168.1.77(11-11-11-11-11-11),这样可能会比较明显,嗯~可以把A自己在网关的ARP缓存改了:192.168.1.11(01-10-01-10-01-10,乱写一个),但这样会有两个问题:一个是这个MAC是乱写的,局域网内根本没有这个MAC地址的机器,根据交换机的工作原理,网关发给192.168.1.11这IP的机器的数据将会被广播。第二个是,此刻你(A)的正常与外界通信的能力将会丧失。可以权衡考虑一下。

  以前的一篇文章《Arp攻击实战》,里面所使用的ARP攻击工具:"WinArpAttacker",它就有利用这种原理进行嗅探的功能,见下图:

  2009012116560725.jpg

2.欺骗交换机缓存

  用ARP欺骗辅助嗅探是一种比较旧的方式,现在的局域网机器很多都装了ARP防火墙!如果机器装了ARP防火墙,上面的嗅探方式就没用了:<,那还有其他的方式吗?嗯~有!那就是欺骗交换机缓存!

  cncert的一个很出名的会话劫持工具SSCLONE就是采用这种方法进行嗅探的,它的网站上也有专门的文章说明“欺骗交换机缓存”的嗅探方法(见参考资料)。我在这里大概说一下原理吧。

  交换机里面有一张CAM表,记录了Mac-Port信息(这个端口对应的机器的MAC地址是什么),MAC信息的获取是:交换机从转发的数据包中提取。所谓欺骗交换机缓存,就是修改这张CAM表以达到欺骗交换机的目的!比如现在有一个4端口的交换机,它的CAM表如下:

  port1 -- 11-11-11-11-11-11

  port2 -- 22-22-22-22-22-22

  port3 -- 33-33-33-33-33-33

  port4 -- 44-44-44-44-44-44

现在port1的机器A(IP是192.168.1.11,MAC地址为11-11-11-11-11-11)想要嗅探port2的机器B(IP是192.168.1.22,MAC地址为22-22-22-22-22-22),怎么办呢?呵呵~流程如下:

  机器A对外发送一个数据包,如下:

  SrcIP:192.168.1.11  ScrMac:22-22-22-22-22-22

  DstIP:xxx.xxx.xxx.xxx(随便写),DstMac:xx-xx-xx-xx-xx-xx(随便写)

  此时,交换机收到这个包,发现在原来CAM里面,port1对应的机器MAC地址是11-11-11-11-11-11,怎么现在变为:22-22-22-22-22-22了呢??哦,应该是这台机器的MAC地址变了吧~好!那我更新CAM表!

  更新后的交换机CAM表如下:

  port1 -- 22-22-22-22-22-22

  port2 -- 22-22-22-22-22-22

  port3 -- 33-33-33-33-33-33

  port4 -- 44-44-44-44-44-44

现在有port1和port2对应的MAC地址是一样的。如果现在网关(假设现在port4连接的是网关)来了一个数据包是给机器B(IP是192.168.1.22,MAC地址为22-22-22-22-22-22),交换机会顺序查询此刻的CAM表来确定该数据包转发去哪个端口!在查询port1时,发现此端口对应MAC地址和数据包里的MAC地址相同,交换机直接就把包转发到port1的机器A了,由于该包已转发完毕,交换机继续处理下一个数据包......就这样,数据包又再次落入充满窥探欲望的人手中!

  这里也需要注意几个问题:

  1).A收到包后,还是需要转发给B的,不然B和外面的对话就中断了。

  2).当A把包转发给B时,需要修复交换机的CAM表。

当你看完以上这两点注意时,可能会发现利用这种的一些缺陷:

  1).A在转发包给B时需要恢复CAM表,转发后又要再次欺骗。如果在转发包时,网关来了一个数据给B,此时的CAM表是正确的,交换机会把这个数据会直接发给B,A无法监听到这个包,由于每次转发都需要完成以上操作,导致CAM表刷新相当频繁,最后的结果是,A监听到的数据很不完整。

  2).你接的交换机的端口号决定着你的命运!

  如果B接的port1端口,A接的是port2端口,那么,用这种方式,A将永远也嗅探不到B的信息,更悲观的想一下,如果你连接的是这个交换机最后一个端口呢??!:<

  3).跨交换机进行嗅探丢包非常多!

  看下图:

  2009012115302323.jpg

现在交换机A连接交换机B的port1,机器C连接port2,如果没有机器B的话,机器A还是能比较顺利监听机器到C的信息的,但是有了机器B就不同了,交换机的CAM表里port1这条记录,会因为机器A和机器B的发包而经常改变。导致的问题大家也可以想到了。

  现在,防止欺骗交换机缓存的方法只有在交换机处绑定port-mac这对信息,但由于这和交换机原先设计的理念有矛盾,故这个是无法实现的,也就是说,没有办法防止:<

  值得一说的是,现在无线网已经兴起了,和集线器时代一样,在无线网络监听别人的信息是不费吹灰之力的事情,无线网的安全也值深思呀~

  有什么想法大家踊跃发言呀~!:>

三.参考资料:

1.http://www.cncert.net/TEC/network/2008-7-26/161.html

2.http://blog.csdn.net/zhihui13/archive/2008/10/10/3048272.aspx



本文转自hyddd博客园博客,原文链接:http://www.cnblogs.com/hyddd/archive/2009/01/21/1379531.html,如需转载请自行联系原作者。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
使用SSH远程登录阿里云ECS服务器
远程连接服务器以及配置环境
12392 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,大概有三种登录方式:
8936 0
如何设置阿里云服务器安全组?阿里云安全组规则详细解说
阿里云安全组设置详细图文教程(收藏起来) 阿里云服务器安全组设置规则分享,阿里云服务器安全组如何放行端口设置教程。阿里云会要求客户设置安全组,如果不设置,阿里云会指定默认的安全组。那么,这个安全组是什么呢?顾名思义,就是为了服务器安全设置的。安全组其实就是一个虚拟的防火墙,可以让用户从端口、IP的维度来筛选对应服务器的访问者,从而形成一个云上的安全域。
16960 0
windows server 2008阿里云ECS服务器安全设置
最近我们Sinesafe安全公司在为客户使用阿里云ecs服务器做安全的过程中,发现服务器基础安全性都没有做。为了为站长们提供更加有效的安全基础解决方案,我们Sinesafe将对阿里云服务器win2008 系统进行基础安全部署实战过程! 比较重要的几部分 1.
11692 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
17894 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
24727 0
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
19579 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,云吞铺子总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系统盘、创建快照、配置安全组等操作如何登录ECS云服务器控制台? 1、先登录到阿里云ECS服务器控制台 2、点击顶部的“控制台” 3、通过左侧栏,切换到“云服务器ECS”即可,如下图所示 通过ECS控制台的远程连接来登录到云服务器 阿里云ECS云服务器自带远程连接功能,使用该功能可以登录到云服务器,简单且方便,如下图:点击“远程连接”,第一次连接会自动生成6位数字密码,输入密码即可登录到云服务器上。
32674 0
+关注
1703
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
OceanBase 入门到实战教程
立即下载
阿里云图数据库GDB,加速开启“图智”未来.ppt
立即下载
实时数仓Hologres技术实战一本通2.0版(下)
立即下载