一种基于过滤驱动的安全审计系统.pdf

上传人:a*** 文档编号:624663 上传时间:2018-02-26 格式:PDF 页数:17 大小:2.03MB
返回 下载 相关 举报
摘要
申请专利号:

CN201410178630.8

申请日:

2014.04.29

公开号:

CN104063633A

公开日:

2014.09.24

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效IPC(主分类):G06F 21/10申请日:20140429|||公开

IPC分类号:

G06F21/10(2013.01)I; H04L29/06

主分类号:

G06F21/10

申请人:

航天恒星科技有限公司

发明人:

王斌; 王海涛; 谭东宇; 王守信; 刘华; 刘翔宇

地址:

100086 北京市海淀区知春路82号院

优先权:

专利代理机构:

中国航天科技专利中心 11009

代理人:

安丽

PDF下载: PDF下载
内容摘要

本发明提出一种基于过滤驱动的安全审计系统,包括:系统过滤驱动模块、客户端采集模块、客户端处理模块和客户端发送模块,其中系统过滤驱动模块包括NDIS(Network Driver Interface Specification,网络驱动接口规范)驱动模型的中间层过滤驱动模块和PNP(Plug-and-Play,即插即用)驱动模型的USB设备过滤驱动模块。本发明提高了安全审计系统的安全性。

权利要求书

1.  一种基于过滤驱动的安全审计系统,其特征在于包括:系统过滤驱动模块、客户端采集模块、客户端处理模块和客户端发送模块,其中系统过滤驱动模块包括NDIS(Network Driver Interface Specification,网络驱动接口规范)驱动模型的中间层过滤驱动模块和PNP(Plug-and-Play,即插即用)驱动模型的USB设备过滤驱动模块;
NDIS驱动模型的中间层过滤驱动模块,创建NDIS协议驱动设备,将此设备绑定所有NDIS小端口驱动,以获取网卡设备接收的网络数据;创建NDIS小端口驱动设备,将此设备绑定所有NDIS协议驱动,以获取NDIS协议驱动发送的网络数据;设置分发函数,将获取的网络数据进行Kerberos协议和CIFS协议关键字匹配,将以上两种协议的敏感网络数据通过共享内存传输给客户端采集模块;
PNP驱动模型的USB设备过滤驱动模块,通过绑定PCI总线设备驱动,设置USB设备添加设备分发函数,USB设备插入时,通过构造IRP(I/O RequestPackage,输入输出请求包)获取USB设备类型和型号信息,将捕获的USB设备数据通过共享内存传输给客户端采集模块;
客户端采集模块:初始化两个采集线程和信息缓存队列,两个采集线程和信息缓存队列分别对应接收缓存NDIS驱动模型的中间层过滤驱动模块和PNP驱动模型的USB过滤驱动模块的数据;在每个采集线程中,各自初始化共享内存,将共享内存传递给对应的过滤驱动,作为客户数据缓存区,各自初始化共享事件,作为跟对应的过滤驱动进行事件通信的标志;当系统过滤驱动模块捕获客户数据时,将数据缓存至共享内存,并触发对应的共享事件,采集线程读取客户数据,采集线程首先读取对应的共享内存数据,将数据缓存至对应的信息缓存队列,将对应的共享事件置位,将对应的共享内存清空,继续等待共享事件被触发;当信息缓存队列中存在数据时,客户端采集模块会创建处理线程,调用对应的客户端处理模块处理接口,对客户信息缓存队列中的数据进行处理;
客户端处理模块:首先初始化缓存客户端基本信息,客户端基本信息包括客户登录用户名、客户登录主机名、作为审计日志基本信息;然后接收客户端采集模块采集的CIFS协议、Kerberos协议和USB设备数据,进行CIFS协议文件操作数据处理或者进行Kerberos协议登录数据处理或者进行USB设备数据处理;所述CIFS协议文件操作数据处理初始化FID缓存队列,通过解析CIFS协议网络数据包中的操作命令字段,采取相应的操作命令处理流程,将CIFS协议网络数据包中的操作信息和审计基本信息,生成相应的审计日志,调用客户端发送模块发送审计日志;所述进行Kerberos协议登录数据处理,首先初始化登录用户名缓存队列,通过解析获取Kerberos协议请求包中的客户端登录用户名和Kerberos协议返回包中的登录结果,将以上信息缓存到登录用户名缓存队列,当前登录用户名出错次数如果是5的倍数,将登录用户名和审计日志基本信息组成审计日志,调用客户端发送模块发送审计日志;所述进行USB设备数据处理,解析数据获取其中的USB设备型号信息和设备ID信息,将USB设备型号信息、设备ID信息和审计日志基本信息组成审计日志,调用客户端发送模块发送审计日志;
客户端发送模块:初始化日志缓存队列和网络套接字连接,将客户端处理模块中的审计日志放入日志缓存队列中,通过网络套接字将日志发送到日志服务器。

2.
  根据权利要求1的一种基于过滤驱动的安全审计系统,其特征在于:所述NDIS驱动模型的中间层过滤驱动模块设置分发函数实现过程如下:
a.通过设置驱动分发函数,将本驱动捕获的网络数据包进行处理,根据网络数据包中的网络协议类型TCP协议或者UDP协议分别执行b和c;
b.针对TCP协议数据包,过滤其中的kerberos协议网络数据包,将其放入共享内存,并通知客户端采集模块读取共享内存数据;
c.针对UDP协议数据包,过滤其中的CIFS协议网络数据包,将其放入共享内存,并通知客户端采集模块读取共享内存数据。

3.
  根据权利要求1的一种基于过滤驱动的安全审计系统,其特征在于:所述PNP驱动模型的USB设备过滤驱动设置分发函数实现过程如下:
a.设置USB设备过滤驱动分发函数,设置针对IRP_MJ_PNP类型IRP包的分发函数,当IRP_MJ_PNP类型IRP包到达本驱动,本驱动会调用相应的分发函数对此IRP包进行处理;
b.在分发函数中,解析IRP_MJ_PNP类型IRP包,判断是否为新USB设备插入;
c.新USB设备插入时,构造查询IRP包,将查询IRP包发送到新USB设备,在返回数据中,获取新USB设备的设备类型和型号信息;
d.将USB设备的设备类型和型号信息放入共享内存,并通知客户端采集模块读取共享内存数据。

4.
  根据权利要求1的一种基于过滤驱动的安全审计系统,其特征在于:所述客户端处理模块流程数据处理实现过程如下:
(1)CIFS协议文件操作数据处理,针对CIFS协议网络数据包,首先获取网络数据包包头数据,解析包头数据中的CIFS协议命令字段,根据CIFS协议命令字段采取相应处理流程;
a.针对CIFS协议NT_CREATE命令数据包,进行CIFS协议打开文件命令处理流程,获取FID与文件目录关联数据,并缓存到FID缓存队列。将NT_CREATE命令数据包中的文件打开信息和审计日志基本信息,生成客户打开文件的审计日志,调用客户端发送模块发送审计日志;
b.针对CIFS协议READ/WRITE命令数据包,进行CIFS协议读/写命令处理流程,获取当前数据包FID字段,通过FID缓存队列查找当前FID所关联文件目录。将READ/WRITE命令数据包中的文件读写信息和审计日志基本信息,生成客户读取/修改文件的审计日志,调用客户端发送模块发送审计日志;
c.针对CIFS协议CLOSE命令数据包,进行CIFS协议关闭文件命令处理流程,获取当前数据包FID字段,通过FID缓存队列查找当前FID所关联文件 目录。将CLOSE命令数据包中的文件关闭信息和审计日志基本信息,生成客户关闭文件的审计日志,调用客户端发送模块发送审计日志;
d.针对CIFS协议NEGOTIATE命令数据包,进行CIFS协议协商命令处理流程,获取当前数据包CIFS协议协商数据,判断当前用户是否已经连接服务器,将NEGOTIATE命令数据包中的协议协商信息和审计日志基本信息,生成客户连接服务器的审计日志,调用客户端发送模块发送审计日志;
e.针对CIFS协议DELETE命令数据包,进行CIFS协议删除文件/目录命令处理流程,获取当前数据包FID字段,通过FID缓存队列查找当前FID做关联文件目录。将DELETE命令数据包中的删除文件/目录信息和审计日志基本信息,生成客户删除文件的审计日志,调用客户端发送模块发送审计日志;
f.针对CIFS协议RENAME命令数据包,进行CIFS协议重命名文件命令处理流程,获取当前数据包源文件名字段和新文件名字段,将RENAME命令数据包中的重命名文件信息和审计日志基本信息,生成客户重命名文件的审计日志,调用客户端发送模块发送审计日志;
(2)Kerberos协议登录数据处理,针对Kerberos协议网络数据包,首先获取网络数据包的请求应答数据字段和错误码数据字段,针对以上字段分别调用Kerberos协议请求处理流程和Kerberos协议错误回复处理流程,根据请求应答字段获取请求用户名,根据错误回复数据字段获取用户输入错误密码次数,当同一用户名输入错误密码次数累计为五的倍数,生成审计日志。

说明书

