多步攻击发现方法研究现状调研

目标

已有一些单步攻击,寻找这些单步攻击中可能包含的多步攻击链. 看看有没有能够参考的多步攻击发现方法. 总结分类.
找一些多步攻击发现相关的文献,功利一些,看中文文献为主,英文文献为辅,目标是毕业论文,又不是SCI - -。还可以看看杀伤链相关的,有哪些主流方法。搭积木式的文章比较多。

背景知识

网络攻击过程

分析和归纳已发生的网络攻击事件发现,网络攻击行为主要包括目标系统探测分析、实施攻击和踪迹隐藏。据此,对网络攻击方法进行层次化分类,大体可分为目标探测、漏洞扫描、权限获取、提升权限和踪迹隐藏。整个攻击过程的关键阶段是锁定目标和获取权限阶段。一旦攻击者锁定目标获取权限,即可通过系统漏洞提升访问权限,窃取信息或者危害系统安全。在实际运用过程中,攻击过程往往结合一个到多个网络攻击方法(如缓冲区溢出、SQL 注入等)进行。1

告警关联方法

很多文献中的关联分析,其实是对告警的关联分析。告警关联方法大致分为四类,分别是基于专家知识的告警关联方法、基于频繁模式挖掘的告警关联方法、基于属性相似度的告警关联方法和基于因果关系的告警关联方法2。各个方法的优缺点也很明显,但首先要注意到,他们是对告警进行关联的,告警本身就有冗余大,关联性弱的特征(分析的对象就和我的有一定的差别。具体实现也有差别,不一定能套用)。
其中,基于频繁模式挖掘的方法,是不是正好和下面的频繁项集的方法对应上了。下面挨个分析各种方法的可行性。
基于专家知识的方法:知识图谱看起来和专家知识关联较大,可专家知识的缺点太过明显,知之为知之,不知为不知,先验性太强。其实从这方面考虑也不是不行,但一定要在这个硬伤上有所补足。
基于频繁模式挖掘的告警关联方法:此方法假设同类多步攻击的告警序列模式具有相似性且频繁出现,采用滑动时间窗口对告警序列进行切片,对告警序列集合进行频繁模式挖掘并将得到的频繁序列视为多步攻击链,从而达到告警关联的目的。我觉得在我的场景下,由于单步攻击的数量已经不具备“数量非常大”的特征,恐怕不能再在此基础上进行挖掘了。但如果非要使用这个方法的话,也可以,只是预想一下,恐怕效果不行。主要还是因为“单步攻击”和告警差别太大了。有趣的是,该文献中提到了所谓“超级告警”的概念,我不如把我的问题想成:如何对超级告警进行关联?超级告警和一般的告警有什么区别?内容究竟丰富了哪些?我的“单步攻击”应该和“超级告警”更接近一些。
基于属性相似度的告警关联方法:此方法首先定义告警间的属性相似度函数,然后通过设定告警的相似度阈值来达到聚合告警的目的。这个听起来比频繁模式挖掘靠谱一些,“单步攻击”的各个属性还是不少的(即便不够多,还可以再加)。这种方法要考虑的主要问题是,属性相似度函数该如何选取?相似度阈值该如何设置?同样,该方法和知识图谱差得有点远,套不上的感觉。缺点是,当多步攻击场景中各攻击步骤之间的属性相似度较低时,关联性较差(挺正常的吧?)。
基于因果关系的告警关联方法:认为一个完整的攻击场景是由多个攻击步骤组合而成,多步攻击的各个攻击步骤之间具有因果关系,将单步攻击的前一步视为其发生的原因(完成单签攻击步骤所需要的前提条件)、将后一步攻击视为当前步骤逇结果(当前攻击步骤所导致的后果)。其实这个方法仍然依赖专家知识,话说知识图谱的方法依赖专家知识也无可厚非吧(硬伤:你只是套了层知识图谱外皮的知识库罢了)。下面的“基于本体的方法”和这边的关联比较大。
现在要选,肯定不会是单纯的专家知识的方法,频繁模式挖掘也是大概率不行(顾忌很明显了),重点关注一下后两种。
该文献还指明了告警关联的重点研究方向:降低IDS误报、冗余告警及漏报对多步攻击关联带来的负面影响,如何尽可能少地使用专家知识对IDS告警进行关联。(我不能和研究方向背道而驰,专家知识不是不用,是“尽可能少”)

