基于启发式规则的主机软件发现方法及装置制造方法及图纸

技术编号:38429442 阅读:14 留言:0更新日期:2023-08-07 11:26
本发明专利技术公开一种基于启发式规则的主机软件发现方法及装置。所述方法包括:获取目标主机中所有文件目录节点的属性;基于该属性对所述文件目录节点聚类,得到若干个软件簇;针对每一个软件簇,基于所有文件的绝对路径构建前缀树,并基于前缀树,获取该软件簇中频次最高的k个最长公共前缀;将每一个软件簇的k个最长公共前缀与软件名单中的软件名进行模糊匹配,以得到目标主机的软件发现结果。本发明专利技术可以在保持很小的性能损失的同时提升模型的推理速度。能够自动化发现目标主机内通过各种途径安装的软件,且不需要事先训练模型。且不需要事先训练模型。且不需要事先训练模型。

【技术实现步骤摘要】
基于启发式规则的主机软件发现方法及装置


[0001]本专利技术涉及计算机软件管理领域,具体为一种基于启发式规则的主机软件发现方法及装置。

技术介绍

[0002]随着对开发速度的要求越来越高,企业在开发中引入第三方的软件产品成为主流开发模式,同时随着开源社区的繁荣和发展,软件引入变得越来越方便快捷,也使得软件系统越来越复杂,这种变化加快开发速度的同时也给系统带来潜在的风险和隐患,每一个引入的软件都可能存在不在掌控内的漏洞,且漏洞增加速度快、漏洞库更新慢,传统的等待漏洞公布后再扫描修补的模式费时、滞后,已不再适应如今快速的开发周期,及时全面地掌握主机内存在的软件是提前预防风险的重要手段。
[0003]工业界应用最为广泛的方法是操作系统提供的官方软件包管理器,比如linux操作系统下的apt、yum等工具,其服务器端维护一个软件仓库,客户端连接服务器端获取软件包,自动化安装时将该软件信息写入本地数据库表,用户后续通过直接读取数据库表获得本地存在的软件列表。Windows系统下的控制面板所列软件也是按照规范安装,在注册表中进行注册了的软件。操作系统原生工具运行快速,缺点是只能发现通过官方途径安装的、符合规范流程的软件,不能发现用户自行编译安装、直接解压缩二进制文件等非官方途径安装的软件。
[0004]学术界传统的基于规则匹配的软件发现方法依赖专业人员制定匹配规则,匹配规则可以是扫描一个特定文件的存在或者是系统配置信息等。该方法简单、直接、速度快,但规则的可用性高度依赖专业人员的专业性,容易被绕过,同时目前软件更新周期短,规则需要频繁更新,这在目前的软件数量和更新速度下成本高昂。
[0005]另外有基于机器学习的方法,这类方法能够发现通过各种途径安装的软件,但是应用前提较为严格,需要持续监控目标主机的文件系统更改记录并从主机的文件系统中分离出单独软件包,实际场景下难以提供单独、准确的软件包供分类,需要持续监控系统文件更改记录的方法也无法发现系统早已存在的软件。同时这类方法可以看作是通用的基于规则的方法,因为应用效果依然受样本全面性限制。

技术实现思路