一种基于过滤驱动的安全审计系统
技术领域
本发明涉及安全审计领域。具体来说是一种基于过滤驱动的分布式的安全审计系统。
背景技术
计算机技术的迅猛发展带来的信息数字化大幅度提高工作效率促进社会发展的同时,安全问题也日益成为影响很多领域效能的重要问题。数字信息的安全相比传统数据文件安全更受关注是由于数字信息本身具有易于复制的特性,利用这一特性,信息更易于受到难以控制和追溯的盗取威胁。安全审计是对系统记录和过程的检查和审查,审计系统可以通过记录可疑数据、入侵信息、敏感信息等,对网络进行动态实时监控;通过寻找入侵和违规行为,记录网络上发生的一切,作为取证和跟踪使用。安全审计的常用方式是在正常系统行为之前加装安全审计过滤行为,只有通过了安全审计过滤行为中相应安全规则的系统行为才可以进入正常的系统流程,在安全审计过滤行为中,会对所有系统行为进行档案留存。
现有安全审计系统存在审计内容不全,审计粒度过粗,审计系统安全性不足等问题。现有安全审计系统审计内容不全,主要表现为,审计项目过于单一,不能涵盖用户从接入涉密信息系统到离开涉密信息系统的完整行为过程;现有安全审计系统审计粒度过粗,主要表现为,审计内容过于简单,不能涵盖用户的具体操作行为;现有安全审计系统审计安全性不足, 主要表现为,用户层的安全审计软件容易被绕过,失去审计效能。
发明内容
本发明技术解决问题:克服现有技术的审计内容不全,审计粒度过粗,审计系统安全性不足等问题,提供一种基于过滤驱动的安全审计系统,解决了以上3类问题,提高了安全审计系统的安全性。
本发明技术解决方案:一种基于过滤驱动的安全审计系统,包括:系统过滤驱动模块、客户端采集模块、客户端处理模块和客户端发送模块,其中系统过滤驱动模块包括NDIS(Network Driver Interface Specification,网络驱动接口规范)驱动模型的中间层过滤驱动模块和PNP(Plug-and-Play,即插即用)驱动模型的USB设备过滤驱动模块;
NDIS驱动模型的中间层过滤驱动模块,创建NDIS协议驱动设备,将此设备绑定所有NDIS小端口驱动,以获取网卡设备接收的网络数据;创建NDIS小端口驱动设备,将此设备绑定所有NDIS协议驱动,以获取NDIS协议驱动发送的网络数据;设置分发函数,将获取的网络数据进行Kerberos协议和CIFS协议关键字匹配,将以上两种协议的敏感网络数据通过共享内存传输给客户端采集模块;
PNP驱动模型的USB设备过滤驱动模块,通过绑定PCI总线设备驱动,设置USB设备添加设备分发函数,USB设备插入时,通过构造IRP(I/ORequest Package,输入输出请求包)获取USB设备类型和型号信息,将捕获的USB设备数据通过共享内存传输给客户端采集模块;
客户端采集模块:初始化两个采集线程和信息缓存队列,两个采集线程和信息缓存队列分别对应接收缓存NDIS驱动模型的中间层过滤驱动模块和 PNP驱动模型的USB过滤驱动模块的数据;在每个采集线程中,各自初始化共享内存,将共享内存传递给对应的过滤驱动,作为客户数据缓存区,各自初始化共享事件,作为跟对应的过滤驱动进行事件通信的标志;当系统过滤驱动模块捕获客户数据时,将数据缓存至共享内存,并触发对应的共享事件,采集线程读取客户数据,采集线程首先读取对应的共享内存数据,将数据缓存至对应的信息缓存队列,将对应的共享事件置位,将对应的共享内存清空,继续等待共享事件被触发;当信息缓存队列中存在数据时,客户端采集模块会创建处理线程,调用对应的客户端处理模块处理接口,对客户信息缓存队列中的数据进行处理;
客户端处理模块:首先初始化缓存客户端基本信息,客户端基本信息包括客户登录用户名、客户登录主机名、作为审计日志基本信息;然后接收客户端采集模块采集的CIFS协议、Kerberos协议和USB设备数据,进行CIFS协议文件操作数据处理或者进行Kerberos协议登录数据处理或者进行USB设备数据处理;所述CIFS协议文件操作数据处理初始化FID缓存队列,通过解析CIFS协议网络数据包中的操作命令字段,采取相应的操作命令处理流程,将CIFS协议网络数据包中的操作信息和审计基本信息,生成相应的审计日志,调用客户端发送模块发送审计日志;所述进行Kerberos协议登录数据处理,首先初始化登录用户名缓存队列,通过解析获取Kerberos协议请求包中的客户端登录用户名和Kerberos协议返回包中的登录结果,将以上信息缓存到登录用户名缓存队列,当前登录用户名出错次数如果是5的倍数,将登录用户名和审计日志基本信息组成审计日志,调用客户端发送模块发送审计日志;所述进行USB设备数据处理,解析数据获取其中的USB设备型号信 息和设备ID信息,将USB设备型号信息、设备ID信息和审计日志基本信息组成审计日志,调用客户端发送模块发送审计日志;
客户端发送模块:初始化日志缓存队列和网络套接字连接,将客户端处理模块中的审计日志放入日志缓存队列中,通过网络套接字将日志发送到日志服务器。
所述NDIS驱动模型的中间层过滤驱动模块设置分发函数实现过程如下:
a.通过设置驱动分发函数,将本驱动捕获的网络数据包进行处理,根据网络数据包中的网络协议类型TCP协议或者UDP协议分别执行b和c;
b.针对TCP协议数据包,过滤其中的kerberos协议网络数据包,将其放入共享内存,并通知客户端采集模块读取共享内存数据;
c.针对UDP协议数据包,过滤其中的CIFS协议网络数据包,将其放入共享内存,并通知客户端采集模块读取共享内存数据.
所述PNP驱动模型的USB设备过滤驱动设置分发函数实现过程如下:
a.设置USB设备过滤驱动分发函数,设置针对IRP_MJ_PNP类型IRP包的分发函数,当IRP_MJ_PNP类型IRP包到达本驱动,本驱动会调用相应的分发函数对此IRP包进行处理;
b.在分发函数中,解析IRP_MJ_PNP类型IRP包,判断是否为新USB设备插入;
c.新USB设备插入时,构造查询IRP包,将查询IRP包发送到新USB设备,在返回数据中,获取新USB设备的设备类型和型号信息;
d.将USB设备的设备类型和型号信息放入共享内存,并通知客户端采集模块读取共享内存数据。
所述客户端处理模块流程数据处理实现过程如下:
(1)CIFS协议文件操作数据处理,针对CIFS协议网络数据包,首先获取网络数据包包头数据,解析包头数据中的CIFS协议命令字段,根据CIFS协议命令字段采取相应处理流程。
a.针对CIFS协议NT_CREATE命令数据包,进行CIFS协议打开文件命令处理流程,获取FID与文件目录关联数据,并缓存到FID缓存队列。将NT_CREATE命令数据包中的文件打开信息(文件路径)和审计日志基本信息,生成客户打开文件的审计日志,调用客户端发送模块发送审计日志。
b.针对CIFS协议READ/WRITE命令数据包,进行CIFS协议读/写命令处理流程,获取当前数据包FID字段,通过FID缓存队列查找当前FID所关联文件目录。将READ/WRITE命令数据包中的文件读写信息和审计日志基本信息,生成客户读取/修改文件的审计日志,调用客户端发送模块发送审计日志。
c.针对CIFS协议CLOSE命令数据包,进行CIFS协议关闭文件命令处理流程,获取当前数据包FID字段,通过FID缓存队列查找当前FID所关联文件目录。将CLOSE命令数据包中的文件关闭信息和审计日志基本信息,生成客户关闭文件的审计日志,调用客户端发送模块发送审计日志。
d.针对CIFS协议NEGOTIATE命令数据包,进行CIFS协议协商命令处理流程,获取当前数据包CIFS协议协商数据,判断当前用户是否已经连接服务器,将NEGOTIATE命令数据包中的协议协商信息和审计日志基本信息,生成客户连接服务器的审计日志,调用客户端发送模块发送审计日志。
e.针对CIFS协议DELETE命令数据包,进行CIFS协议删除文件/目录 命令处理流程,获取当前数据包FID字段,通过FID缓存队列查找当前FID做关联文件目录。将DELETE命令数据包中的删除文件/目录信息和审计日志基本信息,生成客户删除文件的审计日志,调用客户端发送模块发送审计日志。
f.针对CIFS协议RENAME命令数据包,进行CIFS协议重命名文件命令处理流程,获取当前数据包源文件名字段和新文件名字段,将RENAME命令数据包中的重命名文件信息和审计日志基本信息,生成客户重命名文件的审计日志,调用客户端发送模块发送审计日志。
(2)Kerberos协议登录数据处理,针对Kerberos协议网络数据包,首先获取网络数据包的请求应答数据字段和错误码数据字段,针对以上字段分别调用Kerberos协议请求处理流程和Kerberos协议错误回复处理流程,根据请求应答字段获取请求用户名,根据错误回复数据字段获取用户输入错误密码次数,当同一用户名输入错误密码次数累计为五的倍数,生成审计日志。
本发明与现有技术相比的优点在于:本发明基于过滤驱动的分布式安全审计系统可以支持局域网环境下的大规模,多用户的审计需求,分布在网络分散节点上的审计客户端驱动可以收集被审计客户端的所有异常系统行为,并将审计信息发送到审计服务器上进行统一的分析和处理,过滤驱动对被审计客户端的系统行为不会进行任何干扰,被审计客户端的运行效率不会受到任何影响。该系统部署方便,可扩展性强,过滤驱动可以随系统镜像一同安装到涉密计算机终端,在驱动层面上对系统行为进行审查,有效地提高了安全审计系统的可靠性和可信性。
附图说明
图1为本发明系统组成框图;
图2为本发明的基于NDIS模型的网络过滤驱动模块实现流程图;
图3为本发明的基于WDM模型的USB过滤驱动模块实现流程图;
图4为本发明的客户端采集模块实现流程图;
图5为本发明的客户端处理模块CIFS部分实现流程图;
图6为本发明中客户端处理模块Kerberos部分流程图;
图7为本发明中客户端处理模块USB部分实现流程图。
具体实施方式
基于过滤驱动的安全审计系统,涉及一系列计算机专业术语,以下进行相关知识介绍:
NDIS驱动模型中间层过滤驱动简介,Windows的网络结构是以ISO的7层网络模型为基础的,它的网络驱动部分实现了传输层、网络层、链路层,由此形成了NDIS(Windows网络驱动程序接口规范)驱动模型。NDIS支持以下几种网络驱动程序:微端口(网络接口卡)、中间层驱动程序、传输协议驱动程序。中间层驱动程序位于微端口驱动程序和传输协议驱动程序中间。既与上层协议驱动又与下层微端口驱动通信。在下边界,中间层驱动层程序提供了协议入口点函数,NDIS调用这些函数传递底层微端口请求。对于下层微端口驱动程序,中间层驱动程序就像一个传输协议驱动程序,在上边界,中间层驱动程序提供了微端口入口点,NDIS调用这些函数,传递一个或多个上层协议的请求。对于上层协议驱动程序,中间层驱动程序就像一个微端口驱动程序。
USB过滤驱动简介,USB过滤驱动是一种基于WDM(Windows Driver Model,微软驱动模型)分层驱动模型的过滤驱动,在WDM模型中,每个硬件设备至少有两个驱动程序:功能驱动程序和总线驱动程序。一个设备还可能有用来变更标准设备驱动行为的过滤驱动程序,例如,USB过滤驱动。这些服务于同一个设备的驱动程序组成了一个链表,成为设备栈。当一个用户需要改变或新添一些功能到一个设备、一类设备或一种总线时,就可以编写一个过滤驱动程序。在设备栈里,过滤驱动程序安装在一个或几个设备驱动程序的上面或下面。过滤驱动程序拦截对具体设备、类设备、总线的请求,并做相应的处理,以改变设备的行为或添加新的功能,USB过滤驱动只处理那些它所关心的I/O请求,对于其他请求可以交给其他的驱动程序来处理。
IRP简介,IRP为I/O request packets的简称,即输入输出请求包,它是Windows内核中的一种非常重要的数据结构。上层应用程序与底层驱动通信时,应用程序会发送I/O请求,操作系统将相应的I/O请求转换成相应的IRP,不同的IRP会根据类型被分派到不同的派遣例程中进行处理。IRP有两个基本的属性,即MajorFunction和MinorFunction,分别记录IRP的主类型和子类型,操作系统根据MajorFunction决定将IRP分发到哪个派遣例程,然后派遣例程根据MinorFunction进行细分处理。上文中提到的IRP_MJ_PNP是IRP主功能号MajorFunction的一种。
CIFS协议简介,即通用Internet文件系统,也称为服务器消息块(SMB),是一种网络协议,其最常见的用途是共享局域网(LAN)的文件。该协议允许客户端对文件进行操作,支持操作包括:读、写、创建、删除、重命名等,唯一的区别是,该文件不存在于本地计算机上,而是位于远程服务器上。CIFS协议的每个数据包的开头包含一个命令字段,本安全系统关心的命令字段包 括:SMB_COM_NT_CREATE_ANDX(文件打开命令字段,针对此命令采取NT_CREATE命令处理流程)、SMB_COM_NT_RENAME(文件重命名命令字段,针对此命令采取RENAME命令处理流程)、SMB_COM_READ_ANDX(文件读取命令字段,针对此命令采取READ命令处理流程)、SMB_COM_WRITE_ANDX(文件修改命令字段,针对此命令采取WRITE命令处理流程)、SMB_COM_CLOSE(文件关闭命令字段,针对此命令采取CLOSE命令处理流程)、SMB_COM_NEGOTIATE(连接服务器,协议协商命令字段,针对此命令采取NEGOTIATE命令处理流程)、SMB_COM_TRANSACTION_SECONDY(文件删除命令字段,针对此命令采取DELETE命令处理流程)。
Kerberos协议简介,Kerberos协议是一种网络认证协议,其设计目标是通过迷药系统为客户机/服务器应用程序提供强大的认证服务。该认证过程的实现不依赖于主机操作系统的认证,无需基于主机地址的信任,不要求网络中所有主机的物理安全,并假定网络上传输的数据包可以被任意地读取、修改和插入数据。在以上情况下,Kerberos作为一种可信任的第三方认证服务,是通过传统的密码技术执行认证服务的。安全审计系统通过Kerberos协议RequestBody(请求数据包)中UserName(用户名)字段获取当前请求用户用户名和用户登录次数。
如图1所示,本发明一种基于过滤驱动的安全审计系统,包括:系统过滤驱动模块、客户端采集模块、客户端处理模块和客户端发送模块,其中系统过滤驱动模块包括NDIS驱动模型的中间层过滤驱动模块和PNP(Plug-and-Play,即插即用)驱动模型的USB设备过滤驱动模块。
如图2所示,基于NDIS模型的网络过滤驱动模块的实现流程如下:
(1)构造上下层驱动接口,注册接口回调函数,NDIS过滤驱动需要符合NDIS的分层标准,网络数据包在NDIS框架中由下至上分别经过了小端口驱动层,协议驱动层,TDI(Transport Driver Interface,传输层驱动程序接口)传输层及用户接口层。本发明的过滤驱动附着在NDIS框架的底层,即小端口驱动层和协议驱动层之间,对下需要注册协议驱动接口,来契合小端口驱动,进而捕获所有小端口上传的数据包;对上需要注册小端口驱动接口,来契合协议驱动,进而捕获所有协议驱动下发的数据包;
(2)生成驱动控制设备,过滤驱动需要与用户层的应用程序进行通信,确定过滤策略并随时通知过滤状态,应用程序与驱动程序之间是通过控制设备进行通信的,生成的控制设备向应用程序提供一个符号链接名,应用程序通过该名字打开设备并向设备传递参数,从而完成通信功能;
(3)绑定上下层接口,完成初始化工作,过滤驱动的上边界(小端口驱动接口)和下边界(协议驱动接口)需要分别与系统提供的协议驱动和小端口驱动进行绑定,从而可以加入系统的NDIS体系,绑定工作是由NDIS框架在加载驱动的过程中进行的,过滤驱动在绑定过程中需要从框架参数中获取被绑定设备的基本信息,并为自身需要的定制化参数分配系统空间;
(4)捕获从小端口上传和从协议下发的所有数据包,当有网络数据包从系统的小端口驱动层上传时,过滤驱动的协议接口会被NDIS框架调用,将数据包以参数的形式传入协议接口的接收回调函数,当有网络数据包从系统的协议驱动下发时,过滤驱动的小端口接口会被NDIS框架调用,同样,也会将数据包以参数的形式传入小端口接口的接收回调,从而实现两个方 向上的数据包的捕获。在这一过程中,系统的正常数据传递流程依然会进行,唯一不同的是将数据包多分发了一次给过滤驱动,所以不会的系统原有流程造成任何影响,保证了系统的稳定性;
(5)运行过滤策略,通过对数据包进行协议分析,确定数据包使用的网络协议,源地址,目的地址,端口号和包数据,并根据过滤策略有选择性地将符合条件的数据包保存至缓存队列,并生成事件通知用户层应用程序有符合条件的审计数据包到达,对于不符合过滤策略的数据包,则直接丢弃;
(6)数据包入队并通知用户层程序,驱动层不对数据包内容进行审计,内容审计是一个较为耗时的操作,因此会放在用户层应用程序进行。驱动和应用程序之间共享一个事件变量,应用程序等待该共享事件,驱动程序每收到一个数据包,就将数据包缓存至一个内核队列,然后触发事件来完成对应用程序的通知,应用程序收到事件后立刻去队列中读取当前队列中所有的数据包,并依次对数据包内容进行分析和审计,形成审计日志,发往审计日志服务器,内核队列保存在非分页内存中,因此长度不能太长,需要驱动程序和应用程序密切配合,完成数据通信的功能。
如图3所示,基于WDM模型的USB过滤驱动模块的实现流程如下:
(1)生成过滤设备,过滤设备是基于WDM模型的USB过滤驱动的基本组成部分,过滤设备在初始化的时候由驱动程序生成,主要作用是接收上下层设备传递的IRP请求,并提供给应用程序一个设备链接名,可以通过过滤设备与应用程序通信,WDM框架在加载过滤驱动的过程中生成过滤设备;
(2)注册PNP(Plug-and-Play,即插即用)回调函数,USB过滤驱动的主要目的是检测USB设备在目标主机上的插拔操作,从而记录插拔的时间和USB设备序列号,形成审计记录,插拔操作可以在PNP回调函数中检测到,这一操作需要向WDM框架注册PNP回调函数,当总线驱动程序检测到新的PNP设备被接入目标主机时,会调用PNP回调函数,具体的过滤策略在该函数中进行处理;
(3)将过滤设备附加到USB设备栈底,基于WDM模型的驱动采用设备栈的形式进行消息的传递,每一种类型的驱动都会对应一个设备栈,本发明中创建的USB过滤设备则附加在设备栈的底端,拦截从驱动发往设备的所有IRP请求,处理之后再向上层设备传递,因此不会对系统的正常流程造成任何影响,被附着的物理设备对象在WDM框架生成过滤设备时通过参数传入;
(4)捕获并记录插拔事件,完成设备的创建和绑定流程后,就可以开始监听USB设备插拔事件了,当PNP回调函数被调用时,表示一次PNP事件的发生。可以通过事件的MinorFunction字段判断事件类型。
(5)如果此PNP事件为USB设备插入事件,则通过构造两个IRP分别设置IRP的ioStackLocation->Parameters.QueryId.IdType为BusQueryDeviceID和BusQueryInstanceID,获取USB设备编号,记录本次事件并通知应用程序读取数据。
如图4所示,所述的客户端采集模块流程实现过程如下:
(1)用户信息队列管理,包括初始化消息队列,创建队列插入节点函数,创建队列删除节点函数,创建队列读取节点函数;
a.创建队列初始化函数,初始化消息队列,初始化互斥区域指针,初始化队列头,初始化队列长度;
b.创建队列插入节点函数,验证队列参数,拷贝接口参数中的数据到新队列节点,进入互斥区域,将新队列节点插入队列,更改队列长度,判断队列长度是否超出阈值,如果超出则执行流程c,离开互斥区域;
c.创建队列删除节点函数,缓存队列指针,更改队列指针,释放删除节点内存,变更队列长度;
d.创建队列读取节点函数,验证队列参数,进入互斥区域,判断队列长度,读取队列节点信息,调用流程c,退出互斥区域。
(2)用户信息读取,包括初始化用户信息读取线程,初始化用户信息数据到达事件,开启用户信息读取线程,在读取线程中当检测到内核态用户数据到达则调用用户信息分类处理函数进行处理;
a.初始化用户信息读取线程,初始化用户信息数据到达事件,创建事件到达访问控制句柄,创建数据读取线程,设置线程处理函数;
b.开启用户信息读取线程,创建用户信息数据缓存,开启读取循环,在循环中访问事件到达访问控制句柄,当数据达到事件被触发时,调用队列访问控制函数中的读取队列节点函数,获取用户数据,调用用户信息分类函数,通过判断返回值调用相应的处理函数对数据进行处理;
(3)用户信息分类,判断用户数据为CIFS协议数据、Kerberos协议数据或者USB设备数据,分别调用其相应处理函数;
用户信息分类函数,创建用户数据缓存,将用户数据分别按照CIFS协议、Kerberos协议、USB设备数据进行分析,如果用户数据符合其中一种, 则返回相应的标识码。
客户端处理模块流程实现过程如下:
(1)如图5所示,用户文件操作CIFS协议流程如下:
a.审计信息处理模块读取采集模块传输过来的数据,缓存数据中的原IP地址、目的IP地址和时间戳信息;
b.读取SMB数据包的第5个BYTE,将SMB包取出包头,按照SMBheader的格式存储,读取SMB包的第5个byte,获取其中的command数据;
c.判断此command是否为关键命令,如果不是关键命令则直接将包丢弃,如果是关键命令,则根据关键命令类型选择不同的处理流程,NT_CREATE命令则执行流程d,READ/WRITE命令则执行流程e,CLOSE命令则执行流程f,NEGOTIATE命令执行流程g,DELETE命令执行流程h,RENAME命令执行流程i;
d.针对CIFS协议NT_CREATE命令数据包,进行CIFS协议打开文件命令处理流程,获取FID与文件目录关联数据,并缓存到FID缓存队列。将NT_CREATE命令数据包中的文件打开信息(文件路径)和审计日志基本信息,生成客户打开文件的审计日志,调用客户端发送模块发送审计日志;
e.针对CIFS协议READ/WRITE命令数据包,进行CIFS协议读/写命令处理流程,获取当前数据包FID(File Identification,文件身份)字段,通过FID缓存队列查找当前FID所关联文件目录。将READ/WRITE命令数据包中的文件读写信息和审计日志基本信息,生成客户读取/修改文件的审计日志,调用客户端发送模块发送审计日志;
f.针对CIFS协议CLOSE命令数据包,进行CIFS协议关闭文件命令处理流程,获取当前数据包FID字段,通过FID缓存队列查找当前FID所关联文件目录。将CLOSE命令数据包中的文件关闭信息和审计日志基本信息,生成客户关闭文件的审计日志,调用客户端发送模块发送审计日志;
g.针对CIFS协议NEGOTIATE命令数据包,进行CIFS协议协商命令处理流程,获取当前数据包CIFS协议协商数据,判断当前用户是否已经连接服务器,将NEGOTIATE命令数据包中的协议协商信息和审计日志基本信息,生成客户连接服务器的审计日志,调用客户端发送模块发送审计日志。
h.针对CIFS协议DELETE命令数据包,进行CIFS协议删除文件/目录命令处理流程,获取当前数据包FID字段,通过FID缓存队列查找当前FID做关联文件目录。将DELETE命令数据包中的删除文件/目录信息和审计日志基本信息,生成客户删除文件的审计日志,调用客户端发送模块发送审计日志;
i.针对CIFS协议RENAME命令数据包,进行CIFS协议重命名文件命令处理流程,获取当前数据包源文件名字段和新文件名字段,将RENAME命令数据包中的重命名文件信息和审计日志基本信息,生成客户重命名文件的审计日志,调用客户端发送模块发送审计日志;
(2)如图6所示,用户Kerberos协议处理流程如下:
a.创建用户Kerberos协议数据缓存,拷贝Kerberos协议请求回复状态位和Kerberos错误状态码;
b.判断请求回复状态位,若请求则进入Kerberos协议请求流程。若为回复,判断其Kerberos协议错误状态码,如果Kerberos协议错误状态码为 30,则进入Kerberos协议错误处理流程;
c.Kerberos协议请求流程,解析Kerberos协议请求数据包,获取其中的RequestBody(请求数据包)中的UserName(用户名)字段,将UserName保存至当前登录用户名和用户登录次数队列中;
d.Kerberos协议错误处理流程,获取当前登录用户名,解析Kerberos协议错误代码,如果是用户密码错误码,则在当前登录用户错误次数加1,如果错误次数累计为5的倍数,则生成审计日志。
(3)如图7所示,用户USB设备处理流程如下:
a.解析数据获取其中的USB设备型号信息和设备ID信息;
b.将USB设备型号信息、设备ID信息和审计日志基本信息组成审计日志;
c.调用客户端发送模块发送审计日志U。
具体实施例:
本实施例的实验条件如下
1.硬件环境,
CPU:Intel(R)Core(TM)i3-2120CPU@3.30GHz,3.29GHz
内存:1.88GB
硬盘:450G
2.软件环境,
操作系统:Windows XP SP3
3.源代码:过滤驱动源代码,客户端应用程序源代码
结合上述实验环境,根据说明书附图中的流程,下面对本发明的实施方式进行详细说明:
(1)在驱动配置文件中配置审计日志服务器的IP地址和端口号,并测试连接是否成功;
(2)如果测试与审计日志服务器的连接成功后,使用驱动安装包中的INF文件安装过滤驱动到目标机器上;
(3)启动客户端应用程序,该程序会检查底层驱动是否已正常运行并和驱动进行测试性通信,如果一切正常,则应用程序会开启所有模块并尝试读取驱动程序的内核队列,至此客户端审计系统部署完毕;
(4)如果此时有符合过滤条件的网络数据包到达,或者有USB设备的插拔事件发生,驱动就会触发审计事件,应用程序会立刻读取驱动内核队列,并分析队列数据,形成审计条目;
(5)应用程序在形成审计条目后会以固定格式的数据包将审计条目发送到审计日志服务器,形成最终的审计日志并存档。
本发明未详细阐述部分属于本领域技术人员公知技术。

