APP下载

基于Windows平台下的网络监听检测技术研究

2012-11-29

铜陵学院学报 2012年6期
关键词:网段监听网卡

张 昊 杨 静

(1.铜陵学院,安徽 铜陵 244000;2.安徽工业职业技术学院,安徽 铜陵 244000)

1.概述

网络监听[1]是涉及网络安全的一项重大安全隐患。它是利用计算机的网络接口捕获数据包从而入侵计算机的一种工具,换句话说,监听行为就是网络上的“窃听行为”。它一般工作在网络的底层,能够记录网络中传输的全部数据。网络监听给用户带来的主要危害:(1)捕获口令;(2)捕获专用或者机密的信息;(3)偷窥机密敏感信息;(4)获取更高级别的访问权限。

在现代众多对监听行为进行检测的技术中一种是对网卡工作模式进行检测。因为网卡的工作模式决定了该主机是否被监听,如果是混杂莫是说明主机被监听了。通常使用Ping模式进行检测:当网络实行监听的时候,发出监听的主机网卡必定处于混杂模式,这是可以构造一个伪ICMP数据包向网络中的各个主机发送,网卡为混杂模式就会响应。本文研究的是在Windows平台下利用安全开发包Winpcap取代PING模式的方法,这种方法,更加的方便,准确。

2.Windows平台下网络数据包捕获机制

2.1 Windows操作系统的总体架构

Windows操作系统的总体架构分为两个层次[2][3],即应用层(或称用户态)和核心层(内核态)。应用层是可以被用户直接接触,在这一层中包括了所有的应用程序与动态链接库(DLL),动态链接库是应用程序的一部分,随时被应用程序调用。传输层即TDI,是传输驱动的接口,负责对信息进行检索、分析、分类、重组等工作,TCP协议就在这一层处理数据包。从物理层到传输层都处于核心层,其程序是驱动程序,表现为.vxd和.sys,内核态的网络体系结构如图1:

图1 Windows内核态网络体系结构

会话层是SPI,属于应用层,它的链接库(DLL)的形式,主要功能就是链接核心层驱动程序和高层应用程序,而应用层常见的是EXE文件,负责将数据传输结果显示给用户,并将用户下达的命令传送到下层。TCP/IP的应用层OSI结构的高3层,传输层的命名相同,TCP/IP的网络层名称为网络-互连层。用户态的Windows的网络体系结构见图2:

图2 Windows用户态网络体系结构

从这两个图形可以发现网络驱动的分层结构,在用户态(user-mode)和内核态(kernel-mode)这两个层面就可以进行拦截Windows下的网络数据包工作。

2.2 数据包的捕获机制

捕获技术可以应用在不同的网络结构中,只是操作系统的变化而导致捕获数据的机理发生改变。以太网使用了广播机制,在捕获的同时可以看见所有的网络中的数据,通常情况为操作系统提供了以下三种捕获机制[3]:

(1)SOCK_PACKET

SOCK_PACKET是Linux中的一种套接字类型,其主要目的是用来访问网络数据链路层,它的实现由操作系统提供的编程接口来进行。

(2)数据链路提供者接口(DLPI)

数据链路提供者接口(Data Link Provider Interface)是使用者和提供者之间的标准接口,是基于UNIX的数据流机制的基础上实现的。使用此接口者既可以访问数据链路服务的高层协议,也可以是用户的应用程序。

(3)伯克利数据包过滤器(BPF)[4]

伯克利数据包过滤器(Berkeley Packet Filter)工作在操作系统的内核层,主要由网络转发和数据包过滤两部分构成,转发与过滤是相互承接的,转发来的数据包直接发送至过滤部分进行过滤,从而筛选并取舍数据包。

在实际应用中,Windows平台下实现网络数据包捕获技术的代表是Winpcap。它与BPF捕获机制是一致的。

3.Winpcap结构模块

Winpcap是Windows平台下实现数据包的捕获而设计的主要有三部分构成[5]:

(1)内核层的数据包过滤模块NPF(Netgroup Packet Filter),其作用主要是捕获数据包,同时对捕获到的数据包进行转发与存储,最后通过上述过程对该网络进行统计分析。所以NPF就实现了内核层的统计功能。从而数据包的捕获和过滤在内核层中达到高效的处理过程。

(2)动态链接库packet.dll。它是低层的调用接口,其主要作用就是为使用者提供捕获数据包的接口,Winpcap的函数就可以通过packet.dll直接调用。

