入侵检测

入侵检测

    对于通过网络连接的系统来说,一个重要的安全问题是由用户或软件引起的恶意或者至少是不期望发生的非法入侵。用户非法入侵可能采用的方式是在未经授权的情况下登录到计算机,也可能是已授权用户非法获取更高级别的权限或进行其权限以外的操作。软件非法入侵可能采取的方式有病毒,蠕虫或特洛伊木马程序等。

入侵者

    最受公众关注的两个安全威胁之一是入侵者(另一个是病毒),入侵者通常被称为黑客(hacker)或骇客(cracker)。在有关入侵的一份早期研究中,Anderson将入侵者分为以下三类:

假冒者(masquerader):指未经授权就使用计算机的人或穿透系统的访问控制机制而冒用合法用户账户的人

违法者(misfeasor):指访问未经未经授权的数据,程序或资源的合法用户,或虽被授予访问权限,但却错误地使用这些特权的合法用户。

秘密者(clandestiner user):获取了对系统的超级控制权,并使用此控制逃避审计和访问控制或者阻止生成审计记录的个人。

    假冒者可能是外部用户,违法者通常是内部用户,而秘密用户可能是外部用户也可以是内部用户。

【CRAN04】列出如下的入侵实例:

远程获取电子邮件服务器超级用户(root)权限

破坏Web服务器

猜测和破解口令

复制含有信用卡号等信息的数据库

在没有授权的情况下,查看敏感数据(包括工资记录和医疗信息等)

运行数据包嗅探器(sniffer),以捕获工作站上授权用户的用户名和口令

利用匿名FTP服务器的权限错误(permission error)发送盗版的软件和音乐文件

拨号到一个不安全的调制解调器并获取内部网络访问权

乔装成一个执行者,调用帮助平台,重新设置该执行者的电子邮件口令并学习新的口令。

在未被注意的情况下,未经许可登录工作站。

入侵者行为模型

入侵者的行为模式的一些实例

黑客

  1. 使用IP搜索工具(如NSLookup和Dig等)选择目标。
  2. 为可访问的服务映射网络,使用工具NMAP等
  3. 识别易受攻击的服务(如pcAnywhere)
  4. 蛮力(猜测)pcAnywhere口令
  5. 安装远程管理工具(如DameWare)
  6. 等待管理员登录并捕获他的口令
  7. 使用该口令来访问网络的其余部分。

犯罪计划

  1. 行动快速且准确,使他们的活动更难于被检测到
  2. 通过易受攻击的端口扩大范围。
  3. 使用特洛伊木马(隐藏的软件),为重新进入留下后门
  4. 使用嗅探器来捕获口令
  5. 不过多停留以免被注意到
  6. 少犯或不犯错误

内部威胁

  1. 为他们自己和他们的朋友创建网络账户
  2. 使用他们日常工作通常不用的账户和应用程序
  3. 用电子邮件联系原来的或未来的雇主
  4. 进行私密的即时消息聊天
  5. 访问一些为迎合心存不满的雇员而创建的Web站点,如f'dcompany.com
  6. 大量下载和复制文件
  7. 在下班时间访问网络

黑客:传统上,黑客入侵计算机是为了寻找刺激或者是为了提高其在领域中的地位。入侵检测系统(intrusion detection system,IDS)和入侵防护系统(intrusion prevention system,IPS)是专门为应对这种黑客威胁而设计的。随着入侵者问题认识的深入,众多的计算机紧急应急事件响应小组(CERT)已经建立起来。这些互相协作的组织收集有关系统漏洞的信息,并把这些信息发送给系统管理员。黑客们也习惯性的定期查看CERT报告。

犯罪:有组织的黑客群体已经成为基于Internet的系统最普遍的威胁。这些组织的成员可能是在公司或政府供职,但一般都松散地附属于一个黑客团体。一个典型的特点是,这些团伙的成员都很年轻,东欧,俄罗斯或东南亚的黑客通常是在Web上做生意。他们在地下论坛中碰面,以交换情报和数据,以及进行协作攻击。

