关于网络安全检测的攻击树模型研究

  来源:网络    时间:     
[关键词]工业设计  

                               作者:廖晓勇 连一峰 戴英侠
  论文关键词:攻击树  攻击规范语言  场景分析
  论文摘要:大规模网络攻击行为往往是非常复杂的。通常需要多种攻击方法和多个攻击实例共同完成。该文采用攻击树模型来模拟攻击行为.并提出了一个基于攻击树模型原理的攻击规范语言。使用这种模型,可以使攻击的过程更加清晰更加有条理,同时也为网络攻击的自动实现提供一种理论依据。
  1引言
  随着互联网的大规模普及和应用,网络安全问题也随之呈现在我们面前。病毒渗透、系统漏洞和黑客攻击等威胁层出不穷,已经严重地影响到网络的正常运行。网络规模的日益庞大,给网络安全防范人员提出了更加严峻的挑战。人力、物力和财力的有限性决定了不可能完全地依赖手工方式进行安全分析防范所以如何采取更加快捷方便而且行之有效的方法进行攻击分析已经成为网络安全的重要课题。本文引入攻击树模型来模拟网络攻击过程,并给出了一种基于攻击树原理的攻击规范语言,为计算机自动攻击检测打下理论基础。
  2攻击树
  攻击树是用来表示攻击过程的.它使用树的结构来模拟攻击的方法和攻击实例。树的根结点表示最终的入侵目标,各节点则表示取得上级节点入侵目标的各种攻击方法.节点之问的关系可能是“与”、“或”两种关系之一,节点序号的先后表示攻击顺序.叶结点则表示在不同环境中具体攻击事件的实例目前攻击树以各种形式存在,一般通过检测企业网络安全信息,将这些信息精炼出来,并使用攻击树加以详细说明。所使用方法就是将攻击者能够引起系统安全问题的方法描述为树的节点(其中具体攻击的实例是叶节点),这样,通过细致地对整个企业网络安全事件进行实例化,通常会得到一棵确定的攻击树或由多棵攻击树组成的攻击森林。而且森林中每棵树的根节点描述成能影响网络运行的一次安全事件,每棵攻击树列举并且详细说明能引起安全事件发生的各类方式方法。每条穿过一棵攻击树的路径代表一次对网络系统的具体攻击过程。
  3结构定义和语义说明
  任何攻击树都是由下列两者中一个或多个结构组成的:
  “与分解”树:一种攻击目标,取得所有攻击子目标的实现才能导致目标的实现。
  “或分解”树:一种攻击目标,所有子目标中某一目标或多个目标的实现才能导致目标的实现。
  攻击树可以用图示法和原文法来描述“与分解”树图示表示如图1和原文表示如图2所示:
  
  从上面我们可以看出,为了取得攻击目标G。,需要攻击者取得从G到G的所有目标。“或分解”树图示表示如图3和原文表示如图4所示:
  
  从上面我们可以看出,为了取得攻击目标G。,只要攻击者取得从G到G的任何一个目标或多个目标即可。攻击树包含任何“与分解”树和“或分解”树的组合。通过以一种深度优先的方式从叶节点到达根结点的一次“穿透”来表示成功攻击行为(其中遇到“与”关系的节点时需要包含该节点所有的儿子节点)。例如图5所示为一个攻击树模型:
  
  通常,当攻击实例产生时.以叶节点的目标的形式加到攻击行为的攻击树末端上。“或分支”表示任一子结点目标的取得都可以导致父结点目标的取得.“与分支”表示所有子结点目标的取得才可以导致父结点目标的取得。攻击树的中间节点不在入侵场景里出现.而只是其子节点的目标,因为它们总是被其子节点加以详细说明。
  我们对一次某部门web Server的攻击用攻击树来模拟说明,原文表示攻击树如图6所示:
  
  可以看出.取得目标成功需要5个分支,而且各个分支又有子分支。攻击树将一些抽象的攻击具体化和实例化,使一个复杂的攻击行为能分解成许多攻击分支。这样.除了叶节点之外的其他节点可以不用详细考虑,而只需要寻找一条可行的从根结点到叶节点的路径就可以了。
  与其它攻击方法相比较.这种方法允许开发者更多地关注在关于深度优先方面探索出一条攻击路径,在这种目标的指导下寻找有用的入侵行为。总之,精炼攻击树的分支产生新的分支,使得每一个节点都能用更加容易的方法来实现。图6的攻击过程用攻击树表示如图7所示。
  
  由上述攻击树图示可以看出,目标GO是取得WebSevrer的最高权限,可以实现成功的攻击场景有如下几种方法:
  
  4基于攻击树的攻击规范语言
  使用攻击树可以很好地模拟大规模的网络入侵行为。根据攻击树的原理.定义能够模拟攻击树攻击过程的攻击规范语言,为计算机自动化攻击检测打下基础。Tidwell[]在此基础上定义一个攻击规范语言范式(Attack Speciifcation LanguageBNF),但是,他所定义的语言规范过于复杂,我们定义更加简洁、清晰、易于表述的语言模型范式如图8所示,每个模型范式应该包含4大部分:
  属性(properties):各个目标和子目标的属性。包含description(攻击描述)、CVElink(CVE相应编号)、version(版本号)等描述信息。
  前提(preconditions):表示完成该攻击必须先完成的子目标.对应攻击树上它的子结点,子目标之间的关系只有“与”和“或”两种关系如果没有子节点,那么前提就是指攻击所需的条件(系统漏洞,脆弱性等)和攻击所需的方法。   子目标(subgoa1):攻击实例。表示其父节点的具体攻击形式.而且同层的子目标应该是严格的“AND/OR”关系,节点的序号表示攻击的先后顺序。后果(postcondition):指示系统和环境的状态改变,也表示攻击的结果。
  基于这种语言就可以对攻击场景进行描述,如果某攻击的子目标与前提都得到满足(被实例化),则判断该攻击为“真”,利用这个原理就可以实现基于攻击模型库的入侵检测,前提之间的关系也只考虑“与”和“或”两种关系。
  为了更好地表示网络入侵,重点考虑子目标对父目标的影响.并使得子目标之间的关系只包含“与”、“或”这两种关系。在此思路上引入了我们定义的攻击说明语言。其中OR和AND是攻击语言保留关键字运算符。
  OR:子目标是“或关系”
  AND:子目标是“与关系”
  
  从上面递归描述我们可以看到,攻击规范语言主要包括:
  字母表(alphabeta~z和A~Z)和数字表(numeral0~9)组成整个语言的标识符:
  变量和攻击函数(AttackFunction)标识符是由字母(alphabet)和数字(numera1)或者其组合而成;函数包含属性、前提和后果3个参数;
  目标(Goa1)是由子目标(SubGoals)函数的若干“与(OR)和“或(AND)”组成;
  若干“与分支(andExpr)”函数和“或分支(orExpr)”函数组成整个攻击过程:
  叶节点分支(grpExpr)是一些具体的攻击实例。包括实例的属性、前提和攻击的结果。
  整个程序执行的先后顺序决定攻击实例的执行顺序。
  一个攻击目标的完成依赖于若干个子目标的完成.子目标之问的关系可以是“与”、“或”两种关系之一。一个攻击目标的标识符是一个以字母开头的字母和数字的字符串。由攻击语言定义的攻击称为攻击模式.多个攻击模式的集合称为攻击模式库。对于关系是“与”的子目标,只有其所有函数返回值为“真才能保证整个目标值为“真”,即该子目标任务完成:同理对于“或”关系的子目标,只要任何一个子目标函数返回值为“真”即可保证该子目标任务的完成。
  当前的入侵向协作式、多层次化、大规模化发展,一次入侵往往并不是一个简单孤立的动作,通常是由一连串有逻辑关系的入侵动作构成,使用基于攻击树的攻击模型,有利于检测入侵及预测下一步可能的入侵活动。
  对于上面例子中某部门Web Server的攻击树模型,可以看出叶节点一共有1O个(包括G1).相当于具体攻击实例也有1O个,在这里用函数表示.给出的攻击规范语言如图9。从图9可以看出,每个攻击函数都包含属性.前提和结果3个参数,属性表示攻击的方法和攻击所利用的参数(漏洞、脆弱性、攻击手段等等);前提是攻击所必须的条件;后果表示攻击的成功与否,成功则返回值为1。从图9可以看出,前一次攻击的返回值作为后一次攻击的前提,这样能很好地反映攻击的有序性。因为如果前一次攻击不成功,后续过程将无法进行,即攻击不成功。
  
  5结束语
  本文从分解的观点来诠释攻击的方法。攻击的目的是为了更好地防御.所以。研究的目的是为了当出现恶毒和突然的攻击时,企业系统的正常运行能够受影响。在现实的攻击过程中,往往攻击的规模和难度是相当大的,个人力量的有限决定需要更加先进的攻击解决方案。攻击树模型提供了一种很好的解决方法。每棵攻击树列举并且详细说明一种能取得攻击目的成功的方式。通过将这些简单而平常的攻击方法组织起来,构造出完整的攻击树模型,精练各个关键攻击节点,并用攻击规范语言进行描述,利用人丁智能的相关技术,建立实用可行的自动系统攻击机,达到攻击自动化和智能化的目的。我们相信,以前大规模攻击的历史教训将为攻击树的建立提供大量而且重要的数据。当然,目前的工作至少应该包括:
  使攻击树更加精练,这样用它来进行系统分析更加容易:
  进一步确认这种方法的可实践性:
  寻求广泛的攻击方法来完善攻击树:
  使攻击树模型更加正式且利于分析;
  如何将攻击语言使用计算机语言来实现:
  确定合适的自动化方法来支持攻击树的模拟攻击过程。

文章搜索
本类热门
本站所列资源部分收集自网上,本站与内容的出处无关,内容版权皆属原作者所有,如果你认为侵犯了您的版权,请通知我们,我们立即删除.