1.1metasploit简介
Metasploit是一款非常流行的渗透测试框架,里面包含了大量知名软件漏洞利用工具,其payload利用效率非常高效,并且还支持用户自定义开发漏洞利用模块。在使用metasploit时需要设置一些比较重要的参数:漏洞利用模块(exploit模块),不同的漏洞需要选择不同的模块进行利用,而同一服务,往往存在多种漏洞,为了验证漏洞存在,往往需要设置不同漏洞利用模块进行测试。target,每个exploit模块都需要设置很多参数,其中target为比较重要的参数(metasploit会设定一个默认值),代表不同的操作系统类型,如图1所示,target值为0代表设定目标的操作系统为WindowsSP4。图1、metasploit中exploit模块下target参数含义样例[3]payload,该参数为exploit模块中需要设置的另一个重要参数(也会有默认值),意为攻击进入目标主机后需要在远程系统中运行的恶意代码,其中,Shellcode是payload中的精髓部分,攻击者可以通过shellcode建立与目标系统的shell连接,方便地控制目标机。图为payload样例图、metasploit中exploit模块下payload参数含义样例[3]以上3个参数为DE框架在运用强化学习算法进行渗透测试时所需选择的重要参数。1.强化学习算法简介
强化学习是机器学习中的一个领域,强调如何基于环境而行动,以取得最大化的预期利益,是除了监督学习和非监督学习之外的第三种基本的机器学习方法。其基本框架如图3所示,基本流程为:智能体(agent)通过观察环境(Environment)的状态(State)做出行动(action),该行动会作用于环境,改变环境的状态,并且产生相关联的奖励(reward),智能体通过观察新的状态和奖励来进行下一步动作,由此循环。在这个过程中,智能体会不断得到奖励(有好的有坏的),从而不断进化,最终能以利益最大的目标实施行动。图3、强化学习基本框架[4]强化学习有几大要素,这些要素的定义至关重要,不同场景下,要素的定于也不尽相同,而这些要素的合理定义往往也决定强化学习算法能否生效。具体来说,想要使用强化学习来求解一个问题,首先需要定义如下3大要素:State(状态空间),state通常是算法的输入,包含agent作出action所需要的所有信息,需要满足马尔科夫性质,即agent可以仅根据当前做出动作,无需考虑过去的状态。Action(动作空间),action一般就是算法的输出,action是agent能够对环境产生影响的手段,所以一个任务的action设置的最基本要求是能够对environment产生有效影响。Reward(收益),reward是算法学习的指导,reward的设置往往决定了算法的最终效果是否理想,因此如何有效的设置reward也成为了强化学习应用的一个重要问题。在对以上3大要素进行合理定义后,算法(如A3C算法)才算有使用的基础。由于强化学习算法众多,也不是本文的关键,笔者将不再展开论述。总之,强化学习任务中,3大要素的定义至关重要,定义越合理,问题的解决程度就越高。温馨提示:读者可以通过对DE框架对3大要素的定义,判断其合理性。二、自动化渗透测试与DeepExploit框架自动化渗透测试随着安全市场的不断扩大,渗透测试的需求也在不断增长,有研究预估到05年,全球渗透测试的市场份额将会达到45亿美元(00年17亿美元),相应的,渗透人才也极度短缺[1],在这种背景下,国内外很多很多公司都有研发自动化渗透测试工具来满足市场需求、缓解人才短缺的压力。自动化渗透测试,顾名思义,即自动化完成渗透测试的过程。从内容上讲,一般来说人工渗透测试需要包含:信息收集、漏洞探测、漏洞利用、权限维持、后渗透、生成报告等常规步骤,一般市面上自动化渗透测试产品也都包含这些功能,从能力上讲,自动化工具需要回答两个核心问题:1.自动化工具能发现多少风险点;.自动化工具对渗透测试的效率提升有多大。这两个问题的解决程度决定了自动化工具的优劣。在渗透测试的过程中,“漏洞探测”往往是最耗时的一步。为了发现目标系统的安全问题,渗透测试工程师一般先用漏扫工具对目标系统进行扫描测试,若未发现问题,则需要进行长期的人工渗透过程。理论上讲,为了提升渗透效率,那么自动化渗透的核心价值应体现于现实中最耗时耗力的部分(漏洞探测)上,将上述长期的人工渗透过程进行自动化。但是就目前来讲,大部分自动化渗透产品的做法是简单地将漏扫的结果与相关的利用工具相结合,从而达到自动化渗透的效果,而“人工渗透的过程”并未有效实现自动化。自动化渗透工具能多大程度解决上述问题呢?我们通过一个开源的自动化渗透框架DeepExploit来分析自动化渗透测试领域当前的前沿进展(DeepExploit应该具有代表性)。DeepExploit框架简介DeepExploit是一种基于强化学习的自动化渗透框架,由日本的一家名为MBSD的公司研发,在自动化渗透方向为大众所熟知,在github上的star数量高达+,其开发人员曾在很多知名大会上介绍过该工具,如:DEFCON,BlackHat等,这些演讲进一步拓展了该工具的知名度。DeepExploit底层使用Metasploit进行渗透,使用强化学习技术来提升渗透效率,可以达到“给定目标IP,输出shell”的效果,除了“权限维持”功能外,其他步骤均已实现全自动,根据github页面介绍,特点如下:高效渗透。利用机器学习,最佳情况下,只需一次利用便可成功getshell;深度渗透。可以内网扩散;自学习。利用强化学习进行自学习,无需准备数据;学习时间快。利用A3C算法加速学习;强大的情报收集能力;包含:端口扫描,服务及版本识别(包含nmap识别,机器学习识别,爬虫识别)针对这些特点,本文将给出详细的分析,以向读者展现该工具的适用性与实用性。三、DeepExploit框架深度分析本小节中,我们首先介绍DE框架的整体运行流程,然后对照源码,描述其核心逻辑,最后总结DE框架的优缺点,提出改进方向。3.1DeepExploit框架流程分析
我们先来通过转载请注明:http://www.0431gb208.com/sjszyzl/193.html