入侵检测技术综述
0x01 IDS简介
入侵检测(Intrusion Detection),是指对系统的运行状态进行监视,发现各种攻击企图、攻击行为或者攻击结果,以保证系统资源的机密性、完整性和可用性。
入侵检测系统(IDS)是一种安全技术,用于实时监测计算机网络或系统中的活动,并识别和报告可能的安全威胁和攻击行为。IDS可分为基于规则的和基于异常检测的两种类型,根据监测数据源的不同,可分为网络入侵检测系统(NIDS)和主机入侵检测系统(HIDS)。
0x02 IDS发展史
入侵检测系统(英语:Intrusion-detection system,缩写为 IDS)是一种网络安全设备或应用软件,可以监控网络传输或者系统,检查是否有可疑活动或者违反企业的政策。
1. 初期阶段(1980年代)
1980年4月,James P. Anderson首次提出入侵检测的概念,并针对计算机系统威胁进行了分类。同年,他还提出了利用审计记录监视入侵行为的思想。
1986年,W.T.Tener在IBM主机上开发了Discovery系统,是最早的基于主机的入侵检测系统(HIDS)原型。
2. 网络安全事件催生发展(1988年)
1988年的莫里斯蠕虫事件发生后,网络安全引起了军方、学术界和企业的高度重视。DIDS(分布式入侵检测系统)应运而生,将基于主机和基于网络的检测方法集成到一起。同年,SRI/CSL的Teresa Lunt等人改进了Denning的入侵检测模型,并实际开发出了IDES(入侵检测专家系统)。
3. 基于网络和基于主机两大阵营(1990年)
1990年,加州大学戴维斯分校的L. T.Heberlein等人开发出了NSM(Network Security Monitor),标志着入侵检测系统的两大阵营正式形成:基于网络的IDS和基于主机的IDS。
4. 智能化和分布式发展(1990年代至今)
从20世纪90年代到现在,入侵检测系统的研发呈现出百家争鸣的繁荣局面,并在智能化和分布式两个方向取得了长足的进展。1995年,NG-IDES(下一代入侵检测专家系统)产生,可以检测多个主机上的入侵。1996年,GrIDS(基于图的入侵检测系统)出现,主要用于针对大规模协同、自动化检测。1998年,S.Staniford等人提出了CIDF(公共入侵检测框架)。2007年,CIDF工作组发布了3篇IETF RFC标准草稿,分别为IDMEF(入侵检测消息交换格式)、IDMR(入侵检测消息交换要求)和IDXP(入侵检测交换协议)。
参考链接:
- James P. Anderson的技术报告《Computer Security Threat Monitoring and Surveillance》:https://apps.dtic.mil/dtic/tr/fulltext/u2/a065487.pdf
- Discovery系统:https://dl.acm.org/doi/10.1145/62212.62215
- 分布式入侵检测系统DIDS:https://ieeexplore.ieee.org/document/479768/
- 入侵检测专家系统IDES:https://ieeexplore.ieee.org/document/584384/
- NSM(Network Security Monitor):https://dl.acm.org/doi/10.1145/129830.129838
- 下一代入侵检测专家系统NG-IDES:https://ieeexplore.ieee.org/document/471719/
- 基于图的入侵检测系统GrIDS:https://dl.acm.org/doi/10.1145/232529.232547
- 公共入侵检测框架CIDF:https://ieeexplore.ieee.org/document/7121455
- RFC 4765:https://tools.ietf.org/html/rfc4765
- RFC 4766:https://tools.ietf.org/html/rfc4766
- RFC 4767:https://tools.ietf.org/html/rfc4767
0x03 IDS分类
1. 根据对象划分
1)主机入侵检测系统(Host-based IDS,HIDS)
HIDS运行在单个主机上,监视主机本身的行为和资源的使用情况,包括文件系统、操作系统、网络连接等。HIDS通常在主机上运行一个特定的代理程序,该程序收集主机的安全事件,并将它们报告给中央的IDS控制中心。常见的如OSSEC、Osquery、Tripwire等。
2)网络入侵检测系统(Network-based IDS,NIDS)
NIDS对整个网络流量进行监视和分析,它能够监视网络上的所有主机,发现网络中的异常流量和攻击行为。NIDS通常通过镜像端口或网络设备(例如交换机、路由器)捕获流量,并将流量分析结果报告给IDS控制中心。常见的如Snort、Suricata等。
2. 根据检测技术划分
1)误用检测模型 (MisuseDetection)
误用检测模型是一种基于特征的入侵检测技术,主要适用于已知的攻击模式,它主要通过检测网络流量、系统日志和其他特定信息源中的已知攻击特征,来识别可能的恶意行为,能够快速检测已知攻击,具有高准确性。优点是高效、快速、准确,缺点是对于新型攻击,可能会出现漏报或误报,因此需要及时更新攻击特征库。
2)基于异常的检测模型(AnomalyDetection)
异常检测是一种常用的检测未知攻击的技术,主要基于统计学、机器学习等技术实现。该模型通过学习正常的系统行为,然后检测出与正常行为不一致的行为,从而识别潜在的攻击。该模型通常需要一段时间来学习正常行为模式,并且容易产生误报,异常检测的难点在于如何处理高维度、复杂和动态变化的数据,如何建立刻画正常的行为轮廓。
0x04 检测模式
1. 误用检测
误用检测是较早出现的入侵检测分析方法,属于第二代入侵检测技术,它是基于知识(模式)的检测方法,根据已知的入侵模式来检测入侵。
基于特征的误用检测技术的核心是维护一个知识库。对于已知的攻击,它可以详细、准确的报告出攻击类型,但是对未知攻击却效果有限,而且知识库必须不断更新。
常用的误用检测模式和方法包括:
1)模式匹配方法
模式匹配方法是误用检测中最常用的一种方法之一。它的基本思想是将已知的攻击模式或特征与网络流量或日志等数据源中的相应模式或特征进行比对,以检测出潜在的攻击行为。
模式匹配方法可以基于不同的技术实现,如正则表达式、字符串匹配、语法分析等。例如,在网络安全中,常用的模式匹配方法包括:
基于正则表达式的模式匹配:该方法将正则表达式作为攻击模式的表示方式,并将网络流量或日志数据转换成字符串进行匹配,以检测是否存在潜在的攻击行为。正则表达式通常包含特定的字符串模式、元字符和修饰符等,可以灵活地表示各种攻击模式。
基于字符串匹配的模式匹配:该方法基于字符串的匹配算法,比如KMP算法、Boyer-Moore算法等,对网络流量或日志数据进行匹配,以检测是否存在潜在的攻击行为。字符串匹配方法相比正则表达式匹配方法,具有更高的匹配速度和效率。
基于语法分析的模式匹配:该方法使用自然语言处理技术对网络流量或日志数据进行语法分析,并通过对分析结果的比对,检测是否存在潜在的攻击行为。该方法可以利用语法分析器对语言的结构和语义进行分析,更加准确地识别潜在攻击。
2)状态迁移方法
状态迁移方法基于有限状态机理论,将网络流量或系统日志等数据源建模成状态机,然后使用状态迁移机制对状态转移序列进行分析和检测。
状态状态分析由R.Kemmerer提出,即将状态转换图应用于入侵行为的分析。状态转换法将入侵过程看作是一个行为序列,这个行为序列使得系统由初始状态转入被入侵状态。
分析时首先针对每一种入侵方法确定系统的初始状态和被入侵状态,以及导致状态转换的条件,即导致系统进入被入侵状态必须执行的操作(特征事件)。然后用状态转换图来表示每一个状态和特征事件,这些事件被集成于模型中,所以检测时不需要一个个地审计记录。
但是,状态转换时针对事件序列分析,所以不善于分析复杂的事件,而且不能检测与系统状态无关的入侵。
3)专家系统方法
专家系统方法是一种基于人工智能的误用检测方法,它将人类专家的知识和经验转化为计算机程序,从而实现对网络流量或系统日志等数据源的自动化检测。
专家系统方法通常由三部分组成:知识库、推理引擎和用户接口。其中,知识库存储了专家的知识和经验,推理引擎负责从知识库中提取知识,并根据输入的数据进行推理,最终给出检测结果。用户接口则提供了与用户交互的方式,例如命令行界面或图形用户界面等。
专家系统方法的优点是可以利用专家的知识和经验,提高检测的准确性和效率。然而,由于专家系统方法需要专家的知识和经验作为输入,因此在知识库的构建和维护上存在一定的挑战。
4)统计分析方法
统计分析方法基于统计学理论,对网络流量或系统日志等数据源进行分析和检测。统计分析方法通常分为基于规则的统计分析和基于机器学习的统计分析。
基于规则的统计分析方法通过定义规则来描述网络流量或系统日志数据中的异常行为,例如,一段时间内的访问频率超出正常范围、异常的数据包大小等。然后,通过分析数据源中的数据,并与规则进行比较,来检测是否存在异常行为。
基于机器学习的统计分析方法则通过训练模型来识别正常行为和异常行为之间的差异。例如,可以使用聚类、分类、回归等机器学习算法,对网络流量或系统日志数据进行分析,识别出潜在的攻击行为。
统计分析方法的优点是可以通过数据挖掘和机器学习等技术,自动地发现潜在的攻击行为。但是,需要足够的数据量和质量,以确保统计分析方法的准确性和效率。
2. 异常检测
异常检测(anormaly detection)是指根据非正常行为(系统或用户)和资源非正常使用情况检测出入侵行为。异常检测是一种是一种常用的检测未知攻击的技术,主要基于统计学、机器学习等技术实现。
异常检测的关键问题在于正常使用轮廓(profile)的建立以及如何利用该轮廓对当前的系统/用户行为进行比较,从而判断出于正常轮廓的偏离程度。
常用的异常检测模式和方法包括:
1)基于统计学的方法
(1)均值/方差方法:该方法是一种最简单的基于统计学的异常检测方法,它假设数据是高斯分布的,即均值和方差都是已知的。通过计算输入数据的均值和方差,检测是否存在远离均值的异常数据。该方法适用于数据比较简单的场景,但对于非高斯分布或多峰分布的数据,效果不佳。
(2)离群点分析方法:该方法是一种基于距离或相似性的异常检测方法,它假设正常数据点之间的距离或相似性比异常数据点之间的距离或相似性更为相似。该方法常用的算法有LOF(Local Outlier Factor)、DBSCAN(Density-Based Spatial Clustering of Applications with Noise)等。
(3)概率模型方法:该方法使用概率模型来描述数据的分布,然后检测与该模型不符的数据点。该方法常用的算法有高斯混合模型(Gaussian Mixture Model,GMM)、密度比方法(Density Ratio Method,DRM)等。
2)基于机器学习的方法
(1)神经网络方法:该方法是一种基于深度学习模型的异常检测方法,它使用多层神经网络对输入数据进行建模,并检测与该模型不一致的数据点。该方法常用的算法有自编码器(Autoencoder)、变分自编码器(Variational Autoencoder,VAE)等。
(2)支持向量机方法:该方法使用支持向量机算法构建分类模型,检测新数据点是否符合该模型。该方法常用的算法有单类支持向量机(One-Class SVM)、支持向量数据描述(Support Vector Data Description,SVDD)等。
(3)聚类方法:该方法使用聚类算法将数据分为不同的组别,然后检测不属于任何组别的数据点。该方法常用的算法有k-means、DBSCAN等。
异常检测技术需关注以下核心问题:
1)特征提取:异常检测的性能和效果受到特征选择和特征提取的影响。特征提取是将输入数据转换为特征向量的过程,可以影响模型的性能和效果。常用的特征提取技术包括主成分分析(Principal Component Analysis,PCA)、线性判别分析(Linear Discriminant Analysis,LDA)、局部特征提取(Local Feature Extraction,LFE)
2)异常检测模型的训练:异常检测模型的训练通常是一个无监督学习过程。这意味着没有标注数据,模型必须从未标注的数据中自行学习如何检测异常。这就需要使用一些特定的算法,例如半监督学习、主动学习等来解决数据不平衡问题,减少正常数据的噪声干扰。
3)模型的评估和优化:由于异常数据的数量很少,模型的评估和优化非常困难。因此,评估和优化异常检测模型需要特殊的技术和策略,例如基于重采样的评估、基于模型复杂度的优化等。
0x05 通用模型
CIDF(Common Intrusion Detection Framework,公共入侵检测框架)是一个由DARPA(美国国防高级研究计划局)提出的用于网络安全监控和入侵检测的开放式框架。它旨在提供一个通用的、标准化的接口,允许不同的入侵检测系统(IDS)组件共同工作,以便更好地发现和响应网络攻击。
CIDF的规格文档由四部分组成,分别为:
- 体系结构(the common intrusion detection framework architecture):描述了CIDF的整体架构,包括组成部分及其相互关系、各部分功能和交互模式等。
- 规范语言(a common intrusion specification language):定义了CIDF中所使用的规范语言,包括事件、警报、规则等的定义方式及其语法。
- 内部通讯(communication in the common intrusion detection framework):描述了CIDF中各组件之间的通信方式、协议以及数据格式。
- 程序接口(common intrusion detection framework APIs):定义了CIDF中各组件的API接口,包括事件产生器、事件分析器、响应单元等组件的接口规范,以及API使用的规则和示例。
1. CIDF体系结构
CIDF由以下四个核心组件组成:
- 事件产生器(event generators),即传感器 (Sensor)
- 事件分析器(event analyers),即检测器(Detector)
- 事件数据库(event databases),即日志管理器(Log Manager)
- 响应单元(response units),即告警管理器(Alarm Manager)
1)事件产生器(event generators)
事件产生器用于采集网络数据流量和系统日志等数据,并将其转化为事件。其主要功能包括数据采集、数据预处理、事件生成和数据传输等。事件产生器需要支持多种协议和格式,如TCP/IP、UDP、ICMP、HTTP、DNS等,以适应不同的网络环境和数据类型。此外,事件产生器还需要进行数据过滤、去重、归一化和格式化等操作,以便于后续的入侵检测和分析。
技术实现上,事件产生器主要采用数据包捕获技术和日志收集技术,例如使用libpcap和WinPcap等工具进行数据包捕获,使用syslog和rsyslog等工具进行日志收集。
2)事件分析器(event analyers)
事件分析器用于对事件进行入侵检测和分析,采用多种入侵检测技术进行处理,并生成告警和日志等信息。其主要功能包括事件分类、异常检测、威胁评估和告警生成等。
3)事件数据库(event databases)
事件数据库是CIDF框架中的数据存储和管理组件,用于存储和管理事件、告警和日志等数据,支持数据的查询、统计和分析等操作。其主要功能包括数据存储、数据查询、数据分析和数据备份等。事件数据库需要支持多种数据库管理系统,如MySQL、Oracle、MongoDB等,以适应不同的存储需求和数据规模。
4)响应单元(response units)
响应单元是CIDF框架中的响应和管理组件,用于对检测器产生的告警信息进行管理和处理,包括告警信息的记录、分类、过滤和通知等功能。
2. CIDF规范语言
CIDF的规范语言用于定义入侵检测相关的概念,如事件、警报和规则等,以及它们之间的关系。规范语言包括以下几个方面:
事件:事件是CIDF中最基本的元素,它指的是网络中发生的某个事件,如一次TCP连接、一条DNS请求等。CIDF使用一个结构化的格式来表示事件,该格式包括事件类型、时间戳、源IP地址、目标IP地址等基本信息。
警报:警报是基于事件生成的,用于描述潜在的威胁或入侵行为。CIDF中的警报可以包括多个事件,并且可以根据一定的规则进行分类和标记。
规则:规则是CIDF中最重要的概念之一,用于描述特定的入侵行为模式。CIDF的规则使用一个结构化的格式来定义,包括条件、行为和元数据等部分。规则可以包括多个事件和操作符,并且可以嵌套使用。
元数据:元数据是描述规则、事件和警报等的附加信息,如规则的作者、版本号、描述信息等。元数据可以用于对CIDF进行管理和维护。
CIDF的规范语言文档定义了一个公共入侵标准语言(Common intrusion specification language,CISL),CISL包括一系列的元素和属性,用于描述入侵检测中涉及的各种对象、事件、行为等信息。
CISL提供了一系列的元素和属性,用于描述入侵检测中涉及的各种对象、事件、行为等信息。这些元素和属性包括:事件、行为、协议、网络地址、时间、警报等。CISL还提供了一些高级元素和属性,用于描述多个事件之间的关系、逻辑和时序关系等。
CISL的主要特点包括:可扩展性、可读性、可理解性、可交互性等。CISL支持使用XML等标准格式进行表示,可以方便地与其他系统进行集成和交互。同时,CISL还可以方便地进行扩展,以适应不同的入侵检测系统和场景。
3. CIDF内部通讯
CIDF内部通信采用一种名为CIDF消息传递协议(CIDF Message Passing Protocol,CMPP)的通信协议,它是一个基于TCP/IP协议栈的应用层协议。CMPP定义了CIDF内部的数据传输格式,用于CIDF内部不同组件之间的通信。
CIDF将各组件之间的通信划分为三个层次结构:
GIDO层(GIDO layer):GIDO层负责定义消息格式、数据结构和编码规则,以实现各个组件之间的数据交换。它定义了一种统一的信息表达格式,使得不同组件之间的互操作成为可能。
消息层(Message layer):消息层负责对传输的信息进行加密、压缩和认证等操作,以确保信息的安全传输。它负责建立一个可靠的传输通道,确保消息在传输过程中不会被篡改或丢失。
传输层(Negotiated Transport layer):传输层不属于CIDF规范,可以采用很多现有的传输机制来实现,如TCP、UDP等。传输层负责实现消息的传输和接收,将消息从一个组件传递到另一个组件。
4. CIDF程序接口
CIDF程序接口(CIDF API)定义了组成CIDF的各个组件之间的通信方式和协议。CIDF程序接口的设计目的是为了实现组件之间的通信标准化和互操作性。CIDF API提供了一系列函数、数据结构、协议和接口规范,以便各个组件之间可以相互交互。CIDF程序接口主要包括:
GIDO接口:GIDO层负责CIDF内部各组件之间信息的标准化格式,GIDO接口规定了如何生成和解析GIDO消息。
MDP接口:MDP(Message Distribution Protocol)接口定义了消息层中用于消息传输的标准化协议,包括消息的封装、加密、解密和认证等操作。
CSP接口:CSP(Component Service Protocol)接口定义了CIDF各组件之间的服务交互方式,包括请求、响应、异常处理等。
0x06 评价指标
入侵检测系统通过如下指标进行评价:
准确率(Accuracy):指IDS检测结果正确的比例。准确率越高,说明IDS检测结果越可信,误报率和漏报率越低。
误报率(False Positive Rate, FPR):指IDS将非攻击性流量误报为攻击性流量的比例。误报率越低,说明IDS误报的情况越少,真实攻击能够被更准确地检测出来。
漏报率(False Negative Rate, FNR):指IDS将攻击性流量漏报的比例。漏报率越低,说明IDS对攻击流量的检测越敏感,真实攻击能够被更准确地检测出来。
响应时间(Response Time):指IDS从接收到流量到做出响应的时间。响应时间越短,说明IDS对攻击的响应能力越强,能够更快地阻止攻击造成的损失。
可扩展性(Scalability):指IDS在处理大量流量时的性能表现。可扩展性越好,说明IDS能够应对更多的流量和更复杂的攻击。
可靠性(Reliability):指IDS在长时间运行过程中的稳定性和可靠性。可靠性越高,说明IDS的运行过程中不易出现故障,能够持续保持良好的检测能力。
可配置性(Configurability):指IDS的配置和部署是否容易。可配置性越好,说明IDS的部署和配置过程更简单,能够更快地投入使用。
准确性主要通过误报率和漏报率进行评估,误报率和漏报率是衡量入侵检测系统效率的两个重要指标。
误报率(False Positive Rate ,FPR)的计算公式:
1 | FPR = FP / N,即FPR = 误报数 / 总数 |
漏报率(False Negative Rate ,FNR)的计算公式:
1 | FNR = FN / N,即FNR = 漏报数 / 总数 |
其中,N 是警报总数,FP 是误报事件总数,FN 为漏报事件总数。理想的入侵检测系统的评估结果是误报率 FPR=0 且漏报率 FNR=0,但实际上误报率和漏报率常常成反比。
使用上述指标可以对误用检测和异常检测两种模型进行比较:
指标 | 误用检测 | 异常检测 |
---|---|---|
误报率 | 较低 | 较高 |
漏报率 | 较高 | 较低 |
响应时间 | 较短 | 较长 |
可扩展性 | 一般 | 更好 |
可靠性 | 差距不大 | 差距不大 |
可配置性 | 更高 | 较差 |
指标对比说明:
- 误报率:异常检测模型通常有较高的误报率,因为它们可能会将正常行为视为异常行为,而误用检测模型的误报率较低。
- 漏报率:误用检测模型的漏报率较高,因为它们只能检测已知攻击的变种,而异常检测模型能够检测未知的攻击行为,因此漏报率相对较低。
- 响应时间:误用检测模型的响应时间较短,因为它们只需要比较流量和已知攻击行为的特征,而异常检测模型需要先建立正常行为的模型,响应时间较长。
- 可扩展性:异常检测模型在处理大量流量时表现更好,因为它们不需要事先了解攻击的特征,而误用检测模型需要大量的训练数据和特征提取算法。
- 可移植性:误用检测模型通常比异常检测模型更易于部署和迁移,因为它们只需要使用预先定义的规则或模型,而异常检测模型需要根据不同环境和场景进行调整。
- 可靠性:两种模型在长时间运行过程中的稳定性和可靠性差别不大。
- 可配置性:误用检测模型的可配置性更好,因为它们可以根据具体的场景和需要进行调整和定制,而异常检测模型的可配置性较差。
0xFF Reference
- https://insecure.org/stf/secnet_ids/secnet_ids.html
- Computer Security Threat Monitoring and Surveillance
- Insertion, Evasion, and Denial of Service: Eluding Network Intrusion Detection
- A survey of outlier detection methodologies
- https://www.cidf.cn/document/index
- https://github.com/cidf-framework/cidf
- https://sites.google.com/site/pcsjunteam/references/di11zhang-ru-qin-jian-ce
- http://www.pkuexploit.com/files/paper9.pdf
- https://www.cnblogs.com/LittleHann/p/12322437.html
- https://en.wikipedia.org/wiki/Intrusion_detection_system