【读书笔记】网空态势感知理论与模型(七)

通过网络级对象依赖关系揭示0Day攻击路径

1. 研究动机

       0Day攻击是攻击者和防御者之间信息不对称的结果。赛门铁克研究人员认为,典型的0Day攻击平均隐藏312天才会被觉察。

受到SKRM模型启发,Patrol系统以全局视野来调查在某一个路径上的0Day攻击行为。从攻击者到最终攻击目标的路径,也就是被攻击受控的主机上的一个漏洞攻击利用的序列。这个序列中包含至少一个0Day漏洞攻击利用时,就是一个0Day攻击路径。

        一个0Day攻击路径通常包含对应于已知漏洞攻击利用的部分,而普通的IDS设备可以发现非0Day漏洞利用并告警,顺着攻击路径对被检测到的组成部分进行前向或者后向的追踪,则会发现0Day攻击。基于这种思路,识别0Day攻击路径比单独检测0Day攻击利用要切实有效的多。

        由于0Day具有未知的特质,因此0Day攻击路径问题实际上是一个网空态势感知问题的实例,本质上是为了打破攻击者和防御者直接的“信息不对称”,即揭示出包含路径上0Day攻击利用上下文环境。

2.方法和模型

AG通过将已发现的漏洞攻击利用关联至通向特定目标对象的攻击序列以生成攻击路径。所得到的攻击路径本质上是相邻漏洞之间因果依赖关系的模型。但是AG无法描述未知漏洞,也就不包含0Day攻击路径。

0Day攻击路径问题的另一个候选方案是告警关联方法。将孤立的告警关联起来,形成潜在的攻击路径。是否能够暴漏0Day攻击路径,取决于是否能够发出告警以指出对0Day漏洞的攻击利用。这种分析方法在很大程度上依赖告警,会在基因上继续此类检测技术的高误报率。

Patrol采用不同的策略:首先尝试构建一个超集的图,识别出隐藏在其中的可疑入侵传播路劲作为候选的0Day攻击路径,然后再在这些路径中识别高度可疑的候选路径。而不是先收集漏洞或者告警信息,然后将它们关联到路径中。

这种思路基于4个关键认知:

(1)作为程序与OS的交互的唯一方式,系统调用被发现是难以避免且攻击中立的。

(2)从系统调用可疑生成网络级的超集图,这个图也是攻击中立的。

(3)超集图本质是一个路径的集合,必然包含0Day攻击利用路径。该集合与AG中的逻辑关联不同。通过合适的方法取出它的子集作为候选的0Day攻击路径。(关键在合适的方法!!!)

(4)候选的0Day攻击路径显露出这些路径上的未知漏洞攻击利用,为识别0Day漏洞攻击利用指明了方向。

Patrol提出从系统调用跟踪数据来构建超集图,即网络级SODG依赖关系图(System Object Dependency Graph,SODG)。

为了构建网络级SODG,首先为每个主机构建SODG,系统调用被解析以生成OS对象及其之间的依赖关系。

主机系统对象依赖关系图

如果第i个主机的系统调用跟踪数据用Σi表示,则该主机的每主机SODG为有向图G(Vi,Ei)。

其中,

Vi为节点的集合,初始化为空集Φ。

Ei为有向边的集合,初试为空集Φ。

如果一个系统调用syscall∈Σi,dep是根据依赖规则从syscall解析出来的依赖关系。

其中dep∈{(src->sink),(src<-sink),(src<->sink)},src和sink是OS对象(主要是一个进程、文件或socket),那么Vi=Vi∪{src,sink},Ei=Ei∪{dep}。dep的开始时间和结束时间继承制syscall的时间戳。

若(a->b)∈Ei且(b->c)∈Ei,那么c的传递依赖于a。

网络级系统对象依赖关系图

如果第i个主机的每个主机SODG表示为G(Vi,Ei),则网络级SODG可以表示为∪G(Vi,Ei)。

Patrol系统将网络级SODG中的可疑入侵传播路径(Suspecious Intrusion Propagation Path,SIPP)识别为候选的零日攻击路径。

