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)是一些具体的攻击实例。包括实例的属性、前提和攻击的结果。
整个程序执行的先后顺序决定攻击实例的执行顺序。
一个攻击目标的完成依赖于若干个子目标的完成.子目标之问的关系可以是“与”、“或”两种关系之一。一个攻击目标的标识符是一个以字母开头的字母和数字的字符串。由攻击语言定义的攻击称为攻击模式.多个攻击模式的集合称为攻击模式库。对于关系是“与”的子目标,只有其所有函数返回值为“真才能保证整个目标值为“真”,即该子目标任务完成:同理对于“或”关系的子目标,只要任何一个子目标函数返回值为“真”即可保证该子目标任务的完成。
当前的入侵向协作式、多层次化、大规模化发展,一次入侵往往并不是一个简单孤立的动作,通常是由一连串有逻辑关系的入侵动作构成,使用基于攻击树的攻击模型,有利于检测入侵及预测下一步可能的入侵活动。