一种基于过滤驱动的安全审计系统.pdf_第1页
第1页 / 共17页
一种基于过滤驱动的安全审计系统.pdf_第2页
第2页 / 共17页
一种基于过滤驱动的安全审计系统.pdf_第3页
第3页 / 共17页
点击查看更多>>
资源描述

《一种基于过滤驱动的安全审计系统.pdf》由会员分享,可在线阅读,更多相关《一种基于过滤驱动的安全审计系统.pdf(17页珍藏版)》请在专利查询网上搜索。

1、10申请公布号CN104063633A43申请公布日20140924CN104063633A21申请号201410178630822申请日20140429G06F21/10201301H04L29/0620060171申请人航天恒星科技有限公司地址100086北京市海淀区知春路82号院72发明人王斌王海涛谭东宇王守信刘华刘翔宇74专利代理机构中国航天科技专利中心11009代理人安丽54发明名称一种基于过滤驱动的安全审计系统57摘要本发明提出一种基于过滤驱动的安全审计系统,包括系统过滤驱动模块、客户端采集模块、客户端处理模块和客户端发送模块,其中系统过滤驱动模块包括NDISNETWORKDRIV。

2、ERINTERFACESPECICATION,网络驱动接口规范驱动模型的中间层过滤驱动模块和PNPPLUGANDPLAY,即插即用驱动模型的USB设备过滤驱动模块。本发明提高了安全审计系统的安全性。51INTCL权利要求书3页说明书9页附图4页19中华人民共和国国家知识产权局12发明专利申请权利要求书3页说明书9页附图4页10申请公布号CN104063633ACN104063633A1/3页21一种基于过滤驱动的安全审计系统,其特征在于包括系统过滤驱动模块、客户端采集模块、客户端处理模块和客户端发送模块,其中系统过滤驱动模块包括NDISNETWORKDRIVERINTERFACESPECICA。

