网络监听技术

网络监听技术
第一部分 
作者:Yiming Gong
http://security.zz.ha.cn

申明:任何形式的摘抄必须保留上述作者和http地址

网络监听,在网络安全上一直是一个比较敏感的话题,作为一种发展比较成熟的技术,监听在协助网络管理员监测网络传输数据,排除网络故障等方面具有不可替代的作用,因而一直倍受网络管理员的青睐。然而,在另一方面网络监听也给以太网安全带来了极大的安全隐患,我们可以看到通常的网络入侵在得手后往往会跟随着后续的以太网内网络监听行为,造成以太网内口令失窃,敏感数据截获等等连锁性安全事件。 
网络监听引起人们普遍注意是在94年开始的,在94年间,相继发生了几次大的安全事件。我们可以在海军的一份安全指南中看到:94年2月,一个不知名的人在众多的主机和骨干网络设备上安装了网络监听软件,利用它对互联网和军方网窃取了超过100,000个有效的用户名和口令。参见:www.chips.navy.mil/archives/94_jul/file14.html 

上述事件可能是互联网上最早期的大规模的网络监听事件了,它使早期网络监听从"地下"走向了公开,并逐步在大众中普及开来。

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

这是两个很有意思的问题,在具体陈述之前,我们先跳过两个问题,先介绍一下网络监听是如何发生的吧。

为什么会发生网络监听

有一点基本上每个人都清楚,一台接在以太网内的计算机为了和其他主机进行通讯,在硬件上需要网卡,在软件上需要驱动程序和tcp/ip套件。每块网卡在出厂时都有一个唯一的不与世界上任何一块网卡重复的48bits的硬件地址,称为mac地址,它标识网卡本身。同时,网卡和网卡之间的tcp/ip通讯实现,还需要在每块网卡上绑定一个唯一的ip地址。

上面说到的这些相信对大多数人来讲不算太陌生,那它们之间的关系如何呢?我们知道,在以太网体系中,挂接在网络上的所有网络设备都是依靠物理地址来收发数据帧的,以太网的网卡设备驱动程序丝毫不会关心ip数据报中的目的ip地址。这是一个很重要的概念。使用包分析软件观察网络层的ip数据报,可以看到它的目的地址是目标系统的ip地址,而观察网络层下的链路层的数据帧结构我们不难发现,它是在ip层的数据报上增加了一个链路层的首部,而这个首部中的目的地址是48bits的目标系统的硬件地址。这个硬件地址是如何得到的呢?依靠arp。

关于这一点,在Richard stevens的tcp/ip illustrated中有一端很确切的描述:"The fundamental concept behind ARP is that the network interface has a hardware address (a 48-bit value for an Ethernet or token ring interface). Frames exchanged at the hardware level must be addressed to the correct interface. But TCP/IP works with its own addresses: 32-bit IP addresses. Knowing a host's IP address doesn't let the kernel send a frame to that host. The kernel (i.e., the Ethernet driver) must know the destination's hardware address to send it data. The function of ARP is to provide a dynamic mapping between 32-bit IP addresses and the hardware addresses used by various network technologies."这是一个很好的解释,为了避免重复的arp数据包的数量,目前一般的网络设备都会自身维持着一个arp的缓存,里面是已知的mac地址和ip地址的对应表,如果通讯时系统在自己的ARP缓存内找不 到目标的物理地址,就会进行arp的广播请求报文,在以太网内的每台设备都会接收到该ARP报文,但只有IP地址与ARP报文中的目的IP地址相 同的主机发送ARP应答帧,并会在应答帧中填上自己的物理地址,这样一次ARP地址解析就完成,并会加入到系统的arp缓存中去。
为了明确的说明这个问题,我们不妨举一个例子来看看:我们现在有A,B两台主机,通过hub相连在一个以太网内,现在A机上的一个用户想要访问B机提供的WWW服务,那么当A机上的用户在浏览器中键入B的ip地址,得到B机提供的web服务时,从7层结构的角度上来看都发生了什么呢?

1:首先,当A上的用户在浏览器中键入B机的地址,发出浏览请求后,A机的应用层得到请求,要求访问IP地址为B的主机,
2:应用层于是将请求发送到7层结构中的下一层传输层,由传输层实现利用tcp对ip建立连接。
3:传输层将数据报交到下一层网络层,由网络层来选路
4:由于A,B两机在一个共享网络中,IP路由选择很简单:IP数据报直接由源主机发送到目的主机。
5:由于A,B两机在一个共享网络中,所以A机必须将32bit的IP地址转换为48bit的以太网地址,请注意这一工作是由arp来完成的。
6:链路层的arp通过工作在物理层的hub向以太网上的每个主机发送一份包含目的地的ip地址的以太网数据帧,在这份请求报文中申明:谁是B机IP地址的拥有者,请将你的硬件地址告诉我。
7:在同一个以太网中的每台机器都会"接收"(请注意这一点!)到这个报文,但正常状态下除了B机外其他主机应该会忽略这个报文,而B机网卡驱动程序识别出是在寻找自己的ip地址,于是回送一个arp应答,告知自己的ip地址和mac地址。
8:A机的网卡驱动程序接收到了B机的数据帧,知道了B机的mac地址,于是以后的数据利用这个已知的MAC地址作为目的地址进行发送。
9:需要特别指出的一点是:由于以太网的工作原理,尽管B机告知了自己是该ip地址的所有者,但这并不意味着在一个网络内的其他主机听不到A和B之间的通讯,只是在正常状况下其他主机会忽略这些通讯报文而已!如果这些主机不愿意忽略这些报文的话,那么,对于在这个网段上的每台主机的网络接口而言,任何在网络上传输的信息都是可以被听到的。 从上面我们知道,如果将网络接口设置为混杂模式(promiscuous),一台主机可以默不作声的轻松的听到以太网内传输的所有信息,也就是说:窃听也就因此实现了!

未完待续 

 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值