内部攻击:内部攻击是最难检测和组织的。员工已经访问并了解了企业数据库的结构和内容。

入侵检测

安全入侵:一个安全事件或多个安全事件的组合构成一个安全事故(security incident),在安全事故中入侵者在未经授权的情况下获取或尝试获取一个系统(或系统资源)的访问权限。

入侵检测:一种监控并分析系统事件的安全服务,目标是发现未经授权而访问系统资源的尝试活动,并提供实时或近似实时的报警。

IDS可分为如下几类:

基于主机的IDS:检测一台主机的特征和该主机发生的与可疑活动相关的事件

基于网络的IDS:检测特定的网段或设备道的流量并分析网络,传输和应用协议,用以识别可疑的活动。

IDS包括以下三个逻辑组件:

传感器(sensor):传感器负责收集数据。传感器的输入可以是包含入侵证据的系统的任何一部分。传感器输入的类型包括网络数据包、日志文件和系统调用迹。传感器收集并向分析器转发这些信息。

分析器(analyzer):分析器从一个或多个传感器或者其他分析器接收输入。分析器负责确定是否发生了入侵。此组件的输出表明是否发生了入侵。输出可以包含支持入侵发生结论的证据。分析器可以提供指导,用于判断什么活动是入侵导致的结果。

用户接口(user interface):利用IDS的用户接口,用户可以查看系统输出或控制系统的行为。在某些系统中,用户接口可以看做是经理,主管或者控制台组件。

基本原理

    身份认证设备,访问控制设施和防火墙在阻断入侵方面都起到了一定作用。另一道防线是入侵检测。

入侵检测基于如下假设:入侵者的行为和合法用户的行为之间存在可以量化的差别。当然,我们不能期望入侵者的攻击和一个授权用户对资源的正常使用之间能够做到清晰,精确的区分。事实上,我们认为两者之间会有一些重叠的部分。

要求

能够不间断的运行,而且人的参与尽可能少

具有容错功能,系统崩溃时,它必须能够很快恢复和重新初始化。

抵御破坏。IDS必须能够检测自身,检测是否已被攻击者修改。

对于正在运行的系统增加最小的开销。

能够根据被检测系统的安全策略进行配置

能够自动适应系统和用户行为变化

能够扩展以检测更多的主机

能够提供很好的服务降级,也就是说,如果IDS的某些组件停止工作,无论出于何种原因,其余部分都应受到尽可能少的影响。

基于主机的入侵检测

    基于主机的IDS向易受攻击或敏感的系统添加专用的安全软件层,例如,数据库服务器和管理系统。基于主机的IDS以多种方式检测系统上的活动,目的是检测系统上的可疑事件,并发送警报。

    基于主机的IDS的主要优点是,它可以检测外部和内部入侵,这一点是基于网络的IDS或者防火墙所不及的。

    基于主机的IDS的入侵检测方法包括以下两种:

    异常检测(anomaly detection):采集有关的合法用户在某段时间内的行为数据,然后统计检验被检测的行为,以较高的置信度确定该行为是否不是合法用户的行为。以下是两种统计异常检测的方法:阈值检测(threshold detection):此方法涉及为各种事件发生的频率定义阈值,定义的阈值应该与具体的用户无关。基于配置文件的检测(profile based):为每一个用户创建一个活动配置文件,用于检测单个账户行为的变化。

    特征检测(signature detection):涉及试图定义一组规则或者攻击的模型,可用于确定一个给定的行为是入侵特有的行为。

    异常检测对假冒者是有效的,假冒者不可能完全正确地模仿他们感兴趣的账户的行为模式。另一方面,这样的技术无法对违法者。对于此类攻击,特征检测方法可能能够通过在上下文中识别事件和序列来发现渗透。实际中,系统可能会使用这两种方法的组合来有效对抗更广范围的攻击。

审计记录

    用于入侵检测的一个基本工具是审计记录。用户正在进行的活动的记录必须及时获取并作为IDS输入。一般采用下面两种方法:

