基于注册表的漏洞扫描方法与装置与流程

文档序号:22834176发布日期:2020-11-06 16:25阅读:166来源:国知局
基于注册表的漏洞扫描方法与装置与流程

本发明属于计算机与网络安全技术领域,具体的是设计一种基于注册表获取软件信息以进行漏洞扫描的方法。



背景技术:

随着互联网的发展,网络和web应用共享平台为我们的生活带来网上交易、电子政务、企业门户、社区论坛、电子商务等便利,与此同时,利用漏洞攻击的网络安全事件也不断发生,并且呈日趋严重的态势。漏洞,即在硬件、软件、协议的具体实现或系统安全策略上存在的缺陷,可以使攻击者在未经授权的情况下访问或破坏系统。

计算机软件漏洞,是指软件开发者开发时的疏忽或者是编程语言的局限性导致的,无法彻底避免,常常需要打补丁补救。即使是防火墙、入侵检测和杀毒软件等技术也无法彻底避免计算机软件自身漏洞带来的威胁,这些漏洞给网络黑客侵入的机会,也给计算机软件使用者带来巨大的信息安全威胁。现如今,计算机与互联网技术日新月异,漏洞出现频率也越来越高,必须不断地提升计算机软件的安全漏洞检测技术,寻找和弥补漏洞,保障计算机安全、稳定运行。漏洞扫描技术,通过扫描等手段对指定的远程或者本地计算机系统及其软件的安全脆弱性进行检测,发现漏洞的安全检测(渗透攻击)行为,针对性地进行系统维护和漏洞修复,保护系统的安全。而对计算机软件进行针对性的漏洞发掘,需要获取软件的基本信息,以调用相应的漏洞规则,因此如何准确地获取到软件信息成为对软件有效漏扫的关键所在。



技术实现要素:

鉴于上述背景,本发明提出一种基于注册表的漏洞扫描方法及装置,从注册表获取系统的软件信息,进行漏洞扫描,及时主动的发现目标软件存在的潜在威胁,防患于未然。

一方面,基于注册表的漏洞扫描方法,包括:查找特定注册表路径,获取各路径下的所有注册表信息,写入第一文件;读取所述第一文件,筛选出其中的软件信息,并保存在第二文件;解析所述第二文件,得到目标软件的软件名、版本号、安装目录;启动漏扫系统,调用预设的漏洞库,对目标软件进行漏洞扫描。

上述的特定注册表路径包括以下至少一项:

software\\microsoft\\windows\\currentversion\\uninstall;

software\\wow6432node\\microsoft\\windows\\currentversion\\uninstall;

software\\microsoft\\internetexplorer。

从所述特定注册表路径获取注册表信息,并从中筛选出软件信息,包括筛选得到:软件名、软件版本号、软件安装目录、软件发布厂家、主程序所在完整路径、卸载exe所在完整路径。

所述查找特定注册表路径之前,包括通过弱口令猜解判断目标系统是否存在弱口令,若存在弱口令则进一步利用猜解出的用户名与密码,登录目标系统以获取注册表权限。

所述获取各路径下的所有注册表信息,包括:利用python的winreg模块远程连接到目标系统,通过访问所述特定路径,分别获取路径下的所有注册表信息,通过枚举方式,将每个注册表项的key与值均保存至所述第一文件。

另一方面,一种漏洞扫描装置,包括:

注册表信息查找模块,用于查找特定注册表路径,获取各路径下的所有注册表信息;

文件存储模块,用于存储第一文件与第二文件,所述第一文件包括特定路径下的所有注册表信息,所述第二文件包括筛选出的软件信息;

文件解析模块,用于从第一文件中筛选出软件信息写入第二文件,从第二文件中解析出待扫描的目标软件信息;

漏洞扫描模块,用于对所述目标软件进行漏洞扫描。

上述的漏洞扫描装置,还包括弱口令猜解模块,用于并发地读取并组合内置字典和/或自建字典的用户名与口令字典信息,对目标系统发起登录尝试,以判断目标系统是否存在弱口令;

若目标系统存在弱口令,利用猜解出的用户名与密码,登录目标系统,由注册表信息查找模块获取特定路径的注册表信息。

以上所述的本发明技术方案,具有以下有益效果:获取系统注册表权限后,通过读取特定的注册表路径,筛选得到系统内的软件信息并写入文件,根据需求建立漏扫任务,解析所述文件中的软件名称、版本与安装目录信息,调用漏洞规则库进行针对性的漏洞扫描,该方案获取得的软件信息更准确,有利于更准确的发掘计算软件存在的漏洞,及时进行打补丁等补救措施,防止被不法行为利用,提高系统的安全。

