赞
踩
攻击图谱在知识图谱的基础上发展起来,在安全领域有着重要作用
0x 01现存漏洞扫描工具带来的问题
①传统漏洞扫描工具功能概述
目前为止有许多可用的传统漏洞扫描工具可以扫描出网络漏洞。一般的,这些工具单独看待扫描到的每个漏洞。因此,对于得到的扫描结果,在安全分析人员人工介入排除虚假情报之后,最终展现给我们的是一组已知的、彼此独立的漏洞。
②问题与缺陷
从单个漏洞角度看,单个漏洞可能不会构成重大威胁,但这些漏洞的组合可能会使攻击者获得关键的网络资源。也就是说,网络上存在潜在漏洞利用路径(也可以说攻击路径)。不幸的是,潜在攻击路径的识别是十分棘手的:
1.人工识别困难。即使对有经验的分析人员来说,也很难识别攻击者是如何将单个漏洞结合起来严重危害网络的。
2. 工具受限。目前可用工具对于攻击者如何利用多台主机之间的漏洞组合来推进网络攻击提供的线索很少。并且,不幸的是,漏洞的相互依赖性和网络的连通性限制了这种分析。
3. 攻击路径形式多样化、数量庞大。由于漏洞本身广泛存在于网络,漏洞自身的庞大数量与多样化形态使得对于较大的网络,要考虑的漏洞组合的数量可能是巨大的。
③新的目标
为此,我们需要一个工具能够对攻击者在网络上的漏洞(攻击)组合进行建模,进而发现导致特定网络目标受损的攻击路径。最终,该攻击路径能允许我们对关键网络资源的真实脆弱性进行评估。
④如何实现?三大阶段!
1.构建阶段。构建阶段需要收集关于已知漏洞和攻击技术的大量信息。从该漏洞/漏洞利用数据库出发,建立一个完整的漏洞利用规则库,并以漏洞等网络安全条件作为漏洞利用的前置条件和后置条件。
2.网络发现阶段。自动收集网络漏洞信息并与漏洞利用规则库关联。
3.分析阶段。将得到的网络攻击模型提交给一个定制的分析引擎。该引擎基于漏洞利用规则对网络攻击行为进行建模,并建立漏洞利用之间的前置/后置条件依赖关系图。结果是一组从初始网络状态到预先确定的攻击目标的攻击路径。
0x 02攻击图建模
①建模思想
所谓“知己知彼,百战百胜”,从攻击者的角度看待漏洞触发与利用,能够建立更贴近现实攻击的数学模型。攻击者在对企业级网络进行渗透时,攻击者通常需要从网络的某一个边界节点开始,逐步渗透到网络中的其他节点,最终到达目标节点并获取所需的信息。该过程中,攻击者需要多次通过利用漏洞来获取节点上的权限。因此,对某一网络进行建模时,以该网络在当前配置与状态下可能具有的攻击者能利用的条件(安全条件)作为节点,形象刻画当前系统的所有可能安全突破点。每个安全条件都有个初始值(1表示成立,0表示不成立),初始值为1的安全条件就是攻击者着手的地方。对往后攻击渗透进行的模拟表现在安全条件的变化上:当攻击这利用成立的安全条件发动攻击时,攻击结果会导致获得新的权限,因此反映在模型上就是新的安全条件得到成立。
②建模概述
基于网络本身的安全条件对网络进行建模,以各安全条件为节点,将攻击者的原子攻击(exploits)作为安全条件之间的转换规则。在模型形成之后,能够通过一定的算法计算能导致攻击者获得给定网络资源的原子攻击的组合,即发现潜在的攻击路径。
注:原子攻击可以理解为不可拆分的单位漏洞。
③建模过程
我们将网络的各种安全条件建模为二进制变量,这些值代表攻击者成功是否具备了所需的条件。例如,某个变量ai表示某个特定软件组件的脆弱版本,则ai=1表示该组件存在,ai=0表示该组件不存在。条件的取值存在一定的限制:在单调性的假设下,一个条件可以由假变真,但不能变回假。也就是说,一旦某个条件促成了攻击的成功,该攻击条件就一直存在。接着,我们对某些存在的攻击(漏洞)进行建模,将某个存在的攻击建模表示为:Sj=Sj(ai1,ai2,…,aik),其中Sj可以看做由多个条件构成的布尔函数。为了简单和不失一般性,
Sj看做一个简单的“与”连接运算函数,即Sj(ai1,ai2,…,aik)=ai1∧ai2∧…∧ai1k。也就是说,当多个安全条件同时成立时,原子攻击可以被触发。如果一个漏洞利用涉及到“或”连接运算(例如,一个脆弱程序的多个版本),我们只需将“或”部分划分为单独的连接。
原子攻击Sj的成功触发将会导致一些新的条件改变,于是,新的原子攻击被激活,如此继续下去,原子攻击最终会组合成为攻击链或者攻击图以达到最终目的。
④模型要求
1.新鲜性要求:为了跟上不断发展的威胁和漏洞,需要不断努力收集有关网络攻击的信息, 知识库中的攻击规则集必须是全面的和最新的,因为已发现的攻击路径将只包含那些实际上包含在知识库中的攻击。一旦收集到与网络攻击相关的原始信息,我们就根据利用的先决条件/后置条件对其进行建模。
2.建模人员需要具备的知识要求:由于攻击条件可以是任何可能影响网络安全的通用属性,这些属性往往会被人们忽略。因此,为了得到全面而准确的结果,这种建模需要对攻击者策略、技术和工具功能有很好的理解。
3.模型的灵活性要求:模型必须针对各种漏洞的开发而演化。下图的模型结构足够灵活,可以处理各种漏洞类型和网络配置变化。例如,我们实现了流量嗅探、密码捕获和破解、文件传输、命令shell访问、X窗口访问、安全shell
(ssh)公钥身份验证、缓冲区溢出(授予更高的用户特权)、端口转发、机器身份欺骗和拒绝服务攻击。
⑤基于攻击图模型分析攻击路径
有了模型之后,就可以在模型的基础上确定漏洞是怎么被组合利用起来影响网络的脆弱性,也即在攻击图基础上找到攻击路径。举个例子,假设某个安全条件目标a(初始值a=0)被指定为攻击目标。如果能通过某个算法找到一系列的漏洞利用Sj1,Sj2,…,Sji使得目标a成为现实(即a=1),那么一条隐藏攻击路径就揭示了出来。其中:特别值得注意的是最小攻击路径,这样路径中的所有攻击都是实现攻击目标所必需的。
攻击路径可以帮助网络管理员确定加强其网络的最佳方式。为了确保完全的安全性,必须考虑所有的攻击路径。
0x 03 面临的挑战
由于漏洞报告社区没有定义用于指定此类语义的标准正式语言,因此很难自动捕获利用前置条件和后置条件所需的语义,自动填充建模的漏洞集要困难得多。相反,报告漏洞的数据库通常依赖于自然语言文本来描述漏洞和利用漏洞的方法。我们需要找到一种方法自动实现语义捕获。
参考文献
1.Jajodia,
S., Noel, S., O’Berry, B.: Topological Analysis of
Network Attack Vulnerability. In: Kumar, V., Srivastava, J., Lazarevic, A.
(eds.) Managing Cyber Threats. LNCS, pp. 247–266.
Springer (2005)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。