虽然SIPP的规模较SODG小,但它描述了几乎所有的0Day攻击路径。0Day攻击路径脱离SIPP的唯一可能是攻击者只对路径上的0Day漏洞进行攻击利用,这是非常罕见的。所以,只要有SIPP存在,其中就会有一个0Day攻击路径。

SIPP是SODG的子图,该子图中所有的对象要么具有来自出发节点的有向边,要么具有指向触发节点的有向边,其中这些触发节点是由于涉及告警而被管理员发现的OS对象,而这些告警是有诸如Snort、tripWire等系统值守已部署的探针所产生的。

Patrol系统提出了一种名为阴影指示器检查的方法来识别SIPP中高度可疑的候选零日攻击路径。

3. 系统设计

Patrol采用模块化设计,第一个组件“系统调用审计和过滤”是动态工作,后续的3个组件(SODG图像生成、SIPP识别、阴影指示检查)均为离线,避免对个别主机造成影响。

3.1 系统调用审计和过滤

系统调用的审计应满足一下要求:

(1)审计的对象是所有存活进程,避免遗漏;

(2)为了识别跨主机的可疑路径,网络范围内的系统调用审计必不可少。在待审计的列表中包含所有主机,并且审计主机之间的socket通信。

(3)经根据进程ID或文件描述符来表示对象并不准确,这些信息可能被系统重用。应当保留所有OS相关的信息,以充分准确地标识操作对象。

(4)Patrol还关注被调用或返回的系统调用时间信息的记录。因为后续需要利用时间关系来确定系统调用是否涉及入侵传播。

        然后,系统调用跟踪函数从各个主机被送至中心分析系统。在此之前,需要对系统调用进行过滤,以避免在数据传输和分析时产生任何额外的带宽和成本。通过应用一些过滤规则,削减高度冗余或可能是无恶意的系统调用。通过消减可以加快生成图的速度,降低所生成图的复杂度。

目前的过滤规则主要包括:

(1)动态链接库文件,比如libc.so.*和libm.so.*.

(2)虚拟对象,如stdin/stdout和/dev/null

(3)关于伪终端主从逻辑设备的对象(/dev/ptmx  /dev/pts)

