论文部分内容阅读
摘要:为更好地保证计算机局域网内部数据资源不被泄密和偷盗,一方面要完善局域网内的信息安全管理;另一方面须采用先进网络技术对送出网络的信息进行监控,使信息不被泄密。后者的基本思路是拦截输出网络的信息,对这些信息进行安全检查,只有通过安全检查的信息才允许传输到外面的网络。
关键词:网络嗅探器;信息安全;数据包截获
0 引言
随着计算机网络技术的飞速发展,计算机网络已经显示出广域分布、体系结构开放、资源共享和信道共用等特征,已被广泛用于金融、贸易、商业、企业、教育等各个领域,但是在网络上存储、共享和传输的信息被非法窃听、截取、篡改或破坏而导致的损失也日益严重。在众多的企业信息安全事故中,只有很少一部分是黑客越过网络安全设施,破坏网络内部信息资源所致,而绝大部分是由企业或者公司内部员工泄密造成。因为相对黑客,内部员工更易直接接触到保密数据信息,随时随地都有可能被员工通过网络方式泄密出去。因此,确保存储在计算机局域网内部的数据和程序不被泄密和偷盗,网络内部计算机的信息处理和加工安全可靠,网络的通信不被截获等等成为目前所关注的问题。
1 实现的基本思路
1.1 局域网内信息传送到外部网的工作过程
确保计算机局域网信息的安全,就是要设法保证局域网内部的重要信息无法传送到网络外部去。众所周知,在局域网中的计算机只有通过网关才能将局域网中的信息发送到外部网。因此,一种方法是对通过网关出去的所有数据包进行捕获和解码,阻止包含泄密信息的数据包通过网关;另一种方法是对网络中每台计算机发送出去的数据包进行捕获和解码以阻止泄密数据包外传。
在网关上对外传的所有信息进行监控截获,实现相对比较简单,而且网关服务器不用担心监视程序被终止、监控记录被篡改等问题,且由于客户机没有网络安全监控,具有隐蔽性好的特点。缺点是网络数据包截获、数据检查、阻止信息泄密都集中在网关上进行,网关服务器要有较高的处理能力和比较高的硬件性能,因此成本高。对局域网中的每台计算机送出的信息进行监控,其优点是只对本机的每个网络数据包进行数据截获、数据检查、阻止信息泄密,所以效率高,同时由于每个客户端均安装监控设备,有警示作用,对网关没有任何要求,具有成本低的特点;缺点是客户终端上的检查程序有可能被人为终止。本文采用后者实现。
1.2 网络嗅探器的工作原理
使用监听程序软件可以监听到所有局域网内的数据通信,这种监听程序被称为网络嗅探器(Network Sniffer),其基本原理是对经过局域网的每台计算机或网关的数据包进行捕获和解码,从链路层协议开始进行解码分析,一直分析到应用层协议,最后获取数据包中需要的内容。这种网络数据包的截获机制是,截获整个网络的所有信息流,根据信息源主机、目标主机、服务协议和端口等信息简单过滤掉不关心的数据,再将用户感兴趣的数据发送给更高层的应用程序进行分析。
嗅探程序的设计一般有如下几个阶段:
包捕获设置 包括网络适配器的识别和网卡混杂模式的设置。
过滤器设置 对数据包的捕获设定一些条件,如按某些特定的IP地址进行过滤;或根据网络协议只捕获某种特定的协议,如TCP或UDP包中的数据;或过滤包含特定信息的数据包,例如包含用户名和密码信息的数据包。
数据分析 对捕获的数据进行分析处理,获得数据包中的上层信息。
1.3 网络嗅探器的设计方法
本文所设计的系统的核心功能是要嗅探出网络数据包中是否含有危及安全的信息。要实现对数据包内容的嗅探,首先要对网络数据包进行截获。在网络OSI 7层模型上,在不同网络层上可以有不同的截获数据包的方法,如图1所示。
从图1看出,一种技术是采用Winsock 2 SPI,它工作在API之下Driver之上,利用这项技术可以截获所有的基于Socket的网络通信。它工作在应用层;不但CPU占用率低,效率高,并且以DLL的形式存在,编程、调试方便,而且封包还没有按照低层协议进行切片,所以比较完整,很容易做内容过滤,缺点是无法拦截不用Socket的网络通信;另一种是采用NDIS-Hook的技术,建立于网络驱动程序接口规范的基础上。NDIS-HOOK工作原理是,直接替换NDIS函数库中的函数地址,让所有对NDIS的请求先经过特定函数的处理,再转发给系统函数处理。NDIS-HOOK不但编程方便、接口简单、性能稳定,可以只截获自己需求的、不需要冗余的代码;而且功能强大,可以截获所有NDIS和TDI函数,甚至HOOK系统函数的处理结果,截获封包较为底层,不容易被穿透,所以安全性高。但须了解操作系统底层驱动的开发方法以及一些系统API的使用,实现难度较大。
一般对计算机局域网的网络(网卡)信息截获编程主要采用Winsock 2 SPI技术和NDIS-Hook技等技术。本文使用Winpcap开发技术包来实现。通过截获数据包,然后进行安全信息的过滤和检查,对违反规则的数据包进行记录和阻止,实现计算机信息安全,大大减少了系统的开发工作量。Winpcap(Windows packet capture)是Windows平台下一个免费、公共的网络访问系统,由一个数据包监听设备驱动程序,一个低级的动态连接库和一个高级的静态连接库组成。数据包监听设备驱动程序直接从数据链路层取得网络数据包不加修改地传递给运行在用户层的应用程序;数据包监听设备驱动程序支持BPF过滤机制,可以灵活地设置过滤规则;低级的动态链接库运行在用户层,把应用程序和数据包监听设备驱动程序隔离开来,使得应用程序可以不加修改地在不同的Windows系统上运行。高级的静态链接库和应用程序编译在一起,它使用低级动态链接库提供的服务,向应用程序提供完善的监听接口。它为Win32应用程序提供了访问网络底层的能力,它还提供以下功能:捕获原始数据报,包括共享网络上各主机发送/接收的以及相互之间交换的数据报;在数据报发往应用程序之前,按照自定义的规则将某些特殊的数据报过滤掉;在网络上发送原始的数据报;收集网络通信过程中的统计信息等功能。
1.4 系统设计的工作过程
本课题的具体任务如下:
(1)实现对所有发送出去的信息进行在线登记;
(2)拦截危及安全的信息;
(3)系统设计采用端口侦听和监控,并记录哪台计算机、什么时间、作了何种操作;
(4)处理结果采取组织、警告等处理登记通知用户;
(5)系统采用托盘程序设计,功能类似于防火墙,但目的不对外,对内。
2 系统实现
在局域网中,对网卡的编程有很多种方法。通常的套接字程序只能响应与自己硬件地址相匹配的或是以广播方式发出的网络数据帧,对于其它形式的数据帧,网络接口在验证目的 地址并非自身地址之后将不引起响应,也就是说应用程序无法接收到达的数据包。因此不能让网卡按通常的正常模式工作,须将其设置为混杂模式。这样则无论监听到的数据帧的目的地址如何,网卡都能予以接收。
系统采用C/S结构实现,在计算机局域网上设置一台服务器,而局域网上的每台计算机作为客户端。系统总体框架如图2所示。
从图2可以看出,服务器端主要负责从局域网内包含重要信息的文档中抽取一些关键词和关键段组成关键字,分发到局域网中的每台计算机,供客户端程序对截获信息包的信息按照一定算法进行匹配,找出哪台计算机泄露局域网内重要信息,并对其进行拦截。服务器端由监控管理模块、关键字管理模块、信息通讯模块组成;客户端主要负责对从网卡发送出去的数据包进行拦截,对拦截的信息包进行关键字信息匹配,对匹配成功的信息包进行拦截,并把相关信息通过通讯模块送到监控日志中,提醒用户终止操作。客户端由信息监控模块和信息通讯模块组成。下面详细介绍其实现过程。
2.1 客户端实现
客户端模块启动时,首先从服务器端下载所有重要信息的关键字到客户端的关键字字符串数组中,将客户端的网卡设置为混杂模式,截获从本机发出的所有网络数据包,对截获的数据包与关键字字符串数组进行匹配,匹配出某个数据包中包含关键字列表中任何一个关键字时,记录到匹配可疑数组中。当可疑数组中有多个匹配记录时,客户端则将本机信息和违规内容生成一条记录,告知用户,并将其发送到服务端,进行存档,便于单位局域网的后续处理。客户端工作流程如图3所示。
客户端程序的关键是判断截获的数据包中含有危及信息安全的信息。可疑数组生成过程如下:首先根据截获信息包中的目的地址创建一个可疑数组,然后对所有截获信息包内容与设定条件进行比对,信息包不匹配的予以放行;若匹配成功,则根据截获信息包的目的地址,把截获的内容填入对应的可疑数组中。截获的匹配信息包将不予以转发到外网,从而达到信息安全的目的。
2.2 服务器端实现
服务器端的主要功能有:对局域网内部不能送出去的信息文档,按照一定的规律从文档中提取关键词,对关键词按照文档内容的先后次序进行排序;对局域网内所有计算机送出的数据包提供日志功能,并提供一个方便的对违规记录的管理;设置直接转发的通信凭证。
2.3 系统测试
本系统的设计,在几个单位进行了实验,结果见表1。
从表1中可以看出,本系统可以对常见的明文数据传输进行很好的监控。但无法监控采用加密手段的数据传输。
3 结束语
整个系统采用C/S模式实现,客户端采用系统托盘方式设计,在客户端后台运行。从上面的测试结果可以看出,对BBS、电子邮件、明文(没有经过加密)、常规压缩和FYP方式送出的文档进行信息监控和信息拦截的效果非常理想,但对一些特殊加密的网络传输内容,虽然能截获,但解析不出其内容是否含有加密信息。这是今后需要改进的。总体上,本系统的运行,大大增强了计算机局域网的内部信息安全,由于系统把关键字检测运算分配到局域网内每台机器,相比在网关上运行检测运算,因为不会对网络传输速度造成影响,效率比较高。
关键词:网络嗅探器;信息安全;数据包截获
0 引言
随着计算机网络技术的飞速发展,计算机网络已经显示出广域分布、体系结构开放、资源共享和信道共用等特征,已被广泛用于金融、贸易、商业、企业、教育等各个领域,但是在网络上存储、共享和传输的信息被非法窃听、截取、篡改或破坏而导致的损失也日益严重。在众多的企业信息安全事故中,只有很少一部分是黑客越过网络安全设施,破坏网络内部信息资源所致,而绝大部分是由企业或者公司内部员工泄密造成。因为相对黑客,内部员工更易直接接触到保密数据信息,随时随地都有可能被员工通过网络方式泄密出去。因此,确保存储在计算机局域网内部的数据和程序不被泄密和偷盗,网络内部计算机的信息处理和加工安全可靠,网络的通信不被截获等等成为目前所关注的问题。
1 实现的基本思路
1.1 局域网内信息传送到外部网的工作过程
确保计算机局域网信息的安全,就是要设法保证局域网内部的重要信息无法传送到网络外部去。众所周知,在局域网中的计算机只有通过网关才能将局域网中的信息发送到外部网。因此,一种方法是对通过网关出去的所有数据包进行捕获和解码,阻止包含泄密信息的数据包通过网关;另一种方法是对网络中每台计算机发送出去的数据包进行捕获和解码以阻止泄密数据包外传。
在网关上对外传的所有信息进行监控截获,实现相对比较简单,而且网关服务器不用担心监视程序被终止、监控记录被篡改等问题,且由于客户机没有网络安全监控,具有隐蔽性好的特点。缺点是网络数据包截获、数据检查、阻止信息泄密都集中在网关上进行,网关服务器要有较高的处理能力和比较高的硬件性能,因此成本高。对局域网中的每台计算机送出的信息进行监控,其优点是只对本机的每个网络数据包进行数据截获、数据检查、阻止信息泄密,所以效率高,同时由于每个客户端均安装监控设备,有警示作用,对网关没有任何要求,具有成本低的特点;缺点是客户终端上的检查程序有可能被人为终止。本文采用后者实现。
1.2 网络嗅探器的工作原理
使用监听程序软件可以监听到所有局域网内的数据通信,这种监听程序被称为网络嗅探器(Network Sniffer),其基本原理是对经过局域网的每台计算机或网关的数据包进行捕获和解码,从链路层协议开始进行解码分析,一直分析到应用层协议,最后获取数据包中需要的内容。这种网络数据包的截获机制是,截获整个网络的所有信息流,根据信息源主机、目标主机、服务协议和端口等信息简单过滤掉不关心的数据,再将用户感兴趣的数据发送给更高层的应用程序进行分析。
嗅探程序的设计一般有如下几个阶段:
包捕获设置 包括网络适配器的识别和网卡混杂模式的设置。
过滤器设置 对数据包的捕获设定一些条件,如按某些特定的IP地址进行过滤;或根据网络协议只捕获某种特定的协议,如TCP或UDP包中的数据;或过滤包含特定信息的数据包,例如包含用户名和密码信息的数据包。
数据分析 对捕获的数据进行分析处理,获得数据包中的上层信息。
1.3 网络嗅探器的设计方法
本文所设计的系统的核心功能是要嗅探出网络数据包中是否含有危及安全的信息。要实现对数据包内容的嗅探,首先要对网络数据包进行截获。在网络OSI 7层模型上,在不同网络层上可以有不同的截获数据包的方法,如图1所示。
从图1看出,一种技术是采用Winsock 2 SPI,它工作在API之下Driver之上,利用这项技术可以截获所有的基于Socket的网络通信。它工作在应用层;不但CPU占用率低,效率高,并且以DLL的形式存在,编程、调试方便,而且封包还没有按照低层协议进行切片,所以比较完整,很容易做内容过滤,缺点是无法拦截不用Socket的网络通信;另一种是采用NDIS-Hook的技术,建立于网络驱动程序接口规范的基础上。NDIS-HOOK工作原理是,直接替换NDIS函数库中的函数地址,让所有对NDIS的请求先经过特定函数的处理,再转发给系统函数处理。NDIS-HOOK不但编程方便、接口简单、性能稳定,可以只截获自己需求的、不需要冗余的代码;而且功能强大,可以截获所有NDIS和TDI函数,甚至HOOK系统函数的处理结果,截获封包较为底层,不容易被穿透,所以安全性高。但须了解操作系统底层驱动的开发方法以及一些系统API的使用,实现难度较大。
一般对计算机局域网的网络(网卡)信息截获编程主要采用Winsock 2 SPI技术和NDIS-Hook技等技术。本文使用Winpcap开发技术包来实现。通过截获数据包,然后进行安全信息的过滤和检查,对违反规则的数据包进行记录和阻止,实现计算机信息安全,大大减少了系统的开发工作量。Winpcap(Windows packet capture)是Windows平台下一个免费、公共的网络访问系统,由一个数据包监听设备驱动程序,一个低级的动态连接库和一个高级的静态连接库组成。数据包监听设备驱动程序直接从数据链路层取得网络数据包不加修改地传递给运行在用户层的应用程序;数据包监听设备驱动程序支持BPF过滤机制,可以灵活地设置过滤规则;低级的动态链接库运行在用户层,把应用程序和数据包监听设备驱动程序隔离开来,使得应用程序可以不加修改地在不同的Windows系统上运行。高级的静态链接库和应用程序编译在一起,它使用低级动态链接库提供的服务,向应用程序提供完善的监听接口。它为Win32应用程序提供了访问网络底层的能力,它还提供以下功能:捕获原始数据报,包括共享网络上各主机发送/接收的以及相互之间交换的数据报;在数据报发往应用程序之前,按照自定义的规则将某些特殊的数据报过滤掉;在网络上发送原始的数据报;收集网络通信过程中的统计信息等功能。
1.4 系统设计的工作过程
本课题的具体任务如下:
(1)实现对所有发送出去的信息进行在线登记;
(2)拦截危及安全的信息;
(3)系统设计采用端口侦听和监控,并记录哪台计算机、什么时间、作了何种操作;
(4)处理结果采取组织、警告等处理登记通知用户;
(5)系统采用托盘程序设计,功能类似于防火墙,但目的不对外,对内。
2 系统实现
在局域网中,对网卡的编程有很多种方法。通常的套接字程序只能响应与自己硬件地址相匹配的或是以广播方式发出的网络数据帧,对于其它形式的数据帧,网络接口在验证目的 地址并非自身地址之后将不引起响应,也就是说应用程序无法接收到达的数据包。因此不能让网卡按通常的正常模式工作,须将其设置为混杂模式。这样则无论监听到的数据帧的目的地址如何,网卡都能予以接收。
系统采用C/S结构实现,在计算机局域网上设置一台服务器,而局域网上的每台计算机作为客户端。系统总体框架如图2所示。
从图2可以看出,服务器端主要负责从局域网内包含重要信息的文档中抽取一些关键词和关键段组成关键字,分发到局域网中的每台计算机,供客户端程序对截获信息包的信息按照一定算法进行匹配,找出哪台计算机泄露局域网内重要信息,并对其进行拦截。服务器端由监控管理模块、关键字管理模块、信息通讯模块组成;客户端主要负责对从网卡发送出去的数据包进行拦截,对拦截的信息包进行关键字信息匹配,对匹配成功的信息包进行拦截,并把相关信息通过通讯模块送到监控日志中,提醒用户终止操作。客户端由信息监控模块和信息通讯模块组成。下面详细介绍其实现过程。
2.1 客户端实现
客户端模块启动时,首先从服务器端下载所有重要信息的关键字到客户端的关键字字符串数组中,将客户端的网卡设置为混杂模式,截获从本机发出的所有网络数据包,对截获的数据包与关键字字符串数组进行匹配,匹配出某个数据包中包含关键字列表中任何一个关键字时,记录到匹配可疑数组中。当可疑数组中有多个匹配记录时,客户端则将本机信息和违规内容生成一条记录,告知用户,并将其发送到服务端,进行存档,便于单位局域网的后续处理。客户端工作流程如图3所示。
客户端程序的关键是判断截获的数据包中含有危及信息安全的信息。可疑数组生成过程如下:首先根据截获信息包中的目的地址创建一个可疑数组,然后对所有截获信息包内容与设定条件进行比对,信息包不匹配的予以放行;若匹配成功,则根据截获信息包的目的地址,把截获的内容填入对应的可疑数组中。截获的匹配信息包将不予以转发到外网,从而达到信息安全的目的。
2.2 服务器端实现
服务器端的主要功能有:对局域网内部不能送出去的信息文档,按照一定的规律从文档中提取关键词,对关键词按照文档内容的先后次序进行排序;对局域网内所有计算机送出的数据包提供日志功能,并提供一个方便的对违规记录的管理;设置直接转发的通信凭证。
2.3 系统测试
本系统的设计,在几个单位进行了实验,结果见表1。
从表1中可以看出,本系统可以对常见的明文数据传输进行很好的监控。但无法监控采用加密手段的数据传输。
3 结束语
整个系统采用C/S模式实现,客户端采用系统托盘方式设计,在客户端后台运行。从上面的测试结果可以看出,对BBS、电子邮件、明文(没有经过加密)、常规压缩和FYP方式送出的文档进行信息监控和信息拦截的效果非常理想,但对一些特殊加密的网络传输内容,虽然能截获,但解析不出其内容是否含有加密信息。这是今后需要改进的。总体上,本系统的运行,大大增强了计算机局域网的内部信息安全,由于系统把关键字检测运算分配到局域网内每台机器,相比在网关上运行检测运算,因为不会对网络传输速度造成影响,效率比较高。