3、TION,网络驱动接口规范驱动模型的中间层过滤驱动模块和PNPPLUGANDPLAY,即插即用驱动模型的USB设备过滤驱动模块;NDIS驱动模型的中间层过滤驱动模块,创建NDIS协议驱动设备,将此设备绑定所有NDIS小端口驱动,以获取网卡设备接收的网络数据;创建NDIS小端口驱动设备,将此设备绑定所有NDIS协议驱动,以获取NDIS协议驱动发送的网络数据;设置分发函数,将获取的网络数据进行KERBEROS协议和CIFS协议关键字匹配,将以上两种协议的敏感网络数据通过共享内存传输给客户端采集模块;PNP驱动模型的USB设备过滤驱动模块,通过绑定PCI总线设备驱动,设置USB设备添加设备分发函数,。

4、USB设备插入时,通过构造IRPI/OREQUESTPACKAGE,输入输出请求包获取USB设备类型和型号信息,将捕获的USB设备数据通过共享内存传输给客户端采集模块;客户端采集模块初始化两个采集线程和信息缓存队列,两个采集线程和信息缓存队列分别对应接收缓存NDIS驱动模型的中间层过滤驱动模块和PNP驱动模型的USB过滤驱动模块的数据;在每个采集线程中,各自初始化共享内存,将共享内存传递给对应的过滤驱动,作为客户数据缓存区,各自初始化共享事件,作为跟对应的过滤驱动进行事件通信的标志;当系统过滤驱动模块捕获客户数据时,将数据缓存至共享内存,并触发对应的共享事件,采集线程读取客户数据,采集线程首先。

