CN116305126A - 主机文件检测方法、电子设备及存储介质 - Google Patents
主机文件检测方法、电子设备及存储介质 Download PDFInfo
- Publication number
- CN116305126A CN116305126A CN202310272989.0A CN202310272989A CN116305126A CN 116305126 A CN116305126 A CN 116305126A CN 202310272989 A CN202310272989 A CN 202310272989A CN 116305126 A CN116305126 A CN 116305126A
- Authority
- CN
- China
- Prior art keywords
- file
- data table
- row
- identification information
- absolute path
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
-
- 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/11—File system administration, e.g. details of archiving or snapshots
- G06F16/128—Details of file system snapshots on the file-level, e.g. snapshot creation, administration, deletion
-
- 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/13—File access structures, e.g. distributed indices
- G06F16/137—Hash-based
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/562—Static detection
- G06F21/565—Static detection by checking file integrity
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Health & Medical Sciences (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供了一种主机文件检测方法、电子设备及存储介质。主机文件检测方法包括:基于主机安全检测系统与目标主机之间的快照分享功能,获取目标主机中的第一快照和第二快照;第一快照是第一时间的目标主机中文件系统的数据备份,第二快照是第二时间的文件系统的数据备份,第一时间早于第二时间;对第一快照和第二快照进行差异计算;基于差异计算的结果确定文件系统中的文件是否发生变化。依据本申请的技术方案,可以实现无代理的文件检测。
Description
技术领域
本申请涉及云安全技术领域,尤其涉及一种主机文件检测方法、电子设备及存储介质。
背景技术
在主机安全领域,经常需要对主机上的文件进行全量扫描,来检查是否存在恶意文件。传统的做法是在主机上部署一个安全代理程序,利用该程序定时扫描遍历其所在宿主机上的文件。这种方法存在以下缺点:1、占用主机上的资源,特别是CPU(CentralProcessing Unit,中央处理器)和内存资源;2、和主机的服务有耦合,稳定性较差。3、部署繁琐,特别是在弹性场景下,需要逐台部署。
发明内容
本申请实施例提供一种主机文件检测方法、电子设备及存储介质,以解决现有技术存在的问题。
第一方面,本申请实施例提供了一种主机文件检测方法,应用于主机安全检测系统,包括:
基于主机安全检测系统与目标主机之间的快照分享功能,获取目标主机中的第一快照和第二快照;第一快照是第一时间的目标主机中文件系统的数据备份,第二快照是第二时间的文件系统的数据备份,第一时间早于第二时间;
对第一快照和第二快照进行差异计算;
基于差异计算的结果确定目标主机的文件系统中的文件是否发生变化。
第二方面,本申请实施例提供了一种主机文件检测装置,应用于主机安全检测系统,包括:
信息获取模块,用于基于主机安全检测系统与目标主机之间的快照分享功能,获取目标主机中的第一快照和第二快照;第一快照是第一时间的目标主机中文件系统的数据备份,第二快照是第二时间的文件系统的数据备份,第一时间早于第二时间;
差异计算模块,用于对第一快照和第二快照进行差异计算;
变化确定模块,用于基于差异计算的结果确定目标主机的文件系统中的文件是否发生变化。
第三方面,本申请实施例提供了一种电子设备,包括存储器、处理器及存储在存储器上的计算机程序,该处理器在执行该计算机程序时实现本申请实施例第一方面提供的方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,存储有计算机程序,该计算机程序被处理器执行时实现本申请实施例第一方面提供的方法。
与现有技术相比,本申请具有如下优点:
依据本申请实施例,可以实现通过主机安全检测系统与目标主机之间的快照分享获取目标主机中不同时间的快照,进而基于不同时间的快照确定目标主机的文件系统中的文件是否发生变化,而无需在目标主机上部署安全代理程序,可以实现无代理的文件扫描,以减少对目标主机的资源占用,对目标主机的服务的影响较小,稳定性更高,同时更易于部署,进而可以基于无代理的文件检测实现无代理、无侵入的主机安全检测。
上述说明仅是本申请技术方案的概述,为了能够更清楚了解本申请的技术手段,可依照说明书的内容予以实施,并且为了让本申请的上述和其他目的、特征和优点能够更明显易懂,以下特举本申请的具体实施方式。
附图说明
在附图中,除非另外规定,否则贯穿多个附图相同的附图标记表示相同或相似的部件或元素。这些附图不一定是按照比例绘制的。应该理解,这些附图仅描绘了根据本申请的一些实施方式,而不应将其视为是对本申请范围的限制。
图1为本申请实施例提供的一种主机文件检测方法的流程示意图;
图2为本申请实施例提供的另一种主机文件检测方法的部分流程示意图;
图3为本申请实施例中的一种目录树的示意图;
图4为本申请实施例中的一种文件系统梅克尔树的示意图;
图5为本申请实施例中的一种表达式树的示意图;
图6为本申请实施例中的一种压缩有序表的示意图;
图7至图13为本申请实施例中构建压缩有序表以及计算普通文件哈希值的原理示意图;
图14至图20为本申请实施例中计算目录文件的哈希值的原理示意图;
图21至图29为本申请实施例中确定各文件的绝对路径的原理示意图;
图30为本申请实施例提供的又一种主机文件检测方法的部分流程示意图;
图31至图39为本申请实施例中对比第一数据表和第二数据表中的绝对路径和哈希值的原理示意图;
图40为本申请实施例提供的一种主机文件检测装置的结构框架示意图;以及
图41为本申请实施例提供的一种电子设备的结构框架示意图。
具体实施方式
在下文中,仅简单地描述了某些示例性实施例。正如本领域技术人员可认识到的那样,在不脱离本申请的构思或范围的情况下,可通过各种不同方式修改所描述的实施例。因此,附图和描述被认为本质上是示例性的,而非限制性的。
首先对本申请实施例涉及的部分技术术语进行如下介绍:
无代理(Agentless):一种不需要在目标主机上部署安全代理程序的无入侵、对服务无影响的工作方式。
云盘快照:某一时间点云盘数据状态的备份文件,用于备份或者恢复整个云盘。它是一种便捷高效的数据容灾手段,常用于数据备份、制作镜像、应用容灾。
增量快照:仅备份上一个快照以来的有变化的数据块。
梅克尔树(Merkle tree):广泛应用于P2P(Peer-To-Peer,个人对个人)系统和区块链技术中的一种数据结构,它的最大特征就是非叶子节点的内容为它所有的子节点的内容的哈希值,可用于快速比较大量数据。
文件系统梅克尔树(FSMT):针对文件系统特点,改进的一种子节点无限、路径长度有限的梅克尔树。
表达式树(Expression tree):是一类树,其基本结构为所有的叶节点为操作数,非叶节点为操作符,当进行后序遍历时,得到的表达式为后缀表达式。
后缀表达式(Postfix expression):又被称为逆波兰表达式,后缀表达式是把操作符放到操作数的后面,这种形式的表达式可以直接由栈结构实现计算并可直接按表结构存储。
压缩有序表(Compact Ordered Table,COT):用表结构存储的文件系统树(例如FSMT)同构数据,表中记录顺序和深度优先遍历文件系统同序。
本申请实施例可以应用于主机安全领域,在主机安全领域需要对主机进行定期的安全检测,以确定主机是否被入侵,定期安全主要通过定期文件扫描和检测来实现,即定期对主机文件系统中的文件进行扫描和检测,通过检测当前扫描的文件相对上一次扫描的文件的变化情况,可以检测出当前主机的安全性,传统的文件检测方案需要在主机部署安全代理程序以获取主机的文件信息,本申请实施例提供的文件检测方案无需在主机部署安全代理程序,可以实现无代理的文件检测
为便于理解本申请实施例的技术方案,以下对本申请实施例的相关技术进行说明。以下相关技术作为可选方案与本申请实施例的技术方案可以进行任意结合,其均属于本申请实施例的保护范围。
本申请实施例提供了一种主机文件检测方法,可以应用于主机安全检测系统,如图1所示,该方法可以包括如下步骤:S101,基于主机安全检测系统与目标主机之间的快照分享功能,获取目标主机中的第一快照和第二快照,第一快照可以是第一时间的目标主机中文件系统间的数据备份,第二快照可以是第二时间的目标主机文件系统的数据备份,第一时间早于第二时间;S102,对第一快照和第二快照进行差异计算;S103,基于差异计算的结果确定目标主机的文件系统中的文件是否发生变化。
目标主机可以是ECS(Elastic Compute Service,弹性计算服务)实例,第一快照和第二快照均可以是云盘快照。
本申请实施例提供的上述主机文件扫描方法可以实现通过主机安全检测系统与目标主机之间的快照分享功能获取目标主机中的不同时间的快照,进而基于两个快照之间的差异计算可以确定目标主机的文件系统中的文件是否发生变化,以实现对文件系统增量文件的实时安全扫描检测,而无需在目标主机上部署安全代理程序,可以实现无代理的文件检测,以减少对目标主机的资源占用,对目标主机的服务的影响较小,稳定性更高,同时更易于部署。
在一种实施方式中,第一快照和第二快照均可以是增量快照。为了实时感知目标主机上的入侵事件,通常需要定时对目标主机进行一个文件扫描,在实际场景中,目标主机上的大部分文件是不变的,没有必要反复的扫描和处理,因此本申请实施例作为差异计算对象的第一快照和第二快照均可以是增量快照,相对于全量的文件扫描,可大大减少需要扫描的文件量,进而大大减少计算量,实现对增量快照的快速对比。
在一种示例中,在上述步骤S101中,基于主机安全检测系统与目标主机之间的快照分享功能,获取目标主机中的第一快照和第二快照,可以通过以下方式实现:通过主机安全检测系统的API(应用程序接口)在用户侧即主机侧定时生成目标主机的增量快照(第一快照或第二快照);目标主机可在用户授权的情况下将增量快照通过主机侧的服务账号分享到主机安全检测系统的服务账号;主机安全检测系统的扫描器基于接收到的增量快照创建数据盘,并将数据盘挂载到扫描器上,进而可通过数据盘对扫描器接收到的增量快照进行安全检测,并通过数据盘本地化读取扫描器接收到的增量快照,也即通过数据盘将远端的增量快照转化为本地化的增量快照。
在一种实施方式中,如图2所示,在上述步骤S102中,对第一快照和第二快照进行差异计算,可以包括:S201,基于第一快照中的第一目录结构构建文件系统的第一文件系统树,基于第二快照中的第二目录结构构建文件系统的第二文件系统树;S202,对第一文件系统树和第二文件系统树进行差异计算。其中,第一文件系统树与第一目录结构同构,从而可以表示文件系统在第一时间的文件特性,第二文件系统树与第二目录结构同构,从而可以表示文件系统在第二时间的文件特性,基于第一文件系统树和第二文件系统树对相应的目录结构的文件特性的体现,基于文件系统树进行差异计算可以更准确和快速的检测文件系统的变化。
第一目录结构和第二目录结构均可以是如图3所示的目录树的形式,该目录树中可以基于第一快照或第二快照的内容生成,在如图3所示的目录树中,/、music、home、abc.mp4、admin、cai和hello.txt分别为七个文件的文件名,其中,/、music、home、cai和admin均为目录文件,abc.mp4和hello.txt均为普通文件,在五个目录文件中,/、music、home和cai均为非空目录,即包含子文件的目录文件,admin为空目录,即不包含子文件的目录文件,空目录是一种特殊的目录文件。在基于某个快照中的目录结构构建文件系统的文件系统树时,可以将如图3所示的目录树转化为同构的文件系统树。
在一种实施方式中,第一文件系统树和第二文件系统树均可以是FSMT。
梅克尔树是区块链系统中普遍使用的数据结构,其基本思想是父节点的哈希值依赖于子节点的哈希值,树上任意一个节点哈希值的改变都会向上传导至根节点。反之,如果根节点的哈希值不变,则整个树上所有节点都不变。梅克尔树的使用具有以下几个优势:1)快速对比两个树的差异,生成差集树;2)只需要有限个节点的信息即可证明某个节点是否属于该树;3)可以方便地将一个树拆分成多个子树,便于存储和计算,而不影响整个树的逻辑。
经典的梅克尔树为二叉树,其节点数量有限,在文件系统中的文件数量较为庞大时,经典的梅克尔树无法充分反映文件系统的文件特性。本申请实施例对梅克尔树进行了改进,形成了一种FSMT,具有子节点数无限,路径长度有限的特点,可以充分反映文件系统的文件特性。在FSMT中,每个中间节点有M个子节点,M可以是文件系统规定的目录最大文件数,例如在ext4(Fourth extended filesystem,第四代扩展文件系统)下M为2的32次方,在FSMT中,每个中间节点延伸出来的路径长度为N,N可以文件系统规定的最大文件名长度,例如在ext4下N为255字节。
图4示出了本申请实施例改进的一种FSMT的一个具体示例,如图4所示的FSMT可以是由图3所示的目录树转化得到,目录树中的目录文件可以对应FSMT中的中间节点,与图3对应的,图4中的中间节点包括H2、H4、H6和H7四个哈希值对应的节点,目录树上的普通文件可以对应文件系统树中的叶子节点,与图3对应的,图4中的叶子节点包括H1、H3和H5三个哈希值对应的节点。FSMT上的各节点可以由从根节点到该节点的路径来唯一标识。
在图4中,H1=Hash(hello.txt)表示文件hello.txt的哈希值H1是对文件hello.txt的信息进行哈希运算得到的,H2=Hash(cai,H1)表示文件cai的哈希值H2是对文件cai的信息和哈希值H1进行哈希运算得到的,H3=Hash(admin)表示文件admin的哈希值H3是对文件admin的信息进行哈希运算得到的,H4=Hash(home,H3,H2)表示文件home的哈希值H4是对文件home的信息、哈希值H3和哈希值H2进行哈希运算得到的,H5=Hash(abc.mp4)表示文件abc.mp4的哈希值H5是对文件abc.mp4的信息进行哈希运算得到的,H6=Hash(music,H5)表示文件music的哈希值H6是对文件music的信息和哈希值H5进行哈希运算得到的,H7=Hash(/,H6,H4)表示文件/的哈希值H7是对文件/的信息、哈希值H6和哈希值H4进行哈希运算得到的。
基于上述方式,采用FSMT作为本申请实施例的文件系统树,既可以引入梅克尔树的优点,快速对比两个树,也可以更方便表示文件系统的特性,可适用文件数量较多的文件系统的扫描和检测。
在一种实施方式中,本申请实施例中的文件系统树可以以数据表的形式存储,例如第一文件系统树可以以第一数据表的形式存储,第二文件系统树可以以第二数据表的形式存储;第一数据表和第二数据表均可以是结构化存储的数据表。对应的,在上述步骤S202中,对第一文件系统树和第二文件系统树进行差异计算,可以包括:对第一数据表和第二数据表进行差异计算。
对于文件数量庞大的文件系统来说,其对应的文件系统树的节点几乎是无限的,在内存资源较为有限的情况下,将FSMT中海量的文件存入内存中进行计算处理较为困难,将文件系统树以可结构化存储的数据表的形式来存储,可使得文件系统树具有可拆分、方便持久化的特点,可将拆分出的部分文件内容存入内存进行计算,进而再将计算结果汇总,从而可以更好利用有限的内存资源对FSMT中海量的文件进行计算处理。
在一种实施方式中,基于第一目录结构构建第一文件系统树,可以包括:遍历第一目录结构中的各文件,通过递归的方式构建第一文件系统树。同理,基于第二目录结构构建第二文件系统树,可以包括:遍历第二目录结构中的各文件,通过递归的方式构建第二文件系统树。该方式可以适用于文件数量较少、文件层级较少的场景。
在一种实施方式中,基于第一快照中的第一目录结构构建第一文件系统树,可以包括:基于第一快照中的第一目录结构构建第一表达式树,基于第一表达式树构建第一文件系统树。同理,基于第二快照中的第二目录结构构建第二表达式树,可以包括:基于第二快照中的第二目录结构构建第二表达式树,基于第二表达式树构建第一文件系统树。其中,第一表达式树可以表达构建第一文件系统树的计算过程,第二表达式树可以表达构建第二文件系统树的计算过程,第一表达式树和第二表达式树均可以基于后缀表达式构建出,从而使得第一表达式树和第二表达式树均以可结构化存储的数据表的形式存储,进而使得基于第一表达式树和第二表达式树构建出的第一文件系统树和第二文件系统树也可以以可结构化存储的数据表的形式存储。该方式可以适用于文件数据量较多、文件层级较多的场景。
第一表达式树可以与第一文件系统树同构,第二表达式树可以与第二文件系统树同构,与文件系统树类似的,表达式树也可以包括中间节点和叶子节点,中间节点对应目录文件,叶子节点对应普通文件,其中,每个节点均可以作为操作符(operator)。图5示出了一种表达式树的示例图,参照图5,该表达式树具有第一操作符HashDir和第二操作符HashFile两种操作符,中间节点可以作为第一操作符HashDir,叶子节点可以作为第二操作符HashFile,第一操作符HashDir表示对当前中间节点(即该第一操作符对应的中间节点)进行哈希运算,运算方法可以是基于当前中间节点的所有直接子节点的哈希值和当前中间节点的文件信息计算当前中间节点的哈希值,第一操作符HashDir对应的操作数为当前中间节点下的所有直接子节点的文件信息,第二操作符HashFile表示对当前叶子节点(即该第二操作符对应的叶子节点)进行哈希运算,运算方法可以是基于当前叶子节点自身的文件信息计算当前叶子节点的哈希值,第二操作符HashFile对应的操作数为当前叶子节点的文件信息。
对第一表达式树和第二表达式树的遍历可以是后序遍历,基于后缀表达式构建出的表达式树以及后序遍历的方式,符合计算机的处理习惯,便于计算机进行处理,同时也符合人类的阅读习惯。
在一种实施方式中,在上述步骤S201中,基于第一快照中的第一目录结构构建文件系统的第一文件系统树,可以包括:遍历第一目录结构中的各个文件,将每个文件的信息以行记录的形式插入第一数据表。同理,基于第二快照中的第二目录结构构建文件系统的第二文件系统树,可以包括,遍历第二目录结构中的各个文件,将每个文件的信息以行记录的形式插入第二数据表。基于该种方式,可以通过遍历目录结构中的文件形成各个文件的行记录并插入到相应的数据表,从而得到以数据表形式存储的文件系统树,并可避免遗漏文件。
基于上述方式形成的第一数据表,其每条行记录对应一个文件,各文件的排列顺序可以与文件系统的第一目录结构中各文件的层级顺序一致,对于第二数据表,其每条行记录对应一个文件,各文件的排列顺序与文件系统的第二目录结构中各文件的层级顺序一致。
在一种实施方式中,遍历第一目录结构中的各个文件,可以包括:按第一顺序遍历第一目录结构中的各个文件,在遍历到的文件为普通文件或空目录时,确定该普通文件或空目录的哈希值;按第二顺序遍历第一目录结构中的各个文件,在遍历到的文件为非空目录时,确定该非空目录的哈希值。对应的,遍历第二目录结构中的各个文件,可以包括:按所第一顺序遍历第二目录结构中的各个文件,在遍历到的文件为普通文件或空目录时,确定该普通文件或空目录的哈希值;按第二顺序遍历第二目录结构中的各个文件,在遍历到的文件为非空目录时,确定该非空目录的哈希值。在第一数据表和第二数据表中,普通文件的行记录可以包括该普通文件的哈希值,空目录的行记录包括该空目录的哈希值,非空目录的行记录可以包括该非空目录的哈希值;第一顺序可以从根目录到最后一层子文件的顺序,第二顺序为第一顺序的反向顺序。在第一数据表中第二数据表中,每个文件的行记录均包括该文件的哈希值。
非空目录的哈希值与该非空目录下的子文件相关,通过第一次遍历,可以首先确定出普通文件和空目录的哈希值,进而在第二次遍历可以基于已确定出的普通文件和空目录的哈希值进一步确定其所属的非空目录的哈希值,将第二次遍历的顺序设置为与第一次遍历的顺序相反,从最后一层子文件开始向根目录遍历,可实现对不同层级的非空目录的逐层哈希值确定,先确定下一级的非空目录的哈希值,进而可以在下一级的非空目录的哈希值的基础上确定上一级的非空目录的哈希值的确定,最终可以实现所有文件的哈希值的确定。
在一种实施方式中,遍历第一目录结构中的各个文件,可以包括:按第一顺序遍历第一目录结构中的各个文件,确定遍历到的每个文件的绝对路径。同理,遍历第二目录结构中的各个文件,可以包括:按第一顺序遍历第二目录结构中的各个文件,确定遍历到的每个文件的绝对路径。第一数据表和第二数据表均为压缩有序表,在压缩有序表中,每个文件的记录可以包括该文件的绝对路径,同一目录文件下各子文件的行记录中可以包括相同的多个路径前缀中的一个路径前缀的记录。第一顺序可以是从根目录到最后一层子文件的顺序。基于该种方式可以逐个确定目录结构中每个文件的绝对路径,避免遗漏,此外同一目录文件下各子文件的绝对路径通常具有相同的路径前缀,对于具有相同的路径前缀的情况,采用压缩有序表的形式实现数据存储,可以在数据表中只存储相同路径前缀的一条记录,也即,相同的路径前缀只在数据表中存储一次,可有效减少相同路径前缀的重复存储,进而可减少冗余数据的存储,大大节省存储空间。
在一种实施方式中,遍历第一目录结构中的各个文件,将每个文件的信息以行记录的形式插入第一数据表,可以包括:利用栈遍历第一目录结构中的各个文件,按遍历顺序,将各个文件的信息依次以行记录的形式插入第一数据表。同理,遍历第二目录结构中的各个文件,将每个文件的信息以行记录的形式插入第二数据表,可以包括:利用栈遍历第二目录结构中的各个文件,按遍历顺序,将各个文件的信息依次以行记录的形式插入第二数据表。
在确定哈希值的过程中,对同一目录结构的两次遍历均可以基于栈来实现,从而可以保证对每个文件只访问一次便可完成计算,在第二次遍历时,遍历到普通文件可直接入栈,遍历到目录文件时,可以从栈顶弹出其子文件的行记录,计算哈希值并插入数据表的对应的字段。
在确定绝对路径的过程中,对同一目录结构的遍历可以基于栈来实现,从而可以保证每个文件只访问一次便可完成计算。在基于栈来遍历目录结构以确定每个文件的绝对路径时,若栈顶有对象,可将栈顶对象的父目录的子文件数量减1,若遍历到的当前文件是非空目录,则可以将当前文件的文件名和子文件数量作为一个对象压入栈,在访问某个文件时,栈中可以包含该文件的完整路径前缀,从栈底到栈顶可以依次为根目录、当前文件的父目录的文件名,若遍历到的当前文件是其父目录下的最后一个文件,可从栈顶开始将所有子文件数量为0的对象弹出,也即将栈中所有已经访问完子文件的目录弹出。
此外,栈具有先进后出的特点,最后访问(出栈)的元素位于最底层,可以通过把栈底元素存储磁盘的方式,在有限的内存内维护一个逻辑上几乎无穷大的栈,同时栈中的顺序还可以隐式表达目录结构中各文件的层级关系。
本申请实施例中的第一数据表和第二数据表均可以是压缩有序表,在哈希值的基础上,第一数据表和第二数据表中的每条行记录还可以包括对应文件的文件名、目录属性、子文件数、在父节点下的排序、绝对路径等至少一种信息。
图6示出了压缩有序表的一个示例,图6中的压缩有序表包括7条行记录,每条行记录包括一个文件的文件名(File Name)、目录属性(IsDiectory)、子文件数(Subfile Num)和反序号(Rverse Index),仅作为压缩有序表的存储形式的示例,未示出全部字段的信息。其中,目录属性可以用“true”或“false”表示,“true”表示当前文件对应的节点为第一操作符HashDir,“false”表示当前文件对应的节点为第二操作符HashFile,当前节点的反序号可以表示当前节点在父节点下的排序,例如当前节点是否为父节点下的最后一个节点,若是,则反序号可以表示为0,若否,反序号可以表示为N-1,N为当前节点的父节点的子文件数量。
如图6所示的压缩有序表可以从任意位置拆分,拆分后的片段内天然有序,可用于表示FSMT的同构子树,方便分段加载到有限的内存资源中。此外,压缩有序表可以在有限的内存资源的限制下快速的被创建、对比和遍历,实现对FSMT的构建、对比和遍历的林模拟,有利于实现对海量文件的差异结果集的快速检测,效率和速度更优,适用于无代理文件扫描中的定时扫描场景。
如图6所示的压缩有序表的构建原理可以参照图7至图13的示例,图7至13为简洁表示,未示出哈希值字段的信息。参照图7的示例,可以首先构建出包括文件名、目录属性、子文件数、反序号、哈希值(图中未示出)等字段的压缩有序表,访问如图3所示的目录树的根节点,将根节点对应的文件名、目录属性、子文件数和反序号插入压缩有序表中的第一行,并将根节点处文件的子文件倒序排序后依次压入栈。参照图3以及图4所示的FSMT,根节点对应的文件名为/,根节点为第一操作符HashDir,因此目录属性为true,根节点文件/下有两个子文件music和home,因此子文件数为2,根节点没有父节点,因此反序号处可以不插入数据,根节点文件/为具有子文件的非空目录,需要根据其全部子文件和该根节点文件的信息计算哈希值,在本次遍历中哈希值字段可以留空。
参照图8的示例,可弹出栈顶节点,将该节点的文件名、目录属性、子文件数和反序号排插入压缩有序表中的第二行,并将该节点处文件的子文件倒序排序后依次压入栈。参照图3和图4的示例,该节点的文件名为home,该节点为第一操作符HashDir,因此目录属性为true,该节点文件home下有两个子文件cai和admin,因此子文件数为2,该节点不是其父节点的最后一个子节点,因此反序号为1,该节点文件home为具有子文件的非空目录,需要根据其全部子文件和该节点文件home的信息计算哈希值,在本次遍历中哈希值字段可以留空。
参照图9的示例,再次弹出栈顶节点,将该节点的文件名、目录属性、子文件数和反序号排插入压缩有序表中的第三行。结合图3和图4,该节点的文件名为admin,该节点为第一操作符HashDir,因此目录属性为true,该节点文件admin下没有子文件,因此子文件数为0,该节点不是其父节点的最后一个子节点,因此反序号为1,该节点文件admin为空目录,可在本次遍历中直接基于该文件计算出哈希值并插入该对应字段。
参照图10的示例,再次弹出栈顶节点,将该节点的文件名、目录属性、子文件数和反序号排插入压缩有序表中的第四行,并将该节点处文件的子文件倒序排序后依次压入栈。结合图3和图4,该节点的文件名为cai,该节点为第一操作符HashDir,因此目录属性为true,该节点文件cai下有一个子文件hello.txt,因此子文件数为1,该节点是其父节点的最后一个子节点,因此反序号为0,该节点文件cai为非空目录,需要根据其全部子文件和该文件的信息计算哈希值,在本次遍历中哈希值字段可以留空。
参照图11的示例,再次弹出栈顶节点,将该节点的文件名、目录属性、子文件数和反序号排插入压缩有序表中的第五行。结合图5和图4,该节点的文件名为hello.txt,该节点为第二操作符HashFile,因此目录属性为false,该节点文件hello.txt下没有子文件,因此子文件数为空,该节点是其父节点的最后一个子节点,因此反序号为0,该节点文件hello.txt为普通文件,可在本次遍历中直接基于该文件计算出哈希值并插入对应字段。
参照图12的示例,再次弹出栈顶节点,将该节点的文件名、目录属性、子文件数和反序号排插入压缩有序表中的第六行,并将该节点处文件的子文件压入栈。结合图3和图4,该节点的文件名为music,该节点为第一操作符HashDir,因此目录属性为true,该节点文件music下有一个子文件abc.mp4,因此子文件数为1,该节点是其父节点的最后一个子节点,因此反序号为0,该节点文件music为非空目录,需要根据全部子文件和该节点文件music的信息计算哈希值,在本次遍历中哈希值字段可以留空。
参照图13的示例,再次弹出栈顶节点,将该节点的文件名、目录属性、子文件数和反序号排插入压缩有序表中的第五行。结合图3和图4,该节点的文件名为abc.mp4,该节点为第一操作符HashDir,因此目录属性为true,该节点文件abc.mp4下没有子文件,因此子文件数为空,该节点是其父节点的最后一个子节点,因此反序号为0,该节点文件abc.mp4为普通文件,可在本次遍历中直接基于该文件计算出哈希值并插入对应字段。至此,可形成存储有各文件数据的压缩有序表,并计算出各普通文件和空目录的哈希值。
进一步可以对如图3所示的目录树进行反向遍历(按第二顺序遍历),在通过如图7至图13所示的过程形成已插入各文件信息的压缩有序表后,该压缩有序表的文件排列顺序与目录树的文件层级顺序一致,对压缩有序表进行遍历相当于DFS的方式遍历目录树,因此可直接对如图13所示的压缩有序表中的各文件进行第二次遍历,在遍历过程中计算非空目录的哈希值。
以图13所示的压缩有序表中非空目录的哈希值计算为例,非空目录的哈希值的计算原理可参照图14至图20。参照图14,可以首先访问如图13所示的压缩有序表最后一行的文件abc.mp4,其为普通文件,已有计算出的哈希值,可直接入栈。参照图15,继续访问压缩有序表第六行的文件music,其为非空目录且只含有一个子文件即abc.mp4,可以从栈中弹出该子文件abc.mp4,基于该子文件abc.mp4的哈希值和非空目录music的信息计算非空目录music的哈希值,并将非空目录music入栈。参照图16,继续访问压缩有序表第五行的文件hello.txt,其为普通文件,已有计算出的哈希值,可直接入栈。参照图17,继续访问压缩有序表第四行的文件cai,其为非空目录文件且只含有一个子文件即hello.txt,可以从栈中弹出该子文件hello.txt,基于该子文件hello.txt的哈希值和非空目录cai的信息计算非空目录cai的哈希值,并将非空目录cai入栈。
参照图18,继续访问压缩有序表第三行的文件admin,其为空目录,已有计算出的哈希值,可直接入栈。参照图19,继续访问压缩有序表第二行的文件home,其为非空目录且有两个子文件,即admin和cai,可以从栈中弹出子文件admin和cai,根据子文件admin的哈希值、子文件cai的哈希值和非空目录home的信息计算非空目录home的哈希值,并将非空目录home入栈。参照图20,继续访问压缩有序表第一行的文件/,其为非空目录且具有两个子文件,即home和music,可从栈中弹出子文件home和music,基于该子文件home的哈希值、子文件music的哈希值以及非空目录/的信息计算非空目录/的哈希值,并将非空目录/入栈。至此可完成对整个压缩有序表的遍历,计算出各非空目录的哈希值,进而可得到所有文件的哈希值。
在一个示例中,可以对如图3所示的目录树进行正向遍历(按第一顺序遍历),由于压缩有序表的文件排列顺序与目录树的文件层级顺序一致,对压缩有序表进行遍历相当于DFS的方式遍历目录树,因此可直接对压缩有序表中的各文件进行遍历,在遍历过程中确定各文件的绝对路径,其原理可以参照图21至图29。
参照图21,可以首先访问压缩有序表第一行的文件/,其为非空目录,可以直接入栈,并可确定出该文件/的绝对路径为/。参照图22,继续访问压缩有序表第二行的文件home,其为非空目录,可直接入栈,将其父节点(栈顶节点)文件/的未访问的子文件数更新为1,并可确定出该文件home的绝对路径为/home,在图22的示例中,可将父节点的未访问的子文件数更新于父节点对应的子文件数的字段中,在其它示例,可以设置其它字段用于更新父节点未访问的子文件数,本申请实施例对此不作限定。参照图23,继续访问压缩有序表第三行的文件admin,其为空目录,不入栈,可将其父节点文件home的未访问的子文件数量更新为1,并可确定出该文件admin的绝对路径为/home/admin。参照图24,继续访问压缩有序表中第四行的文件cai,其为非空目录,可以直接入栈,将其父节点文件home的未访问的子文件数量更新为0,并可确定出该文件的绝对路径为/home/cai,由于文件cai的绝对路径和文件admin的绝对路径具有相同的路径前缀/home,在已于压缩有序表中存储过该路径前缀的情况下,可不再重复存储,以减少冗余存储。参照图25,继续访问压缩有序表中第五行的文件hello.txt,其绝对路径为/home/cai/hello.txt,该文件的反序号为0,表示其父节点中的最后一个文件,此时参照图26可以弹出栈中已经访问完的除根节点文件以外的所有文件,由于文件hello.txt的绝对路径和文件cai具有相同的路径前缀/home/cai,在已于压缩有序表中存储过该路径前缀的情况下,可不再重复存储,以减少冗余存储。
参照图27,继续访问压缩有序表中第六行的文件music,其为非空目录,可直接入栈,将其父节点文件/的未访问的子文件数量更新为0,并可确定该文件music的绝对路径为/music。参照图28,继续访问压缩有序表中第七行的文件abc.mp4,可确定其绝对路径为/music/abc.mp4,参照图29,该文件为压缩有序表中的最后一个文件,该文件被访问后,可弹出栈中所有子文件已经被访问完了文件,由于文件abc.mp4的绝对路径和music的绝对路径具有相同的路径前缀/music,在已于压缩有序表中存储过该路径前缀的情况下,可不于重复存储,以减少冗余存储。
在一种实施方式中,第一数据表中可以包括第一目录结构中各文件的标识信息,第二数据表中可以包括第二目录结构中各文件的标识信息。对应的,如图30所示,对第一数据表和第二数据表进行差异计算,可以包括:S3001,对比第一数据表中各文件的标识信息和第二数据表中各文件的标识信息;S3002,基于标识信息的对比结果确定第一数据表和第二数据表中是否存在差异文件。
标识信息可以用于唯一标识一个文件,通过标识信息的对比,可以准确地感知两个数据表对应的文件的变化,确定差异文件。
在一种实施方式中,在上述步骤S3001和S3002中,对比第一数据表中各文件的标识信息和第二数据表中各文件的标识信息,基于标识信息的对比结果确定第一数据表和第二数据表中是否存在差异文件,可以包括:依次读取第一数据表中各个文件的标识信息作为第一标识信息,并依次读取第二数据表中各个文件的标识信息作为第二标识信息;在依次读取的过程中,将第一数据表中第N行的第一标识信息与第二数据表中对应的至少一行的第二标识信息依次进行对比,确定第N行的第一标识信息和对应的每行第二标识信息是否相等;在第N行的第一标识信息和对应的一行第二标识信息不相等的情况下,确定第一数据表和第二数据表中存在一个差异文件。其中,N为小于或等于第一数据表中总行数的正整数,与第一数据表中第N行的第一标识信息对应的第二标识信息可以包括第二数据表中第N行前后一定范围内的第二标识信息,例如第N-1行至第N+1行的第二标识信息。
基于上述方式,通过对两个数据表中的标识信息进行逐行读取和逐行对比,可以准确对两个数据表的文件进行对比,得到对比结果。
参照前面的示例,数据表中各文件的顺序可以和目录结构的文件顺序相同,对数据表进行遍历,依次读取相应的文件,等同于以DFS(深度优先搜索)的方式对文件系统的目录结构进行遍历,从而可以通过对数据表各文件的遍历实现对文件系统的目录结构的遍历,以完成每个文件的标识信息的对比。
在一种实施方式中,一个文件的标识信息可以包括该文件的绝对路径,绝对路径为从根目录到该文件的路径,从而第一标识信息可以包括第一绝对路径,即第一数据表中的文件的绝对路径,第二标识信息可以包括第一绝对路径,即第二数据表中的文件的绝对路径。
对应的,在依次读取的过程中,将第一数据表中第N行的第一标识信息与第二数据表中对应的至少一行的第二标识信息依次进行对比,确定第N行的第一标识信息和对应的每行第二标识信息是否相等,可以包括:将第N行的第一绝对路径和第二数据表中第N行第二绝对路径进行对比,确定第N行的第一绝对路径和第N行的第二绝对路径是否相等;在第N行的第一绝对路径和第N行的第二绝对路径相等的情况下,读取第一数据表中第N+1行的第一绝对路径和第二数据表中第N+1行的第二绝对路径,将第N+1行的第一绝对路径和第N+1行的第二绝对路径进行对比,确定第N+1行的第一绝对路径和第N+1行的第二绝对路径是否相等,确定方式与第N行类似;在第N行的第一绝对路径和第N行的第二绝对路径不相等的情况下,读取第一数据表中第N+1行的第一绝对路径,将第N+1行的第一绝对路径和第N行的第二绝对路径进行对比,或,读取第二数据表中第N+1行的第二绝对路径,将第N行的第一绝对路径和第N+1行的第二绝对路径进行对比,例如在第N行的第一绝对路径小于第N行的第二绝对路径时,可以继续读取第一数据表中第N+1行的第一绝对路径,确定第N+1行的第一绝对路径与第N行的第二绝对路径的大小关系,在第N行的第一绝对路径大于第N行的第二绝对路径时,可以继续读取第二数据表中第N+1行的第一绝对路径,确定第N行的第一绝对路径与第N+1行的第二绝对路径的大小关系。
对应的,在第N行的第一标识信息和对应的一行第二标识信息不相等的情况下,确定第一数据表和第二数据表中存在一个差异文件,可以包括:在第N行的第一绝对路径和对应的一行(例如第N行或第N+1行)第二绝对路径不相等的情况下,确定第N行的第一绝对路径对应的文件为被删除的文件或对应的一行第二绝对路径对应的文件为新增的文件。例如,在第一绝对路径小于第二绝对路径时,可确定第一绝对路径对应的文件为被删除的文件,在第一绝对路径大于第二绝对路径时,可确定第二绝对路径对应的文件为新增的文件。
绝对路径可以唯一标识一个文件的位置,基于绝对路径的对比可以确定出发生变化的文件以及发生变化的文件的具体变化类型,即是否被删除或新增。
在一种实施方式中,在绝对路径的基础上,一个文件的标识信息还可以包括哈希值,从而第一标识信息还可以包括第一哈希值,第二标识信息还可以标识第二哈希值。
对应的,在依次读取的过程中,第一数据表中第N行的第一标识信息与第二数据表中对应的至少一行第二标识信息依次进行对比,确定N行的第一标识信息和对应的每行第二标识信息是否相等,可以包括:在第N行的第一绝对路径和对应的一行(例如第N行或第N+1行)第二绝对路径相等的情况下,确定第N行的第一哈希值和该第二绝对路径同行(例如第N行或第N+1行)的第二哈希值是否相等。
对应的,在第N行的第一标识信息和对应的第二标识信息不相等的情况下,确定第一数据表和第二数据表中存在一个差异文件,还包括:在第N行的第一绝对路径和对应的一行第二绝对路径相等、且第N行第一哈希值和该第二绝对路径同行的第二哈希值不相等的情况下,确定该第二哈希值对应的文件为被修改过的文件。
哈希值可以唯一标识一个文件的文件内容,基于哈希值的对比可以确定出发生变化的文件以及发生变化的文件的具体变化类型,即是否被修改过。
图31至图39示出对比第一数据表和第二数据表中的绝对路径和哈希值的一个具体示例图,其中,图31示出了第一数据表中和第二数据表中的具体内容,相对于第一数据表,第二数据表新增了文件new,删除了文件admin,并修改了文件abc.mp4,经过图32至图38的逐行对比,可识别出上述三种变化文件,并将变化文件的信息写入差异结果表中,写入差异结果表的信息可以包括文件名、目录属性和对文件变化的描述。
参照图32,分别读取第一数据表和第二数据表中第一行的绝对路径和哈希值,经对比可知,两个绝对路径相等,均为/,表示第二数据表中第一行的文件/不是新增的文件,第一数据表中的/不是被删除的文件,两个哈希值不相等,表示文件/被修改过(Modified),将该文件/的信息写入差异结果表中。
参照图33,分别读取第一数据表和第二数据表中第二行的绝对路径和哈希值,经对比,两个绝对路径相等,均为/home,表示第二数据表中第二行的文件home不是新增的文件,第一数据表中第二行的文件home不是被删除的文件,两个哈希值不相等,表示文件home被修改过,将该文件home的信息写入差异结果表中。
参照图34,分别读取第一数据表和第二数据表中第三行的绝对路径和哈希值,经对比,第一数据表中第三行的绝对路径为/home/admin,第二数据表中第三行的绝对路径为/home/cai,前者小于后者,表示第一数据表中第三行的文件admin为被删除(Deleted)的文件,将文件admin的信息写入差异结果表。
参照图35,读取第一数据表中第四行的绝对路径和哈希值,与第二数据表中第三行的绝对路径和哈希值进行对比,经对比,两个绝对路径相等,表示第一数据表中第四行的文件cai不是被删除的文件,第二数据表中第三行的文件cai不是新增的文件,两个哈希值相等,表示第二数据表中第三行的文件cai是未被修改过的文件,无需写入差异结果表。
参照图36,继续读取第一数据表和第二数据表中下一行的绝对路径和哈希值,即第一数据表中第五行的绝对路径和哈希值,以及第二数据表中第四行的绝对路径和哈希值,由于第一数据表中第五行的文件和第二数据表中第四行的文件均为文件cai的子文件,而文件cai已在上一步(参照图34)被验证其为未被修改过的文件,则可确定文件cai的子文件也未被修改过,故可以跳过这两行的对比,直接进入下一行。
参照图37,继续读取第一数据表和第二数据表中下一行的绝对路径和哈希值,即第一数据表中第六行的绝对路径和哈希值,以及第二数据表中第五行的绝对路径和哈希值,经对比,第一数据表中第六行的绝对路径为/music,第二数据表中第五行的绝对路径为/home/new,前者大于后者,表示后者的文件new为新增的文件(New File),将该文件new的信息写入差异结果表中。
参照图38,继续读取第二数据表中下一行(即第六行)的绝对路径和哈希值,与第一数据表中第六行的绝对路径和哈希值进行对比,经对比,两个绝对路径相等,均为/music,表示两个文件不是被删除的文件或新增的文件,两个哈希值不同,表示第二数据表中第六行的文件music是被修改过的文件,将该文件music的信息写入差异结果表中。
参照图39,继续读取第一数据表和第二数据表中下一行(即第七行)的绝对路径和哈希值,经对比,两个绝对路径相等,均为/music/abc.mp4,表示两个文件不是被删除的文件或新增的文件,两个哈希值不同,表示第二数据表中第七行的文件abc.mp4是被修改过的文件,将该文件abc.mp4的信息写入差异结果表中。至此,可完成第一数据表和第二数据表中全部文件的对比,找出所有的变化文件。
本申请实施例提供的主机文件检测方法还可以包括:根据目标主机的文件系统的文件变化确定目标主机的安全等级,例如在确定出目标主机的文件系统发生变化的情况下,即找出目标主机的文件系统中的变化文件的情况下,可确定目标主机的安全等级较低,在确定出目标主机的文件系统未发生变化的情况下,即未找到目标主机的文件系统中的变化文件的情况下,可确定目标主机的安全等级较高。
基于同一技术构思,本申请实施例还提供一种主机文件检测装置,可应用于主机安全检测系统,如图40所示,该装置可以包括:信息获取模块4001、差异计算模块4002和变化确定模块4003。
信息获取模块4001,用于基于主机安全检测系统与目标主机之间的快照分享功能,获取目标主机中的第一快照和第二快照;第一快照是第一时间的目标主机中文件系统的数据备份,第二快照是第二时间的文件系统的数据备份,第一时间早于第二时间。
差异计算模块4002,用于对第一快照和第二快照进行差异计算。
变化确定模块4003,用于基于差异计算的结果确定目标主机的文件系统中的文件是否发生变化。
在一种实施方式中,第一快照和第二快照均为增量快照。
在一种实施方式中,差异计算模块4002可以用于:基于第一快照中的第一目录结构构建文件系统的第一文件系统树,基于第二快照中的第二目录结构构建文件系统的第二文件系统树;对第一文件系统树和第二文件系统树进行差异计算。第一文件系统树与第一目录结构同构,第二文件系统树与第二目录结构同构。
在一种实施方式中,第一文件系统树以第一数据表的形式存储,第二文件系统树以第二数据表的形式存储;第一数据表和第二数据表均为结构化存储的数据表。对应的,在对第一文件系统树和第二文件系统树进行差异计算时,差异计算模块4002,可以用于:对第一数据表和第二数据表进行差异计算。
在一种实施方式中,第一文件系统树和第二文件系统树均为文件系统梅克尔树。
在一种实施方式中,在基于第一快照中的第一目录结构构建文件系统的第一文件系统树时,差异计算模块4002可以用于:遍历第一目录结构中的各个文件,将每个文件的信息以行记录的形式插入第一数据表。在基于第二快照中的第二目录结构构建文件系统的第二文件系统树时,差异计算模块4002可以用于:遍历第二目录结构中的各个文件,将每个文件的信息以行记录的形式插入第二数据表。
在一种实施方式中,在遍历第一目录结构中的各个文件时,差异计算模块4002可以用于:按第一顺序遍历第一目录结构中的各个文件,在遍历到的文件为普通文件或空目录时,确定该普通文件或空目录的哈希值;按第二顺序遍历第一目录结构中的各个文件,在遍历到的文件为非空目录时,确定该非空目录的哈希值。在遍历第二目录结构中的各个文件时,差异计算模块4002可以用于:按第一顺序遍历第二目录结构中的各个文件,在遍历到的文件为普通文件或空目录时,确定该普通文件或空目录的哈希值;按第二顺序遍历第二目录结构中的各个文件,在遍历到的文件为非空目录时,确定该非空目录的哈希值。在第一数据表和第二数据表中,普通文件的行记录包括普通文件的哈希值,空目录的行记录包括空目录的哈希值,非空目录的行记录包括非空目录的哈希值,第一顺序为从根目录到最后一层子文件的顺序,第二顺序为第一顺序的反向顺序。
在一种实施方式中,在遍历第一目录结构中的各个文件时,差异计算模块4002可以用于:按第一顺序遍历第一目录结构中的各个文件,确定遍历到的每个文件的绝对路径。在遍历第二目录结构中的各个文件时,差异计算模块4002可以用于:按第一顺序遍历第二目录结构中的各个文件,确定遍历到的每个文件的绝对路径。第一数据表和第二数据表均可以是压缩有序表,在压缩有序表中,每个文件的行记录可以包括该文件的绝对路径,同一目录文件下各子文件的行记录可以包括相同路径前缀的一条记录,第一顺序为从根目录到最后一层子文件的顺序。
在一种实施方式中,在遍历第一目录结构中的各个文件,差异计算模块4002可以用于:利用栈遍历第一目录结构中的各个文件,按遍历顺序,将各个文件的信息依次以行记录的形式插入第一数据表。在遍历第二目录结构中的各个文件时,差异计算模块4002可以用于:利用栈遍历第二目录结构中的各个文件,按遍历顺序,将各个文件的信息依次以行记录的形式插入第二数据表。第一数据表和第二数据表均可以是压缩有序表。
在一种实施方式中,第一数据表中包括第一目录结构中各文件的标识信息,第二数据表中包括第二目录结构中各文件的标识信息。对应的,在对第一数据表和第二数据表进行差异计算,差异计算模块4002可以用于:对比第一数据表中各文件的标识信息和第二数据表中各文件的标识信息;基于标识信息的对比结果确定第一数据表和第二数据表中是否存在差异文件。
在一种实施方式中,差异计算模块4002可以用于:依次读取第一数据表中各个文件的标识信息作为第一标识信息,并依次读取第二数据表中各个文件的标识信息作为第二标识信息;在依次读取的过程中,将第一数据表中第N行的第一标识信息与第二数据表中对应的至少一行第二标识信息依次进行对比,确定第N行的第一标识信息和对应的每行第二标识信息是否相等,N为小于或等于第一数据表中总行数的正整数;在第N行的第一标识信息和对应的一行第二标识信息不相等的情况下,确定第一数据表和第二数据表中存在一个差异文件。
在一种实施方式中,第一标识信息包括第一绝对路径,第二标识信息包括第二绝对路径。对应的,差异计算模块4002可以用于:将第N行的第一绝对路径和第二数据表中第N行第二绝对路径进行对比,确定第N行的第一绝对路径和第N行的第二绝对路径是否相等;在第N行的第一绝对路径和第N行的第二绝对路径相等的情况下,读取第一数据表中第N+1行的第一绝对路径和第二数据表中第N+1行的第二绝对路径,将第N+1行的第一绝对路径和第N+1行的第二绝对路径进行对比;在第N行的第一绝对路径和第N行的第二绝对路径不相等的情况下,读取第一数据表中第N+1行的第一绝对路径,将第N+1行的第一绝对路径和第N行的第二绝对路径进行对比,或,读取第二数据表中第N+1行的第二绝对路径,将第N行的第一绝对路径和第N+1行的第二绝对路径进行对比;在第N行的第一绝对路径和对应的一行第二绝对路径不相等的情况下,确定第N行的第一绝对路径对应的文件为被删除的文件或对应的一行第二绝对路径对应的文件为新增的文件。
在一种实施方式中,第一标识信息还包括第一哈希值,第二标识信息还包括第二哈希值。对应的,差异计算模块4002可以用于:在第N行的第一绝对路径和对应的一行第二绝对路径相等的情况下,确定第N行的第一哈希值和该第二绝对路径同行的第二哈希值是否相等;在第N行的第一绝对路径和对应的一行第二绝对路径相等、且第N行第一哈希值和该第二绝对路径同行的第二哈希值不相等的情况下,确定该第二哈希值对应的文件为被修改过的文件。
本申请实施例提供的主机文件检测装置中的各模块的功能可以参见上述方法中的对应描述,并具备相应的有益效果,在此不再赘述。
基于同一技术构思,本申请实施例还提供了一种电子设备,如图41所示,该电子设备包括:存储器4101和处理器4102,存储器4101内存储有可在处理器4102上运行的计算机程序。处理器4102执行该计算机程序时实现上述实施例中的任意一种方法。存储器4101和处理器4102的数量可以为一个或多个。
该电子设备还包括:
通信接口4103,用于与外界设备进行通信,进行数据交互传输。
如果存储器4101、处理器4102和通信接口4103独立实现,则存储器4101、处理器4102和通信接口4103可以通过总线相互连接并完成相互间的通信。该总线可以是工业标准体系结构(Industry Standard Architecture,ISA)总线、外部设备互连(PeripheralComponent Interconnect,PCI)总线或扩展工业标准体系结构(Extended IndustryStandard Architecture,EISA)总线等。该总线可以分为地址总线、数据总线、控制总线等。为便于表示,图41中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
可选的,在具体实现上,如果存储器4101、处理器4102及通信接口4103集成在一块芯片上,则存储器4101、处理器4102及通信接口4103可以通过内部接口完成相互间的通信。
本申请实施例提供了一种计算机可读存储介质,其存储有计算机程序,该程序被处理器执行时实现本申请实施例中提供的任意一种方法。
本申请实施例还提供了一种芯片,该芯片包括处理器,用于从存储器中调用并运行存储器中存储的指令,使得安装有芯片的通信设备执行本申请实施例提供的任意一种方法。
本申请实施例还提供了一种芯片,包括:输入接口、输出接口、处理器和存储器,输入接口、输出接口、处理器以及存储器之间通过内部连接通路相连,处理器用于执行存储器中的代码,当代码被执行时,处理器用于执行申请实施例提供的任意一种方法。
应理解的是,上述处理器可以是中央处理器(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(FieldProgrammable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者是任何常规的处理器等。值得说明的是,处理器可以是支持进阶精简指令集机器(Advanced RISC Machines,ARM)架构的处理器。
进一步地,可选的,上述存储器可以包括只读存储器和随机访问存储器。该存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以包括只读存储器(Read-Only Memory,ROM)、可编程只读存储器(Programmable ROM,PROM)、可擦除可编程只读存储器(Erasable PROM,EPROM)、电可擦除可编程只读存储器(Electrically EPROM,EEPROM)或闪存。易失性存储器可以包括随机访问存储器(Random Access Memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM均可用。例如,静态随机访问存储器(Static RAM,SRAM)、动态随机访问存储器(Dynamic Random Access Memory,DRAM)、同步动态随机访问存储器(Synchronous DRAM,SDRAM)、双倍数据速率同步动态随机访问存储器(Double Data RateSDRAM,DDR SDRAM)、增强型同步动态随机访问存储器(Enhanced SDRAM,ESDRAM)、同步链接动态随机访问存储器(Sync link DRAM,SLDRAM)和直接内存总线随机访问存储器(DirectRambus RAM,DR RAM)。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生依照本申请的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包括于本申请的至少一个实施例或示例中。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或隐含地包括至少一个该特征。在本申请的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
流程图中描述的或在此以其他方式描述的任何过程或方法可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分。并且本申请的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能。
在流程图中描述的或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。
应理解的是,本申请的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。上述实施例方法的全部或部分步骤是可以通过程序来指令相关的硬件完成,该程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,在本申请各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。上述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读存储介质中。该存储介质可以是只读存储器,磁盘或光盘等。
以上所述,仅为本申请的示例性实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请记载的技术范围内,可轻易想到其各种变化或替换,这些都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
Claims (14)
1.一种主机文件检测方法,其特征在于,应用于主机安全检测系统,包括:
基于所述主机安全检测系统与目标主机之间的快照分享功能,获取目标主机中的第一快照和第二快照;所述第一快照是第一时间的所述目标主机中文件系统的数据备份,所述第二快照是第二时间的所述文件系统的数据备份,所述第一时间早于所述第二时间;
对所述第一快照和所述第二快照进行差异计算;
基于差异计算的结果确定所述文件系统中的文件是否发生变化。
2.根据权利要求1所述的主机文件检测方法,其特征在于,所述第一快照和所述第二快照均为增量快照。
3.根据权利要求1所述的主机文件检测方法,其特征在于,所述对所述第一快照和所述第二快照进行差异计算,包括:
基于所述第一快照中的第一目录结构构建所述文件系统的第一文件系统树,基于所述第二快照中的第二目录结构构建所述文件系统的第二文件系统树;所述第一文件系统树与所述第一目录结构同构,所述第二文件系统树与所述第二目录结构同构;
对所述第一文件系统树和所述第二文件系统树进行差异计算。
4.根据权利要求3所述的主机文件检测方法,其特征在于,所述第一文件系统树以第一数据表的形式存储,所述第二文件系统树以第二数据表的形式存储;所述第一数据表和所述第二数据表均为结构化存储的数据表;
所述对所述第一文件系统树和所述第二文件系统树进行差异计算,包括:
对所述第一数据表和所述第二数据表进行差异计算。
5.根据权利要求3或4所述的主机文件检测方法,其特征在于,所述第一文件系统树和所述第二文件系统树均为文件系统梅克尔树。
6.根据权利要求4所述的主机文件检测方法,其特征在于,所述第一数据表中包括所述第一目录结构中各文件的标识信息,所述第二数据表中包括所述第二目录结构中各文件的标识信息;
所述对所述第一数据表和所述第二数据表进行差异计算,包括:
对比所述第一数据表中各文件的标识信息和所述第二数据表中各文件的标识信息;
基于标识信息的对比结果确定所述第一数据表和所述第二数据表中是否存在差异文件。
7.根据权利要求6所述的主机文件检测方法,其特征在于,所述对比所述第一数据表中各文件的标识信息和所述第二数据表中各文件的标识信息,基于标识信息的对比结果确定所述第一数据表和所述第二数据表中是否存在差异文件,包括:
依次读取所述第一数据表中各个文件的标识信息作为第一标识信息,并依次读取所述第二数据表中各个文件的标识信息作为第二标识信息;
在依次读取的过程中,将所述第一数据表中第N行的第一标识信息与所述第二数据表中对应的至少一行第二标识信息依次进行对比,确定所述第N行的第一标识信息和对应的每行第二标识信息是否相等;N为小于或等于第一数据表中总行数的正整数;
在所述第N行的第一标识信息和对应的一行第二标识信息不相等的情况下,确定所述第一数据表和所述第二数据表中存在一个差异文件。
8.根据权利要求7所述的主机文件检测方法,其特征在于,所述第一标识信息包括第一绝对路径,所述第二标识信息包括第二绝对路径;
所述在依次读取的过程中,将所述第一数据表中第N行的第一标识信息与所述第二数据表中对应的至少一行第二标识信息依次进行对比,确定所述N行的第一标识信息和对应的每行第二标识信息是否相等,包括:
将所述第N行的第一绝对路径和所述第二数据表中第N行第二绝对路径进行对比,确定所述第N行的第一绝对路径和所述第N行的第二绝对路径是否相等;
在所述第N行的第一绝对路径和所述第N行的第二绝对路径相等的情况下,读取所述第一数据表中第N+1行的第一绝对路径和所述第二数据表中第N+1行的第二绝对路径,将所述第N+1行的第一绝对路径和所述第N+1行的第二绝对路径进行对比;
在所述第N行的第一绝对路径和所述第N行的第二绝对路径不相等的情况下,读取第一数据表中第N+1行的第一绝对路径,将所述第N+1行的第一绝对路径和所述第N行的第二绝对路径进行对比,或,读取第二数据表中第N+1行的第二绝对路径,将所述第N行的第一绝对路径和所述第N+1行的第二绝对路径进行对比;
所述在所述第N行的第一标识信息和对应的一行第二标识信息不相等的情况下,确定所述第一数据表和所述第二数据表中存在一个差异文件,包括:
在所述第N行的第一绝对路径和对应的一行第二绝对路径不相等的情况下,确定所述第N行的第一绝对路径对应的文件为被删除的文件或所述对应的一行第二绝对路径对应的文件为新增的文件。
9.根据权利要求8所述的主机文件检测方法,其特征在于,所述第一标识信息还包括第一哈希值,所述第二标识信息还包括第二哈希值;
所述在依次读取的过程中,所述第一数据表中第N行的第一标识信息与所述第二数据表中对应的至少一行第二标识信息依次进行对比,确定所述N行的第一标识信息和对应的每行第二标识信息是否相等,还包括:
在所述第N行的第一绝对路径和对应的一行第二绝对路径相等的情况下,确定所述第N行的第一哈希值和该第二绝对路径同行的第二哈希值是否相等;
所述在所述第N行的第一标识信息和对应的第二标识信息不相等的情况下,确定所述第一数据表和所述第二数据表中存在一个差异文件,还包括:
在所述第N行的第一绝对路径和对应的一行第二绝对路径相等、且所述第N行第一哈希值和该第二绝对路径同行的第二哈希值不相等的情况下,确定该第二哈希值对应的文件为被修改过的文件。
10.根据权利要求4所述的主机文件检测方法,其特征在于,所述基于所述第一快照中的第一目录结构构建所述文件系统的第一文件系统树,包括:
遍历所述第一目录结构中的各个文件,将每个文件的信息以行记录的形式插入所述第一数据表;
所述基于所述第二快照中的第二目录结构构建所述文件系统的第二文件系统树,包括:
遍历所述第二目录结构中的各个文件,将每个文件的信息以行记录的形式插入所述第二数据表。
11.根据权利要求10所述的主机文件检测方法,其特征在于,所述遍历所述第一目录结构中的各个文件,包括:
按第一顺序遍历所述第一目录结构中的各个文件,在遍历到的文件为普通文件或空目录时,确定该普通文件或空目录的哈希值;
按第二顺序遍历所述第一目录结构中的各个文件,在遍历到的文件为非空目录时,确定该非空目录的哈希值;
所述遍历所述第二目录结构中的各个文件,包括:
按所述第一顺序遍历所述第二目录结构中的各个文件,在遍历到的文件为普通文件或空目录时,确定该普通文件或空目录的哈希值;
按所述第二顺序遍历所述第二目录结构中的各个文件,在遍历到的文件为非空目录时,确定该非空目录的哈希值;
在所述第一数据表和所述第二数据表中,所述普通文件的行记录包括所述普通文件的哈希值,所述空目录的行记录包括所述空目录的哈希值,所述非空目录的行记录包括所述非空目录的哈希值;
所述第一顺序为从根目录到最后一层子文件的顺序,所述第二顺序为所述第一顺序的反向顺序。
12.根据权利要求10所述的主机文件检测方法,其特征在于,所述遍历所述第一目录结构中的各个文件,包括:
按第一顺序遍历所述第一目录结构中的各个文件,确定遍历到的每个文件的绝对路径;
所述遍历所述第二目录结构中的各个文件,包括:
按第一顺序遍历所述第二目录结构中的各个文件,确定遍历到的每个文件的绝对路径;
所述第一数据表和所述第二数据表均为压缩有序表,在所述压缩有序表中,每个文件的行记录包括该文件的绝对路径,同一目录文件下各子文件的行记录中包括相同的多个路径前缀中一个路径前缀的记录;
所述第一顺序为从根目录到最后一层子文件的顺序。
13.一种电子设备,其特征在于,包括存储器、处理器及存储在存储器上的计算机程序,所述处理器在执行所述计算机程序时实现权利要求1-12中任一项所述的方法。
14.一种计算机可读存储介质,其特征在于,存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-12中任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310272989.0A CN116305126A (zh) | 2023-03-16 | 2023-03-16 | 主机文件检测方法、电子设备及存储介质 |
PCT/CN2024/080386 WO2024188134A1 (zh) | 2023-03-16 | 2024-03-06 | 主机文件检测方法、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310272989.0A CN116305126A (zh) | 2023-03-16 | 2023-03-16 | 主机文件检测方法、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116305126A true CN116305126A (zh) | 2023-06-23 |
Family
ID=86820348
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310272989.0A Pending CN116305126A (zh) | 2023-03-16 | 2023-03-16 | 主机文件检测方法、电子设备及存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN116305126A (zh) |
WO (1) | WO2024188134A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024188134A1 (zh) * | 2023-03-16 | 2024-09-19 | 杭州阿里云飞天信息技术有限公司 | 主机文件检测方法、电子设备及存储介质 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102693302B (zh) * | 2012-05-21 | 2015-04-22 | 浙江省公众信息产业有限公司 | 快速文件比对方法、系统及客户端 |
US11176099B2 (en) * | 2018-12-21 | 2021-11-16 | Vmware, Inc. | Lockless synchronization of LSM tree metadata in a distributed system |
US11847028B2 (en) * | 2020-07-03 | 2023-12-19 | Vmware, Inc. | Efficient export of snapshot changes in a storage system |
CN112380057A (zh) * | 2020-11-12 | 2021-02-19 | 平安科技(深圳)有限公司 | 数据恢复方法、装置、设备及存储介质 |
CN114546980B (zh) * | 2022-04-25 | 2022-07-08 | 成都云祺科技有限公司 | 一种nas文件系统的备份方法、系统及存储介质 |
CN116305126A (zh) * | 2023-03-16 | 2023-06-23 | 阿里云计算有限公司 | 主机文件检测方法、电子设备及存储介质 |
-
2023
- 2023-03-16 CN CN202310272989.0A patent/CN116305126A/zh active Pending
-
2024
- 2024-03-06 WO PCT/CN2024/080386 patent/WO2024188134A1/zh unknown
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024188134A1 (zh) * | 2023-03-16 | 2024-09-19 | 杭州阿里云飞天信息技术有限公司 | 主机文件检测方法、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2024188134A1 (zh) | 2024-09-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7478113B1 (en) | Boundaries | |
US9367569B1 (en) | Recovery of directory information | |
US20190108103A9 (en) | Computing device replication using file system change detection methods and systems | |
US11221921B2 (en) | Method, electronic device and computer readable storage medium for data backup and recovery | |
US20150302111A1 (en) | Method and Apparatus for Constructing File System in Key-Value Storage System, and Electronic Device | |
US11734364B2 (en) | Method and system for document similarity analysis | |
CN109086388B (zh) | 区块链数据存储方法、装置、设备及介质 | |
US10678784B2 (en) | Dynamic column synopsis for analytical databases | |
JP2003524243A (ja) | 共通性ファクタリングシステムに用いられるハッシュファイルシステムおよび方法 | |
WO2024188134A1 (zh) | 主机文件检测方法、电子设备及存储介质 | |
US20140244582A1 (en) | Apparatus and Methods for Selective Location and Duplication of Relevant Data | |
Zhai et al. | Hadoop perfect file: A fast and memory-efficient metadata access archive file to face small files problem in hdfs | |
US20170091209A1 (en) | System that maintains objects created and modified within designated directories on a per-client basis in a network filesystem | |
CN114625696B (zh) | 文件恢复方法、装置、电子设备及存储介质 | |
CN114466083A (zh) | 支持协议互通的数据存储系统 | |
US8612717B2 (en) | Storage system | |
CN111309677A (zh) | 一种分布式文件系统的文件管理方法及装置 | |
CN114153652A (zh) | 目录备份完整性检测方法及装置 | |
CN116401220A (zh) | 文件系统的数据恢复方法、装置、设备及介质 | |
Kumar et al. | Cloud storage performance improvement using deduplication and compression techniques | |
CN114416676A (zh) | 数据处理方法、装置、设备和存储介质 | |
CN111104787B (zh) | 用于比较文件的方法、设备和计算机程序产品 | |
CN111625499A (zh) | 一种快照回滚工具、方法及设备 | |
CN115277668A (zh) | 一种基于以太坊和星际文件系统的云文件动态完整性保护和验证方法 | |
US8019956B1 (en) | System and method for concurrently storing and accessing data in a tree-like data structure |
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 |