专利名称:一种office文档检测方法、装置、设备及介质
专利类型:发明专利
专利申请号:CN202111060539.2
专利申请(专利权)人:绿盟科技集团股份有限公司,北京神州绿盟科技有限公司
权利人地址:北京市海淀区北洼路4号益泰大厦三层
专利发明(设计)人:田永,范敦球,吴铁军,赵光远,白睿
专利摘要:本发明公开了一种office文档检测方法、装置、设备及介质,所述方法包括:提取office文档的宏;通过解析所述office文档的宏,确定所述office文档的模板特征参数;将确定出的所述office文档的模板特征参数与预先保存的黑白名单库中的模板特征参数进行匹配,检测所述office文档是否为恶意文档。基于同一个office文档模板,用户即使根据需要删减或增加相应内容,office文档的宏是不变的,因此,根据office文档的宏确定office文档的模板特征参数,然后基于模板特征参数检测office文档是否为恶意文档,解决了现有技术检测office文档的局限性较大的问题。
主权利要求:
1.一种office文档检测方法,其特征在于,所述方法包括:
提取office文档的宏;
通过解析所述office文档的宏,确定所述office文档的模板特征参数;
将确定出的所述office文档的模板特征参数与预先保存的黑白名单库中的模板特征参数进行匹配,检测所述office文档是否为恶意文档;
所述通过解析所述office文档的宏,确定所述office文档的模板特征参数包括:通过解析所述office文档的宏,确定所述office文档的调用函数列表和关键字列表;
根据所述调用函数列表和关键字列表确定函数调用矩阵;所述模板特征参数包括调用函数列表、关键字列表和函数调用矩阵;
其中,根据调用函数列表和关键字列表确定函数调用矩阵,是将各个函数之间的调用次数以及各个函数中包含的关键字的次数作为函数调用矩阵中的元素,得到函数调用矩阵。
2.如权利要求1所述的方法,其特征在于,所述将确定出的所述office文档的模板特征参数与预先保存的黑白名单库中的模板特征参数进行匹配,检测所述office文档是否为恶意文档包括:将确定出的所述office文档的调用函数列表、关键字列表和函数调用矩阵与预先保存的黑白名单库中的调用函数列表、关键字列表和函数调用矩阵进行匹配,检测所述office文档是否为恶意文档。
3.如权利要求1所述的方法,其特征在于,所述根据所述调用函数列表和关键字列表确定函数调用矩阵包括:根据所述调用函数列表,确定函数调用关系子矩阵;其中,根据调用函数列表,确定各个函数之间的调用次数,将各个函数之间的调用次数作为函数调用关系子矩阵中的元素,得到函数调用关系子矩阵;
根据所述调用函数列表、关键字列表和预设的关键字库,确定函数命中关键字子矩阵;
根据调用函数列表、关键字列表和预设的关键字库可以确定出各个函数中命中关键字库中的关键字的次数,将各个函数中命中关键字库中的关键字的次数作为函数命中关键字子矩阵中的元素,得到函数命中关键字子矩阵;
所述函数调用矩阵包括所述函数调用关系子矩阵和所述函数命中关键字子矩阵。
4.如权利要求2所述的方法,其特征在于,所述将确定出的所述office文档的调用函数列表、关键字列表和函数调用矩阵与预先保存的黑白名单库中的调用函数列表、关键字列表和函数调用矩阵进行匹配包括:判断预先保存的黑白名单库中是否存在与所述office文档的调用函数列表、关键字列表相同的列表,与所述office文档的函数调用矩阵匹配的矩阵,如果是,确定匹配成功,否则,确定未匹配成功。
5.如权利要求4所述的方法,其特征在于,判断预先保存的黑白名单库中是否存在与所述office文档的函数调用矩阵匹配的矩阵包括:选取预先保存的黑白名单库中与所述函数调用矩阵规模相同的候选矩阵;
针对每个候选矩阵,确定该候选矩阵与所述函数调用矩阵每个对应位置的元素的差值;判断确定出的每个差值是否均小于预设的阈值;如果是,确定该候选矩阵与所述函数调用矩阵匹配,如果否,确定该候选矩阵与所述函数调用矩阵不匹配。
6.一种office文档检测装置,其特征在于,所述装置包括:
提取模块,用于提取office文档的宏;
确定模块,用于通过解析所述office文档的宏,确定所述office文档的模板特征参数;
检测模块,用于将确定出的所述office文档的模板特征参数与预先保存的黑白名单库中的模板特征参数进行匹配,检测所述office文档是否为恶意文档;
所述确定模块,具体用于通过解析所述office文档的宏,确定所述office文档的调用函数列表和关键字列表;根据所述调用函数列表和关键字列表确定函数调用矩阵;所述模板特征参数包括调用函数列表、关键字列表和函数调用矩阵;
其中,根据调用函数列表和关键字列表确定函数调用矩阵,是将各个函数之间的调用次数以及各个函数中包含的关键字的次数作为函数调用矩阵中的元素,得到函数调用矩阵。
7.如权利要求6所述的装置,其特征在于,所述检测模块,具体用于将确定出的所述office文档的调用函数列表、关键字列表和函数调用矩阵与预先保存的黑白名单库中的调用函数列表、关键字列表和函数调用矩阵进行匹配,检测所述office文档是否为恶意文档。
8.如权利要求6所述的装置,其特征在于,所述确定模块,具体用于根据所述调用函数列表,确定函数调用关系子矩阵;其中,根据调用函数列表,确定各个函数之间的调用次数,将各个函数之间的调用次数作为函数调用关系子矩阵中的元素,得到函数调用关系子矩阵;根据所述调用函数列表、关键字列表和预设的关键字库,确定函数命中关键字子矩阵;
根据调用函数列表、关键字列表和预设的关键字库可以确定出各个函数中命中关键字库中的关键字的次数,将各个函数中命中关键字库中的关键字的次数作为函数命中关键字子矩阵中的元素,得到函数命中关键字子矩阵;所述函数调用矩阵包括所述函数调用关系子矩阵和所述函数命中关键字子矩阵。
9.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现权利要求1‑5任一项所述的方法步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1‑5任一项所述的方法步骤。 说明书 : 一种office文档检测方法、装置、设备及介质技术领域[0001] 本发明涉及恶意文件检测技术领域,尤其涉及一种office文档检测方法、装置、设备及介质。背景技术[0002] 某些公司或办事处会有内部的office文档模板,office文档模板中有的为恶意模板,基于恶意模板生成的office文档为恶意office文档,office文档检测也就是检测office文档是否为恶意的。现有技术中,利用消息摘要算法MD5计算office文档模板的签名信息,然后基于签名信息检测office文档模板是否为恶意模板。然后将恶意模板的签名信息加入黑名单,将正常模板的签名信息加入白名单,在检测office文档时,利用MD5算法计算office文档的签名信息,再与黑白名单中的签名信息匹配,来检测office文档是否为恶意文档。但是基于同一个office文档模板,用户可能根据需要会删减或增加相应内容,这样有可能产生成百上千个不同的office文档,利用消息摘要算法MD5计算出的这些百上千个不同的office文档的签名信息各不相同,因此,通过与黑白名单中的签名信息匹配并不能有效的检测office文档是否为恶意文档,office文档检测的局限性较大。发明内容[0003] 本发明实施例提供了一种office文档检测方法、装置、设备及介质,用以解决现有技术中office文档检测的局限性较大的问题。[0004] 本发明实施例提供了一种office文档检测方法,所述方法包括:[0005] 提取office文档的宏;[0006] 通过解析所述office文档的宏,确定所述office文档的模板特征参数;[0007] 将确定出的所述office文档的模板特征参数与预先保存的黑白名单库中的模板特征参数进行匹配,检测所述office文档是否为恶意文档。[0008] 进一步地,所述通过解析所述office文档的宏,确定所述office文档的模板特征参数包括:[0009] 通过解析所述office文档的宏,确定所述office文档的调用函数列表和关键字列表;根据所述调用函数列表和关键字列表确定函数调用矩阵;所述模板特征参数包括调用函数列表、关键字列表和函数调用矩阵;[0010] 所述将确定出的所述office文档的模板特征参数与预先保存的黑白名单库中的模板特征参数进行匹配,检测所述office文档是否为恶意文档包括:[0011] 将确定出的所述office文档的调用函数列表、关键字列表和函数调用矩阵与预先保存的黑白名单库中的调用函数列表、关键字列表和函数调用矩阵进行匹配,检测所述office文档是否为恶意文档。[0012] 进一步地,所述根据所述调用函数列表和关键字列表确定函数调用矩阵包括:[0013] 根据所述调用函数列表,确定函数调用关系子矩阵;[0014] 根据所述调用函数列表、关键字列表和预设的关键字库,确定函数命中关键字子矩阵;[0015] 所述函数调用矩阵包括所述函数调用关系子矩阵和所述函数命中关键字子矩阵。[0016] 进一步地,所述将确定出的所述office文档的调用函数列表、关键字列表和函数调用矩阵与预先保存的黑白名单库中的调用函数列表、关键字列表和函数调用矩阵进行匹配包括:[0017] 判断预先保存的黑白名单库中是否存在与所述office文档的调用函数列表、关键字列表相同的列表,与所述office文档的函数调用矩阵匹配的矩阵,如果是,确定匹配成功,否则,确定未匹配成功。[0018] 进一步地,判断预先保存的黑白名单库中是否存在与所述office文档的函数调用矩阵匹配的矩阵包括:[0019] 选取预先保存的黑白名单库中与所述函数调用矩阵规模相同的候选矩阵;[0020] 针对每个候选矩阵,确定该候选矩阵与所述函数调用矩阵每个对应位置的元素的差值;判断确定出的每个差值是否均小于预设的阈值;如果是,确定该候选矩阵与所述函数调用矩阵匹配,如果否,确定该候选矩阵与所述函数调用矩阵不匹配。[0021] 另一方面,本发明实施例提供了一种office文档检测装置,所述装置包括:[0022] 提取模块,用于提取office文档的宏;[0023] 确定模块,用于通过解析所述office文档的宏,确定所述office文档的模板特征参数;[0024] 检测模块,用于将确定出的所述office文档的模板特征参数与预先保存的黑白名单库中的模板特征参数进行匹配,检测所述office文档是否为恶意文档。[0025] 进一步地,所述确定模块,具体用于通过解析所述office文档的宏,确定所述office文档的调用函数列表和关键字列表;根据所述调用函数列表和关键字列表确定函数调用矩阵;所述模板特征参数包括调用函数列表、关键字列表和函数调用矩阵;[0026] 所述检测模块,具体用于将确定出的所述office文档的调用函数列表、关键字列表和函数调用矩阵与预先保存的黑白名单库中的调用函数列表、关键字列表和函数调用矩阵进行匹配,检测所述office文档是否为恶意文档。[0027] 进一步地,所述确定模块,具体用于根据所述调用函数列表,确定函数调用关系子矩阵;根据所述调用函数列表、关键字列表和预设的关键字库,确定函数命中关键字子矩阵;所述函数调用矩阵包括所述函数调用关系子矩阵和所述函数命中关键字子矩阵。[0028] 进一步地,所述检测模块,具体用于判断预先保存的黑白名单库中是否存在与所述office文档的调用函数列表、关键字列表相同的列表,与所述office文档的函数调用矩阵匹配的矩阵,如果是,确定匹配成功,否则,确定未匹配成功。[0029] 进一步地,所述检测模块,具体用于选取预先保存的黑白名单库中与所述函数调用矩阵规模相同的候选矩阵;针对每个候选矩阵,确定该候选矩阵与所述函数调用矩阵每个对应位置的元素的差值;判断确定出的每个差值是否均小于预设的阈值;如果是,确定该候选矩阵与所述函数调用矩阵匹配,如果否,确定该候选矩阵与所述函数调用矩阵不匹配。[0030] 再一方面,本发明实施例提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;[0031] 存储器,用于存放计算机程序;[0032] 处理器,用于执行存储器上所存放的程序时,实现上述任一项所述的方法步骤。[0033] 再一方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述任一项所述的方法步骤。[0034] 本发明实施例提供了一种office文档检测方法、装置、设备及介质,所述方法包括:提取office文档的宏;通过解析所述office文档的宏,确定所述office文档的模板特征参数;将确定出的所述office文档的模板特征参数与预先保存的黑白名单库中的模板特征参数进行匹配,检测所述office文档是否为恶意文档。[0035] 上述的技术方案具有如下优点或有益效果:[0036] 本发明实施例提供的office文档检测方法,提取office文档的宏,然后解析office文档的宏,确定office文档的模板特征参数。预先保存了白名单库和黑名单库,将确定出的office文档的模板特征参数与预先保存的黑白名单库中的模板特征参数进行匹配,检测office文档是否为恶意文档。基于同一个office文档模板,用户即使根据需要删减或增加相应内容,office文档的宏是不变的,因此,根据office文档的宏确定office文档的模板特征参数,然后基于模板特征参数检测office文档是否为恶意文档,解决了现有技术中用户根据需要删减或增加相应内容后,无法有效的检测office文档是否为恶意文档的问题,即解决了现有技术检测office文档的局限性较大的问题。附图说明[0037] 为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。[0038] 图1为本发明实施例提供的office文档检测过程示意图;[0039] 图2为本发明实施例提供的函数调用关系子矩阵示意图;[0040] 图3为本发明实施例提供的函数命中关键字子矩阵示意图;[0041] 图4为本发明实施例提供的函数调用矩阵示意图;[0042] 图5为本发明实施例提供的office文档检测装置结构示意图;[0043] 图6为本发明实施例提供的电子设备结构示意图。具体实施方式[0044] 下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。[0045] 实施例1:[0046] 图1为本发明实施例提供的office文档检测过程示意图,该过程包括以下步骤:[0047] S101:提取office文档的宏。[0048] S102:通过解析所述office文档的宏,确定所述office文档的模板特征参数。[0049] S103:将确定出的所述office文档的模板特征参数与预先保存的黑白名单库中的模板特征参数进行匹配,检测所述office文档是否为恶意文档。[0050] 本发明实施例提供的office文档检测方法应用于电子设备,该电子设备可以是能够接收office文档,并对office文档进行恶意检测的设备。[0051] 电子设备接收到待检测的office文档后,首先提取office文档的宏,并对office文档的宏进行解析,进而确定office文档的模板特征参数。其中,可以通过vba语法解析office文档的宏,确定office文档的模板特征参数。[0052] 电子设备预先保存有黑白名单库,其中,黑名单库中的是预先根据恶意office文档确定出的模板特征参数,白名单库中的是预先根据正常office文档确定出的模板特征参数。具体的,电子设备预先针对已知的每个恶意office文档,提取该恶意office文档的宏,通过解析该恶意office文档的宏,确定该恶意office文档的模板特征参数,并存入黑名单库。电子设备预先针对已知的每个正常office文档,提取该正常office文档的宏,通过解析该正常office文档的宏,确定该正常office文档的模板特征参数,并存入白名单库。[0053] 电子设备确定待检测的office文档的模板特征参数之后,将确定出的office文档的模板特征参数与预先保存的黑白名单库中的模板特征参数进行匹配,检测office文档是否为恶意文档。如果确定出的office文档的模板特征参数与预先保存的黑名单库中的模板特征参数匹配成功,则确定待检测的office文档为恶意office文档。如果确定出的office文档的模板特征参数与预先保存的白名单库中的模板特征参数匹配成功,则确定待检测的office文档为正常office文档。[0054] 本发明实施例提供的office文档检测方法,提取office文档的宏,然后解析office文档的宏,确定office文档的模板特征参数。预先保存了白名单库和黑名单库,将确定出的office文档的模板特征参数与预先保存的黑白名单库中的模板特征参数进行匹配,检测office文档是否为恶意文档。基于同一个office文档模板,用户即使根据需要删减或增加相应内容,office文档的宏是不变的,因此,根据office文档的宏确定office文档的模板特征参数,然后基于模板特征参数检测office文档是否为恶意文档,解决了现有技术中用户根据需要删减或增加相应内容后,无法有效的检测office文档是否为恶意文档的问题,即解决了现有技术检测office文档的局限性较大的问题。[0055] 实施例2:[0056] 为了确定office文档的模板特征参数,在上述实施例的基础上,在本发明实施例中,所述通过解析所述office文档的宏,确定所述office文档的模板特征参数包括:[0057] 通过解析所述office文档的宏,确定所述office文档的调用函数列表和关键字列表;根据所述调用函数列表和关键字列表确定函数调用矩阵;所述模板特征参数包括调用函数列表、关键字列表和函数调用矩阵;[0058] 所述将确定出的所述office文档的模板特征参数与预先保存的黑白名单库中的模板特征参数进行匹配,检测所述office文档是否为恶意文档包括:[0059] 将确定出的所述office文档的调用函数列表、关键字列表和函数调用矩阵与预先保存的黑白名单库中的调用函数列表、关键字列表和函数调用矩阵进行匹配,检测所述office文档是否为恶意文档。[0060] 本发明实施例中,通过解析office文档的宏,确定office文档的调用函数列表和关键字列表。office文档的调用函数列表包括通过解析office文档的宏得到的各个函数以及各个函数之间的调用关系,各个函数之间的调用关系可以是某一函数调用另一函数的次数。关键字列表包括各个函数中包含的关键字。[0061] 根据调用函数列表和关键字列表确定函数调用矩阵,也就是将各个函数之间的调用次数以及各个函数中包含的关键字的次数作为函数调用矩阵中的元素,得到函数调用矩阵。模板特征参数包括调用函数列表、关键字列表和函数调用矩阵。预先保存的黑白名单库中的模板特征参数同样包括调用函数列表、关键字列表和函数调用矩阵。[0062] 将确定出的office文档的模板特征参数与预先保存的黑白名单库中的模板特征参数进行匹配,检测office文档是否为恶意文档。具体为,将确定出的office文档的调用函数列表、关键字列表和函数调用矩阵与预先保存的黑白名单库中的调用函数列表、关键字列表和函数调用矩阵进行匹配,检测office文档是否为恶意文档。[0063] 将确定出的office文档的调用函数列表与黑名单库中的调用函数列表进行匹配,判断黑名单库中是否存在与office文档的调用函数列表相同的列表;将确定出的office文档的关键字列表与黑名单库中的关键字列表进行匹配,判断黑名单库中是否存在与office文档的关键字列表相同的列表;将确定出的office文档的函数调用矩阵与黑名单库中的函数调用矩阵进行匹配,判断黑名单库中是否存在与office文档的函数调用矩阵相同的矩阵。如果黑名单库中存在与office文档的调用函数列表相同的列表;存在与office文档的关键字列表相同的列表;存在与office文档的函数调用矩阵相同的矩阵,则确定待检测的office文档为恶意文档。[0064] 类似的,将确定出的office文档的调用函数列表与白名单库中的调用函数列表进行匹配,判断白名单库中是否存在与office文档的调用函数列表相同的列表;将确定出的office文档的关键字列表与白名单库中的关键字列表进行匹配,判断白名单库中是否存在与office文档的关键字列表相同的列表;将确定出的office文档的函数调用矩阵与白名单库中的函数调用矩阵进行匹配,判断白名单库中是否存在与office文档的函数调用矩阵相同的矩阵。如果白名单库中存在与office文档的调用函数列表相同的列表;存在与office文档的关键字列表相同的列表;存在与office文档的函数调用矩阵相同的矩阵,则确定待检测的office文档为正常文档。[0065] 实施例3:[0066] 为了使根据调用函数列表和关键字列表确定函数调用矩阵更准确,在上述各实施例的基础上,在本发明实施例中,所述根据所述调用函数列表和关键字列表确定函数调用矩阵包括:[0067] 根据所述调用函数列表,确定函数调用关系子矩阵;[0068] 根据所述调用函数列表、关键字列表和预设的关键字库,确定函数命中关键字子矩阵;[0069] 所述函数调用矩阵包括所述函数调用关系子矩阵和所述函数命中关键字子矩阵。[0070] 本发明实施例中,根据调用函数列表和关键字列表确定的函数调用矩阵包括两部分,分别是函数调用关系子矩阵和函数命中关键字子矩阵。其中,根据调用函数列表,确定各个函数之间的调用次数,将各个函数之间的调用次数作为函数调用关系子矩阵中的元素,得到函数调用关系子矩阵。电子设备保存有预设的关键字库,根据调用函数列表、关键字列表和预设的关键字库可以确定出各个函数中命中关键字库中的关键字的次数,将各个函数中命中关键字库中的关键字的次数作为函数命中关键字子矩阵中的元素,得到函数命中关键字子矩阵。[0071] 例如,根据调用函数列表确定一个宏内有六个函数,分别为函数1、函数2、函数3、函数4、函数5和函数6。六个函数共命中五个关键字,分别为关键字1、关键字2、关键字3、关键字4和关键字5。如图2所示,函数调用关系子矩阵共包括A11、A12、……、A66这36个元素。其中,A11表示函数1调用函数1的次数,A12表示函数1调用函数2的次数,A13表示函数1调用函数3的次数,……,A21表示函数2调用函数1的次数,A22表示函数2调用函数2的次数,A23表示函数2调用函数3的次数,……,A61表示函数6调用函数1的次数,A62表示函数6调用函数2的次数,A63表示函数6调用函数3的次数……。如图3所示,函数命中关键字子矩阵共包括B11、B12、……、B65这30个元素。其中,B11表示函数1中命中关键字1的次数,B12表示函数1命中关键字2的次数,B13表示函数1命中关键字3的次数,……,B21表示函数2中命中关键字1的次数,B22表示函数2命中关键字2的次数,B23表示函数2命中关键字3的次数,……,B61表示函数6中命中关键字1的次数,B62表示函数6命中关键字2的次数,B63表示函数6命中关键字3的次数……。图4为函数调用矩阵示意图,其包括函数调用关系子矩阵和函数命中关键字子矩阵。[0072] 实施例4:[0073] 在上述各实施例的基础上,在本发明实施例中,所述将确定出的所述office文档的调用函数列表、关键字列表和函数调用矩阵与预先保存的黑白名单库中的调用函数列表、关键字列表和函数调用矩阵进行匹配包括:[0074] 判断预先保存的黑白名单库中是否存在与所述office文档的调用函数列表、关键字列表相同的列表,与所述office文档的函数调用矩阵匹配的矩阵,如果是,确定匹配成功,否则,确定未匹配成功。[0075] 本发明实施例中,将确定出的office文档的调用函数列表、关键字列表和函数调用矩阵与预先保存的黑白名单库中的调用函数列表、关键字列表和函数调用矩阵进行匹配,具体的,可以是判断黑名单库中是否存在与office文档的调用函数列表相同的列表;判断黑名单库中是否存在与office文档的关键字列表相同的列表;判断黑名单库中是否存在与office文档的函数调用矩阵相同的矩阵。判断白名单库中是否存在与office文档的调用函数列表相同的列表;判断白名单库中是否存在与office文档的关键字列表相同的列表;判断白名单库中是否存在与office文档的函数调用矩阵相同的矩阵。[0076] 较佳的,为了避免office文档误检测,提高检测准确性,本发明实施例中,判断预先保存的黑白名单库中是否存在与所述office文档的函数调用矩阵匹配的矩阵包括:[0077] 选取预先保存的黑白名单库中与所述函数调用矩阵规模相同的候选矩阵;[0078] 针对每个候选矩阵,确定该候选矩阵与所述函数调用矩阵每个对应位置的元素的差值;判断确定出的每个差值是否均小于预设的阈值;如果是,确定该候选矩阵与所述函数调用矩阵匹配,如果否,确定该候选矩阵与所述函数调用矩阵不匹配。[0079] 本发明实施例中,首先选取预先保存的黑白名单库中与函数调用矩阵规模相同的候选矩阵,其中,规模相同指的是矩阵行的元素数量及列的元素数量均相同。并且,选取的候选矩阵的函数调用关系子矩阵与函数调用矩阵中的函数调用关系子矩阵的规模相同,选取的候选矩阵的函数命中关键字子矩阵与函数调用矩阵中的函数命中关键字子矩阵的规模相同。[0080] 针对每个候选矩阵,确定该候选矩阵与所述函数调用矩阵每个对应位置的元素的差值,电子设备保存有预设的阈值,该预设的阈值可以是1、2等。若确定出的每个差值均小于预设的阈值,则确定该候选矩阵与函数调用矩阵匹配,否则确定该候选矩阵与函数调用矩阵不匹配。[0081] 由于在本发明实施例中,确定候选矩阵与函数调用矩阵每个对应位置的元素的差值,若确定出的每个差值均小于预设的阈值,则确定候选矩阵与函数调用矩阵匹配,从而使得将确定出的office文档的调用函数列表、关键字列表和函数调用矩阵与预先保存的黑白名单库中的调用函数列表、关键字列表和函数调用矩阵进行匹配更准确,进而使得office文档检测更准确。[0082] 下面通过具体的示例对office文档检测过程进行详细说明。[0083] 步骤1:[0084] 准备已知的白/黑的含有宏的office样本。[0085] 步骤2:[0086] 提取office样本中的宏,语法分析导出调用函数列表和关键字列表(office内置函数也包含):[0087] 例如如下结构,其中key为vba函数名,Value结构中的key为被调用函数名,Value结构中的value为被调用函数出现的次数,可以体现函数调用关系。[0088] {"s_sg":{},"NLists":{},"PrintX":{},"mo":{"Cells":1,"Run":1},"Lkoid":{},"Cooper_n":{},"jilodf_h":{},"Adm":{"Int":1,"Rnd":1},"s_prints1":{"Right":1,"Run":1,".value":3,"Int":2,"Cells":5,"Replace":1,"Chr":1},"Z_app1_a_Layout":{"Application.OnTime":1,"Now":1}}。[0089] 步骤3:[0090] 建立宏的调用函数列表,将宏内的函数导出为一个数组,例如"fun_list":["Adm","Cooper_n","Lkoid","NLists","PrintX","Z_app1_a_Layout","jilodf_h","mo","s_prints1","s_sg"]。[0091] 步骤4:[0092] 构造二维矩阵存储有向图,Y维度为宏内函数的数量,X维度为宏内函数的数量+命中关键词的数量。以图4为例,可以发现例如一个宏内有6个函数,共命中5个关键词,则Y维度宏内函数的数量为6,X维度宏内函数的数量+命中关键词的数量为6+5=11。[0093] 例如预设的关键字库(混淆相关的关键词)lst_obfuscation_keywords=['Asc','Mid','Left','Right','Tan','StrReverse','Xor','ChrB','ChrW','Chr','CStr','StrConv','Replace','Int','Hex','Sqr','CByte','Log','Rnd']。[0094] 此时office宏模型建立完毕,得到黑白名单库中的模板特征参数,其中,黑白名单库中的模板特征参数包含调用函数列表、关键字列表和函数调用矩阵。[0095] 步骤5:[0096] 若获取一个待检测office文档,根据步骤2至步骤4的方法确定待检测office文档的调用函数列表、关键字列表和函数调用矩阵,然后分别将待检测office文档的调用函数列表、关键字列表和函数调用矩阵与黑白名单库中的调用函数列表、关键字列表和函数调用矩阵进行匹配,若与白名单库匹配成功,则确定待检测office文档为正常文档,此时不告警;若与黑名单库匹配成功,则确定待检测office文档为恶意文档,此时触发告警。[0097] 需要说明的是,若待检测office文档与黑白名单库均未匹配成功,可以采用现有的检测方案或者人为进行检测。如果确定待检测office文档为正常文档,可以将待检测office文档的调用函数列表、关键字列表和函数调用矩阵添加至白名单库,如果确定待检测office文档为恶意文档,可以将待检测office文档的调用函数列表、关键字列表和函数调用矩阵添加至黑名单库,并且触发报警。这样可以丰富黑白名单库,后续在进行office文档检测时更加便利准确。[0098] 另外,本发明实施例提供的方案可以对现有的office文档检测结果进行误报修正。如果现有的office文档检测结果为恶意文档,则确定office文档的模板特征参数,与白名单库中的模板特征参数进行匹配,若匹配成功,则修正误报。如果现有的office文档检测结果为正常文档,则确定office文档的模板特征参数,与黑名单库中的模板特征参数进行匹配,若匹配成功,则确定office文档为恶意文档,并产生告警。[0099] 实施例5:[0100] 图5为本发明实施例提供的office文档检测装置结构示意图,该装置包括:[0101] 提取模块51,用于提取office文档的宏;[0102] 确定模块52,用于通过解析所述office文档的宏,确定所述office文档的模板特征参数;[0103] 检测模块53,用于将确定出的所述office文档的模板特征参数与预先保存的黑白名单库中的模板特征参数进行匹配,检测所述office文档是否为恶意文档。[0104] 所述确定模块52,具体用于通过解析所述office文档的宏,确定所述office文档的调用函数列表和关键字列表;根据所述调用函数列表和关键字列表确定函数调用矩阵;所述模板特征参数包括调用函数列表、关键字列表和函数调用矩阵;[0105] 所述检测模块53,具体用于将确定出的所述office文档的调用函数列表、关键字列表和函数调用矩阵与预先保存的黑白名单库中的调用函数列表、关键字列表和函数调用矩阵进行匹配,检测所述office文档是否为恶意文档。[0106] 所述确定模块52,具体用于根据所述调用函数列表,确定函数调用关系子矩阵;根据所述调用函数列表、关键字列表和预设的关键字库,确定函数命中关键字子矩阵;所述函数调用矩阵包括所述函数调用关系子矩阵和所述函数命中关键字子矩阵。[0107] 所述检测模块53,具体用于判断预先保存的黑白名单库中是否存在与所述office文档的调用函数列表、关键字列表相同的列表,与所述office文档的函数调用矩阵匹配的矩阵,如果是,确定匹配成功,否则,确定未匹配成功。[0108] 所述检测模块53,具体用于选取预先保存的黑白名单库中与所述函数调用矩阵规模相同的候选矩阵;针对每个候选矩阵,确定该候选矩阵与所述函数调用矩阵每个对应位置的元素的差值;判断确定出的每个差值是否均小于预设的阈值;如果是,确定该候选矩阵与所述函数调用矩阵匹配,如果否,确定该候选矩阵与所述函数调用矩阵不匹配。[0109] 实施例6:[0110] 在上述各实施例的基础上,本发明实施例中还提供了一种电子设备,如图6所示,包括:处理器301、通信接口302、存储器303和通信总线304,其中,处理器301,通信接口302,存储器303通过通信总线304完成相互间的通信;[0111] 所述存储器303中存储有计算机程序,当所述程序被所述处理器301执行时,使得所述处理器301执行如下步骤:[0112] 提取office文档的宏;[0113] 通过解析所述office文档的宏,确定所述office文档的模板特征参数;[0114] 将确定出的所述office文档的模板特征参数与预先保存的黑白名单库中的模板特征参数进行匹配,检测所述office文档是否为恶意文档。[0115] 基于同一发明构思,本发明实施例中还提供了一种电子设备,由于上述电子设备解决问题的原理与office文档检测方法相似,因此上述电子设备的实施可以参见方法的实施,重复之处不再赘述。[0116] 本发明实施例提供的电子设备具体可以为桌面计算机、便携式计算机、智能手机、平板电脑、个人数字助理(PersonalDigitalAssistant,PDA)、网络侧设备等。[0117] 上述电子设备提到的通信总线可以是外设部件互连标准(PeripheralComponentInterconnect,PCI)总线或扩展工业标准结构(ExtendedIndustry StandardArchitecture,EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。[0118] 通信接口302用于上述电子设备与其他设备之间的通信。[0119] 存储器可以包括随机存取存储器(RandomAccessMemory,RAM),也可以包括非易失性存储器(Non‑VolatileMemory,NVM),例如至少一个磁盘存储器。可选地,存储器还可以是至少一个位于远离前述处理器的存储装置。[0120] 上述处理器可以是通用处理器,包括中央处理器、网络处理器(NetworkProcessor,NP)等;还可以是数字信号处理器(DigitalSignalProcessing,DSP)、专用集成电路、现场可编程门陈列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。[0121] 在本发明实施例中处理器执行存储器上所存放的程序时,实现提取office文档的宏;通过解析所述office文档的宏,确定所述office文档的模板特征参数;将确定出的所述office文档的模板特征参数与预先保存的黑白名单库中的模板特征参数进行匹配,检测所述office文档是否为恶意文档。本发明实施例提供的office文档检测方法,提取office文档的宏,然后解析office文档的宏,确定office文档的模板特征参数。预先保存了白名单库和黑名单库,将确定出的office文档的模板特征参数与预先保存的黑白名单库中的模板特征参数进行匹配,检测office文档是否为恶意文档。基于同一个office文档模板,用户即使根据需要删减或增加相应内容,office文档的宏是不变的,因此,根据office文档的宏确定office文档的模板特征参数,然后基于模板特征参数检测office文档是否为恶意文档,解决了现有技术中用户根据需要删减或增加相应内容后,无法有效的检测office文档是否为恶意文档的问题,即解决了现有技术检测office文档的局限性较大的问题。[0122] 实施例7:[0123] 在上述各实施例的基础上,本发明实施例还提供了一种计算机存储可读存储介质,所述计算机可读存储介质内存储有可由电子设备执行的计算机程序,当所述程序在所述电子设备上运行时,使得所述电子设备执行时实现如下步骤:[0124] 提取office文档的宏;[0125] 通过解析所述office文档的宏,确定所述office文档的模板特征参数;[0126] 将确定出的所述office文档的模板特征参数与预先保存的黑白名单库中的模板特征参数进行匹配,检测所述office文档是否为恶意文档。[0127] 基于同一发明构思,本发明实施例中还提供了一种计算机可读存储介质,由于处理器在执行上述计算机可读存储介质上存储的计算机程序时解决问题的原理与office文档检测方法相似,因此处理器在执行上述计算机可读存储介质存储的计算机程序的实施可以参见方法的实施,重复之处不再赘述。[0128] 上述计算机可读存储介质可以是电子设备中的处理器能够存取的任何可用介质或数据存储设备,包括但不限于磁性存储器如软盘、硬盘、磁带、磁光盘(MO)等、光学存储器如CD、DVD、BD、HVD等、以及半导体存储器如ROM、EPROM、EEPROM、非易失性存储器(NANDFLASH)、固态硬盘(SSD)等。[0129] 本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。[0130] 这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。[0131] 这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。[0132] 尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。[0133] 显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
专利地区:北京
专利申请日期:2021-09-10
专利公开日期:2024-07-26
专利公告号:CN113742475B