5、读取对应的共享内存数据,将数据缓存至对应的信息缓存队列,将对应的共享事件置位,将对应的共享内存清空,继续等待共享事件被触发;当信息缓存队列中存在数据时,客户端采集模块会创建处理线程,调用对应的客户端处理模块处理接口,对客户信息缓存队列中的数据进行处理;客户端处理模块首先初始化缓存客户端基本信息,客户端基本信息包括客户登录用户名、客户登录主机名、作为审计日志基本信息;然后接收客户端采集模块采集的CIFS协议、KERBEROS协议和USB设备数据,进行CIFS协议文件操作数据处理或者进行KERBEROS协议登录数据处理或者进行USB设备数据处理;所述CIFS协议文件操作数据处理初始化FID缓存队列。

6、,通过解析CIFS协议网络数据包中的操作命令字段,采取相应的操作命令处理流程,将CIFS协议网络数据包中的操作信息和审计基本信息,生成相应的审计日志,调用客户端发送模块发送审计日志;所述进行KERBEROS协议登录数据处理,首先初始化登录用户名缓存队列,通过解析获取KERBEROS协议请求包中的客户端登录用户名和KERBEROS协议返回包中的登录结果,将以上信息缓存到登录用户名缓存队列,当前登录用户名出错次数如果是5的倍数,将登录用户名和审计日志基本信息组成审计日志,调用客户端发送模块发送审计日志;所述进行USB设备数据处理,解析数据获取其中的USB设备型号信息和设备ID信息,将USB设备型号。

7、信息、设备ID信息和审计日志基本信息组成审计日志,调用客户端发送模块发送审计日志;客户端发送模块初始化日志缓存队列和网络套接字连接,将客户端处理模块中的审计日志放入日志缓存队列中,通过网络套接字将日志发送到日志服务器。2根据权利要求1的一种基于过滤驱动的安全审计系统,其特征在于所述NDIS驱动模型的中间层过滤驱动模块设置分发函数实现过程如下权利要求书CN104063633A2/3页3A通过设置驱动分发函数,将本驱动捕获的网络数据包进行处理,根据网络数据包中的网络协议类型TCP协议或者UDP协议分别执行B和C;B针对TCP协议数据包,过滤其中的KERBEROS协议网络数据包,将其放入共享内存,并。

8、通知客户端采集模块读取共享内存数据;C针对UDP协议数据包,过滤其中的CIFS协议网络数据包,将其放入共享内存,并通知客户端采集模块读取共享内存数据。3根据权利要求1的一种基于过滤驱动的安全审计系统,其特征在于所述PNP驱动模型的USB设备过滤驱动设置分发函数实现过程如下A设置USB设备过滤驱动分发函数,设置针对IRP_MJ_PNP类型IRP包的分发函数,当IRP_MJ_PNP类型IRP包到达本驱动,本驱动会调用相应的分发函数对此IRP包进行处理;B在分发函数中,解析IRP_MJ_PNP类型IRP包,判断是否为新USB设备插入;C新USB设备插入时,构造查询IRP包,将查询IRP包发送到新US。

9、B设备,在返回数据中,获取新USB设备的设备类型和型号信息;D将USB设备的设备类型和型号信息放入共享内存,并通知客户端采集模块读取共享内存数据。4根据权利要求1的一种基于过滤驱动的安全审计系统,其特征在于所述客户端处理模块流程数据处理实现过程如下1CIFS协议文件操作数据处理,针对CIFS协议网络数据包,首先获取网络数据包包头数据,解析包头数据中的CIFS协议命令字段,根据CIFS协议命令字段采取相应处理流程;A针对CIFS协议NT_CREATE命令数据包,进行CIFS协议打开文件命令处理流程,获取FID与文件目录关联数据,并缓存到FID缓存队列。将NT_CREATE命令数据包中的文件打开信。

10、息和审计日志基本信息,生成客户打开文件的审计日志,调用客户端发送模块发送审计日志;B针对CIFS协议READ/WRITE命令数据包,进行CIFS协议读/写命令处理流程,获取当前数据包FID字段,通过FID缓存队列查找当前FID所关联文件目录。将READ/WRITE命令数据包中的文件读写信息和审计日志基本信息,生成客户读取/修改文件的审计日志,调用客户端发送模块发送审计日志;C针对CIFS协议CLOSE命令数据包,进行CIFS协议关闭文件命令处理流程,获取当前数据包FID字段,通过FID缓存队列查找当前FID所关联文件目录。将CLOSE命令数据包中的文件关闭信息和审计日志基本信息,生成客户关闭文。

11、件的审计日志,调用客户端发送模块发送审计日志;D针对CIFS协议NEGOTIATE命令数据包,进行CIFS协议协商命令处理流程,获取当前数据包CIFS协议协商数据,判断当前用户是否已经连接服务器,将NEGOTIATE命令数据包中的协议协商信息和审计日志基本信息,生成客户连接服务器的审计日志,调用客户端发送模块发送审计日志;E针对CIFS协议DELETE命令数据包,进行CIFS协议删除文件/目录命令处理流程,获取当前数据包FID字段,通过FID缓存队列查找当前FID做关联文件目录。将DELETE命令数据包中的删除文件/目录信息和审计日志基本信息,生成客户删除文件的审计日志,权利要求书CN1040。

12、63633A3/3页4调用客户端发送模块发送审计日志;F针对CIFS协议RENAME命令数据包,进行CIFS协议重命名文件命令处理流程,获取当前数据包源文件名字段和新文件名字段,将RENAME命令数据包中的重命名文件信息和审计日志基本信息,生成客户重命名文件的审计日志,调用客户端发送模块发送审计日志;2KERBEROS协议登录数据处理,针对KERBEROS协议网络数据包,首先获取网络数据包的请求应答数据字段和错误码数据字段,针对以上字段分别调用KERBEROS协议请求处理流程和KERBEROS协议错误回复处理流程,根据请求应答字段获取请求用户名,根据错误回复数据字段获取用户输入错误密码次数,当。

13、同一用户名输入错误密码次数累计为五的倍数,生成审计日志。权利要求书CN104063633A1/9页5一种基于过滤驱动的安全审计系统技术领域0001本发明涉及安全审计领域。具体来说是一种基于过滤驱动的分布式的安全审计系统。背景技术0002计算机技术的迅猛发展带来的信息数字化大幅度提高工作效率促进社会发展的同时,安全问题也日益成为影响很多领域效能的重要问题。数字信息的安全相比传统数据文件安全更受关注是由于数字信息本身具有易于复制的特性,利用这一特性,信息更易于受到难以控制和追溯的盗取威胁。安全审计是对系统记录和过程的检查和审查,审计系统可以通过记录可疑数据、入侵信息、敏感信息等,对网络进行动态实时。