原始审计记录(native audit record):实际上,所有多用户操作都包括收集用户活动信息的审计软件。使用这些信息的优点是不需要其他的信息收集软件。缺点是,原始审计记录可能不包含所需的信息或者不包含便于使用的格式的信心。

检测专用的审计记录(detection-specific audit record):利用一组采集工具专门生成审计记录,而这些记录仅包含IDS所需信息。这种方法的一个优点是,它可疑由厂商单独定制且可应用到各种各样的系统中。缺点是,一台计算机上需要运行两个审计工具包,需要额外开销。

检测专用的审计记录的一个很好实例是由Dorothy Denning 开发的[DENN87]。每个审计记录包含下列几个字段:

主体(subject):动作发起者。主体通常是终端用户,但也可能是代表用户或者用户组的进程。所有的动作是由主体下达的命令产生的。主体可以被分为不同的访问类别,这些类别可以重叠。

动作(action):由主体对一个客体执行的操作或者联合另一个客体完成的操作,例如登录,读取,I/O操作和执行操作等。

客体(object):动作的接受这。例如,文件、程序、消息、记录、终端、打印机和用户或程序创建的结构等。当主体是一个动作(如电子邮件)的接受者时,则将其视为一个客体。客体可以按类型进行分组。客体的粒度依据客体的类型和环境而改变。例如,在数据库行为的审计中,可以以数据库整体或记录为粒度进行审计。

异常条件(Exception-Condition):表示如果有异常发生,则返回异常条件。

资源使用(Resource-Usage):指大量元素的列表,其中每个元素给出某些资源使用量(例如,所打印或显示的行数,读写记录数,处理器时间,使用I/O单元数,会话占用时间等)

时间戳(Time-Stamp):标识动作发生的唯一的时间和日期戳。

    大多数用户操作是由大量的基本动作组成的。例如,复制某个文件涉及执行的用户命令,包括访问确认和建立副本,读源文件以及写目标文件。考虑下面的命令:

    COPY GAME. EXE TO <Library> GAME. EXE

    该命令由Smith发出,要将可执行文件GAME从当前目录复制到<Library>目录下。生成审计记录如下:

 

Smith

execute

<Library>COPY.EXE

0

CPU=00002

11058721678

Smith

read

<Smith>GAME.EXE

0

RECORDS=0

11058721679

Smith

execute

<Library>COPY.EXE

Write-viol

RECORDS=0

11058721680

在这个例子中,复制被终止,因为Smith没有写入到<Library>的权限

将用户操作分解为基本动作有以下三个优点:

  1. 由于客体是系统保护的实体,使用基于动作可以对影响一个客体的所有行为进行审计。

    这样。系统可以检测出试图破坏访问控制的行为(根据返回的以为情况的数目来表明一个异常),并在一个主体可访问的客体集中,通过表示出一个异常来检测出已发生的破坏行为。

  2. 单客体,单动作的审计记录简化了模型,也易于实现。
  3. 由于检测专用的审计记录结构简单,格式统一,所以直接将现有的原始审计记录转换为检测专用的审计记录,可以相对容易获取全部信息或至少部分信息。

异常检测

