在选择文凭的主题之前,我注意到一种情况很普遍,即在计算机攻击过程中,仅从一侧考虑一个人,即被攻击为脆弱者。
在攻击过程中,每个人都只对犯罪者的工具和行为感兴趣,并且只有在一切都发生后才感兴趣-攻击的幕后黑手以及他们想要实现的目标。
几年过去了(已经差不多六年了),但是这个话题仍然让我感到孤独。
写文凭时,很明显,我大大高估了自己的实力,无法在六个月内为一个人创建如此规模的项目。 至少我没有成功。
缺乏对实际系统的经验也会产生影响,并且在写文凭时会重新考虑一些设计决策,但几年之后我才得出了一些要点。
本文介绍的是设计草案,以及设计过程中出现的缺点和问题。
如果有人对计算机攻击的这一方面感兴趣,并且他可以使用我的微薄成就,我将感到非常高兴。
是的,本文标题中的“黑客”仅以一种严格定义的含义使用-违反信息安全性。
文凭的主题:设计一种系统,用于动态确定违反计算机网络安全性的潜在目标。
总体思路是:当我们以某种方式解决攻击时(例如,使用
SIEM ),然后基于此数据,我们假定入侵者最终想要做什么。
当我写文凭时,很明显,文凭中的某些要点可以而且应该加以改进。
我已经在这里谈论了我的文凭的一部分,或者说是我在写作过程中遇到的问题之一。 我的文章不是最好的,但是由于所有评论员,我在评论中学到了一些对自己有用的东西。
关于布局
首先,我想引起毕业生注意的是布局。
一切都在不断。 将会清楚哪里出了问题以及出了什么问题。 如果不清楚,请提高您的技能。 las,我不是程序员也不是开发人员,在管理方面我不是。 我真的很喜欢发明新东西或寻找创意瓶颈。 因此,原型设计和进行实验几乎完全落在了我的研究生导师身上,这要感谢她。
我没有自己的基础架构。
您可以与某人团结并拼凑铁。 以几台笔记本电脑,一台路由器和此系统上的微型模型为例。
您也可以在免费分类广告的网站上购买,这些广告不是陈旧的,而是活生生的。 有时他们的价格是“ 1000卢布,但可以提货”。
切入点
从哪里开始预测?
为了了解当前发生的事情。
SIEM OSSIM对此负责。 同时,开发人员表示他可以确定攻击并组成CVE攻击链。 为此,我很着迷-我不需要自己确定攻击范围,而我可以直接专注于确定潜在目标。 老实说,SIEM OSSIM如何定义攻击并分配CVE对我来说不是很有趣。 不久前,我试图弄清楚,但找不到具体细节。
另外,
CAPEC可以用于
预测 。 但是,我对使用CVE / CVSS和CAPEC更加感兴趣,我没有给予足够的关注。
但是在此之前,我们会照顾自己喜欢的一切-违规者的分类。
违规者分类
我已经提出了这个主题,但是让我们再次快速地进行一下。
SIEM收集CVE链中的攻击。 从CVE / CVSS中,我们采用AccessComplexity向量。 使用了CVSS的第二个版本,所以现在有三个等级,而不是两个。
莫名其妙,不是吗? 它将变得更加有趣。 而且,上一篇文章不是这种情况。
信息安全是确保信息的可用性,完整性和机密性的过程。
这是普遍接受的定义之一。
但是,如果我们通过违反信息的这些属性对违规者进行分类怎么办?
因此,得出以下分类:
“侦察兵”-其主要目标是公开有关系统的信息,或从中获取信息(数据,文件等)。
“驱逐舰”(Destroyer)-其主要目的是破坏系统或其组件,直至出现故障。
“入侵者”-其主要目的是获得对系统或其组件的控制。
在我看来,这样分配“角色”是五年前的一个好主意。 但是,对我而言,那时似乎是个好主意。
为了按照这些类别对违规者进行分类,我们取自CVE / CVSS ConfImpact(“对机密性的影响”),IntegImpact(“对可访问性的影响”),AvailImpact(“对完整性的影响”)。
在向量中,影响可以采用以下值:对资源无影响(
N ),对资源无部分影响(
P ),对资源的完全控制(
C )。
好吧,总而言之,我们指出类对系统有不同的影响:最不重要的是“侦察兵”,而最重要的是“入侵者”。
因此,获得了SIEM的攻击链后,我们就可以对入侵者进行分类。 在此基础上,我们可以得出关于违规者目标的一些结论。
通过一系列攻击,入侵者只能提高其技能和等级,而不能降低其技能和等级。 低→中→高和侦察兵→毁灭者→入侵者。
分类用于间接预测入侵者的意图。
但是对违规者进行分类可以假设他们正在努力。
也许我们可以说,分类是文凭课程中运作最好的地方。
在上一篇文章中通常会描述所有使我困惑的细微差别。
建筑学
首先让我们看一下解决方案架构。
用于动态确定安全入侵者潜在目标的系统子系统的主要组件是三个模块,分别以三个人的名字来命名,这三个人是斯堪的纳维亚神话般的巫师,他们决定一个人的命运-Urd,Verdandi和Skuld。
在谈到捍卫文凭的“斯堪的纳维亚巫术师”时,我确信这是一个好主意,将在某种程度上帮助“化解局势”。 不行 看来效果是相反的。 但是我毕竟感觉到了。 如果您在phday的某个地方但不是在州委员会之前发言,则这种方法也许是合适的。
不过,仅给子系统命名就可以帮助我理解系统的工作方式。
该系统在功能上分为三个主要子系统:
- 知识库(Urd-过去);
- 信息收集系统(Verdandi-现在);
- 目标预测系统(Skuld-Future)。
DBMS是中心位置,DBMS是知识库中包含的服务器数据库。
假定将存在一种全局数据库,用户可以在其中记录和接收攻击图。 他们应该看起来像这样。
那么如何将图形存储在数据库中并作为图形使用它们呢? 很简单-有
图数据库 。
但是正是在那一刻,我意识到我无法独自做到这一点,而且文凭专门朝着这一概念发展,而不是真正发展和有效的体系。
我需要在SIEM数据库中找到存储攻击的位置,然后编写一个解析器,将该信息传输到图形数据库。
如何填充基础:SIEM检测到攻击,为我提供CVE,我向基础添加了一个新顶点,或者,如果已经有这样一个顶点,则将顶点之间的过渡数量增加一个单位。 如果攻击继续,则添加一个顶点/过渡。
这种方法具有以下优点:
- 自填充,即 无需其他步骤即可创建新的攻击图,因为攻击者自己可以这样做。
- 低冗余度 该图中只有攻击者实际使用的那些攻击图。
该方法的主要缺点是,如果攻击者使用以前未使用过的攻击,则无法预测其行为。
通过向数据库添加以其他方式建模的攻击图,并将转换设置为“ 0”,可以改进此方法。
此外,这种使用图形数据库的方法有两个纯粹的实际困难:
- 写入数据库。
- 从数据库中读取。
录制的问题是攻击的检测。 您需要在什么时候向基地发动进攻?
攻击何时完成? 攻击可能很长。 您在什么时候意识到它已经完成? 突然,入侵者没有必要的技能,就放弃了发动进攻? 而且,如果攻击完成,则发送攻击数据的基础结构可能不再存在。
在过程中? 在CVE上编写每个转换? 好吧,这不是一个不好的选择,但是在我看来,这里也会有陷阱。
读取的问题是需要从服务器获取的估计树木数量。 就资源和交付时间而言,此操作似乎是一场灾难。
您可以尝试不要通过攻击图来为每个转换检测做出选择(稍后会对此进行更多介绍),而是同步整个数据库。 但是我什至无法想象当开始使用实际数据输入时,这个基础将占据多少空间。
除了服务器数据库,我还使用了本地数据库,该数据库将收集有关特定系统攻击的统计信息。
您也可以说不能将脱机攻击添加到数据库中。 网络钓鱼以及实际上所有的社会工程都将绕过我们。 我们只有在杀手已经试图杀死我们时,才能确定杀手沿着杀手链走了多远。
魔力
现在仍然需要继续进行最重要和最有趣的事情。 进行预测。
历史预测算法
在我看来,“统计算法”将是一个更恰当的名称。 但是后来我认为最好不要在文凭中使用“统计”一词。
发明的算法可能是我的文凭中最有价值的算法(再次感谢我用伪代码编写,这要感谢我的文凭主管)。
1.从安全事件中获取CVE_ID,HOST_ID
2. Dgraph = DirectedGraph(CVE_ID)
如果DirectedGraph == 0返回
3. Set_Edges:= DirectedGraph.getOutEdges(CVE_ID,HOST_ID,DirectedGraph.getRoot())
4. Set_Edges:= MAX_EXPLOIT_FREQUENCY(SET_EDGES)
如果(SET_EDGES)== null返回
如果(SET_EDGES.SIZE()> 1)
SET_EDGES:= MIN_ACCESS.COMPLEXITY(SET_EDGES)
如果(SET_EDGES.SIZE()> 1)
SET_EDGES:= MIN_IMPACT_GOAL(SET_EDGES)
对于每个EDGE∈SET_EDGES
edge.Exploit_Probability ==(((edge.AttackFrequency)/(1 + ∑edge.AttackFrequency)))
5.转到步骤3。
这些年来,让我自己阅读该算法并不容易,因此让我们变得简单一些。
我们从SIEM给我们的安全事件中获取主机名CVE-id,并从数据库中选择以接收到其CVE-id的漏洞开头的子树。
在最接近的漏洞中,我们选择使用频率最高的漏洞。
如果存在多个具有相同频率的漏洞,则我们采用访问复杂度较低的漏洞。
如果存在多个具有相同访问复杂度的漏洞,则采用影响力较小的ImpactGoal漏洞(来自分类)。
如果在这种情况下存在多个漏洞,则将这些漏洞视为同等可能性,并使用几种方法来确定潜在目标。
对于每个漏洞,都会计算利用该漏洞的可能性:将我们认为可能的漏洞路径的使用频率除以使用该节点所有传出面孔的频率之和。
完成这些步骤后,我们再次查看我们周围的漏洞,即 我们绕树走到尽头。
历史预测算法的可视化
我们已经有了一定的攻击基础。
我们从SIEM得到了攻击和第一个CVE。
红色表示从SIEM获得的漏洞。 灰色-在算法期间丢弃的漏洞,因为不再有办法解决。 黑色-路径的漏洞和使用频率,仍被视为攻击树中的可能路径。 橙色-路径使用的漏洞和频率,由算法确定为最可能。
在这种情况下,我们可以通过转换数量获得以下潜在CVE。
从SIEM获取下一个CVE。
不要猜 是的,在下一阶段只有两条路径,并且它们具有相同数量的过渡。 我们看一下操作的复杂性。
再次没有猜到。 过渡再次相同。 是的,并且操作复杂度适中。 我们看一下影响向量。
历史预测算法的问题
这是一种额头方法。 不太优雅。 但是,如果没有调查计算机攻击的实际经验,这是我所能追求的最高水平。
还应该提到的是,实际上,最有可能仅使用过渡次数的条件,因为过渡次数重合的可能性很可能很小。
困难也始于这样一个事实,例如,驱逐舰发动了进攻,入侵者发动了进攻。 它们相交于一个CVE。 如果他们更多地遵循毁灭者的道路,那么将无法正确预测切换到此CVE后入侵者的攻击。
还有一点细微差别,在算法描述中,据说计算出了最终目标的概率。 但是我提出的公式在这样的交叉路口严重破损。 概率的计算仍然存在,但是变得更加容易,但是不太可能正确地进行。
而且,最重要的是……当然,我不是研究计算机攻击的专家(正如我已经多次说过的那样),但是有一些事情告诉我,实际上我的数据库看起来像这样。
即 有点混乱。 在我看来,这是一个或多或少的好选择。
这样的数据库或多或少将在同一主机上运行良好(甚至可能无法正确计算应用程序软件中的CVE)。 但是如何正确预测站点之间入侵者的移动? 有必要基于安全审核从数据库中筛选CVE。
解析算法
关键是使用CAPEC / CWE建立CVE攻击数据库。 仅在过渡时,不会有任何信息。
我们从SIEM获得CVE,使用它对入侵者进行分类,然后在CVE数据库中选择与入侵者的类别和技能最对应的那些。
不幸的是,这是我文凭中最不发达的部分之一。
设计摘要
很难评估维护数据库所需的资源。 至少对我来说很难。
将新数据写入数据库以及从数据库下载数据都存在一定的困难。
除了纸上以外,没有以任何方式实施该系统,但是实验必须“手动”完成。 我什至无法想象实现某种演示会花多长时间。 大概,如果我在写文凭时就开始执行,那我就完成了。
违规者的分类是确定目标的附加工具。
系统本身可以充当某些
DSS的数据源。 例如,如果尝试从入侵者发起攻击,然后突然停止,则DSS可以建议进行审核,因为入侵者可以实现其目标。
另外,如果您学会确定是谁发动攻击,则可以尝试确定特定犯罪者的目标。 您也可以尝试做相反的事情-说谁在进行攻击。
该系统不仅需要与SIEM集成,而且还需要与安全分析系统集成。
“历史算法”是可以用来定义目标的工作工具,但有很多警告。 这不是最优雅的解决方案,但是到目前为止。 我们需要继续思考,完善。 或者拒绝并采用完全不同的算法。
使用CAPEC有其优点和缺点,但需要额外的工作。
从概念的角度来看,此系统最令人反感的可能是入侵者没有目的。 他可以使用该系统,因此可以访问该系统。 也许他没有计划这个黑客。 然后他就是不知道下一步该怎么做。 或者开始表现得像鸡舍中的狐狸。
该系统与SIEM检测攻击以及确定正在使用哪种CVE攻击的能力密切相关。 面对0天系统,这三种预测方法都会逐渐消失。 而且您必须忍受它,但永远不要忘记。
该系统使您可以接收有关入侵者的其他信息,因为大多数系统仅提供有关攻击的技术信息,而有关入侵者的动机,目标和技能水平的信息也很重要,而这正是我试图获得的系统。
谢谢您的关注。