CN108021707A - 文件复制操作的识别方法、设备及计算机可读存储介质 - Google Patents
文件复制操作的识别方法、设备及计算机可读存储介质 Download PDFInfo
- Publication number
- CN108021707A CN108021707A CN201711458363.XA CN201711458363A CN108021707A CN 108021707 A CN108021707 A CN 108021707A CN 201711458363 A CN201711458363 A CN 201711458363A CN 108021707 A CN108021707 A CN 108021707A
- Authority
- CN
- China
- Prior art keywords
- file
- tracking
- write
- read
- length
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/16—File or folder operations, e.g. details of user interfaces specifically adapted to file systems
- G06F16/164—File meta data generation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/16—File or folder operations, e.g. details of user interfaces specifically adapted to file systems
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种文件复制操作的识别方法、设备及计算机可读存储介质,其中方法包括:当捕获到文件关闭时,确定文件为读操作还是写操作;当为读操作时,更新读操作文件的跟踪结构,并将更新后的跟踪结构添加到预设的跟踪列表中;当为写操作时,更新写操作文件的跟踪结构,并在跟踪列表中匹配与写操作文件的跟踪结构相对应的读操作文件的跟踪结构,当匹配成功时,则判断写操作文件进行了复制操作。利用本发明的技术方案,可以做到文件复制操作的精确识别,从而能支持相关产品的审计功能。
Description
技术领域
本发明涉及通信领域,特别涉及一种文件复制操作的识别方法、设备及计算机可读存储介质。
背景技术
文件复制操作是计算机***中常见的一种操作,也是信息泄露的一种途径,对文件复制操作进行审计是一种重要的信息安全防护手段。
使用文件***过滤驱动程序审计文件操作,是信息安全***中常用的手段,使用文件***过滤驱动,能够过滤到文件的新建、打开、读、写、关闭、重命名、删除等等操作,但对于文件的复制操作是无法直接过滤的,复制一个文件到其它位置在用户界面上是一个简单的操作,但在操作***级别复制文件不是一个“原子”操作,而是通过一系列文件***调用实现的,其基本过程为:1、以读方式打开源文件;2、以写方式新建目标文件;3、读源文件,将源文件的数据读取到缓冲区;4、写目标文件,将读取到的数据从缓冲区写入目标文件;5、重复3、4的操作,直到源文件的全部内容都被读取并写入目标文件;6、关闭源文件;7、设置目标文件属性,关闭目标文件。
现有技术中,常规的处理方法是API挂钩,在大部分的操作***中,均有标准的文件复制API,例如,在Windows平台,动态库Kernel32.dll中导出了CopyFile和CopyFileEx函数,用于支持简单的、无进度提示的文件复制操作,Shell32.dll也导出了SHFileOperation函数,用于支持带标准进度提示界面的各种文件操作(包括复制),使用API挂钩(Hook)技术,挂接这些API,是能够拦截到一部分应用的文件复制操作的。但是,如果应用程序不调用这些API,而是使用自行编制的函数或过程来实现文件复制,这种技术就无效了,会漏报。另一方面,API挂钩是不能保证稳定实现的,对于一些新的操作***,或者有进程自保护机制的软件,API挂钩是不可行的。
发明内容
为了准确、稳定的实现文件复制操作的识别,本发明提供了一种文件复制操作的识别方法、设备及计算机可读存储介质。
本发明提供的文件复制操作的识别方法,包括:
当捕获到文件关闭时,确定所述文件为读操作还是写操作;
当为读操作时,更新读操作文件的跟踪结构,并将更新后的跟踪结构添加到预设的跟踪列表中;
当为写操作时,更新写操作文件的跟踪结构,并在所述跟踪列表中匹配与所述写操作文件的跟踪结构相对应的读操作文件的跟踪结构,当匹配成功时,则判断所述写操作文件进行了复制操作。
可选的,在本发明所述的文件复制操作的识别方法中,所述读操作文件的跟踪结构包括以下中的一项或多项:关闭时间、读取总长度、哈希值;所述写操作文件的跟踪结构包括以下中的一项或多项:关闭时间、写入总长度、哈希值。
可选的,在本发明所述的文件复制操作的识别方法中,在所述跟踪列表中匹配与所述写操作文件的跟踪结构相对应的读操作文件的跟踪结构,包括:
依次判断所述写操作文件的跟踪结构与所述跟踪列表中的每个读操作文件的跟踪结构是否匹配,直到所述写操作文件的跟踪结构匹配到相对应的读操作文件的跟踪结构。
可选的,在本发明所述的文件复制操作的识别方法中,所述判断所述写操作文件的跟踪结构与所述跟踪列表中的每个读操作文件的跟踪结构是否匹配,包括:
判断所述读操作文件跟踪结构中的关闭时间是否满足预设的条件;
若满足预设的条件时,则继续判断所述读操作文件所处的线程是否为当前线程;
若为当前线程,则继续判断所述写操作文件的跟踪结构中的写入总长度与所述读操作文件的跟踪结构中的读取总长度是否相同;
若相同,则继续判断所述写操作文件的跟踪结构中的哈希值与所述读操作文件的跟踪结构中的哈希值是否相同;
若相同,则判定所述写操作文件的跟踪结构匹配到对应的读操作文件的跟踪结构,即写操作文件和读操作文件的内容相同。
可选的,在本发明所述的文件复制操作的识别方法中,在确定所述文件为读操作之后,还包括:判断所述文件的读取总长度是否大于等于所述文件的长度,当所述文件的读取总长度大于等于所述文件的长度时,则启动更新所述读操作文件的跟踪结构;在确定所述文件为写操作之后,还包括:判断所述文件的写入总长度是否大于等于所述文件的长度,当所述文件的写入总长度大于等于所述文件的长度时,则启动更新所述写操作文件的跟踪结构。
可选的,在本发明所述的文件复制操作的识别方法中,在捕获到文件关闭之前,还包括:
当捕获到文件的打开或新建操作时,为所述文件分配跟踪结构,并将所述跟踪结构与所述文件进行关联;
当捕获到文件的读操作/写操作时,获取与所述文件关联的跟踪结构,并在所述跟踪结构中提取出已读取长度/已写入长度;
判断所述读操作/写操作是否为连续读/连续写,当为连续读/连续写时,根据所述已读取长度/已写入长度更新所述文件的哈希值。
可选的,在本发明所述的文件复制操作的识别方法中,判断所述读操作是否为连续读,包括:
在所述文件的读请求中获取读位置偏移;
当所述读位置偏移等于所述已读取长度时,判断定所述读操作为连续读。
判断所述写操作是否为连续写,包括:
在所述文件的写请求中获取写位置偏移;
当所述写位置偏移等于所述已写入长度时,判断定所述写操作为连续写。
可选的,在本发明所述的文件复制操作的识别方法中,在根据所述已读取长度/已写入长度更新所述文件的哈希值之后,还包括:
将所述文件本次读操作/写操作时的读取长度/写入长度与所述跟踪结构中的已读取长度/已写入长度相加,对所述跟踪结构中的已读取长度/已写入长度进行更新。
本发明还提供了一种文件复制操作的识别设备,所述设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如上所述的文件复制操作的识别方法的步骤。
本发明还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有文件复制操作的识别程序,所述文件复制操作的识别程序被处理器执行时实现如上所述的文件复制操作的识别方法的步骤。
本发明的有益效果如下:
本发明实施例提供的文件复制操作的识别方法、设备及计算机可读存储介质,将读操作文件的跟踪结构添加在预设的跟踪列表中,并在当捕获到文件的写操作时,在所述跟踪列表中匹配与所述写操作文件的跟踪结构相对应的读操作文件的跟踪结构,可以做到文件复制操作的精确识别,从而能支持相关产品的审计功能。
附图说明
图1为本发明第一方法实施例中文件复制操作识别方法的流程示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
为了准确、稳定的实现文件复制操作的识别,本发明提供了一种文件复制操作的识别方法、设备及计算机可读存储介质。以下结合附图对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不限定本发明。
根据本发明的第一方法实施例,提供了一种文件复制操作的识别方法,图1为本发明第一方法实施例中文件复制操作识别方法的流程示意图,如图1所示,本发明第一方法实施例的文件复制操作的识别方法,包括以下步骤:
S101:当捕获到文件关闭时,确定所述文件为读操作还是写操作。
S102:当为读操作时,更新读操作文件的跟踪结构,并将更新后的跟踪结构添加到预设的跟踪列表中。
可选的,所述读操作文件的跟踪结构包括以下中的一项或多项:关闭时间、读取总长度、哈希值。
可选的,在确定所述文件为读操作之后,还包括:判断所述文件的读取总长度是否大于等于所述文件的长度,当所述文件的读取总长度大于等于所述文件的长度时,则启动更新所述读操作文件的跟踪结构。
S103:当为写操作时,更新写操作文件的跟踪结构,并在所述跟踪列表中匹配与所述写操作文件的跟踪结构相对应的读操作文件的跟踪结构,当匹配成功时,则判断所述写操作文件进行了复制操作。
可选的,所述写操作文件的跟踪结构包括以下中的一项或多项:关闭时间、写入总长度、哈希值。
可选的,在确定所述文件为写操作之后,还包括:判断所述文件的写入总长度是否大于等于所述文件的长度,当所述文件的写入总长度大于等于所述文件的长度时,则启动更新所述写操作文件的跟踪结构。
可选的,在所述跟踪列表中匹配与所述写操作文件的跟踪结构相对应的读操作文件的跟踪结构,包括:依次判断所述写操作文件的跟踪结构与所述跟踪列表中的每个读操作文件的跟踪结构是否匹配,直到所述写操作文件的跟踪结构匹配到相对应的读操作文件的跟踪结构。
可选的,所述判断所述写操作文件的跟踪结构与所述跟踪列表中的每个读操作文件的跟踪结构是否匹配,包括:
判断所述读操作文件跟踪结构中的关闭时间是否满足预设的条件;
若满足预设的条件时,则继续判断所述读操作文件所处的线程是否为当前线程;
若为当前线程,则继续判断所述写操作文件的跟踪结构中的写入总长度与所述读操作文件的跟踪结构中的读取总长度是否相同;
若相同,则继续判断所述写操作文件的跟踪结构中的哈希值与所述读操作文件的跟踪结构中的哈希值是否相同;
若相同,则判定所述写操作文件的跟踪结构匹配到对应的读操作文件的跟踪结构,即写操作文件和读操作文件的内容相同。
具体的,当所述读操作文件跟踪结构中的关闭时间不满足预设的条件时、或当所述读操作文件所处的线程不为当前线程时、或当所述写操作文件的跟踪结构中的写入总长度与所述读操作文件的跟踪结构中的读取总长度不同时、或当所述写操作文件的跟踪结构中的哈希值与所述读操作文件的跟踪结构中的哈希值不同时,则继续判断所述写操作文件的跟踪结构与所述跟踪列表中的下一个读操作文件的跟踪结构是否匹配。
本发明第一方法实施例提供的文件复制操作的识别方法,将读操作文件的跟踪结构添加在预设的跟踪列表中,并在当捕获到文件的写操作时,在所述跟踪列表中匹配与所述写操作文件的跟踪结构相对应的读操作文件的跟踪结构,可以做到文件复制操作的精确识别,从而能支持相关产品的审计功能。
本发明第二方法实施例的文件复制操作的识别方法,包括以下步骤:
步骤A:当捕获到文件的打开或新建操作时,为所述文件分配跟踪结构,并将所述跟踪结构与所述文件进行关联。
作为一个具体的实施方式,步骤A包括以下步骤:
初始化一个读文件跟踪项的链表(以下简称跟踪列表),用于记录发生过的文件读写操作和响应的结果。在捕获到文件的打开或新建操作时,分配一个用于跟踪文件读写的数据结构(以下简称跟踪结构),至少包括以下几个部分(以下操作不分次序):
A1:初始化用于哈希运算的上下文结构。
A2:初始化读写数据的总长度为0(相当于已读取长度/已写入长度)。
A3:记录文件的打开方式,是读还是写。
A4:初始化哈希运算状态为有效。
A5:记录文件的路径,名称。
A6:将此跟踪结构附加到文件对象的上下文中。
步骤B:当捕获到文件的读操作/写操作时,获取与所述文件关联的跟踪结构,并在所述跟踪结构中提取出已读取长度/已写入长度。
步骤C:判断所述读操作/写操作是否为连续读/连续写,当为连续读/连续写时,根据所述已读取长度/已写入长度更新所述文件的哈希值。
可选的,判断所述读操作是否为连续读,包括:在所述文件的读请求中获取读位置偏移;当所述读位置偏移等于所述已读取长度时,判断定所述读操作为连续读。
可选的,判断所述写操作是否为连续写,包括:在所述文件的写请求中获取写位置偏移;当所述写位置偏移等于所述已写入长度时,判断定所述写操作为连续写。
可选的,在根据所述读取数据长度/写入数据长度更新所述文件的哈希值之后,还包括:将所述文件本次读操作/写操作时的读取长度/写入长度与所述跟踪结构中的已读取长度/已写入长度相加,对所述跟踪结构中的已读取长度/已写入长度进行更新。
作为一个具体的实施方式,步骤C包括以下步骤:
C1:判断当前的读写偏移(包括读位置偏移和写位置偏移)是否等于跟踪结构中的读写总长度(包括已读取长度和已写入长度),如果相同,说明是连续读写,对于连续读写,在哈希运算状态有效的情况下,更新读写内容的哈希值;如果不是连续读写,则将哈希运算状态标记成无效。
C2:在读写请求成功完成后,将本次读写的数据长度累加至跟踪结构中的读写总长度。
步骤D:当捕获到文件关闭时,且所述文件为读操作时,更新读操作文件的跟踪结构,并将更新后的跟踪结构添加到预设的跟踪列表中。
作为一种具体的实施方式,当为读操作时,更新读操作文件的跟踪结构,并将更新后的跟踪结构添加到预设的跟踪列表中,包括以下步骤:
D1:如果文件的读取总长度大于或等于文件的长度,则继续处理;否则,可判定这不是一个复制操作的源,忽略,释放相关的跟踪结构。
D2:记录文件的关闭时间。
D3:记录当前的线程。
D4:判断哈希状态是否有效,如果有效则完成哈希运算并提取结果到跟踪结构;如果无效,则重新读取文件计算哈希值。
D5:将跟踪结构从文件对象上脱离,***到跟踪列表。
步骤E:当捕获到文件关闭时,且所述文件为写操作时,更新写操作文件的跟踪结构,并在所述跟踪列表中匹配与所述写操作文件的跟踪结构相对应的读操作文件的跟踪结构,当匹配成功时,则判断所述写操作文件进行了复制操作。
作为一个具体的实施方式,当为写操作时,更新写操作文件的跟踪结构,并在所述跟踪列表中匹配与所述写操作文件的跟踪结构相对应的读操作文件的跟踪结构,当匹配成功时,则判断所述写操作文件进行了复制操作,包括以下步骤:
E1:如果文件的写入总长度大于或等于文件的长度,则继续处理;否则,可判定这不是一个复制操作的目标,忽略,释放相关的跟踪结构。
E2:获取当前的***时间。
E3:判断哈希状态是否有效,如果有效则完成哈希运算并提取结果到跟踪结构;如果无效,则重新读取文件计算哈希值。
E4:遍历跟踪列表中记录的源操作项(即读操作文件的跟踪结构),尝试匹配源文件(即读操作文件),具体的匹配次序如下:
跟踪列表中的跟踪记录是否已过期(即所述读操作文件跟踪结构中的关闭时间是否满足预设的条件),如果过期,则从跟踪列表中移出此项,继续遍历下一个跟踪结构。
线程是否相同(即所述读操作文件所处的线程是否为当前线程),如果不相同,则忽略,继续遍历下一个跟踪结构。
文件大小(即写操作文件的跟踪结构中的写入总长度与所述读操作文件的跟踪结构中的读取总长度)是否相同,如果不相同,则忽略,继续遍历下一个跟踪结构。
文件的哈希是否相同,如果不相同,则忽略,继续遍历下一个跟踪结构。
如果线程、大小、哈希全部相同,可判定命中复制的源文件。
E5:如果在E4的过程中命中了复制源,即可判定复制操作发生。
E6:释放源、目标文件的跟踪结构。
本发明第二方法实施例提供的文件复制操作的识别方法,在文件***层面通过行为分析及数据跟踪匹配,实现了通用的、精确的文件复制识别,在信息安全领域,尤其是主机安全审计、数据防泄露方面,提供了有力的支持,具有实用意义。
根据本发明的方法实施例,本发明还提供了一种文件复制操作的识别设备,所述设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现以下步骤:
步骤11:当捕获到文件关闭时,确定所述文件为读操作还是写操作。
步骤12:当为读操作时,更新读操作文件的跟踪结构,并将更新后的跟踪结构添加到预设的跟踪列表中。
可选的,在确定所述文件为读操作之后,还包括:判断所述文件的读取总长度是否大于等于所述文件的长度,当所述文件的读取总长度大于等于所述文件的长度时,则启动更新所述读操作文件的跟踪结构;
可选的,所述读操作文件的跟踪结构包括以下中的一项或多项:关闭时间、读取总长度、哈希值。
步骤13:当为写操作时,更新写操作文件的跟踪结构,并在所述跟踪列表中匹配与所述写操作文件的跟踪结构相对应的读操作文件的跟踪结构,当匹配成功时,则判断所述写操作文件进行了复制操作。
可选的,在确定所述文件为写操作之后,还包括:判断所述文件的写入总长度是否大于等于所述文件的长度,当所述文件的写入总长度大于等于所述文件的长度时,则启动更新所述写操作文件的跟踪结构。
可选的,所述写操作文件的跟踪结构包括以下中的一项或多项:关闭时间、写入总长度、哈希值。
可选的,在所述跟踪列表中匹配与所述写操作文件的跟踪结构相对应的读操作文件的跟踪结构,包括:
依次判断所述写操作文件的跟踪结构与所述跟踪列表中的每个读操作文件的跟踪结构是否匹配,直到所述写操作文件的跟踪结构匹配到相对应的读操作文件的跟踪结构。
可选的,所述判断所述写操作文件的跟踪结构与所述跟踪列表中的每个读操作文件的跟踪结构是否匹配,包括:
计算所述写操作文件的跟踪结构中的关闭时间与所述读操作文件的跟踪结构中的关闭时间的时间差;
若所述时间差满足预设的条件时,则继续判断所述写操作文件所处的线程与所述读操作文件所处的线程是否相同;
若相同,则继续判断所述写操作文件的跟踪结构中的写入总长度与所述读操作文件的跟踪结构中的读取总长度是否相同;
若相同,则继续判断所述写操作文件的跟踪结构中的哈希值与所述读操作文件的跟踪结构中的哈希值是否相同;
若相同,则判定所述写操作文件的跟踪结构匹配到相对应的读操作文件的跟踪结构,即写操作文件和读操作文件的内容相同。
进一步的,在捕获到文件关闭之前,所述计算机程序被所述处理器执行时还实现以下步骤:
当捕获到文件的打开或新建操作时,为所述文件分配跟踪结构,并将所述跟踪结构与所述文件进行关联;
当捕获到文件的读操作/写操作时,获取与所述文件关联的跟踪结构,并在所述跟踪结构中提取出已读取长度/已写入长度;
判断所述读操作/写操作是否为连续读/连续写,当为连续读/连续写时,根据所述已读取长度/已写入长度更新所述文件的哈希值。
可选的,判断所述读操作是否为连续读,包括:在所述文件的读请求中获取读位置偏移;当所述读位置偏移等于所述已读取长度时,判断定所述读操作为连续读。
可选的,判断所述写操作是否为连续写,包括:在所述文件的写请求中获取写位置偏移;当所述写位置偏移等于所述已写入长度时,判断定所述写操作为连续写。
进一步的,在根据所述已读取长度/已写入长度更新所述文件的哈希值之后,所述计算机程序被所述处理器执行时实现以下步骤:将所述文件本次读操作/写操作时的读取长度/写入长度与所述跟踪结构中的已读取长度/已写入长度相加,对所述跟踪结构中的已读取长度/已写入长度进行更新。
根据本发明的方法实施例,本发明还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有文件复制操作的识别程序,所述文件复制操作的识别程序被处理器执行时实现以下步骤:
步骤21:当捕获到文件关闭时,确定所述文件为读操作还是写操作。
步骤22:当为读操作时,更新读操作文件的跟踪结构,并将更新后的跟踪结构添加到预设的跟踪列表中。
可选的,在确定所述文件为读操作之后,还包括:判断所述文件的读取总长度是否大于等于所述文件的长度,当所述文件的读取总长度大于等于所述文件的长度时,则启动更新所述读操作文件的跟踪结构;
可选的,所述读操作文件的跟踪结构包括以下中的一项或多项:关闭时间、读取总长度、哈希值。
步骤23:当为写操作时,更新写操作文件的跟踪结构,并在所述跟踪列表中匹配与所述写操作文件的跟踪结构相对应的读操作文件的跟踪结构,当匹配成功时,则判断所述写操作文件进行了复制操作。
可选的,在确定所述文件为写操作之后,还包括:判断所述文件的写入总长度是否大于等于所述文件的长度,当所述文件的写入总长度大于等于所述文件的长度时,则启动更新所述写操作文件的跟踪结构。
可选的,所述写操作文件的跟踪结构包括以下中的一项或多项:关闭时间、写入总长度、哈希值。
可选的,在所述跟踪列表中匹配与所述写操作文件的跟踪结构相对应的读操作文件的跟踪结构,包括:
依次判断所述写操作文件的跟踪结构与所述跟踪列表中的每个读操作文件的跟踪结构是否匹配,直到所述写操作文件的跟踪结构匹配到相对应的读操作文件的跟踪结构。
可选的,所述判断所述写操作文件的跟踪结构与所述跟踪列表中的每个读操作文件的跟踪结构是否匹配,包括:
计算所述写操作文件的跟踪结构中的关闭时间与所述读操作文件的跟踪结构中的关闭时间的时间差;
若所述时间差满足预设的条件时,则继续判断所述写操作文件所处的线程与所述读操作文件所处的线程是否相同;
若相同,则继续判断所述写操作文件的跟踪结构中的写入总长度与所述读操作文件的跟踪结构中的读取总长度是否相同;
若相同,则继续判断所述写操作文件的跟踪结构中的哈希值与所述读操作文件的跟踪结构中的哈希值是否相同;
若相同,则判定所述写操作文件的跟踪结构匹配到相对应的读操作文件的跟踪结构,即写操作文件和读操作文件的内容相同。
进一步的,在捕获到文件关闭之前,所述文件复制操作的识别程序被处理器执行时还实现以下步骤:
当捕获到文件的打开或新建操作时,为所述文件分配跟踪结构,并将所述跟踪结构与所述文件进行关联;
当捕获到文件的读操作/写操作时,获取与所述文件关联的跟踪结构,并在所述跟踪结构中提取出已读取长度/已写入长度;
判断所述读操作/写操作是否为连续读/连续写,当为连续读/连续写时,根据所述已读取长度/已写入长度更新所述文件的哈希值。
可选的,判断所述读操作是否为连续读,包括:在所述文件的读请求中获取读位置偏移;当所述读位置偏移等于所述已读取长度时,判断定所述读操作为连续读。
可选的,判断所述写操作是否为连续写,包括:在所述文件的写请求中获取写位置偏移;当所述写位置偏移等于所述已写入长度时,判断定所述写操作为连续写。
进一步的,在根据所述已读取长度/已写入长度更新所述文件的哈希值之后,所述文件复制操作的识别程序被处理器执行时还实现以下步骤:将所述文件本次读操作/写操作时的读取长度/写入长度与所述跟踪结构中的已读取长度/已写入长度相加,对所述跟踪结构中的已读取长度/已写入长度进行更新。
为了详细的说明本发明的方法实施例,给出实例1。
实例1为在Windows平台上的一个实现,在Windows***上,使用minifilter技术实现的文件***过滤器,能够过滤到所有的底层文件操作。
Windows平台中,文件***请求是通过传递IRP(IO请求包)实现的,IRP中的请求码用于区别不同的操作,在本实施例中,主要对以下请求进行过滤,按IRP的请求码分别有:
1、IRP_MJ_CREATE:文件的创建、打开请求
2、IRP_MJ_READ:文件读取请求
3、IRP_MJ_WRITE:文件写入请求
4、IRP_MJ_CLEANUP:文件关闭、清理请求
使用Minifilter可以在每种请求的调用前、完成后进行过滤处理,本实施例中,针对上述4个请求码分别有以下处理过程:
1、PreCreate:文件创建、打开前
2、PostCreate:文件创建、打开后
3、PreRead:读取前
4、PostRead:读取后
5、PreWrite:写入前
6、PostWrite:写入后
7、PreCleanup:关闭前
在实例1中,哈希算法采用MD5算法。
实例1的文件复制操作的识别方法具体步骤如下:
步骤A,在驱动程序初始化时,初始化全局的读跟踪列表ReadTraceList。
步骤B,在PreCreate过程中,判断创建、打开的对象是文件还是目录,如果是目录则忽略,不进行任何处理;如果是文件,则在PostCreate过程中继续处理。
步骤C,在PostCreate过程中,如果创建或打开的操作失败则忽略,不进行任何处理;如果成功则分配跟踪上下文(即跟踪结构)TraceContext,初始化其内容,包括:文件路径FullPath、打开方式Mode(读或写)、已读写长度DataLength(初始化为0)、哈希上下文Md5Context、哈希状态HashState(有效)、文件长度FileLength(初始化为0)、哈希结果(Digest)、关闭时间(CloseTime)、当前线程(Thread)等。此跟踪上下文将关联到已打开或创建的文件。
步骤D,在PreRead过程中,提取文件对象关联的跟踪上下文,如果提取失败,说明文件没有开启跟踪,忽略,不进行处理;如果文件的打开方式是写,也忽略,不进行处理;否则,在PostRead过程中继续处理。
步骤E,在PostRead过程中,如果读操作失败,不进行处理;否则进行以下处理:
E1、判断是否连续读,即读位置偏移是否等于已读取长度(DataLength),如果是则可认为是连续读,用已读取的数据即时更新哈希;否则将哈希状态HashState置为无效。
E2、将读取的字节数累加到已读取长度DataLength。
步骤F,在PreWrite过程中,提取文件对象关联的跟踪上下文,如果提取失败,说明文件没有开启跟踪,忽略,不进行处理;如果文件的打开方式是读,也忽略,不进行处理;否则,在PostWrite过程中继续处理。
步骤G,在PostWrite过程中,如果写操作失败,不进行处理;否则进行以下处理
G1、判断是否连续写,即当前的写入位置偏移是否等于已写入长度(DataLength),如果是则可认为是连续写,用已写入的数据即时更新哈希;否则将哈希状态HashState置为无效。
G2、将已写入的字节数累加到已写入长度DataLength。
步骤H,在PreCleanup过程中,提取文件对象关联的跟踪上下文,如果提取失败,说明文件没有开启跟踪,忽略,不进行处理;如果文件的打开方式是读,则进入步骤I;如果文件的打开方式是写,则进入步骤J。
步骤I,对读关闭进行处理,具体有:
I1:获取文件的实际长度FileLength。
I2:如果已读取数据长度(DataLength)小于文件长度(FileLength),说明不是复制操作,结束跟踪,释放上下文。
I3:如果哈希状态HashState为有效,则完成哈希运算,将哈希结果保存到Digest;如果HashState无效,则重新读取文件,计算文件的内容哈希,结果保存到Digest。
I4:提取当前的***时间,记录到关闭时间CloseTime。
I5:将当前的跟踪上下文从文件对象上脱离,***到读跟踪链表ReadTraceList。
步骤J,对写关闭进行处理,具体有:
J1:获取文件长度FileLength。
J2:如果已写入长度DataLength小于文件长度FileLength,说明不是复制操作,结束跟踪,释放上下文。
J3:如果哈希状态HashState为有效,则完成哈希运算,将哈希结果保存到Digest;如果HashState无效,则读取文件,计算文件的内容哈希,结果保存到Digest。
J4:将当前的跟踪上下文从文件对象上脱离,并传入步骤K继续处理。
步骤K,查找复制源,即在跟踪列表ReadTraceList中查找最近发生过的读文件操作,如其文件内容与当前写入的内容一致,即可认为复制操作发生,对于链表中的每一个跟踪上下文,具体判断逻辑如下:
K1:判断读文件操作完成时间是否近期发生(5秒钟以内),如果已超时,则将跟踪上下文从读跟踪链表中删除并释放,继续遍历;否则继续K2步骤处理。
K2:判断读文件操作的线程是否当前线程(Thread),如果不是,则忽略,继续遍历;否则继续K3步骤处理。
K3:判断所述写操作文件的跟踪结构中的写入总长度与所述读操作文件的跟踪结构中的读取总长度(FileLength),如果不同,则忽略,继续遍历;否则继续K4步骤处理。
K4:判断所述写操作文件的跟踪结构中的哈希值与所述读操作文件的跟踪结构中的哈希值是否相同(Digest),如果不同,则忽略,继续遍历;否则,说明读、写文件的线程、文件长度、文件内容均相同,即可认为复制操作发生,将读跟踪上下文从链表中移出,与当前的写跟踪上下文一并传入步骤L进行处理。
K5:如果遍历完成,没有找到匹配的项,说明此次写文件的操作不是复制操作,释放上下文,完成处理。
步骤L,命中处理,根据步骤K4传入的读跟踪上下文和写跟踪上下文的信息,分别作为复制的源文件信息和目标文件信息,构造审计信息,完成处理后,释放读跟踪上下文和写跟踪上下文,完成操作。
以上所述仅为本发明的实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的权利要求范围之内。
Claims (10)
1.一种文件复制操作的识别方法,其特征在于,包括:
当捕获到文件关闭时,确定所述文件为读操作还是写操作;
当为读操作时,更新读操作文件的跟踪结构,并将更新后的跟踪结构添加到预设的跟踪列表中;
当为写操作时,更新写操作文件的跟踪结构,并在所述跟踪列表中匹配与所述写操作文件的跟踪结构相对应的读操作文件的跟踪结构,当匹配成功时,则判断所述写操作文件进行了复制操作。
2.如权利要求1所述的文件复制操作的识别方法,其特征在于,所述读操作文件的跟踪结构包括以下中的一项或多项:关闭时间、读取总长度、哈希值;所述写操作文件的跟踪结构包括以下中的一项或多项:关闭时间、写入总长度、哈希值。
3.如权利要求2所述的文件复制操作的识别方法,其特征在于,在所述跟踪列表中匹配与所述写操作文件的跟踪结构相对应的读操作文件的跟踪结构,包括:
依次判断所述写操作文件的跟踪结构与所述跟踪列表中的每个读操作文件的跟踪结构是否匹配,直到所述写操作文件的跟踪结构匹配到相对应的读操作文件的跟踪结构。
4.如权利要求3所述的文件复制操作的识别方法,其特征在于,所述判断所述写操作文件的跟踪结构与所述跟踪列表中的每个读操作文件的跟踪结构是否匹配,包括:
判断所述读操作文件跟踪结构中的关闭时间是否满足预设的条件;
若满足预设的条件时,则继续判断所述读操作文件所处的线程是否为当前线程;
若为当前线程,则继续判断所述写操作文件的跟踪结构中的写入总长度与所述读操作文件的跟踪结构中的读取总长度是否相同;
若相同,则继续判断所述写操作文件的跟踪结构中的哈希值与所述读操作文件的跟踪结构中的哈希值是否相同;
若相同,则判定所述写操作文件的跟踪结构匹配到对应的读操作文件的跟踪结构,即写操作文件和读操作文件的内容相同。
5.如权利要求1所述的文件复制操作的识别方法,其特征在于,在确定所述文件为读操作之后,还包括:判断所述文件的读取总长度是否大于等于所述文件的长度,当所述文件的读取总长度大于等于所述文件的长度时,则启动更新所述读操作文件的跟踪结构;
在确定所述文件为写操作之后,还包括:判断所述文件的写入总长度是否大于等于所述文件的长度,当所述文件的写入总长度大于等于所述文件的长度时,则启动更新所述写操作文件的跟踪结构。
6.如权利要求1所述的文件复制操作的识别方法,其特征在于,在捕获到文件关闭之前,还包括:
当捕获到文件的打开或新建操作时,为所述文件分配跟踪结构,并将所述跟踪结构与所述文件进行关联;
当捕获到文件的读操作/写操作时,获取与所述文件关联的跟踪结构,并在所述跟踪结构中提取出已读取长度/已写入长度;
判断所述读操作/写操作是否为连续读/连续写,当为连续读/连续写时,根据所述已读取长度/已写入长度更新所述文件的哈希值。
7.如权利要求6所述的文件复制操作的识别方法,其特征在于,判断所述读操作是否为连续读,包括:
在所述文件的读请求中获取读位置偏移;
当所述读位置偏移等于所述已读取长度时,判断定所述读操作为连续读。
判断所述写操作是否为连续写,包括:
在所述文件的写请求中获取写位置偏移;
当所述写位置偏移等于所述已写入长度时,判断定所述写操作为连续写。
8.如权利要求6所述的文件复制操作的识别方法,其特征在于,在根据所述已读取长度/已写入长度更新所述文件的哈希值之后,还包括:
将所述文件本次读操作/写操作时的读取长度/写入长度与所述跟踪结构中的已读取长度/已写入长度相加,对所述跟踪结构中的已读取长度/已写入长度进行更新。
9.一种文件复制操作的识别设备,其特征在于,所述设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1至8任一项所述的文件复制操作的识别方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有文件复制操作的识别程序,所述文件复制操作的识别程序被处理器执行时实现如权利要求1至8中任一项所述的文件复制操作的识别方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711458363.XA CN108021707A (zh) | 2017-12-28 | 2017-12-28 | 文件复制操作的识别方法、设备及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711458363.XA CN108021707A (zh) | 2017-12-28 | 2017-12-28 | 文件复制操作的识别方法、设备及计算机可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108021707A true CN108021707A (zh) | 2018-05-11 |
Family
ID=62072072
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711458363.XA Pending CN108021707A (zh) | 2017-12-28 | 2017-12-28 | 文件复制操作的识别方法、设备及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108021707A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111159126A (zh) * | 2019-12-31 | 2020-05-15 | 北京天融信网络安全技术有限公司 | 文件压缩操作的审计方法、装置、电子设备及存储介质 |
CN112035833A (zh) * | 2020-08-21 | 2020-12-04 | 郑州信大捷安信息技术股份有限公司 | 一种文件拷贝监控方法和*** |
CN112764974A (zh) * | 2021-01-28 | 2021-05-07 | 河北研云科技有限公司 | 信息资产在线管理方法及*** |
CN114416672A (zh) * | 2021-12-15 | 2022-04-29 | 中孚安全技术有限公司 | Linux***下过滤应用程序文件预读行为的方法、***及设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040083347A1 (en) * | 2002-10-29 | 2004-04-29 | Parson Dale E. | Incremental reorganization for hash tables |
CN102651036A (zh) * | 2012-04-14 | 2012-08-29 | 沈阳通用软件有限公司 | 通用、可靠的文件复制操作识别方法 |
US20140279950A1 (en) * | 2005-12-22 | 2014-09-18 | Joshua Shapiro | System and method for metadata modification |
CN106612619A (zh) * | 2015-08-25 | 2017-05-03 | 株式会社东芝 | 分级存储***、利用分级存储装置的计算机及校正对文件的访问计数的计算机 |
-
2017
- 2017-12-28 CN CN201711458363.XA patent/CN108021707A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040083347A1 (en) * | 2002-10-29 | 2004-04-29 | Parson Dale E. | Incremental reorganization for hash tables |
US20140279950A1 (en) * | 2005-12-22 | 2014-09-18 | Joshua Shapiro | System and method for metadata modification |
CN102651036A (zh) * | 2012-04-14 | 2012-08-29 | 沈阳通用软件有限公司 | 通用、可靠的文件复制操作识别方法 |
CN106612619A (zh) * | 2015-08-25 | 2017-05-03 | 株式会社东芝 | 分级存储***、利用分级存储装置的计算机及校正对文件的访问计数的计算机 |
Non-Patent Citations (1)
Title |
---|
李飞等: "4.1.2Hash函数", 《信息安全理论与技术》 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111159126A (zh) * | 2019-12-31 | 2020-05-15 | 北京天融信网络安全技术有限公司 | 文件压缩操作的审计方法、装置、电子设备及存储介质 |
CN111159126B (zh) * | 2019-12-31 | 2024-01-23 | 北京天融信网络安全技术有限公司 | 文件压缩操作的审计方法、装置、电子设备及存储介质 |
CN112035833A (zh) * | 2020-08-21 | 2020-12-04 | 郑州信大捷安信息技术股份有限公司 | 一种文件拷贝监控方法和*** |
CN112035833B (zh) * | 2020-08-21 | 2022-02-11 | 郑州信大捷安信息技术股份有限公司 | 一种文件拷贝监控方法和*** |
CN112764974A (zh) * | 2021-01-28 | 2021-05-07 | 河北研云科技有限公司 | 信息资产在线管理方法及*** |
CN112764974B (zh) * | 2021-01-28 | 2023-12-29 | 河北研云科技有限公司 | 信息资产在线管理方法及*** |
CN114416672A (zh) * | 2021-12-15 | 2022-04-29 | 中孚安全技术有限公司 | Linux***下过滤应用程序文件预读行为的方法、***及设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108021707A (zh) | 文件复制操作的识别方法、设备及计算机可读存储介质 | |
CN105144158B (zh) | 使用拆毁写检测的恢复处理方法和*** | |
CN107710215A (zh) | 在测试设施中的移动计算装置安全的方法和设备 | |
US7587433B2 (en) | Method and system for in-place updating content stored in a storage device | |
US10360182B2 (en) | Recovering data lost in data de-duplication system | |
CN103136243B (zh) | 基于云存储的文件***去重方法及装置 | |
CN100440214C (zh) | 管理存储子***中元数据的方法、***和计算机程序产品 | |
US9128616B2 (en) | Storage device to backup content based on a deduplication system | |
CN103842967B (zh) | 用于维护即时虚拟拷贝的方法和计算机*** | |
CN103870514B (zh) | 重复数据删除方法和装置 | |
US20080109495A1 (en) | Application-specific intelligent backup and restore system | |
JP2005301329A5 (zh) | ||
CN101784996A (zh) | 仿效存储*** | |
CA2214515A1 (en) | Methods and apparatus for protecting the integrity of process data stored on a removable storage medium | |
CN106095613B (zh) | 用于使用wal的数据库回滚的方法和设备 | |
CN106527973A (zh) | 一种数据重复删除的方法及装置 | |
CN109101365A (zh) | 一种基于源端数据重删的数据备份和恢复方法 | |
CN107992504A (zh) | 一种文件处理方法及装置 | |
US11916908B2 (en) | Method and system for performing an authentication and authorization operation on video data using a data processing unit | |
CN106681863B (zh) | 保存电子病历编辑内容的方法和终端设备 | |
CN108734362A (zh) | 信息处理方法、装置、服务器、计算机可读存储介质 | |
CN109213791A (zh) | 数据处理方法、区块链节点、***和计算机可读存储介质 | |
CN106446681B (zh) | 病毒查杀方法和装置 | |
CN102982288B (zh) | 在便携式终端中执行数据的加密和解密的设备和方法 | |
CN105830067B (zh) | 一种文件信息处理方法、装置及文件处理设备、*** |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20180511 |
|
RJ01 | Rejection of invention patent application after publication |