一种基于过滤驱动的安全审计系统的制作方法

xiaoxiao2020-7-22  15

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

【技术领域】
[0001] 本发明涉及安全审计领域。具体来说是一种基于过滤驱动的分布式的安全审计系 统。

【背景技术】
[0002] 计算机技术的迅猛发展带来的信息数字化大幅度提高工作效率促进社会发展的 同时,安全问题也日益成为影响很多领域效能的重要问题。数字信息的安全相比传统数据 文件安全更受关注是由于数字信息本身具有易于复制的特性,利用这一特性,信息更易于 受到难以控制和追溯的盗取威胁。安全审计是对系统记录和过程的检查和审查,审计系统 可以通过记录可疑数据、入侵信息、敏感信息等,对网络进行动态实时监控;通过寻找入侵 和违规行为,记录网络上发生的一切,作为取证和跟踪使用。安全审计的常用方式是在正常 系统行为之前加装安全审计过滤行为,只有通过了安全审计过滤行为中相应安全规则的系 统行为才可以进入正常的系统流程,在安全审计过滤行为中,会对所有系统行为进行档案 留存。
[0003] 现有安全审计系统存在审计内容不全,审计粒度过粗,审计系统安全性不足等问 题。现有安全审计系统审计内容不全,主要表现为,审计项目过于单一,不能涵盖用户从接 入涉密信息系统到离开涉密信息系统的完整行为过程;现有安全审计系统审计粒度过粗, 主要表现为,审计内容过于简单,不能涵盖用户的具体操作行为;现有安全审计系统审计安 全性不足,主要表现为,用户层的安全审计软件容易被绕过,失去审计效能。


【发明内容】