如上所诉,异常检测技术分为两个广泛的类别:阈值检测和基于配置文件的检测。阈值检测与一段时间间隔内特殊时间发生的次数有关。如果发生次数超过预期发生的合理数值,则认为存在入侵。

    阈值分析就其自身来看,即时对于复杂度一般的攻击行为来说也是一种效率低下的粗糙检测方案。阈值和时间间隔必须是确定的。由于用户是不断变化你的,这样的阈值会生成大量的误报和漏报。然而,简单的阈值检测与更复杂的技术结合起来使用会产生更好的结果。

    基于配置文件的异常检测归纳出单个用户或相关用户组的历史行为特征,用于发现有重大偏差的行为。配置文件包括一组参数,因此单个参数上的偏差可能无法引发警报。

    此方法基于审计记录的分析。审计记录以两种方式作为入侵检测函数的输入。第一种方式是,设计者必须确定度量用户行为的量化指标。一段事件内的审计记录分析可用于确定一般用户的活动配置文件。因此,审计记录用来定义典型的行为。第二种方式是,当前的审计记录作为入侵检测的输入。也就是说,入侵检测模型分析当前审计记录,判定当前行为与一般行为的偏差。

    基于配置文件的入侵检测度量标准实例如下:

    计数器(counter):是一个非负整数,如果没有被管理员复位,则只能增加不能减少。通常用来记录一定时间内某些事件类型的发生次数。例如,一个小时内单个用户的登录次数,单个用户会话过程中执行命令的次数,一分钟内口令验证失败的次数。

    计量器(gauge):可增可减的一个非负整数。通常,计量器用来测量某些实体的当前值。例如,分配一个用户应用的逻辑连接数和某个用户进程的消息队列中的排队消息数。

    间隔计时器(interval timer):两个相关事件的时间间隔。例如,连续两次成功登录到一个账号的时间间隔。

    资源利用(resource utilization):一定时间内消耗的资源数量。例如,一次用户会话期间的打印页数和程序执行过程中消耗的总时间。

    根据这些通用的度量标准,可以用多种方法来确定当前活动是否在可接受的限度内。[DENN87]列出一下几种可行的方法:

    均值和标准差(mean and standard deviation)

    多变量(multivariate)

    马尔科夫过程(Markov process)

    时间序列(time series)

    操作(operational)

    最简单的统计测试时测量一定历史时间间隔内一个参数的均值标准差。这些将反应平均行为及行为的变化幅度。均值和标准差的方法可广泛用于计数器,计时器和资源度量器。但是该方法单独来看,对于实现入侵检测的目的太多粗糙。

    多变量模型基于两个或多个变量之间的相关性。通过对照这种相关性的分析(例如,处理器时间和资源使用情况的先关性,登录频率和会话占用时间的相关性),可以对入侵者行为进行可信度高的表征。

    马尔科夫过程模型用于建立各种状态的转移概率。例如,这种模型可用于查看两个命令相继发生的概率。

    时间序列模型以时间间隔为基础,查找事件发生太快或太慢的序列。存在多种统计测试用于提取异常行为的时间特征。

    最优一种方法是操作模型,它基于对"什么是异常"的判断,而非自动分析历史审计记录。通常,定义一个固定的界限,观测值超出此及界限的行为则被怀疑为入侵。当入侵者行为可从某些类型的活动推导出来时,这种方法的运行效果最好。例如,很短时间内的大量登录尝试表明有人试图入侵。

    作为使用这些不同的度量标准和模型的实例,下表列出了斯坦福研究研究入侵检测系统(IDES)和后续程序使用的各种度量标准。

度量

模型

检测到的入侵类型

登录和会话活动

   

每天或某段时间内的登录频率

均值和标准差模型

入侵者可能在非高峰期登录

不同地点的登录频率

均值和标准差模型

入侵者可能会从特定用户很少使用或从未使用的地点登录

自从上次登录到现在的时间

操作类型

用一个"死"账户入侵

每个会话经过的时间

均值和标准差模型

偏差过大表明存在假冒者

到某地点的输出量

均值和标准差模型

对远程地址发送过多的数据表明敏感数据的泄露

会话资源的使用

均值和标准差模型

异常的CPU使用或I/O操作表示存在入侵

在登录时口令失败

操作模型

试图通过口令猜测的方法入侵

从特定终端登录失败

操作模型

试图入侵

     

命令或程序执行活动

   

执行频率

均值和标准差模型

可能检测到使用不同命令的入侵者或已获得访问特权命令的合法用户的入侵

程序资源利用

均值和标准差模型

异常值表明存在病毒或特洛伊木马,它增加了I/O或处理的使用

拒绝执行

操作模型

可能检测单个用户试图获得更高权限的入侵

文件访问活动

   

读、写、创建、删除频率

均值和标准差模型

一个用户读取和写入的异常表明有假冒用户或浏览者

记录读取和写入

均值和标准差模型

异常表示试图通过推理和聚集来获取敏感数据

读、写、创建、删除的失败的次数