文章中的一些现有方法

  1. 基于本体的方法
    涉及本体建模,知识图谱和本体有关联,从这个角度来说,还是有套用的价值的。其原理约莫是使用Protege定义owl,设定规则,利用Protege推理机进行推理,按照文献11所说的,这种基于本体的网络安全模型可以自动发现网络系统潜在的被攻击路径和方法。
    优点:很好地结合了本体模型,利用本体推理机的功能。
    创新点:提及了APT,吹了一些对新型攻击手段的思考,本体推理机。
    限制:需要使用SWRL(Semantic Web Rule Language)设计网络攻击规则(可以理解,但是这种限定攻击场景下设计的网络攻击规则,是不是本身局限性太强了)。比如应用到我们的多步攻击场景,我就设计这样的规则,系统中存在可联网主机,攻击者通过系统漏洞通过响应的攻击手段攻击目标主机,则目标主机被攻破,攻击者成为内部攻击者(外部攻击规则 - -那几个被注入DDoS攻击工具的机器,这么一看这个攻击规则还是有一定的通用性的)。文献中举例的规定了两个攻击规则,分别是外部攻击规则和明文协议远程登录漏洞攻击规则。如此,又想到了另一个问题,和我设想的“单步攻击”特征子图一样,这里的复杂攻击规则的来源又是怎样的?是不是有点“专家系统”(虽然有推理功能),或者是“存储先验知识”的意味?
    总结:可以参考一下,易于和知识图谱结合。
  2. 数据挖掘的关联分析方法(频繁项集)
    涉及关联规则挖掘3。关联规则的形式为 A → B ( s , c ) A\to{B(s,c)} AB(s,c),其中A是规则前件,B是规则后件,s和c是规则度量的两个重要指标,前者称为支持度(或频繁度),表示规则在数据库中出现的频率,后者为置信度,表示在前件发生前提下后件发生的概率。就其名字来说,“关联分析”,似乎和我们的目标很契合,但是“频繁项集”对我的场景来说,是不是没什么作用?
    限制:文章中提及的,对于支持度和置信度的阈值设置问题,这个阈值影响很大,不好选取。文中说的是多事件序列的关联规则挖掘方法,对我们的场景来说,这个有什么意义?从图中拿出事件序列的频繁项集,频繁不代表这就是攻击事件啊。
    总结:不太好参考,建议忽略。
  3. 马尔科夫链和Apriori频繁序列挖掘算法搭配使用
    这是文献4提出的方法。该文献关联分析的对象是入侵告警,认为复杂多步攻击产生的告警在序列中经常间隔出现。先利用一阶马尔科夫性质建立告警关联模型,定量表示攻击者选择不同攻击路径的可能性。方法是:利用Apriori频繁序列挖掘算法得出频繁告警2-序列的支持度,将归一化的序列支持度作为马尔科夫链的一步转移概率。
    这个方法和方法2有重复的地方,都应用了频繁序列挖掘方法。该文献的实验数据集和我选用的相同,但他的直接分析对象是从该数据集产生的告警,而我的是我匹配出来的单步攻击。我认为,分析对象有这些差别,第一,我的分析对象相对来说,“冗余较少”,是基于行为的,而他的分析对象是由IDS直接一步产生的告警,我可以在得到“单步攻击”分析对象的过程中,就先作一步加工,先达到所谓的“告警聚合”的效果;第二,单步攻击包含一系列属性(信息量比较大但是数量少),可视为很大的对象(object),可以理解为数量上不是特别多,和告警的数量甚至不在同一个数量级上,另外可以在属性上做文章,比如方法1中提到的那种攻击已经属于比较危险的了,或者是把单步攻击对到“杀伤链”上去(大概是一种描述性质的信息- - 有这个单步攻击,我对这样的单步攻击有一些定性的认识),而告警信息数量庞大,更适合作所谓的数据挖掘。(这样一想,频繁项集的方法怎么都不太适合我的应用场景)。
    该文献的方法比较突出的几点:第一,定量(得到所谓的“攻击告警的关联准确率”);第二,沿用马尔科夫链方法,根据频繁项集挖掘算法的结果确定转移概率。
    综合思考一下,这种正是所谓的“笨办法”,如果我要沿用这种方法,就只取马尔科夫链的部分。(貌似只是马尔科夫链,不是隐马尔科夫链)
    该文献其实还是那种“拼凑大法”。对比一下,我觉得我关联的对象不是告警,已经是很大的创新了 - -。
    结论:频繁项集的部分肯定不参考了,马尔科夫链的部分是底牌了,尽量不参考。
  4. 基于多因素的告警关联方法
    此方法来自文献2
    首先,“多因素”的考虑是很合理的,搭积木嘛,必然是多因素。其次,从摘要来看,这篇文章的工作主要是两部分,第一部分是告警预处理,第二部分才是告警关联(关联的当然是经过预处理的“超级告警”啦)。该文章中的“多因素”指的是时间、IP地址、告警类型等因素,其实大差不差。
    个人觉得不合理的地方:设置了“高级告警之间的时间间隔”的限制,实际上,APT攻击的时间间隔可能很长很长。这里是假设,可以理解了。
    结论:可以借鉴。在相似的基础上找不同,在不同的基础上找创新。

  1. 魏忠,张保稳.一种基于本体的潜在多步网络攻击发现方法[J].通信技术,2018,51(02):419-424. ↩︎ ↩︎

  2. 吴东. 基于数据挖掘的告警关联关键技术研究[D].贵州大学,2019. ↩︎ ↩︎

  3. 何占军,邓敏,蔡建南,刘启亮.顾及背景知识的多事件序列关联规则挖掘方法[J].武汉大学学报(信息科学版),2018,43(05):766-772. ↩︎

  4. 李洪成,王成,王春雷,袁峰.面向间隔告警的多步网络攻击定量关联方法[J].计算机工程与设计,2019,40(11):3073-3078. ↩︎

你可能感兴趣的:(调研)