[0004] 本发明技术解决问题:克服现有技术的审计内容不全,审计粒度过粗,审计系统安 全性不足等问题,提供一种基于过滤驱动的安全审计系统,解决了以上3类问题,提高了安 全审计系统的安全性。
[0005] 本发明技术解决方案:一种基于过滤驱动的安全审计系统,包括:系统过滤驱动 模块、客户端采集模块、客户端处理模块和客户端发送模块,其中系统过滤驱动模块包括 NDIS(Network Driver Interface Specification,网络驱动接口规范)驱动模型的中间层过 滤驱动模块和PNP (Plug-and-Play,即插即用)驱动模型的USB设备过滤驱动模块;
[0006] NDIS驱动模型的中间层过滤驱动模块,创建NDIS协议驱动设备,将此设备绑定所 有NDIS小端口驱动,以获取网卡设备接收的网络数据;创建NDIS小端口驱动设备,将此设 备绑定所有NDIS协议驱动,以获取NDIS协议驱动发送的网络数据;设置分发函数,将获取 的网络数据进行Kerberos协议和CIFS协议关键字匹配,将以上两种协议的敏感网络数据 通过共享内存传输给客户端采集模块;
[0007] PNP驱动模型的USB设备过滤驱动模块,通过绑定PCI总线设备驱动,设置USB设 备添加设备分发函数,USB设备插入时,通过构造IRP (I/O Request Package,输入输出请求 包)获取USB设备类型和型号信息,将捕获的USB设备数据通过共享内存传输给客户端采 集模块;
[0008] 客户端采集模块:初始化两个采集线程和信息缓存队列,两个采集线程和信息缓 存队列分别对应接收缓存NDIS驱动模型的中间层过滤驱动模块和PNP驱动模型的USB过 滤驱动模块的数据;在每个采集线程中,各自初始化共享内存,将共享内存传递给对应的过 滤驱动,作为客户数据缓存区,各自初始化共享事件,作为跟对应的过滤驱动进行事件通信 的标志;当系统过滤驱动模块捕获客户数据时,将数据缓存至共享内存,并触发对应的共享 事件,采集线程读取客户数据,采集线程首先读取对应的共享内存数据,将数据缓存至对应 的信息缓存队列,将对应的共享事件置位,将对应的共享内存清空,继续等待共享事件被触 发;当信息缓存队列中存在数据时,客户端采集模块会创建处理线程,调用对应的客户端处 理模块处理接口,对客户信息缓存队列中的数据进行处理;
[0009] 客户端处理模块:首先初始化缓存客户端基本信息,客户端基本信息包括客户 登录用户名、客户登录主机名、作为审计日志基本信息;然后接收客户端采集模块采集的 CIFS协议、Kerberos协议和USB设备数据,进行CIFS协议文件操作数据处理或者进行 Kerberos协议登录数据处理或者进行USB设备数据处理;所述CIFS协议文件操作数据处 理初始化FID缓存队列,通过解析CIFS协议网络数据包中的操作命令字段,采取相应的操 作命令处理流程,将CIFS协议网络数据包中的操作信息和审计基本信息,生成相应的审计 日志,调用客户端发送模块发送审计日志;所述进行Kerberos协议登录数据处理,首先初 始化登录用户名缓存队列,通过解析获取Kerberos协议请求包中的客户端登录用户名和 Kerberos协议返回包中的登录结果,将以上信息缓存到登录用户名缓存队列,当前登录用 户名出错次数如果是5的倍数,将登录用户名和审计日志基本信息组成审计日志,调用客 户端发送模块发送审计日志;所述进行USB设备数据处理,解析数据获取其中的USB设备型 号信息和设备ID信息,将USB设备型号信息、设备ID信息和审计日志基本信息组成审计日 志,调用客户端发送模块发送审计日志;
[0010] 客户端发送模块:初始化日志缓存队列和网络套接字连接,将客户端处理模块中 的审计日志放入日志缓存队列中,通过网络套接字将日志发送到日志服务器。
[0011] 所述NDIS驱动模型的中间层过滤驱动模块设置分发函数实现过程如下:
[0012] a.通过设置驱动分发函数,将本驱动捕获的网络数据包进行处理,根据网络数据 包中的网络协议类型TCP协议或者UDP协议分别执行b和C ;
[0013] b.针对TCP协议数据包,过滤其中的kerberos协议网络数据包,将其放入共享内 存,并通知客户端采集模块读取共享内存数据;
[0014] c.针对UDP协议数据包,过滤其中的CIFS协议网络数据包,将其放入共享内存,并 通知客户端采集模块读取共享内存数据.
[0015] 所述PNP驱动模型的USB设备过滤驱动设置分发函数实现过程如下:
[0016] a.设置USB设备过滤驱动分发函数,设置针对IRP_MJ_PNP类型IRP包的分发函 数,当IRP_MJ_PNP类型IRP包到达本驱动,本驱动会调用相应的分发函数对此IRP包进行 处理;
[0017] b.在分发函数中,解析IRP_MJ_PNP类型IRP包,判断是否为新USB设备插入;
[0018] c.新USB设备插入时,构造查询IRP包,将查询IRP包发送到新USB设备,在返回 数据中,获取新USB设备的设备类型和型号信息;
[0019] d.将USB设备的设备类型和型号信息放入共享内存,并通知客户端采集模块读取 共享内存数据。
[0020] 所述客户端处理模块流程数据处理实现过程如下:
[0021] (l)CIFS协议文件操作数据处理,针对CIFS协议网络数据包,首先获取网络数据 包包头数据,解析包头数据中的CIFS协议命令字段,根据CIFS协议命令字段采取相应处理 流程。
[0022] a.针对CIFS协议NT_CREATE命令数据包,进行CIFS协议打开文件命令处理流程, 获取FID与文件目录关联数据,并缓存到FID缓存队列。将NT_CREATE命令数据包中的文 件打开信息(文件路径)和审计日志基本信息,生成客户打开文件的审计日志,调用客户端 发送模块发送审计日志。
[0023] b.针对CIFS协议READ/WRITE命令数据包,进行CIFS协议读/写命令处理流程,获 取当前数据包FID字段,通过FID缓存队列查找当前FID所关联文件目录。将READ/WRITE 命令数据包中的文件读写信息和审计日志基本信息,生成客户读取/修改文件的审计日 志,调用客户端发送模块发送审计日志。
[0024] c.针对CIFS协议CLOSE命令数据包,进行CIFS协议关闭文件命令处理流程,获取 当前数据包FID字段,通过FID缓存队列查找当前FID所关联文件目录。将CLOSE命令数 据包中的文件关闭信息和审计日志基本信息,生成客户关闭文件的审计日志,调用客户端 发送模块发送审计日志。
[0025] d.针对CIFS协议NEGOTIATE命令数据包,进行CIFS协议协商命令处理流程,获取 当前数据包CIFS协议协商数据,判断当前用户是否已经连接服务器,将NEGOTIATE命令数 据包中的协议协商信息和审计日志基本信息,生成客户连接服务器的审计日志,调用客户 端发送模块发送审计日志。
[0026] e.针对CIFS协议DELETE命令数据包,进行CIFS协议删除文件/目录命令处理流 程,获取当前数据包FID字段,通过FID缓存队列查找当前FID做关联文件目录。将DELETE 命令数据包中的删除文件/目录信息和审计日志基本信息,生成客户删除文件的审计日 志,调用客户端发送模块发送审计日志。
[0027] f.针对CIFS协议RENAME命令数据包,进行CIFS协议重命名文件命令处理流程, 获取当前数据包源文件名字段和新文件名字段,将RENAME命令数据包中的重命名文件信 息和审计日志基本信息,生成客户重命名文件的审计日志,调用客户端发送模块发送审计 日志。
[0028] (2)Kerberos协议登录数据处理,针对Kerberos协议网络数据包,首先获取网络 数据包的请求应答数据字段和错误码数据字段,针对以上字段分别调用Kerberos协议请 求处理流程和Kerberos协议错误回复处理流程,根据请求应答字段获取请求用户名,根据 错误回复数据字段获取用户输入错误密码次数,当同一用户名输入错误密码次数累计为五 的倍数,生成审计日志。
[0029] 本发明与现有技术相比的优点在于:本发明基于过滤驱动的分布式安全审计系统 可以支持局域网环境下的大规模,多用户的审计需求,分布在网络分散节点上的审计客户 端驱动可以收集被审计客户端的所有异常系统行为,并将审计信息发送到审计服务器上进 行统一的分析和处理,过滤驱动对被审计客户端的系统行为不会进行任何干扰,被审计客 户端的运行效率不会受到任何影响。该系统部署方便,可扩展性强,过滤驱动可以随系统镜 像一同安装到涉密计算机终端,在驱动层面上对系统行为进行审查,有效地提高了安全审 计系统的可靠性和可信性。