(3)动态无关库wpcap.dll。它是高层的开发编程接口,任何系统都可以实现函数调用。Winpcap的组成结构如图3所示:

图3 Winpcap组成结构及NPF工作原理

图中的箭头表示数据包的流动方向。从图形中看出数据包是从网络链路层直接取得,统计、存储、过滤过程在不修改的情况下直接传递给用户层的应用程序,而内核层与低级的动态链接数据隔离开,这样应用程序摆脱束缚不同的Windows系统下自由运行。同时,可以看出,Packet.dll是较低级的编程接口位于Wpcap.dll的下层,使用它可以直接和内核进行数据交换,但是使用起来比较烦琐,并不方便。而Winpcap是一个上层接口,使用低级动态链接库提供的服务,向应用程序提供系统的接口来进行包捕获和网络分析。这些接口能用来:获得各种网络适配器、取得适配器的各种信息、通过网络接口卡进行嗅探、向网络发送数据包、把捕获的数据包存储到磁盘上、利用高层语言创建包过滤器。它同时可以和多种安全开发包兼容,使用起来非常方便。Winpcap工作流程如图4所示。

4.网络监听的工作原理

通常情况下数据通过交换机在网段内正常传输时,交换机都会对网段内各个主机的端口进行源和目的MAC地址检测,检测结果会比照内部动态的MAC端口映射表,查找是否有源MAC地址存在于映射表中,若有,数据直接传送。反之,新的MAC地址以及端口加入映射列表中,同时把数据帧依照MAC地址从端口发送出去。

图4 Winpcap捕获函数库的工作流程

一般情况下,IP数据包封装成MAC帧后才能在实际的物理链路上传送。正常情况下主机接受MAC帧的条件是链路中传输MAC帧的目的MAC地址与主机自身的MAC地址相同,然后将其拆封为IP数据包并交给上层模块处理。因此,接收方的MAC地址在发送数据包时就显得很重要了。ARP(地址解析协议)[6]便是用来进行IP与MAC之间的转化。而ARP高速缓存(ARPCache)存在于每台主机内,其作用是反映同网段内各主机的IP地址到MAC地址的映射关系,它通常是不断变化,自动刷新的。而ARP协议能够运行的基础就是主机之间的相互信任。基于以上特点ARP协议存在以下缺点:ARP高速缓存在见到首个ARP协议包才可以判断是否需要动态更新;由于ARP协议客观存在不需要网络连接,所以网段内主机在有无ARP请求的情况下都会做出应答;对于接收的协议包只要是有效的网段内主机就会根据协议吧包内容自动刷新缓存,而不检查该协议包的合法性从这点就充分说明ARP协议没有认证机制。因此黑客会根据其缺陷进行地址欺骗。

ARP欺骗[6]就是使用伪造的MAC地址和IP地址伪装成ARP高速缓存中的另外一台主机的技术从而达到欺骗其他主机正常通信的目的。ARP欺骗的实现如图5和表1所示。

表1 同网段主机IP和MAC地址对照表

图5 监听前后各主机之间的通信变化

从图5和表1对比可以发现在监听前和被监听后主机a和主机b之间通信的变化。主机c在没有实施欺骗前主机a和b都是得到对方正确的IP地址和MAC地址而进行正常的数据传输。而在主机c分别向另外两个主机发送了ARP欺骗包骗取对方的MAC地址从而修改自己的MAC地址变成主机a和b的MAC地址后。主机a在分辨不清正确的MAC地址后,错误的将信息发送给主机c,因为这时主机c的MAC地址和主机2的MAC地址相同。同理主机b也是将数据传错误的送给了主机c,而表面上网络间的数据通讯显示正常,其实这是主机c已经对其他两个主机完成了一次网络监视听过程。

5.监听检测的系统设计

根据ARP的欺骗原理,完成以下监听检测设计工作,首先工作主机的所有地址信息必须取得;然后获取网段内所有主机地址活动列表与相互映射关系;接着在Windows平台下使用Winpcap捕获数据包并同时发送ARP欺骗包对这些主机的网卡的工作模式进行探测。从而判定被检测主机是否被监听,网卡模式为混杂的主机就是被监听主机。根据以上条件系统设计可以进行如下划分:

(1)检测主机地址信息获取模块:主要包括捕获检测机IP地址、子网掩码和MAC地址;

(2)网段内检测主机信息获取模块:以已获取的主机地址信息为基础,向网段内所有检测主机发送ARP欺骗包,最终获取所有活动的地址信息列表,从而完成一一对照关系;

