Internet的飞速发展大大增加了网络的用户规模,但同时网络中的安全问题也日趋严重。维护网络安全的一项重要技术就是网络的实时监控,因此,对于能够分析、诊断、以及测试网络功能与安全性的工具软件的需求也越来越迫切。而网络分析程序依赖一套捕获数据包的库函数,这就是所谓的包捕获软件。目前已有几种类型的包捕获应用软件,例如:基于原始套接字、基于LibPcap库和基于WinPcap库,而Jpcap是Windows和Linux平台中实现的一个跨平台网络数据包处理开发库。本文就是利用Jpcap来实现对用户访问ASP、JSP、PHP、CGI的Web口令与E-Mail口令的捕获。由于国内大多数网站对用户名与密码口令均采用明文传送,因此使用本文方法可以在局域网内捕获用户名与密码。

一、网络嗅探原理
网络嗅探是一种常用的收集网络数据包的方法,其基本原理对经过网卡的数据包进行捕获和解码,从链路层协议开始进行解码分析,一直到应用层的协议,最后获取数据包中需要的内容。

1 局域网的连接方式
局域网的连接设备主要有HUB和交换机。由于以HUB连接的以太网等很多网络是基于总线方式的,所以当一个机器给另一个机器发送数据时,HUB会将要传送的数据包发送至本网段内的所有主机。这种以广播方式发送数据包的形式使得任何网络接收设备都可以接收到所有正在传送的通讯数据,不过通常情况下主机只将判断为应该接收的数据包传给上层应用程序处理。所以在共享HUB情况下同一网段的所有机器的网卡都能接收到数据。

而交换机能记住每个端口的MAC地址,该哪个机器接收就发往哪个端口,而不是像HUB那样发给所有的端口,所以交换机环境下只有该接收数据的机器的网卡能接收到数据。HUB的工作模式使得共享决定了同一网段同一时间只能有两个机器进行数据通信,而交换机在两个机器传输数据的时候其它端口没有占用,所以其它端口之间也可以同时传输。这就是HUB与交换机不同的两个地方,HUB是同一时间只能有一个机器发送数据并且所有机器都可以接收,只要不是广播数据,交换机同一时间可以有一对机器进行数据传输并且数据是私有的。

2 网卡工作模式
在实际的系统中,数据的收发由网卡来完成,网卡的主要工作原理是整理计算机发往网线上的数据,并将数据包发送出去。当网卡接收到传输来的数据时,根据接收数据帧的目的MAC地址和网卡驱动程序设置的接收模式进行判断,对需要接收的就产生中断信号送CPU,然后由操作系统调用驱动程序进行接收;认为不该接收的就丢弃不管,所以不该接收的数据在网卡处就截断了。对于网卡来说一般有四种接收模式:

(1)广播方式(Broadcast):能够接收网络中的广播信息。

(2)组播方式(Multicast):网卡能够接收组播数据,也就是一个人发出的包可以同时被其他多个有资格的人接收,这些人就形成了一个组,他们在组内的通信是广播式的。

(3)直接方式(Directory):只有目的网卡才能接收该数据。

(4)混杂模式(Promiscuous):能够接收一切通过网卡的数据。

网卡的缺省工作模式包含广播模式和直接模式,即它只接收广播帧和发给自己的帧,而网络数据包捕获程序一般采用第4种模式。

3 数据包截获机制
网络数据包截获机制一般指通过截获整个网络的所有信息流量,根据信息源主机,目标主机,服务协议断口等信息简单过滤掉不关心的数据,再将用户感兴趣的数据发送给更高层的应用程序进行分析。

在局域网中,由于以太网是基于广播方式传送数据的,以太网上的所有主机都共享一条网络总线,所以所有的物理信号都会被传送到每一个主机节点,如果将网卡设置为混杂接受模式,则无论监听到的数据帧目的地址如何,网卡都能予以接收。而TCP/IP协议簇中的应用层协议大多数都是以明文形式在网络上传输,这些明文数据往往包含一些敏感数据,如密码、账号等,因此使用监听程序软件可以监听到所有局域网内的数据通信,得到这些敏感信息。当然,其局限性是只能在局域网的共享冲突域中进行。

嗅探器作为一种网络通讯程序,主要是通过对网卡的编程来实现的,对网卡的编程有很多种方法,通常的套接字程序只能响应与自己硬件地址相匹配的或是以广播方式发出的数据帧,对于其他形式的数据帧,网络接口在验证目的地址并非自身地址之后将不引起响应,也就是说应用程序无法接收到达的数据包。而网络嗅探器的目的恰恰在于从网卡接收所有经过它的数据包,这些数据包既可以是发给自己的也可以是发给别人的。显然,要达到此目的就不能让网卡按通常的正常模式工作,而必须将其设置为混杂模式。嗅探程序的设计一般有如下几个阶段:

(1)包捕获设置:包括网络适配器的识别和网卡混杂模式的设置;

(2)过滤器设置:对数据包的捕获设定一些条件,如可以按某些特定的IP地址进行过滤,也可根据网络协议只捕获某种特定的协议,如TCP或UDP包中的数据,还可以过滤出包含特定信息的数据包,例如包含用户名和密码信息的数据包;

(3)数据分析:对捕获的数据进行分析处理,获得数据包中的上层信息。


评论

该日志第一篇评论

发表评论

评论也有版权!