无线局域网(WLAN)因其安装便捷、组网灵活的优点在许多领域获得了越来越广泛的应用,但由于它传送的数据利用无线电波在空中传播,发射的数据可能到达预期之外的接收设备,因而WLAN存在着网络信息容易被窃取的问题。在网络上窃取数据就叫嗅探,它是利用计算机的网络接口截获网络中数据报文的一种技术。嗅探一般工作在网络的底层,可以在不易被察觉的情况下将网络传输的全部数据记录下来,从而捕获账号和口令、专用的或机密的信息,甚至可以用来危害网络邻居的安全或者用来获取更高级别的访问权限、分析网络结构进行网络渗透等。
WLAN中无线信道的开放性给网络嗅探带来了极大的方便。在WLAN中网络嗅探对信息安全的威胁来自其被动性和非干扰性,运行监听程序的主机在窃听的过程中只是被动的接收网络中传输的信息,它不会跟其它的主机交换信息,也不修改在网络中传输的信息包,使得网络嗅探具有很强的隐蔽性,往往让网络信息泄密变得不容易被发现。尽管它没有对网络进行主动攻击和破坏的危害明显,但由它造成的损失也是不可估量的。只有通过分析网络嗅探的原理与本质,才能更有效地防患于未然,增强无线局域网的安全防护能力。
网络嗅探原理
要理解网络嗅探的实质,首先要清楚数据在网络中封装、传输的过程。根据TCP/IP协议,数据包是经过层层封装后,再被发送的。假设客户机A、B和FTP服务器C通过接入点(AP)或其他无线连接设备连接,主机A通过使用一个FTP命令向主机C进行远程登录,进行文件下载。那么首先在主机A上输入登录主机C的FTP口令,FTP口令经过应用层FTP协议、传输层TCP协议、网络层IP协议、数据链路层上的以太网驱动程序一层一层包裹,最后送到了物理层,再通过无线的方式播发出去。主机C接收到数据帧,并在比较之后发现是发给自己的,接下来它就对此数据帧进行分析处理。这时主机B也同样接收到主机A播发的数据帧,随后就检查在数据帧中的地址是否和自己的地址相匹配,发现不匹配就把数据帧丢弃。这就是基于TCP/IP协议通信的一般过程。
网络嗅探就是从通信中捕获和解析信息。假设主机B想知道登陆服务器C的FTP口令是什么,那么它要做的就是捕获主机A播发的数据帧,对数据帧进行解析,依次剥离出以太帧头、IP包头、TCP包头等,然后对报头部分和数据部分进行相应的分析处理,从而得到包含在数据帧中的有用信息。
在实现嗅探时,首先设置用于嗅探的计算机,即在嗅探机上装好无线网卡,并把网卡设置为混杂模式。在混杂模式下,网卡能够接收一切通过它的数据包,进而对数据包解析,实现数据窃听。其次实现循环抓取数据包,并将抓到的数据包送入下一步的数据解析模块处理。最后进行数据解析,依次提取出以太帧头、IP包头、TCP包头等,然后对各个报头部分和数据部分进行相应的分析处理。
相应防范策略
尽管嗅探隐蔽而不易被察觉,但并不是没有防范方法,下面的策略都能够防范嗅探。
——加强网络访问控制。一种极端的手段是通过房屋的电磁屏蔽来防止电磁波的泄漏,通过强大的网络访问控制可以减少无线网络配置的风险。同时配置勘测工具也可以测量和增强AP覆盖范围的安全性。虽然确知信号覆盖范围可以为WLAN安全提供一些有利条件,但这并不能成为一种完全的网络安全解决方案。攻击者使用高性能天线仍有可能在无线网络上嗅探到传输的数据。
——网络设置为封闭系统。为了避免网络被NetStumbler之类的工具发现,应把网络设置为封闭系统。封闭系统是对SSID标为“any”的客户端不进行响应,并且关闭网络身份识别的广播功能的系统。它能够禁止非授权访问,但不能完全防止被嗅探。
——采用可靠的协议进行加密。如果用户的无线网络是用于传输比较敏感的数据,那么仅用WEP加密方式是远远不够的,需要进一步采用像电子邮件连接的SSL方式。它是一个介于HTTP协议与TCP协议之间的可选层,SSL是在TCP之上建立了一个加密通道,对通过这一层的数据进行加密,从而达到保密的效果。
使用安全Shell而不是Telnet也是必不可少的。SSH是一个在应用程序中提供安全通信的协议。连接是通过使用一种来自RSA的算法建立的。在授权完成后,接下来的通信数据是用IDEA技术来加密的。SSH后来发展成为F-SSH,提供了高层次的、军方级别的对通信过程的加密。它为通过TCP/IP网络通信提供了通用的最强的加密。目前,还没有人突破过这种加密方法。嗅探到的信息自然将不再有任何价值。此外,使用安全拷贝而不是用文件传输协议也可以加强数据的安全性。
——一次性口令技术。通常的计算机口令是静态的,极易被网上嗅探窃取。采用S/key一次性口令技术或其它一次性口令技术,能使窃听账号信息失去意义。S/key的原理是远程主机已得到一个口令(这个口令不会在不安全的网络中传输),当用户连接时会获得一个“质询”信息,用户将这个信息和口令经过某个算法运算,产生一个正确的“响应”信息(如果通信双方口令正确的话)。这种验证方式无需在网络中传输口令,而且相同的“质询/响应信息”也不会出现两次。
网络嗅探实现起来比较简单,特别是借助良好的开发环境,可以通过编程轻松实现预期目的,但防范嗅探却相当困难。目前还没有一个切实可行、一劳永逸的方法。在尽量实现上面提到的安全措施外,还应注重不断提高网管人员的安全意识,做到多注意、勤检查。