首页 百科知识 网络监听原理及检测

网络监听原理及检测

时间:2022-10-01 百科知识 版权反馈
【摘要】:大多数非法的网络监听程序都是运行在网络中安装了TCP/IP协议栈的主机上,这就意味着如果向这些计算机发送一个请求,它们将产生回应。没有运行网络监听程序的主机将忽略该帧,不产生回应。非法的网络监听程序会发送DNS反向查询数据,因此,可以通过检测它产生的DNS传输流进行判断。

1. 网络监听的原理

网络监听是一种数据链路层的技术,利用的是共享式的网络传输介质。共享意味着网络中的一台机器可以监听到传递给本网段(冲突域)中的所有机器的报文。例如,最常见的以太网就是一种共享式的网络技术。以太网卡收到报文后,通过对目的地址进行检查,来判断是否是传递给自己的,如果是,则把报文传递给操作系统;否则,将报文丢弃,不进行处理。网卡存在一种特殊的工作模式,在这种工作模式下,网卡不对目的地址进行判断,而直接将它收到的所有报文都传递给操作系统进行处理。这种特殊的工作模式,被称为混杂模式(Promiscuous Mode)。网络监听器通过将网卡设置为混杂模式,并利用数据链路访问技术来实现对网络的监听。实现了数据链路层的访问,我们就可以把监听能力扩展到任意类型的数据链路帧,而不光是IP数据报。例如Tcpdump,Netxray就是直接访问数据链路层的常用程序。

2. 网络监听防范措施

网络监听是很难被发现的,因为运行网络监听的主机只是被动地接收在局域局上传输的信息,不是主动地与其他主机交换信息,也没有修改在网上传输的数据包。

(1) 从逻辑或物理上对网络分段。

网络分段通常被认为是控制网络广播风暴的一种基本手段,但其实也是保证网络安全的一项措施。其目的是将非法用户与敏感的网络资源相互隔离,从而防止可能的非法监听。

(2) 以交换式集线器代替共享式集线器。

对局域网的中心交换机进行网络分段后,局域网监听的危险仍然存在。这是因为网络最终用户的接入往往是通过分支集线器而不是中心交换机,而使用最广泛的分支集线器通常是共享式集线器。这样,当用户与主机进行数据通信时,两台机器之间的数据包(称为单播包Unicast Packet)还是会被同一台集线器上的其他用户所监听。因此,应该以交换式集线器代替共享式集线器,使单播包仅在两个节点之间传送,从而防止非法监听。当然,交换式集线器只能控制单播包而无法控制广播包(Broadcast Packet)和多播包(Multicast Packet)。但广播包和多播包内的关键信息,要远远少于单播包。

(3) 使用加密技术。

数据经过加密后,通过监听仍然可以得到传送的信息,但显示的是乱码。使用加密技术的缺点是影响数据传输速度以及使用一个弱加密术比较容易被攻破。系统管理员和用户需要在网络速度和安全性上进行折中。

(4) 划分VLAN。

运用VLAN(虚拟局域网)技术,将以太网通信变为点到点通信,可以防止大部分基于网络监听的入侵。

3. 网络监听检测方法

(1) PING方法。

大多数非法的网络监听程序都是运行在网络中安装了TCP/IP协议栈的主机上,这就意味着如果向这些计算机发送一个请求,它们将产生回应。PING方法就是向可疑主机发送包含正确IP地址和错误MAC地址的PING包。没有运行网络监听程序的主机将忽略该帧,不产生回应。如果得到回应,那么说明可疑主机确实在运行网络监听程序。目前针对这种检测方法,有的网络监听程序已经增加了虚拟地址过滤功能。而且从这种方法可以引申出其他方法:任何产生回应的协议都可以利用,比如TCP,UDP等。

(2) ARP方法。

这也是本文重点要描述的sniffer检测方法,以下将根据连接网络的不同介质来介绍:共享介质环境中,利用ARP协议,由检测主机通过创建并发送目的IP地址是可疑主机的IP,而MAC地址不同于此主机的ARP请求包,所有计算机都将收到这个ARP请求包,但只有运行了sniffer的主机的网卡驱动程序会直接将这个请求包传送给内核协议栈进行处理,其他主机会丢弃这个ARP请求包。可以通过接收可疑主机是否有ARP应答包来判断该主机的网卡是否处于混杂模式来进一步做出判断。交换介质环境中,通过对ARP欺骗原理分析发现,当网络中存在sniffer进行ARP欺骗时,会有以下两种情况出现:一是出现源IP地址相同、源MAC地址不同的ARP冲突应答包,这是由于欺骗主机向目标主机发送构造的ARP应答包,而被骗主机在正常响应ARP请求时也会发送正确的ARP应答包,这样网络中就出现了两种不同的ARP冲突应答包;二是为了达到稳定欺骗效果,某主机周期性发送ARP Reply包,且发包频率高于正常的ARP包出现频率。假定交换机是可管理的,可以得到通过交换机的所有数据拷贝,将运行反窃听程序的主机接到交换机监听口,监视流经交换机的所有ARP数据包,对收到的每一个ARP包进行IP−MAC地址对解析,再与缓存表中的地址对进行比较来判断是否有监听行为发生。

(3) DNS反解析。

非法的网络监听程序会发送DNS反向查询数据,因此,可以通过检测它产生的DNS传输流进行判断。检测者通过监听 DNS 服务器接收到的反向域名查询数据,可以判断对这些地址进行反向查询的机器就是在查询包中所包含的IP地址,也就是说在运行非法的网络监听程序。由于DNS反解析检测sniffer是利用执行者的主观行为,因此有一定的局限性。

(4) 时间延时方法。

时间延时方法也称为负载检测。这种方法在网络中发送大量数据,这对设置在非混杂模式的机器没有影响,但是对运行sniffer程序的机器有影响,特别是用于口令的语法分析应用层协议。只要在发送数据之前以及发送数据之后,PING主机对比两次的响应时间差别就可以检测。这种方法很有效,甚至比内核协议栈反射原理还有用,但实际应用中仍然有很大的局限性,发送大量的数据增加sniffer主机的负载没有问题,主要是使用什么样的方法来反映主机负载。许多操作系统的TCP/IP协议栈总是对PING包尽快做出响应,一收到PING请求包,系统就立即应答,主机负载不明显。当然可以采用优先级比较低的 TCP 层以上的服务,如FTP,TELnet,但是有经验的sniffer会关闭相应的服务,从而无法实现主机负载的检测。

(5) 流量特征方式。

交换方式下Sniffer行为的一个特征是其他主机的流量被引流到Sniffer主机,然后这些流量被Sniffer主机重新发送到网关。在这种方式下,很可能出现sniffer主机流量非常的大,同时进出流量基本相等的外部表现,通过网络管理口捕获数据包的方法可以及时发现这一反常特征,从而检测运行非法网络监听程序的主机。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