【专利附图】

【附图说明】
[0030] 图1为本发明系统组成框图;
[0031] 图2为本发明的基于NDIS模型的网络过滤驱动模块实现流程图;
[0032] 图3为本发明的基于WDM模型的USB过滤驱动模块实现流程图;
[0033] 图4为本发明的客户端采集模块实现流程图;
[0034] 图5为本发明的客户端处理模块CIFS部分实现流程图;
[0035] 图6为本发明中客户端处理模块Kerberos部分流程图;
[0036] 图7为本发明中客户端处理模块USB部分实现流程图。

【具体实施方式】
[0037] 基于过滤驱动的安全审计系统,涉及一系列计算机专业术语,以下进行相关知识 介绍:
[0038] NDIS驱动模型中间层过滤驱动简介,Windows的网络结构是以ISO的7层网络模 型为基础的,它的网络驱动部分实现了传输层、网络层、链路层,由此形成了 NDIS(Wind〇ws 网络驱动程序接口规范)驱动模型。NDIS支持以下几种网络驱动程序:微端口(网络接口 卡)、中间层驱动程序、传输协议驱动程序。中间层驱动程序位于微端口驱动程序和传输协 议驱动程序中间。既与上层协议驱动又与下层微端口驱动通信。在下边界,中间层驱动层 程序提供了协议入口点函数,NDIS调用这些函数传递底层微端口请求。对于下层微端口驱 动程序,中间层驱动程序就像一个传输协议驱动程序,在上边界,中间层驱动程序提供了微 端口入口点,NDIS调用这些函数,传递一个或多个上层协议的请求。对于上层协议驱动程 序,中间层驱动程序就像一个微端口驱动程序。
[0039] USB过滤驱动简介,USB过滤驱动是一种基于WDM (Windows Driver Model,微软驱 动模型)分层驱动模型的过滤驱动,在WDM模型中,每个硬件设备至少有两个驱动程序:功 能驱动程序和总线驱动程序。一个设备还可能有用来变更标准设备驱动行为的过滤驱动程 序,例如,USB过滤驱动。这些服务于同一个设备的驱动程序组成了一个链表,成为设备栈。 当一个用户需要改变或新添一些功能到一个设备、一类设备或一种总线时,就可以编写一 个过滤驱动程序。在设备栈里,过滤驱动程序安装在一个或几个设备驱动程序的上面或下 面。过滤驱动程序拦截对具体设备、类设备、总线的请求,并做相应的处理,以改变设备的行 为或添加新的功能,USB过滤驱动只处理那些它所关心的1/0请求,对于其他请求可以交给 其他的驱动程序来处理。
[0040] IRP简介,IRP为1/0 request packets的简称,即输入输出请求包,它是Windows 内核中的一种非常重要的数据结构。上层应用程序与底层驱动通信时,应用程序会发送1/0 请求,操作系统将相应的1/0请求转换成相应的IRP,不同的IRP会根据类型被分派到不同 的派遣例程中进行处理。IRP有两个基本的属性,即MajorFunction和MinorFunction,分 别记录IRP的主类型和子类型,操作系统根据MajorFunction决定将IRP分发到哪个派遣 例程,然后派遣例程根据MinorFunction进行细分处理。上文中提到的IRP_MJ_PNP是IRP 主功能号MajorFunction的一种。
[0041] 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_C0M_CL0SE (文件关闭命令字段,针对此命令采取CLOSE命令处理流程)、SMB_ C0M_NEG0TIATE (连接服务器,协议协商命令字段,针对此命令采取NEGOTIATE命令处理流 程)、SMB_C0M_TRANSACTI0N_SEC0NDY (文件删除命令字段,针对此命令采取DELETE命令处 理流程)。
[0042] Kerberos协议简介,Kerberos协议是一种网络认证协议,其设计目标是通过迷药 系统为客户机/服务器应用程序提供强大的认证服务。该认证过程的实现不依赖于主机 操作系统的认证,无需基于主机地址的信任,不要求网络中所有主机的物理安全,并假定网 络上传输的数据包可以被任意地读取、修改和插入数据。在以上情况下,Kerberos作为一 种可信任的第三方认证服务,是通过传统的密码技术执行认证服务的。安全审计系统通过 Kerberos协议RequestBody (请求数据包)中UserName (用户名)字段获取当前请求用户 用户名和用户登录次数。
[0043] 如图1所示,本发明一种基于过滤驱动的安全审计系统,包括:系统过滤驱动模 块、客户端采集模块、客户端处理模块和客户端发送模块,其中系统过滤驱动模块包括NDIS 驱动模型的中间层过滤驱动模块和PNP (Plug-and-Play,即插即用)驱动模型的USB设备过 滤驱动模块。
[0044] 如图2所示,基于NDIS模型的网络过滤驱动模块的实现流程如下:
[0045] (1)构造上下层驱动接口,注册接口回调函数,NDIS过滤驱动需要符合NDIS的 分层标准,网络数据包在NDIS框架中由下至上分别经过了小端口驱动层,协议驱动层, TDI (Transport Driver Interface,传输层驱动程序接口)传输层及用户接口层。本发明的 过滤驱动附着在NDIS框架的底层,S卩小端口驱动层和协议驱动层之间,对下需要注册协议 驱动接口,来契合小端口驱动,进而捕获所有小端口上传的数据包;对上需要注册小端口驱 动接口,来契合协议驱动,进而捕获所有协议驱动下发的数据包;
[0046] (2)生成驱动控制设备,过滤驱动需要与用户层的应用程序进行通信,确定过滤 策略并随时通知过滤状态,应用程序与驱动程序之间是通过控制设备进行通信的,生成的 控制设备向应用程序提供一个符号链接名,应用程序通过该名字打开设备并向设备传递参 数,从而完成通信功能;
[0047] (3)绑定上下层接口,完成初始化工作,过滤驱动的上边界(小端口驱动接口)和 下边界(协议驱动接口)需要分别与系统提供的协议驱动和小端口驱动进行绑定,从而可 以加入系统的NDIS体系,绑定工作是由NDIS框架在加载驱动的过程中进行的,过滤驱动在 绑定过程中需要从框架参数中获取被绑定设备的基本信息,并为自身需要的定制化参数分 配系统空间;
[0048] (4)捕获从小端口上传和从协议下发的所有数据包,当有网络数据包从系统的小 端口驱动层上传时,过滤驱动的协议接口会被NDIS框架调用,将数据包以参数的形式传入 协议接口的接收回调函数,当有网络数据包从系统的协议驱动下发时,过滤驱动的小端口 接口会被NDIS框架调用,同样,也会将数据包以参数的形式传入小端口接口的接收回调, 从而实现两个方向上的数据包的捕获。在这一过程中,系统的正常数据传递流程依然会进 行,唯一不同的是将数据包多分发了一次给过滤驱动,所以不会的系统原有流程造成任何 影响,保证了系统的稳定性;
[0049] (5)运行过滤策略,通过对数据包进行协议分析,确定数据包使用的网络协议,源 地址,目的地址,端口号和包数据,并根据过滤策略有选择性地将符合条件的数据包保存至 缓存队列,并生成事件通知用户层应用程序有符合条件的审计数据包到达,对于不符合过 滤策略的数据包,则直接丢弃;
[0050] (6)数据包入队并通知用户层程序,驱动层不对数据包内容进行审计,内容审计是 一个较为耗时的操作,因此会放在用户层应用程序进行。驱动和应用程序之间共享一个事 件变量,应用程序等待该共享事件,驱动程序每收到一个数据包,就将数据包缓存至一个内 核队列,然后触发事件来完成对应用程序的通知,应用程序收到事件后立刻去队列中读取 当前队列中所有的数据包,并依次对数据包内容进行分析和审计,形成审计日志,发往审计 日志服务器,内核队列保存在非分页内存中,因此长度不能太长,需要驱动程序和应用程序 密切配合,完成数据通信的功能。
[0051] 如图3所示,基于WDM模型的USB过滤驱动模块的实现流程如下:
[0052] (1)生成过滤设备,过滤设备是基于WDM模型的USB过滤驱动的基本组成部分,过 滤设备在初始化的时候由驱动程序生成,主要作用是接收上下层设备传递的IRP请求,并 提供给应用程序一个设备链接名,可以通过过滤设备与应用程序通信,WDM框架在加载过滤 驱动的过程中生成过滤设备;
[0053] (2)注册PNP (Plug-and-Play,即插即用)回调函数,USB过滤驱动的主要目的是检 测USB设备在目标主机上的插拔操作,从而记录插拔的时间和USB设备序列号,形成审计记 录,插拔操作可以在PNP回调函数中检测到,这一操作需要向WDM框架注册PNP回调函数, 当总线驱动程序检测到新的PNP设备被接入目标主机时,会调用PNP回调函数,具体的过滤 策略在该函数中进行处理;
[0054] (3)将过滤设备附加到USB设备栈底,基于WDM模型的驱动采用设备栈的形式进行 消息的传递,每一种类型的驱动都会对应一个设备栈,本发明中创建的USB过滤设备则附 加在设备栈的底端,拦截从驱动发往设备的所有IRP请求,处理之后再向上层设备传递,因 此不会对系统的正常流程造成任何影响,被附着的物理设备对象在WDM框架生成过滤设备 时通过参数传入;
[0055] (4)捕获并记录插拔事件,完成设备的创建和绑定流程后,就可以开始监听USB 设备插拔事件了,当PNP回调函数被调用时,表示一次PNP事件的发生。可以通过事件的 MinorFunction字段判断事件类型。
[0056] (5)如果此PNP事件为USB设备插入事件,则通过构造两个IRP分别设 置 IRP 的 ioStackLocation->Parameters. Queryld.IdType 为 BusQueryDevicelD 和 BusQuerylnstancelD,获取USB设备编号,记录本次事件并通知应用程序读取数据。
[0057] 如图4所示,所述的客户端采集模块流程实现过程如下:
[0058] (1)用户信息队列管理,包括初始化消息队列,创建队列插入节点函数,创建队列 删除节点函数,创建队列读取节点函数;
[0059] a.创建队列初始化函数,初始化消息队列,初始化互斥区域指针,初始化队列头, 初始化队列长度;
[0060] b.创建队列插入节点函数,验证队列参数,拷贝接口参数中的数据到新队列节点, 进入互斥区域,将新队列节点插入队列,更改队列长度,判断队列长度是否超出阈值,如果 超出则执行流程C,离开互斥区域;
[0061] c.创建队列删除节点函数,缓存队列指针,更改队列指针,释放删除节点内存,变 更队列长度;
[0062] d.创建队列读取节点函数,验证队列参数,进入互斥区域,判断队列长度,读取队 列节点信息,调用流程c,退出互斥区域。
[0063] (2)用户信息读取,包括初始化用户信息读取线程,初始化用户信息数据到达事 件,开启用户信息读取线程,在读取线程中当检测到内核态用户数据到达则调用用户信息 分类处理函数进行处理;
[0064] a.初始化用户信息读取线程,初始化用户信息数据到达事件,创建事件到达访问 控制句柄,创建数据读取线程,设置线程处理函数;
[0065] b.开启用户信息读取线程,创建用户信息数据缓存,开启读取循环,在循环中访问 事件到达访问控制句柄,当数据达到事件被触发时,调用队列访问控制函数中的读取队列 节点函数,获取用户数据,调用用户信息分类函数,通过判断返回值调用相应的处理函数对 数据进行处理;
[0066] (3)用户信息分类,判断用户数据为CIFS协议数据、Kerberos协议数据或者USB 设备数据,分别调用其相应处理函数;
[0067] 用户信息分类函数,创建用户数据缓存,将用户数据分别按照CIFS协议、 Kerberos协议、USB设备数据进行分析,如果用户数据符合其中一种,则返回相应的标识 码。
[0068] 客户端处理模块流程实现过程如下:
[0069] (1)如图5所示,用户文件操作CIFS协议流程如下:
[0070] a.审计信息处理模块读取采集模块传输过来的数据,缓存数据中的原IP地址、目 的IP地址和时间戳信息;
[0071] b.读取SMB数据包的第5个BYTE,将SMB包取出包头,按照SMB header的格式存 储,读取SMB包的第5个byte,获取其中的co_and数据;
[0072] c.判断此command是否为关键命令,如果不是关键命令则直接将包丢弃,如果是 关键命令,则根据关键命令类型选择不同的处理流程,NT_CREATE命令则执行流程d,READ/ WRITE命令则执行流程e,CLOSE命令则执行流程f,NEGOTIATE命令执行流程g,DELETE命 令执行流程h,RENAME命令执行流程i ;
[0073] d.针对CIFS协议NT_CREATE命令数据包,进行CIFS协议打开文件命令处理流程, 获取FID与文件目录关联数据,并缓存到FID缓存队列。将NT_CREATE命令数据包中的文 件打开信息(文件路径)和审计日志基本信息,生成客户打开文件的审计日志,调用客户端 发送模块发送审计日志;
[0074] e.针对CIFS协议READ/WRITE命令数据包,进行CIFS协议读/写命令处理流程, 获取当前数据包FID (File Identification,文件身份)字段,通过FID缓存队列查找当前 FID所关联文件目录。将READ/WRITE命令数据包中的文件读写信息和审计日志基本信息, 生成客户读取/修改文件的审计日志,调用客户端发送模块发送审计日志;
[0075] f.针对CIFS协议CLOSE命令数据包,进行CIFS协议关闭文件命令处理流程,获取 当前数据包FID字段,通过FID缓存队列查找当前FID所关联文件目录。将CLOSE命令数 据包中的文件关闭信息和审计日志基本信息,生成客户关闭文件的审计日志,调用客户端 发送模块发送审计日志;
[0076] g.针对CIFS协议NEGOTIATE命令数据包,进行CIFS协议协商命令处理流程,获取 当前数据包CIFS协议协商数据,判断当前用户是否已经连接服务器,将NEGOTIATE命令数 据包中的协议协商信息和审计日志基本信息,生成客户连接服务器的审计日志,调用客户 端发送模块发送审计日志。
[0077] h.针对CIFS协议DELETE命令数据包,进行CIFS协议删除文件/目录命令处理流 程,获取当前数据包FID字段,通过FID缓存队列查找当前FID做关联文件目录。将DELETE 命令数据包中的删除文件/目录信息和审计日志基本信息,生成客户删除文件的审计日 志,调用客户端发送模块发送审计日志;
[0078] i.针对CIFS协议RENAME命令数据包,进行CIFS协议重命名文件命令处理流程, 获取当前数据包源文件名字段和新文件名字段,将RENAME命令数据包中的重命名文件信 息和审计日志基本信息,生成客户重命名文件的审计日志,调用客户端发送模块发送审计 日志;
[0079] (2)如图6所示,用户Kerberos协议处理流程如下:
[0080] a.创建用户Kerberos协议数据缓存,拷贝Kerberos协议请求回复状态位和 Kerberos错误状态码;
[0081] b.判断请求回复状态位,若请求则进入Kerberos协议请求流程。若为回复,判断 其Kerberos协议错误状态码,如果Kerberos协议错误状态码为30,则进入Kerberos协议 错误处理流程;
[0082] c. Kerberos协议请求流程,解析Kerberos协议请求数据包,获取其中的 RequestBody (请求数据包)中的UserName (用户名)字段,将UserName保存至当前登录用 户名和用户登录次数队列中;
[0083] d. Kerberos协议错误处理流程,获取当前登录用户名,解析Kerberos协议错误代 码,如果是用户密码错误码,则在当前登录用户错误次数加1,如果错误次数累计为5的倍 数,则生成审计日志。
[0084] (3)如图7所示,用户USB设备处理流程如下:
[0085] a.解析数据获取其中的USB设备型号信息和设备ID信息;
[0086] b.将USB设备型号信息、设备ID信息和审计日志基本信息组成审计日志;
[0087] c.调用客户端发送模块发送审计日志U。
[0088] 具体实施例:
[0089] 本实施例的实验条件如下
[0090] 1.硬件环境,
[0091] CPU :Intel(R)Core(TM)i3-2120CPUi3. 30GHz, 3. 29GHz
[0092] 内存:1.88GB
[0093] 硬盘:450G
[0094] 2.软件环境,
[0095] 操作系统:Windows XP SP3
[0096] 3.源代码:过滤驱动源代码,客户端应用程序源代码
[0097] 结合上述实验环境,根据说明书附图中的流程,下面对本发明的实施方式进行详 细说明:
[0098] (1)在驱动配置文件中配置审计日志服务器的IP地址和端口号,并测试连接是否 成功;
[0099] (2)如果测试与审计日志服务器的连接成功后,使用驱动安装包中的INF文件安 装过滤驱动到目标机器上;
[0100] (3)启动客户端应用程序,该程序会检查底层驱动是否已正常运行并和驱动进行 测试性通信,如果一切正常,则应用程序会开启所有模块并尝试读取驱动程序的内核队列, 至此客户端审计系统部署完毕;
[0101] (4)如果此时有符合过滤条件的网络数据包到达,或者有USB设备的插拔事件发 生,驱动就会触发审计事件,应用程序会立刻读取驱动内核队列,并分析队列数据,形成审 计条目;
[0102] (5)应用程序在形成审计条目后会以固定格式的数据包将审计条目发送到审计日 志服务器,形成最终的审计日志并存档。
[0103] 本发明未详细阐述部分属于本领域技术人员公知技术。
【权利要求】
1. 一种基于过滤驱动的安全审计系统,其特征在于包括:系统过滤驱动模块、客户端 采集模块、客户端处理模块和客户端发送模块,其中系统过滤驱动模块包括NDIS(Netw 〇rk Driver Interface Specification,网络驱动接口规范)驱动模型的中间层过滤驱动模块和 PNP (Plug-and-Play,即插即用)驱动模型的USB设备过滤驱动模块; NDIS驱动模型的中间层过滤驱动模块,创建NDIS协议驱动设备,将此设备绑定所有 NDIS小端口驱动,以获取网卡设备接收的网络数据;创建NDIS小端口驱动设备,将此设备 绑定所有NDIS协议驱动,以获取NDIS协议驱动发送的网络数据;设置分发函数,将获取的 网络数据进行Kerberos协议和CIFS协议关键字匹配,将以上两种协议的敏感网络数据通 过共享内存传输给客户端采集模块; PNP驱动模型的USB设备过滤驱动模块,通过绑定PCI总线设备驱动,设置USB设备添 加设备分发函数,USB设备插入时,通过构造IRP (I/O Request 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信息和审计日志基本信息组成审计日志,调用客户端 发送模块发送审计日志; 客户端发送模块:初始化日志缓存队列和网络套接字连接,将客户端处理模块中的审 计日志放入日志缓存队列中,通过网络套接字将日志发送到日志服务器。
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的一种基于过滤驱动的安全审计系统,其特征在于:所述客户端处 理模块流程数据处理实现过程如下: (l)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协议错误回复处理流程,根据请求应答字段获取请求用户名,根据错误 回复数据字段获取用户输入错误密码次数,当同一用户名输入错误密码次数累计为五的倍 数,生成审计日志。
【文档编号】G06F21/10GK104063633SQ201410178630
【公开日】2014年9月24日 申请日期:2014年4月29日 优先权日:2014年4月29日
【发明者】王斌, 王海涛, 谭东宇, 王守信, 刘华, 刘翔宇 申请人:航天恒星科技有限公司

最新回复(0)