(4)与日志相关的对象,如syslod和 /var/log/*等

也允许用户指定更多的过滤规则,但也存在过滤掉恶意对象的更大风险。

此外,Patrol使用一个成为时间窗口的调优参数,对经过滤的系统调用日志发送到分析系统的频率进行调整。

3.2 SODG的生成和串接。

每个主机SODG被串接在一起就构成了网络级SODG。研究发现,作为黏合剂的边通常是基于Socket的通信。因此识别和消减系统调用中涉及的相应套接字对象,可以将两个分离的主机SODG串接在一起。

3.3 可疑入侵传播路径SIPP识别

为了识别SIPP,Patrol系统可能首先使用触发节点作为种子进行后向追踪,因为出发节点可能不是入侵的开始。在很多情况下,IDS存在检测延迟的问题,即告警是入侵起始点的延迟表现。

后向跟踪可以帮助找到起始点,然后就可以使用起始点作为种子进行前向跟踪。

具体说来,后向的依赖关系跟踪被用于识别所有具有直接或传递的有向边指向触发节点的SODG对象,而前向的依赖关系跟踪是找到所有具有来自触发节点的直接或传递的有向边的SODG对象。

Patrol将后向和前向的依赖关系跟踪都实现为广度优先搜索(BFS)算法。

3.4 阴影指示器检查

阴影指示器检查是基于漏洞阴影和阴影指示器的概念。这些概念是基于一个关键的观察:多个漏洞会拥有一些共同的特征。

CWE---列举了693个通用弱点。

CAPE---分类出了400个通用的攻击模式。

漏洞阴影与上述类,但不同之处在于商户共有通用特征的情况之外,还会发现:对一些漏洞的攻击利用往往在SODG图中有相似的特点。

-----------------------------

 注1:CWE---常见缺陷列表(Common Weakness Enumeration)是MITRE公司(一个非盈利机构)继CVE(Common Vulnerabilities and Exposures)之后的又一个安全漏洞词典。

注2:CAPEC(Common Attack Pattern Enumeration and Classification)是一种用于攻击预防和检测的语言。

通过对攻击模式的分类与描述,它为安全从业人员提供了一种有用的方式来识别和理解网络威胁。CAPEC使用一种基于面向对象编程的方法来描述攻击方法和技术。该方法使用“攻击模式”的概念,类似于软件设计中的“设计模式”,将常见的安全漏洞分类并描述其技术实现和攻击流程。

CAPEC将攻击模式分为四个不同的级别:

  • 攻击模式:用于描述单一攻击方法或技术的基本操作步骤。
  • 攻击链:描述由多个攻击模式组成的攻击序列,形成完整的攻击流程。
  • 攻击生态系统:描述针对同一目标的多个攻击链。
  • 攻击预测:描述可能的未来攻击,以帮助安全团队做出准备。

-----------------------------

4. Patrol 的实现

4.1 在线的系统调用审计

通过一个可加载内核模块实现,监视所有运行中进程的39个系统调用。监视通过Hooking机制完成:模块对所关注的系统调用设置hook,如封装在系统调用socketcall中的套接字相关调用(sys_accept\ sys_sendto)。附加代码放置在挂钩中,用于记录系统调用的参数和返回值,或者保存在系统调用期间访问的操作系统内核数据结构的描述符信息中,如进程对象的任务机构和文件对象的文件结构。

可从描述符中获取OS相关信息,包括进程ID、进程名称、绝对文件路径和inode编号。这些被用于精确的OS对象标识,同时还记录每个系统调用的时间信息,如调用和返回时间。

4.2 离线数据分析

数据分析代码用gawk编写,能够产生dot,兼容格式的出书以用于表示图。在Patrol中图用邻接矩阵表示,需要快速查找判定两个节点之间是否存在边,只用O(1),否则可能需要O(|v|)或O(|e|)。其中v代表节点数,e代表边的数量。

5. 0Day攻击路径的概率识别

5.1 研究动机

Patrol的局限性:候选0Day攻击路径的激增数量和规模。考虑到从入侵告警汇总提取的入侵检测点数量较多,可能导致出现过多的后续0Day攻击路径。

5.2 方法概述

针对数量激增问题,提出一种基于0Day攻击路径识别的概率方法。基本思想是通过结合从各个信息源收集的入侵证据,减少候选0Day攻击路径的数量和大小。

方法分为两个步骤:

(1)建立一个系统层依赖关系图来描述入侵传播。该依赖关系图为系统对象实例依赖关系(SOIDG)。

(2)在SOIDG的基础上建立一个利用入侵证据的贝叶斯网络。基于SOIDG的BN能够计算出系统对象实例被感染的概率。通过依赖关系将高感染率的实例连接起来,可形成一条路径。

SOIDG的依赖关系意味着一种因果关系--- 一个对象的已感染实例可能导致另一个对象的正常实例被感染。BN能够使用概率图建立因果关系模型。因此,可以直接在SOIDG上构造一个BN来对感染因果关系进行建模。

5.3 基于SODG的BN构建问题

(1)如果移除SODG边上的时间标签,SODG就不能表现正确的信息流。

(2)SODG图有可能包含循环,而BN是一种非循环图。

(3)SODG中,一个节点的父节点数目是不受限制的。如果一个系统对象依赖于许多其余对象,那么这个对象将在SODG中得到大量父对象。使用BN时为具有大量父节点的节点指定CPT表是非常困难且不切实际的。

5.4 系统对象实例依赖关系图(SOIDG)

在SOIDG中,每个节点都是一个对象的实例。每个实例都是对象在特定时间点的“版本”。

SOIDG的生成规则:

给定一个依赖关系 src-> sink,其中src是源对象,sink是接收对象,且只有当src是SOIDG中不存在实例的新对象时,才会创建src对象的新实例。与src对象相比,每当出现依赖关系 src-> sink时,应该在SOIDG中添加sink对象的新实例。src与sink对象的处理方式不同,src的感染状态不受依赖关系src-> sink的影响,而可能会影响sink的感染状态,应该为sink创建一个新的实例来反映这种影响。

SOIDG规避了SODG存在的3个问题。

5.5 基于SOIDG的BN和0Day攻击路径识别

BN中直接继承SOIDG的图拓扑结构。必须为每个节点分配CPT表。

经过概率推理,每个节点都得到一个概率。这也就意味着BN能够定量计算每个对象实例被感染的概率。每当加入新的证据时,基于SOIDG的BN将生成一组新的推断概率。

当收集到的证据越多,推断结果就更接近真实情况。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/610246.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

k8s-存储 11

一、configmapu存储 首先&#xff0c;确保集群正常&#xff0c;节点都处于就绪状态 Configmap用于保存配置数据&#xff0c;以键值对形式存储。configMap资源提供了向 Pod 注入配置数据的方法&#xff0c;旨在让镜像和配置文件解耦&#xff0c;以便实现镜像的可移植性和可复用…

js实现倒计时

今天和大家分享一个小功能&#xff0c;在我们进行需要获取手机验证码或其他方式的验证码进行登录时会有一个功能&#xff0c;就是当你点击发送验证码时会有一个倒计时&#xff0c;倒计时没有结束时按钮是禁用的状态&#xff0c;防止重复发送短信&#xff0c;下面我们来看一下这…

【数据结构】——期末复习题题库(7)

&#x1f383;个人专栏&#xff1a; &#x1f42c; 算法设计与分析&#xff1a;算法设计与分析_IT闫的博客-CSDN博客 &#x1f433;Java基础&#xff1a;Java基础_IT闫的博客-CSDN博客 &#x1f40b;c语言&#xff1a;c语言_IT闫的博客-CSDN博客 &#x1f41f;MySQL&#xff1a…

C2-4.3.1 多个决策树——随机森林

C2-4.3.1 多个决策树——随机森林 参考链接 1、为什么要使用多个决策树——随机森林&#xff1f; 决策树的缺点&#xff1a; A small change in the data can cause a large change in the structure of the decision tree causing instability 即&#xff1a;对数据集 中…

持续领跑云安全赛道!安全狗多项安全能力获认可

近日&#xff0c;以“数字安全 未来可期”为主题的“2024安全市场年度大会”在北京成功举行。 作为国内云原生安全领导厂商&#xff0c;安全狗也受邀出席此次活动。 厦门服云信息科技有限公司&#xff08;品牌名&#xff1a;安全狗&#xff09;创办于2013年&#xff0c;是国内领…

Redis主从复制哨兵及集群

目录 一.主从复制 主从复制的工作原理如下&#xff1a; 主从复制的作用&#xff1a; 搭建Redis 主从复制 每台服务器配置&#xff1a; ​编辑进行编译安装&#xff1a; 定义systemd服务管理脚本&#xff1a; 开启服务&#xff0c;报错看下内容&#xff1a; 修改 Redis…

Python 日志模块 logging 的最佳实践,内容干练简洁

文章目录 1. 引言2. 定义日志类3. 引用日志4. 参考 1. 引言 每次写 python 代码&#xff0c;想找一个日志模块 logging 的最佳实践&#xff0c;都要找一大圈&#xff0c;确不一定可以找到合适的最佳实践。 痛定思痛&#xff0c;我决定下笔记录目前觉得合适的 python 日志的用…

代码混淆:保护您的应用程序

目录 引言 什么是代码混淆&#xff1f; 代码混淆常见手段 代码混淆的作用 代码混淆可能带来的问题 常用的混淆工具 如何使用ipaguard进行混淆 总结 引言 在当今数字化时代&#xff0c;移动应用程序已经成为人们生活和工作中不可或缺的一部分。但是&#xff0c;随着应用…

PPT插件-大珩助手-清除同类

清除同类-颜色 对于选定的形状&#xff0c;删除相同颜色 清除同类-文本 删除当前幻灯片中的文本对象 清除同类-非文本 删除当前幻灯片中的非文本对象 清空当页 删除当前幻灯片中的所有对象 选中的形状动画 删除选中的对象上的形状动画 当前页形状动画 对于当前页中的…

MIB 变更周期

MIB 始终以 80 ms 的周期在 BCH 上传输并在 80 ms 内重复&#xff0c;并且它包括从小区获取 SIB1 所需的参数&#xff1b;如果 SSB 的周期大于 80 ms&#xff0c;则 MIB 的发送周期与 SSB 的周期相同。 在UE初始搜索时&#xff0c;SSB在半帧内的周期是20ms&#xff1b;所以对于…

Linux第23步_安装windows下的stm32cubeprogram软件

stm32cubeprogram软件是通过USB3.0接口烧写系统软件。 1、双击“05、开发工具\02、ST官方开发工具\en.stm32cubeprog_v2-5-0\SetupSTM32CubeProgrammer-2.5.0.exe”。 2、点击“Next” 3、点击“Next” 4、勾选“I agree”&#xff0c;点击“Next” 5、点击“Next” 6、点…

阴盘奇门八字排盘马星位置计算方法php代码

如下位置&#xff0c;马星的四个位置。 计算方法&#xff1a; 1。先根据出生年月日&#xff0c;计算得八字四柱。比如 2024年01月09日&#xff0c;四柱为 其中时柱地支为“申” 2。然后根据以下对应的数组&#xff0c;来找到id号&#xff0c;即马星位置。 根据下表来找到&am…

iPhone语音备忘录怎么导出?这3种方法任你选择!

作为iPhone用户&#xff0c;我们应该会经常使用语音备忘录来记录一些重要的信息。有时候&#xff0c;我们可能需要将这些语音备忘录导出&#xff0c;以方便分享或备份。iphone语音备忘录怎么导出&#xff1f;今天&#xff0c;小编将为大家介绍3种导出iPhone语音备忘录的方法&am…

阿里云RDMA通信库XRDMA论文详解

RDMA(remote direct memory access)即远端直接内存访问&#xff0c;是一种高性能网络通信技术&#xff0c;具有高带宽、低延迟、无CPU消耗等优点。RDMA相比TCP在性能方面有明显的优势&#xff0c;但在编程复杂度上RDMA verbs却比TCP socket复杂一个数量级。 开源社区和各大云厂…

雍禾植发袁宣心中有“术”,雍禾医疗帮用户重启人生

从公立医院烧伤外科来到雍禾&#xff0c;可以说是袁宣职业生涯里最重要的一个决定。据了解&#xff0c;袁宣医生所在的雍禾植发&#xff0c;是国内最大的毛发医疗机构。截至2022年12月31日&#xff0c;雍禾医疗已组建1341人的专业医疗团队&#xff0c;其中毛发医生294人&#x…

从零实现一套低代码(保姆级教程) --- 【15】实现轮播图组件并增加容器子节点类型的控制

摘要 接上一篇&#xff0c;我们继续实现另外一个比较常见的组件。轮播图&#xff0c;在一些官网的页面中&#xff0c;这个组件是非常常见的。 如果你是第一次看到这一篇文章&#xff0c; 建议先看一下第一节内容&#xff1a; 从零实现一套低代码&#xff08;保姆级教程&#…

一个Pygame的Hello World示例程序

创建一个标题为Hello World的窗口&#xff0c;窗口中间显示有Pygame的Logo的python代码 import sys import pygamedef main():pygame.init()screen pygame.display.set_mode((800, 400))pygame.display.set_caption("Hello World")logo pygame.image.load("p…

2024 年 API 管理新趋势预测

本文译自&#xff1a;What Will Be the API Management Trends for 2024&#xff1f; 原文链接&#xff1a;What Will Be the API Management Trends for 2024? - The New Stack 原文作者&#xff1a;Kenn Hussey 预计到 2030 年末&#xff0c;API 管理 市场的规模将增长六倍&…

php 的判断语句

目录 1.if 2.else 3.elseif /else if 4.while 5.do-while 6.for 7.foreach 8.break 打断 9.contiun 继续 10.switch 1.if 判断语句为 true 则执行 if 里面的语句&#xff0c;否则不执行&#xff1b; <?php header("Content-Type: text/html; charsetutf-8&…