操作模型

可能检测到一直试图访问非授权文件的用户

     

 

    使用统计配置文件的主要优点是不需要有关安全缺陷的先验知识。检测程序学习什么是"正常"行为,然后查找行为的偏差。此方法并不基于与系统有关的特征和漏洞,因此,它易于在不同的系统间移植。

特征检测

    特征检测技术通过观察系统内的时间,运用规则集来判断一个给定的活动模型是否可疑的。一般情况下,我们将所有的方法分为异常检测和渗透识别。尽管这两类方法有重叠部分。

    基于规则的异常检测(rule-based anomaly detection):从其采用的方法和所具有的能力来看,和统计异常检测很相似。在基于规则的方法中,对历史审计记录的分析用来识别使用模式并自动生成描述这些模式的规则集。规则用来表示用户,程序,特权,时隙,终端等过去行为的模式。然后,观测当前行为,将其与规则集进行匹配,来确定每个行为是否与某个历史行为模型相匹配。

    与统计异常检测相同,基于规则的异常检测不需要具备系统中安全漏洞的知识,相反,检测方案基于对过去行为的观测,并假定将来的行为和过去的行为类似。为了使这个方法更有效,需要一个更大的规则库。

    基于规则的渗透识别(rule-based penetration identification):是与入侵检测安全不同的一种方法。这种系统的主要功能是使用规则来识别已知的渗透或利用已知弱点的渗透。规则还可用来识别可疑行为,即使该行为并未超出已建立的可用模式范围。通常,系统中使用的规则与特定的机器和操作系统有关。开发这样的规则的最有效方法是分析从Internet上收集到的攻击工具和脚本。这些规则可以作为由知识渊博的安全人员制定的规则的补充。在后一种情况下,正常的过程是采访系统管理员和安全分析员以收集一套已知的渗透场景和威胁目标系统安全的关键事件。

    IDES中使用的渗透标识机制的运行过程如下:审计记录一旦生成就与规则集进行匹配。如果找到匹配项,则用户可疑度(suspicion rating)增加。如果没有足够的匹配规则,可疑度就会超过一个阈值,导致系统报告异常。

几率谬论

    为了投入使用,IDS应该能检测到绝大多数的入侵,同时保持可接受级别的误报率。如果只检测到有限比例的实际入侵,则系统给人以安全的假象。另一方面,如果系统在没有入侵时频繁警报(误报),则系统管理员要么开始忽略报警,要么浪费很多时间分析此次误报。

    遗憾的是,由于涉及的概率性质,很难满足同时具有高检测率和底误报率的标准。一般来讲,如果实际入侵数比系统的合法使用数低,则误报率将很高,除非测试用例是很容易区别的。这是几率谬误(base-rate fallacy)现象的一个实例。

基于网络的入侵检测

    基于网络的IDS(即NIDS)监控的是一个网络或多个相互连接的网络上选定位置的网络流量。NIDS实时地或接近实时地分析数据包,以试图发现入侵模型。NIDS可以检测网络层、传输层和/或应用层协议的活动。注意,基于网络的IDS与基于主机的IDS是不同的,NIDS检测网络上流向潜在的易受攻击的计算机系统的流量包流量,而基于主机的IDS系统检测的是主机上的用户和软件活动。典型的NIDS工具包括:大量传感器用来监控数据包流量,一个或多个服务器负责NIDS管理功能,以及一个或多个管理控制台提供人机交互的接口。分析流量模式从而检测入侵的工作可以在传感器,管理服务器或在二者上组合完成。

网络传感器的类型

传感器可以部署为两种模式之一:内嵌式和被动式。内嵌式传感器(inline sensor)将插入到网络段,以使正在监控的流量必须通过传感器。实现内嵌传感器的一种方法是,NIDS传感器与另一个网络设备(如防火墙或局域网交换机)进行逻辑组合。此方法的优势是不需要额外的单独硬件设备,只需要NIDS传感器软件。另一种方法是使用独立的内嵌NIDS传感器。使用内嵌传感器的主要动机是使他们检测到一个攻击时能进行阻止。在这种情况下,该设备同时执行入侵检测和入侵防护功能。

