CN111488577B - 一种基于人工智能的模型建立方法和风险评估方法及装置 - Google Patents

一种基于人工智能的模型建立方法和风险评估方法及装置 Download PDF

Info

Publication number
CN111488577B
CN111488577B CN201910086990.8A CN201910086990A CN111488577B CN 111488577 B CN111488577 B CN 111488577B CN 201910086990 A CN201910086990 A CN 201910086990A CN 111488577 B CN111488577 B CN 111488577B
Authority
CN
China
Prior art keywords
exploit
host
information
payload
target host
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.)
Active
Application number
CN201910086990.8A
Other languages
English (en)
Other versions
CN111488577A (zh
Inventor
曲武
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Jinjingyunhua Technology Co ltd
Original Assignee
Beijing Jinjingyunhua Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Jinjingyunhua Technology Co ltd filed Critical Beijing Jinjingyunhua Technology Co ltd
Priority to CN201910086990.8A priority Critical patent/CN111488577B/zh
Publication of CN111488577A publication Critical patent/CN111488577A/zh
Application granted granted Critical
Publication of CN111488577B publication Critical patent/CN111488577B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1433Vulnerability analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/24Classification techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本申请公开了一种基于人工智能的模型建立方法和风险评估方法及装置。所述方法包括:在获取到至少两个主机执行漏洞利用操作后,获取漏洞利用成功的主机的漏洞利用的数据;从所述漏洞利用数据中,获取主机的漏洞利用特征信息与漏洞利用有效负载payload的对应关系;根据所述主机的漏洞利用特征与漏洞利用payload的对应关系,建立以漏洞利用特征为输入量的分类模型。

Description

一种基于人工智能的模型建立方法和风险评估方法及装置
技术领域
本申请涉及计算机安全技术领域和人工智能领域,尤指一种基于人工智能的模型建立方法和风险评估方法及装置。
背景技术
近年来,随着计算机和网络技术快速发展,但出现的安全问题越来越多,尤其一些漏洞时常被不法分子利用,进行破坏活动,给人们正常使用计算机带来诸多困扰。如何及时发现与修补漏洞,不断提高计算机安全性,一直是业内关注的热点。计算机安全漏洞来自多个方面,软硬件开发人员开发系统时考虑不全面以及用户的不正确配置,都会导致漏洞的出现。理论上讲,任何系统都存在漏洞,部分漏洞随着时间的推移逐渐显现,因此,做好计算机安全漏洞研究与检测,是一个需要长期坚持的过程。
在人工智能领域中,可以利用相关学习方法在系统软件安全方面的研究主要集中在漏洞分析和挖掘领域,例如,采用机器学习、深度学习或强化学习的技术手段,实现利用漏洞的特征进行识别、随机测试技术以及利用污点分析、符号执行等分析方法。然而,这些方法实际中很难被有效利用,并且只有少部分的安全缺陷能够被自动识别,大部分的安全漏洞依然依靠冗长的代码审计。
为了加快漏洞发现和人工审计的过程,Yamaguchi等人从基于函数形式的源码中提取API(Application Programming Interface,应用程序编程接口)符号,利用PCA(principal Component Analysis,主成分分析)方法自动识别API用途的特征,从而发现零日漏洞。在深度的二进制程序漏洞静态分析过程中,加州大学伯克利分校的研究人员提出利用深度学习中的循环神经网络识别程序中的函数。Yamaguchi等人还提出代码漏洞漏检自动识别方法,即通过语法抽象图和词袋模型,利用机器学习方法进行分析。文中表明,该方法能准确地识别出是否存在漏检,并且还挖掘了若干零日漏洞。
此外,机器学习还被利用在漏洞预测方面。例如,2013年,Pang等人提出使用SVM进行软件组件早期漏洞识别。Scandariato等人利用文本挖掘方法预测软件源代码中含有的安全漏洞。2015年,Pang等人又利用自然语言处理中的N-Gram模型和统计特征选择进行漏洞预测。更进一步,Long等人提出基于补丁的特征,利用概率模型自动生成补丁,探索自动漏洞修复方法。
在漏洞分析和挖掘领域,基于学习的漏洞识别、漏洞预测和漏洞修复方法,还没有形成一个较为成熟的应用体系。
鉴于此,现有技术有待改进和提高。
发明内容
为了解决上述技术问题,本申请提供了一种基于人工智能的模型建立方法和风险评估方法和装置。
为了达到本申请目的,本申请提供了一种基于人工智能的模型建立方法,包括:
在获取到至少两个主机执行漏洞利用操作后,获取漏洞利用成功的主机的漏洞利用的数据;
从所述漏洞利用数据中,获取主机的漏洞利用特征信息与漏洞利用有效负载payload的对应关系;
根据所述主机的漏洞利用特征与漏洞利用payload的对应关系,建立以漏洞利用特征为输入量的分类模型。
在一个示例性实施例中,所述主机的漏洞利用特征包括主机的特征信息和/或漏洞利用的配置信息。
在一个示例性实施例中,所述主机的特征信息包括:
操作系统的类型、端口、3/4层的通信协议信息、服务类别和版本信息中的至少一个。
在一个示例性实施例中,所述漏洞利用的配置信息包括漏洞利用模块和/或漏洞利用目标。
在一个示例性实施例中,所述从所述漏洞利用数据中,获取主机的漏洞利用特征信息与漏洞利用有效负载payload的对应关系,包括:
对所述主机的特征信息和所述漏洞利用信息中所包括的N个信息的属性值进行调整,得到至少两组N维输入量,作为漏洞利用特征信息,其中N为正整数;
采用预先设置的深度学习网络,将所述至少两组N维输入量进行漏洞利用的操作,得到漏洞利用结果;
根据所述漏洞利用结果,确定所述漏洞利用特征对应的备选的漏洞利用payload。
在一个示例性实施例中,所述根据所述漏洞利用结果,确定所述漏洞利用特征对应的备选的漏洞利用payload,得到漏洞利用结果包括:
按照预先设置的所述各个N维输入量的属性值对应的变化区间,计算各个N维输入量对应的至少两组属性值;
利用得到的各个N维输入量对应的至少两组属性值对所述不同的漏洞进行强化学习,得到不同漏洞对漏洞利用payload的漏洞利用结果。
在一个示例性实施例中,所述利用得到的各个N维输入量对应的至少两组属性值对所述不同的漏洞进行强化学习,得到不同漏洞对漏洞利用payload的漏洞利用结果之后,所述方法还包括:
存储所述漏洞利用操作的数据;
当检测到已记录的数据的存储量达到预先设置的存储量阈值时,从记录的数据中选取部分数据作为目标数据;
利用所述目标数据对所述深度学习网络进行训练。
在一个示例性实施例中,所述根据所述漏洞利用结果,确定所述漏洞利用特征对应的备选的漏洞利用payload,包括:
根据预先设置的奖励函数,计算漏洞利用特征对应的各个漏洞利用payload的奖励数值;
根据所述各个漏洞利用payload的奖励数值,确定所述漏洞利用特征对应的备选的漏洞利用结果。
为了达到本申请目的,本申请提供了一种基于人工智能的模型建立装置,包括处理器和存储器,其中所述存储器存储计算机程序,所述处理器用于调用所述处理器中的计算机程序以实现上文任一所述的方法。
为了达到本申请目的,本申请提供了另一种基于人工智能的风险评估方法,包括:
在接收到对目标主机的漏洞利用请求后,获取所述目标主机的漏洞利用特征;
利用上文所述的方法建立的分类模型,对所述目标主机的漏洞利用特征进行处理,得到符合所述目标主机的漏洞利用特征的漏洞利用有效负载;
利用得到的漏洞利用有效负载,对所述目标主机进行漏洞利用操作,得到所述目标主机的漏洞利用结果;
根据所述目标主机的漏洞利用结果,对利用成功的漏洞进行评分,并基于漏洞评分对目标主机进行资产风险评估。
在一个示例性实施例中,所述利用得到的漏洞利用有效负载,对所述目标主机进行漏洞利用操作,得到所述目标主机的漏洞利用结果,包括:
在所述目标主机的漏洞利用为成功时,获取所述目标主机上漏洞利用结果为成功的漏洞利用payload对应的目标漏洞;
根据预先设置的漏洞的评分策略,获取包括所述目标漏洞的目标主机的资产评估结果。
在一个示例性实施例中,所述目标主机的漏洞利用特征,包括主机的特征信息和/或漏洞利用的配置信息。
在一个示例性实施例中,所述主机的特征信息包括:
操作系统的类型、端口、3/4层的通信协议信息、服务类别和版本信息中的至少一个。
在一个示例性实施例中,所述操作系统的类型和/或操作系统的版本信息是通过预先设置的操作系统识别模型来得到的,其中所述操作系统的识别模型是通过如下得到的,包括:
从预先获取的目标主机的流量中,获取所述目标主机的会话特征信息;
获取主机在同一时间窗口内至少两个会话的会话特征信息;
在对所述至少两个会话的会话特征信息的标注后,构建训练集;
采用监督学习利用所述训练集对操作系统的类型和/或操作系统的版本进行识别,得到识别结果;
根据识别结果,建立识别操作系统和/或操作系统的版本的模型。
在一个示例性实施例中,所述漏洞利用的配置信息包括漏洞利用模块和/或漏洞利用目标。
为了达到本申请目的,本申请提供了另一种基于人工智能的风险评估装置,包括处理器和存储器,其中所述存储器存储计算机程序,所述处理器用于调用所述处理器中的计算机程序以实现上文任一所述的方法。
本申请提供的实施例,在获取到至少两个主机执行漏洞利用操作后,获取漏洞利用成功的主机的漏洞利用的数据,并从所述漏洞利用数据中,获取主机的漏洞利用特征信息与漏洞利用有效负载payload的对应关系,再根据所述主机的漏洞利用特征与漏洞利用payload的对应关系,建立以漏洞利用特征为输入量的分类模型,实现基于漏洞利用特征确定漏洞利用payload的目的,为获取所需的漏洞提供支持。
另外,本申请的实施例引入了监督学习技术、深度学习技术、强化学习技术和漏洞利用技术,使得本申请具备以下优点:
利用被动流量分析和监督学习技术,在一定程度上解决了操作系统及其版本识别问题,避免大量的主动扫描探测对目标主机的影响;
利用强化学习技术,通过自学习过程,极大的减少了安全专家的人工干预过程,降低了系统维护和升级代价;
通过使用混合学习技术及其框架设计,能够快速和准确选取漏洞利用Payload,进而高效地完成对目标主机的漏洞评估,并生成资产风险评估报告,大幅度提高了评估效率,显著降低对目标主机的主动干扰。
本申请的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请而了解。本申请的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
附图说明
附图用来提供对本申请技术方案的进一步理解,并且构成说明书的一部分,与本申请的实施例一起用于解释本申请的技术方案,并不构成对本申请技术方案的限制。
图1为本发明提供的一种基于人工智能的模型建立方法的流程图;
图2为本发明提供的另一种基于人工智能的风险评估方法的流程图;
图3为本发明实施例提供的一种基于混合学习的风险评估方法流程图;
图4为本发明实施例提供的一种基于机器学习的操作系统及其版本识别方法流程图;
图5为本发明实施例提供的强化学习单智体示意图;
图6为本发明实施例提供的强化学习多智体示意图;
图7为本发明实施例提供的深度学习MLP网络结构示意图;
图8为本发明实施例提供的深度学习MLP网络结构示意图细节;
图9为本发明实施例提供的一种基于混合学习的风险评估装置结构示意图;
图10为本发明实施例提供的一种基于混合学习的风险评估装置训练组件流程图;
图11为本发明实施例提供的一种基于混合学习的风险评估装置检测组件流程图;
图12为本发明实施例提供的一种基于混合学习的风险评估装置部署示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚明白,下文中将结合附图对本申请的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
图1为本发明提供的一种基于人工智能的模型建立方法的流程图。图1所示方法,包括:
步骤101、在获取到至少两个主机执行漏洞利用操作后,获取漏洞利用成功的主机的漏洞利用的数据;
在一个示例性实施例中,可以选择至少两个主机作为样本进行漏洞利用数据的收集,所收集的数据包括漏洞利用过程中的输入信息和结果信息;
步骤102、从所述漏洞利用数据中,获取主机的漏洞利用特征信息与漏洞利用有效负载payload的对应关系;
在一个示例性实施例中,所述主机的漏洞利用特征包括主机的特征信息和/或漏洞利用的配置信息;
其中,主机的特征信息所述主机的特征信息包括操作系统的类型、端口、3/4层的通信协议信息、服务类别和版本信息中的至少一个。
所述漏洞利用的配置信息包括漏洞利用模块和/或漏洞利用目标;
漏洞利用模块为尝试漏洞利用所调用的程序单元,漏洞利用目标为漏洞利用模块所操作的对象;
在一个示例性实施例中,所述从所述漏洞利用数据中,获取主机的漏洞利用特征信息与漏洞利用有效负载payload的对应关系,包括:
对所述主机的特征信息和所述漏洞利用信息中所包括的N个信息的属性值进行调整,得到至少两组N维输入量,作为漏洞利用特征信息,其中N为正整数;
采用预先设置的深度学习网络,将所述至少两组N维输入量进行漏洞利用的操作,得到漏洞利用结果;
根据所述漏洞利用结果,确定所述漏洞利用特征对应的备选的漏洞利用payload。
在上述示例性实施例中,利用深度学习网络,通过对特征信息进行多维的学习,更加精确地确定特征信息与漏洞利用payload的对应关系。
在一个示例性实施例中,所述根据所述漏洞利用结果,确定所述漏洞利用特征对应的备选的漏洞利用payload,得到漏洞利用结果包括:
按照预先设置的所述各个N维输入量的属性值对应的变化区间,计算各个N维输入量对应的至少两组属性值;
利用得到的各个N维输入量对应的至少两组属性值对所述不同的漏洞进行强化学习,得到不同漏洞对漏洞利用payload的漏洞利用结果。
在上述示例性实施例中,通过变动每个输入量对应的取值,进行对不同取值下漏洞利用的数据进行强化学习,提升漏洞利用结果的解析的精确性。
在一个示例性实施例中,所述利用得到的各个N维输入量对应的至少两组属性值对所述不同的漏洞进行强化学习,得到不同漏洞对漏洞利用payload的漏洞利用结果之后,所述方法还包括:
存储所述漏洞利用操作的数据;
当检测到已记录的数据的存储量达到预先设置的存储量阈值时,从记录的数据中选取部分数据作为目标数据;
利用所述目标数据对所述深度学习网络进行训练。
在本示例性实施例中,通过强化学习后生产的数据对深度学习网络进行训练,可以使得深度学习网络能够同步修正自身的判断标准,实现整个学习流程能够动态修正,保证输出结果的精准性。
在一个示例性实施例中,所述根据所述漏洞利用结果,确定所述漏洞利用特征对应的备选的漏洞利用payload,包括:
根据预先设置的奖励函数,计算漏洞利用特征对应的各个漏洞利用payload的奖励数值;
根据所述各个漏洞利用payload的奖励数值,确定所述漏洞利用特征对应的备选的漏洞利用结果。
在本示例性实施例中,通过对漏洞利用设置奖励数值,从而实现对漏洞利用结果的量化处理,使得筛选备选的漏洞利用payload的过程中有数据依据,提高漏洞利用分析的精确性。
步骤103、根据所述主机的漏洞利用特征与漏洞利用payload的对应关系,建立以漏洞利用特征为输入量的分类模型。
在得到的对应关系后,可以建立该漏洞利用特征和漏洞利用payload的分类模型,用于根据漏洞利用特征确定所匹配的漏洞利用payload的对应关系。
本申请提供的方法实施例,在获取到至少两个主机执行漏洞利用操作后,获取漏洞利用成功的主机的漏洞利用的数据,并从所述漏洞利用数据中,获取主机的漏洞利用特征信息与漏洞利用有效负载payload的对应关系,再根据所述主机的漏洞利用特征与漏洞利用payload的对应关系,建立以漏洞利用特征为输入量的分类模型,实现基于漏洞利用特征确定漏洞利用payload的目的,为获取所需的漏洞提供支持。
图2为本发明提供的另一种基于人工智能的风险评估方法的流程图。图2所示方法包括:
步骤201、在接收到对目标主机的漏洞利用请求后,获取所述目标主机的漏洞利用特征;
所述目标主机的漏洞利用特征,包括主机的特征信息和/或漏洞利用的配置信息。所述主机的特征信息包括:操作系统的类型、端口、3/4层的通信协议信息、服务类别和版本信息中的至少一个。所述漏洞利用的配置信息包括漏洞利用模块和/或漏洞利用目标。
在一个示例性实施例中,所述操作系统的类型和/或操作系统的版本信息是通过预先设置的操作系统识别模型来得到的,其中所述操作系统的识别模型是通过如下得到的,包括:
从预先获取的目标主机的流量中,获取所述目标主机的会话特征信息;
获取主机在同一时间窗口内至少两个会话的会话特征信息;
在对所述至少两个会话的会话特征信息的标注后,构建训练集;
采用监督学习利用所述训练集对操作系统的类型和/或操作系统的版本进行识别,得到识别结果;
根据识别结果,建立识别操作系统和/或操作系统的版本的模型。
步骤202、利用图1所示方法中任一所述的方法建立的分类模型,对所述目标主机的漏洞利用特征进行处理,得到符合所述目标主机的漏洞利用特征的漏洞利用有效负载;
步骤203、利用得到的漏洞利用有效负载,对所述目标主机进行漏洞利用操作,得到所述目标主机的漏洞利用结果。
步骤204、根据所述目标主机的漏洞利用结果,对利用成功的漏洞进行评分,并基于漏洞评分对目标主机进行资产风险评估。
本申请提供的方法实施例,在接收到对目标主机的漏洞利用请求后,获取所述目标主机的漏洞利用特征,并利用预先建立的分类模型,对所述目标主机的漏洞利用特征进行处理,得到符合所述目标主机的漏洞利用特征的漏洞利用有效负载,再利用得到的漏洞利用有效负载,对所述目标主机进行漏洞利用操作,得到所述目标主机的漏洞利用结果,通过目标主机的漏洞利用调整确定所匹配的漏洞利用payload,为获取目标主机的风险信息提供支持。
图3为本发明实施例提供的基于混合学习的风险评估方法的流程图。如图3所示,本发明实施例的基于混合学习的风险评估方法包括如下处理步骤:
S301:被动(旁路)探测分析主机流量,提取流量特征,训练分类模型,并利用该模型获取操作系统及版本信息,其流程如图3所示;
在一个示例性实施例中,步骤S301具体包括如下处理:
步骤S3011,利用流量分析引擎,被动(旁路)分析主机流量,提取会话特征集合,所述特征集合包括如下至少一个:TCP/IP特征集合、传输层安全性协议(Transport LayerSecurity,TLS)特征集合和超文本传输协议(HTTP,HyperText Transfer Protocol)特征集合。其中:
TCP/IP特征集合包括如下至少一个信息:
IP生存周期TTL、TCP可选类型、最大段尺寸MSS、Windows窗口尺寸WS与TCP SYN包相关的特征列表等;
TLS特征集合,包括如下至少一个信息:
TLS握手信息和加密套件信息。
HTTP特征集合,包括User-Agent头里的一个或至少两个特征;
步骤S3012,基于时间窗口大小对会话特征集合进行统计分析,获取窗口内多会话的特征向量,并对主机操作系统及其版本进行标注,构造训练数据集;
步骤S3013,基于训练数据集,利用监督学习算法训练操作系统及其版本识别模型,并进行特征选取和模型调优,输出最优模型。
监督学习算法可以为逻辑回归、SVM(Support Vector Machine,支持向量机)、BP神经元网络、随机森林等。由于不同的监督学习算法对于应用场景的适应性是有差异的,故训练过程中需要使用不同模型进行横向结果比较,以选取最优的监督学习算法;
步骤S3014,引导操作系统及其版本识别模型,利用流量分析引擎从旁路流量中获取会话特征,然后,基于时间窗口进行多会话特征提取,构造模型识别需要的多会话特征向量。模型根据输入的多会话特征向量进行分类识别,最后输出操作系统类别及版本信息。
S302:主动探测分析主机信息,提取开放的端口号、服务名、服务版本等信息;
在一个示例性实施例中,步骤S302具体包括如下处理:
步骤S3021,利用通用端口和服务探测工具,对目标主机进行主动探测,收集由主动探测产生的反馈流量。
以扫描工具Nmap为例,在主动信息搜集工作中,Nmap与目标系统直接交互,从而对其进行更深入的探测,发现目标主机、开放的端口号、运行的服务及其服务版本信息。
在探测过程中,Nmap可以通过参数和选项满足不同应用场景的需求,例如,利用“-sS”选项被用来执行一次隐蔽的TCP扫描,以确定某个特定的TCP端口是否开放;其中利用“-Pn”选项控制Nmap不要使用ping命令进行预先判断主机是否存活,而是默认所有主机都是存活状态,用于Internet上的渗透测试环境,因为在Internet上大多数网络均不允许ping命令所使用的ICMP协议,若预先使用ping进行判断,那么可能会漏掉许多实际存活的主机;
步骤S3022,分析实时反馈的流量,发现主机、获取开放端口、3/4层协议、服务类别和服务版本信息。
从探测中进行主机发现、端口扫描和服务识别是此类扫描探测工具最基本、最核心的功能,用于确定目标主机的TCP/UDP端口的开放情况;
在一个示例性实施例中,步骤S3022具体包括如下处理:
对于端口扫描,根据端口的工作状态进行划分,包括:
以工具Nmap为例,默认情况下,Nmap会扫描1000个最有可能开放的TCP端口,将端口划分为6个状态,分别为open(开放)、closed(关闭)、filtered(端口被防火墙/IPS屏蔽,无法确定其状态)、unfiltered(端口没有被屏蔽,但是否开放需要进一步确定)、open|filtered(端口是开放的或被屏蔽)和closed|filtered(端口是关闭的或被屏蔽);
对于服务及其版本识别,其实施步骤如下:
以工具Nmap为例,其识别过程如下:
(1)首先检查open与open|filtered状态的端口是否在排除端口列表内。如果在排除列表,将该端口剔除;
(2)如果端口类型是TCP端口,尝试建立TCP连接。尝试等待片刻(通常6秒,可配置)。通常在等待时间内,会接收到目标机发送的“Welcome Banner”信息。Nmap将接收到的Banner与nmap-services-probes中NULL probe中的签名进行对比。查找对应应用程序的名字与版本信息;
(3)如果通过“Welcome Banner”无法确定应用程序版本,那么Nmap再尝试发送其他的探测包,即从nmap-services-probes中挑选合适的probe,将probe得到回复包与数据库中的签名进行对比。如果反复探测都无法得出具体应用,那么打印出应用返回报文,让用户自行进一步判定;
(4)如果端口类型是UDP端口,那么直接使用nmap-services-probes中探测包进行探测匹配。根据结果对比分析出UDP应用服务类型;
(5)如果探测到应用程序是SSL,那么调用openSSL进一步的侦查运行在SSL之上的具体的应用类型;
(6)如果探测到应用程序是SunRPC,那么调用brute-force RPC grinder进一步探测具体服务。
步骤S3023,根据主动扫描获取的分析结果,输出目标主机开放的端口号、3/4层协议、服务类别和服务版本信息。
S303:基于主动探测和被动(旁路)探测获取目标主机的相关信息,使用传统的漏洞利用工具进行漏洞利用尝试;
常见的漏洞利用工具如下,dradis(兼容windows、linux和mac OS X的通用漏洞利用框架)、beef(浏览器漏洞利用框架)、core impact(付费,windows系统通用漏洞利用框架)、Metasploit(兼容windows、linux和mac OS X的通用漏洞利用框架)、netsparker(付费,仅支持windows系统,web应用漏洞利用框架)、social engineer toolkit(兼容windows、linux和mac OS X的社会工程漏洞利用框架)、sqlmap(兼容windows、linux和macOS X的SQL注入检测和利用框架)、sqlninja(兼容windows、linux和mac OS X的SQL注入利用框架)、w3af(兼容windows、linux和mac OS X的SQL注入利用框架);
在一个示例性实施例中,步骤S303具体包括如下处理:
步骤S3031,获取被动(旁路)探测和主动探测返回的目标主机信息,包括操作系统类别及版本信息、开放的端口号、3/4层协议、服务类别及版本信息等。
被动(旁路)探测利用人工智能技术获取目标主机的操作系统及其版本信息,能够支持操作系统,包括:Windows、Mac OS、iOS、Android、Linux;能够支持嵌入式操作系统,包括:Cisco、BSDI、HP/UX、MYS、IRIX)、其他类型的操作系统,例如AIX、Amiga、BeOS、BSDI、Cray、Tru64UNIX、DG/UX、OpenVMS、DigitalUNIX、OpenBSD、OpenStep、QNX、Rhapsody、SunOS4.x、Ultrix、VAX、VXWORKS等。
对于版本信息,由四部分组成,第一部分为主版本号,第二部分为次版本号,第三部分为修订版本号,第四部分为日期版本号加希腊字母版本号,希腊字母版本号共有五种,分别为base(基础版)、alpha(内测版)、beta(公测版)、RC(候选版)、release(正式版),例如,“1.1.1.20181107_beta”。被动(旁路)探测识别的主机信息能识别到第三部分,即修订版本号。
主动探测功能,是利用扫描技术获取目标主机开放的端口号、3/4层协议、服务类别和服务版本信息。类似的工具包括Nmap、Zmap、Masscan、Hscan、SuperScan、N-Stealth、X-Scan等,根据扫描过程中是否完成TCP三次握手状态,各类工具的扫描效率存在显著的不同。
其中,Nmap工具是本申请实施例应用的的主动探测工具,描述如下:
(1)基本功能:主机发现、开放端口扫描、支持多端口、多网段,可对目标域名进行扫描;
(2)识别功能:识别端口服务类型及版本、操作系统、设备类型等;
(3)扫描模式:TCP SYN scan、TCP connectscan、UDP scan、No Ping scan等;
(4)规避检测:分片、IP伪装、MAC伪装等。
步骤S3032,使用传统的漏洞利用工具进行漏洞利用尝试,以通用漏洞利用框架Metasploit为例,说明漏洞利用过程:
(1)对于IP为192.168.20.*的目标主机,利用被动(旁路)探测和主动探测返回目标主机的相关信息,选取目标主机上所运行的3Com 3CDaemon FTP Server为攻击目标;
(2)通过前面的探测可以得到目标主机运行的操作系统及应用程序版本的详细信息,在Metasploit框架里搜索针对3CDaemon的攻击脚本,使用use命令进入搜索到的exploit,控制台返回“msf exploit(3cdaemon_ftp_user)>”;
(3)使用Set RHOST命令设置攻击目标主机的IP地址,控制台返回“RHOST=>192.168.20.*”;
(4)使用Set target命令设置目标主机的操作系统类型,控制台返回“target=>4”。在Metasploit框架里,操作系统类型为4表示windows XP SP3 Enlish(NX);
(5)使用exploit命令,开始漏洞利用尝试,直至攻击成功。通过抓包分析,FTP漏洞利用脚本是利用超长用户名导致FTP Server崩溃。
步骤S3033,分析漏洞利用结果,对于漏洞利用成功的情况,提取端口、3/4层协议、服务类别及版本信息、漏洞利用模块、漏洞利用Payload等信息;
步骤S3034,输出漏洞利用成功的目标主机信息和漏洞利用信息,包括操作系统类别及版本信息、开放的端口号、3/4层协议、服务类别及版本信息、漏洞利用模块、漏洞利用Payload和漏洞利用结果等信息;
S304:构造强化学习的输入特征向量和输出,包括目标主机信息、漏洞利用模块、漏洞利用结果和漏洞利用Payload等;
构造强化学习的特征向量,其目的是将字符串形式的操作系统类别及版本信息、开放的端口号、3/4层协议、服务类别及版本信息、漏洞利用模块、漏洞利用目标、漏洞利用结果、漏洞利用Payload等信息,转换成机器学习模型可以使用的向量。转换方法有很多,例如字节直方图、N-Gram、词袋模型、TF-IDF模型、布尔类型、向量空间模型、概率模型、自然编码、独热编码等。
在一个示例性实施例中,步骤S304具体包括如下处理:
步骤S3041,对于操作系统类别及版本信息、开放的端口号、3/4层协议、服务类别及版本信息、漏洞利用模块、漏洞利用目标、漏洞利用结果、漏洞利用Payload等信息进行数据清洗,包括缺失值处理、异常值处理、去重处理、噪音数据处理等操作,提高数据质量;
步骤S3042,对于清洗后的数据进行量化处理;
为说明实施例,步骤S304的量化方式采用独热编码方式,本专利的量化方式不局限于独热编码方式;
独热编码即One-Hot编码,又称一位有效编码,其方法是使用N位状态寄存器来对N个状态进行编码,每个状态都有独立的寄存器位,并且在任意时候,其中只有一位有效。对于每一个特征,如果它有m个可能值,那么经过独热编码后,就变成了m个二元特征。并且,这些特征互斥,每次只有一个激活。因此,数据会变成稀疏的。独热编码在一定程度上也起到了扩充特征的作用,同时也解决了分类器不好处理属性数据的问题。
步骤S3043,将操作系统及版本信息进行量化处理,
例如,[“Unknown”、“Windows 2000Universal”、“Windows XP SP0Universal”、“Windows XP SP1 Universal”、“Windows XP SP2 English(NX)”、“Windows XP SP3English(NX)”],其独热编码为[000001,000010,000100,001000,010000,100000]。覆盖以下操作系统,windows、unix、solaris、osx、netware、linux、irix、hpux、freebsd、firefox、dialup、bsdi、aix、apple_ios、android、unknown等;
步骤S3044,将端口、3/4层协议、服务类别及版本信息进行量化处理。例如,“8009/tcp Apache Jserv Protocol/v1.3”,其中,8009为端口号,TCP为3/4层协议类型、ApacheJserv Protocol为服务(应用)类别、v1.3为版本号。对于端口号,TCP与UDP段结构中端口地址都是16比特,可以有在0~65535范围内的端口号。因此,对端口量化时可直接使用端口号本身,也可将常用端口号进行统计,根据统计结果进行编码。对于3/4层协议,可使用01表示TCP3/4层协议,10表示UDP3/4层协议。对于应用及版本可统一进行量化编码,覆盖以下的应用包括,vsftpd、ssh、telnet、postfix、bind、apache、rpc、samba、java、proftpd、mysql、postgresql、vnc、irc、jetty、tomcat、ldap、nginx、php、phpmyadmin、wordpress、joomla、drupal、sugarcrm、webmin、moodle、dav、oscommerce、tikiwiki、phpbb、mediawiki、unix等;
步骤S3045,将漏洞利用模块、漏洞利用目标、漏洞利用结果和漏洞利用Payload进行量化处理。例如对于windows环境下,应用vpn,使用端口1723,3/4层协议为TCP 3/4层协议,漏洞利用模块示例如下:“windows/vpn/safenet_ike-11”、“windows/vnc/winvnc_http_get”、“windows/vnc/ultravnc_viewer_bof”,漏洞利用目标描述如下:
ID Name
(1)0Automatic Targeting
(2)1Windows 2000Universal
(3)3Windows XP SP0/SP1 Universal
(4)4Windows XP SP2 English(NX)
(5)5Windows XP SP3 English(NX)
(6)…
漏洞利用Payload示例如下:
“windows/meterpreter/reverse_tcp”,表示攻击载荷为基于windows系统的meterpreter reverse_tcp,这个载荷在攻击成功后会从目标主机发起一个反弹连接,连接到一个指定的IP地址。反弹连接能够绕过防火墙,穿透NAT网关。漏洞利用结果为“利用成功”和“利用失败”,可以编码为“01”和“10”;
步骤S3046,输出用于强化学习的特征向量;
S305:训练强化学习分类器,用于快速和准确地进行漏洞利用Payload包选取;
在一个示例性实施例中,步骤S305具体包括如下处理:
步骤S3051,初始化强化学习环境,包括环境(Environment)、智体(Agent)、动作(Action)、状态(Status)和奖励(Reward)。
在强化学习算法实现环节,可选择单智体(Agent)强化学习算法和多智体(Agent)强化学习算法,单智体(Agent)强化学习算法示意图如图5所示,多智体(Agent)强化学习算法示意图如图6所示。为准确阐述,本实施例以单智体(Agent)强化学习算法说明原理。应该理解,本发明并不限于单智体(Agent)强化学习算法,因此也可以使用其它强化学习算法,同时保持本发明的精神;
步骤S3052,环境(Environment),环境会接收智体(Agent)执行的一系列的动作(Action),并且对这一系列动作的好坏进行评价,并转换成一种可量化的奖励(Reward)反馈给智体(Agent),而不会告诉智体(Agent)应该如何去学习动作。智体(Agent)只能靠自己的过去经历去学习。同时,环境还向智体(Agent)提供它所处的状态(State)信息。本专利所述的环境特指漏洞利用环境,为快速实现漏洞利用环境类,可以使用OpenAI Gym框架,并定义加载训练样本函数、定义动作转换表函数、定义动作执行函数、环境重置函数等;
步骤S3053,状态(State),指智体(Agent)所处的环境信息,包含了智体(Agent)用于进行动作(Action)选择的所有信息,它是历史(History)的一个函数。本专利所述的状态(State)是一个7维度的向量,[操作系统类型,端口,3/4层协议,服务类别,版本信息,漏洞利用模块,漏洞利用目标],通过对向量各个维度值的不同组合改变状态(State)。本发明提出的方法能够从当前状态中学习优化的行为,即漏洞利用成功。显然,以操作系统类型,端口,3/4层协议,服务类别,版本信息,漏洞利用模块和漏洞利用目标为基础,才能够选择适合的漏洞利用Payload;
步骤S3054,动作(Action),在强化学习领域,动作可以是连续的也可以是离散的。所述的动作(Action)是指来自漏洞利用组件的漏洞利用Payload列表,包含511类漏洞利用Payload和一个空操作,动作空间的大小与Payload的个数有关,可根据实际情况进行扩展;
步骤S3055,奖励(Reward),指环境(Environment)提供给智体(Agent)的一个可量化的标量反馈信号,用于评价智体(Agent)在某一个时间步(Time Step)所做动作(Action)的好坏。强化学习就是基于一种最大化累计奖励假设:强化学习中,智体(Agent)进行一系列的动作(Action)选择的目标是最大化未来的累计奖励。本申请所述的奖励(Reward)定义如下:
(1)漏洞利用成功,正向奖励(+1);
(2)漏洞利用失败,负向奖励(-1);
(3)其他,例如漏洞利用过程出错或者没有明确的漏洞利用结果,不奖励(0)。
步骤S3056,智体(Agent),是整个强化学习系统核心。它能够感知环境的状态(State),并且根据环境提供的奖励(Reward)信号,通过学习选择一个合适的动作(Action),来最大化长期的奖励值。简而言之,智体就是根据环境提供的奖励做为反馈,学习一系列的环境状态到动作的映射,动作选择的原则是最大化未来累积的奖励概率。选择的动作不仅影响当前时刻的奖励,还会影响下一时刻甚至未来的奖励,因此,智体在学习过程中的基本规则是:如果某个动作带来了环境的正回报,那么这一动作会被加强,反之则会逐渐削弱。本专利所述的智体是漏洞利用智体,通过漏洞利用框架(例如Metasploit)发送漏洞利用Payload给目标主机,并获取漏洞利用结果。
在本实施例中,选择把DQN算法封装成DQNAgent,定义关键属性包括state_size(状态空间大小)、action_size(动作空间大小)、memory(队列使用的记忆体,保存强化学习过程的记忆)、gamma(衰减因子)、epsilon(贪婪算法使用的参数)、model(保存深度学习网络),定义关键函数包括build_model(创建深度学习网络)、remember(保存记忆,即保存具体某一时刻的当前状态、奖励、动作、迁移到的下一个状态、状态是否结束等信息)、act(基于epsilon贪婪算法选择动作)、replay(重放记忆,即定期从记忆体中随机选择固定大小的一段记忆,用于训练深度神经网络)。
在一个示例性实施例中,步骤S3056具体包括如下处理:
步骤S30561,创建深度学习网络。常见的深度学习网络包含多层感知机(MLP)、卷积神经网络(CNN)和循环神经网络(RNN),本实施例以最基本的MLP为例进行说明,其结构如图7和图8所示,图7为MLP结构图,图8为MLP结构图的可视化细节。为实现MLP,首先定义输入层,输入层的节点数与状态的维度相同都为7,然后接着是两个隐藏层,节点数据分别为50和200,输出层节点数为512,表示可选择512类Payload进行漏洞利用尝试。输入层、隐藏层和输出层都是使用全连接,其中输入层和隐藏层之间、隐藏层和隐藏层之间的激活函数都是使用relu函数,隐藏层和输出层之间的激活函数使用Softmax函数;
步骤S30562,实现记忆以及回放功能。在本实施例中,记忆体是用队列实现,队列大小为200,队列满后自动按照插入队列的时间先后顺序丢弃。记忆体内的内容为某一个时刻的当前状态、动作、奖励、迁移到的下一个状态、状态是否结束等信息。回放的核心功能是从记忆体中随机选择固定大小的一段记忆,用于训练深度神经网络。随机选择可以避免连续选择的关联性,会影响Q值的计算效果,进而影响深度神经网络的训练过程。每次随机取一个大小为batch_size的批次,计算Q值后就需要使用更新了动作action对应的Q值标签,然后重新去训练深度神经网络;
步骤S30563,实现epsilon贪婪算法。由于Q函数是以深度神经网络的形式存在,在DQN中实现epsilon贪婪算法略有不同。使用随机数生成算法产生0~1之间的随机数,当小于等于epsilon时,就在全部action中随机选择一个,概率分布满足平均分布。当大于epsilon时,使用贪婪算法从state对应的Q值列表中选择Q值最大的一个状态state的索引,该索引对应的就是满足条件的最佳action;
步骤S30564,使用DQN进行强化学习。实现DQNAgent之后,开始强化学习过程,过程如下:
(1)初始化漏洞利用环境,获取对应状态的维度大小、动作空间大小以及批处理大小为size_batch,创建一个DQNAgent对象;
(2)设置学习次数episodes为cnt_learn,即循环learn次进行学习,每次学习都需要初始化环境。设置每次学习步长为steps;
(3)使用epsilon贪婪算法,根据当前状态state选择最佳的动作action,然后执行动作action,使得状态state产生迁移,获得对应的下一个状态next_state,奖励reward以及标记是否漏洞利用结束的标志位done。
(4)周期检测记忆体的大小,如果大于批处理大小size_batch,进行记忆回放;
(5)通过随机重组状态state(操作系统类型、端口、3/4层协议、服务类别、版本信息、漏洞利用模块和漏洞利用目标),获得不同的漏洞利用Payload进行漏洞利用尝试动作,根据漏洞利用结果更新奖励函数;
步骤S30565,训练和测试。设定训练步数,开始训练并进行10交叉验证。将日志和训练的模型持久化保存。由于训练花费时间较长,需要设置checkpoint点,便于异常中断学习后可以继续学习;
S306:利用训练好的漏洞利用强化学习模型,实现高效的漏洞利用。即,引导强化学习分类器模型,通过探测方法获取模型的输入特征向量。分类器根据输入特征向量选取漏洞利用Payload包,使用通用漏洞利用框架进行利用尝试;
在一个示例性实施例中,步骤S306具体包括如下处理:
步骤S3061,利用主动探测和被动(旁路)探测方法获取目标主机信息和漏洞利用信息,包括操作系统类别及版本信息、开放的端口号、3/4层协议、服务类别及版本信息、漏洞利用模块、漏洞利用目标等;
步骤S3062,使用数据预处理方法对于目标主机漏洞利用信息进行预处理,生成输入特征向量;
步骤S3063,引导强化学习分类器,对目标主机漏洞利用特征向量进行分类,根据分类结果选取相应漏洞利用的Payload推荐;
步骤S3064,基于推荐的漏洞利用Payload,使用通用漏洞利用框架进行利用尝试,并获取利用结果。
S307:分析各种漏洞利用结果,获取漏洞利用成功的主机相关信息。根据漏洞利用成功信息对目标主机进行资产评估。最后,根据用户的不同层级生成具有足够信息量的报告。
在一个示例性实施例中,步骤S307具体包括如下处理:
步骤S3071,对于目标主机,收集全部漏洞利用结果;
步骤S3072,将目标主机信息和漏洞利用信息,包括操作系统类别及版本信息、开放的端口号、3/4层协议、服务类别及版本信息、漏洞利用模块和漏洞利用目标等,与漏洞利用成功对应的Payload进行关联;
步骤S3073,利用通用漏洞评价体系(CVSS)对利用成功的漏洞进行评分。然后,基于漏洞评分对目标主机进行资产风险评估,根据用户的不同层级生成具有足够信息量的报告。
综上所述,借助于本发明实施例的技术方案,能够通过对漏洞利用过程的监督学习、强化学习和深度学习,进而能够快速和准确选取漏洞利用Payload,高效地完成对目标主机的漏洞评估,并生成资产风险评估报告,大幅度提高了评估效率,显著降低对目标主机的主动干扰。本发明在一定程度上解决了传统漏洞利用过程中,主动探测和大量的漏洞利用尝试引发的低效率、干扰目标主机严重等问题。而且,本发明能够利用混合学习技术解决漏洞利用过程中不同的问题,利用监督学习识别操作系统及其版本类别,利用强化学习处理漏洞利用过程中连续的、复杂的状态,利用深度学习处理高维特征向量并提取模式。
本申请提供一种基于人工智能的模型建立装置实施例,包括处理器和存储器,其中所述存储器存储计算机程序,所述处理器用于调用所述处理器中的计算机程序以实现如权利要求图1所示方法中的任一所述的方法。
本申请提供的装置实施例,在获取到至少两个主机执行漏洞利用操作后,获取漏洞利用成功的主机的漏洞利用的数据,并从所述漏洞利用数据中,获取主机的漏洞利用特征信息与漏洞利用有效负载payload的对应关系,再根据所述主机的漏洞利用特征与漏洞利用payload的对应关系,建立以漏洞利用特征为输入量的分类模型,实现基于漏洞利用特征确定漏洞利用payload的目的,为获取所需的漏洞提供支持。
一种基于人工智能的风险评估装置,其特征在于,包括处理器和存储器,其中所述存储器存储计算机程序,所述处理器用于调用所述处理器中的计算机程序以实现图2所示方法中的任一所述的方法。
本申请提供的方法实施例,在接收到对目标主机的漏洞利用请求后,获取所述目标主机的漏洞利用特征,并利用预先建立的分类模型,对所述目标主机的漏洞利用特征进行处理,得到符合所述目标主机的漏洞利用特征的漏洞利用有效负载,再利用得到的漏洞利用有效负载,对所述目标主机进行漏洞利用操作,得到所述目标主机的漏洞利用结果,通过目标主机的漏洞利用调整确定所匹配的漏洞利用payload,为获取所需的漏洞提供支持。
在上述装置实施例中,本申请提供一个示例性实施例,该实施例包括:
图9为本发明实施例提供的一种基于混合学习的风险评估装置结构示意图。如图9所示,根据本发明实施例提供的利用混合学习技术进行风险评估装置包括风险评估装置训练流程和风险评估装置检测流程,风险评估装置训练流程如图10所示,风险评估装置检测流程如图11所示。风险评估装置具体又分为6大模块,目标主机信息获取模块、漏洞利用模块、数据预处理模块、强化学习训练模块、强化学习检测模块和资产评估报告模块,具体模块描述如下:
目标主机信息获取模块901,该模块包含被动(旁路)探测组件和主动探测组件。被动(旁路)探测组件通过旁路分析流量,提取会话特征集合,利用监督学习算法训练目标主机的操作系统版本识别模型,进而完成通过旁路流量识别操作系统类别及版本信息。主动模块,探测分析主机信息,利用通用端口和服务探测工具,对目标主机进行主动探测,收集由主动探测产生的反馈流量,进而发现主机、获取开放端口、3/4层协议、服务类别和服务版本等信息;
漏洞利用模块902,该模块利用主动探测和被动(旁路)探测获取目标主机的相关信息,使用传统的漏洞利用工具进行漏洞利用模块和漏洞利用目标选择,进而选择漏洞利用Payload进行漏洞利用尝试。分析漏洞利用结果,对于漏洞利用成功的情况,提取端口、3/4层协议、服务类别及版本信息、漏洞利用模块、漏洞利用目标和漏洞利用Payload等信息,输出给数据预处理模块;
数据预处理模块903,对于漏洞利用模块输出的漏洞利用成功的信息集合进行数据清洗,包括缺失值处理、异常值处理、去重处理、噪音数据处理等操作,提高数据质量。进而,对清洗后的数据进行量化处理,转换成机器学习模型可以使用的特征向量;
强化学习训练模块904,初始化强化学习环境,包括环境(Environment)、智体(Agent)、动作(Action)、状态(Status)和奖励(Reward)。建立强化学习模型,设置模型的网络结构参数和训练参数,训练强化学习分类器,用于快速和准确地进行漏洞利用Payload选取;
强化学习检测模块905,利用训练好的漏洞利用强化学习模型,实现高效地漏洞利用。即,引导强化学习分类器模型,通过探测方法获取模型的输入特征向量。分类器根据输入特征向量选取漏洞利用Payload,使用通用漏洞利用框架进行利用尝试;
资产评估报告模块905,分析各种漏洞利用结果,获取漏洞利用成功的主机相关信息。根据漏洞利用成功信息对目标主机进行资产评估。最后,根据用户的不同层级生成具有足够信息量的报告。
除了上面提到的6大模块,风险评估装置还使用了两个辅助模块,分别为数据存储模块和目标主机模块。其中,数据存储模块用于存储训练数据集、漏洞利用中间结果、训练完成的模型和资产评估报告等。目标主机模块,提供执行漏洞利用的虚拟机集合,这些虚拟机包含各种类型及版本的操作系统和服务。
在一个示例性实施例中,提供了一种基于混合学习的风险评估装置,图12是本发明实施例提供的一种基于混合学习的风险评估装置部署示意图。如图12所示,根据本发明实施例提供的利用混合学习技术进行风险评估的系统包括以下设备,学习服务器、存储服务器、探测服务器和目标主机。
学习服务器,提供被动(旁路)探测模块的操作系统及其版本识别模型训练、强化学习训练和检测能力;
存储服务器,提供存储训练数据集、漏洞利用中间结果、训练完成的模型和生成资产评估报告等;
探测服务器,提供以下能力,包括利用主动探测模块和被动(旁路)探测模块获取目标主机的相关信息、利用目标主机相关信息对目标主机进行漏洞利用并获取利用结果。其中,被动(旁路)探测模块使用学习服务器提供的操作系统及其版本识别模型,用于识别操作系统类别和版本。
目标主机,提供执行漏洞利用的虚拟机集合,这些虚拟机包含各种类型和版本的操作系统和服务。
当选用的训练集覆盖足够多漏洞利用场景,经过持续不断的强化学习过程,本发明实施例提供的风险评估装置能够发现漏洞利用模块、漏洞利用目标和漏洞利用Payload之间潜藏的关联模式,这种关联模式使得风险评估装置能够快速和准确地选取漏洞利用Payload,进而高效地完成对目标主机的漏洞评估,并生成资产风险评估报告,大幅度提高了评估效率,显著降低对目标主机的主动干扰。
综上所述,本发明涉及一种基于混合学习的风险评估方法和装置,使用主动探测、被动(旁路)探测和漏洞利用框架获取目标主机的相关信息、漏洞利用模块、漏洞利用目标、漏洞利用Payload和漏洞利用结果等,训练强化学习分类器,用于快速和准确地进行漏洞利用Payload选取。从而,在一定程度上解决了传统漏洞利用过程中,主动探测和大量的漏洞利用尝试引发的低效率、干扰目标主机严重等问题。同时,本发明利用混合学习技术解决漏洞利用过程中不同问题,利用监督学习识别操作系统及其版本类别,利用强化学习处理漏洞利用过程中连续的、复杂的状态,利用深度学习处理高维特征向量并提取模式。
本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、装置中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些组件或所有组件可以被实施为由处理器,如数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。