(3)检测监听模块:在已获得网段内个主机的活动列表基础上再次发送ARP欺骗包,借此探测各个主机的网卡工作模式;

(4)生成报告模块:获得测试结果,生成报告文件。

根据这些模块的工作流程,系统设计如图6所示:

图6 系统的工作流程

具体模块设计如下:

(1)检测主机地址信息获取模块设计

在Windows平台下使用Winpcap对网络底层数据包进行捕获,使用Pcap_next_ex和Pcap_sendpacket函数发送ARP欺骗包,从而获取本机IP地址和子网掩码的同时接受数据包见解获取本机MAC地址。最终目的是获取监听检测母机的所有地址信息。

(2)网段内检测主机信息获取模块的设计

通过发送和处理ARP欺骗包获取活动主机列表。同时计算本网段IP地址的范围,依次发送ARP欺骗包。达到骗取MAC和IP地址的目的,最终生成活动主机地址列表。

(3)检测监听模块的设计

关键在于此模块的设计,该模块首先调用了Winpcap中的Pcap_Sendpaeke函数发送ARP欺骗包,再使用pcap_next_ex函数接收数据包,经过这两个过程检测者观察对应的主机对发送数据包的回应,若全部数据包都得到相应回应,则判定其网卡模式为混杂模式,标志为1。反之,其网卡模式为正模式,标志为0。

(4)报告模块的设计

经过所有网段内主机链表的检测,最终输出网段内各个主机的IP和MAC地址判定网卡工作模式,借此判定网段内主机是否被监听,输出检测结构结果,生成TXT文件,得出检测报告。

在设计系统时,先是通过网络安全开发包扫描网络端口,再次发送ARP欺骗包进行监听检测是关键,监听检测系统的实现过程如图7所示。

图7 系统的实现过程

最终经过一组实验得到如下结果:

图8 测试报告

图中导出的测试报告可以清楚的发现,这次检测在此网段检查了10台计算机,其中网卡处于正常模式的有8台,而网卡处于混杂模式的有2台,从而可以肯定这三台网卡处于混杂模式的计算机已经被网络监听了。

6.结束语

自从计算机网络使用以来,伴随着不同的网络安全隐患就从来没有间断过。网络监听实质上就是一种威胁网络正常运行的安全隐患,本文研究网络监听检测技术的结论如下:

(1)网络监听技术是一柄双刃剑,在方便网络管理人员查找网络漏洞、检测网络性能、分析网络流量的同时也会为黑客的入侵提供便利,所以进行网络监听检测十分必要。

(2)在进行网络检测监听中,网络安全开发包winpcap中对其函数组成、数据结构、应用方法的了解是十分重要的。

(3)网络监听检测的作用,可在同一个网段中工作机之间进行正常信息交换,对各工作机的网卡工作模式进行检测,借此判断出被监听的计算机。

(4)在VC环境下进行检测程序的设计,在编写程序过程中,采用多线程编写程序。借助网络安全开发包Winpcap对检测机器扫描,同时发送ARP欺骗包,最终在网段中检测出计算机是否被监听。

[1]秦学.被动监听检测技术的研究与实现[D].贵阳:贵州大学硕士论文,2007.

[2]杜光辉.入侵检测系统中数据预处理技术的研究[D].郑州:郑州大学硕士论文,2008.

[3]刘大伟.分布式资源安全监控系统的研究[D].南京:南京航空航天大学硕士论文,2009.

[4]赵寒松,吴承荣,王国平.旁路监听下VoIP行为分析与内容还原[J].计算机工程,2012,(6):145-147.

[5]Hansen per brinich.Maurice J.bach.Beijing.100083.China.The database design method theories[J].Journal of university of science and technology beijing,2004,11(5):403-405.

[6]秦志红.如何在Windows环境下实现网络监听[J].网络安全技术与应用,2007,9(2):26-29.

猜你喜欢

网段监听网卡
英国风真无线监听耳机新贵 Cambridge Audio(剑桥)Melomania Touch
千元监听风格Hi-Fi箱新选择 Summer audio A-401
部署Linux虚拟机出现的网络故障
单位遭遇蠕虫类病毒攻击
配置局域网访问方式
可变编组动车组制动系统TCN网络信号传输需求研究*
Server 2016网卡组合模式
网络监听的防范措施
应召反潜时无人机监听航路的规划
挑战Killer网卡Realtek网游专用Dragon网卡