附图说明

图1为本发明的基于注册表的漏洞扫描方法实施例,工作流程示意图;

图2为本发明的漏洞扫描装置实施例,组成框图;

图3至图6为本发明的漏洞扫描方法实施例,windows系统的注册表编辑器展示的信息内容示例。

具体实施方式

下面结合附图与实施例,对本发明的技术方案进行详细说明。

首先是对相关技术术语的解释:

软件的安全漏洞,产生原因来自多方面,例如:(1)软件设计与编程人员的能力、经验和安全技术所限,操作系统及各类应用软件出现逻辑错误是不可避免的,程序编写中也必然会有不足之处,况且编程人员不可能预想到所有可能情况,那么由于疏忽而引起的有些错误和漏洞就在所难免。(2)程序设计与编写多是在一种理想状态下进行的,理想状态可以实现并不一定实际运行中也能实现,一旦理想的假设得不到满足,程序内部的各个模块和安全策略出现冲突便会带来漏洞。(3)在不同种类的软、硬件设备,软件的版本各不相同,软件版本与硬件版本之间的兼容性也会导致不确定的安全漏洞。(4)每一个软件开发完成并发布后,随着用户基数增长以及与其他软件共存环境下的运行,本身存在的漏洞也会逐渐暴露出来,并且随着补丁的修补可能会带来新的潜在漏洞,即就漏洞逐渐被新漏洞取代。

针对软件的漏洞扫描,面临的技术问题包括但不限于:漏洞发掘的精确度和漏洞扫描和修补的高效。提高漏洞分析精确度,需要更加精确的分析方法,在合理的时间和资源条件下有效缓解漏洞分析精度和资源消耗之间的矛盾。而漏扫的高效,包括通过智能化提升软件漏洞分析;目前,漏洞分析领域涌现出许多方法、技术和工具,逐步摆脱了之前依靠手工经验和密集劳动的状况。但是,在很大程度上仍然难以脱离分析人员的漏洞先验知识,例如,静态分析技术大多基于历史漏洞的特征,而动态分析往往基于漏洞攻击与异常输入等知识,而但相应知识的总结和提取非常困难和耗时,亟需提升漏洞分析的智能化。

本发明实施例的发明人,在实践中发现,当现有的漏扫系统通过弱口令猜解功能获取到windows系统的用户名及其密码时,就可以获取系统的注册表权限,从而有可能进一步获取到系统级的软件信息,为后续的漏洞发掘提供基础。

注册表是windows操作系统中的一个核心数据库,其中存放着各种参数,支撑着windows的系统启动、硬件驱动程序的装载以及应用程序的运行,在整个系统中起着核心作用。注册表的信息包括了软、硬件的相关配置和状态信息。

注册表由键(也叫主键或称“项”或“key”)、子键(子项)和值项构成,一个键就是分支中的一个文件夹,而子键就是这个文件夹当中的子文件夹,子键同样它也是一个键;一个值项则是一个键的当前定义,由名称、数据类型以及分配的值组成;一个键可以有一个或多个值,每个值的名称各不相同,如果一个值的名称为空,则该值为该键的默认值。例如,在注册表编辑器(regedit.exe)中,数据结构显示如下,其中,command键是open键的子键,(默认)表示该值是默认值,值名称为空,其数据类型为reg_sz,数据值为1。

如图1所示,基于注册表的漏洞扫描方法,包括以下步骤:

s1.查找特定注册表路径,获取各路径下的所有注册表信息,写入第一文件;作为一种优选的实施方式,本发明实施例利用python的winreg模块远程连接到目标系统,通过访问所述特定路径,分别获取路径下的所有注册表信息,通过枚举方式,将每个注册表项的key与值均保存至所述第一文件。

winreg作为python的一种内置模块,将windows注册表api暴露给了python,因此,winreg模块可以用来操作windows系统的注册表。

上述的特定注册表路径包括以下至少一项:

software\\microsoft\\windows\\currentversion\\uninstall;

software\\wow6432node\\microsoft\\windows\\currentversion\\uninstall;

software\\microsoft\\internetexplorer。

作为一种优选的实施方式,s1所述的查找特定注册表路径之前,包括通过弱口令猜解判断目标系统是否存在弱口令,若存在弱口令则进一步利用猜解出的用户名与密码,登录目标系统以获取注册表权限。所述弱口令猜解,包括并发地读取并组合内置字典和/或自建字典的用户名与口令字典信息,发起登录尝试,以判断目标系统是否存在弱口令。