[0006]针对上述问题,本专利技术公开了一种基于启发式规则的主机软件发现方法及装置,用户在使用本专利技术部署提供的方法时,能够自动化发现目标主机内存在的软件列表,结果涵盖通过各种途径安装的软件,且不需要事先训练模型。
[0007]为解决上述问题,本专利技术的技术方案包括:
[0008]一种基于启发式规则的主机软件发现方法,所述方法包括:
[0009]获取目标主机中所有文件目录节点的属性;其中,所述属性包括:文件属主、文件属组、状态时间和绝对路径;
[0010]基于该属性对所述文件目录节点聚类,得到若干个软件簇;
[0011]针对每一个软件簇,基于所有文件的绝对路径构建前缀树,并基于前缀树,获取该软件簇中频次最高的k个最长公共前缀;
[0012]将每一个软件簇的k个最长公共前缀与软件名单中的软件名进行模糊匹配,以得到目标主机的软件发现结果。
[0013]进一步地,所述基于该属性对所述文件目录节点聚类,得到若干个软件簇,包括:
[0014]获取该属性的属性特征;
[0015]对所述属性特征向量化;
[0016]对所述特征向量应用密度聚类算法,得到软件簇。
[0017]进一步地,所述获取该属性的属性特征,包括:
[0018]对文件属主的特征进行onehot编码,以得到文件属主对应的特征向量;
[0019]和,
[0020]对文件属组的特征进行onehot编码,以得到文件属组对应的特征向量;
[0021]和,
[0022]基于状态时间对应的毫秒级时间戳,得到状态时间对应的特征向量;
[0023]和,
[0024]获取绝对路径中后n级的文件名;
[0025]使用哈希映射对后n级的文件名中的每一文件名进行哈希映射,得到该文件名对应的ASCII码;
[0026]将所有ASCII码累加,得到绝对路径对应的特征向量。
[0027]进一步地,所述针对每一个软件簇,基于所有文件的绝对路径构建前缀树,包括:
[0028]按系统文件分隔符切割文件路径,得到每个文件的绝对路径命名列表;
[0029]根据系统常见命名进行绝对路径命名列表中绝对路径命名的过滤,得到过滤后的绝对路径命名列表;
[0030]基于分隔符进行过滤后的绝对路径命名列表中绝对路径命名的字符串切分,得到预处理后的绝对路径命名列表;
[0031]从前缀树的根节点开始,将预处理后的绝对路径命名列表中绝对路径命名的字符串,按字符插入前缀树中的节点,以使根节点到任一节点的路径上所经过的字符连接起来就是该节点代表的字符串;其中,所述根节点中的数据为空。
[0032]进一步地,所述将每一个软件簇的k个最长公共前缀与软件名单中的软件名进行模糊匹配,以得到目标主机的软件发现结果,包括:
[0033]基于字符串长度,计算最长公共前缀与软件名之间的匹配度score;
[0034]根据所述匹配度score,判定该软件簇对应的软件名;
[0035]依据所有软件簇对应的软件名,得到目标主机的软件发现结果。
[0036]进一步地,所述匹配度其中,tag表示最长公共前缀,app表示软件名单中的软件名,len(
·
)表示计算字符串长度,LCS
tag,app
表示字符串tag和字符串app的最长公共子串。
[0037]一种基于启发式规则的主机软件发现装置,所述装置包括:
[0038]获取模块,用于获取目标主机中所有文件目录节点的属性;其中,所述属性包括:文件属主、文件属组、状态时间和绝对路径;
[0039]聚类模块,用于基于该属性对所述文件目录节点聚类,得到若干个软件簇;
[0040]计算模块,用于针对每一个软件簇,基于所有文件的绝对路径构建前缀树,并基于前缀树,获取该软件簇中频次最高的k个最长公共前缀;
[0041]匹配模块,用于将每一个软件簇的k个最长公共前缀与软件名单中的软件名进行模糊匹配,以得到目标主机的软件发现结果。
[0042]一种电子设备,其特征在于,包括:处理器,以及存储有计算机程序指令的存储器;所述处理器执行所述计算机程序指令时实现上述任一所述方法。
[0043]一种计算机可读存储介质,其上存储有计算机程序指令,其特征在于,所述计算机程序指令被处理器执行时实现上述任一所述方法。
[0044]与现有技术相比,本专利技术的积极效果为:
[0045]1.本专利技术能够提取出软件的文件集合,利用软件的共有特征使得同一软件的文件集合聚类在一起。
[0046]2.本专利技术能够自动化发现通过各种途径安装的软件,包括通过官方软件管理工具(apt,yum
[0047]等)安装的软件,人工参与(源代码编译,二进制代码解压缩等)安装的软件本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于启发式规则的主机软件发现方法,其特征在于,所述方法包括:获取目标主机中所有文件目录节点的属性;其中,所述属性包括:文件属主、文件属组、状态时间和绝对路径;基于该属性对所述文件目录节点聚类,得到若干个软件簇;针对每一个软件簇,基于所有文件的绝对路径构建前缀树,并基于前缀树,获取该软件簇中频次最高的k个最长公共前缀;将每一个软件簇的k个最长公共前缀与软件名单中的软件名进行模糊匹配,以得到目标主机的软件发现结果。2.如权利要求1所述的方法,其特征在于,所述基于该属性对所述文件目录节点聚类,得到若干个软件簇,包括:获取该属性的属性特征;对所述属性特征向量化;对所述特征向量应用密度聚类算法,得到软件簇。3.如权利要求2所述的方法,其特征在于,所述获取该属性的属性特征,包括:对文件属主的特征进行onehot编码,以得到文件属主对应的特征向量;和,对文件属组的特征进行onehot编码,以得到文件属组对应的特征向量;和,基于状态时间对应的毫秒级时间戳,得到状态时间对应的特征向量;和,获取绝对路径中后n级的文件名;使用哈希映射对后n级的文件名中的每一文件名进行哈希映射,得到该文件名对应的ASCII码;将所有ASCII码累加,得到绝对路径对应的特征向量。4.如权利要求1所述的方法,其特征在于,所述针对每一个软件簇,基于所有文件的绝对路径构建前缀树,包括:按系统文件分隔符切割文件路径,得到每个文件的绝对路径命名列表;根据系统常见命名进行绝对路径命名列表中绝对路径命名的过滤,得到过滤后的绝对路径命名列表;基于分隔符进行过滤后的绝对路径命名列表中绝对路径命名的字符串切分,得到预处理后的绝对路径命名列表;从前缀树的根节点开始,将预处理后的绝对路径命名列表中绝对路径命名的字符串,按字符插入前缀树中的节点,以使根节...

【专利技术属性】
技术研发人员:喻灵婧李丽青王勇杨嵘刘庆云
申请(专利权)人:中国科学院信息工程研究所
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1