更常用的是被动传感器(passive sensor)。被动传感器监控网络流量的备份,实际的流量并没有通过这个设备。从通信流的角度来看,被动传感器比内嵌传感器更有效,因为它不会添加一个额外的处理步骤,额外的处理步骤会导致数据包延迟。

入侵检测技术

与基于主机的入侵检测一样,基于网络的入侵检测使用特征检测和异常检测技术。

特征检测【SCAR07】列出一下例子,这些例子的攻击类型都适用于特征检测:

  • 应用层侦察和攻击:大多数NIDS技术都要分析几十个应用协议,包括动态主机配置协议(Dynamic Host Configuration Protocol, DHCP)、DNS、Finger、FTP、HTTP、Internet消息访问协议(Internet Message Access Protocol,IMAP)、Internet中继聊天(Internet Relay Chat,IRC)、网络文件系统(Network File System,NFS)、邮局协议(Post Office Protocol,POP)、rlogin/rsh、远程过程调用(Remote Procedure Call,RPC)、会话发起协议(Session Initiation Protocol,SIP)、消息服务块(Server Message Block,SMB)、SMTP、SNMP、Telent和简单文件传输协议(Trivial File Transfer Protocol,TFTP)以及数据库协议,即时消息应用和对等文件共享软件。NIDS主要查找已被标识为面向这些协议的攻击模式。攻击的实例包括缓冲区溢出、口令猜测和恶意软件传输等。
  • 传输层侦查和攻击:NIDS分析TCP和UDP流量,也可能是其他传输层协议。攻击的例子有异常数据包碎片,易受攻击端口扫描和TCP特定攻击(如SYN洪泛)
  • 网络层侦查和攻击:NIDS在这一层通常分析IPv4、ICMP和IGMP。攻击的实例是IP地址欺骗和非法的IP首部值。
  • 意外应用服务:NIDS试图确定传输连接上的活动是否与预期应用协议一致。一个实例是主机运行未经授权的应用服务。
  • 策略违背:实例包括使用不恰当的Web站点和禁用的应用协议。

异常检测技术[SCAR07]列出以下实例,这类例子的攻击类型都适用于异常检测:

  • 拒绝服务攻击(Dos)攻击:这种攻击涉及或者显著提高数据包流量,或显著增加连接尝试次数,试图搞垮目标系统。异常检测适用于此类攻击。
  • 扫描:当攻击者通过发送不同种类的数据包探测目标网络或系统时,发生扫描攻击。使用从目标接收到的反馈,攻击者可以了解系统的许多特征和安全漏洞。因此,对攻击者来说,扫描攻击作为一种目标识别工具。通过应用层(如标题抓取(banner grabging))、传输层(如TCP和UDP端口扫描)和网络层(如ICMP扫描)的正常流模式,可以检测到扫描。
  • 蠕虫:可以以多种方式检测到蠕虫在主机之间出传播。某些蠕虫快速传播并占用大量的带宽。还可以检测到蠕虫,因为他们导致通常不通信的主机相互通信,并且可能导致主机使用它们通常不使用的端口。很多蠕虫也执行扫描。

警报日志记录

    当传感器检测到潜在的危险时,它将发送一个警报并记录与记录与事件相关的信息。NIDS分析模块可以使用此信息来细化入侵检测参数和算法,安全管理员可以使用此信息来涉及保护技术。由NIDS传感器记录的典型信息如下:

    时间戳(通常是日期和时间)

    连接或会话ID号

    时间或警报类型

    分级(如优先级,严重性,影响和信任等)

    网络层、传输层和应用层协议

    源和目的IP地址

    源和目的TCP或UDP端口,或者ICMP类型和代码

    通过连接传输的字节数

    已解码的有效载荷数据,如应用程序请求和响应

    状态相关的信息(经过身份验证的用户名)

posted on 2018-12-20 00:42  kexinxin  阅读(2112)  评论(0编辑  收藏  举报

导航