网络监听技术与常规测试方法

兰色雪狐mouduan007@sina.com

一、网络监听技术概述

     网络监听(Monitor)在网络安全上一直是一个比较敏感的话题,作为一种发展比较成熟的技术,监听在协助网络管理员监测网络传输数据,排除网络故障等方面具有不可替代的作用,因而一直倍受网络管理员的青睐。然而,在另一方面网络监听也给以太网安全带来了极大的隐患,许多的网络入侵往往都伴随着以太网内网络监听行为,从而造成口令失窃,敏感数据被截获等等连锁性安全事件。

 网络监听在安全领域引起人们普遍注意是在94年开始的,在19942月间,相继发生了几起大的安全事故,一个不知名的人在众多的主机和骨干网络设备上安装了网络监听软件,利用它对美国骨干互联网和军方网窃取了超过100000个有效的用户名和口令。上述事件可能是互联网上最早期的大规模的网络监听事件了,它使早期网络监听"地下"走向了公开,并迅速的在大众中普及开来。

 关于网络监听常常会有一些有意思的问题,如:"我现在有连在网上的计算机了,我也有了窃听的软件了,那么我能不能窃听到微软(或者美国国防部,新浪网等等)的密码?又如:我是公司的局域网管理员,我知道hub很不安全,使用hub这种网络结构将公司的计算计互连起来,会使网络监听变得非常容易,那么我们就换掉hub,使用交换机,不就能解决口令失窃这种安全问题了么?

 这是两个很有意思的问题,我们在这里先不做回答,相信读者看完全文后会有自己正确的答案。

1.网络监听原理

 

  Ethernet(以太网,它是由施乐公司发明的一种比较流行的局域网技术,它包含一条所有计算机都连接到其上的一条电缆,每台计算机需要一种叫接口板的硬件才能连接到以太网)协议的工作方式是将要发送的数据包发往连接在一起的所有主机。在包头中包括有应该接收数据包的主机的正确地址,因为只有与数据包中目标地址一致的那台主机才能接收到信息包,但是当主机工作在监听模式下的话不管数据包中的目标物理地址是什么,主机都将可以接收到。许多局域网内有十几台甚至上百台主机是通过一个电缆、一个集线器连接在一起的,在协议的高层或者用户来看,当同一网络中的两台主机通信的时候,源主机将写有目的的主机地址的数据包直接发向目的主机,或者当网络中的一台主机同外界的主机通信时,源主机将写有目的的主机IP地址的数据包发向网关。但这种数据包并不能在协议栈的高层直接发送出去,要发送的数据包必须从TCP/IP协议的IP层交给网络接口,也就是所说的数据链路层。网络接口不会识别IP地址的。在网络接口由IP层来的带有IP地址的数据包又增加了一部分以太祯的祯头的信息。在祯头中,有两个域分别为只有网络接口才能识别的源主机和目的主机的物理地址这是一个48位的地址,这个48位的地址是与IP地址相对应的,换句话说就是一个IP地址也会对应一个物理地址。对于作为网关的主机,由于它连接了多个网络,它也就同时具备有很多个IP地址,在每个网络中它都有一个。而发向网络外的祯中继携带的就是网关的物理地址。

     首先,我们知道,一台接在以太网内的计算机为了和其他主机进行通讯,在硬件上是需要网卡,在软件上是需要网卡驱动程序的。而每块网卡在出厂时都有一个唯一的不与世界上任何一块网卡重复的硬件地址,称为mac地址。同时,当网络中两台主机在实现TCP/IP通讯时,网卡还必须绑定一个唯一的IP地址。下面用一个常见的unix命令ifconfig来看一看本人在实验室内一台正常工作的机器的网卡:

 [007mouyorty@server/root]# ifconfig -a

hme0: flags=863 mtu 1500

  inet 192.168.1.35 netmask ffffffe0   [IP地址]

 ether 8:0:20:c8:fe:15     [mac地址]

从这个命令的输出中我们可以看到上面讲到的这些概念,如第二行的192.168.1.35ip 地址,第三行的8:0:20:c8:fe:15mac地址。请注意第一行的BROADCASTMULTICAST,这是什么意思?一般而言,网卡有几种接收数据帧的状态,如unicastbroadcastmulticastpromiscuous等。

unicast__是指网卡在工作时接收目的地址是本机硬件地址的数据帧。

Broadcast__是指接收所有类型为广播报文的数据帧。

Multicast__是指接收特定的组播报文。