Claims (13)

1.一种基于人工智能的模型建立方法,其特征在于,包括:
在获取到至少两个主机执行漏洞利用操作后,获取漏洞利用成功的主机的漏洞利用的数据;
从所述漏洞利用数据中,获取主机的漏洞利用特征信息与漏洞利用有效负载payload的对应关系;
根据所述主机的漏洞利用特征与漏洞利用payload的对应关系,建立以漏洞利用特征为输入量的分类模型,其中,所述分类模型用于确定符合目标主机的漏洞利用特征的漏洞利用有效负载;
其中,所述从所述漏洞利用数据中,获取主机的漏洞利用特征信息与漏洞利用有效负载payload的对应关系,包括:
对所述主机的特征信息和所述漏洞利用信息中所包括的N个信息的属性值进行调整,得到至少两组N维输入量,作为漏洞利用特征信息,其中N为正整数;
采用预先设置的深度学习网络,将所述至少两组N维输入量进行漏洞利用的操作,得到漏洞利用结果;
按照预先设置的所述各个N维输入量的属性值对应的变化区间,计算各个N维输入量对应的至少两组属性值;
利用得到的各个N维输入量对应的至少两组属性值对不同的漏洞进行强化学习,得到不同漏洞对漏洞利用payload的漏洞利用结果。
2.根据权利要求1所述的方法,其特征在于,所述主机的漏洞利用特征包括主机的特征信息和/或漏洞利用的配置信息。
3.根据权利要求2所述的方法,其特征在于,所述主机的特征信息包括:
操作系统的类型、端口、3/4层的通信协议信息、服务类别和版本信息中的至少一个。
4.根据权利要求2所述的方法,其特征在于,所述漏洞利用的配置信息包括漏洞利用模块和/或漏洞利用目标。
5.根据权利要求1所述的方法,其特征在于,所述利用得到的各个N维输入量对应的至少两组属性值对所述不同的漏洞进行强化学习,得到不同漏洞对漏洞利用payload的漏洞利用结果之后,所述方法还包括:
存储所述漏洞利用操作的数据;
当检测到已记录的数据的存储量达到预先设置的存储量阈值时,从记录的数据中选取部分数据作为目标数据;
利用所述目标数据对所述深度学习网络进行训练。
6.根据权利要求1所述的方法,其特征在于,所述根据所述漏洞利用结果,确定所述漏洞利用特征对应的备选的漏洞利用payload,包括:
根据预先设置的奖励函数,计算漏洞利用特征对应的各个漏洞利用payload的奖励数值;
根据所述各个漏洞利用payload的奖励数值,确定所述漏洞利用特征对应的备选的漏洞利用结果。
7.一种基于人工智能的风险评估方法,其特征在于,包括:
在接收到对目标主机的漏洞利用请求后,获取所述目标主机的漏洞利用特征;
利用如权利要求1至6任一所述的方法建立的分类模型,对所述目标主机的漏洞利用特征进行处理,得到符合所述目标主机的漏洞利用特征的漏洞利用有效负载;
利用得到的漏洞利用有效负载,对所述目标主机进行漏洞利用操作,得到所述目标主机的漏洞利用结果;
根据所述目标主机的漏洞利用结果,对利用成功的漏洞进行评分,并基于漏洞评分对目标主机进行资产风险评估。
8.根据权利要求7所述的方法,其特征在于,所述目标主机的漏洞利用特征,包括主机的特征信息和/或漏洞利用的配置信息。
9.根据权利要求8所述的方法,其特征在于,所述主机的特征信息包括:
操作系统的类型、端口、3/4层的通信协议信息、服务类别和版本信息中的至少一个。
10.根据权利要求9所述的方法,其特征在于,所述操作系统的类型和/或操作系统的版本信息是通过预先设置的操作系统识别模型来得到的,其中所述操作系统的识别模型是通过如下得到的,包括:
从预先获取的目标主机的流量中,获取所述目标主机的会话特征信息;
获取主机在同一时间窗口内至少两个会话的会话特征信息;
在对所述至少两个会话的会话特征信息的标注后,构建训练集;
采用监督学习利用所述训练集对操作系统的类型和/或操作系统的版本进行识别,得到识别结果;
根据识别结果,建立识别操作系统和/或操作系统的版本的模型。
11.根据权利要求8所述的方法,其特征在于,所述漏洞利用的配置信息包括漏洞利用模块和/或漏洞利用目标。
12.一种基于人工智能的模型建立装置,其特征在于,包括处理器和存储器,其中所述存储器存储计算机程序,所述处理器用于调用所述处理器中的计算机程序以实现如权利要求1至6任一所述的方法。
13.一种基于人工智能的评估装置,其特征在于,包括处理器和存储器,其中所述存储器存储计算机程序,所述处理器用于调用所述处理器中的计算机程序以实现如权利要求7至11任一所述的方法。
CN201910086990.8A 2019-01-29 2019-01-29 一种基于人工智能的模型建立方法和风险评估方法及装置 Active CN111488577B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910086990.8A CN111488577B (zh) 2019-01-29 2019-01-29 一种基于人工智能的模型建立方法和风险评估方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910086990.8A CN111488577B (zh) 2019-01-29 2019-01-29 一种基于人工智能的模型建立方法和风险评估方法及装置

