JHU-入侵检测笔记-全-

JHU 入侵检测笔记(全)

001:专项课程介绍

概述

在本节课中,我们将要学习约翰霍普金斯大学《入侵检测》专项课程的介绍。课程讲师Jason Carlson将概述课程结构、核心学习目标以及涵盖的关键技术领域。

我是Jason Carlson,约翰霍普金斯大学应用物理实验室的一名高级网络安全工程专家。我在JHU工程学院教授网络安全课程,同时也是一名拥有28年经验的军官,专长于信息保障、任务系统、网络安全工程、网络杀伤链、发射分析和入侵检测。

我开发了这门入侵检测课程。课程被分解为几个专项领域。

课程结构与内容

上一节我们介绍了讲师背景,本节中我们来看看课程的具体安排。每个专项领域包含七个模块,通过讲座、阅读材料、视频、测验和作业来呈现入侵检测的主题。你可以学习所有专项,也可以选择你希望深入了解的特定入侵检测领域。

这门Coursera课程探讨了将基于网络和主机的入侵检测与防御系统作为组织整体网络安全态势的一部分。我们将研究各种方法、模型、分析、技术、框架和算法,以理解在企业遗留IT系统、运营技术、云技术以及异构和同构的服务环境中部署IDS/IPS的实际问题。

以下是课程中将学习的关键概念列表:

  • 性能指标误报漏报精确率召回率、ROC曲线以及检测权衡。
  • 系统知识:IDS/IPS的架构、配置和报告需求。
  • 数据分析:调整和建立基线,以理解和区分异常活动与正常活动。
  • 态势感知:用于态势感知的可观测数据收集点、网络流特征和路由组织。
  • 检测技术:数据包检查、针对主机和网络动态活动的攻击与威胁类型及其应对措施。

涵盖主题

在了解了核心概念后,我们来看看课程将具体涵盖哪些主题。课程主题包括但不限于以下内容:

以下是主要技术主题列表:

  • IDS/IPS的产品、架构和组件配置。
  • 基于主机和基于网络的IDS与IPS。
  • 网络分析、入侵检测技术。
  • 上下文感知、机器学习在入侵检测中的应用。
  • Linux防火墙、iptables、Uncomplicated Firewall。
  • 检测与响应策略、网络数据包分析。
  • 图论、洋葱路由、匿名化服务。
  • 接收者操作特征曲线以及网络数据包分析案例研究。

课程目标与总结

我的目标是让这门Coursera课程的学习过程充满乐趣,使学习成为一种愉快、有趣且引人入胜的体验。我将复杂的概念转化为易于理解的学习模块。

我希望学生们能够运用课程提供的威胁检测思想,并将其转化为职业发展的助力。我感谢大家对这门Coursera课程的兴趣,并希望每个人都能在Coursera平台的入侵检测课程中学有所获,享受学习过程。

本节课中我们一起学习了《入侵检测》专项课程的总体介绍,包括讲师资历、课程模块化结构、核心学习概念(如误报/漏报、系统架构)以及广泛的技术主题(从防火墙配置到机器学习应用)。课程旨在通过易于消化的模块,将复杂的网络安全概念转化为实用的专业技能。

002:入侵检测系统导论 🛡️

在本节课中,我们将学习入侵检测系统的基本概念。我们将从定义入手,逐步拆解其核心组成部分,帮助你理解IDS是什么以及它是如何工作的。


概述

入侵检测系统是网络安全领域的关键工具。它通过监控和分析系统或网络活动,来识别可能违反安全策略的行为。本节将详细介绍IDS的定义及其核心要素。


入侵检测系统的定义

首先,我们从传统的定义开始,并对其进行拆解,以便理解入侵检测系统的各个组成部分。

以下定义引自维基百科,它很好地概括了入侵检测系统的本质:

入侵检测系统是一种检测企图破坏资源机密性、完整性或可用性行为的设备或软件应用。

这个定义中的关键要素已加粗显示,即检测破坏CIA三原则以及资源的概念。

接下来,我们将逐一分析定义中的这些不同领域。


核心概念解析

1. 检测的含义

“检测”显然是定义中的重要部分。在入侵检测系统的语境下,检测意味着存在一组可观察的现象可观察的标准以及某种阈值,这些能将特定活动与其他活动区分开来。

这意味着,从根本上说,IDS系统是一个数学意义上的分类器。它接收一组流式输入数据,并将其分类到一个或多个假设的威胁类别中。这就是入侵检测系统中“检测”某物的基本原理。

具体来说,当我们谈论IDS中的检测时,因为涉及分类器,我们讨论的并非检测意图、恶意、邪恶或“攻击”这个词本身。在这些关于检测的概念中,你看不到任何这类东西。

检测的关键在于你起始的数据集,即所有现象都必须是可观察的。一旦可观察,我们就能将这些可观察现象划分到不同类别中。这正是我们从IDS中得到的。IDS永远不会告诉我们意图,也永远不会真正知道某事是恶意的。事实上,“检测”并不意味着我正确识别了某种攻击正在进行。它只是意味着,在我这里的分类器中,我将可观察的集合划分成了感兴趣的部分

2. 破坏的含义

现在,当我想讨论“破坏”这个领域时,我所说的“感兴趣的部分”主要是指那些违反信息安全策略的事情。

因此,这个分类器的工作方式,就是将观察结果划分为:我认为属于我的信息安全策略范围内的,以及不属于我的信息安全策略范围内的。

例如,“对受保护资产的渗透”这个概念,意味着我获得了一个可观察的现象,表明我从一个本不应发起该访问的位置,接触到了一个受保护资产。这就是我们说“受保护资产遭到破坏”时的具体含义。

“破坏”也可能与漏洞利用相关的可观察现象有关。例如,有时我可以特别观察某个网络服务的输入字符串,并知道我正在匹配某种漏洞利用。

但需要特别强调的是(这一点怎么说都不为过),这里的“破坏”并不表明意图。无论这个特定的可观察现象显示信息安全策略遭到破坏是偶然造成的,还是其他原因,检测到它并不必然意味着涉及恶意意图。

3. CIA三原则

如果不深入探讨CIA三原则——即资源的机密性、完整性和可用性——就无法真正谈论根据信息安全策略定义的“破坏”。

这些我们讨论的经典安全属性,表明了信息的保护本质上是至关重要的,这样IDS才能专注于那些真正被信息安全策略所围绕的要素。

具体在本课程中,当我们谈论“破坏”时,我们再次真正关注的是信息保障中的经典CIA原则。当然,还有其他安全属性,如持有性、隐私性、真实性,它们都是经典CIA属性的细化。这些是描述安全属性的有用方式,入侵检测系统可能对检测它们感兴趣。但总的来说,这些属性大多已经可以与现有的某个CIA类别相关联。因此,在讨论服务和数据时,我们主要会考虑CIA原则。

4. 资源

自然地,当你想谈论CIA属性遭到破坏时,你谈论的是某种资源,即某种受安全策略约束保护的或未受保护的资产。

需要记住的重要一点是,并非每个资产都必须明确定义在安全策略之下。可能存在许多隐含的约束,甚至缺乏明确的策略,但存在关于什么应该受到保护的常识。例如,在我自己的家庭基础设施中,我可能没有把所有我认为在遭到破坏时应受保护的资源都写下来,但我当然会意识到,当一个未经授权的个人(无论是本地靠近我的网络,还是从某个地方远程接入)获取了一个我不希望被分发的文件时,我就遭到了破坏。或者,如果我把自己的信息(比如照片等)放到了云端,即使我没有明确的政策规定这些文件或照片不应被分享,如果这些照片突然在某个开放的网页群组中被曝光,我仍然会认为这是一种破坏。


IDS的本质与特点

从上面的通用定义可以看出,当我说入侵检测是检测企图破坏资源CIA属性行动时,这本身就意味着IDS与计算机取证或我们可能想到的其他保护系统的活动非常不同

IDS就其本质而言,是一种接近实时的活动,你希望在事件实际发生时进行检测。它并非专门用于查看分类器以识别系统中先前发生的破坏,或试图对过去发生的事情进行归因。你可能会使用收集到的数据来测试入侵检测系统,但入侵检测的部署和行动确实意味着,我有一组实时流式事件正在被分类到威胁类别中,以便识别对某种受保护资源的CIA属性的破坏。


总结

本节课中,我们一起学习了入侵检测系统的基本定义和核心概念。我们了解到,IDS是一个基于可观察现象对活动进行分类的系统,其核心目标是检测对资源CIA属性的潜在破坏行为,而无需判定行为背后的意图。理解这些基础概念是深入学习IDS工作原理和技术细节的第一步。

003:网络风险与威胁类型 🔍

在本节课中,我们将探讨入侵检测系统的应用与降低组织风险之间的关系。理解威胁、风险与入侵检测系统之间的核心联系,是选择合适系统的基础。


威胁的定义与构成 🎯

上一节我们介绍了课程概述,本节中我们来看看什么是威胁。在入侵检测系统的语境下,威胁指的是一个主动的用户进程或活动,它正在对系统执行某些操作。威胁不是被动的、抽象的,也不是指某个特定的人群。

一个活动要成为威胁,必须利用某种漏洞。这里的漏洞不一定是技术性的,也可能是策略、组织架构或控制措施上的缺陷。威胁总是有动机的,其目的是试图违反或破坏信息安全策略的某些方面,这些方面通常围绕着受保护资产的机密性、完整性或可用性

以下是威胁可能采取的行动阶段:

  • 攻击前行动:为利用漏洞而进行的准备工作。
  • 漏洞利用:利用暴露的漏洞进行攻击的核心行动。
  • 攻击后行动:在成功入侵后,利用已攻陷的系统进行的后续活动。

本质上,威胁是主动的渗透组件,是入侵检测系统需要帮助我们应对的对象。


信息安全策略的核心作用 🛡️

信息安全策略是定义安全事件的核心。威胁违反系统内的规则,本质上就是违反了信息安全策略。策略本身是降低风险所采用方法的体现。

这些策略的抽象层次因组织的环境和复杂性而异,没有统一的编写方式。但所有策略的目的都是减少暴露的漏洞数量,从而降低威胁可能实现的渗透程度。


攻击与事件的区别 ⚔️

我们一直在讨论威胁的攻击行为。那么,攻击和事件有什么区别呢?攻击是从攻击者视角出发的,是威胁试图利用暴露的漏洞来破坏受保护资产的一个具体实例。它包含了攻击者的动机和试图达成的目标。

与此形成鲜明对比的是事件。事件是我们作为防御者所看到的攻击迹象。它为我们提供了攻击者可能正在做什么的指标,这些指标可以是直接观察到的系统活动,也可以是攻击产生的间接结果。

这意味着攻击本身无法被直接测量或观察。入侵检测系统实际能看到的是事件中可观察到的攻击部分。我们无法直接看到攻击者的动机和意图,但可以看到他们为实现目标而留下的具体技术指标。


风险:频率与严重性的组合 📊

这直接引出了对风险的讨论。风险是频率严重性的组合。

  • 频率:指单位时间内预期发生的事件数量。
  • 严重性:指在攻击成功的前提下,预期造成的最大损害,通常基于资产价值和相互依赖性。

风险本身是事件频率和严重性之间的关系。然而,实际情况并非简单的 风险 = 频率 × 严重性 这么简单,因为两者都会随时间变化。

  • 严重性变化:资产价值会因市场、环境、依赖性等因素而增减。
  • 频率变化:当新漏洞暴露时,频率可能上升;当目标吸引力下降时,频率可能降低。

因此,频率、严重性、时间和价值之间存在复杂的关系。对于入侵检测而言,理解这种动态变化至关重要,因为许多系统试图定义“正常”行为,但网络空间的复杂性使得这些概念难以用固定公式求解。


攻击类型与风险计算 🗂️

风险的另一个复杂之处在于攻击类型的多样性。我们的频率计算始于对可能影响各类资产的攻击类别进行枚举。

以下是不同的攻击类别示例:

  • 窃听
  • 伪装
  • 重放攻击
  • 数据篡改
  • 错误路由

这些是不同的攻击类别,而不仅仅是单个攻击。每个攻击类别对目标的影响各不相同,因此其严重性也取决于被操纵的资产和攻击方式。

这些不同的攻击类别为我们提供了观察和分类攻击指标的不同视角,有助于我们从事件指标中预估攻击的潜在严重性。


安全架构与入侵检测的角色 🏗️

综合以上所有概念,我们需要构建一个安全架构来降低风险。降低风险意味着降低所检测到事件的严重性或频率。安全架构中的各个组件可以单独或共同作用,来降低严重性或频率。

安全架构是信息安全策略的技术实现,是执行策略目标的元素集合。入侵检测系统只是整个安全架构中的一个元素,它需要与其他元素(如防火墙、访问控制等)协同工作,共同实现信息安全策略。

因此,入侵检测系统并非设计用来执行安全策略的每一个方面,我们需要明确它在安全架构中的适当定位。


入侵检测系统如何降低风险 ⚙️

入侵检测系统在安全架构中主要通过两种方式降低风险:

1. 降低严重性
主要通过收集信息来加速响应和恢复工作。即使入侵检测系统只能在事后告警,更快的恢复速度也能降低该事件造成的总体严重性。其核心逻辑是:快速响应 → 缩短攻击者自由活动时间 → 减少潜在损害 → 降低严重性

2. 降低频率
这更具挑战性,主要通过对威胁方施加影响来实现,即起到威慑作用。

  • 对于内部威胁:如果内部人员知道自己的行为受到监控且会被报告,可以起到一定的威慑作用,减少攻击尝试的频率。
  • 对于外部威胁:如果能够通过入侵检测系统进行良好的溯源,并借助执法等行动,也可以对尤其是偶然的外部攻击者产生威慑。

总结 📝

本节课中,我们一起学习了网络风险与威胁的核心概念。我们明确了威胁是主动利用漏洞的活动,攻击是其实例,而事件是我们观察到的攻击迹象。风险由事件的频率和严重性动态构成。入侵检测系统作为安全架构的一部分,通过加速响应以降低严重性,以及通过监测和溯源产生威慑以降低频率,来帮助组织实现风险降低的目标。理解这些基本关系,是有效部署和运用入侵检测系统的前提。

004:IDS分类与核心组件 🔍

在本节课中,我们将深入学习入侵检测系统的不同类型和核心组件。我们将对IDS进行分类,并剖析其构成要素。学完本节后,你将能够阅读任何产品说明书,并准确判断其中是否包含IDS技术,以及它属于哪种类型。


入侵检测系统的解剖结构 🧬

每一个入侵检测系统,无论其具体形态如何,都由三个基本要素构成。产品说明书中必须包含这三个要素,才能称之为一个真正的IDS系统。

以下是构成IDS的三个核心组件:

  • 事件流:输入到IDS的数据流。
  • 事件分类器:分析事件流并识别潜在事件的引擎。
  • 报告/告警组件:将分类结果通知用户或系统。

需要特别说明的是,第三个组件——报告/告警组件——如果具备自动响应能力,那么该系统就从IDS升级为入侵防御系统。IPS除了具备IDS的三个要素外,还能在其防御域内自动采取行动。


事件流:监控数据的来源 📡

上一节我们介绍了IDS的整体结构,本节中我们来看看第一个核心组件:事件流。IDS的类型主要根据其输入的数据流类型来区分。

以下是四种主要的IDS输入类型:

  • 基于主机的IDS:监控主机上的进程。事件流通常来自被监控进程的审计日志、操作系统内核或应用程序。其监控的是静态数据
  • 基于网络的IDS:监控网络数据包或网络统计信息。其监控的是传输中的数据
  • 基于应用的IDS:监控应用程序内部的数据结构。它可以是基于主机的(监控应用进程),也可以是基于网络的(通过深度包检测分析应用层流量)。
  • 基于目标的IDS:专注于监控重要文件或元素的完整性。例如,确保系统文件或特定的网络流量模式不被篡改。最著名的例子是Tripwire

所有这些监控器的共同点是,它们都涉及将数据流实时或近实时地送入分析引擎进行分类,这与事后取证的取证工具不同。


事件分类器:系统的心脏 ❤️

现在,让我们从输入事件流转向IDS的核心——事件分类器。分类器负责将输入事件流进行分离和分类,判断哪些事件可能指示一次安全事件。

基本上,IDS的分类器可分为两大类:

  • 误用检测:也称为基于特征的检测。系统预先定义了一系列代表攻击模式的“特征”或事件序列。当输入流中出现匹配这些特征的模式时,即被判定为事件。其公式可简化为:检测到已知特征 => 事件告警
  • 异常检测:系统首先建立一个“正常”行为基线。当输入事件流偏离这个正常基线,无法匹配时,就被判定为异常事件。其逻辑是:行为偏离正常基线 => 事件告警

误用检测的优点是能精确识别已知攻击,误报率低;缺点是无法检测未知的“零日攻击”。异常检测的优点是理论上能发现新型攻击;缺点是容易将不常见但合法的行为误判为攻击,导致误报率高。

此外,关于分类器还有两点需要注意:

  1. IDS收集的原始数据和告警信息常被保存下来,用于态势感知或取证分析。
  2. IDS可以级联使用,即一个IDS的输出(告警事件流)可以作为另一个IDS分析引擎的输入,这有助于发现更广泛的攻击趋势。

结合监控源(主机/网络)和检测方法(误用/异常),我们得到了四种主要的IDS类型:基于主机的误用检测IDS、基于网络的误用检测IDS、基于主机的异常检测IDS、基于网络的异常检测IDS。


报告与告警:信息的传递 📢

在了解了如何收集和分析数据后,我们来看看IDS如何将结果呈现给用户。告警方式也是区分IDS的一个方面。

主要有三种告警类型:

  • 实时告警:一旦检测到事件,立即通知用户或触发响应。
  • 间隔/批量告警:收集一段时间内的信息或进行更详细的取证分析后,再生成报告。
  • 自动响应:系统自动采取对抗措施,如重新配置防火墙、重置连接、增加监控等。这通常就是IPS的功能。

在现代IDS产品中,这些告警类型通常是可配置的,因此告警方式本身不用于区分产品类型。


IDS 与 防火墙:互补的防御手段 🛡️

你可能会问,既然防火墙也能根据规则匹配并阻止流量,为什么还需要IDS?它们的目的不同,是互补的关系。

以下是两者的主要区别:

  • 部署位置:防火墙部署在保护边界(如网络入口),执行访问控制。IDS可以部署在任何能获取传感器数据的地方,包括内部网络,更适合检测内部威胁。
  • 检测能力:防火墙通常只阻止已识别的模式(类似误用检测),为避免影响正常业务,规则配置需相对宽松。IDS可以部署异常检测来发现新型攻击,因为它只是告警,而不直接阻断。
  • 策略灵活性:防火墙需要对穿越边界的所有流量执行统一的策略。IDS可以针对不同目标设置更灵活的检测规则
  • 信息共享与态势感知:防火墙主要功能是阻断,不擅长提供内部活动的深入洞察。IDS基于多位置的传感器日志,能提供更全面的威胁视图,其告警信息也更容易在不同系统间共享,支持协同防御。

简而言之,防火墙是执行访问控制的“门卫”,而IDS是监控内外活动的“安全摄像头”和“警报器”。


实战分析:解读产品说明书 🔎

最后,让我们通过一个真实产品来练习如何分类IDS。我们以思科IOS IPS为例进行分析。

通过阅读其产品说明书,我们可以提出并回答几个关键问题来对其进行分类:

  1. 是否描述了三大组件? 是。它监控网络流量(事件流),使用特征库进行匹配(分类器),并能自动阻止攻击(自动响应/告警组件)。
  2. 它针对何种攻击? 主要针对已知的威胁,如互联网蠕虫。这指向误用(特征)检测
  3. 如何降低风险? 通过在网络设备层面实时扫描和阻止恶意流量,同时降低攻击频率和严重性。
  4. 更像IDS还是防火墙? 它具备IPS的自动阻断能力,但其核心是基于深度包检测的入侵检测,因此更偏向一个具备强大阻断功能的网络IDS

结论:思科IOS IPS是一个基于网络的、误用(特征)检测型的入侵防御系统。它具备自动特征更新和网络设备级的自动防护能力。


总结 📝

本节课中,我们一起学习了入侵检测系统的核心知识。我们首先剖析了IDS的三个必备组件:事件流事件分类器报告/告警组件。接着,我们根据数据源将IDS分为基于主机基于网络基于应用基于目标四类;根据检测方法分为误用检测异常检测两类。我们还比较了IDS与防火墙的不同角色与优势。最后,我们通过分析思科IOS IPS的产品说明书,实践了如何运用这些知识对真实的IDS产品进行分类和评估。掌握这些分类方法,将使你能够清晰地理解任何IDS产品的功能定位和能力范围。

005:威胁指标与检测类型映射分析 📊

在本节课中,我们将综合前几节的知识,通过两个具体的案例分析,将威胁指标与入侵检测系统类型进行映射。我们的目标不仅仅是分类IDS,而是在更复杂的场景下,为特定的攻击选择合适的IDS类型。这是一个较长的视频模块,建议您在学习两个案例之间稍作休息,以便更好地将所学知识融会贯通。

案例研究一:内部威胁分析 🔍

上一节我们介绍了入侵检测系统的基本类型,本节中我们来看看如何将其应用于具体的威胁场景。首先,我们将深入探讨内部威胁,分析其产生的可观测指标,并探讨如何选择合适的IDS进行检测。

内部威胁的基本特征

内部威胁问题具有一些非常独特且有趣的特征。选择此案例的原因之一是,内部威胁在媒体和新闻报道中备受关注,但市场上很少有产品能真正有效地针对内部威胁的典型问题。处理内部威胁时,我们面对的是一个信任模型,而“信任”是讨论内部威胁的核心。内部人员初始拥有比外部威胁更高的信任级别,并利用这种信任来绕过旨在防止信息滥用的内部信息安全策略。

在IDS的框架下,我们可以将多个目的直接应用于内部威胁:

  • 预防:我们可以开发将行为归因于特定用户的方法,以减少事件发生的频率或潜在频率。
  • 检测与追踪:我们可以利用直接检测能力,特别是提供可追溯性,从而实现归因。这是关键——我们希望能够将事件归因于个人,因为我们处理的是信任问题。
  • 自动响应:我们还将探讨如何为内部威胁整合入侵防御系统,这在设计不会反过来被内部人员利用的自动响应机制时尤其具有挑战性。

研究基础与方法

我们的分析将基于美国特勤局过去十年进行的一项内部威胁研究,该研究分析了恶意内部人员在网络入侵之前和期间的物理及在线行为。这项研究以及其他对恶意内部行为案例的调查,揭示了有助于我们理解IDS在内部威胁场景下实际需要做什么的趋势和指标。

这项研究采用了独特的方法,结合了美国特勤局国家威胁评估中心的专业知识和卡内基梅隆大学CERT项目组的事件响应经验。研究基于真实的调查案例,所有数据均非推测或模拟。分析按行业部门进行,最初的假设是不同行业可能表现出不同类型的内部威胁。

关键研究发现与启示

以下是该研究的一些关键发现,它们直接影响我们选择IDS的策略:

1. 攻击者与受害者的关系
研究发现,57%的内部威胁实施者与组织有信任关系,但无合同或雇佣关系(如外部承包商)。7%的实施者与员工有关联(如配偶、子女),他们利用这种关系信任来接触组织。这提醒我们,威胁可能来自任何受信任的实体。

2. 攻击的技术复杂性
大多数攻击在技术上并不复杂。61%的攻击只是利用了不完善或缺失的策略、实践和程序,使用了非常简单的命令。只有少数攻击利用了特定漏洞(如弱密码),约四分之一的案例仅仅是利用了他人的已登录会话。这表明,我们不应假设内部人员都是技术天才。

3. 问题员工假设
研究通过查看人力资源记录发现,只有9%的内部威胁实施者有滥用电子资源的历史,约三分之一在事后被认为难以管理。几乎没有实施者使用外部黑客工具或是系统管理员。这表明,仅依赖人力资源记录中的“问题员工”特征来调整IDS是无效的。

4. 检测方式
只有48%的内部威胁是由安全人员发现的,35%是由外部客户报告的,这给IDS的调优带来了挑战。然而,好消息是,约30%的案例通过技术取证得以识别,26%通过系统故障或异常被直接识别。这说明存在技术指标和可观测物,可供实时流式入侵检测系统利用。

5. 攻击影响与目标
78%的案例涉及修改或删除公司信息,约30%涉及破坏数据。几乎所有案例都涉及信息系统和网络。这提示我们,可以围绕信息的完整性来捕获可观测指标,这对选择IDS类型非常有用。

6. 攻击发生时间
70%的攻击发生在工作时间,83%发生在实体工作场所。虽然30%的攻击涉及从家中发起,但75%同时使用了家庭和工作地点。这意味着我们有机会在常规工作时间内收集可观测指标,但不能忽视非工作时间的活动。

7. 攻击者画像
研究发现,内部威胁实施者在性别、职位(高管、技术人员、支持人员)、雇佣类型(全职、兼职、合同工)上的分布,与他们在组织中的比例完全一致。这表明任何人都可能成为内部威胁者,没有单一的画像可以帮助我们调整IDS只关注组织的特定区域。

内部威胁的IDS选择策略

基于以上发现,我们可以推导出针对内部威胁的IDS选择策略:

  • 关注访问控制违规:应使用基于主机的IDS,部署在服务器或云环境内部,监控访问控制违规行为并发出警报。
  • 谨慎使用异常检测:虽然异常检测是应对内部威胁的常用方法,但由于正常的用户误操作和环境变化,可能会产生大量误报。需要做好准备。
  • 利用自动警报作为威慑:可以部署一种IPS系统,它不直接关闭系统,而是自动向用户警报检测到的事件并归因于其操作。对于无意犯错者,这是一个提醒;对于恶意内部人员,则是一种威慑。
  • 保护关键数据:在关键数据附近部署基于主机的系统是一个好的起点。同时,可以考虑使用基于网络的IDS,专注于出站流量的IP识别,以检测数据泄露。这也有助于发现内部运行的、行为类似自动化内部人员的恶意软件。
  • 具体工具思路:可以使用基于主机的IDS产品、针对关键不变文件的工具(如Tripwire),或将访问控制系统数据输入IDS以识别越权用户。


在进入第二个案例研究——2003年北美东北部大停电之前,建议您稍作休息。回顾一下本节关于内部威胁如何获取数据的分析,并思考像Tripwire这样的IDS如何应对视频第一部分提出的内部威胁细节。

案例研究二:2003年北美东北部大停电 ⚡

注:根据提供的文本,第二个案例研究的具体内容未在输入中给出,因此教程在此处结束。在实际完整教程中,此处将开始分析大停电案例,并同样遵循“威胁分析-可观测指标-IDS类型映射”的结构进行阐述。


本节课总结:本节课我们一起学习了如何将威胁指标与入侵检测系统类型进行实际映射。通过深入分析内部威胁案例,我们了解到内部威胁的特征、研究发现的启示,并推导出针对性的IDS选择策略,包括侧重基于主机的检测、访问控制监控、利用警报作为威慑,以及结合网络流量分析来应对数据泄露风险。这为我们根据具体场景选择合适的安全工具提供了清晰的思路。

006:威胁指标与检测类型映射分析 🔍

在本节中,我们将通过一个真实案例——2003年北美东北部大停电事件,来探讨如何将威胁指标与入侵检测系统(IDS)的类型进行映射分析。我们将分析事件的起因、系统架构的缺陷,并思考如果这是一次攻击,应如何选择和部署IDS来应对。


案例概述:2003年北美东北部大停电

2003年8月14日至15日,美国东北部从纽约州到五大湖区,再到宾夕法尼亚州的大片区域发生大规模停电。这次事件并非虚构,它真实地展示了关键基础设施可能面临的危机。核心问题是:这究竟是一次事故,还是一次网络攻击?我们将以此为例,探讨在此类场景下应如何选择和部署入侵检测系统。


事件官方原因分析

一份关于此次停电的详细报告指出,官方认定的原因是电力系统过载。具体来说,南北向输电线路的负载比预定值高出约40%。这本身并非灾难,但若处理不当,就会引发一系列连锁的线路跳闸,最终导致大范围停电。

一个关键的技术细节是,俄亥俄州某公司用于管理输电线路的能源管理系统(EMS)软件存在一个竞态条件漏洞。这个漏洞导致程序挂起而非崩溃,因此系统未能切换到备用服务器。由于程序没有彻底失效,运行人员未能收到来自数据采集与监控系统(SCADA)的警报,从而错过了在早期干预、防止连锁故障发生的机会。

这个竞态条件在高警报生成的情况下是可复现的。然而,由于相关机器没有任何访问日志,无法确定这究竟是安全事故还是单纯的事故。最终,整个事件被定性为事故。


假设场景:如果这是攻击

现在,让我们进行一个思想实验:假设对手有能力故意触发这个竞态条件漏洞。这将是一个高严重性的问题。那么,我们应如何为此类场景创建或选择IDS?

以下是停电事件发生过程的详细时间线,它揭示了系统的脆弱环节:

  • 14:14:H4主机上生成警报和事件的进程因竞态条件而挂起,且无通知。
  • 随后:五个远程终端开始排队等待该进程处理的事件,很快导致资源耗尽并失效。
  • 两分钟内:系统热切换到备份服务器,IT部门收到通知,但未能定位到H4的根本问题。
  • 14:41:H4最终因队列事件而失效,其状态(包括挂起的进程)被复制到备份服务器H1,导致警报功能在H1上同样失效。
  • 14:54:H1以同样方式失效。此时,控制室内显示所有变电站电力曲线的整墙带状图全部变为直线,但无人察觉,因为操作员依赖的是终端警报,而警报功能已失效。
  • 15:06:由于操作员未收到警报,第一条关键输电线路(Harding-Chamberlain)跳闸,问题开始升级。
  • 15:32:第二条关键线路(Hanna-Juniper)跳闸,操作员仍不知情。此时已接近无法挽回的临界点。
  • 15:41后:随着Star-South Canton等线路相继过载跳闸,系统进入不可逆转的崩溃阶段,最终导致大停电。

整个事件的核心在于,关键的警报信息流在早期就被阻断,使得人工干预完全失效。


系统架构与安全缺陷

要理解如何防御,必须先了解被攻击系统的架构。本次事件中的能源管理系统(XA/21)架构存在严重安全缺陷:

[互联网] <-> [防火墙] <-> [路由器] <-> [办公室局域网] <-> [EMS系统服务器群(H1, H2, H3, H4...)]
  1. 设计过时:该系统基于老旧的IBM AIX系统,自1998年后未打补丁,最初设计为独立系统,从未考虑接入互联网。
  2. 认证薄弱:使用共享的root密码,认证机制非常弱。
  3. 缺乏日志:系统几乎没有维护任何操作系统日志。
  4. 远程访问风险:IT人员为方便维护,可通过家庭电脑直接远程登录系统。远程登录使用X Windows协议,其认证信息易于被嗅探,且整个过程没有日志记录

这种架构意味着,外部攻击者有可能利用薄弱的认证和缺乏监控的通道,潜入系统并触发漏洞。


IDS选择策略分析

面对这样一个高价值、高风险的工业控制系统,我们应该如何选择IDS?以下是我们的分析思路:

上一节我们分析了威胁场景和系统弱点,本节中我们来看看如何根据这些信息选择检测策略。

首先,我们需要评估威胁来源。对于此案例:

  • 内部威胁:可能性较低。
  • 外部威胁:是主要关切点,包括犯罪组织、国家背景的黑客等有动机攻击电网的实体。
  • 攻击特征:此类利用竞态条件的攻击很可能属于零日攻击,没有已知的特征码(Signature)。

因此,基于特征码检测的IDS在此效果有限。

然而,我们有一个关键优势:系统行为非常规律。它只运行少数几个固定进程,执行特定任务。这种规律性为异常检测提供了理想条件。

基于以上分析,我们建议采用分层检测策略:

  1. 网络层异常检测(NIDS):在防火墙内侧部署基于网络的异常检测系统。由于系统网络流量模式固定,任何异常的入站连接尝试、协议违规或通信模式变化都可能被捕捉到,这对防御外部零日攻击尤为有效。
  2. 主机层完整性检测(HIDS):在关键的EMS服务器(如H4)上部署基于主机的IDS。它可以监控进程统计信息(CPU、内存占用)、关键系统文件完整性以及进程行为异常。例如,如果某个关键进程(如警报生成进程)意外挂起或资源使用异常,HIDS可以提供早期预警。

简而言之,最佳策略很可能是结合使用基于网络的异常检测系统来捕捉外部入侵企图,以及基于主机的完整性检测系统来监控内部关键进程的状态,从而在这种高风险场景下提供纵深防御。


总结

通过2003年大停电这个案例,我们一起学习了如何将具体的威胁指标映射到合适的入侵检测类型。关键步骤如下:

  1. 分析威胁:确定威胁来源(内部/外部)、动机和能力。
  2. 评估影响:理解攻击成功可能造成的后果的严重性。
  3. 寻找可观测点:基于系统架构和常规行为,确定哪些地方可能产生异常信号(网络流量、主机进程、日志)。
  4. 理解上下文:充分考虑运行IDS的组织的具体流程、约束条件和系统环境。

选择IDS时,没有放之四海而皆准的方案。最有效的策略源于对威胁、系统和组织环境的深刻理解,从而选择能够监控到最关键“可观测指标”的检测工具组合。

007:DARPA战略网络防御技术 🛡️

概述

在本节课中,我们将通过一个虚构的、但极具代表性的网络攻防案例,学习DARPA(美国国防高级研究计划局)战略网络防御技术的核心概念与应用。我们将跟随一次模拟的、针对美国关键基础设施的协同网络攻击事件,观察防御方如何运用入侵检测、态势感知、溯源分析、动态防御与反制等一系列技术手段进行响应和处置。


场景引入:危机爆发 🌍

一段新闻报道拉开了序幕。中东地区局势升级,美国对伊拉克发动了空袭。与此同时,一场隐秘的网络战已经悄然开始。


第一阶段:攻击初现与内部渗透 📧

攻击首先以“心理战”和“社会工程学”的形式出现。美军任务部队内部开始流传匿名信件和电子邮件,内容涉及士兵的家庭隐私、虚构的婚外情指控,甚至详细列出其子女的姓名、地址、学校日程和车辆信息。这些信息虽然没有直接威胁,但严重影响了部队士气。

此外,部队成员还遭遇了由伪造信用报告引发的信用问题。这些攻击全部基于网络,其共同特点是利用虚假信息制造混乱和恐慌。

防御方的初步应对是启用强身份认证协议,这似乎解决了许多问题。然而,真正的网络攻击才刚刚开始。


第二阶段:关键基础设施遭受攻击 ⚡

入侵检测系统发出警报,指向对一颗商用中继卫星地面控制系统的攻击。虽然此次攻击本身并非针对军事设施,但其造成的卫星服务中断产生了连带影响。

联合特遣部队立即提升警戒级别至Infocon Delta,并采取了一系列紧急防御措施:

  • 收紧边界控制器策略,以阻断攻击序列。
  • 启动攻击溯源。
  • 自动取证系统开始开发应对措施。

很快,事态升级。攻击范围扩大,金融、交通,尤其是电力部门遭受了全面打击。东海岸开始出现一系列停电事故,导致交通瘫痪、银行ATM机故障,社会秩序受到严重影响。同样的攻击也在西欧和中东的盟国中出现。

总统宣布进入国家网络紧急状态,国家基础设施保护中心被赋予核心防御角色,拥有法律保护的信息共享权和重要的信息安全指令权。


第三阶段:深度分析与动态防御 🎯

防御团队开始深入分析攻击模式。他们发现攻击者非常专业,专门针对东部电网中更脆弱的发电和输电控制设施。通过分析攻击模式,团队预测了下一个可能的目标。

为了在不影响真实系统的情况下观察攻击者的手法并收集证据,防御方启用了名为“鱼缸”的隔离仿真环境技术。他们将可能遭受攻击的站点“克隆”到鱼缸中,并部署重定向软件,将针对真实站点的攻击流量引导至这个仿真环境。

在鱼缸中,他们捕捉到了攻击细节:攻击者向控制系统服务器的异常端口发送了一串特殊字符,触发了系统内一个名为“Novicof”的软件中的木马程序,导致服务器关闭了其他控制端口。Novicof被超过一半的控制中心使用,这意味着攻击可能造成大规模停电。

形势危急,防御团队必须在20分钟内控制局面,否则东海岸电网将因连锁故障而崩溃。


第四阶段:艰难决策与紧急响应 ⚖️

防御系统分析了高、中、低三种“先发制人式隔离”行动方案。初步报告显示,切换到备用控制系统至少需要两小时,时间不够。

计算机推荐的“中等选项”方案预计会造成人员伤亡。指挥官基于成本效益评估,否决了该方案,选择了伤亡风险更低的“低选项”隔离方案。

然而,新的攻击接踵而至,这次主要针对西海岸,采用了逻辑炸弹、木马和内部人员等不同机制。系统重新分析后得出结论:必须执行“高选项”方案,尽管这会带来严重的交通伤亡和医疗紧急情况。指挥官同意并实施了该方案。

电网的连锁故障得以避免,但防御团队意识到,必须找出并消灭攻击源头。


第五阶段:攻击溯源与威胁归因 🔍

防御团队开始过滤攻击数据,聚焦于有能力、有动机以已识别方式攻击电网、金融和交通部门的行为体。最初名单上有300个组织。

通过部署更高级别的传感器进行探测和情报收集,并结合入侵异常报告关联分析,名单被缩小到12个可疑组织。

与此同时,前线指挥官报告了严重的弹药供应问题:收到错误口径的弹药、零件不匹配、系统显示已送达但实际未到货。防御团队怀疑存在共同的故障点。

通过运行恶意代码检测套件并进行数据库损坏检查,他们分析了相关软件和数据库在过去六个月内的访问历史,锁定了一批有机会接触这些系统的政府人员、军火商和承包商。

经过FBI、司法部和财政部的联合调查,最终将嫌疑人范围缩小到4人,其中3人与可疑的恐怖组织可能存在关联。


第六阶段:拼图完成与反制行动 🧩

防御团队运行了一个程序,将发现的恶意代码与12个可疑组织的编程特征子集进行匹配。最终,所有线索指向一个名为“跨国全球资源”的公司,其总部设在敌国控制的坦博拉岛上。

分析表明,这是一场由敌国资助和控制的、跨国协同网络恐怖主义活动。其战略目标是分裂联盟、削弱美国决心,并将其驱逐出该地区。

在获得总统授权后,美军发起了代号为“沙暴行动”的信息战反制攻击,目标是“跨国全球资源”的基础设施及敌国内部的相关网络节点。反制行动取得了成功。

敌国政府通过秘密渠道表示,他们对境内存在网络恐怖组织“感到震惊”,并“祝福”美方将其清除。国际紧张局势随之缓和。


总结 🏁

本节课中,我们一起学习了一个完整的战略网络攻防推演案例。我们看到了网络攻击如何从社会工程渗透开始,逐步升级为对关键基础设施的毁灭性打击。更重要的是,我们观察了防御方如何综合运用以下技术进行响应:

  1. 入侵检测与态势感知:及时发现攻击并评估其影响范围。
  2. 动态防御与隔离:采用“鱼缸”等技术进行攻击重定向和取证。
  3. 溯源分析与威胁归因:结合技术特征、访问日志和情报,锁定攻击源头和幕后主使。
  4. 协同指挥与决策:在紧急状态下,跨部门协同,并基于成本效益做出艰难决策。
  5. 主动反制:在政治授权下,对攻击源头实施网络反制。

这个案例深刻揭示了现代网络战的复杂性和战略性,以及构建多层次、智能化、协同防御体系的重要性。


新闻报道为事件画上句号:一系列停电和计算机故障被归因于一个复杂的、基于中东的恐怖组织行动。美军与NIPC合作摧毁了该组织。市场开始反弹。

防御团队确认将警戒级别过渡回Infocon Alpha,联合特遣部队转为待命状态,并将本次行动的教训更新至数据库以供研究。


008:主机入侵检测系统导论 🖥️

在本模块中,我们将学习主机入侵检测系统。我们将探讨如何利用直接从主机可观测项获取的信息,来构建一个能够对事件进行分类的入侵检测系统。这些系统可以直接对事件采取行动,或将其报告出来以提升事件响应能力。

上一模块我们讨论了入侵检测的基本概念,本节中我们将聚焦于一种具体的实现方式——主机入侵检测系统。

模块学习目标 🎯

以下是本模块将涵盖的核心内容:

  • 描述HIDS:你将能够识别主机入侵检测系统,并理解所有HIDS和HIPS系统的共同特征。
  • 分类HIDS类型:你将了解基于不同可观测项来源和事件分类方式的多种HIDS类型,并能联系到商业产品实例。
  • 应用案例研究:我们将基于上一模块的“内部威胁”案例,构建一个在大型复杂企业中部署和使用HIDS以检测内部威胁的框架。
  • 识别攻击类型:你将能够识别出HIDS可以检测的、超越内部威胁范畴的各类具体攻击。
  • 实践配置:你将在虚拟机上获得实际配置HIDS的实践经验。

内容概述 📋

接下来,我们将深入探讨不同类型的HIDS、它们的功能、告警方式以及防护机制,并将这些知识直接应用到上节课的“内部威胁”案例研究中。

我们还将详细分解那些能够被HIDS检测到的具体攻击类型。最后,你将有机会在虚拟机上动手配置HIDS,获得更贴近实际的操作经验。

希望你能享受这个模块,我们将深入探究这种通过审视主机上各类可观测项来工作的入侵检测系统,并理解在大型、复杂、多样化的企业环境中构建一个有效的基于主机的入侵检测系统所面临的挑战。

现在,让我们开始学习具体内容。

009:主机入侵检测系统原理 🖥️

在本节课中,我们将学习主机入侵检测系统的基本原理。我们将了解它与网络入侵检测的区别,其核心组成部分,以及它如何从主机内部收集和分析数据来识别威胁。

概述

主机入侵检测系统专注于监控单个计算机系统(主机)上的活动,而不是网络流量。它利用主机内部的日志文件和其他数据源作为传感器,来检测可疑行为或攻击。

主机入侵检测系统(HIDS)的核心组件

与所有入侵检测系统一样,基于主机的IDS也包含三个主要部分。

以下是这三个核心部分:

  1. 传感器:位于本地主机上,负责收集数据并生成数据流,为IDS提供输入。这些数据通常来自日志文件。
  2. 分类器:接收传感器传来的事件,并从中识别出被标记为可疑或需要跟进的事件。这些被识别出的事件称为“事件”或“可疑事件元素”。
  3. 报告器:负责处理分类器输出的“事件”。这些事件可以报告给本地主机,也可以通过网络报告给某个中央聚合点。如果涉及入侵防御系统,报告器还可能直接对发现的事件做出反应,执行阻断或其他操作。

因此,我们的传感器(主机日志文件)将数据馈送给分类器,分类器再将结果传递给报告部分。任何IDS都具备这三个部分。

HIDS/HIPS的主要类型

上一节我们介绍了HIDS的通用结构,本节中我们来看看它的几种主要实现类型。

以下是三种基本类型:

  • 完整性检查器:例如Tripwire。这类系统在系统内的重要文件或其他本不应改变的元素发生变化时发出警报。文件发生变化的唯一合理原因应是遭受了攻击或发生了某种事件。
  • 恶意软件检测器:例如传统的病毒检测软件。它们识别系统上运行的任何特洛伊木马、恶意软件或病毒。检测方式可以是静态的(检查休眠文件)或动态的(检查运行中的程序)。
  • 传统攻击检测器:这是最早的主机入侵检测类型,例如早期的工具。它利用系统内应用程序等生成的审计流,来识别当前正在发生的实际攻击。这与恶意软件检测略有不同,它更侧重于检测交互式攻击,例如已登录系统的内部人员或其他用户正在进行的操作。

当我们谈论主机入侵防御系统时,它具备上述所有HIDS的检测能力,但除此之外,HIPS还能采取行动。例如,它可以阻止恶意软件运行、终止进程、自动恢复文件,基本上可以自动执行任何用户能执行的操作。由于在本地主机上有足够的上下文信息,HIPS通常能采取非常有效的措施来阻止攻击。

主机活动数据的收集来源

无论何种类型的HIDS,其本质都是从主机收集信息。那么,这些信息具体从哪里来呢?

主机活动通常从以下三个常见位置收集,此外还有一类特殊的目标监控。

  • 操作系统日志:这是传统的审计日志,记录进程状态、事件或文件访问失败等本不应发生的情况。可以将其理解为Windows事件日志或任何操作系统上描述活动详情的审计日志文件。
  • 系统日志:这些日志与操作系统级别的日志略有不同,它们运行在更接近用户级别,例如记录用户最后登录时间的lastlog。它们更侧重于记录发生在用户层面的活动,通常与系统服务相关。
  • 应用程序日志:这是主机日志中级别最高的一类,特定于系统上运行的单个应用程序,例如邮件日志、Web访问日志或数据库日志。它们详细记录了应用程序交互的具体信息。

目标监控则有些不同。它是指将传感器指向某些本应永不改变的目标(如关键系统文件)。传感器会读取目标的值,并将其与标准或基线值进行比较,如果发生变化就会触发警报。这与上述动态变化的审计日志不同,目标监控期望每次读取的值都相同。

操作系统日志详解

了解了数据来源的分类后,我们先深入看看操作系统日志。

操作系统内部有多种不同的日志文件,具体取决于运行的操作系统。在Unix/Linux系统上,有伯克利系统监视器或安全监视器;在Windows系统上,有特定的事件日志。事件日志系统本身有时就包含一定的警报功能,使其本身就具备一些IDS的特性。

这些传感器通常位于内核结构中,远离普通用户可以操纵的区域。这很有价值,因为我们需要将其置于传统用户的控制范围之外。当然,这只有在管理员/特权用户与普通用户分离的情况下才有效。如果用户总是以管理员身份登录,那么入侵者就可能访问到内核结构和所有生成警报的机制。这是HIDS的一个风险:它非常接近可能正在实施入侵的人或恶意软件。

操作系统日志包含的数据级别很低,例如时钟时间、事件参数名称等,这些都是操作系统或内核视角的事件参数。这种低级别特性使得很难将这些事件直接追溯到实际发生的高级应用层攻击。此外,这些传感器可以被配置为非常详细(记录每个文件访问)或相对精简。记录的信息越少,分类器可用于判断事件是否发生的依据就越少,这是操作系统日志中一个传统的权衡。

系统日志与应用程序日志

上一节我们探讨了底层的操作系统日志,本节我们来看看更上一层的系统日志和应用程序日志。

系统日志位于操作系统内核之上,属于系统工具日志,运行在非常接近或就在用户级别。它们记录的活动大致与用户在用户层面的操作相关。例如在Unix系统中,lastloghistoryuptimesu日志等都属于此类。它们通常在服务级别收集,而非内核级别。系统日志总是围绕某种特定类型的事件(通常是某项服务,如登录服务)展开。由于它们是系统服务的一部分,每个服务往往创建自己独立的日志文件,这导致格式可能不统一,分类器需要解析引擎来处理这些不同格式,并将不同数据流融合在一起进行分析。

应用程序日志是主机日志中级别最高的。它们特定于系统上运行的单个应用程序(如Web访问日志、电子邮件日志、数据库日志)。这些日志在应用程序运行时收集,如果应用程序在用户级别运行,那么日志也将在该用户级别收集。这意味着运行该应用程序的用户有可能修改这些日志。因此,虽然应用程序日志包含更具体、更丰富的攻击信息(包括系统信息和应用特定信息),但其完整性可能不如操作系统或系统日志。与系统服务日志类似,应用程序日志也存在格式各异的问题,给分类器的分析带来挑战。

在主机内部,我们有低级别的基于内核的日志、系统服务日志以及更高级别的应用程序日志。所有这些日志都可以馈送给某个HIDS系统。HIDS可以同时接收所有这些来源的数据,也可以只接收其中一个,甚至可以在每个区域运行独立的IDS。

目标监控与HIDS的挑战

最后,我们来谈谈目标监控以及部署HIDS时面临的主要挑战。

目标监控的核心思想是检查系统中任何本应保持静态的对象的完整性。你需要预先选定监控目标(特定资产),并记录对该对象的更改活动。像Tripwire或StackGuard这类应用就属于此列。监控对象不一定是文件,也可以是内存、BIOS甚至内核中的某些动态参数,只要它们本应保持恒定值即可。这种方法的关键在于选择正确的资产进行监控。如果选择的资产确实是攻击的一部分,那么效果会非常好;如果选错了,目标监控就没什么用处。

无论传感器位于系统的哪个位置,都必须安全地管理这些数据。必须确保传感器日志在传输到分类器的过程中是安全且完整的。如果日志本身可以被篡改,那么IDS的有效性就取决于传感器数据流的完整性。这涉及到许多问题,例如磁盘空间耗尽时如何处理事件?是丢弃旧事件还是新事件?是否停止系统?如何验证监控数据的完整性?

此外,仍然存在如何组合不同审计源(尤其是来自主机内不同层级的数据)的问题。还有性能问题需要考虑:当HIDS与系统上其他关键应用程序并行运行时,如果HIDS开始占用过多系统资源(内存、磁盘等),该怎么办?这些都是部署HIDS时需要权衡的主要困难。

总结与拓展思考

本节课我们一起学习了主机入侵检测系统的基本原理。我们来总结一下关键点,并拓展一些思考。

你可以从平台的众多层级获取信息,从硬件、固件、内部总线、内部网络、存储设备,到所有操作系统层、框架、动态链接库,直至应用程序。其中任何一个区域都可能产生系统日志,并成为攻击的目标。每个区域可能对应特定类型的攻击。

当我们谈论HIDS寻找攻击时,攻击当然需要利用某种漏洞才能进行。从主机的角度来看,这些漏洞可以是物理层面的(例如通过物理探针探测主板芯片间数据传输、在外部设备间插入设备、添加额外板卡或协处理器),也可以是软件层面的。因此,有时我们需要寻找的平台漏洞可能与经典的“寻找软件漏洞并利用”有所不同。HIDS检查硬件渗透或物理篡改的功能通常被归入“防篡改”范畴。

请记住,攻击可以针对平台、硬件、软件或两者兼而有之。我们拥有的这些平台信息源是攻击可观测数据的极其丰富的集合。由于你非常接近被攻击的元素,因此可能处于检测此类攻击的最佳位置,同时也处于对文件等进行本地缓解的最佳位置,无需进行大量复杂的协调。

然而,这种能力也带来了重大挑战,包括:如何在企业内大规模部署主机入侵检测并协调它们之间的信息?如何保持病毒或恶意软件的签名库更新?如何在平台级别区分正常行为和滥用行为?当然,性能也是一个主要挑战。

总之,主机入侵检测系统非常接近攻击源,其信息极具价值,有时能让我们真正实现一些自动化应对措施。

本节课的内容到此结束,在接下来的视频中,我们将更详细地探讨具体有哪些类型的攻击以及如何缓解它们。

010:HIDS类型与典型系统 🛡️

在本节课中,我们将学习主机入侵检测系统(HIDS)的主要类型及其典型代表系统。我们将探讨基于主机的入侵防御系统(HIPS)、基于审计日志的异常检测系统、文件完整性检查系统以及针对硬件攻击的检测方法,并通过具体产品实例来理解它们的工作原理。

基于主机的入侵防御系统(HIPS)示例

上一节我们介绍了HIDS的基本概念,本节中我们来看看一个具体的HIPS产品实例。

第一个例子属于HIPS类别,即恶意软件检测类型的HIPS。市面上有许多此类产品,例如迈克菲(McAfee)的基于主机的入侵检测系统。这是一个典型的、用于恶意软件检测和防护的HIPS产品。

如今,任何具有商业可行性的产品都不再仅仅是单机上的病毒查杀工具。几乎所有产品都集成了某种企业安全信息与事件管理(SIEM)系统。这些系统能够收集来自不同主机的信息,并以统一的格式呈现给企业。但在主机层面,系统仍然能够阻止单个病毒和恶意软件的执行。因此,主机入侵检测的实际运作并不需要每次都往返于某个中央SIEM系统。

以下是该HIPS系统功能的一些概述描述,其核心理念是提供一种跨越主机与网络边界的威胁防护。系统通过监控主机上应用程序的所有个体网络活动来实现这一点,并能够强制执行系统内发生的任何变更。虽然系统会涉及成本与合规性问题,但除了病毒查杀,该系统的重要功能还包括:

  • 基于签名的检测:允许查找基于签名的威胁。
  • 行为分析:理解应用程序的行为模式。
  • 集中管理:可以从中央位置锁定主机、更新配置并接收警报。

这是一个涵盖恶意软件检测整个领域的优秀示例。

基于审计日志的异常检测系统

对于交互式攻击类型,我们需要在审计日志中寻找特定行为。这里需要回顾一些早期的入侵检测系统(IDS)。

大多数系统都基于一个非常相似的、用于主机入侵检测的元素。这基于丹宁假说,其核心观点是:安全违规可以通过监控系统的审计记录来检测。审计记录是关键,用于寻找异常的系统使用模式。这意味着这不是一个基于签名的系统,而是一个进行异常检测的系统,旨在尝试发现零日攻击或以前未见过的攻击。

因此,丹宁假说常被解读为“任何异常活动都表明存在违规”,但这并非丹宁假说的原意。不过,由于HIDS和异常检测系统的发展,它已被普遍这样理解。

IDES系统的工作原理

IDES系统的工作方式始于收集审计日志和系统日志。这些是主机层面的信息源,即来自系统层面、操作系统内部审计以及部分应用程序的流式日志。

以下是IDES处理数据的主要步骤:

  1. 操作模型与阈值:首先,系统对审计日志和系统日志进行统计变量分析,例如计数和发生时间,并寻找基于规则的直接违规。这是对审计数据的第一轮处理。
  2. 均值与标准差模型:违规数据和原始数据被送入一个均值与标准差模型。这是确定“正常”事件计数、内存使用量、磁盘活动等基线的地方。如果出现偏差,则会触发警报。
  3. 多元模型:上述结果会输入一个多元模型,用于分析各项指标与操作阈值规则之间的相关性。这是IDES内部的一种融合机制,旨在对所有已生成的警报进行关联分析。
  4. 马尔可夫模型:关联分析的结果被输入一个马尔可夫模型,用于判断攻击的各个要素组合在一起的概率是否会超过某个警报阈值。我们将在后续模块中详细讨论马尔可夫模型和分类器的概念。
  5. 生成警报:整个处理流程(结合了基于规则、基于异常、基于马尔可夫模型和融合分析)最终会生成一个警报日志。这些警报可以直接发送给用户,或输出到新的日志文件,在现代也可能被输入到某个HIPS程序中。

现代代理式HIDS架构

IDES和许多现代系统(包括前面提到的迈克菲系统)的架构,实际上是基于代理的系统。其思路是在大量主机上部署小型检测器,并将结果汇总到中央位置。

这并不改变本地主机可以运行检测和防护功能的事实,但通过仅回传警报而非原始数据,避免了大规模原始日志文件的传输。这些独立的检测器只具备本地视图,这在攻击目标是主机上的文件或活动时很有价值。但如果攻击是协作式的,则可能需要更全局的视图。

因此,HIDS/HIPS系统从独立的单台PC,发展到通过安全事件管理器接入大型异构环境。IDES及其后续的Emerald系统成为首批基于代理的检测系统,它们催生了我们现在看到的许多产品和服务。

文件完整性检查系统示例

我们讨论过的另一种主要类型是完整性检查系统。以Tripwire为例,这是一个开源版本,易于在虚拟机中安装,也是本课程练习的一部分。

Tripwire的核心是一个文件完整性检查器。它创建加密校验和作为基线,并对文件的任何更改发出警报。开源版本附带一个默认配置文件,但需要修改,因为它对Unix系统关键文件的假设可能不适用于你的特定系统。

Tripwire在文件系统层面运行,因此你指定为“关键”的文件至关重要。与迈克菲等产品类似,Tripwire也已从其最初在主机本地收集变更和威胁指标的文件完整性管理器,发展为企业版本,能够将审计数据上传至公共企业区域,并集成配置合规管理功能。通过加密校验和,你不仅可以检测更改,还可以验证整个配置是否符合关键文件的基线要求。

针对硬件攻击的HIDS检测

在之前的视频中,我们未深入探讨硬件攻击的检测。硬件攻击有多种形式,例如旁路攻击、冷启动攻击、主板上的探测、损坏或受感染的组件(即供应链攻击)。

这些攻击仍然会产生可被HIDS发现的攻击可观测项。关键在于,即使攻击不通过传统软件进行,它仍然会产生可观测项。通常,低级别的系统日志和硬件握手日志可能包含这些难以检测的攻击的迹象。

接下来,我们将具体讨论冷启动攻击,以及如何在硬件层面发现这些攻击指标。

冷启动攻击及其可观测项

冷启动攻击是指攻击者使用外部操作系统(如CD-ROM或USB)启动目标系统,从而绕过目标系统的安全控制,使攻击者的控制生效。

为了实现这一点,攻击者需要给系统断电重启,以便从其设备启动。如果无法直接启动,攻击者还可以通过冷却芯片来维持主板内存中的残留数据,然后将内存挂载到外部操作系统进行数据转储。这样,攻击者可以绕过任何身份验证或保护,从内存中提取信息,例如各种密钥或其他通常只保存在内存中的安全相关数据。

在这种攻击中,存在哪些可观测项呢?

首先,系统最低级别会记录启动日志。如果从CD-ROM或USB启动,会产生大量独立于操作系统加载的日志,表明系统以非正常方式启动。可能还有其他日志显示从外部设备启动,或存在非常低级的硬件日志记录硬件层面的启动协商过程。

这些日志仍然可以通过某种带外处理方式传输到SIEM系统。虽然普通PC不典型,但并非没有系统可以传输冷启动日志。然而,实时获取这些数据对大多数系统来说是个难题。通常,只有在系统再次正常启动后,日志文件才会传输到中央位置。因此,从攻击发生到HIDS发出警报,可能会有几分钟到几小时的延迟,如果攻击者事后关闭了系统,则延迟可能更长。

可信平台模块(TPM)的完整性保护

另一种保护启动周期的完整性检查HIPS系统是可信平台模块(TPM)。TPM是一个硬件芯片,位于系统主板上,设计用于创建从硬件、引导扇区到BIOS启动所需的加密密钥。

TPM通常的工作方式是:在主板通电时,首先验证用于选择系统启动位置的BIOS是否正确,并进行加密签名。如果不正确,它可以选择不启动,或者将加密的完整性度量值发送到日志文件并最终到达中央位置。通过这种方式,可以一直保护到BIOS级别。

TPM允许链接这种加密完整性检查。一旦验证BIOS正确并用于启动,就可以验证磁盘上的引导扇区是否正确,进而可以链接验证从磁盘加载的其他引导扇区,理论上甚至可以验证操作系统启动时加载的关键文件。

在目前大多数实现中,TPM主要用于保护启动周期的最低级别。但TPM可用于在整个系统中链接任意数量的完整性检查,并利用这些完整性检查信息来阻止或记录启动周期的各个要素。这可以为HIPS提供信息,以阻止不良软件、USB或CD-ROM启动,或者至少向中央位置或单机用户指示系统未正确启动。

因此,硬件中的TPM可以深入到任何可能的BIOS替换件或来自USB/CD-ROM的低级启动之下。这些是非常低级的硬件对HIDS的支持,展示了完整性检查和完整性入侵检测系统如何用于验证启动是否正确。

总结

本节课中,我们一起学习了多种HIDS类型及其典型系统。

TPM旨在保护启动过程的完整性,其硬件用于验证初始启动的完整性,并可以构建一条直到登录的信任链。它产生的完整性度量值是基于完整性或基于目标的IDS所需的原始材料。

以上是当今现代系统中运行的一些HIDS类型和不同要素的示例。虽然商业产品中有很多变体,但大多数要么试图深入到系统和硬件底层并利用TPM的功能,要么演变为跨企业的基于代理的同步系统,以实现单个主机的本地保护和整个企业的全局报告与配置。

011:HIDS可检测的攻击类型(第二部分)🔍

在本节课中,我们将深入探讨主机入侵检测系统(HIDS)能够检测的具体攻击类型。我们已经了解了HIDS收集的信息类型以及部署在系统上的不同HIDS类型,现在让我们来看看HIDS实际可以检测哪些攻击。

概述

任何入侵检测系统要检测攻击,前提是攻击行为必须在可观测数据中留下证据。对于HIDS而言,这意味着攻击痕迹必须存在于操作系统或系统层面的各种日志和活动记录中。因此,我们讨论HIDS可检测的攻击类型时,必须从这些可观测数据的来源出发。

上一节我们介绍了HIDS的基础概念,本节中我们来看看攻击行为具体如何在这些可观测数据中体现。

可观测数据源

HIDS检测攻击的能力,取决于攻击是否在以下可观测数据源中留下痕迹:

  • 进程信息:包括进程的启动/停止时间、内存使用量、进程所有者、进程打开的网络/文件连接,以及系统调用链。这些信息对于判断程序或进程是否行为异常至关重要,无论是代码本身是恶意软件,还是用户操控进程执行了不当操作。
  • 用户与系统行为:例如登录时间是否异常、是否启动了不常见的程序。这与单个进程信息不同,更侧重于用户或系统在何时运行何种应用程序的行为模式。
  • 趋势数据:这是比用户行为更高层次的抽象,关注的是用户或系统活动随时间的变化模式,以及什么构成了该环境下的“正常”行为。

从进程信息到进程组行为,再到长期趋势,我们分析的抽象层次逐渐提高。

此外,还有一类特定的攻击旨在提升权限。这让我们回想起James Anderson报告中描述的经典攻击分类。

基于经典分类的攻击检测

James Anderson报告中描述的所有经典攻击类型,都应该能在基于主机的入侵检测系统中被检测到,因为它们都会在主机上留下可观测的痕迹。

  • 外部渗透:攻击者寻找系统漏洞或用户可利用的弱点,以提升权限、获取未授权信息。
  • 内部渗透:这通常表现为内部威胁,攻击者利用漏洞进行权限提升。这类攻击在主机层面非常常见,是HIDS重点检测的对象。即使是由外部攻击者植入的恶意软件,其在主机上的运行权限也往往表现为内部用户,因此其观测特征与内部渗透相似。
  • 非法行为:检测这类攻击通常比较困难,因为用户可能在权限范围内进行操作。但HIDS仍可通过分析用户运行的进程是否符合安全策略,来发现异常。

除了这些经典的、与交互式入侵相关的攻击,HIDS还能检测许多通常隐藏在操作系统中的活动,例如Rootkit、远程控制进程等自动化入侵行为。

具体的攻击类型分类

以下是各类攻击的列表,从窃听到拒绝服务。每一类攻击中都存在可以通过HIDS检测的主机层面攻击或可观测数据。

以下是HIDS可检测的主要攻击类别:

  1. 窃听:例如通过键盘记录器或附着到其他进程来窥探进程内存。HIDS可以通过检测键盘记录器等程序的安装、或进程附着其他进程的行为来发现此类攻击。相关可观测数据存在于进程日志或硬件事件日志中。
  2. 伪装:攻击者冒用他人登录凭证或进行权限提升。尽管这类攻击很难防范,但登录行为和权限提升操作本身会在主机上留下日志记录,可供HIDS分析。
  3. 重放攻击:攻击者捕获主机上的某些数据(如认证令牌)并重新发送。虽然我们通常认为重放攻击发生在网络层面,但在主机上重放数据或命令同样可能发生,并且可以被HIDS检测到。
  4. 数据篡改/文件完整性破坏:这正是像Tripwire这样的文件完整性检查工具所针对的。HIDS可以通过比对文件哈希或监控文件更改来检测此类攻击。
  5. 错误路由:这类攻击通常针对网络,但在主机内部也可能发生。例如,通过API攻击滥用程序接口,或利用Rootkit钩子(Hook)篡改程序加载的DLL(动态链接库),都属于在计算机内部错误路由数据路径。此类攻击在主机上同样有迹可循。
  6. 特洛伊木马、病毒、蠕虫:这些是意外的或恶意的应用程序二进制文件。检测它们是反恶意软件/防病毒软件的主要任务,而HIDS可以通过行为分析或特征匹配来辅助检测。
  7. 抵赖攻击:这类攻击涉及用户行为与认证之间的绑定问题。在主机上,许多伪装攻击最终都可能表现为抵赖攻击的形式,这些痕迹在主机上是可见的。
  8. 拒绝服务与系统崩溃:系统崩溃和因此导致的重启事件都会被记录在系统日志中,HIDS可以据此检测到导致服务中断或系统不稳定的攻击。

以上所有攻击类别中,都有在主机上常见且能被HIDS检测到的具体攻击实例。这证明了HIDS的强大能力,因为它非常接近攻击的终点。

我们还可以回顾在模块1中讨论的原始攻击分类法(Taxonomy)。在“目标”这一维度上,从账户、进程、数据、组件到计算机,所有这些目标都是基于主机的。因此,针对这些目标(账户、进程、数据、组件、计算机)的大多数攻击行动,都可以在主机上被观测和检测到。通常只有以“网络”和“互连”为目标的攻击,不会直接在主机可观测数据中留下明显痕迹。

总结

本节课中,我们一起学习了主机入侵检测系统(HIDS)能够检测的各种攻击类型。关键在于,攻击必须在主机的可观测数据(如进程信息、系统日志、用户行为模式)中留下证据。HIDS不仅能检测经典的权限提升和渗透攻击,还能发现Rootkit、木马等隐蔽威胁,覆盖了从数据窃听到拒绝服务的广泛攻击类别。正是由于HIDS紧邻攻击端点,它能对发生在主机层面的绝大多数威胁提供有价值的检测能力。

012:11_导论

在本节课中,我们将学习约翰霍普金斯大学《入侵检测》课程中关于主机入侵检测系统的概述。我们将聚焦于模块三和模块四的核心内容,了解主机完整性攻击检测、硬件与侧信道攻击检测以及恶意软件检测等关键主题。

大家好,我是 Philip Ching。我将为大家介绍模块三和模块四的内容。

这两个模块的重点是主机入侵检测系统

在模块三中,Tong 介绍了平台信息的各个层级,以及可以被不同类型主机入侵检测系统检测到的相关威胁与漏洞。

当我们提到“平台”时,通常指的是底层的操作系统。

在模块四中,Toang 将介绍更多关于不同类型检测的信息。

主要主题包括:

  • 主机完整性攻击检测
  • 硬件与侧信道攻击检测
  • 静态与动态恶意软件检测

在主机完整性攻击检测部分,我们将讨论以下主题:

  • 基于目标的监控
  • 根工具包检测
  • 数据完整性/主机完整性监控与检测
  • 两种完整性模型

你可能在其他场合听说过这些概念。

但请注意,我们反复使用了“完整性”和“检测”这两个词。

接下来是硬件与侧信道攻击检测部分,我们将讨论不同类型的检测:

  • 硬件攻击检测
  • 供应链攻击检测
  • 物理不可克隆函数
  • 侧信道攻击检测
  • 电磁干扰攻击检测

再次请注意,我们反复使用了“检测”这个词。

在模块四的这一部分,我们将讨论静态与动态恶意软件检测。

同时,我们还将涵盖基于主机的恶意软件检测。

以下是该部分将涉及的内容:

  • 动态观察软件执行
  • 误用检测与异常检测
  • 序列、时间、延迟、嵌入检测器
  • STIDE 检测器
  • 混合系统与堆栈
  • 基于主机的安全系统
  • 混合签名检测

我们将介绍一个名为 OSSEC 的主机入侵检测系统作为理论与实践的结合。OSSEC 代表开源安全。

供你在本模块及其他模块中进行实践。

当你学习不同类型的攻击和异常理论时,请时刻思考:你实际上将如何检测这些入侵行为。

请记住,关键词是“检测”。

本课程的学习目标要求你实践理论,并最终能够发现并捕获恶意行为。

感谢观看。


本节课总结

在本节课中,我们一起学习了主机入侵检测系统的课程导论。我们明确了模块三和模块四的学习重点,即主机完整性攻击检测、硬件与侧信道攻击检测以及恶意软件检测。课程强调了“检测”这一核心目标,并介绍了用于实践的开源安全工具 OSSEC,为后续深入的技术学习奠定了基础。

013:主机完整性攻击检测 🔍

在本节课中,我们将重点学习一种专注于完整性的主机入侵检测系统。这类系统监控主机内数据项、操作系统等本应保持恒定的元素。一旦这些元素发生非预期的变化,就表明可能存在攻击或篡改,需要进行调查。

上一节我们介绍了主机入侵检测系统(HIDS)的基本概念,本节中我们来看看其中专注于完整性监控的特定类型。

目标式监控与完整性监控 🎯

这种基于主机的IDS,其核心是关注系统的完整性方面。如果你还记得之前的模块,这与目标式入侵检测系统非常相似,因为它也运行在主机上,但监控的是特定的“目标”。

目标式监控在这种语境下也被称为完整性监控,两者本质上是同一件事。当我们谈论一个特定“目标”时,指的是主机内一个必须保持其完整性的特定数据元素或项目。

在主机内部,这意味着“目标”是某种非常具体的资产。该资产会生成关于该对象变更的活动记录。对于一个本不应改变的对象,其变更记录序列就能指示系统可能遭受了攻击。

以下是此类监控的主要例子:

  • Tripwire
  • StackGuard

随着本模块的深入,我们还将讨论其他不同类型的完整性度量方法。

如前所述,这种系统监控的是修改。对于大多数目标式监控,我们期望某些数据元素是完全静态的。但这并非目标式监控的唯一方式。你可能有一个会变化的目标,但只以特定的、已知的方式变化。如果你有一个模型来描述目标应如何变化,并可以监控目标是否符合该模型的变更,那么你也可以对随可信进程而变化的事物进行目标式监控。

目标式监控的挑战 ⚠️

目标式监控面临许多问题。首先,你必须选择正确的资产进行监控。其次,你需要决定测量的频率。最后,当被监控对象以预期方式发生变更时,如何更新“正常”结果的基准。

例如,假设我正在监控Linux系统中一个特定的二进制文件,比如登录程序login的二进制文件。这个登录程序本应永不改变,因此它可能是一个很好的监控目标,可以帮助我了解其是否遭受了攻击。如果攻击者篡改了登录二进制文件,就可能绕过身份验证。然而,如果我要对系统进行补丁或更新,那么显然我必须更改那个特定的基准,以免合法的修改被误报为攻击。这些就是我们在讨论目标式监控时会涉及的一些问题。

在分类法中的位置 📊

那么,这种目标式监控在我们的分类法中处于什么位置?基本上,如果我们具体看“目标”,如果目标存在于主机上,那么我们就有了基于主机的监控(这与任何HIDS相同)。但如果我们看所寻找的特定“行动”,那么这些行动将是任何与修改特定元素相关的操作。

在攻击分类中,诸如探测、扫描、洪水攻击等行为不会改变目标;身份验证、绕过、缓冲区溢出、读取等行为通常也不直接修改。但当我们看到底部的修改删除等操作时,这些就是我所说的目标式监控所关注的核心行动。这就是我如何将攻击、工具、漏洞与对主机内目标的修改行为联系起来。

经典工具:Tripwire 🛠️

最常见的、也是最早的完整性监控工具之一是Tripwire。它由Gene Kim和Gene Spafford于1992年创建(Gene Kim是当时Gene Spafford教授的学生)。这是Gene Kim 1992年博士论文的一部分。Gene Kim后来成为Tripwire公司的首席技术官,至今仍深度参与完整性和变更管理相关系统的工作。

Tripwire的实际功能是,针对一个基准配置执行文件完整性检查。首次使用Tripwire时,你必须创建这个基准配置。然后,你可以定期或按需对这些文件执行完整性检查。这就是你在本课程中将使用的开源版Tripwire的核心功能。

默认情况下,你下载的开源版Tripwire是为Cyrus操作系统设计的。因此,当你在Linux上安装它时,可能会看到大量错误,提示Tripwire基准配置中预设的某些文件不存在。这不应该成为问题,它仅仅意味着你需要更新Tripwire的配置文件,以包含你想要保护的、系统上的特定文件。

但这引出了一个非常重要的问题:你必须知道哪些文件是攻击的关键目标。如果你不知道哪些文件在攻击中会被修改,你就不知道应该配置哪些文件来建立基准和监控变更。当然,你建立基准的文件越多,在主机上检查这些文件的速度就越慢,资源消耗也越大。因此,你真的需要挑选那些本不应改变且对各类攻击至关重要的文件。

可执行的二进制文件以及位于/etc等目录下的主机配置文件,是攻击者的天然目标。因此,这些是开始使用Tripwire进行保护的首选位置。如果攻击者更改了这些文件,他们就能改变系统的身份验证机制和这些文件的使用方式。主机配置文件的更改可能影响系统启动方式、默认运行的程序、网络配置以及其他主机行为。所有这些关键文件(主要位于/etc等目录)都是你想要放入Tripwire配置文件的地方。

当然,Tripwire并非唯一的文件完整性检查工具。自1992年以来,这项技术被证明极具价值,几乎每家安全公司都推出了某种版本的完整性检查器,从赛门铁克到McAfee,再到Trustwave等。此外,还有像Samhain这样的开源版本,它们功能相似,甚至可以作为Tripwire的更高级替代品。Tripwire公司本身也已转向开发更复杂的产品,其功能远超基于配置的简单文件检查。

检测Rootkit 🕵️♂️

完整性检查器可以做的一件事是检测Rootkit。那么,什么是Rootkit?Rootkit是一种软件,它潜伏在系统其他安全机制、身份验证或可观察组件之下。例如,一个Rootkit可能成为内核的一部分,挂钩到负责列出进程的组件,以确保当你实际探查系统上运行的程序时,运行Rootkit的进程永远不会被显示出来。这是一种让恶意软件隐藏在系统内部的方式。一旦系统感染了Rootkit,你就已经破坏了操作系统运行方式的安装完整性。

有多种方法可以使用完整性检查来检测Rootkit。一种常见的方法是检查控制流的完整性。这试图确定你的操作系统是否被挂钩,各种系统工具的调用方式是否与操作系统安装时的原始状态完全一致。如果你对这些调用发生的方式建立了基准,那么完整性检查就能识别出是否安装了Rootkit。

因此,这些检查会验证DLL(动态链接库)的完整性以及内核挂钩。但请注意,这只有在基准和完整性检查本身未被破坏的情况下才有效。这一点至关重要。完整性检查器必须在恶意软件安装的层次之下运行。如果恶意软件控制了完整性检查器实际查看的内容,那么你就无法信任完整性检查器给出的关于是否发生变更的真实结果。

这就引发了所谓的“逐底竞赛”。由于系统中的每一层都使用其下一层的功能,如果你控制了下一层,你就可以对上一层的任何工具撒谎。因此,如果你的完整性检查器作为一个应用程序运行,而你破坏了操作系统,那么你就可以对完整性检查器撒谎,使其产生错误的结果。如果你的检查器在内核中工作,攻击者可以潜入更底层的固件并对它撒谎,那么内核也无法获得真相。即使你将完整性检查器一直深入到固件层,攻击者仍可能通过某种供应链攻击修改硬件,对固件撒谎,从而从根本上绕过检查。这就是我们所说的“逐底竞赛”。

当然,即便如此,你仍然可以对部分内存建立基准并检查Rootkit活动。因此,使用基于主机的完整性检查器来识别Rootkit这种特定攻击类型,有很多不同的方法。

数据完整性模型 📈

操作系统漏洞和针对操作系统的攻击,并非数据完整性或完整性检查器唯一重要的领域。对于某些应用程序而言,系统中数据的完整性,与代码或系统本身的完整性同等重要。你可以想象,在银行和金融领域,你希望自己银行账户的余额具有高度的完整性,不易被篡改。医疗记录、知识产权等也是如此。

这种对数据完整性模型的需求——即保证数据的完整性(不一定是机密性)——催生了一些与Bell-LaPadula模型互补的模型。你可能在早期的安全课程中记得Bell-LaPadula模型,它本质上创建了一个“星属性”,根据安全许可级别和文件或对象的分类来提供机密性保护。

从Bell-LaPadula模型出发,Biba完整性模型Clark-Wilson模型被创建出来,它们更侧重于数据完整性。

Biba完整性模型

首先谈谈Biba完整性模型。Biba模型与Bell-LaPadula非常相似。主体被授予许可,客体被分类,就像在Bell-LaPadula中一样。也像在Bell-LaPadula中一样,存在一个“星属性”。在Biba模型中,星属性意味着一个主体只能向不高于其自身完整性级别的客体进行写入。

例如,如果我有一个具有“秘密”级别许可的主体,以及一个“秘密”级别的客体,那么这个主体可以向该客体写入。如果有一个“绝密”级别的客体,这个主体也可以向更高级别的客体写入。但不能做的是向更低级别的客体写入。

这意味着,如果我的主体处于“秘密”级别,而有一个“未分类”的客体,我不能从该主体向那个特定客体写入。这保证了较低分类级别的客体可以具有比主体更高的完整性,因为我无法向这些较低层写入,从而污染它们。这是一个旨在保证完整性的模型。

然而,在当前项目中,我们很少看到Biba完整性模型被实现。主要是因为,就像Bell-LaPadula一样,要实现它,必须在操作系统中内置强制访问控制的概念。你不能对这些元素进行自主控制,因为如果允许自主控制,用户就可以简单地移除限制,并自主地进行写入操作。由于我们不希望这处于用户控制之下,这就需要强制访问控制以及随之而来的所有复杂性。

Clark-Wilson完整性模型

与Biba完整性模型相比,Clark-Wilson完整性模型是当今许多实际系统中真正使用的模型。Clark-Wilson并非完全遵循Bell-LaPadula的模式,而是始于三个具体目标:

  1. 防止未经授权的修改。
  2. 保持数据的一致性。
  3. 防止授权但不恰当的修改。

你会发现,这些目标实际上与我们早在模块1和2中讨论过的安德森报告中的内部威胁类别相匹配。Clark-Wilson模型正是从这些目标开始的。

为了运行这个模型,你需要将系统上的所有数据划分为受约束数据项不受约束数据项。CDIs是那些在系统中受到某种完整性控制的数据项。UDIs则不受完整性控制。但是,存在可信进程可以使UDIs转变为CDIs,或者影响CDIs。关键在于,只有通过可信进程,不受约束的数据项才能成为或影响受约束的数据项。

整个Clark-Wilson模型真正依赖于这样一个事实:你可以要求某种模型来验证CDIs是否处于有效状态。换句话说,CDIs要么处于完整性得到保证的有效状态,要么因为未按应有方式变更而处于无效状态。

这意味着,你需要定义良构事务,这些事务严格控制CDIs如何实际变更。这些就是我们的可信进程。因此,可信进程变更CDIs,其他任何东西都不能变更CDI。只要你的可信进程本身仍然保持完整性(当然,进程描述和数据本身也是CDIs),这些特定事物就将控制系统内CDIs的完整性。

与之前讨论的Biba完整性模型不同,包括Windows在内的许多操作系统实际上已经采用了至少一部分Clark-Wilson模型。原因是,我们可以用符合现代操作系统构建方式的、自然的方式来解释我们谈到的这三个目标。

例如,你需要以特定方式记录CDIs的变更。在Windows中,当CDI发生变更时,实际上会被记录到Windows事件日志中。这就维护了一份CDI变更的日志。因此,当你查看Windows事件日志时,你实际上看到的是受控进程的结果,以及当受控进程实际更改某些内容时发生了什么。这也使得Windows事件日志成为在主机层进行入侵检测时有价值的日志文件。

其作为入侵检测系统的运作方式是:对CDI的违反(即变更)会触发完整性违规。完整性违规正是IDS工作的核心。为了理解发生了完整性违规,你需要一个比变更CDIs的可信进程更可信的进程,这实际上依赖于一个安全引用监视器。安全引用监视器是操作系统内的一段可信代码,用于控制和监控CDIs,基本上是管理可信进程如何实际变更CDIs。因此,创建事件日志的Windows日志系统——事件记录器——实际上是Windows系统内部的安全引用监视器。它可能不是你期望的高度可信系统中那种经过形式化验证的引用监视器,但它在Clark-Wilson完整性模型中起到了相同的作用。这就是这些模型如何被整合到当今操作系统中的方式。

主机完整性检测的问题与挑战 🐢

在讨论如何进行主机完整性检测时,存在许多问题。首要问题是,我用于检测完整性攻击的资源,与完整性攻击的目标是相同的。这导致了之前提到的“逐底竞赛”:你使用同一个系统既作为攻击的目标,又作为检测攻击的工具。因此,如果你成功攻击了完整性机制,你就可以进而攻击该机制所保护的其他文件。

这类系统面临的另一个问题是,每台主机都必须独立受保护。在企业环境中,这可能使得部署和维护变得非常困难,尤其是在主机完整性方面,因为许多关键文件在整个企业中的变更速率可能不同。有些系统可能以不同方式打补丁。你将拥有具有不同关键文件的不同操作系统。所有这些都会使得在企业级别实施完整性监控更加困难。

此外,任何变更(例如必须在可信路径上执行的安全补丁)都必须更新安全基准,以便在进行未来的完整性检查时,知道更新后的基准是正确的。然而,这个更新过程本身也是攻击的目标。因此,攻击的目标由本身也是攻击目标的事物保护,而这些事物又由其他同样是攻击目标的事物保护……这就像那句谚语“全是乌龟驮着”,这基本上就是我们讨论主机完整性检测时所面临的情况。

企业级部署 🌐

这就引出了如何实现企业级部署的问题。如何从单台主机扩展到监控整个企业的主机?为了使其实用化,首先,你需要一个安全通道来将警报传出平台并将更新传入平台。为所有主机创建安全通道,是从单机主机完整性监控系统扩展到整个企业范围的第零步。

这在当今的商业产品中非常常见。想象一下,如果你必须将用Tripwire在单机上做的事情扩展到整个企业,在成千上万的系统上单独登录和检测,那将非常困难。因此,像Tripwire Enterprise和McAfee HBSS这样的工具包含了有助于协调所有这些工作的机制。然后,这些机制可以使用标准和各种技术来确保这些系统能够以可信的方式与某种中央服务器进行通信。

因此,企业内外完整性信息的交换可以通过像SCAP这样的标准来支持,你可以在相关网址查看更多细节。这可以作为从单机版Tripwire扩展到企业版Tripwire,或从基于主机的IDS扩展到某种企业系统的基础。

本节课中我们一起学习了主机完整性监控。当然还有更多额外信息,但这基本上是核心内容,即如何利用完整性的变化作为主机内的检测系统。这是整个HIDS中极其重要的一类,并且在检测零日攻击和我们未知的攻击方面非常成功。因为只要我能理解某个元素本不应改变,那么我不关心是什么导致了改变,任何完整性的变化都表明该系统遭受了攻击。这为我提供了额外的能力,让我知道发生了某种新的攻击,从而通常借助取证手段开始调查,查明主机上发生了什么导致了文件的变更。

014:硬件与旁路攻击检测 🔍

在本节课中,我们将继续聚焦于基于主机的入侵检测系统。我们将深入探讨针对硬件和旁路发起的攻击,并了解如何检测这类攻击。课程内容将涵盖硬件攻击检测的基本类型、供应链验证的挑战、物理不可克隆函数的概念,以及旁路攻击的原理与检测方法。最后,我们将通过一个具体的API攻击案例来巩固所学知识。


上一节我们讨论了基于主机的入侵检测系统(HIDS)的总体框架。本节中,我们将目光投向更底层,看看如何检测针对硬件本身以及利用旁路信息发起的攻击。

硬件攻击检测 🛡️

硬件攻击检测主要关注物理设备层面的安全威胁。以下是三种基本的检测类型。

完整性检查

完整性检查针对那些本应保持静态的配置或数据元素,监测其是否发生变更。在硬件层面,我们可以寻找那些具有静态可观测特性的组件,并检查其完整性。其核心思想是验证预期不变的事物是否被篡改。

供应链验证

硬件攻击可能发生在硬件供应或交付过程中的任何环节。攻击者可能在供应链中引入恶意硬件、假冒硬件或具有意外行为的组件。供应链验证主要是一个人工流程,旨在检查制造和运输的每个环节,确保每个组件仅按授权方式进行修改。需要注意的是,验证不仅限于初始供应阶段,硬件或底层操作系统的更新也可能在供应链中被篡改。

防篡改机制

防篡改机制是指当保护硬件组件的物理防护措施被物理访问时,会触发某种警报机制。这更接近于传统的警报系统。当这些机制与基于主机的入侵检测系统集成时,可以帮助HIDS识别硬件是否已被篡改或调整。


在讨论了硬件攻击检测的基本类型后,我们必须认识到,供应链攻击检测是当前最严峻的挑战之一。接下来,我们看看业界如何尝试解决这个“信任根”的问题。

供应链验证与物理不可克隆函数 🔬

目前,尝试对硬件进行基准测试和验证的技术,很多都聚焦于物理不可克隆函数 的概念。PUF利用的是每个芯片在制造过程中产生的、独特的物理特性。

其工作原理可以简化理解如下:在一个可信的芯片制造厂中,每个芯片内部都包含一些微小的、非确定性的电路路径。当向芯片输入一组特定的“挑战”比特时,这些比特会在芯片内部形成反馈回路,并产生“竞争”条件。由于制造过程中微小的物理差异,某些路径会比其他路径略快一些,这最终会导致输出一个特定的“响应”比特。通过输入多组挑战比特,可以获得一个长比特串,这个比特串就构成了该芯片独一无二的“指纹”。

芯片交付后,可以再次运行这些挑战比特。如果得到相同的响应,则证明芯片是原始且未被篡改的;如果响应不同,则表明硬件可能在供应链中遭到了替换或篡改。PUF为将硬件特征纳入入侵检测系统提供了一种潜在途径。


了解了如何从物理层面验证硬件后,我们转向另一种更隐蔽的攻击方式:旁路攻击。这类攻击不直接破解算法,而是通过分析系统的物理特征来窃取信息。

旁路攻击检测 📡

旁路攻击源于密码学领域,攻击者通过分析加密设备运行时的物理特征(而非明文或密文本身)来推断密钥信息。

以下是几种常见的旁路攻击方式:

  • 时序攻击:不同的密钥值在加密过程中可能导致微小的、特征性的时间差异。通过精确测量加密操作的耗时,可以推断密钥信息。
  • 功耗分析:不同的密钥或操作会导致设备功耗的微小变化。监测这些功耗变化可以用于密钥分析。
  • 电磁辐射分析:设备运行时会产生电磁辐射,这些辐射可能携带与处理数据相关的信息。

那么,入侵检测系统如何检测这类被动的旁路窃听呢?这非常困难,但一些初步的思路正在形成。例如,检测系统是否可以感知到因读取功耗信息而导致的功耗特征变化?能否探测到是否有传感器正在读取系统发出的特定辐射?这些检测通常与设备的具体物理特性紧密相关,但正开始被整合到基于主机的IDS中,以判断是否存在旁路攻击。


旁路攻击检测的一个前沿领域是量子信息交换。接下来,我们看看量子物理特性如何帮助检测窃听。

量子通信与旁路攻击检测 ⚛️

在量子信息交换中,检测旁路攻击意味着需要检测窃听设备获取信息的行为。量子通信的特性使得这种检测成为可能。

其核心原理基于“量子纠缠”。当一对光子处于纠缠态时,对其中一个光子的测量会瞬间影响另一个光子的状态,无论它们相距多远。更重要的是,任何试图在传输途中“读取”或测量这个光子的行为,都会不可避免地破坏其量子态。

因此,在量子通信中,如果通信双方发现光子的量子态被意外破坏,就可以断定传输通道中存在着窃听行为。即使攻击者试图复制一个相同值的光子重新发送,也无法复制出与原始光子相同的纠缠态。通过这种方式,我们可以利用量子物理定律本身来检测旁路攻击。


许多硬件和旁路攻击最终都需要通过某种应用程序编程接口 来获取信息。因此,API攻击检测成为一个关键环节。

API攻击检测 🔌

API攻击检测关注运行进程之间的通信是否被攻击者观察或篡改。攻击可能被动地监听API调用,也可能主动地将通信重定向到恶意端点(类似于中间人攻击)。

检测这类攻击的核心在于:了解系统上安装了什么、安装在哪里,以及这些API的完整性 是否得以维持。我们需要确保通信端点的真实性和通信过程未被劫持。


为了加深对API攻击的理解,你将通过一个阅读练习来探索一个具体案例。这个案例将展示攻击者如何利用加密设备上的API发起攻击。

练习:分析加密设备API攻击案例 📖

你将通过阅读《Security Engineering》第18章,具体是18.2.2节,来深入分析一个针对名为“4758”的加密设备的API攻击。

该攻击利用加密设备上的API,实质上获得了无限次尝试破解密钥的机会。虽然存在与此攻击相关的可观测指标,但需要认识到,这是一种从机器外部观察到的攻击,属于硬件风格攻击,并且严重依赖于旁路和外部的可观测信息。

你的任务是:仔细阅读第18章(特别是18.2.2节)中关于API风格攻击的内容,并尝试描述,对于这种特定攻击,有哪些可用的平台信息源包含了入侵检测系统所需的可观测指标。


本节课总结

在本节课中,我们一起学习了基于主机的入侵检测中针对硬件和旁路攻击的检测方法。我们探讨了硬件攻击检测的三种类型:完整性检查、供应链验证和防篡改机制。我们了解了供应链验证的挑战以及物理不可克隆函数这一潜在解决方案。我们还分析了旁路攻击的原理,如时序攻击和功耗分析,并看到了量子通信如何用于检测窃听。最后,我们认识到许多此类攻击通过API实现,因此API的完整性检查至关重要。

核心在于,无论是通过PUF、量子干涉还是API监控,将这些物理或底层的可观测指标与警报机制关联起来,才能帮助基于主机的入侵检测系统及时发出警报,告知我们系统正在遭受某种攻击。

015:静态与动态恶意软件检测 🛡️

在本节课中,我们将深入探讨主机入侵检测系统中最重要的一类:恶意软件检测。我们将学习如何识别系统中可能存在的恶意代码,无论它是静态存储在文件系统中,还是正在动态运行。

概述

恶意软件是我们当前在主机系统中面临的最危险的威胁之一。它可能通过网页浏览、电子邮件附件等多种方式进入系统。因此,主机恶意软件检测至关重要。检测方法主要分为静态检测和动态检测两大类。

静态恶意软件检测 🔍

上一节我们概述了恶意软件检测的重要性,本节我们先来看看静态检测。静态恶意软件检测主要存在于防病毒软件领域。这是一种被动扫描文件系统的方法,旨在通过特征码或其他识别技术,找出文件系统中存在的恶意软件。

大多数静态检测技术更像是取证分析,而非实时入侵检测。虽然在本课程中,取证分析通常超出范围,但由于一些静态技术在动态环境中也有效,并且许多主机入侵检测知识源于静态检测领域,我们仍需了解它。

静态分析包括对系统上二进制文件的静态分析,在某种程度上也包括对源代码的静态分析(尽管本课程不深入讨论源代码分析)。就本课程而言,静态恶意软件检测本身并不完全属于入侵检测范畴,它更像是一套取证工具。虽然许多入侵检测工具集成了静态检测功能,但我们将其视为对入侵检测系统的取证补充。

动态恶意软件检测 ⚙️

静态检测的重点是被动扫描,而动态恶意软件检测的核心在于:我们不想仅仅通过被动扫描来发现系统中的恶意软件;我们希望观察恶意软件的执行过程,并动态地根据其行为来判断是否属于恶意活动。这才是入侵检测系统应该关注的。

在动态恶意软件检测中,我们有两种基本方法:

以下是两种主要的动态检测方式:

  1. 在沙箱环境中观察执行:将可疑代码放在受保护的环境中运行,观察其行为而不造成实际危害。Java沙箱机制是这方面的早期实践,而像FireEye这样的公司则专注于此业务模型。
  2. 在正常软件运行时观察可观测指标:在正常工作过程中,监控正常软件运行时的各种可观测指标,试图识别出具有恶意软件特征的行为。

动态恶意软件检测具备我们之前讨论过的入侵检测系统的所有特征:它有一个事件队列或日志记录机制来收集来自内核的可观测数据;有一个分析模块来对事件空间进行划分和分类;还有一个报告或拦截模块,实现入侵检测或入侵防御的功能。

这是一个非常活跃的研究领域,每年有大量相关论文发表。本周模块中包含了一篇名为《恶意软件检测技术综述》的调查报告,很好地总结了这类主机入侵检测技术。

动态观测执行的方法 👀

那么,我们如何动态地观测软件执行呢?同样有两种主要途径:

以下是两种动态观测途径:

  • 观测正常执行:在正常环境中,观察软件执行的特征。这通常包括系统调用轨迹、栈上的活动、从数据段执行代码(即控制流从代码段转移到数据段)等。我们还可以观察数据流,分析软件内部的决策过程,类似于污点分析,以判断软件是否被外部控制。
  • 在受控环境中执行:在隔离环境中,可以观察非常具体的行为,例如:是否释放了额外的软件文件以备后用;是否开启了额外的网络端口或连接到具有不良声誉的URL或IP地址(现在已有服务可以查询URL或IP的声誉);当然,也可以在执行过程中检查特征码——这不全是异常检测,如果你有特征码,就可以在受控执行环境中进行匹配。

基于误用与基于异常的检测 🎯

无论是在受控环境还是自然环境中观测,我们都可以使用基于误用或基于异常的检测方法。主机恶意软件检测同样可以是基于特征(误用)或基于异常的。

基于特征的系统会检查代表恶意软件的特定模式。这些模式是代码执行过程中的特定活动序列,而不仅仅是静态的二进制模式。它还可以检查与恶意软件相关的特定URL、IP地址,或者检查自修改代码的特征。例如,如果一个二进制文件解包成多个将被执行的文件,我可以动态检查每个解包后的文件是否匹配已知的恶意软件特征。

基于异常的系统则与我们之前讨论的异常检测原理相同:必须先学习或定义“正常”行为,才能区分正常与异常。可以通过多种方式来实现:

  • 学习正常的执行模式及其变体。该领域的开创性工作是《Sense of Self for Unix Processes》这篇经典论文。
  • 为软件指定正常行为规范,并观察偏差。这是基于规范的恶意软件检测,旨在指定软件的关键行为(而非全部),这些行为会被大多数常见恶意软件模式破坏。
  • 将正常行为表示为状态机或隐马尔可夫模型,通过模型来检测偏离正常行为的异常。

示例:序列时间延迟检测器 ⏱️

《Sense of Self for Unix Processes》论文中的一个实例是序列时间延迟检测器。它是一个基于滑动窗口的检测器,每次查看连续六个系统调用的执行块,并在每次执行新系统调用时滑动窗口。它通过学习程序的正常调用轨迹,来理解哪些执行模式是之前出现过的。

其工作方式可以简化为:假设正常模式有 ABCDEFGHA 等。当出现一个新模式 AFGBA 时,检测器会将其与所有已知正常模式比较,如果从未见过,则触发警报。

本周模块中有两篇论文:原始的《Sense of Self for Unix Processes》和另一篇名为《Y6》的论文。《Y6》论文指出了该检测器存在的问题,这充分说明每种学习技术只能检测执行轨迹中特定类型的异常。例如,对于序列时间延迟检测器,其检测能力很大程度上依赖于窗口大小(论文中为6),并且只能检测特定类型的恶意软件。这很好地展示了该领域研究是如何随时间发展的。

混合系统 🤝

当然,除了纯异常系统和基于特征的系统,还有很多混合系统。目前商业和开源世界中的产品几乎都使用多种检测技术,而非单一技术。为什么?正如我们在《Y6》论文中看到的,所有技术都有其局限性。通过创建包含多种技术的混合系统,可以降低误报率、提高检测率,使系统更具商业可行性。这就是关键所在。

混合系统既存在于基于特征的检测中,也存在于基于异常的检测中。

混合异常检测 🧠

混合异常检测的技术大多涉及集成分类器的思想。这种技术将多个相对简单或直接的分类器组合在一起,让它们相互协作,共同对事件空间进行分类。这是创建机器学习算法(如神经网络)的一种方式,能够比单一异常检测系统更好地进行检测。

例如,考虑rootkit检测。我可以结合基于特征的rootkit检测方法和基于“自我感知”的异常检测方法,从而降低对某类恶意软件的误报率。有一个很好的例子是针对“鬼网”这类恶意软件的检测。通过结合rootkit检测和自我感知检测,检测鬼网的误报率显著降低。

集成分类器的核心思想是通过比较不同环境下的异常来减少误报。例如,如果我在多个运行相同软件的系统上部署检测,在系统1上发现一个异常,而在系统2和系统3上没有,那么这个异常就更可能与恶意软件或该系统特有的问题相关,从而帮助降低误报。

示例:基于规范的检测——StackGuard 🛡️

另一个基于规范的异常检测系统例子是StackGuard。它是一个用于防御缓冲区溢出攻击的产品。StackGuard本质上是一个基于规范的异常检测系统,它不针对任何特定的缓冲区溢出攻击,而是使用“金丝雀值”的概念。金丝雀值是栈中的一个额外字,如果它被覆盖,就表明栈中发生了溢出。

其原理是:在正常的栈布局中,缓冲区内的字符串向下增长。为了通过缓冲区溢出来改变返回地址(使其指向恶意代码),金丝雀值会被覆盖。通过检查金丝雀值是否被改变(这是一个被检查的规范),可以在返回地址被使用之前检测到缓冲区溢出攻击。

重要的是,金丝雀值必须是随机选择或不可预测的,否则恶意软件可以在溢出时用原值覆盖它,从而绕过检测。这体现了入侵者与防御者之间的共同演化:最初固定的金丝雀值容易被绕过;改为随机值后,检测变得更复杂;随后,金丝雀值被保护起来,防止进程读取……双方在不断升级对抗手段。

混合特征检测 🔄

混合特征检测结合了静态和动态特征生成技术来检测恶意软件。它旨在解决一个难题:特征码在恶意软件被发现后,很难及时产生良好、独特的特征码。流程通常是:发现恶意软件 -> 分析 -> 创建特征码 -> 验证唯一性 -> 分发。

现在有一些系统试图自动化这个过程。例如,Honeycomb 系统尝试从蜜罐活动中自动生成基于主机的特征码。蜜罐专门用于检测攻击,当攻击被检测到时,系统会自动生成特征码并推送到主机,这比人工介入快得多。

另一个例子是 MCF 系统,它在检测到恶意软件时,尝试根据其行为自动生成特征码。这是一种面向沙箱的执行方式,生成的签名可用于保护实际运行环境。

此外,也可以针对打包技术生成特征码,以检测使用类似打包算法的一类恶意软件。但遗憾的是,打包算法很容易被攻击者更改、更新和混淆,因此如今仅依赖打包技术特征码的检测效果可能不佳。

当前研究与产品 🚀

这方面的研究一直持续至今。例如,2014年的一篇论文仍在基于《Sense of Self for Unix Processes》的思想,研究使用系统调用模式的行为检测系统。该论文使用极限学习机(一种集成神经网络分类器),其ROC曲线显示出对某类攻击较好的检测效果(ROC分析我们将在后续课程深入探讨)。图表中,越靠近左上角的检测器越好,越靠近对角线的则越差。该研究实现了在较低误报率下的良好检测率,表明这仍是一个活跃的研究领域。

除了研究,这些技术如何影响实际产品呢?一个例子是 HBSS。这是一款由 McAfee 支持的产品,在美国联邦政府中广泛用于主机安全。它是一个商业主机入侵防御系统,旨在监控、检测和缓解基于主机的攻击。它是一个混合系统,包含多种模块:资产配置、基于特征码的防病毒、类似Tripwire的基线监控、设备控制、传统HIPS策略执行、流氓软件检测以及审计功能。

课程项目工具:OSSEC 🔧

在本课程的项目中,我们将重点使用 OSSEC。这是一个集成了本模块讨论的多种恶意软件和攻击检测功能的主机入侵检测系统。OSSEC 提供完整性检查、rootkit检测、基于时间的警报、主动响应和Windows注册表监控等功能。从其核心来看,OSSEC 完全符合我们对一个入侵检测系统的所有标准描述。

OSSEC 的工作流程包括:日志收集器、将日志解码为特定元素的解码器、综合分析来自不同收集器日志的分析器,以及通过邮件等方式发出警报的警报功能。它正是我们通常期望看到的那种入侵检测系统。

总结 📝

本节课中,我们一起学习了主机入侵检测中关于恶意软件检测的核心内容。我们了解到:

  • 恶意软件检测分为静态检测(如传统防病毒扫描)和动态检测(观察运行行为)。
  • 动态检测有两种主要方法:在沙箱中观察和在正常环境中监控
  • 检测技术可分为基于特征(误用)的检测基于异常的检测,而实际产品多采用混合系统以取长补短。
  • 我们探讨了如序列时间延迟检测器、StackGuard等具体技术实例,以及当前的研究趋势。
  • 最后,我们介绍了HBSS等商业产品和OSSEC这款我们将要实践的开源HIDS工具。

现在,你应该能够理解像Tripwire这样的基于目标的HIDS与像OSSEC这样更动态的HIDS之间的区别。尽管实现方式多种多样,但请记住,一个入侵检测系统本质上都是围绕收集数据 -> 分析 -> 响应这个过程来构建的。

016:网络入侵检测与防御系统导论 🛡️

在本模块中,我们将开始学习网络入侵检测系统(NIDS)和网络入侵防御系统(NIPS)。这些系统对于理解如何将网络可观测数据映射到跨越网络边界的各类攻击至关重要。

概述

网络入侵检测系统是开源和商业安全领域中最常见的一类系统。它们不仅用于监控外部流量进入内部网络,也日益用于检测内部信息外泄,例如恶意软件外传数据或内部人员发送信息到外部系统。

我们将使用七层ISO模型作为框架,来梳理NIDS可观测数据的来源。我们会探讨每一层产生的数据痕迹,并介绍一些基于特征检测和异常检测的常见NIDS产品。

学习目标

在本模块结束时,你将能够:

  • 准确描述什么是NIDS。
  • 对现有的不同类型NIDS进行分类。
  • 为应用NIDS开发一个实际用例,以区分DDoS攻击和突发流量。
  • 识别NIDS能够检测哪些类型的攻击。
  • 在已搭建的虚拟机上安装并运行你自己的NIDS。

NIDS简介与重要性

网络入侵检测系统是目前最流行的安全监控工具之一。它们主要监控流入网络的流量,同时也越来越多地用于监控内部网络的信息外流,无论是通过恶意软件泄露,还是内部人员有意向外发送数据。

分析框架:ISO七层模型

为了系统地理解NIDS的可观测数据来源,我们将借助ISO七层模型。这个模型帮助我们清晰地定位网络活动中每一层产生的数据。

以下是ISO模型的七个层次及其简要说明:

  1. 物理层:负责在物理媒介上传输原始比特流。
  2. 数据链路层:在直接相连的节点间提供可靠的数据帧传输。
  3. 网络层:负责在不同网络间进行数据包的路由和转发。
  4. 传输层:提供端到端的可靠或不可靠数据传输服务。
  5. 会话层:管理通信会话,控制对话的建立、维护和终止。
  6. 表示层:处理数据格式转换、加密与解密。
  7. 应用层:为应用程序提供网络服务接口。

NIDS的工作原理与类型

NIDS通过分析网络流量来识别可疑模式或违反安全策略的行为。根据检测方法,主要分为两大类:

以下是两种主要的NIDS检测类型:

  • 基于特征的检测:系统维护一个已知攻击模式的数据库(特征库),通过将网络流量与这些特征进行匹配来发现攻击。其核心逻辑可以简化为:
    if network_packet matches known_attack_signature:
        generate_alert()
    
  • 基于异常的检测:系统首先建立网络正常行为的基线模型。当观测到的流量显著偏离这个基线时,则触发警报。其核心思想是:
    警报条件:当前流量模式 ∉ 正常行为基线
    

总结

本节课我们一起学习了网络入侵检测系统的基础知识。我们了解了NIDS的重要性及其监控内外流量的双重角色,引入了ISO七层模型作为分析框架,并探讨了基于特征和基于异常这两种核心的检测原理。在接下来的课程中,我们将深入探讨如何具体应用这些知识来分析和应对网络威胁。

017:网络入侵检测系统原理 🔍

在本节课中,我们将学习网络入侵检测系统的基本原理。我们将重点探讨NIDS从何处获取信息,即在网络协议栈的各个层级中,可以观察到哪些数据,以及每个层级可能存在的攻击类型。

网络入侵检测系统概述

网络入侵检测系统,顾名思义,使用网络数据作为检测安全事件的观测数据源。其核心在于分析“传输中的数据”。网络入侵防御系统也使用传输中的数据,但还能对网络流量进行响应,例如阻断或修改。

NIDS之所以流行,主要原因在于网络是监控外部攻击进入组织或内部数据外泄的绝佳“咽喉点”。与之前模块讨论的HIDS相比,NIDS的部署工作量通常更小。

NIDS可以使用基于特征的检测基于异常的检测作为其分类器,将观测数据转化为安全事件。我们将在本模块中讨论这两种类型的NIDS系统。

NIDS的优势

使用基于网络的观测数据源有许多优势:

  • 性能成本低:如果使用被动的网络嗅探器,不会对需要同时执行其他功能的主机造成额外负担。
  • 隐蔽性强:NIDS通常依赖网络上的被动链路或分路器,入侵者更难发现并攻击这些系统以使其失效。
  • 干扰小:通常与用户应用程序交互很少,不会妨碍正常业务(后续会讨论一些例外情况)。
  • 易于发现特定攻击:尤其擅长识别跨越多台主机的聚合性攻击,以及可能根本不会到达主机的畸形数据包攻击。
  • 检测资源耗尽攻击:是检测网络拒绝服务攻击等网络资源耗尽攻击的最佳位置。

NIDS的观测数据源:网络协议栈

NIDS的观测数据主要来源于网络协议栈。我们将以TCP/IP协议栈为例进行讲解。协议栈的每一层都对下层的数据包进行封装,某一层的信息对上一层而言只是数据载荷。

对于NIDS而言,协议栈的每一层都至关重要。我们将分别讨论物理层、数据链路层、网络层、传输层和应用层,看看在每个层级能观察到哪些数据。

重要区分:NIDS与HIDS的区别不在于IDS是否运行在主机上(它们总是运行在某种计算机上),而在于NIDS使用的信息是“传输中的数据”,即流经网络链路的数据,而不是主机上运行的进程相关的审计文件和日志文件。

协议栈模型:OSI vs. TCP/IP

我们需要区分标准的七层OSI模型和通常实现的TCP/IP协议栈。下表列出了OSI模型的各层,这个七层模型是理解NIDS的关键。

OSI 层 名称 主要功能/协议示例
7 应用层 HTTP, FTP, SMTP
6 表示层 数据格式转换、加密(如SSL/TLS)
5 会话层 建立、管理、终止会话(如VPN)
4 传输层 TCP, UDP
3 网络层 IP, ICMP
2 数据链路层 Ethernet, Wi-Fi (MAC)
1 物理层 电缆、光纤、无线电波

在实际的TCP/IP实现中,这些层级的处理方式可能因操作系统而异。例如,网络接口卡通常在数据链路层处理大量工作;网络层、传输层和会话层在TCP/IP栈中常常紧密耦合;表示层和应用层也经常混合在一起。

尽管如此,为了清晰地识别观测数据,我们将分别讨论每一层。但请记住,根据具体网络设备的实现,观测数据可能跨越不同的实现部分,并不像OSI模型描述的那样界限分明。

各层级的观测数据与攻击

上一节我们介绍了网络协议栈的模型,本节中我们来看看每一层具体能提供哪些观测数据,以及可能存在的攻击类型。

物理层

物理层涉及网络连接或数据传输的物理特性,无论是光纤、同轴电缆还是无线信号。这一层处理的是模拟信号,而非数字数据包。

可获取的观测数据

  • 物理位置信息
  • 线路中断或搭接窃听
  • 环境参数(如温度、湿度)

检测方式:需要能采样网络环境物理特性的传感器,例如温度传感器、基于时间的传感器,或能测量线路阻抗以检测中断或搭接的设备。

可检测的攻击:针对物理层的攻击,例如线路搭接窃听、对空间的被动监控、切断线路、非法侵入机箱或主机内部进行物理篡改。

数据链路层

数据链路层是我们首次获得数字数据的地方。它关注点对点通信,负责比特流在物理介质上的编码。

可获取的观测数据

  • 介质访问控制地址
  • 链路速率
  • 错误校正信息
  • 基本的节点标识

检测方式:传感器在此层查看设备间传输的低级比特流和编码。

可检测的攻击:各种欺骗攻击,例如将设备接入网络并欺骗交换机进行认证、在无线网络中接入恶意接入点。攻击者可能在此层进行中间人攻击或接管连接。

网络层

网络层(如IP层)负责数据包的多路复用、路由和排序,提供端到端的连接。

可获取的观测数据

  • 源IP地址和目的IP地址
  • 路由度量和统计信息
  • 时间戳和生存时间值

检测方式:分析IP数据包头部信息。

可检测的攻击:IP地址欺骗、利用跳数和计时信息制造路由异常、数据包分片与重组攻击等一切可以在IP头部进行的攻击。

传输层

传输层提供端口和协议信息,首次将端到端的网络流量与特定的应用程序关联起来。

可获取的观测数据

  • 端口号(如 80, 443, 25
  • 协议类型(如 TCP, UDP

重要提示:端口号并不绝对指示接收方使用的应用程序。发送方可能有假设(如发往端口25的数据是邮件),但接收方可以将该端口映射到任何应用程序。发送数据通常使用随机的高位端口号,因此仅凭传输层信息很难确定发送方应用程序。

可检测的攻击:与端口重定向和协议滥用相关的攻击。例如,攻击者可能将发往端口80(HTTP)的流量劫持到另一个恶意应用程序,实施中间人攻击。

应用层、表示层和会话层

应用层是信息载荷的最终接收点,包含非常具体和详细的应用程序数据。

可获取的观测数据

  • 应用层协议数据(如HTTP请求头、SMTP命令)
  • 实际的用户数据或命令

关联层级

  • 表示层:通常与应用层紧密关联,负责数据格式转换(如字符编码、加密),使数据适合应用程序处理。
  • 会话层:通常处理身份验证、加密和会话管理。VPN通常在此层操作。

检测方式:深度解析应用层协议的内容。

可检测的攻击:针对特定应用协议的漏洞利用,例如SQL注入、跨站脚本、缓冲区溢出等。

其他网络数据源

除了协议栈各层的数据,NIDS还有另一类重要的输入:网络日志文件

这些数据并非严格属于IP协议栈,但来自路径上的网络设备,对IDS非常有用:

  • 路由器/交换机日志:可以指示针对网络基础设施本身的攻击。
  • 流数据:如NetFlow,记录网络流量的统计信息。
  • 缓存文件和历史数据:指示网络历史状态和统计变化。

近年来,像RADIUS认证日志等也被整合进NIDS系统中。

总结

本节课中,我们一起学习了网络入侵检测系统的基本原理。我们了解到NIDS的核心是分析“传输中的数据”,并深入探讨了其观测数据的主要来源——网络协议栈的各个层级(物理层、数据链路层、网络层、传输层、应用层)。每一层都提供了独特的观测数据,并能帮助检测特定类型的攻击。此外,网络设备日志等辅助数据源也增强了NIDS的检测能力。掌握了这些基础,在接下来的课程中,我们将深入探讨NIDS如何利用这些信息来具体识别攻击,并分析实际案例。

018:NIDS类型与典型系统 🛡️

在本节课中,我们将学习网络入侵检测系统(NIDS)的不同类型及其典型代表。我们将探讨NIDS如何根据不同的网络流量特征进行分类,并了解几种主流的开源与商业NIDS系统。

网络流量类型与可观测数据编码 🔍

上一节我们介绍了入侵检测系统(IDS)的核心是一个对可观测数据进行分类的分类器。本节中,我们来看看在网络流量分析中,具体有哪些可观测数据需要区分。

网络流量类型主要可以分为TCP和UDP这两种主要的正常流量类型。在TCP和UDP层面之下,还需要考虑以下因素:

  • 明文与加密/隧道传输:对于明文传输,可以进行深度包检测(DPI),查看载荷内容。对于加密或隧道传输,只有两种选择:1)仅查看头部信息;2)通过代理(如SSL代理)解密流量,以便进行检测。
  • 开放协议与专有协议:开放协议(如HTTP、HTTPS)是公开的,易于分析。专有协议(如某些视频流协议)可能包含额外的加密层或特定的应用数据格式,使IDS难以解析其内容。
  • 端口使用方式
    • 固定端口:使用端口号来识别关联的应用程序。
    • 混合端口:同一应用程序可能使用多个已知端口(如Web服务使用80和443端口)。
    • 随机端口:需要使用载荷信息,而非端口信息,来识别攻击特征。
  • 流量分类依据:可以根据端口、载荷特征或其他行为指标对网络流量进行分类。

所有这些因素都将帮助我们理解如何对可观测数据进行编码,以便将网络流量类型转化为分类器可以处理的形式。

分类器运行方式 🧠

现在我们已经将流量编码成可以进行网络分类的形式,接下来需要决定如何运行分类器。

分类可以基于内容进行,也可以独立于内容进行。

  • 基于内容的分类
    • 基于端口:严格依据端口信息来区分攻击流量和非攻击流量。
    • 基于载荷(深度包检测):深入分析数据包载荷内容。这可以进一步分为:
      • 仅查看载荷头部:获取协议层或应用层信息。
      • 查看整个载荷:例如,在电子邮件或网页下载中查找恶意软件。
  • 内容无关的分类:可以查看流特征(如NetFlow)或其他更偏向网络流量元数据的行为特征。

在以上每个领域,我们都需要决定在哪个层面进行常规流量与攻击流量的分类。

NIDS的分类学与部署位置 📊

根据本周阅读材料《入侵防御与检测技术现状》第2章中的分类法,网络入侵检测系统(NIDS)在架构上是固定的(即其范围是网络流量),但其他方面存在多种变体。

以下是NIDS可能的不同变体:

  • 架构:可以是集中式、分层式或分布式。
  • 检测后行为:可以是主动的(IPS)或被动的(IDS)。
  • 检测方法:可以是基于签名或基于异常检测。

NIDS的部署位置也直接影响其检测能力。

以下是常见的NIDS部署位置及其价值:

  • 防火墙外部:监控所有进出流量,无论防火墙是否过滤。有助于了解被防火墙阻挡的攻击类型。
  • DMZ(非军事区)内部:监控流向公共服务器(如Web、邮件服务器)的允许流量。可以区分访问服务的正常流量与试图破坏DMZ内主机安全的攻击流量。
  • 内部局域网(LAN):监控内部网络流量。有助于检测不应存在的出站流量(如信息泄露、已感染主机外联),以及防范内部威胁(如内部主机间的攻击)。
  • IDS管理器:在企业基础设施中,可以将多个NIDS的警报汇总到一个安全事件管理(SIEM)系统。IDS管理器可以接收警报并向所有NIDS推送配置,实现跨系统的协调。

典型NIDS系统介绍 🖥️

接下来,我们具体看看几种典型的NIDS系统。

早期系统:网络Grep系统

最早的IDS类型是网络Grep系统。这类系统通常在网络第3/4层获取原始数据包数据,并使用正则表达式匹配特定的数据包模式。1995年的NSM(Network Security Monitor)是早期版本之一,它将tcpdump的输出通过管道传递给grep程序,并与签名数据库进行匹配。这种基于签名的NIDS模式是Snort等系统的基础。

Snort

Snort是NSM的自然延续,由Martin Roesch于1998年创建,他后来在2001年创立了Sourcefire公司。Snort的一个重大贡献是标准化了签名规则文件格式,这使得第三方可以为免费的Snort安装提供定制化的规则文件。

Snort(免费版)和Sourcefire(商业版)的规则集都得到了更新,不仅包含基于签名的检测,还加入了一些基于异常检测的功能,主要是基于阈值的统计警报(例如,单位时间内Web请求过多、来自某主机的流量异常)。在课程练习中,你将获得更多使用Snort及其规则文件的经验。

其他开源方法与框架

除了Snort,90年代中期还出现了其他一些有趣的方法。

  • Nagios(1995年创建):最初用于网络监控,采用框架式方法。它是一个平台,允许你以任何方式使用网络可观测数据。你可以添加专门用于NIDS的模块。Nagios至今仍非常活跃,在研究社区中常被用作新NIDS模块的原型平台。
  • Bro(现称Zeek):由Vern Paxson于1996年开发,此后一直积极开发。与Nagios类似,它是一个插件模块框架,但Bro更专为入侵检测设计。其模块能很好地聚焦于检测问题。
  • Suricata:由开源信息安全基金会开发。它也使用类似Snort的标准签名文件,但支持更全面的基于签名和异常的检测模块。Bro和Suricata都包含在Security Onion安全发行版中。

商业系统:以思科为例

像思科这样的公司很快对不断增长的入侵检测市场产生了兴趣。凭借在防火墙监控和过滤方面的专业知识,增加入侵防御和检测功能对该领域来说是顺理成章的。

思科当前的产品线包括ASA系列的IPS产品。思科安全IPS是一个很好的例子,展示了基于路由和防火墙技术的商业IPS解决方案,如何能在高速企业级NIDS/NIPS中高效运行,为那些需要技术支持和更健壮产品的企业提供选择。

总结 📝

本节课中,我们一起学习了网络入侵检测系统(NIDS)的核心概念。我们探讨了NIDS如何根据网络流量类型(如TCP/UDP、明文/加密、端口使用)对可观测数据进行编码,并介绍了分类器基于内容或独立于内容的不同运行方式。我们还了解了NIDS在分类学上的不同变体(架构、检测方法等)以及部署位置(防火墙外、DMZ、内网)对其功能的影响。最后,我们回顾了几种典型的NIDS系统,包括早期的网络Grep系统、流行的开源系统Snort、Bro、Suricata和框架Nagios,以及思科为代表的商业解决方案。理解这些类型和系统是构建有效网络防御的基础。

019:Snort快速入门(补充资源)🚀

在本教程中,我们将学习如何在Security Onion虚拟机中运行Snort,以完成模块4的作业。我们将涵盖从下载数据包捕获文件到配置Snort、运行分析,并最终解读结果的完整流程。

准备工作与环境

上一节我们介绍了本教程的目标,本节中我们来看看具体的操作环境。首先,你需要启动Security Onion虚拟机。作业中要求使用Snort对一个特定的PCAP文件进行分析。

以下是开始前的准备工作:

  1. 下载PCAP文件:作业PDF中提供了文件的下载链接。你可以在虚拟机中打开Chromium浏览器直接下载,或者使用命令行工具wget
    • 使用wget命令的格式为:wget [文件的URL]
  2. 解压文件:下载的文件通常是压缩格式(.gz)。你需要使用gunzip命令进行解压。
    • 解压命令为:gunzip [文件名].gz
    • 解压后,你将得到一个名为inside.tcpdump的PCAP文件。

配置Snort规则文件

在运行Snort之前,我们需要根据作业要求修改其配置文件,以确保它能正确读取PCAP文件。

Snort的配置文件位于/etc/nsm/目录下,通常以你的网络适配器命名,例如securityonion-eth1-snort.conf

你需要使用文本编辑器(如vinano)打开此文件,并找到大约第170行附近的config daq:配置行。

以下是需要进行的修改:

  • config daq:行的值从pfring更改为pcap
  • (可选)你可以通过在该行前面添加#号来注释掉后续几行相关的配置。

完成修改并保存文件后,Snort的配置就准备好了。

运行Snort分析PCAP文件

现在,我们可以运行Snort来分析之前下载的PCAP文件了。运行Snort需要指定几个关键的命令行参数

通过查阅Snort的手册页(man snort),我们可以了解到以下重要参数:

  • -c:用于指定规则配置文件(即我们刚刚修改的那个文件)。
  • -r:用于指定要读取的PCAP文件。
  • -v:启用详细模式,将处理过程输出到屏幕,便于观察。

因此,完整的运行命令结构如下:

sudo snort -c /etc/nsm/securityonion-eth1-snort.conf -r /path/to/inside.tcpdump -v

请将/path/to/inside.tcpdump替换为你解压后的PCAP文件的实际路径。

执行该命令后,Snort会先初始化并加载规则,这个过程可能需要一分钟左右。初始化完成后,你将看到数据包开始在屏幕上滚动显示,这表明Snort正在处理文件。

解读分析结果

当Snort处理完整个PCAP文件后,它会在最后输出一系列的统计信息。作业要求你找出Snort在此次分析中检测到了多少个警报(Alert)。

在输出的“Action Stats”部分,你可以找到“Alerts”这一项,其对应的数值就是检测到的警报数量。根据提示,这个数字应该在几百左右。如果你的结果远小于或远大于这个范围,可能需要检查配置并重新运行一次。

总结

本节课中我们一起学习了在Security Onion环境中使用Snort进行入侵检测分析的基本流程。我们完成了从下载数据包、配置Snort、使用-c-r-v参数运行分析,到最终在输出统计信息中查找警报数量的全过程。希望本教程能帮助你顺利完成模块4的作业。

020:NIDS可检测的攻击类型 🔍

在本节课中,我们将学习网络入侵检测系统(NIDS)能够检测的常见攻击类型,并探讨NIDS在实际部署和运行中面临的主要挑战。


网络攻击与网络可观测性

上一节我们介绍了NIDS的部署位置,本节中我们来看看NIDS具体能检测哪些攻击。首先需要记住,网络可观测性关注的是跨越边界的、动态传输的数据。这些数据流经网络传感器点,其中可能包含攻击的可观测迹象。为了捕获所有目标攻击迹象,我们可能需要在网络基础设施的多个边界点部署传感器。

我们主要关注的是远程攻击。这类攻击的可观测迹象会随着动态数据流跨越网络边界。这包括外部攻击者入侵并违反协议,或者内部信息违反策略、跨越不应跨越的边界。

回顾我们在模块1中讨论的攻击分类法,NIDS的焦点主要在目标环境的网络和互联网部分。攻击者可以使用多种工具,利用各种漏洞,采取几乎任何行动,但其目标都是跨越这些网络域。未授权的结果和目标可以是任何形式。只要攻击路径最终穿过这些网络边界,NIDS就有可能检测到。


NIDS可检测的常见攻击类型

以下是NIDS能够检测的主要攻击类别,它们几乎涵盖了我们在HIDS中讨论的所有攻击类型在网络层面的体现:

  • 窃听:针对动态传输中数据的窃听。例如中间人攻击、TCP劫持、SSL代理等。
  • 伪装:在网络中冒充他人或他物。这可能涉及重放凭证、捕获并重用密码,或违反OSI模型中会话层的认证或加密机制。任何此类行为都可能构成伪装攻击。
  • 重放攻击:捕获数据包或会话,然后在稍后时间或网络的不同位置进行重放。这允许攻击者将一处被授权的活动,在另一处未授权的地方重放。
  • 数据篡改:在传输过程中修改数据包。即捕获数据包,更改其内容,然后重新发送出去。
  • 错误路由:这显然是面向网络的攻击。包括BGP攻击、黑洞攻击、欺骗源地址等。攻击者通过操纵第三层的路由,使数据包经过特定路径,从而更容易实施窃听或伪装。
  • 病毒与蠕虫:通过网络链路传播的恶意代码。NIDS可以通过检查数据包载荷活动,或对网络流量的报头活动进行统计分析来发现它们。
  • 抵赖攻击:攻击者进行某种网络交易,事后却声称该交易与特定个体无关。在网络中,常表现为发起部分交易但不完成,然而交易的效果却已产生。
  • 拒绝服务:这是网络上最常见的大规模攻击类型之一,即DDoS或DoS攻击。


NIDS面临的挑战

现在,让我们探讨使用网络数据源进行入侵检测时可能遇到的一些问题。我们已经讨论过拓扑和部署位置,以及加密流量,但还有其他挑战,包括时间同步、会话重组、流量体积和数据包分片。

拓扑与传感器部署

NIDS的首要挑战在于拓扑。为了检测攻击,必须有可观测迹象;为了获得可观测迹象,传感器必须放置在正确的位置。每个传感器只能捕获流经其所在网段的数据。虽然最常见的做法是将传感器部署在互联网网关,但这会使许多内部或后门攻击对NIDS完全不可见。

复杂的网络拓扑(如为了提高效率而设计的结构)可能会阻碍NIDS收集特定攻击所需的数据。内部传感器的部署需要在性能和覆盖范围之间权衡:有多少地方使用交换机而非网桥?内部网络有多少由完整路由器分隔的不同网段?每次跨越边界,如果希望完全覆盖该区域的威胁,就可能需要部署NIDS传感器。

一些技术可以提供帮助,例如生成树端口动态交换机无线嗅探器。它们可以帮助构建一个独立的NIDS覆盖网络,这些NIDS系统可以相互协调,并与之前提到的SIEM系统协作,从拓扑的不同区域收集信息。但总体而言,拓扑对于NIDS来说仍然非常棘手,因为你必须识别所有边界,并据此部署传感器。

加密流量

一个日益严重的问题是加密流量。历史上,尤其是在组织内部,网络流量大多是明文传输。因此,NIDS可以进行深度包检测、载荷检查,而无需担心加密问题。

如果入侵迹象隐藏在载荷中,而载荷被加密,那么入侵将无法被观测到。如今,越来越多的网络协议(如SSL/TLS)使得加密在各类网络中无处不在。这给基于载荷的攻击检测带来了巨大困难。

SSL网关作为一种代理,可以为进出组织的合法流量进行解密,供IDS和其他监控系统检查,这解决了一部分加密流量问题。但它主要针对特定的SSL流量,对于其他端到端的加密协议(如应用层到应用层的加密)则无能为力。对于这些情况,传统的网络检测只能在较低协议层(如链路层、IP层)工作,而无法检测载荷内部的攻击。这在数据库访问或任何专有协议中都会成为问题。

不过,并非所有希望都破灭了。即使载荷加密,仍然可以通过元信息进行大量的流量分析。这也是像NetFlow(我们后续会详细讨论)这类技术在网络IDS中如此受欢迎的原因之一。

时间同步

基于网络的IDS面临的另一个问题是时间。多个传感器点意味着可能有多个时钟。这些时钟可能同步,也可能不同步。为了理解流经一个网络元素的流量是否与流经另一个元素的流量相关(例如,消除重复数据以提升效率,或关联流量方向和路径),必须要有同步的时钟,以区分时间接近的事件和真正同时发生的事件。

因此,时间同步对于协调多个NIDS传感器至关重要。如果只有一个NIDS,且所有事件都同步到一个主时钟,问题不大。但如果网络中有多个NIDS传感器点需要进行关联分析,那么数据包间的时间戳对于分析的准确性就非常重要。整个基础设施的时间必须频繁同步,并且要达到非常精细的容差。这听起来容易解决,但实际上是分布式网络IDS面临的最大问题之一。

会话重组

运行网络IDS的另一个难点是会话重组。大多数攻击并非以单个数据包的形式发生,但网络传感器一次只能看到一个数据包。因此,必须将数据包重建成会话,才能识别这些会话是否构成攻击。

通常,IDS需要某种重建的会话来从特定数据包中识别攻击。传感器必须知道主机实际看到的内容。主机确实会将网络数据包组合成会话。因此,为了让IDS看到攻击,它必须模拟主机的行为,将数据包重新组合成会话。

不幸的是,在数据流中间被动地进行重组会带来许多问题。会话可能因超时而中断,IDS可能丢失某些数据包,导致主机实际看到的和IDS看到的可能是两回事。因此,主机通常是进行个体检测的更好位置,而网络则是在跨越边界时进行安装和识别的更便捷位置。这是在为基础设施选择HIDS还是NIDS时必须做出的权衡之一。

流量体积

当然,IDS面临的另一个巨大问题是流量体积。问题是:你真的想分析所有流量吗?还是只想查看报头?或者只想查看像NetFlow这样的摘要信息?如果你想分析所有流量,就必须有办法存储它,必须能够以线速收集它,并且必须将所有流量送到分析引擎。在最坏的情况下,你需要复制所有流量以提供给IDS。

处理网络层的流量体积是NIDS面临而HIDS不那么突出的问题之一。在NIDS场景中,每次在基础设施中部署一个新的NIDS传感器,都必须将NIDS警报或原始数据移动到IDS的分析引擎部分。如何实现这一点,很大程度上取决于基础设施的细节和不同元素之间的带宽限制。

联邦式企业中,这可能尤其困难。这些企业在大型、相对独立的实体之间存在低速链路,但又试图在所有联邦站点之间协调IDS。这时,必须对数据进行某种形式的汇总,以便在不同站点之间进行关联分析,最终确定是否能在整个联邦企业范围内识别出攻击。

数据包分片

对于基于网络的IDS,数据包的分片程度也很重要。如果一个基于网络的IDS逐包寻找模式,它需要数据包中有足够的数据来识别该模式。难点在于判断:是否需要将当前数据包与另一个数据包组合起来看?

如果数据包被分片到IDS无法在单个数据包中看到签名所需全部信息的程度,那么IDS就必须是有状态的。它必须收集多个数据包并重新组装它们,这类似于我们几页前提到的会话重组问题。攻击者经常利用跨越收集边界的分片来尝试绕过IDS检测或IPS过滤,使攻击到达目标端点。因此,IDS必须考虑到,当分片非常严重时(有时甚至IP报头本身也会被分片),必须进行基于状态的重组,才能生成IDS可用于识别攻击的可观测迹象。


超越TCP/IP网络

最后,我们讨论的NIDS大多假设它们连接的是标准的TCP/IP网络。但需要理解,许多网络并不遵循我们讨论的ISO或TCP/IP模式。例如:蜂窝网络、Wi-Fi世界、电力网络、铁路信号系统、资金转账网络,甚至普通的电话电路,这些领域的数据传输也可能遭受攻击。

因此,重要的是要认识到,尽管我们主要讨论基于IP的网络,但这些非IP网络同样存在攻击可观测迹象。每一种网络都可能需要以不同的方式部署基于网络的IDS,以理解特定环境下的攻击形态。在电力领域,随着智能电网技术的发展,这一点尤为重要。人们非常担心智能电表和智能电网成为攻击端点,而攻击迹象将出现在这些运行于电力基础设施之上的网络中。能够从这些特定线路上读取可观测迹象的IDS,目前正在商业领域开发中。

在下一个模块(模块6)中,我们将更多地讨论蜂窝网络、Wi-Fi和无线空间系统。本质上,存在一个完整的无线入侵检测系统领域,它利用无线传输介质不仅来观测攻击,甚至可能预防攻击。


总结

本节课中,我们一起学习了网络入侵检测系统(NIDS)能够检测的主要攻击类型,包括窃听、伪装、重放、数据篡改、错误路由、病毒蠕虫、抵赖和拒绝服务攻击。同时,我们也深入探讨了NIDS在实际部署中面临的诸多挑战:复杂的网络拓扑要求精心规划传感器位置;日益普遍的加密流量使得深度包检测变得困难;多传感器间的时间同步至关重要;从离散数据包中重组完整会话是一大难点;海量的网络流量对处理和存储构成压力;此外,数据包分片技术常被攻击者用来规避检测。最后,我们认识到NIDS的应用不仅限于传统的TCP/IP网络,在电力、无线等非IP网络中也同样重要且面临独特挑战。现在,你应该对NIDS产品的应用场景及其能够观测的攻击类型有了较好的理解。

021:Snort进阶教程(补充资源)📡

在本教程中,我们将学习如何通过网络流式传输数据包,并使用Snort对它们进行分类。这是对之前第一个视频的补充和延续。

为了实现这个目标,我们将使用Ubuntu虚拟机,并利用TCPreplay工具将预先下载好的PCAP文件(inside.tcpdump)在网络中重放,以便另一台运行Snort的虚拟机(Security Onion)能够捕获并分析这些流量。


确保虚拟机网络连通性 🔗

上一节我们介绍了实验的整体目标,本节中我们来看看如何确保两台虚拟机能够相互通信。这是后续步骤的基础。

首先,在Security Onion虚拟机上,我们需要查看其网络接口的IP地址。执行命令 ifconfig 并找到主接口。在本例中,接口名称是 enp0s3(注意:在某些文档中可能称为 eth0,请根据实际情况替换)。

以下是具体步骤:

  • 运行 ifconfig 命令。
  • 找到 enp0s3 接口。
  • 记录其IP地址,例如 192.168.56.101

接下来,我们需要配置Ubuntu虚拟机,使其与Security Onion处于同一网络。

以下是配置Ubuntu虚拟机网络设置的步骤:

  1. 进入网络连接设置。
  2. 选择当前连接,点击“编辑”。
  3. 切换到“IPv4设置”选项卡。
  4. 将方法从“自动(DHCP)”改为“手动”。
  5. 添加一个地址,例如将IP设置为 192.168.56.102(比Security Onion的地址大1)。
  6. 设置子网掩码为 255.255.255.0(Class C)。
  7. 点击“应用”。
  8. 可以尝试断开并重新连接网络以应用新设置。

配置完成后,在Ubuntu终端再次运行 ifconfig,确认 enp0s3 接口的IP地址已变为 192.168.56.102。最后,使用 ping 192.168.56.101 命令测试连通性,如果收到回复,则表明网络配置成功。

此外,一个关键的步骤是确保两台虚拟机的网络适配器模式都设置为“仅主机模式”。请在VirtualBox或VMware的设置中,分别检查Security Onion和Ubuntu虚拟机的网络适配器,并确保选中“仅主机网络”。

当两台虚拟机可以互相通信后,我们就可以开始实验的核心部分了。


在Security Onion上启动Snort监听 🎧

上一节我们完成了网络配置,本节中我们来看看如何在Security Onion虚拟机上启动Snort,使其监听网络流量。

这个过程与之前从文件读取数据包类似,但这次我们将指定Snort监听的网络接口。

执行以下命令:

sudo snort -v -c /etc/snort/snort.conf -i enp0s3
  • -v:启用详细模式,以便查看数据包。
  • -c /etc/snort/snort.conf:指定Snort的配置文件路径。
  • -i enp0s3指定Snort监听的网络接口,这里就是我们配置好的 enp0s3 接口。

运行此命令后,Snort需要一些时间来加载所有规则并启动。当看到类似“Commencing packet processing”的提示,并且显示正在监听 enp0s3 接口时,说明Snort已准备就绪。


使用TCPreplay重放网络流量 ⏩

在Snort准备就绪的同时,让我们切换到Ubuntu虚拟机。上一节Snort已开始监听,本节中我们来看看如何生成流量供其分析。

我们位于存放PCAP文件(inside.tcpdump)的目录中。我们将使用 tcpdump 工具来重放这个文件,模拟网络流量。

以下是使用TCPreplay重放流量的命令:

sudo tcpreplay -i enp0s3 -T --mbps=1000 inside.tcpdump
  • -i enp0s3:指定发送流量的出口网络接口。
  • -T:启用最高速度模式,以尽可能快的速度重放数据包,节省时间。
  • --mbps=1000:指定重放速率,1000 Mbps即尽可能快。
  • inside.tcpdump:要重放的PCAP文件名。

执行此命令后,它将在后台运行,将数据包流式传输到网络中。此时,切换回Security Onion虚拟机,你应该能看到Snort的控制台开始持续滚动显示捕获到的数据包信息。

这个过程会持续一段时间(可能长达30分钟或更久,取决于文件大小和系统性能)。请耐心等待TCPreplay完成。完成后,它会在终端输出统计信息,例如传输的数据包总数(可能约为160万个)。

需要注意的是,即使TCPreplay在Ubuntu端已经结束,Security Onion上的Snort可能仍会继续处理一段时间,因为它需要完成对已接收数据包的分析。


查看分析结果与总结 📊

当Snort最终处理完所有数据包后,它会停止运行并输出最终的统计信息。这与直接从文件分析时的行为一致。

在这些统计信息中,我们最需要关注的是 “Alerts”部分,它显示了Snort在分析流式传输的数据包时触发了多少条警报。这些警报对应着检测到的潜在网络入侵或可疑活动。


在本教程中,我们一起学习了如何搭建一个简单的网络流量分析环境。我们首先确保了两台虚拟机(Security Onion和Ubuntu)之间的网络连通性,然后在Security Onion上配置Snort监听指定网卡,最后在Ubuntu上使用TCPreplay工具重放PCAP文件来模拟网络流量。通过这个流程,Snort能够像在真实网络中一样捕获并分析流经的数据包,并最终输出安全警报统计,这有助于我们理解Snort在实际网络环境中的工作方式。

022:网络入侵检测系统(NIDS)第二部分导论

在本节课中,我们将要学习约翰霍普金斯大学《入侵检测》课程模块6的核心内容。本模块将继续深入探讨网络入侵检测系统(NIDS),涵盖异常检测与特征检测的优缺点、NetFlow流量分析、基线建立、I类与II类错误,以及无线入侵检测系统(WIDS)等关键主题。

课程概述与讲师介绍

我是 Philip Qing,将为大家介绍本模块的内容。

在模块5中,Tong 已经讲解了网络入侵检测系统(NIDS)的第一部分。

在本模块6中,Tong 将继续讨论 NIDS 的第二部分内容。

模块6核心主题

本模块将主要覆盖以下几个核心主题:

  • 特征与异常检测:在 NIDS 中的应用。
  • NetFlow 与基线建立:分析网络流量并确立正常行为基准。
  • I类与II类错误:在入侵检测中可能出现的误报与漏报。
  • 无线入侵检测系统(WIDS):针对无线网络环境的检测技术。

特征与异常检测详解

上一节我们介绍了本模块的整体框架,本节中我们来看看第一个核心部分:特征与异常检测。

在 NIDS 中,我们将讨论以下具体话题:

以下是本小节将涵盖的要点:

  • 网络可观测性分类
  • 误用检测与异常检测在 NIDS 中的对比
  • 使用正则表达式描述已知攻击特征
  • 模式匹配面临的挑战
  • 异常检测与安全洋葱平台

可以看到,模式匹配和正则表达式在检测异常时是紧密结合的。

请特别注意 安全洋葱(Security Onion) 平台。

这是一个用于研究入侵检测系统(IDS)的平台。

在本课程的作业中,你将需要搭建一个安全洋葱环境并使用它。

NetFlow 与基线建立

了解了特征与异常检测后,我们转向网络流量分析的基础:NetFlow 与基线建立。

我们将讨论以下话题:

以下是本小节将涵盖的要点:

  • 什么是 NetFlow
  • 为何使用 NetFlow
  • 网络日志文件
  • 如何建立一个行为基线

模块6的这一部分重点在于 NetFlow。

NetFlow 提供了网络流量的摘要信息,可用于发现攻击迹象。

I类与II类错误分析

在建立了流量基线并进行分析后,我们必须认识到检测系统并非完美,总会存在误差。本节我们来探讨 NIDS 使用中的 I 类与 II 类错误。

我们将覆盖以下话题:

以下是本小节将涵盖的要点:

  • NIDS 中的错误类型
  • 误用检测与异常检测中的 I 类错误
  • 误用检测与异常检测中的 II 类错误
  • NIDS 误用或异常检测系统的好处

在使用 NIDS 时,总是存在错误。

  • I 类错误 是指 NIDS 产生的 误报(False Positive)
  • II 类错误 是指 NIDS 产生的 漏报(False Negative)

在课程后期,我们将分析与 I 类和 II 类错误相关的内容。

无线入侵检测系统(WIDS)

最后,我们将视野从有线网络扩展到无线环境。本节中我们来讨论无线入侵检测系统(WIDS)。

我们将覆盖以下话题:

以下是本小节将涵盖的要点:

  • 无线网络攻击类型
  • WIDS 中间人攻击
  • 阻塞攻击
  • 认证攻击
  • 虫洞攻击
  • 攻击与 WIDS 工具

可以看到,在模块6的这一部分,我们聚焦于新兴的威胁和攻击。

我们可以预见,在 WiFi 市场中将出现更多的安全威胁。

课程总结

本节课中我们一起学习了网络入侵检测系统(NIDS)第二部分的导论。我们概述了特征与异常检测的对比、NetFlow流量分析、检测错误类型以及无线环境下的入侵检测挑战。

希望大家在本课程中认真学习,为应对无线网络环境中的入侵检测挑战做好准备。

祝大家好运。

023:NIDS中的特征匹配与异常识别 🔍

在本节课中,我们将探讨基于特征的网络入侵检测系统与基于异常的检测系统之间的核心区别。我们将学习它们如何利用网络可观测数据来分类事件,并理解各自的运作原理、优势与挑战。


概述

网络入侵检测系统依赖于分析网络中的可观测数据。然而,在如何将这些数据分类为“正常事件”或“需要调查的安全事件”时,主要采用两种方法:基于特征的检测基于异常的检测。本节我们将深入这两种分类机制的核心。

上一节我们介绍了网络入侵检测系统的基本概念,本节中我们来看看它是如何具体判断一个网络活动是“正常”还是“异常”的。


基于特征的检测系统 🎯

基于特征的检测系统,也称为误用检测系统,其核心思想是定义已知的攻击行为。系统的目标是准确区分已知的攻击活动与其他正常活动。

以下是其工作原理的关键点:

  • 特征的定义:所有误用检测特征都必须是声明性确定性的。这意味着特征会明确地声明“这就是攻击行为”,并且一旦匹配,就毫无疑问地判定为攻击。
  • 特征的表达:特征可以表达为搜索字符串、一系列参数或任何能够明确描述攻击的表示形式。只要满足声明性和确定性,任何形式的表示字符串都可以。
  • 实现方式
    • 正则表达式:最直接的方式是使用正则表达式来匹配网络数据包中的特定模式。例如,在数据负载中匹配到特定的字符串序列,可能就表示一次攻击尝试。
    • 规则系统:为了处理更复杂的攻击场景,系统会使用基于规则的AI系统。这些规则(例如“如果-那么-否则”的生产规则)将攻击置于特定上下文中,通过组合多条规则来更精确地识别攻击。Snort规则集就是这种方式的典型代表。

然而,基于特征的检测系统也面临一些挑战:

  • 性能与扩展性:线性匹配大量复杂特征可能导致处理速度缓慢,难以应对高流量网络。
  • 数据包乱序:网络数据包可能不按顺序到达,这使得编写能够覆盖所有可能序列的特征变得非常复杂。
  • 检测范围局限:系统的检测能力完全依赖于已定义的特征库。对于未编写特征的新型攻击或恶意软件变种,系统无法识别。


基于异常的检测系统 📊

与特征检测不同,基于异常的检测系统关注的是定义正常行为。其核心定义(引自Matt Bishop)是:异常检测分析系统的一组特征,并将其行为与一组预期值进行比较。

在网络入侵检测的语境下,系统会比较网络特征与网络预期值,以判断观测值是否“异常”。

基于异常的检测系统主要识别三种类型的异常:

  1. 点异常:指单个事件明显偏离了正常的预期行为。例如,网络流量指标中出现一个远超正常范围的峰值。
  2. 上下文异常:指一个事件在特定上下文(如时间)下是异常的,但在其他上下文中则正常。例如,在非工作时段出现高强度的内部网络访问。
  3. 集体异常:指一系列事件组成的序列本身是异常的,尽管其中单个事件可能看起来正常。例如,一个特定的、不常见的网络协议请求序列。

基于异常的检测系统的输出通常是一个分数或一个带置信度标签,用以表示某个事件偏离“正常”的程度,而不是简单的“是/否”二元判定。

构建一个异常检测系统通常包含三个阶段:

  1. 定义正常:可以通过指定参数、建立模型,或使用机器学习算法在“干净”的流量数据上学习得到。
  2. 比较数据:将实时传感器数据与定义的“正常”基准进行比较,寻找统计或参数上的偏差。
  3. 分类结果:根据比较结果(如分数是否超过阈值)将事件分类为“正常”或“异常”,或直接输出原始分数供进一步分析。

定义“正常”是关键且具有挑战性的一步,必须确保用于定义“正常”的数据集本身不包含攻击,否则攻击也会被系统视为正常。


特征检测与异常检测的对比 ⚖️

为了更清晰地总结两者的区别:

  • 基于特征的检测:使用声明性、确定性的规则来精确定义已知的攻击信号,旨在从背景噪音中将其挑选出来。它更关注“这是什么攻击”。
  • 基于异常的检测:通过参数化来定义广泛可接受的行为范围(即正常上下文),然后寻找任何落在此范围之外的活动。它更关注“这看起来与平常有何不同”。

这种根本性的区别,直接影响着系统会产生何种类型的误报和漏报,我们将在后续课程中详细探讨。


实践工具示例:Security Onion 🧅

一个集成了特征检测与异常检测的典型系统是Security Onion。它是一个功能强大的安全监控发行版,整合了以下核心功能:

  • 基于网络的入侵检测系统
  • 基于主机的入侵检测系统
  • 全流量捕获
  • 强大的日志分析工具

具体来说,它包含了Snort(特征检测)、Suricata(特征检测)、Bro/Zeek(协议分析,支持异常检测)和OSSEC(主机检测)等工具。Security Onion提供了一个统一的环境,让安全分析师能够同时获得来自多种检测方法的可见性,从而更全面地理解网络警报和异常事件的上下文。

建议初学者查阅Security Onion的文档和介绍,亲手实践这些特征与异常检测系统,是理解网络入侵检测的绝佳途径。


总结

本节课中我们一起学习了网络入侵检测系统的两种核心分类方法。基于特征的检测通过匹配已知攻击模式来工作,快速准确但无法应对未知威胁;基于异常的检测通过建立正常行为基线来发现偏差,能发现新型攻击但可能产生较多误报。理解这两种方法的原理、输出形式(确定匹配 vs. 异常分数)及其各自的优缺点,是设计和评估有效入侵检测策略的基础。现代安全系统(如Security Onion)通常结合两者,以构建更强大的防御体系。

024:NetFlow流量分析与基线建立 📊

在本节课中,我们将要学习NetFlow这一重要的网络信息源。NetFlow是一种用于汇总网络连接流量的方法,它结构紧凑,并且包含了多种攻击的可观测指标。我们将深入探讨NetFlow传感器本身、它的用途,以及如何利用NetFlow建立活动基线,进而用于异常检测,以发现各种异常情况,特别是那些具有统计特性、能指示多种攻击类型的异常。

什么是NetFlow?🔍

上一节我们介绍了入侵检测系统(IDS)的输入源,其中提到了独立于OSI模型可观测指标的网络日志文件。NetFlow就属于这类日志文件。

NetFlow本质上是路由器日志,它记录了过滤后的流量、配置更改以及路由器内部的其他活动。其中一种被创建的日志文件就是NetFlow日志文件,最初是为了财务审计而开发的,目的是为了解如何按流量计费。因此,它是对流量的汇总,必要时可以回溯到计费方案。这是一种特殊类型的网络日志文件,专门指示流经路由器等网络设备的各类流量。

除了路由器,你也可以在单个主机上收集NetFlow数据,但它最初是为在路由器上收集而开发的。

NetFlow是对网络流量的汇总,而不是基于单个数据包。它基于连接数据,关注地址、端口和序列,收集整个会话的摘要信息。你可以获得数据包计数、时间、选项以及在整个TCP/IP会话中通用的各种头部信息。

那么,什么是会话?例如,当你连接到电子邮件服务发送一封邮件时,会有一个启动协议握手、数据传输和关闭序列的过程。所有这些都被汇总在一个单一的NetFlow记录中,该记录说明:从特定地址到特定地址,在这些特定端口上,发生了多大流量、持续了多长时间的通信活动。

由此可见,NetFlow非常有助于发现:

  • 哪个IP地址在与哪个其他IP地址通信。
  • 哪个源地址在与哪个目的地址通信。
  • 由于提供了端口号,还可以了解通信涉及哪些端口。

NetFlow分析工具:Silk 🛠️

围绕NetFlow的收集和处理,开发了许多有用的工具。这里我们将主要关注一个名为Silk的工具。它并非唯一存在的工具,但它是专门为网络监控和入侵检测而开发的一类工具。

Silk实际上是以NetFlow分析创始人Suresh Kondaa的名字命名的(他的邮箱是slk@cert.org)。在他不幸去世时,他正在基于NetFlow发现和构建分析工具,Silk的创建就是为了纪念他。

Silk的全称是“系统级互联网知识”(System for Internet-Level Knowledge),这是后来为Silk设定的名称。它由位于宾夕法尼亚州匹兹堡的CERT网络态势感知团队开发并维护。该团队围绕NetFlow开发了Silk工具,旨在洞察大规模互联网活动,对于理解网络蠕虫和大规模攻击非常有效。这是一种汇总数据的方式,比捕获独立数据包能处理的数据量要大得多。

Silk本身是一套工具集,而不是单一工具。这套工具集既能收集也能分析NetFlow数据。这些工具可以根据所有不同的头部信息进行分类和组织,可以在NetFlow收集的大量数据上生成图表和统计数据,并能真正为你提供图表和对基线活动的理解,这正是你想要输入到基于异常的NIDS中的信息。

这些工具针对大容量网络进行了优化,例如整个.mil基础设施的DISA,国土安全部在整个美国民用政府中使用它。它们并非花哨的图形界面工具,基本上是运行在Unix、Linux和各种BSD变体上的命令行界面工具。命令行界面允许数据在工具集内各个独立工具之间灵活移动。

Silk工具集的理念是在Unix系统中运行,并拥有许多小型、有组织的工具来处理数据,这些数据既可以是压缩的二进制格式,也可以是常规的NetFlow格式。

以下是其核心工具:

  • rwfilter:根据特定特征或正则表达式过滤所有NetFlow数据。
  • rwcount:对于某个范围内的所有地址或某种类型的所有端口号,仅返回包含这些特定参数的记录数量。
  • rwuniq:遍历整个数据集,显示所有唯一的源-目的IP地址、端口号组合,以隔离出那些更不寻常的条目。
  • rwset:根据NetFlow数据本身维护的各种IP地址,对所有NetFlow数据进行分类。这对于输入到各种图分析中非常有用,你可能希望在整个收集的NetFlow数据集中连接源端口和目的端口。

在基础工具中,还有一个非常重要的工具 yaf(Yet Another Flowmeter)。它实际上是另一个流收集器,是与Silk工具内部工作结合最紧密的NetFlow收集器。

NetFlow数据详解 📄

根据《Silk分析手册》第2章的定义,网络流收集与直接数据包捕获有本质区别。它不是像TCPdump那样试图提供所有数据的直接数据包捕获,而是构建了源和目的地之间通信的摘要。摘要部分非常重要,因为它提供了一种压缩形式,同时没有丢失你希望从各个数据包的头部信息中获得的内容。

从定义中可以看到一些相关的关键字段:源和目的IP地址、源和目的端口、协议、服务类型、路由器接口等。这些属性构成了流标签,用于理解记录的流标签。源和目的地址、端口和协议是这些数据的关键,在NetFlow中有时被称为五元组。这些信息连同NetFlow数据的时间戳,将不同的流区分开来,并允许基于唯一活动或异常活动的识别进行各种处理。

网络流在大多数情况下显然覆盖多个数据包。如果只是单个数据包,那么你收集的又只是流经网络的通用数据的常规TCPdump。这些基本上都是在一个公共流标签下收集的多个数据包。流标签指的就是五元组。因此,五元组是汇总在单个记录中的所有多个数据包的公共流标签。对于持续时间很长的连接,这可以压缩成一个非常紧凑的表示形式,准确描述该流的实际情况。

关于NetFlow最重要的一点是,它不包含数据包的有效载荷数据。这一点很重要,因为任何仅在数据包有效载荷内部才能观察到的指标,都无法通过NetFlow IDS观察到。当你说使用NetFlow作为信息源可以检测哪些类型的攻击时,这是一个需要牢记的极其重要的点。

为何使用NetFlow?🤔

既然没有有效载荷数据,为什么还要使用NetFlow?如果得不到有效载荷,使用它还有什么意义?

有许多攻击的可观测指标仅体现在头部信息或网络流量的统计分布中。而这正是你从NetFlow传感器中获得的主要内容。因此,NetFlow的关键优势在于:

  1. 流量摘要:它是对流量的汇总,远比原始网络流量本身紧凑得多。
  2. 解决部分隐私问题:由于不包含有效载荷,解决了一些隐私顾虑。有些组织不希望存储任何收集内容中的有效载荷部分,主要是出于隐私考虑。但并非所有隐私问题都得到解决,连接元数据本身就能透露大量关于个人通信活动的信息。IP地址、源地址、目的地址通常可以指示进行活动的个人身份。因此,仅从收发地址,你就能获得大量关于个人在网络中所做事情的信息。所以,通过仅收集NetFlow,你能够限制对内容的窥探,但这并不能真正解决所有的隐私问题。
  3. 固定格式,易于操作:正如我们之前所说,NetFlow是一种固定格式,字段易于操作,在所有网络接口和所有公开可用的工具中通用,这些工具可用于对NetFlow数据进行各种分析、入侵检测和异常检测。

NetFlow应用实例:检测攻击与先兆 🚨

接下来,我们看看可以利用NetFlow数据做些什么。由于从NetFlow获得的数据提供了大量平均流量信息,几乎所有能用常规流量分析做的事情,都可以用NetFlow数据来完成。

例如,你可以看到正常流量处于某个较低范围,而某些流量则呈现峰值,看起来像是当前一天中可能看到的个别活动。但右边有一个有趣的流量分布,显示流量急剧上升,随后在同一时间持续涌入。平均比特数(如下方的绿线所示)升高并保持高位。这在某些DDoS攻击中非常常见。

因此,你可以看到,可以利用NetFlow这类信息轻松区分正常行为和DDoS行为。

然而,将NetFlow用于此目的的一个限制是:将NetFlow传感器放在哪里? 如果我将NetFlow传感器放在更上游的位置,以便聚合更多流量,那么我刚才看到的同一个攻击就可能被淹没在所有正常活动中。因此,在最初单个站点很明显的情况,当聚合到ISP基础设施的更上游时,就消失了。当然,我可能仍然可以运行额外的工具来分离出该攻击,但使用与本地理解平均行为相同的分析方法,在流量层面本身就不会那么明显。

关键在于,如果我决定在工作日期间采用平均行为,并将阈值设定在某个范围,比如在工作日阈值设在这里,在周末将阈值降低到这里,那么可以看到,这个流量并没有以任何方式超过我的阈值。因此,在这个特定水平上的阈值实际上无法识别我希望发现的(即此区域的DDoS攻击),而在前一种情况下,我可以轻松地设定一个阈值来实现这一点。

有许多很好的例子说明如何利用NetFlow数据轻松观察各种端口和流量的DDoS攻击。例如,这是产生的Slammer蠕虫流量。Slammer是在一个非常特定的时间点爆发的蠕虫之一,流量达到非常高的水平,然后很快结束。这仅从检测的角度来看是有趣的。

但利用NetFlow数据能做的,不仅仅是查看流量是否超过阈值,并以此来判断是否遭受攻击。在这种情况下,端口1434是网络流量的一个特定特征,我们可能希望回顾历史数据,看看在这个特定端口上是否存在此次攻击的先兆,这些先兆可能表明对Slammer蠕虫的测试或前期活动。

如果我们能识别出这样的先兆,那将非常重要。因为如果我们能识别先兆,就可以在此类攻击发生之前采取行动,在更高级别的ISP处进行限制或缓解,从而减轻其对实际受攻击端点的影响。那么,让我们使用NetFlow来看看这些先兆。

这里是攻击发生前的几个小时。首先注意到,这些流比上一张幻灯片中讨论的UDP端口(相同端口)的流要小得多,但这些现在是先兆。现在,我看到了这种有趣的多个峰值模式。它们都是小得多的峰值,但呈现出相似的规律,看起来像是蠕虫想要发起攻击的某种测试。

因此,如果我知道这是我所预期的蠕虫先兆的特征,我就可以对此活动发出警报,并在端口1434上出现之前那个巨大峰值之前,采取某种预防措施。这里的重要元素在于,这不是我会看到的正常流量。它本身并不危险,因为这些数字、这些水平并不高。所以这不是危险的DDoS流量。但作为先兆,它告诉我们一些可能正在发生的事情(在这个案例中是相当不寻常的端口1434),我们可能会开始认为这违反了正常流量,并且可能是更严重事件的先兆。

我们能否在ISP上游设置一个自动阻断规则,以防止我们的系统真正被拖垮?这些正是NetFlow可以真正开始建立的基线问题,你可以将其加载到IDS、基于异常的IDS中,然后利用IPS功能来近乎实时地防止此类事件。

先兆分析深入 🔬

在先兆分析中,我们特别关注三个主要来源,它们都来自一个已知的对手。这一点很重要,因为我们可以使用基于信誉的服务来识别已知的对手来源。

这三个主要来源都来自一个已知的对手,使用一种不寻常的固定模式。因此,这些被识别的响应者,是对我们基础设施中哪些部分会响应此类Slammer蠕虫的测试。

现在,IDS可以汇集大量信息,以便准备采取某种预防措施。我们有一个信誉服务告诉我们存在已知对手。我们有一个可以识别的固定行为模式,并且我们可以识别可能参与此次特定攻击设置的内部受害者。这些都是非常有用的模式,可以放入异常检测系统中,帮助我们提前应对一些更严重的攻击,同样,这是利用NetFlow实现的。

总结 📝

本节课中我们一起学习了如何利用NetFlow收集轻松建立基线,以指示正常行为。只要确保在创建正常行为基线时没有遭受攻击,你就可以利用NetFlow的这些统计数据,利用流量模式的自然变化,来寻找你想要发出警报的各类异常。

你可以利用各种图分析来展示正常的流量模式。这将帮助你更好地理解攻击先兆可能是什么样子,并识别出可以开始采取预防措施的事项,利用NetFlow数据创建网络基线。

这实际上创建了我们所谓的正常运行范围。检测到的异常落在此范围之外。这并不一定意味着超出范围就总是遭受攻击,也不一定意味着范围内的所有活动都不是攻击。当我们涉及到第一类和第二类错误时,你会看到基于此方法未能识别攻击的不同方式,可以轻松识别不同的错误类别。

然而,这仍然是一种优秀的方法,可以在NetFlow之上构建常见的IDS工具,或者使用Silk工具作为构建基线和警报的一种方式,这些信息可以输入到Snort规则、Suricata和Bro模块,以及其他任何支持基于统计的异常检测系统的IDS中,正如我们在本课程和之前模块的一些部分中所看到的那样。

025:I类与II类检测误差 🔍

在本节课中,我们将要学习网络入侵检测系统中的两类关键误差:I类误差(误报)和II类误差(漏报)。我们将探讨它们在误用检测和异常检测系统中的不同表现,并了解混合系统如何结合两者的优势。


检测误差的基本概念

上一节我们介绍了异常检测系统的基本原理。本节中,我们来看看当检测系统做出判断时,可能出现的两种基本误差类型。

当NIDS报告一起事件时,存在两种可能的结果:

  • 实际攻击:系统正确检测到了攻击。
  • 误报:系统报告了一起事件,但事实上并非攻击,只是正常行为。这被称为分类器中的 I类误差

当NIDS没有报告事件时,同样存在两种可能的结果:

  • 实际攻击:网络实际上正在遭受攻击,但系统未能检测到。这被称为漏报II类误差
  • 正常行为:系统正确地将正常行为归类为正常。

因此,NIDS的检测结果可以归纳为以下四种情况:

  1. I类误差(误报)
  2. 正确检测到攻击
  3. II类误差(漏报)
  4. 正确识别正常行为


误用检测与异常检测的误差对比

现在我们已经了解了这两类误差,接下来让我们比较一下它们在误用检测系统和异常检测系统中的不同表现。

I类误差(误报)对比

以下是关于I类误差在两种系统中的表现:

  • 误用检测系统:这类系统通过预定义的规则或特征集来指定攻击。这些特征通常被设计为捕捉攻击中罕见出现在正常流量中的独特部分。因此,误用检测NIDS的 I类误差率通常很低,即很少在无攻击时误报。
  • 异常检测系统:这类系统通过一组参数来定义正常行为。由于正常用户行为经常变化,许多超出“正常范围”的变异会定期发生。因此,异常检测NIDS的 I类误差率往往较高,会有更多误报,因为许多被标记为攻击的异常实际上并非攻击。

总结:在I类误差方面,误用系统通常具有较低的误差率,而异常检测系统则具有较高的误差率。


II类误差(漏报)对比

上一节我们比较了I类误差,本节中我们来看看II类误差的情况。

以下是关于II类误差在两种系统中的表现:

  • 误用检测系统:这类系统只能检测已知的网络攻击。对于大多数新的攻击(如零日攻击)或特征库更新后出现的攻击变种,系统往往会漏报。这导致了 较高的II类误差率
  • 异常检测系统:这类系统只关心行为是否超出正常参数,不关心具体原因。因此,无需事先了解攻击,只要攻击行为改变了系统状态并使其偏离常态,就会被检测到。这使得异常检测系统对新型攻击的检测能力更强,从而带来 较低的II类误差率

总结:在II类误差方面,情况正好相反:误用系统具有较高的误差率,而异常检测系统具有较低的误差率。


混合检测系统

前面的对比展示了误用和异常检测各自的优缺点。那么,如果我们将两者结合在一个系统中会怎样呢?大多数现代系统(如Snort、Bro、Suricata)都是混合了误用和异常检测的混合系统。

混合系统的误差特性更接近于异常检测系统:

  • I类误差率仍然较高,因为系统仍会像异常检测部分那样发出警报。
  • II类误差率较低,同样得益于异常检测部分的能力。

既然误差率相似,为何要使用混合系统?关键在于 检测准确性

  • 误用系统不仅I类误差低,而且其检测到的攻击准确性很高
  • 异常检测系统虽然II类误差低,但由于I类误差高,其准确性相对较低
  • 混合系统在保持异常检测系统低II类误差率的同时,通过误用检测部分(特征匹配)提高了警报的准确性。当特征匹配命中时,可以非常确定地识别出特定攻击。

因此,混合系统试图结合两种检测方式的优点,在整体上优化性能。它比纯异常检测系统能更好地检测已知攻击,同时保留了检测未知攻击的潜力。


本节课中我们一起学习了入侵检测系统中的I类误差(误报)和II类误差(漏报)。我们比较了它们在误用检测和异常检测系统中的不同表现:误用检测低误报、高漏报;异常检测高误报、低漏报。最后,我们了解到混合系统通过结合两者,在保持对未知攻击检测能力的同时,提高了对已知攻击检测的准确性。我们将在后续课程中继续运用这些概念来评估入侵检测系统的效能。

026:无线入侵检测系统(WIDS) 📡

在本节课中,我们将要学习一种运行在无线802.11空间内的特定网络入侵检测系统(NID)——无线入侵检测系统(WIDS)。我们将探讨其独特之处、面临的无线攻击类型以及相关的防御工具。

概述

无线入侵检测系统(WIDS)是一种专门为检测通过射频(RF)网络(如802.11)发起的攻击而设计的网络入侵检测系统。尽管现今大多数WIDS主要针对802.11a/b/g等标准,但其核心思想是:在任何基于射频的系统中,都需要一种能够以射频信号为输入,并在无线空间内进行入侵检测的系统。

无线环境的独特性

上一节我们介绍了WIDS的基本概念,本节中我们来看看无线环境带来的一个独特挑战:它模糊了内部威胁和外部威胁的界限。

无线信号通常不会停留在建筑物墙壁之内。大多数部署了无线网络的建筑并未进行射频屏蔽。这意味着攻击者可以在组织的物理边界之外,通过穿透到外界的射频信号访问无线网络。这样一来,我们对于“内部人员”(在建筑内物理接触系统)和“外部人员”(在建筑附近但能通过射频接入)的传统区分就被模糊了。

无线攻击类型

无线攻击不仅针对射频本身,也可能针对接入点、身份验证机制或在无线网络上运行的其他应用。其中一些攻击是无线传输环境所特有的。除了本视频内容,2008年一篇关于无线安全的文章(链接:此处)提供了更全面的概述。

接下来,我们将介绍几种不同于传统有线网络的、特定的无线攻击示例。这些攻击包括无线拦截与中间人攻击、干扰与阻断连接重置、身份验证攻击以及虫洞攻击。以下内容主要参考了“无线攻击揭秘”这一资源。

以下是几种主要的无线攻击类型:

无线中间人攻击

这种攻击本质上始于使用一个恶意接入点。恶意接入点可以是另一个物理硬件设备,也可以是一台笔记本电脑。攻击者将硬件设备引入目标射频网络的工作区域,并命名一个与合法接入点名称相同的接入点,从而诱骗目标设备连接到恶意接入点而非合法接入点。

一旦受害设备连接到恶意接入点,攻击者就可以开始拦截数据包(包括身份验证数据包),读取并修改它们,然后再转发给合法的接入点。攻击者可以创建自动化工具来完成这个过程,使目标用户完全无法察觉中间存在一个在无线空间中利用恶意接入点进行拦截的攻击者。

在射频空间中实施这种攻击比在有线物理环境中更容易,因为攻击者无需考虑在哪里接入或切断线路,只需处于目标设备的射频信号范围内即可。通过命名技巧并增加发射和接收功率,攻击者可以使目标计算机更倾向于与自己的接入点通信。

干扰、阻断与连接重置攻击

在射频环境中,干扰、阻断和重置连接是另一类独特的攻击。攻击者同样会引入一个恶意接入点或其他类型的发射器到环境中,使其工作在相同的信道和频率上。

但在此类攻击中,攻击者利用射频创建无线帧来干扰、阻断合法信号,或向连接中注入重置指令,从而破坏组织在接入点与终端之间进行的任何正常工作。攻击者可以通过向接入点发送恶意射频信号和畸形数据包,使其无法响应甚至崩溃(例如通过资源耗尽攻击),也可以直接干扰各个终端设备。

在射频空间中,入侵检测系统(IDS)可以寻找那些表现为干扰、阻断和重置的模式,识别出它们并非正常的射频信号变化,而是针对系统发起的某种攻击。

身份验证攻击

针对射频空间的另一种非常严重的攻击是身份验证攻击,即攻击无线接入的认证方式。早期版本的身份验证机制(如WEP加密)很容易被破解,互联网上存在许多常见工具可用于破解各种类型的无线身份验证。

较新的方案如WPA2WPA2企业版至今未被攻破,比旧方案安全得多。然而,许多无线接入点使用默认密码和默认配置,且维护不善(用户不更新固件、不重置默认密码、不升级加密标准),导致这些系统容易被利用。

例如,互联网上的工具如Aircrack-ng,就非常擅长利用这些漏洞来破解标准的无线密钥加密(尤其是旧的、易受攻击的WEP加密),使攻击者能够伪装进入网络,成为网络中的活跃参与者。

虫洞攻击

无线领域中另一种完全不同的常见攻击是虫洞攻击。这是中间人攻击的一种变体,其本质是拦截数据包,并通过一个“虫洞”将其传送到更接近目的地的位置,而不是让它通过无线网络、基础设施的正常路径到达目的地。

这样做的好处是,通过接管数据包(无论是重写还是重放),攻击者可以让自己的应答通过虫洞返回,从而利用来自原始起点或目的地的所有身份验证和加密标准来控制连接。这个虫洞隧道使攻击者能够比原始数据包更快地到达目的地,导致后续到达的原始数据包被视为重复包而被丢弃。

这样一来,建立起来的主要连接将通过这个由对手控制的虫洞进行。对手可以修改数据包或直接接管连接。虫洞攻击在无线网络上有效,是因为无线连接往往比有线连接慢,路径也更迂回,使得攻击者能够“赛跑”并将数据包抢先送达目的地。即使攻击者无法解密数据包或理解其完整载荷,仍然可以通过虫洞进行中间人攻击来控制连接。

攻击工具与防御工具

这些攻击及其防御工具并非理论性质。攻击工具在现实中广泛存在,通过任何搜索引擎都能找到针对无线网络的各种攻击工具。

同时,也有一些WIDS工具可用。主要的开源工具是 Kismet(访问网址:此处)。Kismet是一个基于签名和异常检测的WIDS,是一个基于无线网络的入侵检测系统。

如果想了解攻击方,Kali Linux(一个包含许多攻击工具的镜像文件)也包含许多开源的无线攻击工具。在测试环境中运行Kismet和Kali Linux,可以测试无线系统抵御各种常见攻击的能力,并观察Kismet作为主要检测工具是如何发现和预防这些攻击的。

在本课程中,我们虽不重点深入航空或无线入侵检测领域,但它是网络入侵检测系统工具中一个重要且不断增长的方面。本模块的阅读材料包含一些近期论文,进一步描述了WIDS领域的研究以及当今无线入侵检测的发展现状。

总结

本节课中,我们一起学习了无线入侵检测系统(WIDS)。我们了解了WIDS如何专门检测射频网络攻击,以及无线环境如何模糊内外威胁的界限。我们详细探讨了几种典型的无线攻击:中间人攻击、干扰阻断攻击、身份验证攻击和虫洞攻击,并简要介绍了用于攻击测试的Kali Linux和用于防御检测的开源工具Kismet。无线安全是入侵检测中一个至关重要且持续发展的领域。

027:入侵检测系统评估方法 🎯

在本模块中,我们将学习如何对不同的入侵检测系统进行技术性评估和比较。我们将介绍三种主要的定量评估方法,并讲解如何收集数据、选择合适的方法,以及如何设计实验来评估基于签名的IDS。通过本模块的学习,你将能够理解如何在实际环境中选择和评估入侵检测系统。


入侵检测:8.1:比较不同类型的IDS 📊

上一节我们概述了本模块的目标,本节中我们来看看比较入侵检测系统的三种主要方法。

这三种方法适用于不同的场景,在实际选择IDS时,你可能会结合使用它们。

以下是三种主要的评估方法:

  1. 基于特征的比较:此方法涉及对比不同IDS的技术规格表。你需要根据自身需求,分析外部信息和技术规格表,进行对比。
  2. 经济性比较:此方法简要分析部署IDS的成本与收益。下一个视频将对此进行更详细的探讨。
  3. 基于结果的比较:此方法通过在环境中测试IDS,对其性能进行分析,评估其工作效果。

我们将把项目重点放在基于结果的比较上,因为这能让你获得入侵检测系统的实际操作经验。然而,在实际环境中选择IDS时,这三种方法都需要考虑。

这三种方法各有不同的缺点,我们将会讨论各自的局限性。这些方法可以结合使用,并非只能选择其一。


入侵检测:8.2:经济性分析 💰

上一节我们介绍了三种比较方法,本节中我们深入探讨如何进行IDS的经济性分析。

这部分内容不会涵盖完整经济分析所需的每个细节,但会为你提供要点,确保你覆盖关键方面。

经济分析主要涵盖以下成本:

  • 前期成本:这包括部署IDS所需的资源以及员工培训要求。
  • 持续成本:我们将讨论可能预期的持续成本。
  • 效益评估:这可能是整个经济分析中最困难的部分,即计算某种投资回报率,以理解在环境中部署IDS可能带来的回报。

入侵检测:8.3:为IDS评估收集数据 📈

上一节我们讨论了经济分析,本节中我们来看看如果你打算自己进行定量评估,应如何收集数据。

为了对不同的IDS进行测试,你需要收集具有特定特征的数据集。

以下是数据收集的关键步骤和考虑因素:

  • 期望的数据特征:确定你希望用于评估的数据应具备哪些特性。
  • 收集正常流量与攻击流量:你需要收集正常的网络流量数据和攻击流量数据,以便用它们来测试不同的IDS。
  • 数据标记:如何标记数据,以便后续进行分析。
  • 数据更新:如何保持数据的时效性。

理解如何获取适合你环境使用的、具备正确特征的数据,是本视频的重点。


入侵检测:8.4:比较基于签名的IDS(示例)🔍

上一节我们介绍了数据收集,本节我们将通过一个具体示例,将所学内容融会贯通,展示如何测试基于签名的IDS。

我们将以比较Snort和Suricata的默认配置为例。

评估步骤如下:

  1. 使用标记的测试数据集:假设你有一个用于分析的PCAP文件数据集。
  2. 运行测试:用该数据集对IDS进行测试。
  3. 识别性能差异:找出哪个IDS能以更少的误报检测到更多的事件。

本模块将初步介绍如何通过运行攻击来对IDS进行定量分析。更深入的基于比率的计算和ROC分析将在下一个模块中讨论。


总结 📝

本节课中,我们一起学习了入侵检测系统的评估方法。我们介绍了三种主要的定量比较方法:基于特征、基于经济性和基于结果的比较。我们探讨了为评估收集数据的关键步骤,并通过一个比较Snort和Suricata的示例,演示了如何对基于签名的IDS进行测试。理解这些方法不仅能帮助你比较不同的IDS,还能让你对运行中的IDS有合理的性能预期,并了解如何处理其检测到的事件。

这是一个非常重要的模块,祝你在后续学习中顺利。让我们开始吧。

028:各类入侵检测系统对比分析 🔍

在本节课中,我们将学习如何实际比较不同类型的入侵检测系统。当您拥有多个系统,并希望根据特定情况决定哪个最佳时,遵循一个明确的程序,使用真实数据和特征或经济分析来比较IDS,将是您开始精确分类IDS在特定环境中如何工作的方式。

我们将讨论三种主要方法。我们将讨论特征比较,这是比较两个或多个入侵检测系统最简单的方法,即直接比较它们的特性。我们将介绍经济比较,但会在下一个视频中更详细地介绍。然后,我们将简要讨论基于结果的比较,这种方法需要您运行测试数据,并根据测试数据确定哪些入侵检测系统的结果最适合您的具体情况。

根据您在选择入侵检测系统时希望最大化的目标,您将使用不同的方法。无论是希望最大化特性、经济效益还是IDS的性能结果,不同的情况需要不同类型的比较。没有一种完美的方法来比较两个IDS,所有这些技术都有其缺点,我们将讨论这些缺点是什么。这些方法并不互斥,您可以结合使用不同的方法。在某些情况下,您可能希望查看特征比较;在某些情况下,您可能希望查看基于结果的比较;在某些情况下,您可能希望查看经济比较。但在任何特定情况下,您都可以选择其中两种或更多方法,然后结合结果来帮助您为特定情况选择最佳IDS。

特征比较法

最直接的IDS比较类型是直接比较入侵检测系统内的不同特征。基本上,您将从最适合您需求的入侵检测系统类型开始。这些类型我们已经讨论过:异常检测与误用检测,基于网络的与基于主机的IDS。因此,这基本上是说,首先确定哪种类型的IDS最可能满足我的需求。在每种类型中,您将会有多个特定类型的入侵检测系统可供选择进行比较。因此,您可以查看这些特定IDS中的不同特征,并确定哪些特征是真正需要的。然而,具有您所需确切功能列表的产品可能并不存在。因此,您必须开始权衡哪些IDS在您实际希望拥有的各种不同特征方面具有最佳匹配度。

那么,从哪里获取特征呢?您可以从任何给定的分类法开始。我们有异常检测与基于签名的分类法。在这些分类法中,有不同类型,并且我们已经讨论了这些分类法可能细分的不同方式。它们会细分为更精细的细节,最终您会得到可能为特定情况选择的特定类型的IDS。

这可以相当直接。例如,如果我知道我想要一个基于专家系统的基于签名的IDS,那么我现在就有了可供选择的列表,可以查看并确定这是否有意义。相反,如果我想要一个异常检测系统,并且我不希望它是自学习的,我希望它是一个描述性的简单统计模型,那么我将会有更多朝这个方向发展的选择。因此,如果您有一个包含不同类型特征的分类法,并且这组特定特征更多地来自底部的参考文献。您可以通过简单的网络搜索找到许多这类不同的IDS分类法。这个分类法实际上可以一直列出一些IDS。许多主要杂志和出版物也会有其他类型的细分。这是一种简单追踪并确定是否有任何IDS满足您想要查看的特定功能集的方法。

另一种同样有效的方法是,如果您不查看IDS的特定分类法,而是创建自己的功能集。您可能实际上有一个包含不同架构形式的功能集。

以下是不同种类的事件分析。这基本上不一定是IDS的分类法。这些是您认为在选择特定IDS时重要的具体特征。一旦您有了自己的特征,现在您可以出去查看所有可能包含这些特征的不同入侵检测系统,然后开始逐一检查,看看哪些IDS包含哪些各种特征,一直到您确定对您最有意义的那些。

因此,如果我决定我真正想要的是某种漏洞检查器,并且我想查看漏洞分析,那么我可以说,我已经检查了很多这些领域,可以看到大多数都没有我需要的功能,但我可以说,这个有我需要的东西。

这个几乎有我需要的,但不完全。所以我回过头来查看所有这些,然后说,这给了我一个相当有限的集合。那么这两个工具是哪些呢?基本上就是我列在顶部的Air Defense和StrataGuard。

所以现在我知道,当我挑选了几个我真正想看的特定功能时,我知道哪些最可能对我重要。

同样,这个特定的集合来自下面我列出的参考文献。但再次强调,使用此方法的最佳方式基本上是定义您自己的功能集,即您认为最重要的功能集,即侧边的列。当您想了解在这些功能中您真正想使用哪些时。

您可以对一些功能进行更详细的了解。同样,这些不一定是您自己测量的功能。这些是作为特定IDS规格表或广告一部分列出的功能。因此,您将能够看到覆盖范围、误报率、检测概率等许多类型的定量特征,这些信息也可以从IDS规格表中获得。

因此,如果您真正关注的是关联事件的能力,那可能是一个在规格表上列出定量结果的特定功能。您可能专门寻找检测前所未见攻击或零日攻击的能力。因此,您可能希望去寻找那些特定类型的入侵检测系统。或者您可能优先考虑多级抽象,即可以在数据包级别以及会话或应用程序级别工作的功能。这些对于您寻找特定IDS的定量特征可能很重要。

使用基于特征的分析来评估这些IDS时,重要的是您主要通过发布的规格表和您组织外部找到的比较分析来完成,因此您不一定需要将所有IDS引入您的组织并验证所有这些功能是否存在。因此,您将简单地根据可以找到的功能列表来选择IDS。

特征列表与需求分析

我一直在讨论功能列表,重要的是要认识到功能列表与需求集不是一回事。

因此,如果您为入侵检测系统制定了一套需求,您可能会回过头来查看功能列表,看看这些功能是否满足您的需求。但需求是您根据自己的企业或环境的要求或约束设定的。另一方面,功能是产品的广告能力。当您查看需求时,您是基于风险降低和期望的特定部署来制定需求的。这就是您如何制定需求的方式。进行需求分析实际上可以帮助识别所需的功能。需求通常与您在IDS中可能看到的功能列表不完全相同,但进行需求分析可以引导您选择最适合您特定环境的IDS功能。

让我们来看一个非常简单的例子。假设有一个企业要求IDS能够检测已知攻击并识别攻击的明显来源。在这种情况下,我真正想了解攻击来自哪里。

我希望该产品在网络中运行。我希望它们能检测已知攻击,但这些必须定期更新。因此,不仅仅是设置一次就完事,我需要有一种方法让这个特定的IDS保持更新到最新状态。最后,这里有一个非常重要的要求。我的事件必须能够集成到现有的事件管理器,即安全事件管理器中。因此,我必须确保我决定创建的任何IDS产生的所有警报都能进入我已经拥有的SIM中。在这种情况下,我正在寻找一个基于网络的签名IDS,因为我希望在网络中运行以检测已知攻击。所以这将意味着我需要一个基于网络的签名IDS来满足这些需求。

我希望包含用于签名更新的商业支持。这意味着我确实需要一个具有某种维护合同或能够让我使用某种商业产品自动保持签名更新的产品。

我必须使用标准警报类型才能集成到我的SIM中。因此,基本上我的IDS输出必须是标准格式。因此,有几个基于商业的IDS将满足这些需求。例如Sourcefire。许多其他基于网络的IDS可能满足我将要在我的特定环境中拥有的所有这些不同类型的需求,以实现我的目标。

正如我们在之前的模块中看到的,基于网络的签名IDS是我们能找到的最常见的商业产品之一。当然,许多这些公司提供签名更新。并且有标准的IDS警报类型可以集成到常见的SIM中。

经济分析法

除了基于特征的分析,我们可能希望进行经济分析,以了解在我的基础设施中部署IDS以满足需求的最具成本效益的方式。因此,我将基于入侵检测系统的总拥有成本来进行此分析。这将包括购置成本、维护、员工培训、许可等与运行IDS并使用结果实际降低风险有关的一切。我还必须考虑警报的复杂性,以确定警报是否足够复杂,能够真正应对将降低我风险的那种威胁。我们将在下一个视频中更详细地介绍这一点,所以这只是对我们将要讨论的经济分析的介绍。

基于结果的比较法

现在,我将花一些时间看看基于结果的比较。基本上,这将是我们的入侵检测系统在部署环境中的测试和性能。

在这种情况下,我们必须至少获取我们想要使用的入侵检测系统的某种测试版本,以便在某种直接环境、我们环境的代表环境或至少代表我们环境的数据中部署它们。因此,我们将使用测试和实验来确定准确性、类型1(误报)错误率、类型2(漏报)错误率以及一些基本指标,以说明这个特定的IDS在我们这样的环境中工作得如何。

在这个过程中,我们将调整每个IDS的配置,以最大化或优化部署,并覆盖我们特定环境中真正关心的风险类型。因此,这比基于特征或经济的分析要深入得多,但也更紧密地联系到部署环境的具体情况,以降低风险。因此,您从基于结果的比较中获得的定量结果比从简单的特征甚至基于经济的比较中获得的要多得多。我们将详细讨论一些特定的定量分析,称为接收者操作特征曲线,我们将使用它来分析从基于结果的比较中获得的结果。

在基于结果的比较中,我们试图做的全部事情都围绕着混淆矩阵。这是我们在讨论尝试对我们的特定IDS进行定量分析时将使用的关键工件。攻击被分类器(即IDS)检测到或未检测到。如果它被IDS检测到,我们称之为真阳性或检测到。如果未被检测到,我们称之为正常或假。这为我们进行IDS检测测试时提供了四种可能的结果。

我们可以有检测到的类别和真实的类别。真实的类别是数据或环境真正提供的,检测到的类别是我们正在测试的每个IDS实际给出的。因此,如果存在真正的攻击并且IDS确实检测到了它,我们称之为真阳性,我们可以在这里计数。

如果存在真正的正常情况,但未被检测到,却被IDS检测到了,那么我们得到一个类型1错误,即误报。如果真实的类别是阳性,但检测到的类别错过了它。这是IDS未发现事件的情况。这是一个类型2错误。那是我们的漏报。最后,如果存在真阴性,即在真实类别中为阴性且IDS未将其检测为事件的情况,我们称之为真阴性或正常的适当测试。

一旦我们在任何给定的IDS测试中获得了所有这些计数,我们就可以在一系列不同类型的定量分析中使用它们,以比较这些IDS在我们关心的特定环境中的工作方式。

进行这种基于结果的比较的典型程序如下所列。第一步,我们必须开发代表部署环境的测试数据。这非常重要,如果我们要开发测试数据,它必须实际代表我们想要部署的环境。这意味着它具有我们试图保护的相同类型的资产,以及我们可能期望用IDS检测到的相同类型的攻击,并且它必须具有我们希望IDS正确分类为正常的正常行为。这第一步可能是进行基于结果的比较中最困难的部分之一。开发或使用外部测试数据库来理解如何进行这些测试,涉及一系列要素和问题,以确保其具有适当的代表性,确保其具有正确的攻击类型,确保其正确代表我们的资产。

因此,一旦我们完成了这项工作并拥有了测试数据,我们就可以使用测试数据对每个IDS进行调优和相互测试。因此,我们可能会使用单个IDS的各种不同配置类型,这将从我们的测试数据中给出不同的结果。使用相同的测试数据,我们可以对多个具有不同配置的不同入侵检测系统运行相同的测试数据,并进行真正的正面比较,以了解这些IDS在测试数据中的工作情况。

在通过测试数据运行后,我们可以为要比较的每个IDS配置生成混淆矩阵。从那里,我们可以开始分析,收集每个配置的性能、规模数据,然后我们可以使用接收者操作特征曲线、精确率-召回率图或任何其他表示形式来比较这些IDS的性能。我们将在下一个模块中更详细地介绍ROC图、PR图和其他类型的详细定量分析。对于本模块,我们将更多地讨论收集性能和规模数据,然后仅对检测率、错误率和性能之间的权衡进行集体数据点的比较。

现在,这是对基于结果的比较过程的一个非常高级的概述。显然,在这六个步骤中的每一个步骤中,都有大量细节我目前只是略过,您必须完成这些细节才能进行公平、严谨、可重复的测试,并且该测试实际上代表了您将在实际环境中部署的IDS类型。

方法总结与应用场景

到目前为止,我们在这个视频中讨论了三种技术。我们有基于特征的分析、基于经济的分析和基于结果的分析。那么,您何时会想使用这些方法中的每一种?何时会想结合使用它们?

一种看待它的方式是基本上只看它们的优缺点。对于基于特征的分析,请记住,这只是查看IDS的数据表和规格表以及外部测试,以评估它是否值得在我们的环境中运行。因此,正如您可以想象的,收集这些数据很容易。它将作为营销材料的一部分出现。可能会有学术文章和其他类型的分析,您可以获取并阅读关于特定IDS的内容,这些内容真正了解这些IDS在某种测试环境中的性能。然而,这种方法的缺点是,创建这些特征的测试环境不一定非常准确地反映您的环境。而且,特别是来自营销数据,这些特征往往非常主观。例如,他们可能会说我们检测零日攻击。但这到底意味着什么?这是否意味着它对各种类型的攻击进行某种异常检测?它是否具有真正查看其他从未发生过的新型攻击的创新技术?因此,当您查看的只是来自外部测试和营销的数据时,有很多这类开放性问题。此外,这些特征分析不会解决您自己环境中的特定性能问题和约束。这非常重要,因为仅通过查看功能列表,您很难知道其中一些IDS的扩展性如何。

如果我们看经济分析法,我们将在下一个视频中讨论如何进行经济分析的细节,但这种方法的优缺点在于,我们可以解决初始和经常性成本。我们可以将技术和人员联系起来。这可能是其中最重要的部分之一,即我们可以将其视为一种方式,不仅孤立地看待技术,而且着眼于该技术如何适应我们的团队和事件响应团队、CERT团队,以了解我们将如何利用IDS的结果来降低风险。从经济分析来看,向决策者传达这一点相当容易,因为成本将以底线形式的美元和美分计算。

然而,这种方法的缺点是,这些分析会推动最小化成本的解决方案,并且它们可能比其他可能功能更全的系统或您可能想要测试的系统效果差得多。在进行这种经济分析时,您常常会低估人员和经常性成本。大多数销售IDS的公司都有低估这些成本的最大利益。如果不仔细分析您将如何部署这些不同类型的入侵检测,您可能无法意识到实际使用它们所需的一些培训和人员配备要求。最后,这些经济分析技术相对静态,不能很好地适应不断变化的威胁,并且随着威胁的变化,IDS内部可能存在增加各种成本的开放式经济需求。

在基于结果的分析中,这种方法产生定量结果。您确实在您的环境背景下获得它,因此您对IDS在您特定环境中的性能有更好的了解。它还允许您考虑单个IDS内的多种不同配置,并充分考虑性能问题。但要明白,这是一种昂贵且难以进行的分析类型。它需要对测试环境或测试数据进行大量投资,并且难以比较IDS中根本不同的方法。如果我有一个看起来像网络数据集的数据集,它可能无法告诉我基于主机的IDS在那种情况下将如何降低我可能拥有的相同类型的风险。

结合使用多种方法

最后,没有任何规定说我们不能将这些技术结合使用。每种技术都可以用来解决其他一些技术的不足。因此,特征列表本身可以用来对您的初始选择进行分类,以获得数量较少的IDS,然后您将对这些IDS进行基于结果的选择。最后,在完成基于结果的选择后,您可能希望进行经济比较,以了解您可能想要使用的任何解决方案的可负担性和总拥有成本。

这些是您开始比较不同入侵检测系统的一些方法。随着我们学习本模块和下一个模块,我们将越来越明确地介绍如何实际运行这些测试,以便您可以清楚地证明您可以获取IDS并运行测试,并在两个或多个入侵检测系统之间进行定量比较。

在本节课中,我们一起学习了三种比较入侵检测系统的主要方法:基于特征的分析、基于经济的分析和基于结果的分析。每种方法都有其适用场景和优缺点,并且可以结合使用以获得更全面的评估。理解这些方法将帮助您为特定环境选择最合适的IDS。

029:入侵检测系统的经济效益分析 💰

在本节课中,我们将更深入地探讨如何对不同入侵检测系统进行经济效益比较。这是评估和选择最适合特定环境的入侵检测系统的三种方法之一。

上一节我们主要讨论了基于功能特性的比较。本节我们将聚焦于经济效益分析。在下一节视频中,我们将讨论如何基于性能进行定量分析,而性能比较的概念也将延续到我们关于接收者操作特征分析的模块中。


确定初始成本 💸

进行经济效益分析的第一步是确定初始成本。这不仅仅是IDS软件或硬件的采购成本,还包括部署后运行IDS所需的所有资源成本。

需要记住的是,部署IDS的总成本远不止购买软件和硬件。您可能需要修改目标环境,以确保具备设置IDS所需的一切条件。您必须拥有所有的数据传输、传感器和分析能力,以明确在给定IDS下希望检测到哪些类型的事件和事故。

许多人倾向于选择开源或免费版本的入侵检测系统,认为这将大幅节省成本。然而,事实往往并非如此。这些免费IDS看起来很好,因为您可以快速下载并运行软件,但您通常没有一个公司在背后支持,以确保您拥有理想的环境,确保其针对所有可能需要的外部资源进行了适当调优。因此,这里存在一个权衡,而不仅仅是购买初始IDS的成本。


成本构成因素

IDS的成本确实取决于许多因素。

  • 开源与商业技术成本:开源技术可以免费下载和运行,而商业技术则需要采购。开源与商业技术的功能特性差异不一定很大。商业技术可能具有一些开源技术不具备的额外功能。例如,商业技术Sourcefire基于开源技术Snort,但提供了更多功能。然而,如果您寻找的是普通Snort就能发现的东西,那么转向Sourcefire并不会带来太多额外价值。另一方面,像Sourcefire这样的商业产品通常能提供更大的扩展能力,因为它拥有定制硬件和经过调优的软件,而不仅仅是下载的开源代码。这些安装通常可以扩展到比某些开源工具所能支持的更大、更复杂的环境。例如,Bro作为一个开源工具,是用于高级入侵检测的优秀工具,但它并非为高性能而设计,其运行速度可能不及某些商业技术产品。
  • 硬件考虑:对于商业技术,您通常会获得一个设备,即专门为运行该特定IDS而调优和安装的硬件。如果使用开源IDS,您需要意识到,您将需要使用额外的硬件资源,通常是大量的硬件资源,才能将其部署到整个基础设施中。
  • 集成成本:当然,还需要考虑将IDS集成到环境中所需的其他相关硬件和软件问题。这可能包括从网络分路器和额外交换机,到对VPN或虚拟网络设置方式进行重大更改等方方面面,以便将传感器信息路由到您的IDS。

总而言之,在您的基础设施内部署IDS时,开源并非免费。您确实依赖于硬件基础设施,并且可能需要某种第三方支持,以保持IDS在您的环境中得到调优和更新。


非IDS相关的部署成本

上一张幻灯片提到了一些非IDS相关的部署成本,即那些不直接随IDS提供,但却是IDS正常工作所必需的。

以下是这些成本的主要类别:

  • 传感器:为了将所有可观测数据传送到IDS,您需要部署传感器。可观测数据必须包含感兴趣的攻击数据,否则任何IDS都无法检测到这些事件。这听起来显而易见,但常常被遗忘。您需要确定希望从何处获取可观测数据。这是决定传感器部署位置的主要驱动因素,同时也需要考虑是否需要额外的带宽或其他资源来将传感器数据传回入侵检测系统,以便这些更集中的IDS能够协调处理所有不同的传感器信息。对于高度敏感的企业和组织,您甚至可能希望使用传感器与IDS之间的带外通信,以防止入侵者介入传感器与IDS之间的数据路径。
  • 警报分发:从警报分发端来看,我们必须将从IDS产生的任何警报传递给防御者,即那些将根据发生的情况采取行动的人员。这可能也需要额外的硬件和软件,以确保防御者能够近乎实时地收到警报,并确保他们确实收到了这些警报。如果防御者没有收到警报,那就等同于漏报,与第二类错误完全一样。有时,这可能需要与现有的安全事件管理器进行某种集成。此外,在及时性和成本之间总是存在权衡。
  • 分析引擎:如果试图检测的事件集合非常复杂,需要复杂的传感器数据组织关联,则可能需要额外的硬件和软件资源来实际执行分析。因此,您必须考虑到,不仅仅是希望获得的警报,还包括所有后端分析处理,特别是如果它是一个机器学习类型的IDS,则可能需要大量资源来训练、分类和归类所有传入IDS的传感器数据。
  • 存储限制:我们需要考虑在哪里存储警报和传感器数据,如何长期保存,以及如何能够进行取证回溯以查看原始传感器信息。因此,了解希望保留的警报数据和传感器数据的量级,也将是我们非IDS部署成本的一部分,并且涉及另一个权衡:我们愿意投入多少来保存这些信息,以及保存多长时间?

人员与培训成本

一旦确定了硬件和软件成本,您就必须开始考虑人力成本,特别是是否需要额外的人员,以及这些人员需要接受何种培训,才能真正利用您在IDS硬件和软件上的投资。

这通常是部署任何IDS的最大开支,即部署、维护和响应所需的人员资源。入侵检测系统需要人工环节来跟进警报并实际响应事件,以降低风险,实现在组织内降低企业风险的目标。

在人员与培训方面,存在大量权衡:

  • 您可能希望使用更先进的IDS来提供更好的检测和更少的响应替代方案,然后通过IPS自动执行操作,这可能会降低人员成本,但风险是偶尔可能采取错误行动,造成自我拒绝服务,并允许对手在一定程度上控制响应周期。
  • 当然,我可以采用一个IDS并大幅减少第一类错误,以减少在追踪毫无意义的警报上浪费的人员时间。这是一种通过前期投入来减少后期所需人员需求的方法。
  • 最后,IDS越好用、越易于使用,就越能减少人员培训所需的专业知识,从而避免让我最专业的网络管理员一直忙于IDS工作。

因此,这种减少第一类错误的方式可以显著降低人员需求,但永远无法将人员需求降至零。即使在IPS的情况下,您仍然需要大量人员来有效地使用这些IDS。在未来的一个模块中,我们将更多地讨论如何组建CSIRT团队以及需要何种专业知识,这也是早期决定如何采购IDS时人员与培训考虑的一部分。


评估持续成本 🔄

在考虑了所有初始成本之后,我们必须开始思考随着时间的推移,维护IDS所需的持续成本是什么。

我们都习惯了那种年度许可费的概念。如果这只是我们需要担心的唯一持续成本就好了,但实际上,远不止于此。这里需要许多直接成本之外的间接成本,以长期维持功能。

以下是驱动这些持续成本的因素:

  • 威胁的变化:威胁如何随时间变化?出现了哪些新的攻击,并已成为您风险状况的一部分?
  • 内部基础设施变化:我的系统正在发生哪些变化?我添加了哪些新服务?部署了哪些新的关键信息?我如何进行重新架构?
  • 人员流动:这意味着我将不得不重新培训和招聘新员工。
  • 与其他防御技术的权衡:如果我获得了一种新的超级防御技术,我或许可以说,整个某一类警报可能不再需要这个特定的IDS了。我甚至不必担心那些特定类型的成本或传感器位置,如果我安装的额外防御技术取代了IDS的部分功能。

维持功能与成本控制

许多这些持续成本实际上归结为:我将如何维持期望的IDS功能,以持续地、可预测地降低风险,使其真正按照我希望的方式工作。

这意味着需要定期更新IDS配置,以应对不断变化的内部和外部环境因素,即各种新的威胁和攻击。为了控制成本,我需要持续调优并保持我的IDS处于最新状态。

  • 第一类错误率上升:如果不改变IDS的配置,随着时间的推移,您会发现第一类错误率上升。如果放任不管,我会收到越来越多的误报。这是因为外部环境持续变得更加复杂,功能更多,涉及新服务,这些可能会触发IDS的现有配置。因此,每当我看到针对已知的普通服务或活动出现大量误报时,我就需要回过头来重新调优我的IDS,以将第一类错误率再次降低到合理水平。
  • 与其他防御技术的协同:其他有助于降低风险的技术也可能改变您的IDS配置必须与这些防御技术协同工作的方式,既涉及误报,也涉及确保那些未被防火墙、访问控制等其他防御技术覆盖的攻击片段能够通过IDS配置检测到。这不仅随着IDS的变化而变化,也随着您所有防御技术的变化而变化。
  • 更新资产信息:当然,您希望能够识别响应攻击所需的所有关键数据。这通常意味着更新IDS配置,以便列出的资产信息(例如,当警报发送给您时,您不仅希望获得IP地址,还希望该IP地址与有助于响应者根据当时所有其他情况确定优先级的关键信息相关联)需要维护。
  • 生态系统集成:请记住,IDS是整个防御生态系统的一部分。它们协同工作以降低风险。理想情况下,您希望IDS能够与您的其他防御技术无缝集成,即插即用,以便IDS可以与防御生态系统中的所有其他方式协作。目前,供应商社区对此支持得并不好,这些技术大多仍是孤岛式的。然而,随着它们变得越来越普遍,集成的能力也会越来越强。我们将会看到这些规则集和其他防御技术开始协同运作,以便您可以通过一个统一的界面对IDS规则集和其他防御技术进行共同控制。
  • 持续的人员成本:当然,您还有与任何这些IDS相关的持续人员成本。其中很多都集中在培训上,既包括IDS技术本身的培训,也包括当IDS实际触发特定警报时应采取的措施的培训。没有这种培训,发现如何处理事件实际上可能会抵消您期望从IDS本身获得的所有风险降低效果。基本上,如果您将IDS警报作为员工学习如何处理的培训,而没有测试、模拟或其他实践培训,那么通过加速事件响应来降低严重性的想法就大打折扣了。当然,这也受到人员流动的强烈影响,因为每次有新员工加入,他们都需要初始培训。
  • 事件处理增加:随着发现更多的事件,通常需要更多的人员时间来应对这些事件。这是IDS在经济分析中往往被严重低估的部分。首次安装IDS并开始运行时,您并不知道自己不知道什么。因此,存在许多IDS未检测到的攻击(第二类错误),您最初也处理得不好。随着您更新IDS以覆盖越来越多的攻击基础,人员现在将需要处理从IDS发出的这些事件的警报。这实际上会导致人员资源随着时间的推移而增加,不仅仅是基于企业增长(当然,企业增长会导致人员增加),还基于随着IDS变得越来越有效而处理的事件数量和类型的增加。

错误管理成本 😓

遗憾的是,当谈到实际使用IDS的持续成本时,大部分或很大一部分成本将用于错误管理,即处理这些第一类和第二类错误。

  • 第一类错误成本:当然,如果您从一开始就知道哪些事件是第一类错误,您就不会担心,可以直接立即将其分诊出去。但它们产生额外成本的原因在于,确认一个事件实际上是第一类错误需要大量时间,通常与解决一个真实事件所需的时间相当。这就是第一类错误(误报)带来额外成本的地方。
  • 第二类错误识别:您的第二类错误通常通过外部报告获得。您的CSIRT不仅查看来自IDS的事件,还在寻找来自用户、客户或其他与IDS完全无关的地方报告的事件。这些外部报告有助于从IDS的角度识别第二类错误,并允许您更改IDS的配置,以便在未来开始捕获该类事件或攻击。这是一种调优IDS以引入更多真实事件的方法。

因此,您总是试图通过为第二类错误添加检测规则,并移除那些产生第一类错误的规则,来减少第一类错误和第二类错误。这是您从错误处理成本转移到IDS更新成本的持续成本。


评估效益 📈

处理完到目前为止的所有内容后,您可能会想,在企业中部署IDS的成本真的很高,非常昂贵。因此,您最好从IDS中获得非常好的效益,以证明这笔巨大的初始和持续成本是合理的。

然而,评估IDS的效益极其困难。事实证明,这是经济效益分析中最困难的部分之一,即计算从部署IDS以及确保您正确使用IDS所需的所有支持结构中获得的效益。

有几种方法可以评估效益:

  • 参考类似组织:这在实践中是最常见的方法。您可以说,我是一家大型百货连锁店,而另一家连锁店上周因为没有妥善处理事件而上了报纸头版,所以我不想上头版,因此值得投资入侵检测系统以避免上头版。所以,我会参考类似的组织来估算未检测到的事件或解决时间过长的事件所带来的成本。因为事实上,如果我有了IDS,我就能更快地解决它,对我组织的影响就会更小。
  • 内部分析:然后,您可以进行内部分析,思考事件随时间的影响有多大?我可以期望IDS将事件响应时间减少多少?我可以利用自己过去发生的事件历史进行估算,并判断如果过去发生的任何特定事件能更早得到指示,是否会显著降低该事件的成本,这有助于我从这种特定分析中理解IDS的效益。

这部分分析通常以声誉而非货币效益来表达,尽管许多人会将其转化为货币效益,以便与IDS部署成本进行比较。当然,声誉成本是非常主观的,它涉及到:何时真正值得为IDS进行我们必须进行的投资。这也是使得评估IDS效益尤其困难的部分原因。


投资回报率分析

在商业世界中,这最终归结为:我们能否为安装IDS产生投资回报率。这对于我们所谓的非功能性属性来说尤其困难,而大多数安全类活动往往不是创利活动,它们不会对利润产生积极影响,仅仅被视为成本。因此,进行投资回报率分析实际上是在一组成本与另一组成本之间进行权衡。我的回报是解决事件的成本降低,而不是从实际安装IDS中获得某种利润效益。

因此,当您进行ROI分析时,要意识到您所做的是成本控制,即说明IDS将有助于降低风险和成本,最终转化为更低的成本。当入侵事件得到妥善处理时,成本就会降低。然而,进行ROI分析也存在一些困难:如果我已有一些措施,并且似乎在处理事件方面做得不错,我可能会说,看,我已经在团队和当前工作上投入了沉没成本。也许我可以通过简单地裁减人员或取消一些IDS来降低成本。看起来我们好像没有太多入侵事件,所以这可能行得通。但事实上,当您裁减人员后,入侵事件真的发生时,您可能会增加处理成本。这是问题的另一面:如果我真正担心的是成本削减,而IDS是一项成本,如果我不知道处理这些事件的货币效益是什么,我能削减它吗?

如前所述,利润的概念更多地与无事件运行相关:我能否更有效地交付产品和服务?由于IDS通常不预防事件,而是减少响应时间,将其直接与利润挂钩可能很困难,但这并非不可能。有一个名为DevOps和安全DevOps的组织正在开始将DevOps形式的安全工作与利润联系起来,基本上是为公司带来利润。因此,当我们在讨论如何计算某种投资回报率时,这是另一个可以提供很大帮助的领域。


其他成本合理性考量

除了简单地看投资回报率之外,还有一些其他方法可以证明成本的合理性。

您可以实际观察您的IDS团队,并随着时间的推移观察复杂基础设施增加了您的CSIRT响应团队所需的资源。然后您可以说,对IDS的额外投资可以通过提高响应团队的效率和效果,来维持甚至降低部分成本。请记住,在这种情况下,IDS实际上只是一个帮助CSIRT团队更快、更有效地响应的工具。因此,就像所有其他工具一样,您通常可以通过随着时间的推移所能达到的效果和效率水平来证明该工具及其支持成本的合理性。


总结与整合 📝

最终,您必须将所有这一切整合起来。您基本上需要说,好吧,我如何真正考虑所有这些不同的因素,以确定部署IDS是否值得,以及值得投入多少。当您知道总成本,并且知道这个总成本显著高于您预期的成本节省时,您可能会考虑替代方案。也许拥有世界上最高标准的IDS并不是最好的选择,但拥有一个能帮助提高响应团队效率的工具是值得的。

真正重要的是预先明确总成本和持续成本。您看到的最糟糕的情况是,因为低估了成本而过度投资于IDS,然后在几个月甚至几年后,组织会审视并说,我们在整个IDS基础设施和生态系统上花费了太多,以达到我们期望的效果水平。然后您会进行大幅削减,这可能像钟摆一样摆向另一个极端,使您的组织无法有效了解攻击及其结果,而这一切都是以试图将成本降回来为名。

因此,预先了解成本并进行现实的估算,是确保每个人都参与其中并理解总初始成本和持续成本是什么,以及可能为CSIRT团队和整个组织在降低风险方面带来哪些效益的一种方式。预先明确这些,也将使您能够制定一系列指标,以确保随着时间的推移能够维持这种状态。

当您将所有经济效益分析整合在一起时,正如我们之前所说,经济效益分析不必取代功能或性能分析。您实际上可以同时使用所有这些分析,在性能与经济成本之间进行权衡,以便综合考虑这些因素。这就是我们处理这三种不同类型分析的原因。


本节课中,我们一起学习了如何对入侵检测系统进行经济效益分析。我们详细探讨了初始成本的构成(包括硬件、软件、集成和人员培训),分析了持续运营与维护成本(如许可、调优、错误管理和人员流动),并讨论了评估IDS效益的挑战与方法(如同行参考、内部分析和ROI考量)。关键在于进行全面的、现实的成本效益估算,以确保投资决策的合理性,并将IDS作为整个安全防御生态系统中提升效率的工具来考量。

030:IDS评估数据采集方法 📊

在本节课中,我们将学习如何为基于性能或结果的入侵检测系统评估采集和准备数据。确保使用正确的数据是任何IDS评估分析中最关键的部分之一。我们将探讨自行采集数据与使用外部数据集的利弊,并详细介绍构建高质量测试数据集的具体步骤。


数据采集的利弊权衡 ⚖️

上一节我们提到了数据的重要性,本节中我们来看看自行采集测试数据的优缺点。

自行采集数据的主要优势在于其与自身系统需求的高度契合。外部数据集中的正常和攻击流量可能与你的系统环境毫无关系,它们通常非常通用。而自行采集数据时,你可以精确定义什么是正常行为,什么是攻击行为。你可以自己管理数据,无需依赖外部组织来确保数据的正确性、标签的准确性以及可用性。此外,你还可以包含敏感数据特征,例如内部关键资产的IP地址,这些信息你绝不会希望暴露在公开数据集中。

然而,自行采集数据也存在缺点。正确获取测试数据要困难得多,我们将在本视频中详细讨论如何生成这种测试数据。你必须自己维护和更新数据,这会消耗资源。并且,你只能基于已知的知识来构建数据,外部攻击数据库可能包含你没有专业知识或能力发起的攻击类型,因此你可能无法囊括所有希望包含的攻击数据。

简而言之,自行采集数据的优点主要围绕正常数据的定制化,而外部测试数据的优势则在于可能提供更全面、更新的攻击数据


理想的数据特征 ✅

在开始采集前,了解理想的测试数据应具备哪些特征至关重要。

以下是构建高质量IDS测试数据集所需的关键特征:

  • 带标签的攻击与正常事件数据:你需要知道哪些是攻击,哪些是正常流量。这是评估的基础。
  • 网络与主机数据兼备:因为你需要权衡基于网络的IDS和基于主机的IDS的性能,两者数据都应收集。
  • 可统一的基础速率:不同的IDS可能基于数据包、会话或进程等不同粒度发出警报。你需要能够将这些警报统一到一个共同的基础速率(如数据包级或会话级)上进行公平比较。
  • 详细的时间戳:测试数据和标签中必须有精确的时间戳,以便将IDS警报与测试数据中的事件准确匹配。
  • 现代的攻击与正常的流量:数据集应包含当前正在使用的攻击手法和代表现代网络环境的正常流量,过时的数据没有参考价值。

外部数据集示例:林肯实验室1999年DARPA数据集 📂

让我们以一个著名的外部数据集为例,看看它是否符合上述理想特征。

林肯实验室1999年DARPA IDS测试数据集是一个带标签的攻击数据集。其正常数据未标记,但攻击数据在单独的文件中进行了标注。该数据集主要面向基于网络的IDS,提供PCAP和TCP dump文件供重放。

然而,它存在一些局限性:

  1. 缺乏基础速率归一化:事件被列为攻击,并给出了开始时间和持续时间,但没有逐数据包地列出哪些是正常包、哪些是攻击包。
  2. 时间戳问题:数据使用本地时间而非GMT,如果IDS使用GMT时间,匹配会存在困难。
  3. 数据过时:这是1999年的数据,其正常流量和攻击流量都已无法代表当今的互联网环境。

尽管如此,由于公开可用的带标签数据集很少,它至今仍被广泛使用。这个例子清晰地展示了理想特征与实际可用外部数据集之间的差距。


采集与标记正常数据 🖥️

现在,我们来看看如何自行采集和标记数据。首先从正常数据开始。

采集正常数据时,你需要在模拟正常行为的同时,使用网络和主机传感器进行收集。关键在于在采集时同步进行标记,因为事后回溯和重新标记所有捕获的数据将极其困难。

你需要一种方法,在发送网络流量和主机进程活动时,就为它们打上“正常”以及更细粒度的行为标签(例如,“网页浏览”、“Word文档处理”)。更细致的标签有助于在评估中分析误报的来源。

最后,你必须确保在采集期间没有任何攻击或异常数据混入。这在隔离环境中相对容易,但在监控真实生产环境以创建“正常”流量时则非常困难,因为你无法保证当时没有未被察觉的高级攻击正在发生。


采集与标记攻击数据 ⚔️

接下来,我们看看攻击数据的采集。

采集攻击数据相对直接。如果你拥有一套漏洞利用工具(无论是在主机端还是网络端),就可以在隔离环境中运行这些工具,并像采集正常数据一样进行收集。

此过程中,将所有活动标记为“攻击”数据。标签不仅应包含攻击类型名称,还应包括开始时间、持续时间和结束时间,以及其他你认为重要的特征(如利用的漏洞CVE编号)。这有助于评估IDS是否不仅检测到了攻击,还正确地对其进行了分类。

你可以使用第三方工具来捕获这些标签,或者直接修改你从互联网收集的攻击工具,使其在每次生成攻击时自动记录日志。事先规划好标记方法将使采集带标签攻击数据的工作轻松得多。


合并与整合数据集 🔀

按照上述流程,你将得到两个独立的数据集:正常数据集和攻击数据集。现在需要将它们合并成一个统一的测试集。

你需要使用重放工具或其他集成工具,将正常流量和攻击流量合并到你的系统中。必须确保合并后数据中正常和攻击活动的“真实情况”标签依然正确对应。

整合攻击数据时需要注重现实性。攻击的发生时间、频率不应是均匀分布的,而应模拟真实世界的模式(例如,工作时间可能遭受更多攻击)。通常,攻击数据量远小于正常数据量,这符合现实情况。

最后,建议保留一部分纯正常数据作为控制集,其中不掺杂任何攻击。这样,当你用这部分数据测试IDS时,产生的任何警报都明确是误报(I类错误)。这既是验证数据可重放性的好方法,也是调整IDS以减少误报的起点。


维护与更新数据集 🔄

一旦掌握了合并数据的方法,保持数据集的时效性就会相对容易。

当有新的服务或正常流量模式出现时,你可以重新采集一部分正常流量,然后将这些新的“正常”内容整合到不断增长的数据库中。对于攻击流量也是如此:如果出现了新型攻击,你可以生成这些攻击,按需调整时间戳,然后将其整合到数据集中。

这种方法允许你以增量的方式维护和更新数据,而无需每次都从头开始重新采集所有数据。关键在于要现实地整合新数据,确保新攻击在正确的时间、针对正确的资产发生,方式符合IDS检测的实际情况。

更困难的部分在于决定何时从数据集中移除过时的内容。例如,当某个网络服务不再使用时,或者某种攻击手法已完全过时,你能否在不完全重新生成正常数据的情况下,仅移除数据集中相关的部分?在某些情况下,借助现有的数据修改工具或许可以做到,但评估移除某些数据对整体数据集代表性的影响,通常比单纯添加新数据要复杂。


处理未标记的数据集 🏴‍☠️

有时,你可能无法直接获得带标签的数据。例如,在红队演练或夺旗赛中,正常流量和攻击流量交织在一起,且最初没有标签。你只有一个记录了所有事件的数据集,但没有“真实情况”标签。

使用这种数据集进行IDS测试要困难得多,因为你必须事后创建真实情况标签。即使你有一份关于使用了哪些攻击的高级描述,并试图在数据集中识别它们,要获得完整、准确的标签也颇具挑战性。

尽管如此,这类数据集往往是实际可用的。你仍然可以利用它们进行比较分析,即使不完全了解真实情况。方法如下:将这个未标记的数据集在多个IDS上运行。你至少可以观察到每个IDS触发了哪些警报。如果你知道攻击流中包含哪些攻击(即使不知道具体时间),就可以识别出一些真正例。同样,你也可以统计出误报(触发了但并非演练部分的警报)。

这样,你至少可以通过查看混淆矩阵中的特定行或列,来比较不同IDS的阳性识别率。你甚至可以通过一些简单的数学来估算混淆矩阵的其他部分。例如,如果你知道攻击总数(基于某种共同的基础速率,如会话数),并且统计出了真正例数,就可以计算出漏报数。同样,如果你知道数据总量和攻击总数,就可以估算出正常事件总数,进而结合误报数估算出真反例数。

这虽然不如使用带标签数据集那样精确,但仍然是使用在真实环境中捕获的数据集对多个IDS进行比较分析的一种可行方法。


使用工具整合数据 🛠️

那么,如何具体整合这些不同的数据片段呢?首先从网络侧谈起。

有许多TCP相关工具可以帮助你创建和操作数据。例如,有一个名为TCPLib的库,它提供了一个操作PCAP文件中数据包的接口。它允许你读取一个或多个PCAP文件并进行修改,以便将它们整合到一个共同的测试集中。

以下是TCPLib中一些对数据整合非常有用的工具示例:

  • tcp_merge:合并两个或多个PCAP文件。如果你有在不同时间段捕获的攻击和正常流量,可以先用时间偏移工具调整,再用此工具合并。
  • tcp_time_shift:调整PCAP文件中数据包的时间戳。例如,如果你的正常数据采集于某天,攻击数据采集于另一天,可以使用此工具将两者时间戳调整到同一时间范围内。
  • tcp_rewrite_ip:重写IP地址。你可以将原始数据中攻击的目标IP地址,替换为你测试环境中实际的资产IP地址。
  • tcp_expand_time / tcp_compress_time:扩展或压缩时间。可以用于调整流量回放的速度,或者模拟不同时间段的流量密度。

这些工具极大地简化了网络侧PCAP文件的操纵工作,使你能够将多个来源的数据合并、调整并最终创建一个包含所有所需特征的单一、可用的数据集。


总结与替代方案 📝

本节课中,我们一起学习了为IDS评估采集和准备数据的关键方法。

自行采集数据的价值在于,你创建的数据集能真实代表你的环境,并且可以在测试不同IDS或不同配置时重复使用。这比依赖一个可能无法反映你真实环境的公开数据集,能提供更可信的评估结果。

除了创建静态数据集进行重放之外,还有一种替代方案:建立一个脚本化的测试环境。在这个环境中,正常用户活动和攻击活动可以通过用户行为模型或攻击工具按需生成和重放。

这种方法的优点是,你可以更容易地修改用户模型和攻击模型,以精确代表你所期望的环境。缺点则是,测试运行时间大致是实时的,因为活动需要按脚本实时生成。而使用预录的数据集,你通常可以以快于实时的速度进行重放,从而加快测试进程。

无论选择哪种方法,目标都是建立一个能够长期、有效支持你组织内IDS评估和选型的数据基础。虽然其中涉及许多细节,例如攻击工具的选择、数据集的验证等,但掌握这些核心的采集、标记、整合与维护原则,是迈向成功评估的第一步。

031:基于特征的IDS性能比较 🧪

在本节课中,我们将学习如何设计一个实验,来比较两个基于特征的入侵检测系统(IDS)的性能。我们将使用一个带标签的数据集,通过一个七步流程,来评估Snort和Suricata在默认配置下的表现,目标是找出哪个系统能检测到更多攻击,同时产生更少的误报。

上一节我们介绍了评估IDS性能的基本概念,本节中我们来看看如何将这些概念应用于一个具体的比较实验。

概述 📋

我们的目标是设计一个实验,比较Snort和Suricata这两个基于特征的IDS。我们将使用一个带标签的数据集(例如林肯实验室的DADataSet或KDD Cup数据集),在默认配置下运行它们,并评估哪个系统能检测到更多攻击事件,同时产生更少的误报。这不是一个全面的分析,而是一个初步评估,为后续更深入的分析(如ROC曲线)打下基础。

实验七步流程 🚀

以下是进行比较实验的七个步骤。

第一步:准备测试环境 💻

首先,我们需要建立一个可以运行所有测试的环境。这个环境被称为“被测系统”。我们将使用像Security Onion这样的环境,并安装Snort和Suricata的默认配置。这与之前的实验类似。

以下是准备环境的具体任务:

  • 安装Snort和Suricata,并采用其默认配置。
  • 使用类似PulledPork的工具,确保两者的规则配置都是最新的。
  • 使用内置数据集(例如Security Onion自带的)和TCPreplay工具,验证两个IDS都能正常监听网络流量并产生告警。

第二步:准备数据 📊

准备数据是实验的关键和难点之一。我们需要决定如何从测试中收集和计数数据。

核心是确定基础速率。我们需要根据数据集的标签方式,决定是以数据包会话还是攻击为单位进行计数。例如,KDD Cup数据集中每个数据包都有标签,因此基础速率就是数据包。这意味着,对于IDS产生的每一个告警,我们必须能够识别出与该告警相关的所有数据包,并按数据包数量进行计数,而不是简单地将一个告警计为一次事件。

以下是数据准备的关键点:

  • 确定基础速率(数据包、会话或攻击)。
  • 确保能够根据告警,计算出与该事件相关的数据包/会话数量。
  • 确保能够从测试数据本身(而非IDS告警)统计出正常流量和攻击流量的数量。
  • 确定如何识别第一类错误(误报)和第二类错误(漏报):
    • 第一类错误(误报):IDS告警为攻击,但实际是正常数据包的数量。
    • 第二类错误(漏报):数据集中标记为攻击,但IDS未产生告警的数据包数量。

第三步:验证测试数据 ✅

在运行正式测试前,必须确保测试数据准备就绪。

以下是验证数据的任务:

  • 确保测试数据中的IP地址、时间戳与“地面实况”(即数据标签)匹配。
  • 确认时间戳是GMT时间还是本地时间,以便将告警与测试数据中的地面实况正确关联。
  • 确保能够根据第二步确定的基础速率,对攻击数据进行计数。
  • 编写必要的脚本(如Python或Shell脚本),用于自动将地面实况数据与收集到的告警数据进行匹配和计数,以确保计数的准确性和可重复性。

第四步:运行纯正常流量测试 🧪

在正式测试前,我们先使用一个不包含任何攻击的Pcap文件进行测试。通过TCPreplay工具,让Snort和Suricata分别处理这些纯正常流量。

这个步骤的目的有两个:

  • 验证环境:确保IDS能够正常运行。
  • 获取基线:由于数据中无攻击,因此IDS产生的任何告警都属于第一类错误(误报)。这让我们了解IDS在正常流量下的误报情况,并可以统计出正常流量的基础速率。

第五步:运行混合流量(攻击+正常)测试 ⚔️

现在,我们运行包含正常流量和攻击行为的Pcap文件。同样使用TCPreplay工具,让流量经过Snort和Suricata。

以下是本步骤的操作:

  • 对于IDS产生的每个告警,根据时间戳、源/目的IP等元数据,将其与地面实况进行匹配。
  • 统计地面实况中与该告警事件相关的所有数据包数量,这代表正确检测到的攻击数量。
  • 计算检测到的攻击第一类错误(误报)第二类错误(漏报),并包含漏报的攻击和正常行为。
  • 问题排查:如果预期的攻击未被检测到,或者告警时间与地面实况严重不符,很可能是时间戳时区不一致导致的。此时应返回第三步,重新准备数据。

第六步:计数与分析数据 📈

这是进行分析的核心步骤。我们将根据相同的测试数据,进行以下比较:

以下是三个关键的比较维度:

  • 检测能力:确定哪个IDS检测到了更多的事件(即相关数据包数量更多)。
  • 误报控制:确定哪个IDS产生的第一类错误(误报)更少。
  • 漏报控制:确定哪个IDS产生的第二类错误(漏报)更少。

通过这三个指标,我们可以初步判断在给定的测试数据集上,Snort和Suricata哪个表现更优。

第七步:报告结果 📊

最后,我们需要以清晰的方式呈现结果。可以使用图表或数字进行可视化。

报告的关键在于,基于一个统一的基础速率(例如数据包),我们可以计算出有意义的比率。例如:

  • 检测率 = 检测到的攻击数据包数 / 总攻击数据包数
  • 误报率 = 误报数据包数 / 总正常数据包数 (或总数据包数)

这些比率是下一模块我们将要学习的接收者操作特征曲线(ROC曲线) 的基础。通过本实验的步骤,你将学会如何开始使用真实的测试数据来比较不同的IDS。

总结 🎯

本节课我们一起学习了如何设计并执行一个七步流程,来比较基于特征的入侵检测系统(如Snort和Suricata)的性能。我们从准备测试环境、确定数据基础速率开始,逐步完成了纯正常流量测试、混合流量测试,最终通过计数和分析,从检测数量、误报和漏报三个维度评估了IDS的表现。这个过程为我们后续进行更深入的ROC分析和比较不同配置的IDS(包括基于异常的IDS)奠定了实践基础。

032:入侵检测2 🎯

在本节课中,我们将学习约翰霍普金斯大学《入侵检测》专项课程的介绍。课程将概述入侵检测系统的核心概念、学习模块以及课程目标,帮助你建立对这门学科的初步认识。

大家好,我是杰森·卡尔森。我是约翰霍普金斯大学应用物理实验室的一名高级网络安全工程专家。我在JHU工程学院教授网络安全硕士课程,同时也是一名拥有28年军旅生涯的军官。我拥有丰富的信息保障、任务系统、网络安全工程、其他领域、发射分析以及入侵检测经验。

我开发了这门入侵检测课程。该课程被分解为几个专项领域。每个专项领域包含七个模块,通过讲座、阅读材料、视频、测验和作业来呈现入侵检测的主题。你可以学习所有专项,也可以选择你希望深入了解的特定入侵检测领域。

这门入侵检测课程探讨了将基于网络和主机的入侵检测与防御系统作为组织整体网络安全态势的一部分。课程将研究各种方法、模型、分析、技术、框架和算法,以理解在企业遗留IT系统、运营技术、云技术以及异构和同构的服务环境中部署IDS/IPS的实际问题。

在入侵检测专项课程中,你将学习真阳性、假阴性、精确率-召回率图、权衡取舍、IDS/IPS的架构、配置和报告。课程还将讨论基于需求和数据的调优与基线建立,以理解和区分异常活动或良性活动。为了态势感知,我们将讨论感兴趣的可观测收集点、网络流特征、组织路由以及数据包检查。

课程将涵盖针对主机静态活动和网络动态活动的攻击与威胁类型及其应对措施。课程主题包括但不限于:IDS/IPS的产品、架构、组件配置,基于主机和网络的IDS/IPS,网络分析,入侵检测技术,上下文感知,机器学习,Linux防火墙表,简单防火墙,传感器响应策略,网络数据包分析,图论,数据匿名化服务,接收者操作特征曲线以及网络数据包分析研究。

我的目标是让这门Coursera课程的学习过程充满乐趣,使学习成为一种愉快、有趣的体验。我将复杂的概念转化为易于理解的学习模块。我希望学生们能够运用课程提供的威胁检测理念,并将其转化为职业生涯中的专业技能。感谢大家对这门Coursera课程的关注,希望每个人都能在Coursera平台的入侵检测课程中学有所获,享受学习过程。

本节课中,我们一起学习了《入侵检测》专项课程的总体介绍,了解了课程的结构、涵盖的核心主题以及学习目标。这为后续深入学习各个模块打下了基础。

033:导论 🎯

在本节课中,我们将要学习模块七的核心内容,该模块主要聚焦于大规模网络入侵检测。我们将基于之前学习的网络入侵检测系统知识,探讨如何将其应用于解决真实大型企业环境中更复杂、更宏大的问题。

概述 📋

通过本模块的学习,你将能够区分网络态势感知工具与网络入侵检测系统。虽然两者共享许多组件和功能,且常被宣传为同类工具,但它们实际上并不相同,用途也有差异。我们将讨论如何将异常检测应用于大规模图分析和网络分析问题,即当你的监控对象从一个单一系统或一小群系统扩展到整个大型企业网络时,你能做些什么。我们将利用这些信息,通过对网络流量进行图分析来开发警报机制。你将有机会了解如何基于这些系统创建警报。我们还将区分传统的NIDS部署与支持入侵检测的大规模网络分析,展示它们如何协同工作,以及如何区分我们目前讨论的传统部署模式和包含网络态势感知的更复杂部署。最后,我们将更深入地探讨上次提到的Security Onion产品,并开始实际配置Bro IDS,作为你在Security Onion中进行入侵检测套件配置的一部分。

本模块视频内容 📹

以下是本模块你将观看的视频内容:

  • 首先是当前正在观看的导论视频。
  • 接下来是专门讲解网络态势感知的视频。
  • 另一个视频将重点讨论大规模网络流量上的异常检测。
  • 我们将深入图分析,并探讨其与大规模网络入侵检测的关系。
  • 最后,我们将有一个视频更详细地介绍Security Onion,并对Bro IDS进行入门讲解。

各节内容预告 🔍

上一节我们概述了本模块的整体安排,本节中我们来看看每个视频将具体涵盖哪些问题。

网络态势感知视频

在网络态势感知视频中,我们将解答以下问题:

以下是该视频将回答的核心问题:

  • 什么是NetSA(网络态势感知)?
  • NetSA中使用了哪些工具和技术?
  • 当我们收到警报或识别出某种异常后,如何利用这些工具协助我们调查事件?
  • NetSA与网络入侵检测系统究竟有何关联?

大规模网络流量异常检测视频

在下一个视频中,我们将在此基础上,探讨大规模网络流量上的异常检测。这将建立在利用NetSA工具帮助我们理解其特性和功能如何协助识别异常的基础上。

以下是该视频将深入讲解的内容:

  • 回顾IP数据流是什么。我们过去曾简单讨论过Netflow和其他网络流量摘要,但这里将更详细地探讨IP数据流。
  • 讨论你可能遇到的不同类型和格式的流数据。
  • 讲解如何实际监控大规模虚拟机环境(例如商业云环境),这种环境会给你部署和使用IDS或NetSA类产品带来一些复杂性。
  • 探讨这与流量流的关系,即从IP数据流构建到流量流,并利用这些流量流中的容量指标来帮助我们识别异常。这将引导我们进入行为分析和异常检测领域。
  • 最后,讨论如何结合使用Netflow、元数据和NIDS来进行这种大规模异常检测。

图分析视频

在接下来的视频中,我们将深入图分析。图分析是构建分类器以识别不同类型入侵的一个日益重要且不断发展的领域。

以下是该视频的学习路径:

  • 从最基础开始,讨论什么是图。
  • 讲解如何从Netflow数据构建图。
  • 介绍如何在初期保持相对简单,以便我们能从这些数据中提取出一些异常。
  • 讨论分析这些图的具体方法。
  • 讲解如何利用图中的连通性来帮助我们定义正常行为。
  • 最后,稍微拓展到研究领域,探讨局部性以及如何将局部性用于图分析,以帮助我们识别正常状态,从而开始识别异常。

Security Onion 与 Bro IDS 视频

在我们完成上述内容,深入了解了图分析之后,将有一个视频帮助你进一步了解Security Onion的更多功能,并专门开始配置Bro,以便你能将其作为一个网络入侵检测系统进行评估,这是你在后续课程实验练习中将要进行的一部分。

以下是该视频的要点:

  • 讨论Security Onion的组件。
  • 介绍可用的分析工具。
  • 讲解一些部署模式。
  • 然后进入我之前提到的Bro IDS入门介绍。

总结 ✨

本节课中我们一起学习了模块七的导论内容。这是一个将更深入探讨IDS现实部署、利用NetSA协助识别IDS中的异常,并最终推动我们在实际动手实验中在评估环境下使用IDS的模块。这是一个承前启后的重要环节,旨在将理论知识应用于更复杂的实际场景。

034:网络态势感知 🔍

在本节课中,我们将学习网络态势感知(NetSA)的概念、工具及其与网络入侵检测系统(NIDS)的关系。我们将了解如何利用NetSA工具来全面掌握网络状况,并辅助进行安全事件调查。


什么是网络态势感知?

上一节我们介绍了入侵检测的基本概念,本节中我们来看看网络态势感知。网络态势感知是对网络基础设施及其整体运行状态的全面理解。它的核心是从建立网络情报的基线水平开始,以便更精细地管理企业内的变化。

与入侵检测不同,网络态势感知并非专门针对潜在恶意软件发出警报。它旨在提供基础设施内所有活动的全景视图,使用户能够识别出需要关注的问题或异常情况,无论这些异常是安全相关的还是其他类型的。NetSA包含一系列用于有效监控企业网络的工具和技术,包括用于检测特征活动的分析和分析工具,无论这些活动是恶意的还是良性的。因此,尽管NetSA本身并非专门的入侵检测系统,但其工具和技术允许用户处理收集到的所有网络态势感知数据,以更好地理解网络状况。

NetSA几乎总是基于网络数据包或某种流(flow)收集。理解这一点至关重要,因为这些是本质上与网络态势感知相关联的传感器。一些使用NetSA作为输入的现代工具也可能从主机收集信息,但这在目前并不典型。


NetSA工具与技术概览

为了更全面地了解构成网络态势感知的要素,可以观看Lameta的YouTube视频。该视频概述了一个五步流程,有助于收集和理解网络数据的来源,以及如何利用这些数据来了解IP地址和漏洞,从而获得网络活动的基线视图。从Lameta的简介中也可以看到,一个非常常见的工具就是使用网络数据。这是另一个例子,说明我们并非依赖基于主机的数据来理解态势感知,这也是为什么它是一个NetSA工具。它至少从一个角度为你提供了网络态势感知的良好概览。

实际上,有非常广泛的商业和开源工具可以帮助处理网络态势感知。我们刚刚在前一张幻灯片中简单提到了Lameta,现在让我们谈谈一些可以免费使用的开源工具。

以下是两种最常见的开源网络态势感知工具:

  • SiLK:这是一套用于NetFlow收集的全面分析工具集。
  • Argus:这是另一个设计用于Unix及类Unix系统的工具。

与Lameta不同,这些工具主要是面向命令行的工具集合,而非具有高级用户界面的商业工具。两者都以NetFlow作为主要的网络收集方式,并处理传入的NetFlow数据。这些工具包含的功能可以将系统上收集的NetFlow数据分解为搜索、分类、合并和图形化展示等操作。这不仅允许你获得所有数据的概览,还能让你选择数据的子集,深入探究你可能想了解更多细节的特定活动。如前所述,商业工具也做同样的事情,只是它们倾向于将这些功能整合到更友好或前端式的系统中。


深入SiLK与Argus工具集

正如之前所说,SiLK工具集是一套非常全面的NetFlow收集分析工具。它支持分析流水线处理的概念,能够处理SiLK流记录以自动化常见任务,并接近实时事件报告。这些报告不一定是关于入侵的,这与入侵检测系统不同,但它是一种接近实时查看你可能想要报告的内容的方式,并可以将这些数据输入到某种安全信息与事件管理(SIEM)系统中。

SiLK包含的工具示例如下:

  • 导入/导出库:用于以标准可共享格式导入和导出数据,以便将NetFlow数据共享到日志仓库,或将其他类型的NetFlow数据引入系统。
  • 注释系统:允许用户标记所收集的数据类型。
  • 图形前端工具:帮助用户处理数据并以可读方式呈现。
  • Python库:帮助在Python环境中完成许多工作,而不仅仅是命令行脚本。
  • DNS信息查询工具(如yaf:用于专门查看和深入分析DNS信息。
  • 二维统计可视化Python库
  • SiLK工具本身:包含各种可用于数据的筛选和过滤工具的命令行工具。
  • 警报报告系统:帮助实现之前提到的接近实时的分析流水线。
  • IPF中介器:允许将另一种流收集器与SiLK工具一起使用。
  • YAF工具:本身就是一个以标准格式收集NetFlow数据的工具。

Argus与SiLK类似,将许多同类工具集成到另一个框架中。它基本上也是同类型的东西。Argus将收集和分析工具作为其自身的一部分,而不像SiLK那样将yaf与基本SiLK工具分开。用户可以直接使用Argus生成流工具,然后使用ra(基于配置)进行分析和分发,同时仍然可以使用所有常用的读取、过滤和处理功能来处理Argus收集的NetFlow风格数据。

使用Argus可以完成以下操作:

  • 计数与转换
  • 转储各种数据片段并进行图形化
  • 使用正则表达式
  • 创建频率分布
  • 进行多种排序和拆分,例如使用MySQL将数据存入数据库格式。
  • 流式块处理
  • 操作和压缩数据本身
  • 显示和更新NetFlow数据

Argus和SiLK是两个完全不同的工具集,使用方式需要不同的学习路径,但它们都在NetFlow数据上提供了基本相同的功能。


利用NetSA工具调查事件

这些态势感知工具最重要的用途之一,就是在IDS实际发出警报后帮助调查事件。让我们逐步了解一个简单的流程,说明在从NIDS检测到事件后,如何使用NetSA工具。

  1. 识别攻击:首先,当然是从NIDS工具识别出某种异常或基于签名的攻击。或者,如果用户正在查看NetSA的活动图并注意到异常,也可以直接通过NetSA发现。这意味着用户扮演了分类器的角色来确定攻击。无论通过何种方式确定了攻击。
  2. 提取相关流量:接着,用户将获取所有一直在收集的NetFlow数据,并使用选择工具,尝试仅提取与攻击相关的流量,特别是来自可疑源地址和协议的流量。这样可以更好地了解与攻击签名相关的所有流。
  3. 识别关联节点:在这些流中,找出该特定系统与之通信的所有其他节点。这可以识别出攻击的潜在受害者,范围可能超出最初发现的异常或签名。
  4. 收集关联主机地址:再次使用流工具,收集潜在受害者联系过的其他主机的地址,以了解企业内部谁与谁进行了通信。
  5. 迭代扩展调查范围:每次发现作为此事件一部分进行通信的新节点时,都重复这些步骤,将它们添加到可能与此次入侵相关的主机和流集合中。
  6. 深入取证:利用这些流,去获取网络中可能存在的更详细的数据包或PCAP捕获,或者直接在被影响的主机上进行基于主机的取证,以真正描述攻击特征。
  7. 检查外联流量:最后,可以使用这些NetFlow工具,查找受害者集合中任何主机的出站可疑流量。可以检查这些受害机器是否以令人担忧的方式与基础设施外部进行通信,例如可能存在命令与控制(C2)情况,或者信息可能从站点内部泄露。

好消息是,所有这些步骤也可以在Security Onion系统中完成,这是本模块中将使用的系统。它使用Sguil提供了一个相当不错的图形化方式来完成这些步骤,以便从异常或警报出发,利用NetFlow数据的收集来解析或调查可能发生的事件。在本模块后续视频和动手实验中将看到更多关于Security Onion和Sguil的内容。


NetSA与NIDS的关系

最后,让我们讨论一下NetSA与网络入侵检测系统(NIDS)之间的关系。我们已经简单谈到了在解决NIDS警报时使用NetSA的情况。现在让我们进一步探讨它们的关系以及为何需要同时使用两者。

首先,NIDS和NetSA都将网络流量作为其主要数据源。因此,它们都使用相同的数据源来生成警报或展示正在发生的情况的视图。

具体来说,NetSA汇总网络活动,为用户提供围绕各种可能异常或NIDS警报部分的上下文信息。而在NIDS中,用户通常只能获得来自NIDS的关于正在发生的特定元素的警报。NetSA可以帮助用户构建上下文,理解系统在遭受攻击(根据收到的NIDS警报)之前、期间和之后发生了什么。

NIDS会自动将网络流量与正常或攻击规范进行比较(无论它是异常检测系统还是基于签名的系统),以识别攻击。这不是NetSA的工作,而是NIDS的工作。但因此,NIDS会给出警报,但不会提供关于该警报调查所需的所有信息。幸运的话,NIDS会提供主机名和与该NIDS警报相关的数据包捕获信息,但它不会提供所有下游节点,也不会提供使用NetSA调查事件时所能获得的全面信息。

在NetSA中,用户是分类器。NIDS内置了分类器来比较网络流量与正常或攻击流量。但对于NetSA,用户需要基于那些帮助可视化和以易于理解的方式处理数据的工具,自己进行这种比较。

这种关系中最重要的一点是,NetSA工具有助于界定事件调查的范围。用户可以查看系统间通信的所有对话。如果网络的某些部分或基础设施的某些部分未受这些攻击影响,就可以将它们排除在调查范围之外,从而在理解哪些系统实际上需要修补、修复、观察流量甚至了解哪些信息被窃取方面节省大量时间。

因此,虽然NetSA并非本课程的主要焦点,但将NetSA与NIDS结合使用,是以一种能帮助你在特定事件发生期间所反映的控制范围内解决事件的方式来使用NIDS的重要步骤。


总结

本节课中,我们一起学习了网络态势感知(NetSA)的核心概念。我们了解到NetSA旨在提供网络活动的全景视图,帮助识别异常。我们介绍了两大开源工具集SiLK和Argus,它们用于处理和分析NetFlow数据。我们还探讨了如何利用NetSA工具逐步调查由NIDS发出警报的安全事件。最后,我们明确了NetSA与NIDS的关系:NIDS负责自动检测并发出警报,而NetSA则为警报提供上下文、辅助界定调查范围,使用户能够更高效、更全面地进行事件响应与取证分析。结合使用两者,能显著提升网络安全监控与事件处理的能力。

035:大规模网络流量异常检测 🚨

在本节课中,我们将学习如何利用之前介绍的网络态势感知工具,对大规模网络流量进行异常检测。我们将从IP数据流的基础概念开始,逐步深入到流量监控、行为分析,并最终探讨如何部署NetFlow和NIDS来实现有效的异常检测。

IP数据流回顾 📡

上一节我们介绍了网络态势感知的基本工具,本节中我们来看看网络流量的核心——IP数据流。IP数据流是任何NetSA、NIDS或类似收集系统的基础。

IP数据流是单向的。它是一组具有共同特征的数据包集合。这些特征通常包括:

  • 源IP地址
  • 目的IP地址
  • 源端口
  • 目的端口
  • 服务类型

这五个元素共同唯一地标识了一个特定的IP数据流。我们正是通过这种方式,将收集到的数据包按照这些共同特征分组,从而开始分析从源到目的地的所有活动。

在收集网络数据时,显然会有大量数据包交织在这些IP数据流中。我们的做法是,根据上述四个共同特征,将所有收集到的数据包“分箱”到对应的IP数据流中。

此外,我们通常认为数据流有开始和结束。例如,对于一个TCP会话,它会以一个SYN数据包开始,并以一个FIN/ACK数据包、超时或重置结束。本质上,IP数据流是通过提取数据包的头部信息来进行特征化的。但数据流本身也包含每个数据包的载荷。它不是一个NetFlow数据包或记录。IP数据流代表了实际流经网络的所有数据包及其所有比特的特征。这是数据流和NetFlow之间的重要区别。

流的开始与结束 🔄

流通过协议中的初始化和关闭过程来开始和结束。

在标准的TCP通信中,当主机A要与主机B通信时,首先发生的是主机A向主机B发送一个SYN数据包。当主机B收到SYN数据包后,会发回一个SYN-ACK数据包进行确认。至此,TCP连接建立,常规数据包可以开始流动。这个协议过程被视为一个IP数据流的开始

要完成一个IP数据流,通常如果主机A试图结束它,会发送一个FIN,并收到一个ACK。主机B也可能发送一个FIN来正常关闭连接。

然而,在许多攻击中,事情并不总是正常发生。例如,如果主机A正在攻击主机B,它可能只发送一个SYN消息,并伪造发送源地址。这样,SYN-ACK实际上会去往一个完全不同的地方。由于从未收到ACK回复,协议的这一部分就不会发生。主机B会等待它应该收到的ACK,如果始终未收到,最终会超时。但如果主机A反复对主机B进行此操作,主机B用于保存所有这些SYN数据包(即半开连接)的资源最终可能会耗尽,导致其崩溃或网络流量失败。这就是传统的SYN洪水攻击。

类似的情况也可能发生在流的结束阶段。如果主机A正在发送数据但从未发送FIN数据包,那么主机B将持续等待该会话继续,直到最终超时并在内部终止连接。因此,如果没有收到这些信号,实际上可以通过超时或其他方式终止连接。当然,主机B也可以发起FIN消息。实际上,甚至可能出现主机C伪造主机B的身份发送RST消息,从而重置主机A和主机B之间的连接。这些来自第三方的RST攻击本质上是在重置或破坏正在进行的连接。

因此,当尝试确定流的开始和结束时,必须考虑到流可能开始的所有不同方式(如半开连接)和结束的问题(如关闭连接问题),以便流的起止点能真实反映主机A和主机B可能看到的数据流情况。这就要求流量收集器必须足够理解协议,知道各种可能导致超时、乱序、不同顺序到达或被攻击重置的情况。流量处理必须考虑所有这些因素,才能合法地理解主机A和主机B之间的流。

流与会话的区别 🤝

需要明确的是,在前面的讨论中,我们提到主机A和主机B之间各有两个独立的流:从A到B的流和从B到A的流。这是两个独立的IP数据流

会话则是双向的流集合。当我们讨论协议图以及来回通信时,我们指的是TCP或IP会话。大多数会话至少包含两个流:一个方向一个。因此,当我们收集IP流数据时,需要理解该流数据只代表了一半的对话。就像打电话时只能听到一方说话,而听不到对方听到的内容——这就是一个数据流。每个从源到目的地的方向都是一个这样的流。

会话则涉及源和目的端口及IP地址的互换。会话是相关的,但并非同一个会话;它们实际上是两个独立的IP数据流。此外,请记住,作为TCP正常工作的方式,流和会话在时间上可以重叠,数据包可能乱序到达,在一个流内可能被复制丢失。网络中存在许多问题,TCP和主机内的协议会修复这些网络工作方式相关的问题。但如果我是被动收集,我无法在IP数据流的收集中主动通信。因此,如果我丢弃了一个数据包,或者错过了关于此会话的某些重要信息,那么在我的数据流中可能会出现异常,而积极参与两个连接的主机A和B可能永远看不到这个异常。

NetFlow:IP数据流的摘要 📊

如前所述,IP数据流与NetFlow不同。IP数据流是源和目的地之间、在特定时间、具有特定源端口和目的端口的单向数据包集合。而NetFlow是IP数据流的摘要

通常,该摘要内置了初始化和终止条件,即认为特定流有开始和结束。同样,这些是单向连接,因此NetFlow记录仍然是单向的,是从源到目的地,而不是反方向。

以下是一个NetFlow连接的示例记录,通常包含:

  • 日期和时间
  • 持续时间(开始时间和持续时间)
  • 协议
  • 源IP地址和目的IP地址
  • 源端口和目的端口
  • 数据包数量
  • 字节数
  • 流数量(基于从该主机源/目的地址/端口发生的终止条件)

您可能会注意到有两个独立的流记录。这两个记录的源/目的端口和IP地址正好互换,这意味着它们是一个会话的两半。因此,对于NetFlow数据,通常需要看到源和目的互换,并将这两个NetFlow记录放在一起,以理解两个主机之间的双向对话。

IP数据流的类型与格式 🗂️

IP数据流有许多不同的类型和格式。最常见的类型当然是我一直在讨论的NetFlow。NetFlow由思科发明,至今仍是IP数据流最标准的摘要形式。这就是为什么许多人在谈论IP数据流时会使用NetFlow数据这个同义词。但请理解,IP数据流包含数据包数据,而NetFlow不包含;它是一个考虑了IP数据流初始和终止条件的摘要。

除此之外还有很多其他例子:

  • Extreme Networks 的 sFlow
  • Foundry Networks
  • Huawei Technologies
  • Juniper
  • BlueCoat

它们都有略微不同的格式,收集的信息大多与NetFlow相同,但格式可能不同,在标志位或数据包数据流的某些特征收集上可能略有差异。运行在这些不同流类型上的工具通常是特定于该IP数据流类型的。因此,当谈论网络态势感知工具或Net工具时,它们将针对特定类型的IP数据流收集(无论是NetFlow、Packeteer还是任何其他类型)而设计。

此外,除了这些摘要格式,当然还有常规的PCAP数据,它基本上是所有数据包的原始集合。您可以创建使用过滤器的PCAP子集,从而获取特定流中代表的所有数据包。当我收到某种警报并获得该警报的NetFlow指示器时,这非常有用。然后,我可以过滤我的PCAP数据,仅提取与警报相关的特定数据包(在特定时间段内,具有特定源/目的地址和端口的数据包),进而查看IP数据流内部实际流动的攻击内容。

为何通常使用单向流? ➡️

我们为什么不更多地讨论双向流?为什么不让我们所有的工具都自动使用连接的两端并以这种方式进行特征化?

虽然需要双向流来理解完整的上下文,但生成双向流的成本可能非常高。需要将A到B的流量与B到A的流量在时间、端口、IP地址以及数据包可能经过的不同路径和不同传感器上进行大量关联。因此,通常我们不会在单个记录中收集双向流,我们总是可以在之后将它们组合起来,但由于在接近实时的情况下进行这种关联的成本和难度,我们通常不会以那种方式收集。

此外,在创建双向流时,还存在数据包和会话去重、关联各种流以及数据包载荷以确认各种反向流是否正确的问题。这是一项需要大量工作的事情,通常只在您想要深入调查特定攻击或事件时才需要做,而不是一般性收集的内容。

事实上,对于NIDS来说,单向流往往就是您真正需要的。以我之前描述的SYN攻击为例,如果我有一个流,其中我只寻找SYN数据包,并且没有看到来自攻击者主机的其他数据到达目的地,那么不难得出结论:我可能正在遭受来自该特定主机的SYN攻击。特别是如果我有很多不同的NetFlow记录,每个记录都显示来自不同源地址的一个SYN数据包,我可能会认为这些源地址是伪造的,或者它们来自某种僵尸网络,其中所有不同的元素都试图建立半开连接以耗尽特定目标的资源。因此,对于这类情况,基本上只需要单向流。

后续分析才是您真正需要双向流的地方,因为您希望了解流量的双方,并且在攻击期间,了解受害者如何响应传入的数据包非常重要,而不仅仅是您有一个单向流。

监控虚拟机环境 ☁️

目前,关于NetSA的一个非常重要且较新的发展是:如何利用流监控/IP数据监控来监控虚拟机环境

请记住,在虚拟机环境中,您可能有一个连接到多个虚拟机的单一接口。因此,我在互联网上收集的数据包,用于区分所有数据流的五元组看起来都来自同一个源地址,但实际上,它们可能来自接口内部的许多不同虚拟机。这是因为虚拟机通常不直接通过主机进行网络地址转换,NAT本质上允许每个虚拟机拥有唯一的IP地址,但托管所有这些虚拟机的主机会提供一个公共地址,当流量外出或从接口返回时,它会转换到这个地址。

因此,如果我在系统的物理接口进行监控,我可能无法分辨哪些数据包实际上来自哪个虚拟机——它们看起来都来自同一个主机。想象一下大型云环境,我可以在单个硬件平台上运行数十个或更多的虚拟机,其中一些属于不同的组织,或者由各种组织运行的不同虚拟机,这些机器的运行特征可能完全不同。我将需要能够以某种方式区分这些IP流,以便理解谁在和谁通信。

所以我可能希望从内部交换机导出流,以便在这些“粗”流中进行区分。

虚拟机流量监控方案 🖥️

让我们简单勾勒一下这可能如何工作。

我可能有一系列虚拟机都运行在一个公共平台(即我的管理程序)之上。这些是我的虚拟机,其中一台可能是Windows,一台可能是Linux,我可以运行各种不同的系统。每个虚拟机都有一个唯一的IP地址,因此它们在IP地址上彼此唯一。但当它们通过管理程序时,所有这些地址都会被转换到管理程序的IP地址。这就是我从这些特定主机外部看到的全部。

那么我能做什么呢?在管理程序内部实际执行此操作的交换机处,我可以直接进行数据流收集。如果我在交换机的这个位置进行数据流收集,那么我将获得来自各个主机的所有独立IP地址,而不是在外部收集时只获得单个IP地址。因此,如果我能从这里收集,我将获得更多信息。

但这意味着我的每个管理程序都必须有自己的数据流收集器,并且这些数据必须发送到所有不同主机之外的某个地方。当然,我可能有很多这样的主机,因此每个主机都需要自己的收集器,这些收集器都将汇集到某种中央存储库,我可能将其用于我的IDS或态势感知工具。

流量流与容量分析 📈

从之前的例子可以看出,基本上我将有相当大量的流量流从这里产生。很多数据包,很多不同的区域,数据包会在带宽内的各种不同区域到达。这意味着我可以对我的流量流进行一些容量分析,以了解可能发生的异常情况,这些异常超出了单个IP数据流内部可能获得的数据。

我可以利用这些带有时间戳的流来获取速率,例如数据包速率。我可以基于每个IP或每个链路来计算速率,以便理解在一天中的任何给定时间、一周中的哪一天、一月中的哪一周,我的正常数据包速率是多少。这样我就能理解哪些情况不属于我的正常数据包速率。这些数据包速率可以按网络聚合,也可以向下钻取,以便查看特定源和目的地址相关的流,或者仅查看像我的Web服务器这样的源地址,并询问:到我的Web服务器的流是什么样的?到我的客户端的流是什么样的?从我的外部路由器看外部流是什么样的?或者我可以说,在我整个内部LAN的带宽内,通过将所有内容聚合在一起,带宽看起来如何?

由此,我可以对传入的数据包速率进行大量的容量分析和统计分析。在路由器和交换机处采样这些速率是观察正常行为的一种非常紧凑的方法。这里的正常行为实际上被定义为在一天中的特定时间、一周中的特定日子、一年中的特定季节,该特定时间的正常数据包速率是多少。因此,正常行为可能会在白天和夜晚、周末和工作日、购物季和非购物季之间发生变化。因此,了解这些特定区域的容量情况,并使用网络态势感知工具绘制图表,是开始发现我系统内异常的第一个简单方法。

基于容量的异常检测 ⚠️

如果我这样做,并且仅从带宽、容量的角度进行观察,利用这些按主机和时间计算的速率,我可以看到与速率直接相关的异常。显然,我收集的数据规模越大,异常需要越明显才能被观察到。

让我们看一下下面图表中的这个例子。我基本上有一个正常的流量模式集。然后突然,在某个特定时间,流量上升到高位并大致保持平稳。不需要非常复杂的分析就能看出:哦,那段时间显然发生了什么事情。这可能是一次攻击,也可能是某些其他配置更改,甚至可能是每个人在同一时间对网站产生了兴趣。但这种在特定分钟内突然出现的情况意味着它可能不像您预期在瞬时拥塞中那样缓慢上升。

这就是为什么使用容量分析和这类异常检测,特别是DDoS攻击,即使使用网络态势感知工具中非常简单的容量技术,也可以相当容易地观察到。

从NetSA到NIDS警报 🚨

现在,我们谈谈网络态势感知和NIDS之间的关系。这里的理念是,如果我能利用NetSA识别或观察到某种攻击,我应该能够对该情况发出警报。一旦我能描述其特征,我就能描述变化是什么,并将其转化为NIDS警报。这样,我就可以从需要人工判断是否遭受攻击的态势感知,过渡到工具本身可以判断是否遭受攻击的NIDS工具。

对于像DDoS这样的事情,这相当容易。我只需为一天中某个时间或某种连接类型的正常带宽设置一个阈值。任何超过该阈值的情况都会生成警报。当然,这并不总是意味着我将遭受攻击。在任何一天,都可能有许多原因导致我获得意想不到的额外活动。但这可能是我想要调查的事情。因此,这是一种合理的触发器和警报或异常,我希望将其作为我的NIDS警报的一部分。

当然,Snort、Suricata、Bro都可以进行这种类型的异常检测。因此,尽管我们大多认为Snort是一个签名检测工具,但它也可以对像DDoS这样的事情进行这种基于阈值的异常检测,一旦您确定了您所收集流量的带宽阈值可能是什么。

利用NetSA确定基线 📉

关于NetSA的一个好处是,它实际上可以帮助您确定基线。因为使用NetSA工具,我将获得图表,这些图表本质上显示了我的正常行为随时间的变化。因此,我可以利用这些观察结果来帮助绘制我的NIDS阈值。

设置阈值确实有些挑战,因为它们确实会变化,并且在任何高使用率的日子您都可能收到误报。但基本上,如果您想象您的图表中,日常带宽使用情况大致如此,并且可能随着时间的推移开始变得更大,我仍然可以说有夜间阈值和白天阈值。因此,我可以设置几个不同的阈值区域,并根据一天中的时间更改它们。如果我收到越来越多的警报,我会开始提高这些阈值,以应对我的网络上可能实际发生的变化,这些变化必须考虑在内。

这些阈值对于许多事情都非常有用,甚至超出了单个企业使用基于流量的简单阈值分析的范围。您可以获得显示蠕虫如何在全世界传播的图表。这个特定的URL就是一个例子。

部署IDS与NetFlow收集器 🛠️

最后,我将如何在我的组织中部署某种IDS和某种NetFlow,以便让我能够进行一些真正有趣的调查,这些调查将跟随IDS警报而来?

这里有一个我简单勾勒出的例子。这是我的外部网络(可以是互联网或其他任何地方)。这是我的边缘路由器,它将我的企业连接到那个外部网络。流量通过我的边缘路由器进入我的企业,通常流经某种防火墙、交换机或ASA等设备。

我可以将我的IDS被动分路点直接连接到这里,以查看通过这个特定元素从外部世界进入的所有流量,检测所有可能发生事件的入站流,或者可能泄露信息的出站流。

但流数据(NetFlow)我可能更希望从我的内部交换机获取,以便我的NetFlow收集也能获取发生在DMZ和我后端客户端之间的事情。因为当我从IDS警报展开调查,并希望开始利用NetFlow收集数据调查时,它很可能会指示在我网络内部流动的事情。

因此,虽然IDS可能只需要查看外部世界以及进出外部世界的流量(假设此时我们忽略内部威胁),但网络流数据需要来自内部所有主要的阻塞点,以便我开始更好地了解我企业内部的网络态势感知。如果我的NetFlow数据只在这里(边缘)收集,与我的IDS在同一位置,那么我将无法很好地了解许多从不与外部网络通信的内部系统。例如,只与我的DMZ通信的客户端,甚至是经过NAT转换的客户端——如果我的客户端通过某些内部设置进行NAT转换,我甚至无法在此处获得唯一的IP地址来理解我的NetFlow数据发生了什么。

因此,当考虑在您的基础设施中同时放置IDS和NetFlow收集器时,您不必也不应该将它们放在完全相同的位置。您可以将它们放在不同的位置,这样当您基于警报进行调查时,我可以获得关于整个企业范围内态势感知图景的更完整信息。

本节课中我们一起学习了如何将IP数据流、NetFlow摘要、虚拟机环境监控以及容量分析结合起来,为大规模网络流量构建有效的异常检测机制。我们看到了如何利用网络态势感知工具确定行为基线,并设置阈值以触发NIDS警报,从而将人工观察转化为自动化检测。最后,我们探讨了在实际网络中协同部署IDS和NetFlow收集器的策略,以确保在调查警报时能获得全面、深入的网络流量视图。

036:基于图分析的事件检测 📊

在本节课中,我们将学习如何将网络流量数据转化为图结构,并利用图分析技术来检测网络中的异常行为和潜在攻击。我们将从图的基本概念开始,逐步探讨如何构建、分析网络流量图,并利用其特性生成入侵检测警报。


什么是图?🔗

上一节我们提到了网络态势感知与入侵检测系统的关联。本节中,我们来看看图分析的基础概念。

图,在最简单的层面上,是对象及其相互关系的集合。这个概念自1736年就已存在,最初用于描述连接不同陆地的桥梁。在图论中,对象被称为节点,对象间的相互关系被称为

图可以是有向的无向的。有向图意味着关系具有方向性,例如从节点A流向节点B。在网络流量分析中,IP数据流天然形成有向图,因此方向性非常有用。

图分析的主要挑战在于确定哪些属性构成唯一的节点,以及希望用边表示节点间的何种关系。即使是简单的网络流数据,也有多种方式来定义节点和边,选择正确的定义方式对于后续发现异常和理解网络正常行为至关重要。


构建网络流量图 🌐

了解了图的基本概念后,我们来看看如何从网络流数据中构建图。

任何标识符都可以关联为一个节点,任何连接都可以标识为一条边。通常,节点可以是源IP地址。这样,一个IP地址就对应一个节点。流入该IP地址的所有流量构成了该节点的入度,流出的所有流量则构成了出度

边通常与IP数据流相关,可以是从一个主机到另一个主机的数据流集合,不考虑端口号。也可以选择基于端口号来构建唯一的边,不同的选择会得到不同的图特征。

重要的是,IP数据流在边上创建了一个有向图。因此,入度出度是基于IP数据流图的两个重要元素。当然,相同的IP地址之间可能存在多个流。节点的度可以随着观察到的唯一流数量或连接的唯一其他节点数量而增加。

此外,边可以根据任何数值特征进行加权。一种非常常见的方式是使用该流中的数据包数量作为权重。例如,从A到B的边可能很“细”(数据包少),而从B到A的边可能很“粗”(数据包多)。这种权重可以帮助我们判断节点间的通信是否正常。


分析图特征以检测异常 🕵️♂️

构建好图之后,我们可以通过分析图的各种特征来发现异常或攻击。

图特征可以指示异常。例如:

  • 如果图是部分连接或完全连接的,这告诉我们在该图中节点通常与哪些其他节点通信。
  • 如果部分连接的图中突然出现了新的连接,这可能就是一个需要调查的异常。
  • 我们可以根据特定端口将图划分为从不连接的子图。例如,某些节点可能在特定端口上通信,但在其他端口上从不通信。
  • 节点间单向双向的连接模式也可以作为判断系统运行正常与否的依据。

然而,这些边可能会随时间变化。就像数据量会随时间变化一样,节点的连接性也可能随时间变化,这使得判断某个连接是否异常变得复杂。但所有这些分析对于发现各种攻击都非常有用。

有许多工具可以帮助我们进行可视化图分析。例如,Fvz 这类工具使用IP流数据进行可视化,帮助你直观理解节点间如何通信。这种表示方式通常比简单的网格图更容易发现图异常。


从图分析到入侵检测警报 🚨

现在,我们已经将IP数据流表示为图,并可以检测图中的异常。接下来,我们看看如何将这些异常转化为入侵检测系统的警报。

其核心思想是:在近乎实时地读取更多数据流并将其添加到图中时,能够识别出添加特定流是否会创建异常图条件。例如,通过观察IP数据流图的分区(即网络中功能分离的部分),每个新连接都可以被检查是否连接了图中原本孤立的区域。

以下是生成警报的步骤:

  1. 计算并识别具有正常分区的图。
  2. 记录每个独立的流。
  3. 判断是否有任何流在不连通的分组之间添加了连接。
  4. 如果存在,则发出警报,将这两个节点参数与新建立的连接一起作为NIDS警报输出。

举例说明:假设企业网络中有A和B两个从不交互的节点组。任何组内的连接都是正常的。然而,如果突然出现一个节点作为A组和B组之间的中介,建立了前所未有的连接,那么这三个新数据流就可以触发警报,因为它们被添加到图中时创建了异常条件。


利用图分析识别节点功能 🖥️

我们可以进一步利用图分析来确定节点的类型。

具有不同功能的节点将具有不同的流图特征。如果我们知道特定功能(如邮件服务器)的流图特征,我们就可以判断一个节点是否在运行该功能,无论它是否被设定如此。

例如,一个DMZ中的邮件服务器可能有一个目的端口25,并与许多外部主机通信。如果我们看到一个内部主机突然开始从一系列其他主机(甚至包括连接正式邮件服务器的相同主机)接收端口25的连接,我们就可以从图特征得出结论:这个内部主机正在作为邮件服务器运行。这可能意味着一个恶意服务被安装,绕过了官方邮件服务器的安全参数。这种方法同样适用于Web服务或其他任何服务。


局部性:一种更通用的异常检测方法 📈

除了基于端口和IP地址来表征节点,我们还可以使用局部性作为检测不相连子图间新连接的通用方法。

局部性考虑到,大多数系统随时间推移主要与相同的系统集合通信。通常需要7到10天来建立一个新节点引入系统后的正常行为基线。在此之后,新系统连接数量的突然急剧增加,可能表明网络中存在恶意行为。

我们可以将局部性视为与建立新连接的速率相关。当一个新节点刚加入时,我们对其知之甚少,新连接速率很高。但随着正常行为模式建立,该速率会迅速下降到较低水平并保持稳定。此时,新连接速率的突然激增(就像在寻找DDoS攻击时查看流量激增一样),可能表示安装了恶意软件或其他意外软件。

利用IP数据流图,这种方法可以非常有效和高效地发现试图在企业内部传播的恶意软件。

我们甚至可以更进一步。如果我们知道一个新系统将与已有的其他系统相似,我们可以通过假设这个新系统将具有与同类IP集合中其他系统相同的IP局部性,来加速这个过程。虽然这可能会带来一些额外的误报(I类错误率初期可能较高),但它能提高在节点刚引入系统时就检测到攻击的概率。


总结 📝

本节课中,我们一起学习了基于图分析的事件检测。

我们从图的基本定义开始,了解了如何将IP网络流数据构建成有向图,其中节点代表IP地址,边代表数据流。我们探讨了入度出度边权重等重要概念。

接着,我们学习了如何通过分析图的连接性分区特征来识别异常行为,例如从未连接的子图间出现新连接。这可以直接转化为网络入侵检测系统的警报。

此外,我们还看到如何利用图的特征来推断节点的实际功能(如识别未授权的邮件服务器),以及如何使用局部性这一更通用的概念来检测新连接速率的异常激增,从而发现恶意软件传播等活动。

最后,我们了解到图分析正成为网络态势感知中的重要工具,并与大数据技术结合,用于分析大规模企业网络。像KADA这样的组织正在引领这一领域的发展,利用图分析来理解恶意软件的传播和攻击模式。

通过将网络流量转化为图并应用这些分析技术,我们能够在传统的基于签名的检测之外,建立一种强大的、基于行为模式的异常检测能力。

037:Security Onion与Bro实验 🧅

在本节课中,我们将学习Security Onion平台及其核心组件,特别是作为网络入侵检测系统的Bro。我们将了解Security Onion的架构、功能以及Bro如何分析网络流量。


概述

Security Onion是一个用于研究入侵检测系统的强大平台。它集成了多种安全工具,能够进行全面的网络监控和分析。

Security Onion简介

Security Onion是一个功能强大的入侵检测系统学习平台。

简而言之,Security Onion能够执行全数据包捕获。这就像为你的网络安装了一个摄像机。你可以知道谁进出网络,以及他们携带了什么。

Security Onion的三大组件

Security Onion包含三个主要组件。

以下是这三个组件的详细说明:

  1. 入侵检测系统:包括网络入侵检测系统和主机入侵检测系统。
  2. 强大的分析工具
  3. 全数据包捕获功能。

对于基于规则的网络入侵检测,Security Onion提供了Snort和Suricata。对于基于分析的网络入侵检测,Security Onion提供了Bro IDS。

Bro监控网络活动,并记录所有连接,包括DNS请求。

对于基于主机的入侵检测,Security Onion提供了OSSEC。OSSEC可以执行日志分析、文件完整性检查、策略监控和实时警报。

全数据包捕获功能就像摄像机。它告诉我们谁进出网络,以及他们携带了什么。

Security Onion中的分析工具包括Sguil、Squert、Snorby和ELSA。

ELSA代表企业日志搜索与归档。我们将在后面更详细地讨论每一个工具。

分析工具详解

上一节我们介绍了Security Onion的组件,本节中我们来看看其核心分析工具的具体功能。

  • Sguil:提供了一个良好的界面来查看Snort和Suricata警报。例如,它允许你将警报关联到数据包捕获。Sguil允许你查看所有相关的流量,并发现攻击意图。
  • Squert:是Sguil数据库的一个Web应用程序。它提供了网络数据的可视化。
  • Snorby:是一个用于查看、搜索和分类警报以及生成报告的Web界面。它允许你追踪触发警报的数据包。

  • ELSA:代表企业日志搜索与归档。它允许你梳理Security Onion收集的数据。ELSA提供了对相关系统日志数据的可见性,并提供强大的图形显示。

服务状态与部署

这是Security Onion服务状态的显示界面。你可以登录到你的Security Onion虚拟机,并通过输入本幻灯片中指示的命令来获取此显示。

Security Onion有多种部署方案,具体取决于你的应用和组织需求。对于你的Security Onion虚拟机,它被设置为独立安装。

Bro网络入侵检测系统

在接下来的几张幻灯片中,我们将更详细地讨论作为网络入侵检测系统的Bro。

Bro是一个网络流量分析器。它是一个事件驱动的入侵检测系统。Bro包含许多协议分析器。Bro提供网络与社区情报的实时关联。

现在请注意,这是一个重要的概念,让我重复一遍:Bro提供网络与社区情报的实时关联

Bro的重要文件

本幻灯片描述了Security Onion中Bro的重要文件。你应该对Bro的配置文件、日志文件的位置有一些了解。Bro使用许多内置脚本。由于你使用的是我们为你准备的Security Onion虚拟机,你无需担心Bro的安装。

本幻灯片为你提供了一些关于Bro的阅读链接和参考资料。我包含了一个YouTube视频供你观看,你可以看到Security Onion的创建者Doug Burke的讲解。

Bro日志与脚本

本幻灯片总结了Security Onion中Bro的日志文件。Bro日志文件位于目录 /nsm/bro/logs/ 下。你应该登录到你的Security Onion虚拟机,查看该日志目录下有哪些文件。

Bro实际上是一种编程语言。它使用 .bro 文件扩展名来表明该文件是一个Bro脚本。Bro为网络分析提供了许多内置脚本。

本幻灯片描述了Bro的脚本类型及其位置。

示例:DNS异常检测

最后这张幻灯片是Bro如何进行DNS异常检测的一个例子。我们将在后续的实验作业中讨论这个例子。


总结

本节课中,我们一起学习了Security Onion入侵检测平台。我们了解了它的三大核心组件:入侵检测系统(如Snort、Suricata、Bro、OSSEC)、分析工具(如Sguil、Squert、Snorby、ELSA)以及全数据包捕获功能。我们重点探讨了Bro作为事件驱动的网络分析器,如何通过脚本和日志提供网络活动的实时关联与深度可见性。这些工具共同构成了一个强大的网络监控与安全分析环境。

038:ROC分析 🎯

在本模块中,我们将学习如何对入侵检测系统(IDS)的性能进行定量分析。我们将重点介绍接收者操作特征(ROC)分析,这是一种利用测试数据生成的数值来量化比较不同IDS或同一IDS不同配置性能的方法。通过学习,你将能够对IDS数据执行ROC分析、解读结果、选择合适的评估指标,并在实验环境中应用这些知识。


上一节我们概述了本模块的目标,本节中我们将深入了解ROC分析本身。

ROC分析概述 📊

ROC分析是一种用于可视化、组织和基于性能选择分类器的技术。它最初应用于信号理论,用于研究信号降噪中的不同分类器。1998年,林肯实验室将其引入,用于对当时DARPA资助的不同入侵检测系统进行比较分析。这成为了IDS历史上首次进行定量分析的尝试。尽管当时的数据集存在一些问题,但至今仍被广泛使用,我们本课程也将使用它。


了解了ROC分析的起源后,我们来看看如何将IDS的原始事件转化为适合分析的数据。

事件图与阈值 📈

事件图通常提供一种视觉定性分析。你可以通过观察事件图直观判断分类器的好坏。然而,为了进行定量分析,我们需要使用阈值。通过设置不同的阈值,我们可以将IDS事件转换为异常分数,从而在ROC空间中生成不同的数据点。这些数据点是后续定量比较的基础。


从事件图得到数据点后,我们需要一个标准化的结构来组织这些数据,这就是混淆矩阵。

混淆矩阵:定量分析的基石 🧮

混淆矩阵是所有分析技术的基础。它包含四个核心元素:

  • 真阳性(TP):攻击被正确检测到。
  • 假阳性(FP):正常流量被误报为攻击。
  • 真阴性(TN):正常流量被正确忽略。
  • 假阴性(FN):攻击未被检测到。

通过收集测试数据并填充混淆矩阵,我们就为ROC分析、精确率-召回率分析等准备好了定量数据


有了混淆矩阵,我们就可以进行更深入的比较和分析。

比较与成本效益分析 ⚖️

基于同一IDS的不同配置,我们可以生成多个混淆矩阵并进行比较。在IDS领域,ROC分析本质上是一种成本效益分析。这里的“成本”可能指误报(FP)带来的运维负担,而“效益”则指正确检测(TP)带来的安全提升。通过这种方式,我们可以对多个IDS进行定量比较


在进行比较时,我们更关注比率而非原始数据,这引出了误差率的概念。

误差率的重要性 🔢

在分析IDS性能时,误差率比原始数据更重要。我们通过计算真阳性率(TPR)假阳性率(FPR) 等指标来表征性能。这些比率消除了数据规模的影响,使得不同系统间的比较更加公平和有意义。


最后,我们将学习如何利用这些比率生成直观的图表。

生成ROC与精确率-召回率图 📉

通过计算不同阈值下的TPR和FPR,我们可以绘制出ROC曲线。同样,我们也可以绘制精确率-召回率曲线。这两种图形化表示方法能够突出显示IDS性能中不同的权衡关系,例如检测率与误报率之间的平衡。


实验与应用 🛠️

在本模块的后续实验和整个学期中,我们将开始在Security Onion中收集和使用外部测试数据,为其中的IDS生成真实的混淆矩阵。我们将以数据包作为基准率进行计算。请注意,选择合适的基准率对于此类分析至关重要。


本节课中,我们一起学习了ROC分析的基础。这是一个注重细节的模块,涉及如何对IDS进行定量分析。请花时间观看视频、完成练习和作业,这将帮助你掌握在Security Onion或任何其他IDS测试环境中使用真实数据进行定量分析的技能。

039:ROC分析概述 📊

在本节课中,我们将要学习接收者操作特征曲线,即ROC曲线及其分析方法。ROC分析的核心是为分类器的性能提供一个量化衡量标准,这对于入侵检测系统(IDS)至关重要,因为IDS的核心任务就是将事件分类为正常或入侵。

什么是ROC分析? 🤔

上一节我们介绍了ROC分析的目的,本节中我们来看看它的具体定义。

接收者操作特征是一种用于可视化、组织和选择分类器的技术。其核心思想是将分类器的输出结果以一种标准化的方式呈现,以便对不同类型或不同配置的分类器进行公平的比较,从而根据其特性选择最佳分类器。

它最初创建并应用于信号理论中,用于评估信号处理中的信噪比或检测算法。这一点非常重要,因为当我们将其应用于入侵检测数据时,区分“信号与噪声”和区分“攻击与正常行为”之间存在显著差异。

在信息安全领域,ROC分析于1998年由林肯实验室首次应用于IDS评估。这是基于DARPA的一个项目,旨在比较不同类型的入侵检测算法。林肯实验室设计了一种基于系列测试数据来衡量各种IDS分类器性能的方法。尽管这种分类方法存在许多重大问题,但您在自己的实验和评估中也将使用类似的数据。

理解分类器 🧠

在深入探讨ROC之前,我们必须先理解分类器。我们之前提到过,分类器是IDS的核心。

分类器本质上是一种分区算法,它将输入数据集划分为两个或多个区域。就我们的目的而言,我们通常将其视为 PNP 代表攻击信号(阳性),N 代表正常行为(阴性)。

对于IDS,分类器接收输入数据,并将其划分为我们可以计数的两个集合 PN。然后,我们可以将这些计数与“真实情况”(ground truth)进行比较,从而判断分类器将某个数据点标记为 P 时,其决策是正确的还是错误的。

分类器输出的是两个假设类别 PN,但这不一定是真实的类别。入侵检测系统并不知道真实情况,它总是生成假设类别。分类器的性能好坏,取决于其将输入数据映射到这两个集合的结果与真实情况的匹配程度。

混淆矩阵与性能指标 📈

我们之前在模块中讨论过混淆矩阵。混淆矩阵映射了真实类别和假设类别。

从Tom Fawcett的论文中可以看到,真正例(TP)真负例(TN)假正例(FP)假负例(FN) 使我们能够计算各种比率,例如:

  • 精确率(Precision)TP / (TP + FP)
  • 召回率(Recall,即真正例率 TPR)TP / (TP + FN)
  • 准确率(Accuracy)(TP + TN) / (TP + TN + FP + FN)
  • 假正例率(FPR)FP / (FP + TN)

这些比率消除了数据量大小的影响,转化为可比较的数值。这样,即使使用两个不同大小的数据集,我们也能获得相似的正例率或召回率,从而用于比较不同的IDS。

ROC空间与曲线 📊

一旦我们有了这些比率,就可以绘制接收者操作特征曲线。

我们可以创建一个二维图表,其中 Y轴代表真正例率(TPR)X轴代表假正例率(FPR)。这样,我们就能在一个二维空间中绘制分类器的特征,从而开始比较不同的分类器。

对于许多只有单一配置的分类器(即没有可调节的阈值或其他参数),在数据集上运行一次只会产生ROC空间中的一个单点。因此,我们得到的不总是一条“曲线”,这也是它被称为“特征”的原因——特征不一定是一条曲线,也可以是ROC空间中的一个点。

解读ROC空间中的点 🔍

当我们在ROC空间中有单个点时,每个点都代表一个特定配置的分类器在特定数据集上运行一次的结果。由于我们比较的是比率,因此对于同一数据集的不同运行,我们会得到图中不同的点。

我们可以根据这些点在ROC图中的位置来评估其含义:

以下是几个关键点的解释:

  • 点 D:拥有完美的真正例率(1.0)和零假正例率(0.0)。这被称为完美分类器,因为它正确识别了所有攻击,且没有将任何正常行为误报为攻击。
  • 点 C(及对角线上任何点):代表随机分类器。其真正例率等于假正例率,意味着分类器对任何数据点标记为攻击或正常的可能性相同。
  • 点 A 和 点 B:代表了实际分类器中常见的权衡。两者都比随机分类器(点C)好。
    • 点A 侧重于最小化假正例率(即减少误报)。
    • 点B 侧重于最大化真正例率(即提高攻击检出率)。
    • 理想情况下我们想要点D,但现实中分类器往往需要在A和B这样的点之间做出取舍,这告诉我们分类器在识别真正攻击和避免误报之间的平衡关系。
  • 点 E:位于对角线下方,在某种意义上比随机分类更差。这通常意味着分类器犯了系统性错误,例如可能将标签弄反了(将大量正常行为判为攻击,同时漏掉大量攻击)。如果交换其输出标签,可能会在ROC空间中得到一个位于对角线上方的、相当不错的点。

总结 📝

本节课中我们一起学习了ROC分析的基础知识。我们了解到ROC是一种用于评估和比较分类器(特别是IDS分类器)性能的强大工具。通过将分类器的输出转化为真正例率和假正例率,并在二维空间中绘制,我们可以直观地判断一个分类器是接近完美、随机,还是在检出率和误报率之间做出了某种权衡。理解ROC空间中不同位置的含义,是选择合适IDS配置的关键第一步。

在后续课程中,我们将更深入地探讨ROC分析的具体细节。

040:事件图与阈值设定 📊

在本节课中,我们将学习如何将入侵检测系统(IDS)产生的原始事件数据,通过事件图可视化和阈值设定,转化为可用于ROC(接收者操作特征)分析的数据。我们将重点理解异常检测系统的评分机制、如何通过调整阈值来改变系统灵敏度,以及如何构建混淆矩阵来量化分类器的性能。

上一节我们介绍了ROC分析的基本概念,本节中我们来看看如何将入侵检测系统的输出转化为ROC分析所需的格式。

从异常检测到ROC分析

ROC分析的思想最初源于对异常检测系统的评估。因为异常检测系统会为每个检测到的事件输出一个异常分数,这暗示我们可以通过改变接受事件的分数阈值来调整系统的行为。

核心公式:
事件分类 = (分数 > 阈值) ? “异常” : “正常”

这与基于签名的检测系统不同,后者通常只给出“告警”或“无告警”的二元结果,没有可调节的阈值或连续的匹配分数。不过,我们后面会看到,ROC分析同样可以应用于签名检测系统。

回到异常检测系统,其灵敏度正是通过调整这些阈值来决定的。

  • 阈值越高,事件被判定为异常的门槛就越高,系统越不敏感。
  • 阈值越低,事件越容易被判定为异常,系统越敏感。

通过调整阈值,我们可以控制系统对“异常程度”的敏感度。提高阈值意味着更少的行为模式会被归为异常;降低阈值则意味着更多行为会被归为异常。这通常会导致更少的误报(第一类错误),因为提高阈值使得正常行为被误判为异常的可能性降低。反之,较低的阈值会推高误报率。这种真实事件检出率误报率之间的权衡关系,正是ROC分析所关注的核心。

事件图可视化

在异常检测系统中,这一切都始于事件图。这是一个非常简单的图表:

  • X轴:事件编号(通常是时间顺序)。
  • Y轴:分析分数(即异常检测系统返回的分数,通常在0到1之间)。

这假设我们的分类器会为它发现的每个事件(如每个数据包、每个会话)产生一个分数。我们可以将这些分数绘制在图上,每个点代表一个可观测事件,其真实类别可能是正常或恶意。

重要的一点是:除了分类器给出的分数,我们还必须知道每个事件的真实类别(Ground Truth)。即,它到底是真正的异常/攻击,还是正常的良性行为。一个优秀的分类器会给恶意事件打高分,给正常事件打低分。这就是我们所说的“好的入侵检测分类器”。

以下是某个异常检测系统生成的一个简单事件图示例:

如图所示,Y轴分数在0到1之间。底部的数字是事件编号。可以看到,一些事件聚集在上方(更可能是异常),另一些聚集在下方(更可能是正常)。如果这是一个表现良好的分类器,这种聚类现象就会很明显。

标注真实类别与设定阈值

接下来,我们需要在事件图的每个点上标注其真实类别。

在上图中:

  • 蓝点(P):代表系统中的真实异常事件。
  • 绿点(N):代表系统中的真实正常事件。

在一个完美的分类器中,所有蓝点都应位于分数1的位置,所有绿点都应位于分数0的位置。但如图所示,这个分类器并不完美:有一个绿点得分很高,而一个蓝点得分很低。理想情况下,那个高分绿点应该在0分,那个低分蓝点应该在1分。

仅通过可视化观察标注了真实类别的事件图,我们就能定性地评估分类器的好坏。但我们需要一个更定量的方法来评估和比较不同的分类器。

为了实现定量分析,我们需要引入混淆矩阵

对于任何配置了特定阈值的异常检测算法或分类器,都有四种可能的结果:

  1. 真正例(TP):检测为异常,且确实是异常。
  2. 真负例(TN):检测为正常,且确实是正常。
  3. 假正例(FP):检测为异常,但实际上是正常(误报,第一类错误)。
  4. 假负例(FN):检测为正常,但实际上是异常(漏报,第二类错误)。

混淆矩阵的对角线(TP和TN)代表正确分析的事件。另一条对角线(FP和FN)则代表分类器产生的错误。

从分数到假设类别:设定阈值

我们回到数据。对于每个事件,我们有事件编号、分数和真实类别。但我们只有分数,没有“假设类别”。

如何从分数得到假设类别呢?答案是通过设定一个阈值。我们在事件图上画一条水平线作为阈值。例如,将阈值设在0.42:

  • 分数高于0.42的事件,假设为异常
  • 分数低于0.42的事件,假设为正常

设定阈值后,我们就能统计混淆矩阵的所有四个元素:

  • 真正例(TP):蓝点且高于阈值(本例有4个)。
  • 真负例(TN):绿点且低于阈值(本例有3个)。
  • 假正例(FP):绿点但高于阈值(误报,本例有2个)。
  • 假负例(FN):蓝点但低于阈值(漏报,本例有1个)。

这样,仅仅通过绘制一条阈值线并创建假设类别,我们就构建出了完整的混淆矩阵。

多阈值与ROC曲线

我们刚才构建的混淆矩阵是针对单个阈值点的。每次选择一个新的阈值,都可能得到一个新的混淆矩阵。当然,如果阈值移动的幅度很小,没有跨越任何已有事件的分数,混淆矩阵就不会改变。但每次阈值跨越一个事件的分数时,就会产生一个新的混淆矩阵。

因此,我们能得到的唯一混淆矩阵的最大数量,等于数据中唯一分数值的数量加一。数据点越多,理论上可以绘制的不同混淆矩阵就越多,从而为我们的分析增加分辨率。这并没有改变分类器本身,只是围绕数据移动了阈值。

为了演示这一点,我们将示例数据按分数排序(事件编号此时已无关紧要)。

排序后,我们可以轻松地知道可以在哪里绘制阈值(例如,在0.05之前、在0.05和0.1之间,依此类推)。我们必须确保真实类别始终与对应的分数匹配,以便进行有效计数。

在数据图中,我们从非常低的阈值点开始,逐步上移阈值点,尽可能多地创建阈值。通过这种方式,我们可以计算出每个阈值对应的假正率(FPR)和真正率(TPR),它们直接由混淆矩阵的计数计算得出。

注意:如果阈值恰好落在某个分数上,只要处理方式一致(例如,始终将等于阈值的情况计为“高于”或“低于”),你仍然会得到一个有效的混淆矩阵和ROC空间中的有效点。

根据所有不同的阈值,我们最终可以绘制出第一条接收者操作特征(ROC)曲线。在本例中,它是一条穿过数据点的奇特阶梯函数,展示了在0到1的范围内,该分类器在真正率和假正率之间的权衡关系。

图中仍可画出对角线。对角线上的一些点(例如阈值为0.79和0.9时)表明,在这些阈值下,分类器的表现与随机猜测无异(因为TPR ≈ FPR)。这很容易理解:如果阈值设得太低或太高,基本上所有点都会被归到同一侧,没有起到分类作用。

但对于那些在阈值上下都有点的设置,我们就能在ROC曲线上看到权衡。我们可以开始判断哪些点较好。例如,图中0.29和0.64附近的点,能以相对较低的假正率获得较高的真正率。这样,我们就能开始看出对于一个特定分类器,哪些可能是较好的阈值点。

固定分类器的比较

我们创建了一条曲线,因为我们可以为单个分类器基于不同阈值生成ROC空间中的多个点。但是,如果你的系统无法调整阈值(例如基于签名的IDS,没有阈值概念),你仍然可以通过基于现有IDS配置生成一个特定的混淆矩阵,从而在ROC图上得到一个单一点

不同的固定分类器可以直接在ROC图上进行比较。例如,回顾之前我们将阈值设在0.42的例子,那会得到一个特定的假正率和真正率,对应于ROC空间中的一个单一点。这个点完全有效,可以用于不同IDS之间的比较分析。

本节课总结

在本节课中,我们一起学习了如何将入侵检测数据转化为可用于ROC分析的形式。关键步骤包括:

  1. 理解异常检测系统的分数输出阈值概念。
  2. 通过事件图可视化事件分数。
  3. 利用真实类别(Ground Truth) 标注事件。
  4. 通过设定阈值,将连续分数转化为二元假设类别。
  5. 基于阈值构建混淆矩阵,计算真正例、假正例等。
  6. 通过系统性地调整阈值,生成多个性能点,最终绘制出ROC曲线
  7. 理解即使对于没有阈值概念的固定分类器(如签名IDS),也能在ROC空间中表示为单个点进行比较。

掌握这些步骤,是定量评估和比较不同入侵检测系统或配置性能的基础。

041:基于IDS配置的多重混淆矩阵 📊

在本节课中,我们将继续上一模块的内容,深入探讨基于多种入侵检测系统(IDS)配置或多重不同IDS的混淆矩阵比较。我们将学习如何在接收者操作特征(ROC)空间中,通过不同的曲线来评估和比较这些系统。


上一节我们介绍了ROC图的基本概念,特别是真阳性与假阳性之间的权衡。在IDS领域,这实际上是一种成本效益分析:效益体现在发现真正的攻击事件(真阳性),而成本则体现在需要处理的误报(假阳性)。

为什么这是一种成本效益分析?效益很好理解:部署IDS就是为了发现真正的安全事件。而误报之所以是成本,是因为每当出现一个误报,安全团队都需要投入资源去调查和确认它是否真的是一个真实的安全事件。如果误报过多,团队可能会将大量资源浪费在追踪那些并非真正攻击的事件上。因此,在ROC分析中,我们常将其视为IDS领域内的成本效益分析。


在成本效益分析的框架下,我们已经讨论了单个点与曲线的概念。现在,我们可以将其视为一种评估不同分类器性能的方法。

如果一个分类器的参数是固定的,它只能在ROC空间中产生一个单点。这意味着我们只能获得一种固定的成本效益权衡。例如,一个点可能具有较高的真阳性率(TPR)和中等水平的假阳性率(FPR)。我们需要将这个点与另一个分类器产生的、具有不同权衡关系的点进行比较。

让我们回到之前的例子。假设一个分类器在ROC空间中的点是 (FPR=0.4, TPR=0.6)

  • 真阳性率(TPR)为0.6:这意味着该IDS能检测到约60%的真实攻击事件。但同时,它会漏掉约40%的真实攻击(第二类错误)。
  • 假阳性率(FPR)为0.4:这意味着在所有被标记为“攻击”的警报中,有40%实际上是误报。安全团队需要花费大量时间去调查这些误报。

这就是该分类器的权衡点。现在,如果另一个分类器的点是 (FPR=0.8, TPR=0.95),虽然它能检测到95%的真实攻击,但其80%的警报都是误报。考虑到正常流量通常远多于攻击流量,这个80%的误报率可能会产生海量的调查任务,其成本可能远超检测到更多攻击带来的效益。

因此,在进行成本效益分析时,我们需要仔细权衡不同点的假阳性率和真阳性率。


现在,我们可以用成本效益的视角重新审视之前提到的几个比较点。

以下是几个分类器性能点的比较:

  • 点D:性能极差,在任何情况下都不会考虑。
  • 点C:性能不佳,提供的价值有限。
  • 点A:假阳性率很低。虽然只能检测到60%的真实攻击,但需要追踪的误报很少。
  • 点B:真阳性率比A点略高,但假阳性率也大幅上升(超过40%)。

从成本效益的角度看,在大多数企业环境中,点A 通常是更优的选择,因为它能最小化误报带来的资源消耗。除非在某些极端情况下(例如,必须确保捕获所有零日攻击),我们才会倾向于接受更高的误报率以换取极高的检测率(类似点B的特性)。


如果一个分类器有可调节的参数(例如,异常检测的阈值),那么它就能在ROC空间中生成一条曲线,而不仅仅是一个点。这为我们提供了更大的灵活性。

通过调整阈值,我们可以在曲线上选择不同的操作点。例如,可以选择一个点来最大化真阳性率,也可以选择另一个点来最小化假阳性率。这样,我们就可以在同一分类器内部的不同配置之间进行成本效益权衡分析,其方式类似于比较两个不同IDS的单个点。

典型的ROC曲线看起来像一个阶梯函数,其整体性能优于从(0,0)到(1,1)的对角线(随机分类器)。曲线上的点离这条对角线越远,通常意味着分类器性能越好。另一种衡量方式是计算曲线上每个点到完美分类点 (0,1) 的距离,距离越短越好。

回顾我们之前计算过的示例数据,其ROC曲线也符合这些特征。我们可以通过计算到对角线的最大距离或到完美分类点的最小距离,来识别曲线上最佳的权衡点。


当我们拥有多个不同的IDS时,情况会变得更加复杂。假设有三个检测器,它们各自有不同的ROC曲线。

通过观察曲线,我们可以发现:

  • 检测器1 在高假阳性率、高真阳性率区域表现更好。
  • 检测器2 在保持较高真阳性率的同时,能更好地最小化假阳性率。
  • 检测器3 是一个单点分类器,其性能点位于检测器1和2之间的某个位置。

那么,我们是否应该选择检测器3?答案通常是否定的。因为如果我们关心低假阳性率区域,检测器2的性能始终优于检测器3;如果我们关心高检测率区域,检测器1又优于检测器3。检测器3的单一操作点无法提供优于其他两个检测器可变曲线的灵活性。

此外,我们还可以考虑组合分类器。理论上,如果我们有多个分类器,可以绘制它们所有ROC点的凸包。这个凸包边界代表了组合这些分类器所能达到的最佳性能上限。

在实际的入侵检测中,组合不同的IDS工具可能很困难,因为这涉及到算法层面的融合,而不仅仅是并行运行两个工具。然而,在一些模块化系统(如Bro/Zeek)中,通过加载不同模块,确实可以实现接近凸包理论效果的分类性能提升。


另一种快速比较多个ROC曲线的方法是计算每条曲线下的面积(AUC)

AUC提供了一个单一的度量值,用于衡量分类器在所有可能阈值下的整体性能。AUC值越大,通常意味着分类器的平均性能越好。在上图的例子中,即使分类器A在某个特定区域表现稍好,但分类器B的AUC值更大,表明其整体性能更优。


现在,让我们总结一下使用ROC分析进行IDS比较的益处和注意事项。

益处:

  • 由于使用比率(TPR和FPR),ROC分析对类别分布的变化不敏感。即使测试数据中正常流量远多于攻击流量,我们仍然可以生成有意义的ROC曲线进行比较。
  • 即使是静态的、基于签名的IDS也可以进行ROC分析。如果它能输出置信度分数,可以生成曲线;如果不能,至少可以生成一个ROC空间中的点。通过更换不同的规则集(视为不同配置),甚至可以为同一个签名IDS生成多个点。

注意事项与挑战(McC论文中提及):

  • 信号与噪声的界定:在入侵检测中,区分“攻击”与“正常”比传统信号处理中提取信号更复杂。
  • 可调检测函数的缺乏:许多检测器只提供一个固定的操作点。
  • 度量基准问题(基本比率谬误):我们应该按时间、按数据包、还是会话来计算攻击和正常事件?例如,一次DDoS攻击可能包含成千上万个会话,但算作一次攻击。我们通常选择按数据包作为基准,但这仍然存在争议。
  • 数据独立性假设:ROC分析假设数据点之间是独立的。但在入侵检测中,攻击往往由一系列相关事件(攻击链)组成,这违反了独立性假设,可能影响ROC分析的有效性。

尽管存在这些挑战,ROC分析目前仍然是定量比较和评估不同入侵检测系统分类器性能的最佳工具之一。虽然现在也常用精确率(Precision)和召回率(Recall)构成的PR曲线,但它们同样基于混淆矩阵,并未完全解决上述所有问题。


本节课中,我们一起学习了如何基于多重IDS配置进行混淆矩阵比较。我们深入探讨了ROC空间中的点与曲线分析,理解了如何将其视为成本效益权衡的工具,并学习了比较不同ROC曲线的方法(如观察凸包和计算AUC)。同时,我们也认识到在实际入侵检测应用ROC分析时存在的局限性和挑战。掌握这些知识,将帮助你更科学地评估和选择适合特定环境需求的入侵检测系统。

042:误报率与漏报率 📊

在本节课中,我们将深入探讨分类器中的错误率。这是所有ROC分析和定量分析的基础。理解这些错误率的真正含义至关重要。


概述

现在,我们稍微转换一下话题,讨论分类器中的错误率。由于这是我们所有ROC分析和定量分析的基础,因此有必要回过头来更深入地思考一下,我们在入侵检测系统中得到的这些错误率究竟意味着什么。


错误率与ROC分析基础

当我们谈论“率”时,意味着在一系列大量事件中,我们可以计算出第一类错误和第二类错误相对于总数的比例。其核心思想是,在进行此类定量分析时,我们相信无论数据量多大、事件数量多少,我们得到的第一类和第二类错误率在同类数据中都将保持一致。

因此,我们拥有的数据越多,使用的数据集越大,我们对这些第一类或第二类错误的分辨率就越高、越精确。但所有这些ROC分析都基于一个事实:这些错误率直接与我们使用的特定分类器的配置相关,并且与我们正在运行的具有相同特征的数据相关。

我们使用相同的数据来比较不同的入侵检测系统,因为我们希望“正常”事件的分布是相同的。在我们所有的样本数据中,我们假设这种分布代表了最终将在实际系统中使用的环境。

第一类错误率,当然就是我们用于ROC曲线的误报率。而真阳性率,正如我所说,完全与这里的N(正常事件真实数量)或另一情况下的P(异常事件或攻击事件的真实数量)相关。如果这些数字增加,那么这些计数也应该增加,而比率应保持相对一致。

每个阈值都对应ROC空间中的一个点。这意味着数据被用来计算这些比率,而这些比率正是我们在ROC曲线本身中观察或可视化的内容。


混淆矩阵中的其他指标

之前我们讨论了诸如特异性等概念。在各自数据集和分类器中计算的比率,一旦我们知道了这些比率并从混淆矩阵中获得了数字,就可以提取出许多其他类型的信息。

我们已经讨论了真阳性率和误报率,但你还会遇到像特异性这样的指标。特异性是真阴性数除以(误报数 + 真阴性数),或者等于1减去误报率

其含义是,我们在识别事件方面的特异性程度,与我们讨论基于签名的系统时所用的非正式描述相关,它反映了当我们在混淆矩阵中拥有这组定量值时所能达到的水平。

当我们讨论可以进行的许多其他类型的计算时,你会发现它们几乎都属于创建某种比率的概念。即使是特异性,以及我们讨论的其他元素,也都是相对于某种总数、起始值或某种比率而言的。因此,我们可以开始思考所有这些值——无论是特异性、准确率、精确率还是召回率。

因为这些指标都与比率相关,我们期望它们在特征相同的、越来越大的样本数据集上保持一致。


实例分析与重要性

在我们一直使用的简单示例中,我们可以看到,我们计算出的这些错误率(如0.4、0.2)和特异性(0.6)不仅对我们在此创建的事件图有意义,而且如果我们继续延长这个事件图,在更长的时间段内持续创建事件,混淆矩阵中的这些数字都会增加,但我们期望这里的这些数字(包括特异性数字)能保持一致,并且随着数据量的增加,能越来越准确地反映分类器在该数据上的特性。

这就是为什么使用比率来计算ROC曲线中的所有各种指标是如此重要,而不是直接使用事件图。想象一下,查看一个包含数亿个不同事件的事件图,我们试图在其中可视化地划分这些事件的类别。如果你有数百万个事件需要组织,你永远无法做到这一点。

因此,对比率进行量化,有助于我们在比较不同类型入侵检测系统时,更仔细地对这些事件进行分类。这就是为什么尽管ROC分析存在一些问题,但进行一种能够随着我们获得越来越多的测试数据和真实数据而保持一致性和精确性的分析,这一概念在尝试对所有不同分类器进行定量比较时非常有价值,而这实际上也就是对不同入侵检测系统的比较。


总结

本节课中,我们一起学习了入侵检测系统中分类器错误率的核心概念。我们明确了误报率与漏报率的定义及其在ROC分析中的基础地位,探讨了如何通过混淆矩阵计算特异性等关键指标,并理解了使用比率而非原始计数进行定量比较的重要性。这些知识为我们后续评估和选择入侵检测系统提供了坚实的定量分析基础。

入侵检测:P43:ROC曲线与P-R曲线 📈

在本节课中,我们将学习如何使用ROC曲线和P-R曲线来更具体地评估入侵检测系统。我们将探讨如何计算相关指标,并利用这些图表进行成本效益分析。

上一节我们介绍了ROC空间中的点与曲线。本节中,我们将更深入地探讨这种比较方式。

以下是关于成本效益分析的示例点回顾。

我们之前讨论的示例点具有40%的误报率和60%的检测率。我们分析了不同点的优劣,其中A点在成本效益上优于B点,D点是理论上可能无法达到的理想点,而C点则是可能的最差分类器。

现在,让我们更定量地查看我们创建的样本数据。

以下是按分数正确排序的事件列表。

这些事件已按分数排序,并且每个事件都关联了真实标签。基于这些元素,我可以以网格形式计算出所有关心的指标值。

以下是一个Excel表格中的计算示例。

在此表格中,我为每个阈值点计算了以下值:

  • 真阳性
  • 误报
  • 漏报
  • 真阴性

这四个值构成了我的混淆矩阵。其中,P列总计了正确分类为阳性的事件,N列总计了正确分类为阴性的事件。由此,我可以计算出误报率检测率精确率召回率特异性。只要我的事件按此方式排序,我就可以使用这个表格进行任何ROC分析相关的计算。

基于这些计算,我可以轻松绘制出ROC曲线。

我所做的只是取检测率列和误报率列,绘制出之前见过的相同图形。现在我可以查看所有样本点,并分析在ROC图中哪些点是最优的。

现在,我可以对精确率和召回率进行完全相同的计算。

你会注意到这里的图形分布有所不同。完美的分类器会位于右上角,即精确率和召回率都达到最大值的位置。我可以查看哪些点最接近这个理想位置,从而从精确率-召回率的角度权衡最佳点。我们将在下一个视频中更详细地探讨如何分析P-R曲线中的具体点。

另一个你应该至少熟悉的概念是准确率。准确率是利用混淆矩阵得出的一个单一数值,旨在反映真阳性和真阴性之间的权衡。

其公式为:
准确率 = (真阳性 + 真阴性) / 所有事件

在我的样本数据中,有两个点的准确率同样最高。观察这些点会发现,它们与在P-R曲线或ROC曲线上看起来是良好权衡点的位置密切相关。

通过这种分析,我可以比较准确率、P-R曲线和ROC曲线。每一种都为我提供了关于所列IDS不同配置之间比较的略微不同的可视化视角。如果我拥有多个IDS,我可以像绘制多条ROC曲线一样,绘制多组此类信息,并在准确率、P-R分析和ROC分析之间进行比较。

一旦计算出这些比率,我就可以生成所有这些指标的可视化图表,无论是准确率、精确率-召回率还是特异性。每一种都能为我提供一个不同的视角,帮助我根据特定IDS的要求确定最佳配置。

本节课中,我们一起学习了如何利用ROC曲线和P-R曲线对入侵检测系统进行定量评估。我们回顾了成本效益分析,通过样本数据计算了混淆矩阵的各项指标,并生成了相应的可视化图表。最后,我们还介绍了准确率的概念及其与其他评估指标的关系。这些工具为我们从不同角度理解和选择IDS的最佳配置提供了有力支持。

044:响应机制导论

在本节课中,我们将开始学习入侵检测系统(IDS)的响应部分。我们将了解不同类型的响应机制、相关的安全策略,以及如何将响应功能整合到企业安全能力中,以有效降低风险。


上一节我们介绍了IDS的分析引擎,本节中我们来看看IDS的第三个主要组成部分:响应机制。

欢迎来到入侵检测课程。这是第11模块。本模块我们将开始聚焦于IDS的响应部分。请记住,入侵检测系统包含三个主要部分:传感器部分、分析引擎(或特征引擎、分类器)以及响应部分。现在,我们将深入探讨不同类型的响应、响应所涉及的不同策略,以及响应可以被使用的各种方式。

在本模块结束时,我们希望您能够:

  • 区分IDS可用的各种响应机制。
  • 将响应选项与安全策略具体关联
  • 描述使用自动响应(将IDS转变为IPS的特殊响应类型)的风险。
  • 演示使用Roc和PR图、Security Onion数据的能力。
  • 使用Sguil操作和调查警报。

本模块的核心要点在于,入侵检测系统可以通过多种方式与响应团队进行通信。警报类型应支持IDS的用户,而响应行动的范围可以从被动端延伸到主动端。

在介绍视频之后的第一个视频中,我们将讨论响应需求。我们将把用户和用户类型映射到其目的,以理解如何为任何特定的IDS响应引擎设定需求。我们将在该视频中更详细地探讨这一点,但核心是关于映射和确定响应需求。

在接下来的视频中,我们将讨论响应类型,对比被动与主动响应,并主要关注被动响应选项。在此之后的视频中,我们将更直接地关注IPS部分,讨论如何对入侵者采取直接行动、修正环境以及通过入侵防御系统收集更多信息。

最后,我们将讨论使用入侵防御系统的风险和注意事项。IPS确实是一种特殊情况,但作为商业产品和免费软件产品中IDS领域日益增长的部分,了解何时以及如何使用IPS中可能采取的主动响应机制至关重要。

本模块的全部内容都围绕IDS的响应部分展开。学完本模块,您将能够将IDS的功能整合到企业级能力中,通过使用事件响应来有效降低风险。祝您在本模块学习顺利,让我们开始吧。

本节课中我们一起学习了IDS响应模块的概述、学习目标以及后续内容的安排,明确了响应机制在IDS中的关键地位及其从被动到主动的频谱。

045:响应机制要求 🚨

在本节课中,我们将探讨入侵检测系统(IDS)中响应机制的一些基本要求。我们将了解不同类型的警报、接收这些警报的用户,以及如何根据使用IDS的初衷来匹配警报类型与目的。

警报类型 🔔

上一节我们回顾了IDS的基本定义,本节中我们来看看IDS如何通过警报来体现“检测”这一行为。检测到异常后,必须通过某种方式通知用户,否则检测就失去了意义。因此,警报的呈现方式和内容信息是IDS定义的核心部分。

IDS本质上是一个分类器,它将可观察的现象分类为警报或非警报。检测行为必须将代表警报的类别,连同适当的信息,呈现给合适的用户,以便用户能根据警报采取行动。

现有的IDS系统通常会产生三种通用类型的警报:

以下是三种主要的警报类型:

  1. 实时警报:指立即通知用户。虽然快速响应很重要,但过早发出警报可能导致两个问题:一是用户在没有足够上下文的情况下收到警报,不知如何应对;二是在结合更多上下文信息后,可能发现该活动实际上是正常行为。
  2. 间隔或批量警报:这类警报会整合多个不同指标,形成更完整的取证信息后再发出。与基于数据包或进程执行的实时警报不同,间隔警报更关注会话或进程的整体运行情况,能提供更全面的信息和事件上下文,从而更确信事件确实在发生。
  3. 自动响应:除了实时或间隔警报,IDS还可以直接、自动地采取响应行动。这本身也是一种警报类型,因为它意味着系统检测到事件并将在无需人工干预的情况下进行处理。自动响应功能非常先进,以至于这类系统常被称为入侵防御系统(IPS)而非单纯的IDS。IPS可以在实时或间隔警报的基础上添加自动响应。

实时警报的优势在于能以最快速度通知用户,从而加快响应速度、缩短响应时间,以限制事件可能造成的损害。间隔或批量警报则能提供更完整的信息,不仅能指导响应者行动,还能减少实时警报可能产生的误报(I类错误)。这本质上是在实时警报与间隔警报之间进行权衡。

警报用户 👥

了解了警报类型后,我们来看看哪些用户会接收并处理这些警报信息。通常有三类用户会接收并响应IDS警报。

以下是三类主要的警报用户:

  1. 网络安全专家:这类用户通常是负责网络、防火墙和网络服务的IT安全人员。他们非常了解攻击、威胁和漏洞,并且与事件响应团队(CERT)联系紧密。然而,他们通常对组织内各项业务的资产价值缺乏深入了解。因此,发给他们的警报应包含额外信息,以帮助他们理解事件与策略及资产价值的关系。这类用户技术精湛,但与企业业务和资产的连接相对稀疏。
  2. 系统管理员:这类用户负责管理组织内的各种服务器和终端用户系统。他们更了解其系统的技术细节和资产价值,并且通常与业务部门保持一致,因为业务运行依赖于这些系统和服务的正常功能。然而,他们通常缺乏对相关系统所面临攻击、威胁和漏洞的了解,更关注系统正常运行时间和服务可用性,而非安全性。他们的工作范围通常局限于单个业务单元,激励措施是帮助业务成功,而不一定是防范安全威胁。
  3. 调查人员:这类用户通常隶属于法律、合规、安全或物理安全部门,旨在查明试图损害组织的内部或外部人员。他们负责采取法律或人力资源(HR)行动来解决事件,而非技术响应。因此,他们通常是技术理解最浅的一类用户,可能过于依赖IDS警报的第一印象,而忽略其局限性。但他们最熟悉证据相关的政策和程序,知道如何将技术数据转化为法律或HR层面的可操作事项。他们需要的警报应能指明时间、人员和活动,以便撰写法律或HR响应报告。

警报目的与用户映射 🎯

除了不同的用户类型,使用IDS警报本身也有不同的目的。我们已经在前面的模块中讨论过一些,现在让我们结合三种主要目的来回顾一下。

IDS警报主要有三种用途:

  1. 威慑:通过展示监控能力,对可疑的策略违规行为发出通知。
  2. 质量控制:用于确保安全架构配置正确且运行正常。
  3. 事件响应:用于对实际入侵采取响应行动,例如了解事件范围和规模、确定责任方或为法律行动收集证据。

现在,我们可以将不同的用户类型与警报目的进行映射,形成一个简单的矩阵。

以下是一个用户与目的映射的示例:

  • 网络安全管理员
    • 威慑:利用IDS警报制作广泛分发的公告,以产生威慑效果。
    • 质量控制:验证网络安全架构。
    • 事件响应:与CERT团队沟通,通常解决面向外部的、进入组织的网络相关事件。
  • 系统管理员
    • 威慑:在业务单元内部向个人发出警报。
    • 质量控制:主要在主机或资产层面确保单个资产的安全。
    • 事件响应:关闭攻击、进行防病毒工作、清理系统,主要在主机层面操作。
  • 调查人员
    • 威慑:利用IDS警报创建法律警告,告知用户其行为可能违法或导致HR问题(如解雇、罚款)。
    • 质量控制:从调查员角度看,可能涉及确保高管不触犯法律等。
    • 事件响应:与CSIRT团队合作,利用IDS警报建立证据链,为HR响应、法律响应或刑事响应提供法律依据。

其他用途与要求 📝

除了上述针对特定用户的目的,IDS还有一些跨组织、不特定于用户类型的其他用途和要求。

以下是IDS的一些其他重要用途:

  1. 满足法规要求:在某些监管环境中,IDS可以帮助完成受监管的任务。例如,美国国防部要求报告所有扫描活动,而基于网络的IDS擅长检测扫描,因此可以利用其IPS功能自动报告扫描,从而满足监管要求。同样,对于报告服务中断的要求,IDS也能提供帮助。
  2. 维持态势感知:在大型环境中(如国家响应团队),可使用IDS来了解当前的攻击态势。
  3. 用于培训:可以注入不同类型的攻击、创建事件,用于培训和演练响应团队。
  4. 支持法律行动:为法律行动收集证据。
  5. 用于研究:研究攻击环境、进行分类或识别不同类型的IDS。
  6. 用于测试与评估:在测试框架中使用IDS,以评估其他非IDS防御措施的效果。
  7. 监控临时暴露的漏洞:当某些遗留或已知易受攻击的服务必须运行时,使用IDS来监控其是否正遭受攻击。

总结 📚

本节课中,我们一起学习了入侵检测系统响应机制的核心要求。我们探讨了三种主要的警报类型(实时、间隔/批量、自动响应)及其优缺点,识别了三类主要的警报用户(网络安全专家、系统管理员、调查人员)及其不同需求。我们还通过映射矩阵,了解了如何将警报目的(威慑、质量控制、事件响应)与不同用户相匹配。最后,我们介绍了IDS在满足法规要求、维持态势感知、培训、研究等方面的其他重要用途。理解这些要求,对于有效部署和利用IDS来为组织提供价值并降低风险至关重要。

046:响应类型分类 🛡️

在本节课中,我们将要学习入侵检测系统(IDS)的响应类型。我们将详细探讨被动响应与主动响应的区别,并深入了解被动响应的不同类型及其相关问题。通过本课,你将理解如何根据不同的警报信息,为不同类型的用户提供定制化的响应。


在上一节中,我们讨论了IDS的目的、用户以及部署IDS的一些基本要求。本节中,我们将更深入地探讨响应类型本身。

IDS可以根据产生的警报采取多种行动。到目前为止,本课程中最常见、我们接触最多的类型是提供触发警报事件的相关信息。一个IDS警报可以包含多种信息。

最基本的信息通常包括警报类型和一些关于来源的基本信息。例如,如果是网络IDS,可能是IP地址;如果是基于主机的IDS,可能是进程名或登录用户。然而,可以通过添加额外信息来丰富这些响应,使响应使用者能够更快地采取行动,而无需自行查找信息。

需要明确的是,当IDS在收到警报后执行额外进程以丰富信息时,它确实在执行一些直接操作。但这通常不被视为IPS会采取的基于响应的直接行动,因为这些额外信息属于被动响应的一部分。它并没有改变环境或导致环境发生变化。

一个例外情况是,如果丰富信息的行为导致了环境的重配置或从环境中收集了额外信息(例如,在发现可疑事件后,原本基于网络流数据的IDS突然开启全包捕获功能)。这更偏向IPS的范畴。但如果丰富信息是基于静态表或外部查询(如Whois数据库),我们仍将其视为被动响应模式,因为它没有在基础设施内部采取会导致事件差异或缓解的行动。

IPS基于警报采取的直接行动则多种多样,从常规的阻断连接、关闭连接,到环境重配置,甚至延伸到组织外部进行“反击”以影响攻击者。我们将在下一个视频中更详细地探讨IPS的世界。


被动响应选项 📊

本节中,我们将更多地讨论被动响应选项。首先需要明确,即使采取了被动通知,这并不排除同时采取其他行动。被动监控和存档应始终是主动响应模式的一部分。因此,即使我们计划采取主动响应(如下一视频所述),也应进行某种形式的记录和警报,这属于被动响应选项。

在考虑被动响应选项时,首先要思考的是通知发生的位置是本地还是远程。

  • 本地响应:指在分析引擎本地,即事件被检测到的同一系统或区域内进行通知。例如,打印到纸张或屏幕。这种方式较少受到拒绝服务和信息丢失的影响,因为它不依赖网络或其他外部基础设施。当然,这要求响应者就在系统本地,因此在拥有多个分散IDS的大型企业中效果不佳。
  • 远程响应:指检测发生后,向不同系统或远程系统的用户发送通知。这种方式虽然可能面临拒绝服务或信息丢失的风险,甚至可能因为阻塞IDS的直接响应而导致第二类错误,但它更适合将警报集中发送到响应者所在的中心位置。

如果你有多个不同的IDS,并且它们需要将信息发送到单一节点,那么本质上就需要某种聚合器或聚合功能。这个功能会接收来自多个IDS分析引擎的响应,并将其置于上下文中,以便响应团队能够审查所有警报并进行关联分析。

市面上有支持工具来完成这项工作,例如IBM的Arcite或Splunk等工具,它们可以从多个来源获取信息,将其置于统一时间线,并运行分析以创建更高级别的关联。


为正确的响应者提供正确的数据 📨

在所有通知中,将正确的数据提供给正确的响应者至关重要。这意味着从IDS分析引擎输出并进入响应的数据,必须包含特定用户类型为提供响应所需的信息。

因此,单个警报可能触发多种不同类型的被动响应警报或行动:

  • 技术团队:可以向CERT团队、网络管理员或安全专家发送关于情况的详细技术信息。
  • 调查人员:可以向调查员类型的用户发送基于同一警报的另一组信息,以开始调查政策违规情况。
  • 证据存储:可以以符合法律要求的方式存储证据,以便采取人力资源或法律行动。
  • 管理层:可以将同一警报转化为管理仪表板上的一个信号灯图表或标记,供只想知道当前是否有事件正在被响应的管理者了解态势。

如你所见,单个警报不一定只生成一组信息。我可以根据警报为响应中可能需要采取行动的每个用户类型定制信息。

警告:一旦开始将同一警报发送给许多不同的用户以尝试执行多种响应行动,可能会在这些不同用户类型之间产生协调问题。请记住,不同IDS信息用户的目标和目的有时是冲突的。例如,一个旨在威慑并希望提供可能警示攻击者他们正被监视的信息的人,可能与试图为起诉收集证据的调查员目标相悖。

因此,如果要为多个响应者提供正确的数据,必须确保存在某种标准操作程序,以便在处理和响应特定事件时协调所有响应。


丰富的IDS警报 🔍

当前IDS商业工具和研究中最重要领域之一就是丰富IDS警报的概念。其核心思想是,你可以利用IDS警报中的信息,不仅收集外部信息,还能运行分析,从而在更广泛的信息范围内触发额外的关联和信息融合。

丰富信息的工具多种多样,从简单的IP地址反向查询,到更高级的应用,如使用Splunk分析将警报与历史信息结合,以了解之前发生的一切。你可以将这些不同类型的警报映射到数据存储,创建信誉服务,或包含许多更复杂的项目来丰富IDS警报本身。

这是当今IDS产品开始关注的方向。其他类型的大数据分析与基于云的分析之间的交互,是我们看到丰富IDS警报的另一个发展方向。我们将在第14模块讨论IDS未来走向时进一步探讨。


分布式IDS通知与聚合 🧩

当我们谈论分布式IDS通知时,如果有许多不同的IDS点生成警报,那么整合不仅有用,甚至可能是必需和必要的。

正如我们在Security Onion中看到的,Snorby、Sguil、ELSA等控制台就是例子,它们可以接受多种不同类型的警报,并将其组合在一起,以便你能够调查底层数据包结构,以及更适合响应核心警报的内容。

因此,从实验中获得的部分价值在于,当你拥有分布式或多个IDS向控制台报告时,如何利用这些信息进行更深层次的分析,并开始理解特定事件的根本原因。这些都是组合和丰富分布式IDS信息以辅助响应的工具和示例。


不同类型IDS警报的关联挑战 ⚙️

在我们讨论分布式IDS的很多内容时,我们假设生成的是相同类型的警报。但是,当你拥有许多不同类型的IDS(基于主机的、基于网络的、基于签名与基于异常的),并且它们具有不同的基础速率时,情况会如何?有些是基于网络流和会话的,有些是基于数据包的,还有些是基于内存、Tripwire或系统内其他活动的。

当你试图关联这些不同类型的警报时,可能会非常具有挑战性。确保所有警报都能到达很重要,但这带来了额外的风险。使用多种不同类型的IDS,然后试图确定从一处获得的网络警报如何与在另一处发现的主机活动相对应,这在今天并非自动化过程。你不能简单地购买一个产品就说“把我所有的IDS连接起来,给我一个事件全貌”。这是研究领域的一部分,是研究社区正在探索的方向,但在商业产品中还不多见。许多大数据分析的根本基础,正是获取所有这些不同类型的数据并寻找它们之间的关联,以便更好地响应整个事件,而不仅仅是从一个特定系统获得的指示。


外部响应服务 🌐

最后,还有一种思路是将你的响应转发到组织外部,交给其他类型的响应或网络管理服务。有许多组织会接收你所有的IDS警报,在你的组织外部进行处理,并提供关于应采取何种响应行动的信息。

使用响应服务而非自己处理所有事务的价值在于,响应服务通常可以评估警报以确定哪些是第一类错误。因此,我们之前讨论的减少第一类错误或误报的所有额外工作,基本上可以外包给组织外部。他们还可以比较你从其他外部客户那里获得的警报,并执行预定的程序来帮助保护你的组织。例如,在DDoS攻击期间进行带宽限制。

此外,你可能不是为了解决事件,而仅仅是出于信息目的,决定将警报发送到集中的CERT,并在分布式企业内协调响应。这在政府组织中很常见,例如美国国土安全部的US-CERT,就是一个中心化组织,他们不采取直接行动,而是接收警报并向各个部门和机构提供建议和响应行动。

因此,使用响应服务是提升聚合水平的一种方式,它汇集来自多个组织的警报以了解正在发生的情况。另一个例子是“网络安全望远镜”这样的组织,它接收来自许多不同组织的自愿提供的防火墙和IDS记录,并提供互联网范围内攻击类型的视图或态势感知。这对于确定针对你组织的攻击是定向攻击,还是你只是众多受害者之一(并未被特别针对)非常有价值。

这些都是响应服务利用IDS整合跨多个组织信息的不同方式。


总结 📝

本节课中,我们一起学习了IDS的被动响应类型。我们了解到,被动警报可以以多种方式使用:创建针对不同用户类型和响应选项的定制化信息;可以跨不同类型或分布式的IDS进行聚合;还可以将其发送到组织外部,以便在多个组织之间进行态势感知和整合。在下一视频中,我们将深入探讨当希望IDS自身采取行动时的更多具体细节。

047:入侵防御系统(IPS) 🛡️

在本节课中,我们将要学习入侵检测系统(IDS)中更主动的响应选项,即所谓的入侵防御系统(IPS)。与仅被动检测和报告攻击的IDS不同,IPS能够采取主动措施来缓解或阻止安全事件的发生。我们将探讨不同类型的自动化响应措施,并了解它们如何运作。

上一节我们介绍了入侵检测的基本概念,本节中我们来看看更主动的防御系统——IPS。

主动响应的三种类型 🎯

IPS通常提供三种主动响应类型,按攻击性从强到弱排列如下:

  1. 针对入侵者采取行动:在自身管理边界之外对攻击者进行反击。
  2. 修改环境:在自身管理边界内,根据检测到的攻击改变系统环境以阻止攻击。
  3. 收集更多信息:改变环境以收集更详细的攻击信息,此操作对入侵者不可见。

“针对入侵者采取行动”最为激进,因为它超出了自身的管理控制范围。“修改环境”是在自身可控范围内采取直接行动。而“收集更多信息”是“修改环境”的一个子集,但其改变对入侵者是隐蔽的。

针对入侵者采取行动 ⚔️

这是最激进的响应方式,即直接反击攻击者。许多组织认为这是一种“报复”手段,但这种方式风险极高。

以下是需要考虑的几个关键点:

  • 攻击源可能被伪造:入侵者可能利用其他受害系统发动攻击,你的反击可能伤害到无辜的第三方。
  • 增加自身风险:自动化反击可能被入侵者利用来攻击他人,导致你的组织面临拒绝服务(DoS)攻击或法律责任的更高风险。
  • 自动化与手动执行的权衡:如果组织计划手动执行此类反击,那么将其自动化可以加快响应速度。但如果手动都不会采取的行动,则绝不应该将其自动化。

即使商业IPS系统不直接提供“反击”选项,它们通常也允许调用外部脚本或程序。这意味着你仍然可以配置系统,在检测到攻击时执行自定义的反击操作。

有时,IPS会采用用户驱动的自动化响应。系统准备好反击程序,但需要用户点击确认来发起。这让人为高风险操作承担责任,是一种更谨慎的做法。

历史上曾有过特殊案例,例如向攻击者的家人发送邮件告知其攻击行为,从而有效阻止了攻击。这说明了此类外部直接行动的多样性。

何时考虑外部自动化响应? ⚖️

在决定实施边界外的自动化响应时,需满足以下条件:

  • 攻击速度极快:人工响应无法跟上攻击节奏。
  • 针对极高价值资产:仅当核心、高价值资产面临风险时才启用。
  • 响应条件明确且一致:每次满足特定条件时都执行,无需额外评估。
  • 最小化附带损害:响应行动应精准,避免波及无辜用户或系统。

收集更多信息 🔍

这是一种常见的IPS响应,即在检测到可疑活动时,自动开启更多信息收集功能。

以下是具体应用场景:

  • 基于网络流(Netflow)数据触发数据包捕获:平时不开启全量抓包以节省资源,仅在特定警报触发时开启,获取更详细的流量信息。
  • 触发主机级信息收集:当网络IDS发现某主机可疑时,自动在该主机上开启详细的系统调用跟踪或日志记录功能。

收集更多信息的目的通常是确定入侵的来源或目标,以便制定更有效的响应策略。但需注意,开启更多监控功能本身也可能增加新的攻击面,或消耗过多系统资源导致拒绝服务。

转移攻击(诱捕系统) 🎣

另一种常见响应是将已识别的攻击流量,在不被入侵者察觉的情况下,转移到一个专门设计的、无害的“诱捕”系统中。

  • 蜜罐(Honeypot)/蜜网(Honeynet):通常作为主要诱饵主动吸引攻击者。
  • 鱼缸(Fishbowl):并非主动吸引攻击者,而是在检测到针对真实系统的攻击后,将攻击流量转移至此进行观察和分析。其优点是不会使自身成为更显眼的靶子。

转移攻击有助于:

  • 追溯攻击者来源。
  • 收集攻击证据。
  • 分析攻击者意图和下一步可能的目标。

修改环境以阻断攻击 🚧

IPS可以利用生成的警报,自动修补已检测到的漏洞或关闭相关服务。这对于因遗留系统等原因无法永久关闭的漏洞尤其有用。

其工作流程是:IPS识别出正在被利用的漏洞 -> 自动采取临时措施(如关闭服务、应用虚拟补丁) -> 为管理员争取时间,以决定是否实施永久性修复。

风险提示:攻击者如果知道你采用这种策略,可能会故意触发大量警报,导致系统频繁自动关闭服务,从而对你自己的组织造成拒绝服务攻击

自适应响应(调整IPS自身) 🔄

这是一种特殊的“修改环境”,即IPS根据警报和响应历史,自动调整其自身的配置

这可以表现为:

  • 学习并自动化重复的响应:如果某种手动响应总是被采用,IPS可以学习并将其转化为未来的自动化响应。
  • 调整检测灵敏度:根据反馈,自动调整分析引擎,减少误报(Type I错误)或漏报(Type II错误)。
  • 基于机器学习的异常检测系统正是这种原理,它们从历史活动和事件分类中学习,不断优化检测模型。

这形成了一个反馈循环(Feedback Loop)IPS输出 -> 响应行动 -> 反馈 -> 优化IPS配置,从而随时间提高IPS的有效性。

但需警惕,如果自动化程度过高,攻击者可能通过精心构造的攻击来“训练”你的IPS,使其朝着有利于攻击者的方向调整。

总结 📝

本节课中我们一起学习了入侵防御系统(IPS)的核心功能。我们了解到,IPS的主动响应主要分为三大类:直接对抗入侵者、修改自身环境以及收集更多信息。具体措施包括自动化反击、转移攻击流量、自动修补漏洞以及通过自适应学习优化自身配置。

关键在于,IPS本质上是一个强大的自动化执行器,几乎可以将任何你能想象到的手动响应操作自动化。然而,正如我们将在下一节深入探讨的,这种强大的能力也伴随着显著的风险和需要注意的事项。赋予系统自动行动的权力,必须经过审慎的评估和设计。

048:16_IPS实施风险与注意事项 🔐

在本节课中,我们将要学习入侵防御系统(IPS)在实施过程中可能面临的各种风险与注意事项。上一节我们介绍了IPS及其可采取的主动响应类型,本节中我们来看看这些自动化响应可能带来的潜在危害,并探讨如何安全地配置和运行IPS。

核心风险:将控制权交给对手

关于IPS,最需要记住的一点是:每当采取任何自动化行动时,你就在一定程度上将IPS的控制权交给了对手。

如果你要采取自动化响应,意味着该响应的触发将来自对手的行动。对手的行动启动了自动化响应,这意味着对手实际上控制了自动化响应何时发生。一旦对手了解到IPS的特性,知道IPS会根据其行动做出何种反应,对手就可以利用这些行动来驱动IPS采取其期望的响应。这就像对手获得了从外部采取有限内部行动的机会。

因此,你需要理解:IPS的响应选项越具有侵入性、越任意,在对手手中就可能越危险。

各类自动化响应的具体风险

以下是IPS可能采取的各类自动化响应所对应的具体风险。

1. 反击攻击的风险

反击攻击是我们上一节讨论过的最具攻击性的自动化响应。

  • 攻击无辜受害者:被标记为攻击源的系统很可能不属于攻击者,而是一个中间节点。如果我们不假思索地攻击网络结构中的上一跳,很可能在攻击一个无辜的受害者。
  • IP欺骗引发连锁攻击:有时,驱动IPS行为的IDS警报可能是IP欺骗的结果。如果入侵者伪造了攻击源,IPS可能会对属于该伪造IP地址的站点采取行动。这可能导致受害者攻击另一个受害者,甚至引发额外的攻击。
  • 法律风险:如果你反击的组织并非真正的入侵者,或者入侵者只是该组织内部的 rogue insider(恶意内部人员),你可能会面临刑事指控或民事诉讼,被攻击的组织可能向你寻求法律赔偿。

案例:互联网早期曾发生过真实案例。finger协议中存在一个漏洞(finger bug),入侵者可以利用它列出系统当前运行的所有进程。针对此漏洞出现了自动化反击脚本,一旦检测到此类攻击,就会自动尝试从“攻击者”机器收集相同信息。当多个站点安装了这种自动化反击脚本后,入侵者只需将源IP地址伪造成另一个也安装了该脚本的受害者站点,就会在两个无辜的受害者之间引发持续的、相互的finger命令攻击,形成一种服务攻击。

2. 收集更多信息的风险

即使只是使用IPS收集更多信息这样简单的操作,也可能带来风险。

  • 资源耗尽:对手可以操纵各种警报,以淹没信息收集资源。例如,假设IPS检测到基于流的攻击时,会开启对目标的详细数据包捕获并存储以供分析。如果对手在整个基础设施中对每个系统重复发起相同的攻击,就会为组织内的每个源和目的开启全量数据包捕获,从而耗尽组织资源。
  • 制造烟幕:IPS可以被用作烟幕,掩盖其他攻击。在银行业有过案例:IPS系统一旦检测到基于网络的攻击,就会收集更多信息,从而用来自大量站点的详细信息淹没分析师。与此同时,一个不起眼的、低强度的攻击正在悄悄将资金转出系统。如果没有其他攻击活动作为烟幕,这个转账攻击本可能被发现。
  • 导致拒绝服务:上述所有情况最终都可能导致对IDS本身,甚至对组织内部服务的拒绝服务。

3. 转移攻击的风险

这种情况下,IPS识别出对关键资产的攻击,不是阻止它,而是将其转移到一个“鱼缸”(隔离观察环境)进行分析。

  • 误伤合法用户:这可能是合法客户,而攻击检测是误报。现在,你将合法客户从关键资产或常规系统转移走了,可能造成错误或至少提供了非预期的服务。
  • 成为新的攻击跳板:如果入侵者知道存在这种转移机制,他们可以利用被转移到的系统作为跳板,在组织内部发起额外攻击。这个“鱼缸”可能比入侵者通常能到达的位置更深入组织内部。
  • 允许攻击持续:无论你将攻击转移到“鱼缸”还是其他地方,你都没有阻止攻击,而是允许它继续。这意味着在你试图记录攻击要素的同时,仍然可能允许攻击者访问你基础设施的部分区域。

因此,要成功实施转移,你必须非常了解攻击者的能力、动机以及他们将如何利用当前情况。如果你对特定入侵者的操作方式有很好的把握,将其放入“鱼缸”可以给你更多信息。但如果对任何入侵者开放,且你不了解其能力或动机,这将是一项高风险行为,相当于给一个能力未知的入侵者提供了访问你内部另一个系统的途径。

4. 自动阻断的风险

这种情况下,检测到入侵后,IPS只是简单地关闭该特定连接或阻断它(例如通过更改防火墙规则或重置连接)。

  • 阻断合法用户:入侵者如果知道某个组织拥有合法访问权限,只需操纵并伪造进入该组织的IP地址,就能导致IPS阻断一个合法用户。
  • 无法阻止DDoS下游影响:自动阻断可能无法阻止拒绝服务攻击的下游影响。如果在防火墙处阻断攻击,但攻击耗尽了防火墙资源,仍然可能导致对其余基础设施的拒绝服务。
  • 误报与漏报问题
    • 误报(Type I Error):如果IDS有合理的误报率,那么每次误报都会拒绝为某个合法的普通连接提供服务。
    • 漏报(Type II Error):如果你完全依赖自动阻断而不是调查事件,那么当你漏掉一次攻击时,你可能永远无法发现正在发生另一种攻击。

5. 重新配置基础设施的风险

当检测到攻击时,不是阻断或转移,而是自动重新配置基础设施的安全参数以帮助避免攻击影响。

  • 配置权交给对手:虽然警报通常会导致安全收紧,但对手可以利用这种自动重新配置来了解:当安全收紧过度时,防御者很可能会手动撤销它。对手可以利用这种人为行为,在基础设施中打开额外的漏洞。
  • 导致IPS自身失效:如果重新配置阻止了可观测数据到达IPS,入侵者实际上就导致了IPS本身变得无效。
  • 引发拒绝服务:关闭漏洞本身可能导致拒绝服务,甚至导致IDS本身关闭。

6. 自适应反馈/响应的风险

这种类型下,IPS会利用处理事件的结果来改变响应配置(自适应反馈),或通过反馈循环改变检测引擎本身的概念。

  • 直接暴露IPS配置:这实质上为入侵者提供了直接访问IPS配置的途径。入侵者可以了解未来的攻击将触发何种行动以及如何执行。
  • 缓慢漂移配置:对于反馈循环,情况可能更隐蔽。入侵者可以非常缓慢地行动,通过学习算法逐渐漂移配置,使其在真正发起更严重的攻击时能保持在雷达之下。
  • 系统状态未知:所有这些自适应反馈和重新配置可能使系统处于一种未知状态。很难确切说出在任何特定时间点IDS或IPS被配置做什么。

降低风险的策略

为了限制所有这些自动化行为带来的风险,你需要确保以下几点:

以下是降低IPS自动化响应风险的关键策略。

  • 严格约束IPS行动:IPS应该只做人类响应者在每次检测到相同条件下会做的事情。不应存在人类不会采取而IPS却可以采取行动的情况。
  • 确保行动可快速审查和撤销:如果IPS的行动可以被快速审查并在必要时撤销,就可以限制其采取自动化行动所带来的风险。
  • 调整响应级别:IPS的响应攻击性应该是可调的。有时可能需要非常激进的IPS响应,但大多数时候你可能不希望这样。基于感知到的威胁,你可以使用IPS功能来动态调整自动采取行动的速度。
  • 慎用高风险操作:可能导致重大损失或责任的行为应非常谨慎地使用。如果可以预见到重大损失或责任,应对使用任何自动化行动持非常谨慎的态度。IPS可以创建脚本来准备自动化行动,让人类能够更快速地执行,但在涉及重大损失或责任的情况下,IPS自动采取行动应极其谨慎。
  • 持续评估,切勿“设置即忘”:在任何情况下,都不应将IPS视为“设置即忘”的设备。使用IPS来限制风险的底线在于:持续评估IPS的有效性,以及IPS保持在防御者控制之下而非对手控制之下的能力。

总结

本节课中,我们一起学习了实施入侵防御系统(IPS)时需要考虑的各种风险与注意事项。核心在于理解,自动化响应虽然快速高效,但也意味着将一定的控制权交给了对手。我们详细探讨了反击攻击信息收集攻击转移自动阻断重新配置自适应反馈等各类响应方式可能带来的具体危害,例如攻击无辜目标、资源耗尽、成为攻击跳板、误伤合法用户以及法律风险等。最后,我们强调了降低风险的关键策略:严格约束IPS行动、确保行动可审查撤销、根据威胁调整响应级别、慎用高风险操作,并持续评估IPS的有效性,绝不能将其视为“设置即忘”的设备。记住,使用任何IPS响应时,都应尽可能将其保持在防御者的控制之下。

049:桌面演练导论

在本模块中,我们将通过一个高度互动和创造性的桌面演练,来深入理解使用入侵检测系统的实际挑战。我们将学习如何配置抽象的IDS、制定攻击计划、评估警报并推测攻击者目标,同时为后续的量化分析准备数据。

🎯 模块概览与目标

欢迎来到入侵检测课程的第10个模块。本模块的形式将与之前及之后的模块截然不同。我们将花费大量时间进行一项桌面演练,以帮助我们理解在实际环境中使用入侵检测系统(IDS)的真正难度,并尝试推断潜在攻击者的目标。

🔄 模块形式与要求

上一节我们介绍了本模块的总体目标,本节中我们来看看其具体形式和参与要求。

本模块高度互动,需要每日参与才能成功达成演练目标。这是一个基于团队合作的练习,本周你们将与小组成员协作,尝试处理IDS警报和攻击,以完成演练目标。

以下是本模块的几个关键特点:

  • 创造性练习:达成目标的方式多种多样,鼓励创造性的攻防思路。
  • 非技术性抽象:本次练习不基于具体技术。我们不会使用Security Onion或配置真实的IDS,而是抽象掉具体的技术语法,专注于理解使用IDS的核心逻辑。
  • 回合制角色扮演:整体框架类似于回合制角色扮演游戏,但在Blackboard平台上的互动会比往常更加频繁。

📚 核心学习目标

尽管我们希望本周的练习充满趣味,但其背后有明确的学习目标需要达成。

到本模块结束时,你应该能够:

  1. 理解如何在不同的IDS方案间进行选择,并了解决策在受限环境下的可能结果。
  2. 根据高级原则配置一个抽象的IDS,从而对在实际环境中操作真实IDS形成初步预期。
  3. 为达成特定目标制定攻击计划。公式:攻击计划 = 目标 + 步骤 + 规避策略。本课程的重点不是学习攻击,但理解如何攻击及规避IDS检测是理解IDS工作原理的重要部分。
  4. 评估抽象的IDS警报以选择适当的响应,并假设攻击者的目标。这正是本练习的核心难点之一:仅以IDS作为主要触发器来判定攻击目标的困难性。

✅ 完成模块的任务清单

为了顺利完成本模块,你需要完成以下几项任务。

以下是具体的任务列表:

  1. 阅读演练说明:仔细阅读桌面演练的指导文件,了解其运作方式。
  2. 观看教学视频:观看本视频之后关于演练后勤细节的教学视频。
  3. 积极参与演练:你必须在每48小时内至少发帖一次,但如果可能,最好每天参与。代码示例(参与频率)if (time_since_last_post > 48h) { required_to_post(); }
  4. 完成问题集与实验:在演练间隙,需要完成模块10的问题集和实验,即在Security Onion中评估正常行为。这旨在为下周创建ROC和PR图表进行量化评估准备数据。核心概念:建立行为基线。

⚠️ 重要注意事项

本模块将非常不同,强度高且耗时。请尝试在参与演练和完成Security Onion相关工作之间平衡你的时间。

本周没有额外的阅读材料,也没有额外的讨论。因此,这是一个需要处理事项较少但每项强度更高的模块。祝你在本模块中顺利,请继续查看如何开始的详细说明。

📝 总结

本节课中,我们一起学习了第10模块——桌面演练的总体安排。我们了解到这是一个以团队为基础、高度互动且富有创造性的非技术性练习,旨在通过抽象化的方式,让我们深入体验配置IDS、规划攻击、分析警报和推断攻击者目标的完整过程。同时,我们还需要在Security Onion中完成建立行为基线的实验,为后续的量化分析打下基础。请准备好迎接这个紧张而充实的一周。

050:专项课程介绍

概述

在本节课中,我们将要学习约翰霍普金斯大学《入侵检测》专项课程的整体介绍。课程讲师Jason Carlson将阐述课程的目标、结构以及涵盖的核心主题,帮助你了解如何通过本课程掌握入侵检测与防御系统的关键知识与技能。


大家好,我是Jason Carlson。我是约翰霍普金斯大学应用物理实验室的一名高级网络安全工程专家。我在JHU工程学院教授网络安全硕士课程,同时也是一名拥有28年军事委员会经验的军官。我的专长领域包括信息保障、任务系统、网络安全工程、其他领域、发射分析以及入侵检测。

我开发了这门入侵检测课程。该课程被分解为几个专项领域。每个专项领域包含七个模块,通过讲座、阅读材料、视频、测验和作业来呈现入侵检测的主题。你可以学习所有专项,也可以选择你希望深入了解的特定入侵检测领域。

这门入侵检测课程探讨了将网络和基于主机的入侵检测与防御系统作为组织整体网络安全态势和威胁应对策略的一部分。我们将研究各种方法、模型、分析、技术、框架和算法,以理解在企业遗留IT系统、运营技术、云技术以及异构和同构的服务环境中部署IDS/IPS的实际问题。

在入侵检测专项课程中,你将学习以下内容:

以下是关于检测性能的核心概念:

  • 真阳性假阴性
  • 精确率召回率
  • 权衡误报漏报的图表。

以下是关于系统部署与管理的主题:

  • IDS/IPS的架构、配置和报告。
  • 根据需求和数据进行调优基线建立,以理解和区分异常活动或良性活动。

以下是关于数据收集与分析的主题:

  • 用于态势感知的可观察收集点。
  • 网络流特征分析。
  • 组织路由与数据包检查。

以下是关于威胁与防御的主题:

  • 针对主机静态活动和网络动态活动的攻击与威胁类型及其应对措施。

课程主题将包括但不限于以下内容:

以下是具体的技术与工具:

  • IDS/IPS的产品、架构和组件配置。
  • 基于主机和基于网络的IDS与IPS。
  • 网络分析。
  • 入侵检测技术。
  • 上下文感知与机器学习。
  • Linux防火墙表与简单防火墙。
  • 传感器与响应策略。
  • 网络数据包分析。
  • 图论。
  • 数据匿名化服务。
  • 接收者操作特征曲线。
  • 网络数据包分析研究。

我的目标是让这门Coursera课程的学习过程充满乐趣。我希望学习是一次愉快、有趣的体验,同时又能引人入胜。我将把复杂的概念转化为易于理解的可管理学习模块。

我希望学生们能够运用课程中提供的威胁检测理念,并将其转化为职业生涯中的专业技能。感谢大家对这门Coursera课程的关注。希望大家在Coursera平台的入侵检测课程中学得愉快,收获满满。


总结

本节课中,我们一起学习了《入侵检测》专项课程的总体介绍。我们了解了课程讲师Jason Carlson的背景,明确了课程的结构划分与学习方式,并预览了将从检测性能评估、系统部署、数据分析到威胁应对等一系列核心主题。本课程旨在将复杂概念转化为易于掌握的模块,为你的网络安全职业生涯打下坚实基础。

051:机器学习导论 🧠

在本节课中,我们将学习机器学习的基础概念。我们将了解什么是机器学习与数据挖掘,掌握该领域的一些关键术语,并初步认识几种核心算法与常用工具。课程最后,我们将深入探讨神经网络、支持向量机和聚类算法。


大家好,欢迎来到第11模块,这是关于机器学习的两个模块中的第一个。

本模块旨在介绍机器学习。我希望在模块结束时,你能理解什么是机器学习,什么是数据挖掘,以及该领域的一些关键概念。这样,当你与该领域的其他人交流时,你会对他们使用某些术语时的含义有所了解。

你还应该了解该领域中一些可用的基本算法。算法数量众多,我不会详细涵盖所有算法,但你会对其中一些关键算法以及该领域常用的一些工具有所了解。现在有许多工具可用,因此你无需从头开始编程,也无需理解所有底层数学原理。你可以直接使用工具,告诉它“我想构建一个决策树”,然后让工具为你完成。

此外,在模块结束时,我们将深入探讨几种算法,以便你更详细地理解它们。具体来说,我们将稍微了解一下神经网络、支持向量机和聚类算法,以便你更深入地理解它们。


基于以上内容,本模块有四个主要视频供你学习。

以下是视频内容列表:

  • 第一个视频从非常高的层面介绍机器学习概念。
  • 第二个视频是我提到的关于神经网络的深入探讨。

本节课中,我们一起学习了机器学习模块的总体目标与结构。我们了解到,本模块旨在介绍机器学习与数据挖掘的基本概念、关键术语、核心算法及常用工具,并承诺后续会对神经网络等算法进行深入讲解。接下来,我们将从第一个视频开始,正式进入机器学习的世界。

052:机器学习基础概念精讲 🧠

在本节课中,我们将对机器学习进行一个非常简要的高层次介绍。我们将了解什么是机器学习、其背后的一些基本概念,以及机器学习所用数学中的一些基本思想。

什么是机器学习?🤔

机器学习最早由亚瑟·塞缪尔于1959年定义,它是一个研究领域,赋予计算机无需明确编程就能学习的能力。他不仅提出了这个定义,还进一步创建了一个机器学习算法。具体来说,他开发了一个下跳棋的程序,其学习下棋的方式是通过与自己反复对弈,直到学会最终获胜的最佳策略或走法。事实上,这个程序后来击败了康涅狄格州的跳棋州冠军。

自那时起,已经开发了许多不同的机器学习算法,我们将在本模块中更详细地介绍其中的几个。

我们还注意到,人们使用了多个不同的术语。我一直在使用“机器学习”,“数据挖掘”也是一个非常常用的术语。“人工智能”过去经常使用,但现在某种程度上更倾向于使用更明确的“机器学习”和“数据挖掘”术语。另一个你经常会看到的术语,尤其是在工业界而非学术界,是“分析”或“数据分析”。在本模块中,我将把这些术语基本互换使用。

机器学习的基本概念 📚

机器学习中有哪些基本概念?我将重点介绍两个关键概念。

第一个是学习算法。这主要涉及你是在进行监督学习还是无监督学习。关键在于你拥有什么样的数据,这将影响你可以使用什么算法,从而影响你采取的学习方法。我稍后会详细解释。

第二个关键概念是梯度下降。这与局部最小值全局最小值这些术语相关。这是学习背后数学原理的一个非常关键的概念。我将更详细地解释这些术语的含义,但不会深入其背后的数学细节。需要理解的是,这个概念实际上支撑了你将看到的所有学习方法。

学习算法详解 🧮

那么,我所说的学习算法具体指什么?本质上,你的学习算法,无论你使用哪种学习方法,都可以分为两类:监督学习无监督学习

监督学习中,你有一个模型或需要找到一个模型来解释你的标记数据。例如,我们看到的林肯实验室数据,所有这些数据我们都知道其真实情况——我们知道数据是正常的还是攻击。因此,我们拥有标记为“正常”或“攻击”的数据。我们可以使用监督学习方法,因为我们可以告诉算法“是的,你预测对了”或“不,那不对”,算法可以利用这些反馈来学习并提高预测能力。

相比之下,无监督学习没有标记数据。它的方法是在数据中寻找模式。它是否能检测到一些相似性或聚类,从而根据数据空间中的某些类别或特征,说这部分数据是自相似的,而另一部分数据基于其他特征也是自相似的?然后我们可以利用这些发现来进一步了解我们的基础数据集。

实际上还有第三种方法结合了前两者,即半监督学习。在这种情况下,你使用无监督学习,但拥有一些标记数据,并能够利用这些标记数据来帮助无监督学习算法进行调整,或引导其朝着正确的总体方向前进。

梯度下降与优化 🏔️

这就是学习算法。那么关键术语“梯度下降”是什么意思?这主要关注学习算法从概念基础上是如何学习的。

想象你正在处理一个二维空间,我们称之为 θ₀θ₁。你可以将这个空间映射出来,你有一些输入值,根据 θ₀θ₁ 的值,你会得到某个结果。这个结果要么接近你的预期,要么不接近,这被认为是你的损失函数误差函数。假设这个轴是 J,它是 θ₀θ₁ 的函数。

你想要做的是最小化你的误差或损失。因此,你最终想要学习到的点是这里的 θ₀θ₁,也就是最低点。这个最低点也被称为全局最小值,这确实是你的最优解。它是最优的,因为它具有可能的最小误差。

算法使用梯度下降实际工作的方式是,你从某个点开始。你随机选择一个起点,即 θ₀θ₁ 的一些初始值,以及数据集中的一个起始样本。假设那个样本从这里开始。从那里开始,随着算法学习,它实际上在做的是梯度下降。它正在下山,试图找到误差最小的点。

如果你把它想象成一座山,你在山上,想要下到山谷深处,但你可能因为树木或地形轮廓而看不到它,你会采取什么方法?你可能会采取的方法是,你的下一步将是最陡下降的方向,因为你知道你要下到山谷的最深处。所以从这里,你可能会走到这里。那可能是你的下一步。然后你重复这个过程,现在你更低了,你下一步要采取什么步骤?你想继续下降,你永远不会往回走,因为那会增加你的误差,使你离问题空间的最终解决方案更远。也许你的下一步是走到这里,然后最终下到这里。

这是针对全局最小值的情况。问题之一是你有一个很大的空间。可能发生的情况是,你可能会被困在某个实际上不是全局最小值的地方,但由于这种梯度下降方法,你无法脱身。这被称为局部最小值。例如,这里的空间。它不是最优的,但它已经降到了空间的很低处,从那里开始,你往任何方向走都意味着要往回走,而由于你只能下降,所以你被困住了,无法摆脱那个最小值。

例如,如果你的起点恰好在这里,你很可能会采取这样的步骤,然后最终被困在局部最小值中,而不是找到最终的答案。因此,这是使用机器学习技术时需要考虑的一些问题,你需要确保你选择的变量、你调整的不同参数都以某种方式设置,以尝试找到这个全局最小值,而不是陷入局部最小值。

影响梯度下降的因素 🔧

那么,有哪些因素会影响你的梯度下降方法,并可能根据你特定学习算法的不同运行给出不同的结果呢?

以下是几个关键因素:

  • 梯度下降类型:你使用的是批量随机还是小批量梯度下降?例如,批量方法意味着你同时处理大量输入样本,基于所有样本的组合来决定你的下降步骤。随机方法则一次处理一个样本。小批量方法则每次使用一小部分样本,例如每次10个样本。
  • 起始位置:这可能是基于 θ₀θ₁ 的随机变量,这些通常在开始时随机设置。你的初始样本也会决定你在整个空间映射中的起始点,从而影响你最终可能找到的解决方案。正如上一张幻灯片所示,我们从两个不同的位置开始,一个显示你会陷入局部最小值,而另一个则可能找到全局最小值。
  • 样本顺序:例如,如果你使用随机学习,训练样本的顺序将定义你采取步骤的位置,以及你最终可能被困住还是找到最优解。
  • 学习率:你可以将其视为你的步长。你是迈一大步下山,还是迈一小步?如果你的步长太大,可能会导致你越过最小值,就像在你想要到达的点附近弹跳;或者如果空间非常复杂,你甚至可能跨过某个上升部分,然后进入另一侧的最小值。相反,如果你的学习率太小,步长太小,收敛到一个解决方案将需要很长时间。想象一下,如果你下山时步长很小,你需要很长时间才能到达谷底。

因此,这些是进行梯度下降时需要考虑的因素,也是你必须权衡的不同取舍。

机器学习算法概览 📊

机器学习领域有大量的算法,这里我只介绍一些特别用于入侵检测的算法。

  • 神经网络:这是一个非常有趣的算法,实际上我们下一个模块将深入探讨神经网络。在神经网络内部,也有许多不同的类型。
  • 聚类:这是另一个常用的关键算法。同样,我将有另一个模块更详细地介绍聚类,特别是K均值聚类。我会简要介绍DBSCAN,然后重点介绍K最近邻。我在这里特别提到DBSCAN,因为它在考虑性能、执行速度等多个不同参数时,已被证明是聚类中效果较好的算法之一。
  • 支持向量机:我将在未来的模块中简要介绍,这是另一种进行机器学习的方法。支持向量机本质上提供了一种通过超空间划分数据的平面,将数据分为两类。还有一种叫做单类支持向量机的方法,它可以从只有一类数据(而不是两类数据)创建支持向量机。我提到这一点是因为它在入侵检测领域进行异常检测时特别有用。
  • 朴素贝叶斯:这是一个非常常用的算法。它本质上是查看概率:给定你当前查看的特征值(例如,在我们的数据中,可能是源IP、目标IP、源端口、目标端口),这个输入属于特定类别的概率是多少?例如,这个输入是特定类型攻击的概率是多少,或者是正常流量的概率是多少?这是基于从先前数据中观察到的先验概率。朴素贝叶斯的一个问题是它假设所有变量都是独立的,而这通常并非如此。
  • 进化计算:这是另一种处理机器学习的方法,同样包含大量不同的算法子集,如遗传算法、遗传编程、人工免疫系统、群体行为等。这个领域很有趣,特别是遗传算法,因为它试图模拟基因的工作方式。你会有本质上由二进制1和0组成的“基因”,你希望将这个基因与另一个基因结合,通过交叉、变异等方式进行,这实际上模拟了自然界中通过遗传物质进行进化的过程。遗传编程采用了完全相同的方法,但将其应用于程序本身,而不是数据和模型。
  • 决策树:这是另一种常见的机器学习方法。对于决策树,本质上你创建一棵树,表示:如果我看到这个特定变量是这个值,就走这个分支;否则,如果是另一个值,就走另一个分支,并依此类推。
  • 集成学习与随机森林:决策树是一种非常流行且似乎效果很好的方法。随机森林由多个决策树组成。每个决策树是通过可能随机选择特征空间的某个子集创建的。然后,随机森林获取所有这些不同决策树的结果,将它们组合起来得出最终答案。集成学习本质上做完全相同的事情,但不特指决策树,它可以是任何算法集合。例如,你可能有两三种不同类型的神经网络,然后获取这些不同神经网络的结果,通过某种方法(可能是投票法或其他形式的组合)将它们组合在一起,从而基于所有子组件的结果得出你认为的最终答案。
  • 逻辑回归:这是一种标准的统计技术。它对大量二进制数据进行建模(例如,1代表正常,0代表攻击),根据所有特征分配权重,这样当你看到一个未知样本时,它会提供一个介于0和1之间的结果,这实际上是你刚刚观察到的流量是正常的概率。
  • 关联规则挖掘:在这个概念中,你试图挖掘能解释你所观察内容的规则,例如,如果你看到X,那么Y。
  • 贝叶斯网络:这是另一种非常常见的方法。对于贝叶斯网络,我们查看我们拥有的特征,找出这些特征之间的关系,然后将它们与概率模型结合起来。
  • 马尔可夫模型/过程:在这种情况下,你有一个状态,基于输入,你有一定的概率转换到另一个状态。

以上总结了你将在机器学习领域,特别是其在入侵检测中的应用中观察到的一些算法。

机器学习工具 🛠️

现在让我们看看一些可用于进行机器学习的工具。市面上有很多不同的工具,其中大多数实际上是免费的。

以下是几个主要的工具:

  • R:这是一个非常常见的工具,实际上是一个统计软件包,已经使用了几十年,不断由统计学家构建,内置了许多功能,使你能够轻松地进行逻辑回归或任何数据挖掘算法。R本质上是一种自己的编程语言,与Python非常相似。
  • Python相关库:说到Python,接下来的三个工具都与之相关:SciPy、scikit-learn和TensorFlow。这些都是与Python相关的库,使得作为Python程序员,你可以访问这些库来进行机器学习。scikit-learn这里有一个链接指向一个非常好的速查表,你可以使用它来执行一些机器学习方法。
  • WEKA:这与其他的非常不同,因为它有一个图形前端,专门用于接收数据并对该数据执行不同类型的机器学习算法。它是一个免费软件程序,你可以去下载。有一本与之配套的免费书籍可以帮助你学习如何使用它。
  • RapidMiner:对于小型示例可以免费使用。我相信如果你的数据行数少于10,000行(例如,尝试使用我们的林肯实验室数据集,即使从流级别汇总来看,也远远超过10,000行),你就可以免费使用RapidMiner来分析该特定数据集。对于更大的数据集,则需要根据用户数量和要处理的数据量付费。

我鼓励你去看看RapidMiner的网站。它的首页有一个非常棒的视频,在一分钟内演示了使用RapidMiner进行数据挖掘是多么容易。他们特别演示了一个决策树:他们从Excel电子表格中获取关于泰坦尼克号乘客的数据(他们幸存或未幸存),然后查看了幸存乘客与未幸存乘客之间的相似性,并判断如果你是一名泰坦尼克号乘客,你是否可能符合用于将某人放入救生艇的标准。我确实鼓励你去看一下那个视频。

总结 📝

本节课中,我们一起学习了机器学习的基础概念。我们从机器学习的定义和历史讲起,了解了其核心在于让计算机无需明确编程即可学习。我们重点探讨了两个核心概念:学习算法(分为监督学习、无监督学习和半监督学习)和梯度下降(包括全局最小值、局部最小值以及学习率等影响因素)。接着,我们概览了多种常见的机器学习算法及其在入侵检测领域的潜在应用,例如神经网络、聚类、支持向量机等。最后,我们介绍了几种实用的机器学习工具,如R、Python生态库(scikit-learn, TensorFlow)、WEKA和RapidMiner,为实际动手操作提供了资源指引。理解这些基础概念是进一步探索复杂机器学习模型及其在网络安全中应用的重要第一步。

053:神经网络原理与应用 🧠

在本节课中,我们将学习神经网络的基本概念。我们将了解什么是神经网络,其发展历史,以及它们是如何被计算和应用的。


神经网络概述

神经网络有多种不同类型。本讲座将重点介绍人工神经网络,它有时也被称为多层感知机,尽管现在这个术语已不常用。其他类型的神经网络,如循环神经网络、卷积神经网络、自组织映射和深度学习,都以此为基础发展而来。

上一节我们介绍了神经网络的整体概念,本节中我们来看看其生物学基础。


生物神经元的工作原理

神经网络的概念实际上基于大脑的工作原理。下图展示的是灵长类动物脑组织样本中神经元的高尔基染色切片。你可以清晰地看到神经元,深色部分是细胞体,延伸出的长触须是轴突和树突,它们与其他细胞形成连接。每个人的大脑都由无数这样的神经元构成,而神经网络正是试图模拟大脑的工作方式以实现其功能。

在深入探讨神经网络的结构之前,我们先了解一下神经元本身如何工作,这有助于理解神经网络为何如此设计。

下图展示了一个神经元的示意图。细胞体延伸出许多被称为树突的结构,它们负责接收来自其他细胞的信号。当另一个细胞释放某种神经递质时,这些递质会积聚在神经元之间的液体间隙中,并与树突上的受体结合。

一旦有足够多的神经递质结合到树突上,细胞就会被兴奋,产生一股电流。这股电流沿着轴突一直传递到末端的终末分支。这种兴奋被称为神经冲动。在终末分支处,会释放神经递质,进而连接到其他神经元。通过这种方式,电信号在大脑中传递,我们的思想、视觉、语言等一切活动都以这种电信号序列的形式运作。

我们利用这种基础的生物学理解,在计算机上模拟神经元的工作方式,其理论是:如果我们能做到这一点并构建起来,就能创造出像人类一样思考的东西。


感知机:单个神经元的模型

那么,我们如何在计算机中模拟一个神经元呢?这最初由麦卡洛克和皮茨完成,其原始模型被称为感知机,它本质上模拟了单个神经元的工作方式。

感知机的工作流程如下:

  • 你有多个不同的输入。
  • 每个输入都会乘以一个权重 W
  • 所有加权后的输入被求和。
  • 求和后的结果通过一个称为激活函数的函数处理,该函数决定输出值。一个典型的基础激活函数是 tanh
  • 经过激活函数后,产生一个输出。这个输出可以连接到其他感知机,从而形成链式结构。

用数学公式表示,感知机的输出 y 可以描述为:
y = g( Σ (w_i * x_i) + b )
其中:

  • g 是激活函数。
  • x_i 是各个输入。
  • w_i 是对应的权重。
  • b偏置权重,它有助于进行数学上的调整,使模型工作得更好。

以上就是单个感知机的工作原理:它接收所有输入,通过一个函数处理,并生成输出。


构建神经网络:连接多个感知机

了解了单个感知机的工作原理后,我们如何将它们组合起来以获得有意义的结果呢?

通过组合多个感知机,我们可以构建出神经网络。如下图所示,神经网络包含以下层次:

  • 输入层:由数据集中所有特征构成。例如,在林肯实验室数据集中,输入特征可能包括目的IP地址、源IP地址、目的端口、源端口等。每条记录都会被分解为这些特征,输入层的每个节点对应一个特征。
  • 隐藏层:包含多个感知机(神经元)。输入层的每个特征值会向前传递到隐藏层的每一个神经元。
  • 输出层:通常由一个或多个感知机构成,生成最终的输出(例如,判断一个网络流是“正常”还是“恶意”)。

数据在网络中的流动过程如下:

  1. 输入值 x1, x2, ..., xn 从输入层出发。
  2. 它们沿着连接线传递到隐藏层的每个神经元。每条连接线都有一个权重 ω
  3. 在每个隐藏层神经元中,所有输入值乘以对应的权重后求和,然后将结果通过激活函数处理,生成该神经元的输出。
  4. 这些输出又作为输入,传递到输出层的神经元,再次经过加权求和与激活函数处理,最终产生网络的输出。

网络结构可以更复杂:

  • 你可以有多个隐藏层,而不仅仅是一个。
  • 每个隐藏层可以包含任意数量的神经元,不同层的神经元数量可以不同。

训练神经网络:反向传播算法

以上解释了神经网络如何工作,但还没有说明如何训练一个神经网络。最初,所有权重通常是随机分配的,因此网络的输出很可能不是我们想要的。那么,如何训练它呢?

神经网络需要带标签的数据进行训练。以林肯实验室数据为例,我们知道哪些流是攻击,哪些是正常行为。我们可以将一条流的所有特征作为输入送入网络,假设输出层只有一个神经元,输出0表示“恶意”,输出1表示“正常”。

训练过程如下:

  1. 输入一条样本数据,网络产生一个输出(例如0.7)。
  2. 我们知道正确答案(例如是正常行为,应为1),因此计算误差(例如 1 - 0.7 = 0.3)。
  3. 我们采用反向传播算法:将这个误差反向传播回网络。
  4. 根据误差,使用梯度下降法计算并调整网络中各条连接线上的权重。调整的目的是减少当前样本产生的误差。
  5. 对训练集中的下一条样本重复此过程。
  6. 当训练集上的平均误差小到可接受的程度时(例如,所有正常样本的输出都大于0.8,所有恶意样本的输出都小于0.2),停止训练。
  7. 使用未见过的测试数据来评估训练好的网络性能。

梯度下降法在这里至关重要。我们通过计算误差函数对各个权重的偏导数,来确定权重调整的方向和幅度,逐步向误差的最小值(理想情况下是全局最小值)移动,从而找到一组最优的权重。


实践中的神经网络与深度学习

在实践中,神经网络,特别是深度学习网络,可以非常复杂。如下图所示,一个深度学习网络可能拥有大量输入、多个隐藏层,且每层神经元数量各异。

深度学习在视觉处理领域表现尤为出色。在网络中,不同的神经元可能学会识别非常具体的模式,例如有的神经元专门识别人脸,有的识别猫,有的识别对角线。每一层都在进行更抽象的特征提取和识别。

在入侵检测领域应用深度学习仍是一个开放的研究课题,目前取得了一些有限的成功,但未来有望看到更多进展。对机器学习和入侵检测感兴趣的同学,可以深入研究这一方向。


总结

本节课中,我们一起学习了神经网络的核心知识。我们从其生物灵感——神经元的工作原理出发,介绍了感知机作为单个神经元的基本模型。接着,我们探讨了如何通过连接多个感知机构建多层神经网络,并详细解释了数据在网络中的前向传播过程。最后,我们学习了如何使用带标签的数据和反向传播算法(结合梯度下降法)来训练神经网络,调整权重以最小化误差。我们还简要提及了更复杂的深度学习及其应用前景。理解这些原理是应用神经网络解决实际问题(包括入侵检测)的重要基础。

054:聚类分析技术 🧩

在本节课中,我们将要学习聚类算法,特别是K均值聚类算法。我们还将探讨K均值聚类与K近邻算法的区别,并简要介绍其他类型的聚类方法。

概述

聚类是一种无监督学习方法,旨在将数据集中的对象分组,使得同一组(即簇)内的对象彼此相似,而不同组间的对象相异。本节课我们将重点介绍K均值聚类算法,并理解其工作原理、应用场景及局限性。


K均值聚类算法 🎯

上一节我们介绍了聚类的基本概念,本节中我们来看看最经典的K均值聚类算法。

K均值聚类的形式化问题描述如下:给定一个D维空间中的点集 X 和一个整数 K,目标是将这些点划分为 K 个簇 C = {C₁, C₂, ..., Cₖ},以最小化以下成本函数:

公式: min Σᵢ Σₓ∈Cᵢ || x - cᵢ ||²

其中,小写 cᵢ 是簇 Cᵢ 中所有点的质心

简单来说,我们有一个包含M个点的数据集 X,这些点位于D维空间中(例如二维平面易于可视化)。我们需要预先设定一个K值(例如假设数据中存在3个自然分组,则设K=3),然后算法会寻找K个簇,使得每个点到其所属簇质心的距离平方和最小。

为了更直观地理解,接下来我们通过图形示例来展示算法过程。


算法步骤图解 📊

以下是K均值聚类算法的迭代过程示例,假设我们希望将数据分为两个簇(K=2)。

  1. 初始化:随机将所有数据点分配到两个簇中(例如用红色加号和黑点表示)。
  2. 计算质心:分别计算两个簇的质心位置。
  3. 重新分配点:计算每个点到两个质心的距离,并将其重新分配到距离最近的质心所在的簇。
  4. 更新质心:根据新形成的簇,重新计算两个簇的质心位置。
  5. 迭代:重复步骤3和4,直到簇的成员不再发生变化,且质心位置稳定下来。

通过这种不断“分配-更新”的循环,算法最终会将数据点清晰地划分为两个簇。


多簇与算法局限性 ⚠️

上一节我们以K=2为例,本节中我们来看看当K=3或面对复杂形状数据时的情况。

K均值算法可以轻松扩展到寻找多于两个的簇。无论K值是多少,算法流程保持不变:初始化K个质心,然后反复执行“分配点”和“更新质心”的步骤,直到收敛。

然而,K均值聚类有其局限性。它假设簇是凸形的(类似于圆形或球形),并且通过计算到质心的欧氏距离来划分边界。这对于分离良好、形状规则的数据很有效。

但当数据形状复杂时,例如两个簇交织成“新月”形,K均值可能无法正确划分。因为它基于距离划分,最终可能会得到垂直或倾斜的直线边界,而无法捕捉数据实际的流形结构。


其他聚类算法简介 🔄

鉴于K均值在处理复杂形状数据时的不足,我们需要了解其他聚类方法。

以下是几种常见的其他聚类算法:

  • EM聚类(期望最大化):该方法不仅考虑距离,还考虑方差等统计信息,可以为簇拟合椭圆形状而非圆形,灵活性稍高,但对“新月”形等复杂结构仍可能失效。
  • DBSCAN(基于密度的空间聚类):该算法基于点的密度而非纯粹的距离来形成簇。它能识别任意形状的簇,并能有效处理噪声点。对于“新月”形数据,DBSCAN通常是更好的选择。
  • 图模型与高斯混合模型:这些是更高级的聚类方法,提供了不同的数据建模视角。

不同的聚类算法基于不同的标准,没有一种算法适用于所有情况。K均值因其简单高效而被广泛使用,但在面对特定数据结构时,可能需要选择更合适的算法。


K均值 vs. K近邻:关键区别 🤔

K均值聚类常与K近邻算法混淆,因为它们名称相似。但两者有本质区别,本节我们来澄清这一点。

以下是两者的核心对比:

  • 目的不同
    • K均值:是无监督聚类算法。目标是将整个数据集分割成K个未知的簇。
    • K近邻:是有监督分类算法。目标是根据已有标签的训练数据,对一个新数据点进行分类。
  • 工作原理不同
    • K均值:迭代寻找质心,最小化簇内距离。
    • K近邻:查找距离新点最近的K个已标记邻居,通过“多数投票”决定其类别。

K近邻示例:假设已有两类数据:绿色方块和蓝色六边形。现有一个新的红色星点需要分类。

  • 若设K=3,则查看离红点最近的3个邻居。假设其中有2个蓝色,1个绿色,则根据多数原则,将红点分类为蓝色。
  • 若设K=5,最近的5个邻居中可能有3个绿色,2个蓝色,则红点被分类为绿色。

注意:K值通常取奇数,以避免在投票时出现平局。


总结

本节课中我们一起学习了聚类分析的核心技术。我们深入探讨了K均值聚类算法的原理、步骤、可视化过程以及其适用范围和局限性。我们还简要介绍了EM聚类、DBSCAN等其他聚类方法。最后,我们明确了K均值聚类(无监督聚类)与K近邻算法(有监督分类)之间的关键区别。理解这些基本概念和差异,是应用机器学习方法进行入侵检测或数据分析的重要基础。

055:支持向量机算法 🧠

在本节课中,我们将学习机器学习模块的最后一个算法——支持向量机。我们将简要介绍这项技术的核心思想、工作原理以及它如何处理不同类型的分类问题。

概述:什么是支持向量机?

支持向量机是一种用于分类的机器学习算法。它的核心目标是找到一个最优的边界(或超平面),将不同类别的数据点分开,并且这个边界要尽可能远离所有类别的数据点,以获得最好的泛化能力。

线性可分情况下的最优边界

上一节我们介绍了支持向量机的目标。本节中,我们来看看一个最基本的场景:线性可分的二分类问题。

假设我们有一些绿色的方块和红色的圆圈,我们需要找到一条直线将它们分开。由于数据是线性可分的,我们只需要在两类数据之间画一条线即可。

现在问题变成了:我们应该在哪里画这条线?例如,我们可以画一条大致如下的线。

这条线可以分开两类数据。但另一条可能的线可能是这样的。

或者,还有一条线可能更偏向于穿过两类数据的中间。

那么,真正的问题就变成了:在这两个类别之间,什么才是最好的分隔线?

支持向量机的工作方式是,它试图找到能提供最佳分离效果的线。这样做的目标是为了获得最佳的泛化能力。例如,如果采用这条蓝色的线,它离红色圆圈太近了。那么,如果出现一个新的红色圆圈在这里。

它本应因为靠近其他红色圆圈簇而被归类为红色圆圈,但如果你的分界线是这条蓝线,它就会被错误地分类为绿色方块。

因此,你需要找到一条能最大化间隔的线,以确保获得尽可能好的分类效果。

所以,支持向量机被称为大间隔线性分类器。它试图在两组分类之间提供尽可能大的间隔。

这里我们看到的是相同的情况,但绘图比我画得更好。你的目标是使这里的间隔 M 尽可能宽。因此,这条线 B1 才是你真正想要的间隔线,而不是这条线 B2,因为它能提供两类之间最宽的空间。

支持向量机的数学原理

上一节我们直观地理解了最优边界。本节中,我们简要了解一下其背后的数学原理。

我们有一个函数,它会说,所有位于定义你 B11 线(即你的上间隔边界)之上的点。

都会被赋予一个值 +1

所有位于 B12 线之下的点,则被分类为 -1

这就是当你通过函数运行数据时的分类方式:判断一个点是在上边界之上还是在下边界之下,然后将其标记为 +1-1,因为这是一个二分类问题。

边界线的实际方程是:你的权重向量乘以你的特征向量(即输入 x),再加上一个偏置项。如果结果等于 +1,则定义了上间隔边界;如果等于 -1,则定义了下间隔边界;如果等于 0,则是中间的分隔线。

通过一些数学推导,间隔的宽度有一个非常精确的定义:为了最大化你的间隔,其宽度等于 2 / ||w||(其中 ||w|| 是你的权重向量的范数)。这里涉及很多数学知识来精确定义和计算它。

支持向量与分类决策

那么问题来了:如何确定这些间隔边界的位置?另外,什么是支持向量?

实际上,这里的这个绿色方块。

和这个红色圆圈。

它们位于你的间隔边界上。因此,它们实际上并不具有 -1+1 的值,它们会有其他值。

这些点被称为你的支持向量,它们是帮助定义你间隔位置的点。同样,通过数学方法,你可以利用这些点来确定新点的位置。所以,如果你最终得到一个点在这里。

因为它位于你的支持向量的那一侧,它被定义为 +1,因此被分类为红色圆圈。

类似地,在另一侧,对于绿色方块,它将被分类为 -1,因此它是一个绿色方块。

那么,如果你碰巧有一个绿色方块在这里呢?

它实际上仍会被定义为绿色方块,因为你实际的间隔边界是这条线,而它仍然在间隔边界之下,因此将被分类为 -1。但这属于你允许自己存在的那种误差级别。这也是为什么你要最大化间隔的原因:这样,即使某个点不完全在簇内,你也很可能仍然能正确分类它。

那么,如果有一个绿色方块恰好在那里呢?

在这种情况下,它将被错误地分类为红色圆圈。这只是因为间隔的位置以及我们实际上如何分隔两个类别:这个点更接近所有的红色圆圈,因此将被分类为红色圆圈。

处理线性不可分数据:软间隔

以上讨论的是在间隔已确定的情况下进行分类。那么,在像这样的情况中,这些绿色方块在红色圆圈一侧,反之亦然,而你仍在尝试训练算法,是否有办法做到这一点?因为这里的类别虽然有误差,但误差足够小,你仍然可以说它们之间存在一个带有一定误差的线性分类器。

事实证明,在数学上你可以允许这种情况发生。你可以使用一种称为软间隔的方法,它由一个变量 C 表示,允许在你的方程中存在一定量的误差。所以,当你看到上面我们提到的方程(权重向量乘以 x 向量加上偏置项)时,你也考虑到了该方程中的一些误差项。因此,仍然有可能找到这个线性分类器。

这条分界线,即使输入存在误差或不完美,也能找到。

与其他方法的比较

在这一点上,我要指出还有其他方法可以找到两个类别之间的边界。例如,在本模块的第一讲中,我们看过的神经网络,就是另一种找到两类数据分界线的方法。神经网络或感知器训练所采用的方法是使用梯度下降法来最小化最小平方误差。

相反,支持向量机所做的是最大化间隔,以便在你的两个类别之间拥有尽可能大的空间。这就是方法上的真正区别:一种方法是问“我在哪里画线才能使分离的错误最少?”,另一种方法是问“我在哪里画线才能使我的两个类别之间的空间最大?”。

再次指出,你可以看到你的支持向量在哪里:这个红色方块。

和这个蓝色圆圈。

它们位于间隔边界上,构成了你的支持向量,从而构成了你计算的基础。

非线性可分数据与核技巧

到目前为止,这些都是具有线性分隔器的二分类示例,其中也包括一个有误差的例子。但是,如果你有两个实际上不是线性可分的类别,会发生什么?

这里是一个非线性可分空间的例子。我们真正想要的是某种具有曲线边界的方法。

来分割这两个空间。那么如何做到呢?在这种情况下,我们使用一种称为核技巧的方法,我稍后会解释。

但本质上,它的作用是创建额外的特征空间。

并尝试分离数据,使其变得线性可分。然后你就可以创建一个超平面来分隔你的两组数据。

我们称之为二维数据中的线性分隔。

一旦我们上升到三维数据,它就变成了一个分隔我们两个空间的平面。一旦超过三维,它就被称为超平面。但基本思想相同:你有一个线性分隔两个空间的东西。因此,通过将这个二维空间扩展到更大的特征空间,我们能够获得线性分隔。

核函数的工作原理

那么,什么是核函数?它又是如何工作的呢?本质上,核函数所做的是将你的 n 维空间映射到一个更高维的特征空间。一个非常。

常用的核函数将一对数据点映射到它们的内积上。本质上,它的工作原理与距离函数非常相似。但你想做的是取每一对。

数据点,然后使用内积运算,从而映射到一个更大的特征空间。

这实际上产生了两方面效果:第一,通过在特征空间中操作你的点,本质上你是在拉伸空间的某些区域或压缩其他区域。通过这样做,并在一定程度上改变距离,你在两类数据点之间创造了分离,这样你就可以在那里放置一个超平面,并实际找到分隔数据的方式。

第二点需要注意的是,这不是基于你拥有的特征,而是基于你拥有的数据点。所以,如果你从 10 个点开始,你的特征空间实际上变成了 100 维,因为你是从 10 个输入开始的,而不是必然从 10 个特征开始。

这是一个重要的区别,因为这意味着这种增加是随着你训练集中输入的数量而扩展的,而不是随着你拥有的特征数量而扩展。

因此,如果你有一个包含 1000 个特征但只有 10 个样本的空间,你可以基于样本数量(只有 10 个)来增加你的特征空间,而不是基于特征数量(比如 1000 个)来增加。

因此,计算复杂度大大降低,从而你获得了一个更快的算法。通过在这个高维空间中计算超平面,实际上最终发生的是你在低维空间中创建了一条曲线。所以在这个例子中,在我们的二维空间里,我们有了这条曲线。

它实际上正确地分隔了我们拥有的两类数据,因为我们使用了这个核技巧来更好地分离两个二分类。

并在它们之间创造更多距离,以便我们可以在那里放置一个线性分隔器。

你可以使用不同的核函数,但本质上它们都是通过在这两个类别之间创造这个空间来工作的。

过拟合与泛化

在这一点上,我要退一步,谈谈所谓的过拟合泛化

在支持向量机的情况下,你需要确保避免过拟合,以便获得一个泛化良好的结果。在这个例子中,如果我们看第一张图,我们这里有的是。

一条完美穿过一组数据点的直线。

现在,假设看第二张图,我们有蓝点作为我们的训练数据。我们有两种可能的算法:一种是提供这条穿过数据的直线(算法2),或者我们有算法1,它实际上完美地代表了训练数据中的每一个点。

那么问题就变成了:这两种算法中,哪一种最能代表我们试图建模的数据类别?

答案是算法2。即使它不能完美地代表训练数据中的每一个点,但经常发生的情况是所谓的过拟合。这意味着。

你开发的算法或模型完美地拟合了你的训练数据。正因为如此,它过拟合了,它代表了训练数据,但不一定能很好地泛化到未见过的数据。

或新数据。你真正想要的是这个算法2,它不能很好地代表训练数据,但它的泛化能力更强,意味着它能更好地拟合所有未见过的数据。因此,模型本身实际上更好。

过拟合和泛化不仅是支持向量机中会遇到的问题,在其他类型的机器学习中也存在。例如,神经网络就有非常类似的问题。

在支持向量机的情况下,有一些不同的范式,比如损失加惩罚范式,有助于确保你避免过拟合。因此,有一些方法可以尝试最小化这种情况的发生。但需要注意,这不仅适用于支持向量机,而且在训练算法时,通常都可能遇到这些问题。

扩展:单类与多类支持向量机

那么,我将留给你最后一个关于支持向量机的问题。我们讨论过二分类,即有两类数据。

问题是:如果你只有一类数据,你能支持或开发一个模型吗?如果你有多类数据,你能表示一个模型吗?这两个问题的答案都是肯定的。我不会深入细节,但确实可以有一种称为单类支持向量机的模型,它只在一类数据上训练,本质上成为一个异常检测器:任何不属于该类的东西都在该类之外。

你也可以有多类检测器。实现多类检测器有不同的方法。

其中之一是采用多个“一对多”检测器并将它们组合起来。另一种是使用支持树,这样你就引入了其他机器学习方法来辅助你的支持向量机方法。实现这些多类检测器有不同的方式,但确实可以实现多类检测器。

总结

本节课中,我们一起学习了支持向量机算法。我们从最基本的线性可分二分类问题入手,理解了寻找最大间隔的核心思想,并认识了定义这个间隔的支持向量。我们探讨了其背后的数学公式,并学习了如何处理带有误差的线性可分数据(软间隔)。接着,我们比较了支持向量机与神经网络等方法的区别。对于非线性可分数据,我们引入了核技巧的概念,它通过将数据映射到高维空间来实现线性分离。最后,我们讨论了机器学习中普遍存在的过拟合泛化问题,并简要了解了支持向量机在单类和多类分类上的扩展应用。

056:机器学习算法应用导论 🚀

在本节课中,我们将要学习如何将机器学习算法应用于入侵检测的具体问题。我们将探讨如何选择合适的算法,了解应用过程中的关键步骤,并认识可能遇到的挑战与权衡。

上一模块我们介绍了机器学习的基础算法。本节中,我们将开始把这些算法应用到入侵检测的上下文中,并了解实现这一目标所需的条件。

模块目标 🎯

本模块的学习目标有三项:

  1. 理解如何选择应使用的机器学习算法。共有四种主要类型,每种类型用于回答不同的问题。目标是理解在入侵检测问题中应选择这四种类型中的哪一种。
  2. 理解创建采用机器学习算法的入侵检测方法所涉及的步骤。需要考虑哪些因素,以及在此过程中可能遇到的问题。
  3. 了解在使用机器学习算法时需要做出哪些决策,如何做出这些决策,以及其中的权衡。

这些是您将在本模块中遇到的高级目标。

课程内容安排 📚

本模块包含多个视频:

  • 第一个视频以标准讲座形式,介绍可供选择的不同类型的机器学习算法。
  • 第二个视频同样以讲座形式,探讨机器学习在入侵检测问题中的应用,包括您将遇到的步骤和需要考虑的一些问题。
  • 第三个是可选视频,关于深度学习。内容链接至杰里米·霍华德今年一月的Enigma演讲。他精彩地概述了深度学习的工作原理,并以一种非常有趣且不寻常的方式将其应用于计算机安全问题,鼓励人们以新方式思考问题,从而应用新算法。
  • 最后,我们将观看一系列关于RapidMiner的短视频。RapidMiner是一个机器学习工具集。我们将在作业和实验中使用它,将一些机器学习技术应用于入侵检测问题,以感受其工作原理以及我们必须真正考虑的一些事项,而无需自己开发任何算法,我们可以使用现成且免费提供的工具。

本节课中,我们一起学习了将机器学习应用于入侵检测的初步框架,包括算法选择、实施步骤和可用工具。接下来,我们将深入探讨不同类型机器学习算法的特点与适用场景。

057:机器学习算法选型策略 🧠

在本节课中,我们将要学习如何为入侵检测问题选择合适的机器学习算法。我们将探讨不同类型的机器学习算法,了解它们各自解决的问题,并确定在入侵检测场景中最适用的算法类型。


在考虑将机器学习应用于入侵检测问题时,我们首先需要问的问题是:我应该使用哪种机器学习算法?让我们来探讨这个问题。

为了确定你应该使用哪种算法,你首先需要确定你的问题是什么,即你试图解决什么。因此,你的第一步将是定义你的问题陈述。

以下是一些问题陈述的例子:

  • 这封电子邮件是垃圾邮件吗?
  • 我的用户如何分组?这些分组是否与角色匹配?
  • 本周我检测到入侵的概率是多少?
  • 给定一个组织的安全软件,他们下一步可能购买什么安全产品?

这些都是非常不同的问题陈述,它们需要不同的解决方法和不同的机器学习算法。那么,我们可以为这些不同的问题应用哪些可能性呢?


从高层次来看,你可以认为有四种不同类型的机器学习算法:分类聚类回归推荐。它们各自以不同的方式运作,解决不同的问题。

上一节我们介绍了问题定义的重要性,本节中我们来看看这四种主要的算法类型。

以下是四种主要的机器学习算法类型及其解决的问题:

  1. 分类

    • 核心问题:我的实例是否属于某个特定类别?例如,我观察的对象是“好”还是“坏”?答案是“是”或“否”吗?你是在尝试对某事物进行分类吗?他们是民主党人、共和党人、自由主义者还是独立人士?你如何确定某事物属于哪个类别?
    • 算法类型:要回答这些问题,你需要监督学习算法。监督学习算法意味着你拥有已标记的训练数据,你知道实际的输出,你可以学习不同输出的样子,并尝试确定决定这些特定输出的特征。例如,我们在上一个模块中看到的神经网络支持向量机就是监督学习算法。虽然存在不同的监督学习算法,但如果你试图进行分类,通常你会希望使用这类学习算法。
  2. 聚类

    • 核心问题:我是否想根据相似性将我的集合划分为子集?在这种情况下,你关注的是:我有一个大群体,我想确定其中的子集是什么,以及这些子集有什么特征。
    • 算法类型:这是一种无监督学习方法。同样,我们在上一个模块中看到过,我们研究了K均值算法,它能够将一个集合划分为不同的子集。
  3. 回归

    • 核心问题:我想预测一个具有连续值的事物。例如,某物的数量是多少?某事需要多长时间?或者某个连续值。我能确定那个值是什么吗?
    • 算法类型:它与分类类似,但分类是离散的,而回归处理的是连续值。与分类一样,它也是监督学习。但在这种情况下,你将使用的算法是线性回归模型逻辑回归模型,或任何其他类型的回归模型。
  4. 推荐系统

    • 核心问题:我是否想根据某人过去的行为来预测他们将做什么?例如,你在亚马逊上看到的“购买此商品的顾客也购买了……”这类信息就是推荐系统。
    • 算法类型:它也是一种无监督学习算法,与聚类类似。在尝试进行这类推荐时,有特定类型的算法效果很好,协同过滤就是一个例子。

在入侵检测的背景下,我能想到的唯一例子类似于:如果我的安全组织拥有特定的软件集,我下一步可能购买什么?这不是我们在这门课中真正要研究的内容。

我们真正可能关注的是分类。我们想知道,当我们看到某些行为时,它是恶意的还是非恶意的?它是一次入侵吗?


本节课中我们一起学习了为机器学习项目选择算法的基本策略。我们首先强调了明确定义问题陈述的重要性。接着,我们探讨了四种主要的机器学习算法类型:用于判断类别的分类、用于发现数据自然分组的聚类、用于预测连续值的回归以及用于预测偏好的推荐系统。最后,我们明确了在入侵检测领域,分类算法(例如判断行为是否恶意)是最核心和最常用的方法。理解这些算法类型及其适用场景,是成功应用机器学习解决安全问题的第一步。

058:机器学习在入侵检测中的应用 🧠

在本节课中,我们将要学习如何将机器学习算法实际应用于构建入侵检测系统。上一节我们介绍了如何选择机器学习算法,但选择算法只是第一步。本节中,我们将深入探讨从定义问题到最终部署模型的完整流程,了解其中涉及的关键步骤和挑战。


概述

成功应用机器学习进行入侵检测远不止选择一个算法。它涉及一个包含多个关键阶段的严谨流程,包括问题定义、数据准备、模型训练与测试。本节将概述这些步骤,并详细讨论每个阶段的具体任务和常见陷阱。


机器学习应用流程概览

从高层次看,流程主要分为训练测试两个阶段。但在这之下,还有许多具体步骤需要完成。

正如上一模块所提到的,你需要做的第一件事是定义问题陈述。除非你知道要解决什么问题,否则你无法选择算法或数据。你必须首先明确定义问题。

一旦定义了问题陈述,你就可以去识别可用的数据集。这里,问题陈述和可用数据集之间存在关联。例如,如果你的问题陈述是识别主机上的恶意软件,但你唯一可用的数据集是网络流量数据,那么你将无法使用该数据来解决主机恶意软件检测问题。因此,两者之间需要平衡。有时你想解决的问题可能因缺乏可用数据而无法解决;反之,你可能会发现一些可用数据集可以用来解决其他非常有趣的问题。

在确定了问题陈述和用于解决该问题的可用数据集后,你需要深入研究这些数据。具体来说,你需要确定几件事:

  1. 类别属性或特征:你可以用什么作为模型的输入,或者用来判断某物是否属于你想要识别的类别。
  2. 类别标签:你的训练数据集中的所有数据都需要有标签。例如,如果你要在一组网络追踪数据中寻找攻击,你需要将每条追踪数据标记为正常流量或攻击流量。这就是你的两个类别:正常和攻击。

然后,例如,如果你有NetFlow数据,你需要查看该NetFlow数据中的所有属性。


识别可用数据集的挑战

现在,我想深入探讨上一张幻灯片中提到的一些步骤。首先要深入讨论的是识别可用数据集。这方面存在很多问题。

你可能会认为这应该很容易,但实际上极其困难。在入侵检测领域,几乎没有有用的公开数据集。以恶意软件为例,如果你想编写一个在主机上运行以检测软件是否为恶意软件的程序,你需要什么数据?你需要干净的数据(不包含任何恶意软件)和恶意数据。你从哪里找到这些数据?你有几个选择:一是将一台机器放在互联网上,开始收集各种恶意流量。但问题是,该软件可能会反过来利用你的机器感染其他机器,因此你需要非常小心地设置。另一个问题是,你只能检测到当前在野外出现的攻击,而你可能需要一个能够检测当前未攻击你系统的威胁的系统。

这就是为什么在本课程中,我们一直使用林肯实验室数据集。它有很多已知问题,数据也快有二十年历史了,不再能代表当今的互联网流量。但它是带标签的数据公开可用,这非常难得。

另一个问题是需要代表性数据集。这是什么意思?例如,如果我有一个数据并用它来训练模型,然后我将该模型用在另一个不同的网络上,那么这两个网络的特征是否足够相似,以至于在一个网络上训练的模型能在第二个网络上正常工作?我使用的数据是否代表了我模型将要部署的环境?

还有一个问题是数据集不平衡。例如,如果一个类别(如正常流量)占97%,另一个类别(如攻击流量)占3%,这实际上会影响你的准确率测量,因为在这种情况下,用于衡量程序在判断真阳性、假阳性等方面的效果的攻击流量数据非常少。

此外,如果你使用的是监督学习方法(这在构建入侵检测系统时尤其常见),就需要带标签的数据。带标签的数据很难获得。例如,你可能能够从计划部署入侵检测系统的网络中收集流量。很好,现在你有了所有这些真实的网络流量,但你如何判断哪些流量是攻击流量?因此,获取带标签的数据非常困难。

最后一点是网络间的泛化能力。我之前在代表性数据集中提到过这一点,你开发的模型不一定能推广到开发环境之外。因此,在尝试识别合适且可用的数据集时,存在许多不同的问题。


确定特征

一旦确定了数据集,下一个问题就变成了:我们想用数据中的哪些特征来构建模型?哪些特征最有可能决定某物是攻击还是良性的?

让我们思考一下林肯实验室数据。我们有pcap文件,假设我们将其转换为NetFlow文件。现在我们需要标记每个流:它是攻击还是正常。然后,我们是否要将NetFlow记录中的每个字段都用作特征?可用的特征很多,而这仅仅是标准NetFlow v5的情况。如果你查看Argus及其能够生成的属性,它提供了比标准NetFlow更多的信息,因此你可以获得许多不同的特征。哪些特征适合判断某物是良性还是攻击?

你是否应该使用现有数据来计算新特征?特征是否独立?它们是否相关?这实际上会影响算法的性能以及它学习到的关系。

你使用的算法能否识别流之间的关系?它是否应该能够识别流之间的关系?还是应该将所有事物视为完全独立的?

在实时操作系统中获取特征是否容易?例如,如果你正在计算NetFlow记录,对于机器学习算法来说,数据量可能更小,但生成网络流记录需要一段时间,因为你必须等到整个流开始和结束。因此,在你实际能够进行想要的分析之前,可能有一段很长的时间。

另一个问题是,如果你试图计算新特征,例如,你能以多快的速度完成这些计算?

最后,你能去掉一些特征吗?这就是我之前提到的降维。很可能你不想使用所有可用的特征。那么,是否存在你不需要的特征?有不同的统计技术可以确定,一旦你有了模型,哪些特征实际上没有贡献,从而可以移除这些特征并重新训练。


数据清洗

我之前还提到需要清洗数据。这是什么意思?

数据并不总是完美的。通常它存在问题。数据中可能存在重复项。有时系统可能出现小故障,产生了两个相同的东西。可能存在缺失数据。例如,你可能有一个完整的NetFlow记录,但由于某种原因源端口缺失了。你如何处理这些缺失数据?数据可能被错误输入。如果你使用的不是像NetFlow这样生成的数据,而是由人工输入的数据,例如,有人输入“M”而不是“Male”。如果你期望在每一行看到“Male”或“Female”,却看到了“M”,算法该如何处理?你应该做的不是让算法去处理,而是提前清洗数据,确保所有内容实际上是一致的,你已经处理了缺失数据并移除了任何重复项。

RapidMiner(我们将在作业中使用)有一个关于数据准备的非常好的培训视频。如果你访问他们的培训视频网站,寻找关于数据准备的视频,它会详细讨论清洗数据需要做什么,以及它具备的一些相关功能。


选择算法

现在,选择你的算法。我猜你以为我们在上一讲已经完成了这一步。嗯,不完全是。

第一个问题实际上是:你是在尝试解决分类聚类还是回归问题?我基本上说过,如果你在做入侵检测,很可能是在做分类问题。

但除此之外,选择使用什么算法还需要知道什么?

你的算法性能将取决于应用和实现。你希望有一个性能非常好的算法,不仅是在准确性方面(我在本幻灯片中也提到了),还包括速度方面。例如,你可能已经注意到,Snort在相同网络流量上运行两次时,并不总是得到相同的结果。这可能是因为Snort实际上因为无法跟上所需的处理速度而丢包了。那么,你能找到一个简单、快速运行且开销不大的算法吗?

与此相关的是算法复杂度。本质上,你能有一个在O(n) 线性时间内运行的算法吗?例如,而不是在O(n²) 时间内运行。你能拥有的最快算法是什么?

你希望你的算法是流式处理还是离线处理?特别是在训练阶段,最初你可能使用离线算法进行训练,然后获取模型并确保该模型可以用于流式处理方法,即边读取流过的数据边给出结果。

增量更新能力。这实际上不是从性能角度更新算法,而是说我的数据已经改变,我需要随之改变。因此,你可能会开始看到一些以前没见过的东西,或者代表攻击的略有不同的特征,而你的模型没有正确建模。有没有办法更新你的模型,使其能够随着时间的推移持续训练,同时还能给出结果?这样,随着时间的推移,即使数据分布发生变化,你的模型也能适应。

混合方法。你也可以采用混合方法,不是只使用一种算法,而是结合多种算法以获得更好的结果。

你的算法的可解释性如何?从某种意义上说,例如,如果你使用神经网络,你只会说某物是攻击或正常。但是,为什么?为什么某物被标记为攻击或正常?有没有办法设置你的算法,使其能够向用户解释:“我认为这是攻击,原因如下……”?

当然,最后是准确性。你希望你的算法在检测攻击方面具有非常高的准确性,同时具有较低的误报率,这样你就不会让系统管理员疲于处理大量误报。


测试模型

现在我们已经训练了模型,我们必须测试模型。

我们需要一个与训练集分开的测试集。仅仅使用训练集生成模型,然后让模型在该训练集上给出准确率读数是不够的。问题是,当它看到以前未见过的数据时,它的实际表现如何?这就是模型的泛化能力:它是过拟合了已有的数据,还是具有泛化性

因此,你要做的是确保留出一些数据用于测试,而不是将所有数据都用于训练。

如果你试图比较几个不同的模型,你还需要确保在比较这些模型时,在所有情况下(或N个模型的情况下)使用相同的训练和测试数据,以确保比较是公平的。你要确保两个模型都在相同的训练数据上开发,并且都在相同的测试数据上进行测试。

然而,问题在于,从某种意义上说,这会浪费数据。我的意思是,你现在用更少的数据进行训练。如果我有100个样本可以用于训练,但需要留出20个用于测试,那么我可能只用80个样本进行训练,用20个进行测试。这样你就“浪费”了那20个样本,因为你将它们用于测试,而如果用于训练,它们本可以改进你的模型。因此,这里也存在一个平衡。

接下来的问题是,如果你的测试集不具有代表性怎么办?假设你从100个例子中随机选择20个作为测试集。如果你碰巧生成的测试集实际上并不具有广泛的代表性,而你只是运气不好,选择了一个要么显示你的算法特别好,要么显示你的算法特别差的测试集,那会怎样?

另一个问题是,你能像我刚才提到的那样随机选择例子吗?还是需要保持时间关系?你究竟应该如何从训练集中选择测试集?


交叉验证

测试中使用的一种试图解决其中一些问题的方法叫做交叉验证

假设你有一个包含100个示例的数据集。你要做的是取一个包含80个示例的集合,然后取20个作为测试集。然后你会有所谓的第二折,即使用另一组20个示例作为测试集,同样地,进行第三折、第四折和第五折。这样,你拥有的每个示例最终都会在测试集中出现一次且仅一次。

在这种情况下,这被称为五折交叉验证。这意味着你将训练你的模型五次:第一次,你将在第一折可用的训练集上训练,然后测试;然后你将使用第二折的训练数据重新训练模型,然后测试;同样进行第三、四、五折。然后,你对所有这些结果取平均值,作为最终的性能度量。

我们发现,通常这是确定模型在实际检测(在我们的案例中是正常流量与攻击流量)方面表现如何的非常好的方法。最常见的是十折交叉验证。人们倾向于创建十折,然后运行10次模型的训练步骤和测试集,并平均这些结果。另一个常用的方法是留一法交叉验证,这几乎就是它听起来的样子:你训练除一个示例外的所有数据,并在该示例上测试;然后你训练除另一个不同示例外的所有数据,并在该示例上测试,对你的所有不同示例都这样做。这样做的缺点当然是需要花费很长时间,这就是为什么人们倾向于使用更少的折数,例如交叉验证中的十折。

因此,当试图确定一个模型(特别是机器学习模型)的工作效果时,无论是在入侵检测环境还是其他环境中,这是一种常用的方法。


总结

本节课中,我们一起学习了将机器学习应用于入侵检测的完整流程。我们从定义问题开始,探讨了寻找合适数据集的巨大挑战,特别是带标签和代表性数据的稀缺性。接着,我们讨论了如何从数据中确定和选择有效的特征,以及数据清洗的重要性。然后,我们深入研究了选择算法时需要考虑的多个维度,包括性能、速度、复杂度和可解释性。最后,我们重点介绍了模型测试的关键性,以及如何使用交叉验证来更可靠地评估模型的泛化能力,避免过拟合。记住,构建一个有效的入侵检测系统是一个迭代且严谨的过程,每个步骤都至关重要。在接下来的作业中,我们将实际应用这些概念,亲身体验整个过程是如何运作的,以及其中可能遇到的陷阱。

059:CSIRT导论 🚨

在本节课中,我们将要学习计算机安全事件响应团队(CSIRT)的相关知识。我们将探讨如何组建和运行一个CSIRT,特别是如何将入侵检测系统(IDS)作为事件指标整合到其工作流程中。课程将涵盖团队组建、技术响应流程以及信息共享等核心议题。


上一模块我们讨论了在CSIRT环境中使用IDS的技术挑战。本节中,我们来看看CSIRT本身。

首先,我们来谈谈本模块的学习目标。

以下是本模块将涵盖的核心内容:

  • 描述组建CSIRT时出现的问题,特别是围绕使用IDS的CSIRT流程所产生的问题。
  • 评估在高流量环境中为CSIRT使用IDS的情况。
  • 使用Security Onion中的工具来执行IDS响应流程。
  • 讨论关于共享IDS警报信息的问题。
  • 使用之前的数据集在Security Onion上生成对比报告,比较不同的IDS。
  • 在实验练习中,展示对ELSA的熟练使用。

接下来,我们将具体讨论如何组建一个CSIRT团队。

我们将探讨一些超越上模块所谈内容的问题,并更详细地了解CSIRT应具备的权限、可组建的CSIRT组织类型以及可供选择的不同方案。


上一节我们介绍了响应流程中的人为因素。本节中,我们从技术角度来看看响应流程。

当IDS警报触发时,你需要执行的技术响应流程是什么。


然后,我们将有一个关于信息共享的视频。

我们将探讨共享IDS收集的数据以及其他事件报告所涉及的问题,包括在本地、全球以及行业内部共享的不同选择。随着此类信息越来越多,其全球共享的价值日益凸显,我们也将了解当前全球信息共享的发展方式。

在本模块中,你将重新回到响应事件的技术层面,并学习如何具体使用你的IDS来响应这些事件。


本节课中,我们一起学习了CSIRT的基本概念、组建要点、技术响应流程以及信息共享的重要性。这些知识为你在实际环境中有效整合和运用IDS进行安全事件响应奠定了基础。

060:组建计算机安全应急响应组(CSIRT) 🛡️

在本节课中,我们将深入探讨组建计算机安全应急响应组(CSIRT)的技术细节。我们将了解组建CSIRT的不同选项、历史上CSIRT的组建方式,以及在大型组织中CSIRT可以执行的各种功能。课程将涵盖CSIRT的权限级别、功能、提供的服务、所需技能、其动态运作特性,以及入侵检测系统(IDS)警报如何融入这一体系。

CSIRT的类型 🌐

上一节我们介绍了CSIRT的基本概念,本节中我们来看看CSIRT的不同类型。根据其服务范围和目标,CSIRT主要可以分为三种基本类型。

以下是三种主要的CSIRT类型:

  • 国际协调中心:这类CSIRT在全球范围内运作,在国家或国际层面进行协调。例如,美国CERT/CC就属于此类。它们没有特定的组织或服务对象,而是拥有广泛的、能够以可信方式向其报告信息的组织网络。这类中心运作的核心是信任。它们必须能够保密接收到的信息,并向其服务范围内的成员提供预警,同时在不暴露其成员敏感信息的前提下与其他国际CSIRT团队共享情报。

  • 企业/组织CSIRT:这类CSIRT直接隶属于公司、企业或其他独立实体,其使命是改善企业信息基础设施的安全并降低风险。这是目前最常见的一种CSIRT类型。它们为组织内部的系统和网络管理员提供支持,可以是建议性的,也可以是直接性的。它们还负责将组织底层的安全信息向上传递至管理层。

  • 技术产品CSIRT:这类团队通常直接与某个特定的产品(开源或商业)相关联,服务于该产品的用户。例如,微软的响应团队就属于此类。它们的职责不是保护微软公司内部的IT网络,而是响应其特定IT产品(如Windows、Word)中的各种安全问题。几乎所有主要的IT技术产品都有此类响应团队,负责处理报告的漏洞、错误等,以持续提升产品安全性。

这三种类型代表了CSIRT在组织形式上的完整谱系。它们在使用IDS警报和其他信息执行任务的方式上存在差异。

CSIRT的权限级别 ⚖️

了解了CSIRT的类型后,接下来我们需要探讨组建CSIRT时的一个基本权衡点:权限级别。CSIRT团队将拥有多大的权力?

这里的核心权衡在于 “影响力”“指令性响应” 之间。

  • 影响力:意味着CSIRT团队提供建议、指导,甚至是具体的技术步骤。
  • 指令性响应:则意味着政策被更改,相关方必须在规定时间内执行CSIRT团队的指令。

在这两者之间也存在一些中间状态,例如CSIRT可以影响那些真正拥有指令权限的部门去制定新政策。

从历史经验来看,对于响应团队而言,影响力模式通常更佳,因为它往往能赢得更多信任。而信任是CSIRT成功运作、获取IDS之外直接报告的必要条件。

以下是几种常见的权限级别:

  • 完全权限:CSIRT成员拥有代表其服务对象采取任何必要行动的完全权力。这在网络CSIRT团队中较为常见,他们可以更改任何网络配置。
  • 共享权限:CSIRT成员可以提供直接支持并施加影响力,但通常需要通过中介或政策代表来执行指令,以强制系统进行更改。我们称之为共享权限,因为CSIRT团队定义行动方案,但不具备强制执行的权力。
  • 无权限(纯咨询角色):CSIRT成员纯粹扮演顾问角色。这在一些集体性的CERT(如CERT/CC)中很常见,他们发布建议和信息,但无法强制任何人进行更改。

在这三种权限级别之间,存在一个权衡:信任程度基于CSIRT所学事件信息所能获得的快速保护能力 之间的权衡。

拥有完全权限可以实现最快的响应加速,但需要其他领域管理员的合作。因此,在建立信任以改善系统安全与行使权力以快速解决事件之间,共享权限模式往往是更优的选择

CSIRT提供的服务 📋

明确了权限级别后,我们来看看CSIRT具体能提供哪些服务。根据CSIRT的组建类型,其提供的服务范围非常广泛。

基本上,只有一项服务是强制性的,这也是事件响应团队的核心:

  • 事件响应服务:为报告计算机安全事件提供一个联络点,并在响应过程中提供协调支持,向相关方通报事件报告情况。这是构成一个事件响应团队的根本。事件可能来自服务对象、外部实体或IDS系统。

然而,为了达成更广泛的使命,CSIRT可能提供许多其他服务:

  • 公告与发布:向服务对象发布信息,传播防护措施。这是希望服务对象遵循的建议,以帮助他们恢复、预防或处理正在发生的事件。
  • 漏洞分析与响应:当收到可能存在事件的迹象时,分析被利用的漏洞,并以此为基础制定缓解措施,提升组织安全。这通常涉及CSIRT内部一个专门负责逆向分析恶意软件和理解漏洞的技术团队。
  • 恶意软件(攻击样本)分析与响应:专门处理如何逆向分析可能出现的恶意软件。这项专业技能非常稀缺,但将其组织上置于CSIRT内部,可以实现事件迹象、恶意软件逆向分析和CSIRT启动的恢复流程之间的紧密衔接。
  • 教育与培训:通过培训和教育建立与服务对象的信任,帮助他们在事件发生时成为良好的利益相关者,并提升整个组织的专业技能,确保在事件响应中使用共同语言。
  • 事件溯源:尝试追踪入侵者活动至源头,找出责任人。这需要CSIRT与调查人员合作,以了解事件的根本原因。
  • 入侵检测支持:支持IDS系统本身。虽然不要求IDS支持必须放在CSIRT内,但CSIRT团队深度参与入侵检测/防御软件的部署和配置非常有价值,因为来自这些系统的警报是启动CSIRT流程的起点。
  • 审计与渗透测试:在事件发生前主动寻找可能发生事件的地方,通过渗透测试确定基础设施的薄弱环节。这既能加强基础设施,也能让CSIRT在事件发生时预知组织的弱点所在。
  • 安全咨询:由于CSIRT团队通常会成为组织内最好的安全专家,让他们就安全和网络问题提供专家建议是发挥其才能的好方法。
  • 风险分析:在CSIRT团队内部进行风险分析,是最大化利用团队经验的好方法。
  • 技术瞭望:努力让CSIRT团队了解最新技术,理解其如何改变安全威胁。这既有助于CSIRT自身的事件响应,也有助于组织在部署新技术时进行风险缓解。
  • 安全产品开发:当CSIRT的运营人员与安全工具、事件检测的IT开发人员协同工作时,这一点尤其有价值。IT领域的DevOps理念会将其视为一项要求,以便运营和开发人员能够根据CSIRT所经历的事件环境变化,快速调整和适应安全产品。
  • 协作与协调:与组织内部和外部的其他响应团队进行协作与协调。虽然这不一定是必需服务,但当组织需要与其他组织合作解决事件时,CSIRT内部的协作与协调就变得非常必要。

CSIRT所需的技能 🧠

考虑到上一节提到的众多功能,可以想象,要找到具备所有所需技能的人员非常困难。这些技能很难在单一个体身上找到,甚至作为一个团队来招聘也很困难。

因此,CSIRT团队通常需要通过培训、教育和在职学习,在内部培养这些技能。

以下是CSIRT所需的一些核心技能:

  • IDS技术知识:理解警报,并知道如何执行由IDS/IPS警报启动的事件响应流程。
  • 企业基础设施技术知识:能够评估事件的范围,并正确判断该事件是否重要到需要响应。
  • 商业头脑:了解资产的价值,理解事件和迹象在组织内发生的背景,以便确定优先级并采取适当的响应措施。
  • 多种响应方案知识:熟悉针对给定事件可能采取的多种不同响应方式(如阻断、关闭服务、调整服务、转移攻击、设置蜜罐等)。
  • 强大的问题解决能力:这是一项通用的、几乎在任何地方都需要的职业技能。

此外,根据你希望CSIRT团队执行的具体功能,可能还需要其他专业技能,例如逆向工程技能、汇编语言技能、恶意软件分析技能、大数据处理技能等。

CSIRT的动态特性 🔄

CSIRT团队从来不是静态的。与我们在本课程中讨论的许多其他事物一样,CSIRT不是你一次性创建就可以放任不管的。

在确定如何处理突发情况、事件频率和严重性的增减、组织变化与增长时,需要考虑许多因素,这些因素都会影响CSIRT的性质。

以下是一些影响CSIRT动态特性的因素:

  • 事件发生率:难以预测,导致CSIRT经常会经历资源过剩或不足的时期。这在处理误报和减少系统内第一类错误时尤其相关。
  • 攻击技术演进:入侵者不断发明新方法,攻击技术日益精进。因此,报告给CSIRT的事件类型和复杂性会随时间变化。组建CSIRT时的技能可能不足以应对新的攻击方法。
  • 技术进步:不仅仅是攻击技术,防御技术本身也在进步。CSIRT必须具备技术专长以跟上移动计算、云计算、物联网等新技术的步伐。
  • 法律法规变化:在许多国家,不断制定和变化的法律法规明确规定了CSIRT可以做什么、不可以做什么,特别是关于隐私、网络数据收集等方面的法律。
  • 其他业务需求:经常会出现CSIRT资源被其他紧急业务需求占用的情况。在将CSIRT专长应用于其他业务需求与在事件响应中需要其专长之间取得平衡,始终会影响CSIRT的动态运作。

在所有情况下,请记住:IDS警报始终只是分析的起点,它们从未完成分析。是CSIRT的技能、权限和组织能力真正开始解决事件。

因此,虽然IDS警报提供了起点,但它们并不一定意味着发生了事件(可能是误报,也可能对组织不重要)。在最佳情况下,警报能提供关于漏洞、攻击源和目的地的信息,以便CSIRT据此确定适当的响应范围,并获取更多信息,从而将警报与CSIRT内部的技能和组织职能联系起来,以管理已创建的各项功能。

总结 📝

本节课中,我们一起学习了组建计算机安全应急响应组(CSIRT)所涉及的技术问题、所需技能和能力以及技术要求。我们看到,了解IDS和IDS系统的知识固然重要,但这并不是CSIRT团队为了完成其可能承担的广泛技术任务而需要理解的唯一内容。CSIRT的成功运作还依赖于明确的类型定位、恰当的权限平衡、全面的服务设计、持续的技能培养以及对动态环境的适应能力。

061:IDS响应流程标准化 🛡️

在本节课中,我们将学习一个技术性的入侵检测系统响应流程。我们将探讨当组织内部的安全响应人员收到IDS警报后,可以且应该采取哪些步骤来启动调查。课程将涵盖如何处理警报、如何确定漏洞是否存在、如何寻找支持性信息,并通过一个具体示例来演示如何解决某类警报。最后,我们将讨论事件关联、控制台以及一些在Security Onion内外可用的工具。

概述:从警报到响应 🚨

上一节我们介绍了IDS警报的分类和处理原则。本节中,我们将深入探讨一个标准化的技术响应流程。这个过程始于一个进入初步分类流程的IDS警报,随后进入分析阶段,最终目的是解决问题,提供技术援助或获取联系信息以解决事件。我们将重点讲解如何执行技术性的分类功能,包括查看信息、分析漏洞,并最终达成解决方案。

确定漏洞是否存在 🔍

收到IDS警报后,我们首先要判断这是否是一个误报,或者是一个需要我们采取行动的真实警报。在分类过程中过早地假设其为误报,可能会导致我们错过追踪特定证据的机会,从而无法从技术上解决事件。因此,我们倾向于先采取行动进行调查。

调整IDS规则集

为了确定系统中是否存在漏洞,我们通常需要从调整Snort(或泛指基于签名的IDS)规则集开始。以下是具体步骤:

  • 移除无关系统的警报:如果您的组织只运行Windows和Linux系统,却收到了针对Mac系统的警报,那么这些警报很可能没有意义。通常,我们需要调低那些针对我们未运行的操作系统(例如,在Windows系统中看到Unix风格的警报)的警报级别。
  • 谨慎处理不确定的警报:如果您不确定某个警报是否相关,应暂时保留它。但在处理了多起类似事件并确认它们并非真实事件后,应尽可能将其从规则集中移除。

验证漏洞存在

您可以使用类似Nessus的扫描工具,扫描您IP地址空间内的所有系统,以了解漏洞所在的位置,以及哪些系统和攻击面正在被传入的规则集所警报。

关闭不必要的协议和服务

除了调整规则集,您还应关闭不允许或不使用的协议。例如:

  • 关闭未使用的端口:如果您的组织内部没有支持端口25(SMTP)的系统(因为已有邮件网关),那么就不应该让端口25的流量进入您的网络。
  • 精简服务器软件:服务器通常运行特定的软件。如果不在服务器上进行开发,就没有理由在服务器上保留编译器、各种编辑工具或其他不必要的服务。应尽可能关闭和移除这些服务,这有助于减少来自IDS的虚假警报。

检查目标系统的补丁和版本

您需要检查警报目标系统的补丁和版本号。如果警报所针对的漏洞在目标系统的当前补丁级别上并不存在,那么这很可能是一个误报,可以将其从系统中排除。

注意:仅仅因为版本号不匹配,并不意味着这不是一次真实的攻击。它仍然可能是一次真实的攻击尝试。除非您非常确定目标的版本和补丁级别,并且知道该漏洞不可能存在,否则仍应保持保守态度,进行调查。

寻找支持性信息 📊

一旦确定目标系统存在漏洞,并且攻击是针对受支持的操作系统,接下来就需要了解攻击的范围和规模。这通常意味着对目标进行某种取证,使用其他工具和日志文件来寻找IDS警报之外的支持性信息。

检查应用日志

您需要检查与漏洞相关的应用程序日志。与受攻击主机上漏洞相关的应用程序日志,更有可能提供关于具体哪些内容受到影响(是完整性攻击还是机密性攻击)的详细信息。这比IDS警报本身更能说明问题。

监控被修改系统的活动

有时,您可能没有详细的应用程序日志。这时,您需要监控被攻击系统的活动,寻找可疑行为。例如:

  • 异常出站流量:如果一台历史从未有端口25活动的主机,突然开始发出大量加密流量,这很可能表明系统信息被收集并以加密形式外传。
  • 横向移动:监控受攻击主机与基础设施内其他受信任主机之间的活动。如果发现攻击主机与其他主机有通信,这可以帮助您了解攻击可能波及的系统范围。这对于自我传播的恶意软件尤其重要。

捕获和分析恶意软件

如果能捕获恶意软件并进行逆向工程,您就能确切知道攻击对目标机器造成了哪些影响。这可以极大地加快您对系统中该恶意软件的响应速度。否则,您必须做最坏的打算,假设操作系统的任何部分(如启动序列、后台活动或进程)都可能受到了影响。

您捕获的攻击活动越多,对其细节了解得越深入,就越能限定对实际受影响系统的响应范围。

示例:NFS Mount攻击调查 🧪

现在,我们通过一个具体示例来演练上述步骤。假设我们使用Snort作为IDS,收到一个警报,目标是Solaris主机上的端口映射器(Port Mapper)。这立即引发了一个问题:这可能是来自外部的NFS Mount攻击吗?

分析警报

如果假设这是一次针对我们系统的NFS Mount攻击,其危险性可能很高,因为攻击者可以访问和修改各种系统及数据文件。以下是相关的Snort警报信息:

  • 警报内容:RPC portmap request, NFS UDP
  • 优先级:2
  • 源地址:组织外部
  • 目标地址:组织内部

仅从这个警报数据,我们无法立即判断这次NFS Mount攻击是否成功。Snort告诉我们这是一次尝试,但未指明结果。

验证防火墙日志

第一步是确认这次攻击是否真的通过了防火墙到达了目标主机。我们可以根据Snort警报中的信息(UDP协议、源/目标地址)搜索防火墙日志。如果能在防火墙日志中找到完全匹配的记录,就证实了这是一次从外部到内部的攻击尝试。

检查主机日志

接下来,我们需要联系主机管理员,检查主机上是否有相关的监控日志。幸运的是,系统管理员运行了一个名为NFSwatch的工具,它可以记录NFS服务器上的所有活动。

通过分析NFSwatch的输出,我们可以查看在警报时间点附近,是否有成功的NFS读/写或挂载操作。例如,输出可能显示有RPC授权数据包交换,但没有检测到NFS写数据包或成功的挂载操作。

得出结论并采取行动

在这种情况下,我们能够确定这很可能是一次探测(probe)或未成功的攻击。虽然这次没有造成数据更改,但它是一次外部探测,并引发了有价值的调查。因此,这不是一次误报。

基于此,我们可以:

  1. 锁定系统:关闭或进一步锁定这个NFS服务器,防止未来的RPC授权探测升级为攻击。
  2. 更新防火墙规则:修改防火墙规则,作为反馈循环的一部分,防止此类探测影响基础设施中的其他系统。
  3. 保留Snort规则:由于这是真实事件,我们不应移除这条Snort规则。

这个例子展示了如何从一个IDS警报出发,通过多种日志文件,来确定基础设施中实际发生的攻击类型和范围。

事件关联与自动化工具 🤖

当这类评估规模扩大时,我们立即会面临严重的事件关联问题。我们需要将数百台机器上的警报关联成单个事件,以理解攻击在整个组织内的成功范围。

幸运的是,存在自动化工具来收集和分析多个数据集。例如:

  • Security Onion内的工具:可以对这些警报运行分析。
  • Splunk等工具:可以导入来自各种日志文件的数据,然后使用警报数据作为切片函数,在所有日志文件中查找可能与某个警报相关的所有信息。这本质上是将警报作为自动化切片工具,在一个巨大的数据存储(如Hadoop风格的数据存储)中进行查询。

这是过去几年中,在IDS警报解决方面更有价值的一项进展。

从事件构建到事件

理论上,我们希望将所有IDS警报视为对各种事件的警报。我们需要收集这些事件,并开始将它们关联成整合的攻击。通过查看一系列未经授权的结果和所使用的恶意软件工具,我们可以推断攻击者可能的目标。

这个过程与我们之前在模块10的练习中所做的完全一致:我们查看来自IDS警报的事件,将它们组合成一系列攻击,通过取证查看未经授权的结果,试图构建一个记录,以说明攻击者是谁以及攻击目标是什么。

控制台工具

您已经见过一些有助于整合这些信息的工具,例如Snorby和OSSIM控制台。它们简化了警报信息的提取,并将其与您需要用于逆向工程攻击过程的详细数据包信息关联起来。如今,许多这类工具都是基于Web的,易于使用,并添加了分析功能(如您在使用Sguil时所见的)。

数据包捕获与分析

特别是在基于网络的IDS领域,它必须与某种数据包捕获和分析程序配对使用。您可以直接从事件跳转到与之相关的直接数据包捕获。有许多工具(如NetWitness)允许您重放TCP数据包,以理解应用程序内的用户活动是什么样的。这有助于您真正确定攻击的范围,并推断攻击的目标。

总结 📝

本节课中,我们一起学习了如何从标准的IDS警报出发,通过技术调查,最终完全解决安全事件,并可能推断出攻击者及其目标。

我们首先学习了如何确定漏洞是否存在,包括调整IDS规则集、关闭不必要的服务以及检查系统补丁。接着,我们探讨了如何寻找支持性信息,如检查应用日志、监控系统活动以及分析恶意软件。通过一个NFS Mount攻击的示例,我们完整地演练了从警报验证、日志分析到最终响应的全过程。最后,我们讨论了事件关联的重要性以及自动化工具(如Splunk、Snorby、OSSIM)和数据包分析工具在规模化、高效响应中的作用。

请记住,正如我们的练习和您对IDS的了解所示,这从来都不是一个简单的过程,并且完全自动化极其困难。在可预见的未来,这仍然将是一个需要大量人力和创造力的过程,我们需要根据实际观察到的活动,来推断组织内外攻击者对我们宝贵资产的真实攻击目标。

062:安全情报共享机制 🔐

在本节课中,我们将要学习关于入侵检测系统(IDS)警报信息共享的概念。我们将探讨共享这些数据的好处与风险,以及在实际操作中需要考虑的关键问题。


信息共享的考量因素

上一节我们介绍了信息共享的基本概念,本节中我们来看看在决定共享IDS警报或事件响应详细信息时,必须考虑的一些具体因素。

保密性与机密性

首要考虑的是组织信息的保密性与机密性。作为入侵响应能力一部分所收集的信息,对其他方可能具有价值,因此必须维持其机密性。

实现保密性的一种方法是尝试对数据进行匿名化或清洗,使其无法识别出具体的机密信息。然而,这种方法存在风险。例如,如果我将攻击中的目标IP地址匿名化,并赋予一个通用编号后发布信息,但保留了原始时间戳。外部人员可能将此时间戳与其他来源收集的信息结合,从而推断出我组织内实际的目标身份,甚至可能还原出载荷或相关信息。因此,仅靠匿名化不一定能完全保护信息的机密性。

即使只是团队成员的反应,也可能足以泄露部分信息。暴露信息并不一定意味着暴露了全部,有时即使只泄露一点点,也可能揭示出关键部分。例如,假设你完全没有透露任何关于某个事件的信息,只是分享了一个新漏洞或安全漏洞的存在。外界可能会推测你的组织拥有存在该漏洞的系统,并且可能并非所有系统都已打补丁。即使都已打补丁,如果我们知道存在新漏洞的系统的详细信息,或许还存在另一个针对同一系统的安全漏洞。这样,你实际上已经向外界暴露了一定程度的脆弱性。

信息的适当使用

在保密性之外,下一个需要考虑的问题是信息的适当使用。当信息仅对一个团队可用时,其他团队在访问该信息时,必须遵守该团队对信息使用所设定的任何限制。

例如,如果我掌握的信息表明某些特定系统存在漏洞,但我不想承认我的系统中存在该漏洞,那么对该信息的适当使用就不能是公开该特定漏洞,即使从另一个团队的角度来看公开是有益的。这类似于查看获取此类数据所需的保密协议条款,其中明确规定了权利、义务以及在所有详细信息中“适当使用”的含义。这在非公开共享,而是与某些其他合作伙伴基于信任关系共享时尤为重要。重要的是,此类协议的所有参与方都理解获取该信息的含义,以及利用该信息为自己谋利意味着什么。

披露政策

与适当使用相关的是整个披露政策。由于信息可能在某个时间点向公众发布,披露限制应事先明确说明。仅仅因为某些信息向公众公开,并不意味着特定事件响应记录或IDS警报的所有细节都应该在公开时被暴露。正如我们在保密性部分讨论过的,这可能会在特定领域向公众增加信息,从而使你的站点比现在更加脆弱。

因此,这些披露政策——例如在多长时间内、由谁来决定何时公开发布信息——是需要事先确立的重要基本规则。这在漏洞披露中尤其重要。许多组织对于在向供应商、公众或某些公共漏洞列表报告之前,持有漏洞信息的时间长短有不同的政策。因此,如果你打算与其他CERT或其他类型的组织共享漏洞报告,你必须确保披露政策是同步的,以防止信息在你控制之外被发布。

信息来源的归属

最后,还有一个核心问题是:如何承认信息来源?在许多情况下,信息的来源更希望保持匿名,而因为另一个组织希望保持匿名就由你方来邀功,这是不公平的。因此,你必须理解正确的致谢理念,无论对方希望署名还是匿名,都不应简单地转移,让另一个组织为发布的特定类型信息邀功。


不同响应团队间的信息共享

考虑到上述问题,让我们来看看这些问题对我们之前讨论过的不同类型的响应团队意味着什么。

国家级CERT间的共享

首先,我们看看国家级CERT(计算机应急响应小组)之间的共享。这些是代表世界各国的团队,例如美国的US-CERT。在这些国家之间交换信息,对于承认和应对全球网络安全威胁非常有价值。

CERT.org长期以来一直在推动国家级CERT之间的信息共享,事实上,他们举办论坛和活动,专门将国家级CERT聚集在一起进行信息共享,并尝试共享以下类别的信息:

  • 监视与预警服务
  • 当前活动
  • 事件分析
  • 警报研究
  • 自动化数据共享能力

所有这些要素都是匹兹堡的CERT/CC试图在国家CERT领域内鼓励的。如果你是一个国家级CERT或代表一个国家级CERT,需要考虑的是,你是否应该参与这些技术交流。在这些交流中,你可以获得技术咨询、培训、技能建设、各种工具开发支持、额外的漏洞分析、攻击痕迹分析和网络监控分析。但作为交换,你需要以某种方式向团队外部发布一些数据,并期望这个受信任的组织团体能妥善处理。

这种类型的信息共享在国家CERT之间得到了大力推广,这可能是技术团队之间信息共享最多的领域之一。但同样,在国际社会中,政治因素偶尔会介入。不同团队对于应如何行为或处理信息的看法必然存在差异,所有这些都必须与我们之前提到的关于在国家CERT之间共享信息的任何顾虑相权衡。

信息共享与分析中心

在美国国内,更贴近实际运营层面的是称为“信息共享与分析中心”(ISAC)的组织。美国的ISAC基本上是为了支持按行业进行信息共享而存在的。“行业”指的是诸如电力、金融、航空、石油和天然气等领域。在这些领域,组织、CERT和响应团队因其共同的功能而被聚集在一起。

这通常是一个非竞争性很强的空间,但金融行业可能是个例外。以金融行业为例,银行可能在争夺客户和金融利益方面相互竞争,但网络安全风险存在于金融基础设施的所有环节。因此,建立一个可信的场所来共享某些网络安全数据,以保护整个金融基础设施免受犯罪元素或其他试图破坏金融基础设施的元素的广泛攻击,是很有意义的。同样的情况也适用于电力、航空、石油和天然气等领域。你可以在我列在底部的这个特定网站上看到许多不同的ISAC,它展示了现有的ISAC成员,让你了解它们是谁,谁在参与。

总的来说,这些组织内部的信息共享在成员之间是高度可信的,因此非常详细的技术威胁和技术解决方案可以在这些组织之间共享。

以下是主要的成员ISAC:

  • 航空 ISAC
  • 国防工业基地 ISAC
  • 应急服务 ISAC
  • 电力部门 ISAC
  • 金融服务 ISAC
  • 信息技术 ISAC
  • 海事安全 ISAC
  • 多州 ISAC
  • 通信 ISAC
  • 国家卫生 ISAC
  • 核能 ISAC
  • 石油和天然气 ISAC
  • 公共交通 ISAC
  • 房地产 ISAC
  • 研究与教育 ISAC
  • 供应链 ISAC
  • 地面运输 ISAC
  • 水 ISAC

有许多不同的行业在这些组织之间进行这种特定类型的共享,这对于应对网络安全威胁非常有价值。其中,金融服务ISAC可能是最先进的之一,它已经存在了相当长的时间,并且确实针对金融服务面临的共同威胁进行了详细的信息共享。

NIST网络安全框架与自动化指标共享

继续关注美国政府与信息共享,最近,美国国家标准与技术研究院(NIST)发布了一个网络安全框架,你可以在下面这个网站找到。该框架提供了一个路线图,其中将“自动化指标共享”作为一个发展领域。

那么,什么是自动化指标共享?它本质上是IDS警报,即入侵检测系统的警报和响应信息在广泛的公共和私营组织之间进行自动化共享。你可以看到,这种共享可以为组织提供可操作的信息,并且正以一种有望让这些组织看到此类共享好处的方式得到支持,同时真正限制可能因共享信息被滥用而引发的责任。

这是NIST网络安全框架的主页,你可以在此获取关于“改善关键基础设施网络安全的框架”的全部文本。从这个特定区域,你还可以在“发展、协调与合作领域”下找到一个路线图,其中非常突出地包含了“自动化信息或自动化指标共享”。这就是我提取文本的具体领域,它是NIST政府工作的一部分。这应该有助于为公共和私营部门组织提供一些额外的共享可能性,同时限制潜在风险。顺便说一下,你可以在文本中看到,特别指出的一点是ISAC和各种联盟,它们在选定的合作伙伴之间基于信任关系提供点对点共享。这确实促进了ISAC和其他类型的联盟的理念,以帮助共享有关计算机安全的详细技术信息。

其他共享组织与框架

在美国政府类型的组织之外,还有像“网络分析数据档案”(CADA)这样的组织。CADA是一个旨在整合来自大量组织(包括大学、公共和私营组织)的共享信息的组织,目的是提供关于威胁、漏洞以及互联网上实际发生活动的综合信息。他们有一整套共享动机。

这是CADA关于数据共享和促进数据共享的网页。正如你所见,他们非常认真地尝试引入大量数据集,然后提供它们,以便你可以下载和使用这些包含大量关于攻击、漏洞和互联网活动信息的数据集,并允许你将你的组织与许多其他类型的组织进行比较。

另一种思考信息共享的方式是,威瑞森(Verizon)有一个名为“事件记录和事件共享词汇表”(VERIS)的组织。VERIS每年都会发布一份关于信息(尤其是数据泄露调查)的年度报告。这是一种整合整个威瑞森客户群信息,并通过年度报告公开分享的方式,该报告创建了关于事件分类的统计数据,并生成年度数据泄露报告。这是了解每年发生情况的一个极佳信息来源。你可以在VERIScommunity.net页面找到它。它确实是一个极佳的数据来源,旨在支持匿名报告。如果你是威瑞森的企业客户,你的数据会自动匿名包含在此报告中,并且客户群足够广泛,无法反向追踪到具体归属。

VERIS用于事件分类的框架也非常有趣,因为他们真正试图理解是谁在做这些事情,以及他们试图在基础设施内做什么。你可以看到,他们包含了各种要素,如人口统计、发现方式、影响等用于事件分类;以及主体、资产、属性等,这些非常详细的信息最终形成了VERIS每年数据泄露报告中有价值的统计信息。

《eWeek》有一篇关于威瑞森如何编制年度数据泄露报告以及事件记录和事件共享词汇表的优秀文章,详细说明了它如何被用于实际创建这份报告。因此,这是一个关于可信数据共享如何实际产生关于数据泄露(尤其是我们在新闻中经常看到的信用卡信息泄露等)的非常有价值信息的绝佳例子。我强烈建议你看看这篇《eWeek》文章。


总结与决策

本节课中我们一起学习了关于IDS警报信息共享的各个方面。那么,结论是:你应该共享事件数据吗?这确实是问题所在。像所有好的问题一样,没有单一的正确答案。这真的取决于你能够用这些数据做什么。

你是否属于一个由ISAC支持的行业?如果是,你与其他组织存在信任关系,共享数据的风险相对较低。
你是否有一个像VERIS(威瑞森)这样的匿名场所来共享事件数据?在数据共享网络中,是否有地方可以整合信息,从而不会暴露可能反过来使你自己组织面临更脆弱处境的信息?
你是否能够或应该为了全球利益而自愿提供数据?参与CADA等组织。根据你所在组织的类型,你可能会认为自愿提供一些数据和信息,对全球利益和全球公益的贡献大于暴露组织内部数据所带来的风险。

归根结底,这始终是一个权衡计算:风险是否大于收益?收益包括通过参与这些框架可以学到的信息,以及为全球理解关于在这些情况下各处收集的IDS警报正在发生什么做出贡献的能力。

063:IDS/IPS未来应用场景 🚀

在本节课中,我们将探讨入侵检测系统(IDS)和入侵预防系统(IPS)在传统互联网或IT环境之外的一些潜在应用领域。我们将从移动计算环境出发,进而讨论智能电网、工业控制系统乃至太空系统等更具差异性的场景,以更广阔的视角思考IDS/IPS的未来。

移动环境中的应用 📱

上一节我们回顾了IDS/IPS的传统应用,本节中我们来看看它们在移动环境中的前景。这里的“移动环境”不仅指当前的智能手机,更涵盖了可穿戴设备(如Fitbits、智能手表、智能眼镜等)以及其他所有将连接到互联网的小型设备。

在这些设备频繁穿梭于家庭、工作场所、咖啡店等不同安全域并不断连接和断开的情况下,如何监控和响应安全事件成为一个开放性问题。IDS的应用方式可能包括:

  • 在智能手机上运行IDS,由手机控制其他关联设备。
  • 在汽车基础设施内部署IDS。
  • 在飞机或医疗设备等场景中应用IDS技术。

解决方案可能来自我们随身携带的设备,也可能来自我们经过的固定基础设施。随着移动和可穿戴计算系统的飞速发展,我们必将在此领域应用更多的IDS和IPS技术。

解决移动环境IDS的挑战

当我们开始尝试解决众多移动设备的IDS问题时,必须认识到一个关键点:不存在一个可以放置传统IDS的固定接入点来监控所有设备的流量。我们面临以下可能路径:

  • 部署多样化、分布式的IDS,并尝试协调所有信息。
  • 依赖服务提供商(如LTE运营商)在快速变化的基础设施中为我们提供“IDS即服务”。

此外,移动环境还面临低功耗、低性能的挑战。虽然智能手机功能强大,但许多移动设备(如手环、手表)在电源、资源和计算能力方面非常有限,难以承载复杂的主机型IDS功能或进行跨设备通信协调。

这引出了物联网(IoT)中的IDS/IPS问题。从IDS的角度看,一个关键挑战是:如何识别针对个人的攻击,而非单个设备。即当一个人成为目标时,其关联的多种设备可能同时遭受攻击,我们能否在移动环境中构建能识别此类情况的IDS?

云计算环境中的应用 ☁️

云计算环境是IDS应用的另一个重要领域。这是一个分布式计算环境,但带来了“多租户”的新挑战。问题不仅在于跨分布式基础设施的协调,更在于如何获得管理权限,以查看执行IDS/IPS功能所需的重要可观测数据。

一种可能的解决方案是将“IDS即服务”作为云计算环境的一项服务提供。随着技术成熟,我们可以获取适合云环境租户(而非云环境所有者)的检测信息。鉴于云环境正成为多种攻击的常见目标,它无疑是部署IDS/IPS基础设施的合适场所,预计该领域在近期将有显著进展。

智能电网与工业控制系统中的应用 ⚡

在不久的将来,IDS在电力领域(尤其是智能电网)的应用将变得至关重要。美国国家标准与技术研究院(NIST)发布的《智能电网网络安全指南》(IR 7628)为在智能电网中纳入入侵检测和预防提供了许多建议和要素。

然而,指南也承认这是一个研发挑战,无法直接将现有商业产品应用于智能电网,需要新的技术、方法和产品来实现异常行为检测、恶意代码发现等功能。智能电网只是工业控制系统(ICS)的一个例子。在电力之外,还有许多其他工业控制场景可以应用IDS。

太空系统中的应用 🛰️

最后,我们探讨IDS在太空系统中的应用。随着太空领域从政府主导转向越来越多的私营企业参与(如卫星系统),如何保护这些系统变得愈发重要。

我们需要思考如何利用IDS/IPS来保护太空系统,特别是控制卫星和载人航天飞行所需的特定应用技术。相关文献已开始讨论太空系统的脆弱性以及未来如何应用入侵检测与预防技术。预计在未来一到五年内,IDS在太空系统和工业控制系统中的应用将成为备受关注的领域。

总结

本节课我们一起探讨了IDS/IPS在多个新兴领域的未来应用场景,包括移动计算与物联网、云计算、智能电网、工业控制系统以及太空系统。任何具有复杂性、存在攻击面、并且能够通过分类器区分正常行为与攻击行为(或存在基于签名的攻击)的系统,都适合应用IDS/IPS技术。可以预见,未来将有越来越多的系统开始应用这项技术。

064:亟待解决的技术挑战 🔍

在本节课中,我们将探讨入侵检测系统(IDS)和入侵防御系统(IPS)领域内尚未解决的一系列技术挑战。这些挑战的解决,将极大地提升IDS/IPS检测和应对各类威胁的能力。

这些挑战的范围很广,从多个异构IDS系统的高度分布式协调,到移动计算和物联网带来的本地化问题。它们涵盖了当前研究和商业工具开发中活跃的领域。

异构系统的协调与集成 🤝

上一节我们概述了挑战的范围,本节中我们来看看第一个具体问题:异构IDS/IPS系统的协调。正如我们之前讨论过的,将异构且广泛分布的IDS和IPS系统整合到一个协作框架中,以便协同使用传感器和分类器,存在诸多困难。

目前有一些工作致力于实现IDS/IPS系统之间的“松耦合”。所谓“松耦合”,不是试图构建一个无所不能的单一、庞大的IDS/IPS系统,而是让多种不同类型的IDS系统协同工作,使它们能够共享数据集。

其目标是:在靠近目标的地方部署非常详细和专门的IDS/IPS,然后随着距离目标越来越远,将所有不同目标的检测结果整合到一个统一的系统中。这个整合后的系统将能够全面理解任何特定攻击的范围和规模。

这种协调的目标是创建一种“邻里守望”模式。社区中的每个家庭就像一个独立的IDS或IPS,而全局的邻里守望机制则让每个人都能上报他们的威胁指标,从而在整个更大的域内追踪威胁。通过汇集大量较小的指标,不仅能追踪威胁,甚至可能协调响应,实现多IPS协同防御的功能。

为了创建这样的系统,我们需要解决以下挑战:

  • 创建兼容的IDS/IPS标准:以便将异构的、采用不同方法的IDS和IPS系统结合起来,整合指标以在大规模场景中获得更好的检测效果。
  • 协调分布式响应:更重要的是,如何在大规模技术环境中协调分布式响应,构建一个超越单点检测和防御的入侵防御系统。

这种动态的防御方法有望通过逐步提升防御等级来增强系统韧性,因为我们能从分布式系统中越来越清楚地了解所有个体攻击及其发生方式。这是IDS/IPS领域一个非常活跃的研究方向。要解决这一技术挑战,不仅需要定义标准(标准应该是什么),还需要思考哪些是最需要标准化的内容,以及哪些应该留给终端IDS/IPS系统自行处理。

非传统设备与网络环境 📱

除了众多异构IDS/IPS的协调,另一个挑战是单个IDS/IPS系统开始越来越多地与非传统设备集成。这实际上始于电信网络与互联网的融合,这是非传统互联网设备的第一个例子,即手机以及将蜂窝技术、LTE与传统互联网技术合并使用。

通过将各种功能集成到小型终端设备中,我们不仅改变了传输机制,也改变了与这些非传统设备相关的应用程序和操作系统的根本性质。试想,现在所有娱乐内容都通过IP网络传输,要在这些网络中调查异常情况就变得复杂了,因为你不再只有标准的基于互联网的服务,还有许多其他内容通过IP和TCP/IP协议传输。

以传统家庭为例。最初,家庭互联网连接可能只连接到你的Windows、Mac或Linux电脑,正常行为是浏览网页、收发电子邮件等。但现在,如果你使用的是Fios或Comcast等同时提供电视和互联网服务的供应商,你通过同一线路获得的许多娱乐内容也是以IP形式传输的。此外,家中其他设备和物品的信息传输也改变了家庭网络“正常行为”的定义。你可能甚至不知道家中支持IPv6,如果你的机顶盒有IPv6地址,而你的笔记本电脑和系统可能没有。

这种情况在未来可能会更加普遍。解决家庭、企业和基础设施中各个层面的非传统设备问题,将是IDS系统未来一段时间内的研究领域。这使得异常检测系统比我们只处理传统TCP/IP连接时更加棘手。

加密、嵌入式协议与虚拟化 🔐

还有一些其他正在面临的挑战值得提及。

  • 普遍加密:几乎所有网络通信都在使用加密协议(如HTTPS)替代明文通信。这对IDS意味着什么?如果你的IDS依赖于深度包检测或网络流量分析,而流量是加密的,你将无法获取有效信息。这会推动IDS向终端(即基于主机的IDS)发展,或者让IDS更关注网络元数据(不需要查看载荷)。这是当前IDS社区应对这一挑战的两种主要方式。
  • 嵌入式协议:本质上,所有服务都通过少数端口(如80端口)提供。一切都变成了Web服务,或者嵌入在其他类型的服务中。最初,IDS可以通过查看服务类型来了解该服务的正常行为。但有了嵌入式协议,这种能力就丧失了。如果你只看到协议的外层信封,它几乎无法告诉你数据包内部协议的标准和正常行为是什么。这在网络上如此,在主机上也是如此,但在动态虚拟机的情况下更为复杂。
  • 动态虚拟机:现在,一个主机上运行着多个被封装的操作系统(虚拟机),而不是一个你可以查看其整个内部结构的操作系统。那么,如果我要做基于主机的IDS,而该主机实际托管了许多虚拟机,我是应该进入每个虚拟机做基于主机的检测,还是将最外层主机的基于主机的IDS视为基于网络的IDS,查看进出虚拟机的流量?目前有许多不同的技术方法正在解决这个问题。

所有这些嵌入式协议、嵌入式虚拟机以及计算位置动态变化的复杂性,正在推动IDS研究朝着传感器设计、传感器间通信以及IDS分析结构位置等方面变得更加复杂。

移动性、匿名性与隐私问题 🏃‍♂️

另一个完全不同类型的挑战是互联网的开放匿名访问。当城市中的公共Wi-Fi、机场、咖啡馆等区域提供无需用户问责的互联网接入时,可能会产生大量恶意活动,且无法追踪到具体的责任人。那么,当入侵源是一个解析到提供免费Wi-Fi的机场或公共场所的动态IP地址时,IDS该如何处理?IDS本身是否有办法收集足够的信息来进行额外的问责?当这些连接建立时没有提供特定的身份信息,这就构成了挑战。

这与整个移动基础设施带来的威胁相结合。当你的基础设施和威胁都变得移动(不仅仅是目标点移动)时,IDS在试图理清攻击源、攻击目标以及如何界定其系统内检测到的任何特定入侵的范围时,就困难得多。

嵌入式协议、动态虚拟机、无需问责的互联网自由访问以及日益集中在80端口的服务,这些因素共同构成了巨大的IDS挑战,需要创造不依赖于“源到目的地在固定基础设施中”这一简单假设的新技术。

最后,还有隐私问题的整个方面。IDS收集信息、处理元数据、分辨事件受害者和攻击者的过程,可能会暴露网络通信协议中过多的个人信息。在我们拥有非常简单互联网基础设施的时代,隐私问题基本上通过运行IDS的固定基础设施的所有权来解决。但现在,如果IDS分布在移动环境中,具有潜在不可问责的IP结构以及我们刚刚讨论的其他一些问题,就会引发我们以前在IDS方面不必过多担心的额外隐私问题。因此,我们肯定会在未来看到更多这方面的关注。

攻击早期与延迟攻击的检测 ⏰

IDS需要解决的下一个技术问题是:如何真正检测攻击的早期迹象?正如我们在课程中看到的,大多数IDS特征规则直到攻击已经全面展开时才会触发。IDS和IPS难以理解攻击的前兆是什么样子的。这意味着我们需要更好的模型和分类器来真正区分这种前兆活动和正常活动。无论是基于特征还是基于异常检测,其核心理念是:我们用于攻击的传统模型似乎不足以真正理解和检测这些攻击的早期迹象。我们需要能够帮助我们在事件发生之前就更早地做出响应的东西。

IDS和安全领域另一个显著问题是检测延迟攻击。这是指恶意软件或某种攻击发生,但其载荷隐藏一段时间后,攻击的下一个阶段才真正发生。想象一下,一个用户带着笔记本电脑往返于办公室和家庭之间。在家时,他可以浏览互联网,系统可能被感染,但恶意软件什么都不做,只是潜伏观察,直到发现用户建立了VPN连接或回到组织内部网络,然后才发起内部攻击。这样,恶意软件利用了同一硬件和软件在不同安全域之间移动的事实,并使用延迟攻击技术来防止标准IDS和防火墙检测系统阻止攻击启动,允许恶意软件在发起进一步攻击之前渗透成为“内部人员”。

那么,IDS系统该如何应对?它必须能够处理连接或断开连接时发生的情况。这可能回溯到基于主机的IDS,或者从不同视角看待基于网络的IDS,以检测那些试图利用我移动到不同安全领域这一事实的攻击。因此,IDS也必须能够在不同安全领域之间移动。我们可以通过本地化、基于主机的检测来解决,也可以通过IDS通信来解决,即每个不同的安全领域可能有一个不同的IDS。想象一下,如果我的家庭基础设施网络上有IDS,可以收集指标并传递给我工作环境中的IDS系统,这样两者可以比较活动,从而更好地界定系统中检测到的任何恶意软件或活动。

入侵防御响应与误报率 🛡️

改进IPS领域有很多需求,需要理解我们可以采取哪些行动,以及哪些是有效的行动。这是当今IDS世界中一个非常活跃和开放的问题。目前,我们真正有信心在任何IPS中采取的行动非常有限,主要是在检测到攻击后阻断连接,有时进行少量重新配置,但范围非常有限。IPS让人望而生畏,这是有道理的,因为我们还没有足够了解如何采取既能降低组织风险又不会增加风险的行动。目前风险很高,即使只有适度的误报率,因为任何误报都会触发某种响应功能,从而在我的系统中造成比收益更多的损害。

我们需要找到一种方法,将行动与检测的置信度联系起来,并找到能够采取低影响行动的方法,随着我们对入侵者实际意图的理解越来越有信心,再逐步升级为更高影响的行动。因此,很多我们手动调查入侵者目标的工作(基于IDS警报),IDS应该具备同样的置信度水平。随着围绕一组给定攻击收集到越来越多的指标,可以导致采取可能越来越危险或风险越来越高的行动,因为我们知道攻击形势更加严峻。这样,我们就不只是简单的“检测-反应”循环,而是“检测-增加置信度-小规模反应-利用IPS反应本身提供更多数据以增加置信度-最终阻止攻击目标达成”。

说到高误报率,在异常检测中,误报率仍然太高,以至于无法在大多数真实环境中放心使用。目前机器学习技术有很多进展,在一些功能更有限的特定领域,异常可能更容易被检测到。但我们在异常检测方面已经研究了很长时间,仍然没有取得那种突破性的系统,使其能够在各种环境中真正发挥作用。不过,当前行为分析和行为检测的研究正开始指明方向,有可能降低我们一直存在的高误报率,帮助我们创建具有可管理、足够低的误报率的IDS或异常检测系统,使我们能够有信心将其直接整合到安全团队或IPS响应中。

相关领域的交叉促进 📈

还有许多其他进展并不直接针对IDS世界的任何特定技术挑战,但事实证明,解决这些研究也给我们带来了IDS挑战方面的益处。

  • 大数据与图分析:我们在大数据分析、图分析和流处理方面取得的进展,也有助于整体上改进分类器,从而提升我们在入侵检测方面的能力。
  • 系统韧性研究:我们越是能创建高韧性的系统,越是了解需要何种响应来增强韧性,这些就可以直接融入到IPS中,从而将韧性的进步与IPS的进步联系起来。
  • 度量与指标:随着我们更好地理解如何定量测量风险、定量测量威胁影响,我们应该能够更好地使自动化响应与这些度量标准对齐(这些度量并非直接为IDS设计,但有益于IDS)。
  • 增强的逆向工程与特征生成:如果我们可以进行更多的自动化逆向工程和自动化特征生成,那么IDS系统就有能力基于我们实际检测到并逆向分析的恶意软件来更新自己的特征库。同样,我们在逆向工程、沙箱技术(如FireEye提供的在环境中引爆恶意软件的功能)方面取得的进展,可以帮助我们进行自动化特征生成,从而推动IDS系统的发展。

本节课中我们一起学习了IDS/IPS面临的一系列技术挑战。没有一个挑战能单独让IDS成为解决所有问题的根本技术。但正如你所见,整个安全社区和分析社区正在进行的研究,其相互交织的性质,将推动IDS和IPS领域不断向前发展。

065:IDS/IPS发展前沿资讯获取途径 🔍

在本节课中,我们将探讨如何获取入侵检测系统(IDS)和入侵防御系统(IPS)技术的最新发展动态。课程将介绍几个关键的资讯来源,帮助你紧跟该领域的技术趋势。

核心资讯来源

上一节我们讨论了IDS/IPS的技术挑战,本节中我们来看看如何持续追踪这些挑战的解决方案与发展方向。获取最新资讯主要依赖两个核心渠道:RSA大会和RAID会议。

RSA大会

RSA是主要的计算机安全会议,通常在加利福尼亚州旧金山会议中心举行。这是一个规模庞大的会议和供应商展会。去年,大会设立了25个不同的技术专题。即使无法亲临现场,也能通过其产出的丰富信息了解IDS/IPS领域的最新动态。

以下是关注RSA大会的几个有效方法:

  • 浏览会议专题:首先可以查看RSA大会提供的各个技术专题。这些专题全面涵盖了IDS领域正在发生的一切。
  • 搜索特定议题:我每年都会在RSA议程中进行简单搜索,专门查找“入侵检测”及相关关键词。例如,今年可以找到John Lysk的演讲《现代入侵检测:针、干草堆与网络犯罪》。其链接提供了关于网络犯罪与现代入侵检测如何应对当前威胁的宝贵信息。
  • 阅读相关博客:在RSA材料中搜索“入侵检测”会出现相关博客。像John Lysk这样的专家会在博客中讨论近期动态,通常提供关于商业世界中识别攻击、在犯罪市场或威胁领域进行入侵检测的最新数据和信息。
  • 关注主题演讲:主题演讲是观察趋势的绝佳方式。以RSA 2014上Art Coviello的主题演讲为例,其中的图表汇集了关键议题,如大数据、边界、物联网、基于情报的方法、加密等,这些都与我们讨论过的入侵检测世界的问题直接相关。

因此,后续需要观看的几个视频将来自RSA的一些主题演讲和重点关切领域,它们能让你很好地了解随着未来发展,入侵检测系统必须应对哪些问题。

RAID会议

RAID是“入侵检测最新进展”会议。这是一个学术会议,发表经过同行评审的论文,深入探讨理解IDS/IPS不同元素所面临的具体技术挑战。尽管名称如此,但并非RAID的每篇论文都专门关于IDS或IPS。不过,你在RAID看到的大多数论文都与我们上一视频中谈到的IDS/IPS世界中的某个技术挑战有关。

2013年,该会议在圣卢西亚举行。2014年在瑞典哥德堡举行。2015年应会回到美国。关注RAID的举办地点很重要。如果你有机会参加RAID,可以与许多推动入侵检测和入侵响应技术未来发展的学者和个人交流。即使无法参加,RAID的论文和主题领域也是了解学术界处理IDS/IPS关键问题的绝佳概要。

以下是关注RAID动态的一些方法:

  • 分析论文主题:我喜欢根据RAID的议程和摘要,每年制作词云并进行比较和可视化分析。这至少能让我很好地了解IDS研究的焦点如何随时间变化。例如,2014年的词云显示,恶意软件和网络是讨论最多的领域,网络仍然极其重要。相比之下,SSL等话题的占比则小得多。
  • 比较年度变化:将2014年的词云与2013年的对比,可以看到恶意软件仍然非常重要。“移动”在2014年并非主要元素。云在2013年比2014年更重要,似乎在2013年被过度炒作,而在2014年实际提交的论文中占比降低。通过这种方式,你能感受到RAID社区内一些攻击和元素名称的关注焦点。
  • 审视分组议题:除了词云,你还可以查看会议的分组议题标题。这些标题由程序委员会分组,代表了发现的主要主题。例如,2013年的议题涵盖硬件、服务器、恶意软件、认证、网络、云等。而2014年则完全没有硬件议题,焦点大多集中在网络安全和网络上,对恶意软件的关注远超2013年,在漏洞分析和二进制分析方面也有更多内容。
  • 关注主题演讲:2014年的主题演讲也值得注意,因为它聚焦于物联网。查看该主题演讲的摘要,可以感受到2013年至2014年间学术界的关注重点发生了怎样的转移。

其他预测与观点

除了上述核心渠道,还有一些其他地方偶尔会受到媒体大量关注,也需要留意,例如Gartner等机构的预测。

Gartner以在2001年宣称IDS消亡而闻名,但他们似乎从未完全说对IPS和IDS世界的发展。因此,对于这类预测,在本课程中我们持保留态度。本课程尝试关注的不是预测我们将看到哪种商业产品,而是哪些技术挑战最有可能成为研究和商业领域解决IDS问题的焦点。至于这些是否会转化为主要产品,甚至是否会产生任何IDS进展,我认为很难判断。

你也可以从RSA等处获得许多预测,这些预测会被杂志和大众媒体转载。你会发现这些预测通常比较泛泛,例如攻击者可能变得更复杂、攻击面将继续扩大、边界概念逐渐消失、安全团队无论是否准备好变化都会发生等。

还有一些关于网络入侵检测的未来预测,有些更新一些,有些则具有历史参考价值。关注一些专家认为IDS将走向何方是合理的,但根据本课程和本模块的学习,你可能已经具备了与任何关注该领域的专家同等的能力,来展望未来并了解IDS和IPS的发展。他们所说的,基本上与我们基于“什么是IDS”以及“IDS面临哪些技术挑战”得出的课堂结论是一致的。

总结

本节课中,我们一起学习了如何保持对IDS/IPS领域最新发展的了解。我们介绍了两个核心资讯渠道:RSA大会(侧重商业实践与行业趋势)和RAID会议(侧重学术研究与技术挑战)。通过关注这些渠道的议程、演讲、论文和年度变化,可以有效把握技术动态。对于其他商业预测,则应批判性地看待。跟踪RSA和RAID的动向,并适当关注其他预测,就能较好地保持对IDS和IPS技术世界发展现状的了解。

posted @ 2026-03-29 09:18  绝不原创的飞龙  阅读(2)  评论(0)    收藏  举报