14、监控;通过寻找入侵和违规行为,记录网络上发生的一切,作为取证和跟踪使用。安全审计的常用方式是在正常系统行为之前加装安全审计过滤行为,只有通过了安全审计过滤行为中相应安全规则的系统行为才可以进入正常的系统流程,在安全审计过滤行为中,会对所有系统行为进行档案留存。0003现有安全审计系统存在审计内容不全,审计粒度过粗,审计系统安全性不足等问题。现有安全审计系统审计内容不全,主要表现为,审计项目过于单一,不能涵盖用户从接入涉密信息系统到离开涉密信息系统的完整行为过程;现有安全审计系统审计粒度过粗,主要表现为,审计内容过于简单,不能涵盖用户的具体操作行为;现有安全审计系统审计安全性不足,主要表现为,用。

15、户层的安全审计软件容易被绕过,失去审计效能。发明内容0004本发明技术解决问题克服现有技术的审计内容不全,审计粒度过粗,审计系统安全性不足等问题,提供一种基于过滤驱动的安全审计系统,解决了以上3类问题,提高了安全审计系统的安全性。0005本发明技术解决方案一种基于过滤驱动的安全审计系统,包括系统过滤驱动模块、客户端采集模块、客户端处理模块和客户端发送模块,其中系统过滤驱动模块包括NDISNETWORKDRIVERINTERFACESPECICATION,网络驱动接口规范驱动模型的中间层过滤驱动模块和PNPPLUGANDPLAY,即插即用驱动模型的USB设备过滤驱动模块;0006NDIS驱动模型。

16、的中间层过滤驱动模块,创建NDIS协议驱动设备,将此设备绑定所有NDIS小端口驱动,以获取网卡设备接收的网络数据;创建NDIS小端口驱动设备,将此设备绑定所有NDIS协议驱动,以获取NDIS协议驱动发送的网络数据;设置分发函数,将获取的网络数据进行KERBEROS协议和CIFS协议关键字匹配,将以上两种协议的敏感网络数据通过共享内存传输给客户端采集模块;0007PNP驱动模型的USB设备过滤驱动模块,通过绑定PCI总线设备驱动,设置USB设备添加设备分发函数,USB设备插入时,通过构造IRPI/OREQUESTPACKAGE,输入输出请求包获取USB设备类型和型号信息,将捕获的USB设备数据通。

17、过共享内存传输给客户端采说明书CN104063633A2/9页6集模块;0008客户端采集模块初始化两个采集线程和信息缓存队列,两个采集线程和信息缓存队列分别对应接收缓存NDIS驱动模型的中间层过滤驱动模块和PNP驱动模型的USB过滤驱动模块的数据;在每个采集线程中,各自初始化共享内存,将共享内存传递给对应的过滤驱动,作为客户数据缓存区,各自初始化共享事件,作为跟对应的过滤驱动进行事件通信的标志;当系统过滤驱动模块捕获客户数据时,将数据缓存至共享内存,并触发对应的共享事件,采集线程读取客户数据,采集线程首先读取对应的共享内存数据,将数据缓存至对应的信息缓存队列,将对应的共享事件置位,将对应的共。

18、享内存清空,继续等待共享事件被触发;当信息缓存队列中存在数据时,客户端采集模块会创建处理线程,调用对应的客户端处理模块处理接口,对客户信息缓存队列中的数据进行处理;0009客户端处理模块首先初始化缓存客户端基本信息,客户端基本信息包括客户登录用户名、客户登录主机名、作为审计日志基本信息;然后接收客户端采集模块采集的CIFS协议、KERBEROS协议和USB设备数据,进行CIFS协议文件操作数据处理或者进行KERBEROS协议登录数据处理或者进行USB设备数据处理;所述CIFS协议文件操作数据处理初始化FID缓存队列,通过解析CIFS协议网络数据包中的操作命令字段,采取相应的操作命令处理流程,将。

19、CIFS协议网络数据包中的操作信息和审计基本信息,生成相应的审计日志,调用客户端发送模块发送审计日志;所述进行KERBEROS协议登录数据处理,首先初始化登录用户名缓存队列,通过解析获取KERBEROS协议请求包中的客户端登录用户名和KERBEROS协议返回包中的登录结果,将以上信息缓存到登录用户名缓存队列,当前登录用户名出错次数如果是5的倍数,将登录用户名和审计日志基本信息组成审计日志,调用客户端发送模块发送审计日志;所述进行USB设备数据处理,解析数据获取其中的USB设备型号信息和设备ID信息,将USB设备型号信息、设备ID信息和审计日志基本信息组成审计日志,调用客户端发送模块发送审计日志。

20、;0010客户端发送模块初始化日志缓存队列和网络套接字连接,将客户端处理模块中的审计日志放入日志缓存队列中,通过网络套接字将日志发送到日志服务器。0011所述NDIS驱动模型的中间层过滤驱动模块设置分发函数实现过程如下0012A通过设置驱动分发函数,将本驱动捕获的网络数据包进行处理,根据网络数据包中的网络协议类型TCP协议或者UDP协议分别执行B和C;0013B针对TCP协议数据包,过滤其中的KERBEROS协议网络数据包,将其放入共享内存,并通知客户端采集模块读取共享内存数据;0014C针对UDP协议数据包,过滤其中的CIFS协议网络数据包,将其放入共享内存,并通知客户端采集模块读取共享内存。

21、数据0015所述PNP驱动模型的USB设备过滤驱动设置分发函数实现过程如下0016A设置USB设备过滤驱动分发函数,设置针对IRP_MJ_PNP类型IRP包的分发函数,当IRP_MJ_PNP类型IRP包到达本驱动,本驱动会调用相应的分发函数对此IRP包进行处理;0017B在分发函数中,解析IRP_MJ_PNP类型IRP包,判断是否为新USB设备插入;0018C新USB设备插入时,构造查询IRP包,将查询IRP包发送到新USB设备,在返回数据中,获取新USB设备的设备类型和型号信息;说明书CN104063633A3/9页70019D将USB设备的设备类型和型号信息放入共享内存,并通知客户端采集模。

22、块读取共享内存数据。0020所述客户端处理模块流程数据处理实现过程如下00211CIFS协议文件操作数据处理,针对CIFS协议网络数据包,首先获取网络数据包包头数据,解析包头数据中的CIFS协议命令字段,根据CIFS协议命令字段采取相应处理流程。0022A针对CIFS协议NT_CREATE命令数据包,进行CIFS协议打开文件命令处理流程,获取FID与文件目录关联数据,并缓存到FID缓存队列。将NT_CREATE命令数据包中的文件打开信息文件路径和审计日志基本信息,生成客户打开文件的审计日志,调用客户端发送模块发送审计日志。0023B针对CIFS协议READ/WRITE命令数据包,进行CIFS协。

23、议读/写命令处理流程,获取当前数据包FID字段,通过FID缓存队列查找当前FID所关联文件目录。将READ/WRITE命令数据包中的文件读写信息和审计日志基本信息,生成客户读取/修改文件的审计日志,调用客户端发送模块发送审计日志。0024C针对CIFS协议CLOSE命令数据包,进行CIFS协议关闭文件命令处理流程,获取当前数据包FID字段,通过FID缓存队列查找当前FID所关联文件目录。将CLOSE命令数据包中的文件关闭信息和审计日志基本信息,生成客户关闭文件的审计日志,调用客户端发送模块发送审计日志。0025D针对CIFS协议NEGOTIATE命令数据包,进行CIFS协议协商命令处理流程,获。

24、取当前数据包CIFS协议协商数据,判断当前用户是否已经连接服务器,将NEGOTIATE命令数据包中的协议协商信息和审计日志基本信息,生成客户连接服务器的审计日志,调用客户端发送模块发送审计日志。0026E针对CIFS协议DELETE命令数据包,进行CIFS协议删除文件/目录命令处理流程,获取当前数据包FID字段,通过FID缓存队列查找当前FID做关联文件目录。将DELETE命令数据包中的删除文件/目录信息和审计日志基本信息,生成客户删除文件的审计日志,调用客户端发送模块发送审计日志。0027F针对CIFS协议RENAME命令数据包,进行CIFS协议重命名文件命令处理流程,获取当前数据包源文件名。

25、字段和新文件名字段,将RENAME命令数据包中的重命名文件信息和审计日志基本信息,生成客户重命名文件的审计日志,调用客户端发送模块发送审计日志。00282KERBEROS协议登录数据处理,针对KERBEROS协议网络数据包,首先获取网络数据包的请求应答数据字段和错误码数据字段,针对以上字段分别调用KERBEROS协议请求处理流程和KERBEROS协议错误回复处理流程,根据请求应答字段获取请求用户名,根据错误回复数据字段获取用户输入错误密码次数,当同一用户名输入错误密码次数累计为五的倍数,生成审计日志。0029本发明与现有技术相比的优点在于本发明基于过滤驱动的分布式安全审计系统可以支持局域网环境。

