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

news2024/9/21 22:27:51

通过网络级对象依赖关系揭示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.coloradmin.cn/o/1367163.html

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

相关文章

Redis中字符串表示是如何设计与实现的?

文章目录 Redis中字符串表示是如何设计与实现的&#xff08;SDS&#xff09;&#xff1f;引言简单动态字符串底层数据结构为什么不用char *举个&#x1f330;如何优化append操作&#xff1f;总结 Redis中字符串表示是如何设计与实现的&#xff08;SDS&#xff09;&#xff1f; …

Tomcat 的 work 目录缓存导致的JSP页面图片更新问题

一、问题分析 1. 修改后重新部署没有变化 笔者之前部署了一个后台管理项目&#xff0c;通过它来发布课程内容&#xff0c;其中有一个 JSP 课程页面&#xff0c;在该 JSP 页面里也引用了类文件 Constant.java 里的一个变量&#xff08;ALIYUN_OSS_PATH&#xff09;&#xff0c;…

7个PyCharm实用插件实现轻松编程

大家好&#xff0c;IDE&#xff08;集成开发环境&#xff09;是开发者的武器&#xff0c;使用一个好的IDE和一些很棒的插件&#xff0c;工作效率会更高。Python是一种广泛使用的编程语言&#xff0c;PyCharm是最受欢迎的Python IDE之一。以下介绍7个PyCharm插件&#xff0c;它们…

JavaScript基础(25)_dom查询练习(二)

<!DOCTYPE html> <html lang"zh"> <head><meta charset"UTF-8"><title>dom查询练习二</title><link rel"stylesheet" href"../browser_default_style/reset.css"><style>form {margi…

K8S--持久卷(PersistentVolume)的用法

原文网址&#xff1a;K8S--持久卷(PersistentVolume)的用法-CSDN博客 简介 本文介绍K8S的持久卷(PersistentVolume)的用法。 目标&#xff1a;用持久卷的方式将主机的磁盘与容器磁盘映射&#xff0c;安装nginx并运行。 --------------------------------------------------…

IO流-文件复制

IO流 概述&#xff1a;IO流&#xff0c;输入输出流&#xff08;Input Output&#xff09;流&#xff1a;一种抽象的概念&#xff0c;对数据传输的总称。&#xff08;数据在设备之间的传输称为流&#xff09;常见的功能 文件复制文件上传文件下载 学习流&#xff0c;我们要搞懂…

CSS 发光输入框动画

<template><view class="content"><input placeholder="请输入..." class="input" /> </view> </template><script></script><style>/* 设置整个页面的背景颜色为 #212121 */body{background-c…

centos7系统部署SqlServer2019

转载说明&#xff1a;如果您喜欢这篇文章并打算转载它&#xff0c;请私信作者取得授权。感谢您喜爱本文&#xff0c;请文明转载&#xff0c;谢谢。 一 关于SQL Server SQL Server数据库是Microsoft开发设计的一个关系数据库智能管理系统(RDBMS)。 二 安装部署 2.1 安装依赖 …

使用 matlab 求解最小二乘问题

有约束线性最小二乘 其标准形式为&#xff1a; min ⁡ x 1 2 ∥ C x − d ∥ 2 2 \mathop {\min }\limits_x \quad \frac{1}{2}\left\| Cx-d \right\|_2^2 xmin​21​∥Cx−d∥22​ 约束条件为&#xff1a; A ⋅ x ≤ b A e q ⋅ x b e q l b ≤ x ≤ u b \begin{aligned} …

linux创建pyspark虚拟环境

一、创建虚拟环境 conda create -n test python3.6.6 二、注意添加镜像 vi /root/.condarc channels:- http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/- http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/- http://mirrors.ustc.edu.cn/anaconda/pkgs/ma…

消息队列-RockMQ-批量收发实践

批量收发实战 发送消息是需要网络连接的如果我们单条发送吞吐量可能没有批量发送好。剖来那个发送可以减少网络IO开销&#xff0c;但是也不能一批次发送太多的数据&#xff0c;需要根据每条消息的大小和网络带宽来确定量的数目。 比如网络带宽为可以支持一次性发送8M的数据包&…

如何解读服务器的配置和架构?

在当今数字化时代&#xff0c;服务器作为企业或组织的重要基础设施&#xff0c;其配置和架构对于保障业务的稳定运行至关重要。如何解读服务器的配置和架构&#xff0c;成为了一个备受关注的话题。本文将围绕服务器配置和架构的解读进行深入探讨&#xff0c;帮助读者更好地理解…

DDIM学习笔记

写在前面&#xff1a; &#xff08;1&#xff09;建议看这篇论文之前&#xff0c;可先看我写的前一篇论文&#xff1a; DDPM推导笔记-大白话推导 主要学习和参考了以下文章&#xff1a; &#xff08;1&#xff09;一文带你看懂DDPM和DDIM &#xff08;2&#xff09;关于 DDIM …

如何精选WordPress插件

WordPress的强大功能大多得益于其众多插件。正确选择插件可以让你的网站功能强大、运行平稳&#xff0c;而错误的选择则可能导致网站变慢甚至出现安全漏洞。这篇文章将指导你如何在众多可选的插件中作出明智的选择。 明确需求 在浏览WordPress的插件目录或其他市场之前&#…

阶段十-分布式-任务调度

第一章 定时任务概述 在项目中开发定时任务应该一种比较常见的需求&#xff0c;在 Java 中开发定时任务主要有三种解决方案&#xff1a;一是使用JDK 自带的 Timer&#xff0c;二是使用 Spring Task&#xff0c;三是使用第三方组件 Quartz Timer 是 JDK 自带的定时任务工具,其…

STL标准库与泛型编程(侯捷)笔记1

STL标准库与泛型编程&#xff08;侯捷&#xff09; 本文是学习笔记&#xff0c;仅供个人学习使用。如有侵权&#xff0c;请联系删除。 参考链接 Youbute: 侯捷-STL标准库与泛型编程 B站: 侯捷 - STL Github:STL源码剖析中源码 https://github.com/SilverMaple/STLSourceCo…

Vue2:脚手架Vue-CLI的使用

一、环境准备 vue脚手架&#xff08;vue-CLI&#xff09;的使用是基于nodejs环境下的。 你可以简单理解为&#xff0c;Java项目需要再jvm虚拟机上才能编译运行 nodejs的作用就是将vue文件编译成html、css、js代码文件。 如何安装nodejs 参考&#xff1a;https://blog.csdn.net…

谁动了我的注册表?免费的注册表对比分析工具

关于这款工具&#xff0c;可以在B站搜谁动了我的注册表&#xff0c;UP主名字为有限的未知。该注册表对比分析工具视频教程链接如下。谁动了我的注册表&#xff1f;注册表比对分析工具 & 手动实现右键菜单自由_哔哩哔哩_bilibili 声明&#xff1a;该款注册表分析软件&#…

想要成为机器学习领域的高手吗?这里有五本必读免费书,订阅周报发链接 (下)

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

接口测试实战教程详解(加密解密攻防)

一、对称加密 对称加密算法是共享密钥加密算法&#xff0c;在加密解密过程中&#xff0c;使用的密钥只有一个。发送和接收双方事先都知道加密的密钥&#xff0c;均使用这个密钥对数据进行加密和解密。 数据加密&#xff1a;在对称加密算法中&#xff0c;数据发送方将明文 (原…