网络监听是黑客们常用的一种方法。当成功地登录进一台网络上的主机,并取得了这台主机的超级用户的权限之后,往往要扩大战果,尝试登录或者夺取网络中其他主机的控制友。而网络监听则是一种最简单而且最有效的方法,它常常能轻易地获得用其他方法很难获得的信息。 在网络上,监听效果最好的地方是在网关、路由器、防火墙一类的设备处,通常由网络管理员来操作。使用最方便的是在一个以太网中的任何一台上网的主机上,这是大多数黑客的做法。 以太网中可以监听的原因 在电话线路和无线电、微波中监听传输的信息比较好理解,但是人们常常不太理解为什么局域网中可以进行监听。甚至有人问:能不能监听不在同一网段的信息。下面就讲述在以太网中进行监听的一些原理。在令牌环中,道理是相似的。 对于一个施行网络攻击的人来说,能攻破网关、路由器、防火墙的情况极为少见,在这里完全可以由安全管理员安装一些设备,对网络进行监控,或者使用一些专门的设备,运行专门的监听软件,并防止任何非法访关。然而,潜入一台不引人注意的计算机中,悄悄地运行一个监听程序,一个黑客是完全可以做到的。监听是非常消耗CPU资源的,在一个担负繁忙任务的计算机中进行监听,可以立即被管理员发现,因为他发现计算机的响应速度令人惊奇慢。 对于一台连网的计算机,最方便的是在以太网中进行监听,只须安装一个监听软件,然后就可以坐在机器旁浏览监听到的信息了。 以太网协议的工作方式为将要发送的数据包发往连在一起的所有主机。在包头中包含着应该接收数据包的主机的正确地址。因此,只有与数据包中目标地址一致的那台主机才能接收信包。但是,当主机工在监听模式下,无论数据包中的目标物理地址是什么,主机都将接收。 在Internet上,有许多这样的局域网。几台甚至十几台主机通过一条电缆一个集线器连在一起。在协议的高层或用户看来,当同一网络中的两台主机通信时,源主机将写有目的主机IP地址的数据包发向网关。但是,这种数据包并不能在协议栈的高层直接发送出去。要发送的数据包必须从TCP/IP协议的IP层交给网络接口,即数据链路层。 网络接口不能识别IP地址。在网络接口,由IP层来的带有IP地址的数据包又增加了一部分信息:以太帧的帧头。在帖头中,有两个域分别为只有网络接口才能识别的源主机和目的主机的物理地址,这是一个48位的地址。这个48位的地址是与IP地址对应的。也就是说,一个IP地址,必然对应一个物理地址。对于作为网关的主机,由于它连接了多个网络,因此它同时具有多个IP地址,在每个网络中,它都有一个。发向局域网之外的帧中携带的是网关的物理地址。 在以太网中,填写了物理地址的帧从网络接口中,也就是从网卡中发送出去,传送到物理的线路上。如果局域网是由一条粗缆或细缆连接机而成,则数字信号在电缆上传输,信号能够到达线路上的每一台主机。当使用集线器时,发送出去的信号到达集线器,由集线器再发向连接在信线器上的每一条线路。于是,在物理线路上传输的数字信号也能到达连接在集线器上的每一主机。 数字信号到达一台主机的网络接口时,在正常情况下,网络接口读入数据帧,进行检查,如果数据帧中携带的确良物理地址是自己的,或者物理地址是广播地址,则将数据帧交给上层协议软件,也就是IP层软件,否则就将这个帧丢弃。对于每一个到达网络接口的数据帧,都要进行这个过程。然而,当主机工作在监听模式下,则所有的数据帧都将被交给上层协议软件处理。 局域网的这种工作方式,一个形象的例子是,大房间就像是一个共享的信道,里面的每个人好像是一台主机。人们所说的话是信息包,在大房间中到处传播。当我们对其中某个人说话时,所有的人都能听到。但只有名字相同的那个人,才会对这些话语做出反映,进行处理。其余的人听到了这些谈话,只能从发呆中猜测,是否在监听他人的谈话。 当连接在同一条电缆或集线器上的主机被逻辑地分为几个子网时,如果一台主机处于监听模式下,它还能接收到发向与自己不在同一子网(使用了不同的掩码、IP地址和网关)的主机的那些信包。也就是说,在同一条物理信道上传输的所有信息都可以被接收到。 许多人会问:能不能监听不在同一个网段计算机传输的信息。答案是否定的,一台计算机只能监听经过自己网络接口的那些信包。否则,我们将能监听到整个Internet,情形会多么可怕。 要使主机工作在监听模式下,需要向网络接口(Interface)发送I/O控制命令,将其设置为监听模式。在UNIX系统中,发送这些命令需要超级用户的权限。这一点限制了在UNIX系统中,普通用户是不能进行网络监听的。只有获得超级用户权限,才能进行网络监听。但是,在上网的Windows 95中,则没有这个限制。只要运行这一类的监听软件即可。同时,在微机上运行的这类软件具的操作方便,对监听到信息的综合能力强的特点。 目前的绝大多数计算机网络使用共享的通信信道。从上面的讨论中,我们知道,通信信道的共享意味着,计算机有可能接收发向另一台计算机的信息。 另外,要说明的是,Internet中使用的大部分协议都是很早设计的,许多协议的实现都是基于一种非常友好的,通信的双方充分信任的基础之上。因此,直到现在,网络安全还是非常脆弱的。在通常的网络环境下,用户的所有信息,包手户头和口令信息都是以明文的方式在网上传输。因此,对于一个网络黑客和网络攻击者进行网络监听,获得用户的各种信息并不是一件很困难的事。只要具有初步的网络和TCP/IP协议知识,便能轻易地从监听到的信息中提取出感兴趣的部分。 网络监听常常要保存大量的信息,对收集的信息进行大量的整理工作,因此,正在进行监的机器对用户的请求响应很慢。 首先,网络监听软件运行时,需要消耗大量的处理器时间,如果在此时,就详细地分析包中的内容,许多包就会来不信接收而漏掉。因此,网络监听软件通常都是将监听到的包存放在文件中,待以后再分析。 其次,网络中的数据包非常复杂,两台主机之间即使连续发送和接受数据包,在监听到的结果中,中间必然会夹杂了许多别的主机交互的数据包。监听软件将同一TCP会话的包整理到一起,已经是很不错了。如果还希望将用户的详细信息整理出眯,需要根据协议对包进行大量的分析。面对网络上如此众多的协议,这个监听软件将会十分庞大。 其实,找这些信息并不是一件难事。只要根据一定的规律,很容易将有用的信息一一提取出来。
|