26、下的大规模,多用户的审计需求,分布在网络分散节点上的审计客户端驱动可以收集被审计客户端的所有异常系统行为,并将审计信息发送到审计服务器上进行统一的分析和处理,过滤驱动对被审计客户端的系统行为不会进行任何干扰,被审计客说明书CN104063633A4/9页8户端的运行效率不会受到任何影响。该系统部署方便,可扩展性强,过滤驱动可以随系统镜像一同安装到涉密计算机终端,在驱动层面上对系统行为进行审查,有效地提高了安全审计系统的可靠性和可信性。附图说明0030图1为本发明系统组成框图;0031图2为本发明的基于NDIS模型的网络过滤驱动模块实现流程图;0032图3为本发明的基于WDM模型的USB过滤驱动。

27、模块实现流程图;0033图4为本发明的客户端采集模块实现流程图;0034图5为本发明的客户端处理模块CIFS部分实现流程图;0035图6为本发明中客户端处理模块KERBEROS部分流程图;0036图7为本发明中客户端处理模块USB部分实现流程图。具体实施方式0037基于过滤驱动的安全审计系统,涉及一系列计算机专业术语,以下进行相关知识介绍0038NDIS驱动模型中间层过滤驱动简介,WINDOWS的网络结构是以ISO的7层网络模型为基础的,它的网络驱动部分实现了传输层、网络层、链路层,由此形成了NDISWINDOWS网络驱动程序接口规范驱动模型。NDIS支持以下几种网络驱动程序微端口网络接口卡、。

28、中间层驱动程序、传输协议驱动程序。中间层驱动程序位于微端口驱动程序和传输协议驱动程序中间。既与上层协议驱动又与下层微端口驱动通信。在下边界,中间层驱动层程序提供了协议入口点函数,NDIS调用这些函数传递底层微端口请求。对于下层微端口驱动程序,中间层驱动程序就像一个传输协议驱动程序,在上边界,中间层驱动程序提供了微端口入口点,NDIS调用这些函数,传递一个或多个上层协议的请求。对于上层协议驱动程序,中间层驱动程序就像一个微端口驱动程序。0039USB过滤驱动简介,USB过滤驱动是一种基于WDMWINDOWSDRIVERMODEL,微软驱动模型分层驱动模型的过滤驱动,在WDM模型中,每个硬件设备至。

29、少有两个驱动程序功能驱动程序和总线驱动程序。一个设备还可能有用来变更标准设备驱动行为的过滤驱动程序,例如,USB过滤驱动。这些服务于同一个设备的驱动程序组成了一个链表,成为设备栈。当一个用户需要改变或新添一些功能到一个设备、一类设备或一种总线时,就可以编写一个过滤驱动程序。在设备栈里,过滤驱动程序安装在一个或几个设备驱动程序的上面或下面。过滤驱动程序拦截对具体设备、类设备、总线的请求,并做相应的处理,以改变设备的行为或添加新的功能,USB过滤驱动只处理那些它所关心的I/O请求,对于其他请求可以交给其他的驱动程序来处理。0040IRP简介,IRP为I/OREQUESTPACKETS的简称,即输入。

30、输出请求包,它是WINDOWS内核中的一种非常重要的数据结构。上层应用程序与底层驱动通信时,应用程序会发送I/O请求,操作系统将相应的I/O请求转换成相应的IRP,不同的IRP会根据类型被分派到不同的派遣例程中进行处理。IRP有两个基本的属性,即MAJORFUNCTION和MINORFUNCTION,分别记录IRP的主类型和子类型,操作系统根据MAJORFUNCTION决定将IRP分发到哪个派遣说明书CN104063633A5/9页9例程,然后派遣例程根据MINORFUNCTION进行细分处理。上文中提到的IRP_MJ_PNP是IRP主功能号MAJORFUNCTION的一种。0041CIFS协。

31、议简介,即通用INTERNET文件系统,也称为服务器消息块SMB,是一种网络协议,其最常见的用途是共享局域网LAN的文件。该协议允许客户端对文件进行操作,支持操作包括读、写、创建、删除、重命名等,唯一的区别是,该文件不存在于本地计算机上,而是位于远程服务器上。CIFS协议的每个数据包的开头包含一个命令字段,本安全系统关心的命令字段包括SMB_COM_NT_CREATE_ANDX文件打开命令字段,针对此命令采取NT_CREATE命令处理流程、SMB_COM_NT_RENAME文件重命名命令字段,针对此命令采取RENAME命令处理流程、SMB_COM_READ_ANDX文件读取命令字段,针对此命令。

32、采取READ命令处理流程、SMB_COM_WRITE_ANDX文件修改命令字段,针对此命令采取WRITE命令处理流程、SMB_COM_CLOSE文件关闭命令字段,针对此命令采取CLOSE命令处理流程、SMB_COM_NEGOTIATE连接服务器,协议协商命令字段,针对此命令采取NEGOTIATE命令处理流程、SMB_COM_TRANSACTION_SECONDY文件删除命令字段,针对此命令采取DELETE命令处理流程。0042KERBEROS协议简介,KERBEROS协议是一种网络认证协议,其设计目标是通过迷药系统为客户机/服务器应用程序提供强大的认证服务。该认证过程的实现不依赖于主机操作系统。

33、的认证,无需基于主机地址的信任,不要求网络中所有主机的物理安全,并假定网络上传输的数据包可以被任意地读取、修改和插入数据。在以上情况下,KERBEROS作为一种可信任的第三方认证服务,是通过传统的密码技术执行认证服务的。安全审计系统通过KERBEROS协议REQUESTBODY请求数据包中USERNAME用户名字段获取当前请求用户用户名和用户登录次数。0043如图1所示,本发明一种基于过滤驱动的安全审计系统,包括系统过滤驱动模块、客户端采集模块、客户端处理模块和客户端发送模块,其中系统过滤驱动模块包括NDIS驱动模型的中间层过滤驱动模块和PNPPLUGANDPLAY,即插即用驱动模型的USB设。

34、备过滤驱动模块。0044如图2所示,基于NDIS模型的网络过滤驱动模块的实现流程如下00451构造上下层驱动接口,注册接口回调函数,NDIS过滤驱动需要符合NDIS的分层标准,网络数据包在NDIS框架中由下至上分别经过了小端口驱动层,协议驱动层,TDITRANSPORTDRIVERINTERFACE,传输层驱动程序接口传输层及用户接口层。本发明的过滤驱动附着在NDIS框架的底层,即小端口驱动层和协议驱动层之间,对下需要注册协议驱动接口,来契合小端口驱动,进而捕获所有小端口上传的数据包;对上需要注册小端口驱动接口,来契合协议驱动,进而捕获所有协议驱动下发的数据包;00462生成驱动控制设备,过滤。

35、驱动需要与用户层的应用程序进行通信,确定过滤策略并随时通知过滤状态,应用程序与驱动程序之间是通过控制设备进行通信的,生成的控制设备向应用程序提供一个符号链接名,应用程序通过该名字打开设备并向设备传递参数,从而完成通信功能;00473绑定上下层接口,完成初始化工作,过滤驱动的上边界小端口驱动接口和下边界协议驱动接口需要分别与系统提供的协议驱动和小端口驱动进行绑定,从而可以加入系统的NDIS体系,绑定工作是由NDIS框架在加载驱动的过程中进行的,过滤驱动在说明书CN104063633A6/9页10绑定过程中需要从框架参数中获取被绑定设备的基本信息,并为自身需要的定制化参数分配系统空间;00484捕。

36、获从小端口上传和从协议下发的所有数据包,当有网络数据包从系统的小端口驱动层上传时,过滤驱动的协议接口会被NDIS框架调用,将数据包以参数的形式传入协议接口的接收回调函数,当有网络数据包从系统的协议驱动下发时,过滤驱动的小端口接口会被NDIS框架调用,同样,也会将数据包以参数的形式传入小端口接口的接收回调,从而实现两个方向上的数据包的捕获。在这一过程中,系统的正常数据传递流程依然会进行,唯一不同的是将数据包多分发了一次给过滤驱动,所以不会的系统原有流程造成任何影响,保证了系统的稳定性;00495运行过滤策略,通过对数据包进行协议分析,确定数据包使用的网络协议,源地址,目的地址,端口号和包数据,并。

37、根据过滤策略有选择性地将符合条件的数据包保存至缓存队列,并生成事件通知用户层应用程序有符合条件的审计数据包到达,对于不符合过滤策略的数据包,则直接丢弃;00506数据包入队并通知用户层程序,驱动层不对数据包内容进行审计,内容审计是一个较为耗时的操作,因此会放在用户层应用程序进行。驱动和应用程序之间共享一个事件变量,应用程序等待该共享事件,驱动程序每收到一个数据包,就将数据包缓存至一个内核队列,然后触发事件来完成对应用程序的通知,应用程序收到事件后立刻去队列中读取当前队列中所有的数据包,并依次对数据包内容进行分析和审计,形成审计日志,发往审计日志服务器,内核队列保存在非分页内存中,因此长度不能太。