s2.读取所述第一文件,筛选出其中的软件信息,并保存在第二文件;所述从中筛选出软件信息,包括筛选得到:软件名、软件版本号、软件安装目录、软件发布厂家、主程序所在完整路径、卸载exe所在完整路径等。

s3.解析上述的第二文件,得到目标软件的软件名、版本号、安装目录;

s4.启动漏扫系统,调用预设的漏洞库,对目标软件进行漏洞扫描;当扫描到漏洞时,进行漏洞确认与自动修补。

如图2所示,一种漏洞扫描装置,包括:

注册表信息查找模块,用于查找特定注册表路径,获取各路径下的所有注册表信息;

文件存储模块,用于存储第一文件与第二文件,所述第一文件包括特定路径下的所有注册表信息,所述第二文件包括筛选出的软件信息;

文件解析模块,用于从第一文件中筛选出软件信息写入第二文件,从第二文件中解析出待扫描的目标软件信息;

漏洞扫描模块,用于对所述目标软件进行漏洞扫描。

作为一种优选实施方式,漏洞扫描装置还包括:

弱口令猜解模块,用于并发地读取并组合内置字典和/或自建字典的用户名与口令字典信息,对目标系统发起登录尝试,以判断目标系统是否存在弱口令;若目标系统存在弱口令,利用猜解出的用户名与密码,登录目标系统,由注册表信息查找模块获取特定路径的注册表信息;

漏洞库模块,具有漏洞规则库,用于被漏扫引擎调用、对所述目标软件进行漏洞扫描。

下面通过一个具体实施例,对上述的漏洞扫描方法进行具体说明。

由于不同的计算机软件,规定的相关注册表项并不相同,因此本发明的实施例,不同的软件,其注册表路径并不相同,而且windows系统的注册表编辑器中显示的第一级键就包括hkey_classes_root,hkey_current_user,hkey_local_machine,hkey_users,hkey_current_config等,因此本发明的实施例对该一级菜单不做限定,只限定从“software”或“software”开始的下级路径(以下叙述中,以下划线标识出该限定的注册表路径)。

实施例一

第一步,利用python的winreg模块远程连接到目标系统(此处对弱口令猜解模块的猜解过程不再赘述),访问指定的注册表路径,本实施例中,访问全部的三个特定路径,可以获得例如如下所示的注册表信息(具体如附图3至如图6所示):

hhkey_current_user\\software\\microsoft\\windows\\currentversion\\uninstall\\googlechrome;

hhkey_local_machine\\software\\wow6432node\\microsoft\\windows\\currentversion\\uninstall\\钉钉;

hkey_local_machine\\software\\microsoft\\windows\\currentversion\\uninstall\\autocad2014-简体中文(simplifiedchinese);

hkey_local_machine\\software\\microsoft\\internetexplorer

从这些注册路径中可以获取到特定软件的注册表信息,为了便于存储,本实施例设置第一文件存储这些注册表信息,具体的是根据最低一级键(即googlechrome,钉钉等),通过枚举方式,将每个注册表项的key(即键)与值(包括“名称”、“类型”、“数据”三项)均保存至所述第一文件中。

第二步,读取所述第一文件,筛选出其中的软件信息。由于部分最低一级键并不表示软件相关信息,因此需要进行筛选,例如一些不具有实际含义的字符串“{46aa30df-ed7b-438a-9462-60ab9a6d57e4}”。可以事先建立一个包括常见软件名的数据表,根据该数据表中的软件名,从第一文件中筛选出计算机软件的相关信息(包括但不限于软件名、软件版本号、软件安装目录、软件发布厂家、主程序所在完整路径、卸载exe所在完整路径等),存入第二文件。

第三步,解析所述第二文件,得到目标软件的软件名、版本号、安装目录。例如本实施例的目的是对“googlechrome”软件进行漏洞扫描(其软件注册信息如图3所示),则根据其软件名从第二文件中查找出对应版本号(“version”)与安装目录(“installlocation”)。

第四步,根据软件名与版本号,可以调用事先已建立并保持实时更新的漏洞库,访问软件安装目录,对所涉及的软件相关数据进行漏洞扫描。如果发现存在安全漏洞,则可以进行打补丁修补,以保持该软件的安全运行。当然对于无法修补的软件,可以根据已获取到的软件相关注册表信息对该软件进行隔离,甚至卸载该软件。

如上所述,本发明的实施例获取得的软件信息更准确,有利于更准确的发掘计算软件存在的漏洞,及时进行打补丁等补救措施,防止被不法行为利用,提高系统的安全。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于一计算机可读取存储介质中,所述的存储介质,如:rom/ram、磁碟、光盘等。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理相一致的最宽的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1