Promiscuous__是通常说的混杂模式,是指对报文中的目的硬件地址不加任何检查,全部接收的工作模式。

 

 

对照这几个概念,看看上面的命令输出,我们可以看到,通常网卡应该只是接收发往自身的数据报文,广播和组播报文,请大家记住这个概念。

对网络使用者来说,浏览网页,收发邮件等都是很平常,很简便的工作,其实在后台这些工作是依靠TCP/IP协议族实现的,大家知道有两个主要的网络体系:OSI参考模型和TCP/IP参考模型,OSI模型即为通常说的7层协议,它由下向上分别为物理层、数据链路层、网络层、传输层、会话层、表示层、应用层  (参见图1)

tcp/ip模型中去掉了会话层和表示层后,由剩下的5层构成了互联网的基础,在网络的后台默默的工作着。

     下面我们不妨从tcp/ip模型的角度来看数据包在局域网内发送的过程:

当数据由应用层自上而下的传递时,在网络层形成ip数据报,再向下到达数据链路层,由数据链路层将ip数据报分割为数据帧,再加上以太网包头,继续向下一层发送。需要注意的是,以太网的包头中包含着本机和目标设备的mac地址。即链路层的数据帧发送时,是依靠48位的以太网地址而非ip地址来确认的,以太网的网卡设备驱动程序不会关心ip数据报中的目的ip地址,它所需要的仅仅是mac地址。

                     1.OSI各层结构与功能示意图

 

 

 

目标ipmac地址又是如何获得的呢?

 

 

发端主机会向以太网上的每个主机发送一份包含目的地的ip地址的以太网数据帧(称为arp数据包),并期望目的主机回复,从而得到目的主机对应的mac地址,并将这个mac地址存入自己的一个arp缓存内。

    当局域网内的主机都通过HUB等方式连接时,一般都称为共享式的连接,这种共享式的连接有一个很明显的特点:就是HUB会将接收到的所有数据向HUB上的每个端口转发,也就是说当主机根据mac地址进行数据包发送时,尽管发送端主机告知了目标主机的地址,但这并不意味着在一个网络内的其他主机听不到发送端和接收端之间的通讯,只是在正常状况下其他主机会忽略这些通讯报文而已!如果这些主机不愿意忽略这些报文,网卡被设置为promiscuous状态的话,那么,对于这台主机的网络接口而言,任何在这个局域网内传输的信息都是可以被听到的。

[举例]

    我们不妨举一个例子来看看:我们现在有A,B两台主机,通过hub相连在一个以太网内,现在A机上的一个用户想要访问B机提供的WWW服务,那么当A机上的用户在浏览器中键入Bip地址,得到B机提供的web服务时,从7层结构的角度上来看都发生了什么呢???

    1:首先,当A上的用户在浏览器中键入B机的地址,发出浏览请求后,A机的应用层得到请求,要求访问IP地址为B的主机;

    2:应用层于是将请求发送到7层结构中的下一层传输层,由传输层实现利用tcpip建立连接;

    3:传输层将数据报交到下一层网络层,由网络层来选路径;

    4:由于AB两机在一个共享网络中,IP路由选择很简单:IP数据报直接由源主机发送到目的主机;

    5:由于AB两机在一个共享网络中,所以A机必须将32位的IP地址转换为48位的以太网地址,请注意这一工作是由arp来完成的。

    6:链路层的arp通过工作在物理层的hub向以太网上的每个主机发送一份包含目的地的ip地址的以太网数据帧,在这份请求报文中申明:谁是BIP地址的拥有者,请将你的硬件地址告诉我。

    7:在同一个以太网中的每台机器都会"接收"(请注意这一点!)到这个报文,但正常状态下除了B机外其他主机应该会忽略这个报文,而B机网卡驱动程序识别出是在寻找自己的ip地址,于是回送一个arp应答,告知自己的ip地址和mac地址。

    8A机的网卡驱动程序接收到了B机的数据帧,知道了B机的mac地址,于是以后的数据利用这个已知的MAC地址作为目的地址进行发送。同在一个局域网内的主机虽然也能""到这个数据帧,但是都保持静默,不会接收这个不属于它的数据帧。

 

 

    上面是一种正常的情况,如果网卡被设置为为混杂模式promiscuous),则第8步就会发生变化,这台主机将会默不作声的听到以太网内传输的所有信息,也就是说:窃听也就因此实现了!

这会给局域网安全带来极大的安全问题,一台系统一旦被入侵并进入网络监听状态,那么无论是本机还是局域网内的各种传输数据都会面临被窃听的巨大可能性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值