38、长,需要驱动程序和应用程序密切配合,完成数据通信的功能。0051如图3所示,基于WDM模型的USB过滤驱动模块的实现流程如下00521生成过滤设备,过滤设备是基于WDM模型的USB过滤驱动的基本组成部分,过滤设备在初始化的时候由驱动程序生成,主要作用是接收上下层设备传递的IRP请求,并提供给应用程序一个设备链接名,可以通过过滤设备与应用程序通信,WDM框架在加载过滤驱动的过程中生成过滤设备;00532注册PNPPLUGANDPLAY,即插即用回调函数,USB过滤驱动的主要目的是检测USB设备在目标主机上的插拔操作,从而记录插拔的时间和USB设备序列号,形成审计记录,插拔操作可以在PNP回调函数。

39、中检测到,这一操作需要向WDM框架注册PNP回调函数,当总线驱动程序检测到新的PNP设备被接入目标主机时,会调用PNP回调函数,具体的过滤策略在该函数中进行处理;00543将过滤设备附加到USB设备栈底,基于WDM模型的驱动采用设备栈的形式进行消息的传递,每一种类型的驱动都会对应一个设备栈,本发明中创建的USB过滤设备则附加在设备栈的底端,拦截从驱动发往设备的所有IRP请求,处理之后再向上层设备传递,因此不会对系统的正常流程造成任何影响,被附着的物理设备对象在WDM框架生成过滤设备时通过参数传入;00554捕获并记录插拔事件,完成设备的创建和绑定流程后,就可以开始监听USB设备插拔事件了,当P。

40、NP回调函数被调用时,表示一次PNP事件的发生。可以通过事件的MINORFUNCTION字段判断事件类型。00565如果此PNP事件为USB设备插入事件,则通过构造两个IRP分别设说明书CN104063633A107/9页11置IRP的IOSTACKLOCATIONPARAMETERSQUERYIDIDTYPE为BUSQUERYDEVICEID和BUSQUERYINSTANCEID,获取USB设备编号,记录本次事件并通知应用程序读取数据。0057如图4所示,所述的客户端采集模块流程实现过程如下00581用户信息队列管理,包括初始化消息队列,创建队列插入节点函数,创建队列删除节点函数,创建队列读。

41、取节点函数;0059A创建队列初始化函数,初始化消息队列,初始化互斥区域指针,初始化队列头,初始化队列长度;0060B创建队列插入节点函数,验证队列参数,拷贝接口参数中的数据到新队列节点,进入互斥区域,将新队列节点插入队列,更改队列长度,判断队列长度是否超出阈值,如果超出则执行流程C,离开互斥区域;0061C创建队列删除节点函数,缓存队列指针,更改队列指针,释放删除节点内存,变更队列长度;0062D创建队列读取节点函数,验证队列参数,进入互斥区域,判断队列长度,读取队列节点信息,调用流程C,退出互斥区域。00632用户信息读取,包括初始化用户信息读取线程,初始化用户信息数据到达事件,开启用户信。

42、息读取线程,在读取线程中当检测到内核态用户数据到达则调用用户信息分类处理函数进行处理;0064A初始化用户信息读取线程,初始化用户信息数据到达事件,创建事件到达访问控制句柄,创建数据读取线程,设置线程处理函数;0065B开启用户信息读取线程,创建用户信息数据缓存,开启读取循环,在循环中访问事件到达访问控制句柄,当数据达到事件被触发时,调用队列访问控制函数中的读取队列节点函数,获取用户数据,调用用户信息分类函数,通过判断返回值调用相应的处理函数对数据进行处理;00663用户信息分类,判断用户数据为CIFS协议数据、KERBEROS协议数据或者USB设备数据,分别调用其相应处理函数;0067用户信。

43、息分类函数,创建用户数据缓存,将用户数据分别按照CIFS协议、KERBEROS协议、USB设备数据进行分析,如果用户数据符合其中一种,则返回相应的标识码。0068客户端处理模块流程实现过程如下00691如图5所示,用户文件操作CIFS协议流程如下0070A审计信息处理模块读取采集模块传输过来的数据,缓存数据中的原IP地址、目的IP地址和时间戳信息;0071B读取SMB数据包的第5个BYTE,将SMB包取出包头,按照SMBHEADER的格式存储,读取SMB包的第5个BYTE,获取其中的COMMAND数据;0072C判断此COMMAND是否为关键命令,如果不是关键命令则直接将包丢弃,如果是关键命令。

44、,则根据关键命令类型选择不同的处理流程,NT_CREATE命令则执行流程D,READ/WRITE命令则执行流程E,CLOSE命令则执行流程F,NEGOTIATE命令执行流程G,DELETE命令执行流程H,RENAME命令执行流程I;0073D针对CIFS协议NT_CREATE命令数据包,进行CIFS协议打开文件命令处理流程,说明书CN104063633A118/9页12获取FID与文件目录关联数据,并缓存到FID缓存队列。将NT_CREATE命令数据包中的文件打开信息文件路径和审计日志基本信息,生成客户打开文件的审计日志,调用客户端发送模块发送审计日志;0074E针对CIFS协议READ/WR。

45、ITE命令数据包,进行CIFS协议读/写命令处理流程,获取当前数据包FIDFILEIDENTICATION,文件身份字段,通过FID缓存队列查找当前FID所关联文件目录。将READ/WRITE命令数据包中的文件读写信息和审计日志基本信息,生成客户读取/修改文件的审计日志,调用客户端发送模块发送审计日志;0075F针对CIFS协议CLOSE命令数据包,进行CIFS协议关闭文件命令处理流程,获取当前数据包FID字段,通过FID缓存队列查找当前FID所关联文件目录。将CLOSE命令数据包中的文件关闭信息和审计日志基本信息,生成客户关闭文件的审计日志,调用客户端发送模块发送审计日志;0076G针对CI。

46、FS协议NEGOTIATE命令数据包,进行CIFS协议协商命令处理流程,获取当前数据包CIFS协议协商数据,判断当前用户是否已经连接服务器,将NEGOTIATE命令数据包中的协议协商信息和审计日志基本信息,生成客户连接服务器的审计日志,调用客户端发送模块发送审计日志。0077H针对CIFS协议DELETE命令数据包,进行CIFS协议删除文件/目录命令处理流程,获取当前数据包FID字段,通过FID缓存队列查找当前FID做关联文件目录。将DELETE命令数据包中的删除文件/目录信息和审计日志基本信息,生成客户删除文件的审计日志,调用客户端发送模块发送审计日志;0078I针对CIFS协议RENAME。

47、命令数据包,进行CIFS协议重命名文件命令处理流程,获取当前数据包源文件名字段和新文件名字段,将RENAME命令数据包中的重命名文件信息和审计日志基本信息,生成客户重命名文件的审计日志,调用客户端发送模块发送审计日志;00792如图6所示,用户KERBEROS协议处理流程如下0080A创建用户KERBEROS协议数据缓存,拷贝KERBEROS协议请求回复状态位和KERBEROS错误状态码;0081B判断请求回复状态位,若请求则进入KERBEROS协议请求流程。若为回复,判断其KERBEROS协议错误状态码,如果KERBEROS协议错误状态码为30,则进入KERBEROS协议错误处理流程;008。

48、2CKERBEROS协议请求流程,解析KERBEROS协议请求数据包,获取其中的REQUESTBODY请求数据包中的USERNAME用户名字段,将USERNAME保存至当前登录用户名和用户登录次数队列中;0083DKERBEROS协议错误处理流程,获取当前登录用户名,解析KERBEROS协议错误代码,如果是用户密码错误码,则在当前登录用户错误次数加1,如果错误次数累计为5的倍数,则生成审计日志。00843如图7所示,用户USB设备处理流程如下0085A解析数据获取其中的USB设备型号信息和设备ID信息;0086B将USB设备型号信息、设备ID信息和审计日志基本信息组成审计日志;0087C调用客。

49、户端发送模块发送审计日志U。说明书CN104063633A129/9页130088具体实施例0089本实施例的实验条件如下00901硬件环境,0091CPUINTELRCORETMI32120CPU330GHZ,329GHZ0092内存188GB0093硬盘450G00942软件环境,0095操作系统WINDOWSXPSP300963源代码过滤驱动源代码,客户端应用程序源代码0097结合上述实验环境,根据说明书附图中的流程,下面对本发明的实施方式进行详细说明00981在驱动配置文件中配置审计日志服务器的IP地址和端口号,并测试连接是否成功;00992如果测试与审计日志服务器的连接成功后,使用驱动安装包中的INF文件安装过滤驱动到目标机器上;01003启动客户端应用程序,该程序会检查底层驱动是否已正常运行并和驱动进行测试性通信,如果一切正常,则应用程序会开启所有模块并尝试读取驱动程序的内核队列,至此客户端审计系统部署完毕;01014如果此时有符合过滤条件的网络数据包到达,或者有USB设备的插拔事件发生,驱动就会触发审计事件,应用程序会立刻读取驱动内核队列,并分析队列数据,形成审计条目;01025应用程序在形成审计条目后会以固定格式的数据包将审计条目发送到审计日志服务器,形成最终的审计日志并存档。0103本发明未详细阐述部分属于本领域技术人员公知技术。说明书CN10406363。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 电学 > 电通信技术


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1