Publications (2)

Publication Number Publication Date
CN111488577A CN111488577A (zh) 2020-08-04
CN111488577B true CN111488577B (zh) 2023-05-26

Family

ID=71794081

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910086990.8A Active CN111488577B (zh) 2019-01-29 2019-01-29 一种基于人工智能的模型建立方法和风险评估方法及装置

Country Status (1)

Country Link
CN (1) CN111488577B (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112559724B (zh) * 2021-01-02 2021-06-22 深圳索信达数据技术有限公司 一种预防恶意搜索聊天机器人漏洞的方法及系统
CN112818353A (zh) * 2021-02-23 2021-05-18 杭州安恒信息安全技术有限公司 一种渗透测试方法、装置、设备及可读存储介质
CN113221124A (zh) * 2021-05-27 2021-08-06 杭州安恒信息安全技术有限公司 一种基于Nmap和Metasploit的安全漏洞扫描发布系统及方法
CN113468538A (zh) * 2021-06-15 2021-10-01 江苏大学 一种基于相似性度量的漏洞攻击数据库构建方法
CN113946826A (zh) * 2021-09-10 2022-01-18 国网山东省电力公司信息通信公司 一种漏洞指纹静默分析监测的方法、系统、设备和介质
CN113821802B (zh) * 2021-09-30 2024-05-07 中国电子信息产业集团有限公司第六研究所 一种安全风险评估方法、装置、电子设备及存储介质
WO2023086057A1 (en) * 2021-11-09 2023-05-19 Istanbul Medipol Universitesi Teknoloji Transfer Ofisi Anonim Sirketi An automated api-based port and vulnerability scanner
CN114598509B (zh) * 2022-02-23 2023-06-20 烽台科技(北京)有限公司 一种确定脆弱性结果的方法及装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105631340A (zh) * 2015-12-17 2016-06-01 珠海市君天电子科技有限公司 一种xss漏洞检测的方法及装置
CN107181758A (zh) * 2017-06-30 2017-09-19 微梦创科网络科技(中国)有限公司 识别黑客行为的方法及系统
CN109284611A (zh) * 2018-09-20 2019-01-29 北京计算机技术及应用研究所 基于Metasploit框架的测试系统及实现网络安全性测试的方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10841327B2 (en) * 2012-09-19 2020-11-17 International Business Machines Corporation Mining attack vectors for black-box security testing
US10489557B2 (en) * 2016-08-19 2019-11-26 International Business Machines Corporation Synthesis of security exploits via self-amplifying deep learning

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105631340A (zh) * 2015-12-17 2016-06-01 珠海市君天电子科技有限公司 一种xss漏洞检测的方法及装置
CN107181758A (zh) * 2017-06-30 2017-09-19 微梦创科网络科技(中国)有限公司 识别黑客行为的方法及系统
CN109284611A (zh) * 2018-09-20 2019-01-29 北京计算机技术及应用研究所 基于Metasploit框架的测试系统及实现网络安全性测试的方法

Also Published As

Publication number Publication date
CN111488577A (zh) 2020-08-04

Similar Documents

Publication Publication Date Title
CN111488577B (zh) 一种基于人工智能的模型建立方法和风险评估方法及装置
US11936667B2 (en) Cyber security system applying network sequence prediction using transformers
US11689557B2 (en) Autonomous report composer
US6907430B2 (en) Method and system for assessing attacks on computer networks using Bayesian networks
Haddadi et al. Benchmarking the effect of flow exporters and protocol filters on botnet traffic classification
US20200336507A1 (en) Generative attack instrumentation for penetration testing
EP3340570A1 (en) Profiling cyber threats detected in a target environment and automatically generating one or more rule bases for an expert system usable to profile cyber threats detected in a target environment
Sija et al. A survey of automatic protocol reverse engineering approaches, methods, and tools on the inputs and outputs view
CN110855676A (zh) 网络攻击的处理方法、装置及存储介质
CN107026821A (zh) 报文的处理方法及装置
US11429724B2 (en) Machine learning detection of unused open ports
CN109426700B (zh) 数据处理方法、装置、存储介质和电子装置
CN114553523A (zh) 基于攻击检测模型的攻击检测方法及装置、介质、设备
CN112769840B (zh) 一种基于强化学习Dyna框架的网络攻击行为识别方法
CN113300977B (zh) 一种基于多特征融合分析的应用流量识别与分类方法
KR102425525B1 (ko) 베이지안 확률 및 폐쇄 패턴 마이닝 방식을 이용한 로그 이상 탐지 시스템 및 방법과, 이를 위한 컴퓨터 프로그램
CN115051874B (zh) 一种多特征的cs恶意加密流量检测方法和系统
Zou et al. Deep learning for detecting network attacks: An end-to-end approach
Lee et al. PRETT: protocol reverse engineering using binary tokens and network traces
CN116094850A (zh) 基于系统状态追踪图引导的网络协议漏洞检测方法及系统
Zou et al. Deep learning for detecting logic-flaw-exploiting network attacks: An end-to-end approach
CN113760753B (zh) 基于灰盒模糊技术的quic协议测试方法
CN113849817B (zh) 一种JavaScript原型链污染漏洞的检测方法及装置
Whalen et al. Hidden markov models for automated protocol learning
Shu et al. A formal methodology for network protocol fingerprinting

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
GR01 Patent grant
GR01 Patent grant