首页> 中国专利> Windows环境下的主机入侵检测方法

Windows环境下的主机入侵检测方法

摘要

本发明公开了一种Windows环境下的主机入侵检测方法,通过分析和建立Windows环境下的指定进程的多阶Native API一致模型和被检测进程产生的Native API序列之间的相关性来发现异常入侵。实际训练阶段,收集指定进程的Native APIs数据并存储在数据库中。对原始数据的分析包括一阶分析和二阶分析,分析和处理数据集合中的一阶和两阶状态转移来建立一阶和二阶模型;在测试阶段,指数迭代检测算法计算Native APIs对应的一阶和二阶Native APIs的正常指数值。在实际系统中,设计了报警提取方法,使在指数迭代检测率的不断变化波动中,对出现的异常事件进行准确地发现和提取,并进行正确的报警。

著录项

  • 公开/公告号CN1731310A

    专利类型发明专利

  • 公开/公告日2006-02-08

    原文格式PDF

  • 申请/专利权人 西安交通大学;

    申请/专利号CN200510043053.2

  • 发明设计人 管晓宏;冯力;孙杰;杨力伟;

    申请日2005-08-04

  • 分类号G06F1/00(20060101);

  • 代理机构61200 西安通大专利代理有限责任公司;

  • 代理人徐文权

  • 地址 710049 陕西省西安市咸宁路28号

  • 入库时间 2023-12-17 16:55:11

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2017-09-22

    未缴年费专利权终止 IPC(主分类):G06F1/00 授权公告日:20070725 终止日期:20160804 申请日:20050804

    专利权的终止

  • 2013-11-20

    专利权的转移 IPC(主分类):G06F1/00 变更前: 变更后: 登记生效日:20131104 申请日:20050804

    专利申请权、专利权的转移

  • 2007-07-25

    授权

    授权

  • 2006-04-05

    实质审查的生效

    实质审查的生效

  • 2006-02-08

    公开

    公开

说明书

技术领域

本发明涉及计算机网络安全技术领域,特别涉及一种Windows环境下的主机入侵检测方法。

背景技术

Windows作为全球主流的桌面操作系统,其受到攻击后造成的影响非常大。从2001年8月5日,“Code Red”蠕虫的全球爆发,直到2003年8月12日“Blast蠕虫”的大规模爆发,互联网上来自Windows操作系统漏洞带来的威胁正在向每个网络用户逼近。下面是由于Windows系统漏洞引发的各种蠕虫攻击造成的经济损失。

                     表1  由于Windows蠕虫爆发造成的经济损失

  蠕虫  经济损失  蠕虫简介  Code Red  26.2亿美元  利用IDA/IDQ ISAPI扩展缓冲区溢出漏洞(MS01-33)  Nimdar  6.4亿美元  利用MS00-78、MS01-20、MS01-21及Code Red留下的后门  Slammer  12.5亿美元  MS SQLServer 2000远程栈溢出(MS02-39)  Blaster  20亿美元  MS RPC DCOM远程缓冲区溢出漏洞(MS03-26)

在目前的Internet中,表1所示的这些蠕虫还仍然继续在网络上传播着,并不断地创造着经济损失。“Code Red”蠕虫利用了Windows IIS ida/idq缓冲区溢出漏洞进行入侵,“Blaster蠕虫”利用了Windows RPC/DCOM的一个缓冲区溢出漏洞进行入侵和传播。这些对全球网络带来了巨大威胁的蠕虫都带有一个共同特征,即通过操作系统的漏洞进行入侵,同时在被入侵机器中进行复制、扫描和传播。由此可知,黑客的入侵和带有入侵特征的蠕虫的蔓延都给我们的网络安全带来了巨大的威胁。因此,我们对Windows平台的各种入侵进行主动检测和防范将会极大地改进Windows平台的安全。

目前在Windows平台上的入侵检测系统主要局限于通过检测网络数据包的方式,如Snort和RealSecure等。在Windows环境中还没有有效的基于主机的入侵检测系统。Windows平台的Snort和RealSecure主要采用对网络数据包进行捕获和特征匹配,对符合攻击特征的网络流量进行报警,它并不是一种基于主机的入侵检测系统,因此当被检测系统处于交换式网络或网络数据被加密时,它几乎不能进行检测,这也是网络入侵检测系统的主要缺点。Intersectalliance公司推出的Snare for windows系统仅仅是对Windows系统中的各种主机审计日志和安全策略进行收集和简单显示,并通过服务器/客户机方式实现主机异常事件的统一收集与处理,它极大地依赖于Windows系统本身的审计功能,因此当Windows本身的审计系统或安全策略配置被改变时,会直接影响Snare系统中所收集的数据,另外Snare检测系统缺乏对主机中系统行为和用户行为的建模分析,因此它的漏报率和误报率很高,而且Snare并不能有效自动地分析入侵。安氏中国公司推出的LinkTrust HIDS,主要是对各种主机上的系统日志和网络行为进行分析,它主要依靠各种网络或主机系统中的特征进行检测分析而并没有对Windows主机内核级的Native API序列进行异常入侵分析,并且还会产生大量的误报和漏报。由于涉及到对系统中大量的资源进行收集和分析,因此同时使用LinkTrust HIDS的众多功能将给主机带来非常大的负荷;Tripwire是一款文件和目录完整性检查工具,它能通过对指定的文件进行MD5校验,帮助系统管理员和用户监视一些重要文件和目录发生的任何变化。通过制定一些基本的安全策略,在文件遭到破坏或篡改时由Tripwire通知系统管理员,由管理员人工采用防范或补救措施。目前Tripwire主要是通过分析Windows系统中的文件和注册表被访问的情况来分析是否有入侵发生,由于不能完全实时对所有文件系统进行检测,而只能分时对文件或注册表的变化进行记录和匹配报警,这一方面很难实现实时检测,另一方面由于用户自己安装和卸载软件也会造成大量的误报。Roberto等人提出了Windows XP环境下的扩展访问控制系统WHIPS,这个访问控制系统是通过内核驱动程序实现的,并且对Windows XP系统中的Native API进行了分类,总结出了关键和危险的Native API,WHIPS主要用于对Windows环境下的关键和危险的Native API进行检测并采取安全防护措施,通过参考监视器(Reference Monitor)对进程触发的每一个关键系统服务进行过滤并判断是否是危险的系统服务,如果不是危险的系统服务,它将直接传递给内核执行,否则将被停止,不允许执行。而整个参考监视器的控制过程都在一个特殊的小数据库(Access Control Database,ACD)提供的控制策略下进行的。但Roberto等人提出的WHIPS模型本质上是基于规则库的,在访问控制过程中仅仅通过规则库中的规则进行匹配,从而简单地采取允许执行和不允许执行等简单的控制,它不能有效地判断系统中的异常入侵的发生。

因此,针对以上这些系统在基于Windows平台的异常入侵检测研究中的不足,以及结合这些系统的优点,我们提出了使用Windows Native API数据作为信息源,建立正常系统行为下的多阶一致模型,以此开始Windows环境下的异常检测工作。在Windows平台通过内核函数Native API建立检测模型,这可以对缓冲区溢出攻击、拒绝服务攻击等威胁较大的攻击从系统底层进行观察和分析,它本质上不同于通过网络获取攻击特征数据包进行检测的网络入侵检测系统。实现Windows环境下的异常检测将对阻止黑客攻击以及防范蠕虫的大范围蔓延将起到巨大的推动作用。

发明内容

本发明的目的在于克服上述现有技术的缺点,提供了一种通过对Windows内核级系统调用函数Native API进行获取,并建立每个进程对应的多阶一致模型(Multi-Steps Native APIs Consistency Model,MSNACM)在实时检测中通过我指数迭代检测方法对各种入侵行为进行检测和报警的Windows环境下的主机入侵检测方法。

为达到上述目的,本发明采用的技术方案是:

1)系统数据Native APIs的获取

当指定的进程每一次发起系统服务调用请求时,首先通过DriverEntry例程加载驱动设备进入Windows系统的内核,此驱动设备利用KeServiceDescriptorTable数据结构完成对系统服务分发表(System ServiceDispatch Table,SSDT)的访问与修改,并利用KeServiceDescriptorTable数据结构确定系统服务分配表的地址,系统先对系统原有的SSDT进行备份,其次,针对每个Native API配置相应的截获函数,并将这些函数的调用地址写入到原系统服务分发表中的“Function addr”项中,并一一对应,使函数指针指向截获函数,以此截获Windows主机的系统服务表来获取操作系统中指定进程产生的每个Native API的所有相关数据,这些数据包括Native API函数的名称、ID和参数长度信息,截获完这些信息后,退出截获过程,并返回到执行的被调用系统服务;

2)通过获取到的Native APIs的数据信息对Windows操作系统中的进程建立正常的行为模型,并以此模型检测系统中的异常情况

通过多阶一致模型建立方法对获取的Native APIs数据进行训练,通过二元组{Bk,Ok}在数据库中建立一阶和二阶一致模型,一阶一致模型通过二元组{Bk,Ok}来表示,其中Bk为Native APIsk在训练集合中的出现频率,Ok是一阶相关指数,通过对集合中的所有Bk按升序排列的位置大小,二元组{Bk,Ok}对训练集合TS(1)中的每一个Native API数据和被观察进程之间建立了一个关系映射表,通常,一阶一致模型可以使用如下表示:

M1={(B1,O1),...,(Bk,Ok)}(1≤k≤n)同样,使用二元组{B(k-1)k,O(k-1)k}来表示二阶一致模型,建立训练集合TS(2)中的每一个Native API和被观察进程之间的一个关系映射表,M2={(B12,O12),...,(B(k-1)k,O(k-1)k)}(1≤k≤n);

3)指数迭代检测方法(Exponential Recursive Detection Algorithm,ERDA),通过循环计算每个Native API对应的正常指数来计算它和被检测进程之间的相关程度,从而通过波动指数的变化来发现异常入侵,

定义

E(sk):在Native API序列中,当前Native API为sk时的进程行为的正常指数;

E(sk-1,sk):在Native API序列中,当前Native API对为(sk-1,sk)时的进程行为的正常指数;

G:当前序列相关性指数,用于度量当前长度的序列和一个正常行为进程之间的最大相关程度;

f(sk):偏差函数,用于度量意外Native API给指定进程的正常行为带来影响的程度,也即,当sk-1的后一个Native APIsk不在一阶模型M1中时,通过计算前一个已经存在的Native APIIsk的加权相关性来度量这种情况对一个正常进程的影响,对f(sk)的定义如下:

>>f>>(>>s>k>>)>>=>ver>>O>^>>k>>*>ver>>B>^>>k>>>s>

一阶相对势估计

一阶相关值估计

算法描述

>>Step>1>:>E>>(>>s>0>>)>>=>>e>>->>1sup>>B>0>′sup>>>>>>(>>s>0>>∈>>T>S>>)>>->->->>(>1>->1>)>>>s>

G=B0

Step k:

   sk-1∈M1,sk∈M1,(sk-1,sk)∈M2

> >>>E>>(>>s>>k>->1>>>,>>s>k>>)>>=>>e>>->>1>G>>>>>>>>G>=>G>+>>B>k>>+>>B>>>(>k>->1>)>>k>>>>>>>->->->>(>1>->2>)>>>s>

>>>s>>k>->1>>>∉>>M>1>>,>>s>k>>∉>>M>1>>,>>(>>s>>k>->1>>>,>>s>k>>)>>∉>>M>2>>,>k>>>b>>s>

> >>>E>>(>>s>>k>->1>>>,>>s>k>>)>>=>>e>>->>1>G>>>>>>>>ver>>B>^>>k>>=>>B>>k>->b>>>,>ver>>O>^>>k>>=>>O>>k>->b>>>>(>∃>>s>>k>->b>>>∈>>M>1>>and>>(>k>->b>→>min>)>>)>>>>>>G>= >>>>(>G>->ver>>B>^>>k>>)>>*>0.5>>(>G>>>ver>>B>^>>k>>)>>>>>>G>*>0.5>>(>G><>ver>>B>^>>k>>)>>>>>>>>>>->->->>(>1>->3>)>>>s>

>>>s>>k>->1>>>∈>>M>1>>,>>s>k>>∉>>M>1>>,>>(>>s>>k>->1>>>,>>s>k>>)>>∉>>M>2>>,>k>>>b>>s>

> >>>E>>(>>s>>k>->1>>>,>>s>k>>)>>=>>e>>->>1>G>>>>>>>>ver>>B>^>>k>>=>>B>>k>->b>>>,>ver>>O>^>>k>>=>>O>>k>->b>>>>(>∃>>s>>k>->b>>>∈>>M>1>>and>>(>k>->b>→>min>)>>)>>>>>>G>= >>>>(>G>+>ver>>B>^>>k>>->f>>(>>s>k>>)>>)>>*>0.5>>(>G>+>ver>>B>^>>k>>>>f>>(>>s>k>>)>>)>>>>>>>(>G>+>ver>>B>^>>k>>)>>*>0.5>>(>G><>ver>>B>^>>k>>)>>>>>>>>>>->->->>(>1>->4>)>>>s>

>>>s>>k>->1>>>∈>>M>1>>,>>s>k>>∈>>M>1>>,>>(>>s>>k>->1>>>,>>s>k>>)>>∉>>M>2>>,>k>>>b>>s>

> >>>E>>(>>s>>k>->1>>>,>>s>k>>)>>=>>e>>->>1>G>>>>>>>>ver>>B>^>>k>>=>>B>>k>->b>>>,>ver>>O>^>>k>>=>>O>>k>->b>>>>(>∃>>s>>k>->b>>>∈>>M>1>>and>>(>k>->b>→>min>)>>)>>>>>>G>=>>(>G>+>f>>(>>s>k>>)>>)>>*>0.5>>>>>->->->>(>1>->5>)>>>s>

>>>s>>k>->1>>>∉>>M>1>>,>>s>k>>∈>>M>1>>,>>(>>s>>k>->1>>>,>>s>k>>)>>∉>>M>2>>,>k>>>b>>s>

> >>>E>>(>>s>k>>,>>s>k>>)>>=>>e>>->>1>G>>>>>>>>ver>>B>^>>k>>=>>B>>k>->b>>>,>ver>>O>^>>k>>=>>O>>k>->b>>>>(>∃>>s>>k>->b>>>∈>>M>1>>and>>(>k>->b>→>min>)>>)>>>>>>G>=>0.5>G>+>f>>(>>s>k>>)>>>>>>->->->>(>1>->6>)>>>s>

如上公式(1-1)到(1-6)所示,指数迭代检测方法循环迭代计算每个出现的Native API和Native API对的正常指数,如(1-2)所示,在初始步时,通过查找初始Native API在一阶一致模型中的一阶势比值,并将其作为初始化值对E(s0)进行初始化,从第二阶开始直到进程结束,则通过调节当前Native API对(sk-1,sk)的相关性指数和权重Ok来计算其对应的正常指数E(sk-1,sk),从真实环境的实验测试中,分别考虑sk-1和sk是否属于一阶一致模型M1以及(sk-1,sk)是否属于二阶一致模型M2的五种情况即(1-2)~(1-6),(1-2)式说明如果sk和sk-1属于一阶一致模型M1,而且同时(sk-1,sk)属于二阶一致模型M2,则通过循环叠加一阶和二阶势相关比值计算相关性指数G。,一旦sk-1、sk以及(sk-1,sk)和一阶一致模型和二阶一致模型M1和M2之间没有任何映射关系,通过公式(1-3)到(1-6)描述的四种情况对其对应的正常指数进行计算,如公式(1-3)到(1-6)所示,当 >>>s>>k>->1>>>∉>>M>1>>,>>s> >>>s>k>>∉>>M>1>>>s>且 >>>(>>s>>k>->1>>>,>>s>k>>)>>∉>>M>2>>>s>时,说明当前的sk-1和sk不属于一阶一致模型M1,而且同时(sk-1,sk)也不属于二阶一致模型M2,它们和多阶一致模型都不一致,因此当前被观察序列(sk-1,sk)和多阶模型的相关性变很小,因此把sk-b对应的一阶相对势作为sk的一阶相对势估计(其中sk-b为离sk最近的前b个和一阶一致模型M1一致的Native API),如果当前的相关性指数G大于则通过相关性指数G减去再乘以相对下降值0.5做为当前被观察序列(sk-1,sk)对应的相关性指数;而如果当前的相关性指数G小于则说明G较小,则被观察序列(sk-1,sk)的当前总的相关值G仅有以前的一半,其中选择sk-b对应的一阶相对势Bk-b作为sk的一阶相对势估计当sk和一阶一致模型M1不一致时,则离sk最近的前b个和一阶一致模型M1一致的Native APIsk-b的一阶相对势和sk一阶相对势是相等的,但对系统的影响是不同的;

4)通过提出的报警提取算法,使对不断变化波动的指数迭代检测率中出现的异常事件进行准确地发现和提取,并进行正确的报警,定义如下的波动指数Fij

>>>F>ij>>=>>Σ>>i>=>k>>>k>+>WL>>>E>>(>>s>i>>,>>s>>i>+>1>>>)>>->>Σ>>j>=>k>->WL>>k>>E>>(>>s>j>>,>>s>>j>+>1>>>)>>>(>WL>≤>i>≤>n>->WL>->1>)>>->->->>(>1>->7>)>>>s>

其中WL为滑动窗口长度;

从波动指数Fij的定义可以看出,当i窗口的指数迭代检测率之和减去j窗口的指数迭代检测之和,就为i和j窗口之间的波动,则有以下三种情况:

>>>F>ij>>= >>>>F>ij>>>>0>>>>>>F>ij>>=>0>>>>>>F>ij>><>0>>>>>->->->>(>1>->8>)>>>s>

其中当Fij>0时,i窗口的指数迭代检测率大于j窗口的指数迭代检测率,说明指数迭代检测值向上波动,系统趋向于正常;当Fij<0时,i窗口的指数迭代检测率小于j窗口的指数迭代检测率,说明指数迭代检测值向下波动,系统趋向于异常;当Fij=0时,说明i窗口和j窗口之间没有波动,系统状况不变;

滑动窗口长度WL:

>>>F>ij>>=>>Σ>>i>=>k>>>k>+>WL>>>E>>(>>s>i>>,>>s>>i>->1>>>)>>->>Σ>>j>=>k>->WL>>k>>E>>(>>s>j>>,>>s>>j>->1>>>)>>>s>达到最大,也即是:

>>WL>=>W>>L>>(>i>,>j>)>>>>(>iff>>(>>Σ>>i>=>k>>>k>+>WL>>>E>>(>>s>i>>,>>s>>i>+>1>>>)>>->>Σ>>j>=>k>->WL>>k>>E>>(>>s>j>>,>>s>>j>+>1>>>)>>→>max>)>>->->->>(>1>->9>)>>>>s>

取WL=30做为滑动窗口长度来进行测量,既能使得报警量小,又可以使得几乎没有漏报率;

5)对出现了指数迭代检测值较小的进程,采取禁止当前的被观察进程或其线程的行为,采用PostThreadMessage()或者PostMessage()函数给指定的线程发送WM_QUIT或WM_DESTORY消息来强行中止恶意线程。

本发明是基于多阶Native APIs一致模型的指数迭代检测方法,通过分析和建立Windows环境下的指定进程的多阶Native API一致模型和被检测进程产生的Native API序列之间的相关性来发现异常入侵。

附图说明

图1是本发明截获Windows系统服务分配表的原理图;

图2是本发明针对RPC/DCOM漏洞(MS03-026)入侵攻击的检测结果图,其中横坐标为被检测进程Svchost.exe产生的Native API步数,纵坐标为正常指数;

图3是本发明针对RPC/DCOM长文件名堆溢出漏洞(MS03-039)的入侵检测结果图(一),其中横坐标为被检测进程Svchost.exe产生的Native API步数,纵坐标为正常指数;

图4是本发明针对RPC/DCOM长文件名堆溢出漏洞(MS03-039)的入侵检测结果图(二),其中横坐标为被检测进程Svchost.exe产生的Native API步数,纵坐标为正常指数;

图5是本发明针对RPC Lactor缓冲区溢出漏洞的入侵检测结果图,其中横坐标为被检测进程Svchost.exe产生的Native API步数,纵坐标为正常指数;

图6是本发明针对IIS索引服务器的.ida/idq漏洞(MS01-033)的入侵检测结果图,其中横坐标为被检测进程Inetinfo.exe产生的Native API步数,纵坐标为正常指数;

图7是本发明对.printer ISAPI扩展远程漏洞(MS01-023)的入侵检测图,其中横坐标为被检测进程Inetinfo.exe产生的Native API步数,纵坐标为正常指数;

图8是本发明针对IIS Unicode目录遍历漏洞(MS00-078)的入侵检测图,其中横坐标为被检测进程Inetinfo.exe产生的Native API步数,纵坐标为正常指数;

图9是本发明针对ASN.1库BER解码堆破坏拒绝服务攻击(MS04-007)的检测结果图,其中横坐标为被检测进程Lsass.exe产生的Native API步数,纵坐标为正常指数。

具体实施方式

下面结合附图对本发明作进一阶详细说明。

参见图1,当用户模式下的应用程序即Application被运行时,它将调用动态链接库Kernel32.dll中的封装函数Win32 API,在动态链接库Kernel32.dll中的封装函数Win32 API又会调用动态链接库Ntdll.dll中封装的函数来真正调用对应的系统服务,然后调用函数KiSystemSerivce()执行中断INT 2E指令把处理器CPU转向内核模式并执行在中断描述表中指定的句柄。这个句柄将把参数从用户模式栈复制到内核模式栈,并且将寄存器EDX的内容指向传入参数的栈帧基址。当用户模式空间的应用程序中调用的封装函数Win32 API在内核模式空间的系统服务分配表System Service Dispatch Table中查找到对应的系统服务并执行时,由于原来的系统服务分配表已经被本发明的系统服务指针SSDT newpointers所替代,因此本发明将在这里进行截获,将系统调用转向本发明的截获系统服务Native API,本发明在此对截获的数据进行审计,这些审计数据包括被截获的系统服务Native API的函数的名称、ID和参数长度信息。执行完被截获的系统服务Native AP并获取到相应的信息后,退出截获过程,并返回到真正要执行的原始Native API,然后处理器CPU将执行被调用的原始Native API序列(如创建文件系统服务NtCreateFile,读取文件系统服务NtReadfile,…,关闭文件系统服务NtClose),以完成真正被调用的指定功能。

当指定的进程每一次发起系统服务调用请求时,都会进入上面的截获过程。运行一个用户空间的应用程序会产生大量的Native API来完成指定的功能,这些Native API会形成一条序列。当进程在正常情况下运行时产生的Native API序列都具有相对稳定的一个Native API序列。通过Native APIs的信息对Windows操作系统的正常情况建立正常模型,并以此模型来检测系统中的异常情况。Native API也是以序列形成出现的,因此本发明可以通过对正常状况下的Native API序列进行训练,并建立相应的正常模型,然后用此模型进行检测。为了有效地检测异常入侵,本发明设计了一个名为多阶Native APIs一致模型(Multi-Steps Consistency Model,MSCM)。实现这个模型分为两个阶段:训练和测试阶段。在训练阶段中,收集指定进程的Native APIs数据并存储在数据库中。对原始数据的分析包括一阶分析和二阶分析,这主要分析和处理数据集合中的一阶和两阶状态转移来建立一阶和二阶模型;在测试阶段,多阶Native APIs一致模型采用了指数迭代检测算法来计算针对一阶和二阶模型的一阶和二阶Native APIs的正常指数值。

在介绍多阶Native APIs一致模型之前,本发明对其中涉及到的一些数据进行描述。本发明定义一阶原始训练集合为 >sup>>T>S>>(>1>)>sup>>=>{>>s>0>>,>.>.>.>,>>s>>n>->1>>>}>,>>s>其中sk表示观察进程调用的指定的Native API。它直接从正在运行的进程中截获到的,没有经过任何处理。因此,在TS中一些Native API将会重复出现。因此,指定Native API的重复出现的次数与原始训练集合TS的包含的整个Native API数量之比为:

>>>B>k>>=>>>|>>s>k>>|>>n>>=>>m>n>>>s>

其中|sk|=m是Native APIsk在训练集合TS中的重复次数,也即是sk在TS(1)中的势。本发明称Bk为一阶相对势比值。

同样,二阶原始训练数据集合 >sup>>T>S>>(>2>)>sup>>=>{>>(>>s>0>>,>>s>1>>)>>,>.>.>.>,>>(>>s>>n>->1>>>,>>s>n>>)>>}>>s>的二阶相对势比值为:

>>>B>>>(>k>->1>)>>k>>>=>>>|>>(>>s>>k>->1>>>,>>s>k>>)>>|>>n>>=>>>m>>>(>k>->1>)>>k>>>n>>>s>

其中|(sk-1,sk)|=m(k-1)k是Native API对(sk-1,sk)在二阶原始训练数据集合TS′中的重复次数。

多阶一致模型包括一阶和二阶一致模型。它们能够度量指定的Native API序列和被观察对象之间相关程度。一阶一致模型可以通过二元组{Bk,Ok}来表示,其中Bk表示Native APIsk在训练集合中的出现频率,Ok是一阶相关指数,它是通过对集合中的所有Bk按升序排列的位置大小。二元组{Bk,Ok}对训练集合TS(1)中的每一个Native API和相关进程之间建立了一个关系映射表。通常,一阶一致模型可以使用如下表示:

M1={(B1,O1),...,(Bk,Ok)}(1≤k≤n)

同样,本发明使用二元组{B(k-1)k,O(k-1)k}来表示二阶一致模型。它建立了训练集合TS(2)中的每一个Native API和相关进程之间的一个关系映射表。

M2={(B12,O12),...,(B(k-1)k,O(k-1)k)}(1≤k≤n)

通常情况下,为了识别一个序列对象,总是在被观察对象有更多的节点出现的时候,才能更准确地确定被识别对象。通过分析Native API和被检测进程的Native API序列之间的相关性来发现异常入侵。

定义

E(sk):在Native API序列中,当前Native API为sk时的进程行为的正常指数。

E(sk-1,sk):在Native API序列中,当前Native API对为(sk-1,sk)时的进程行为的正常指数。

G:当前序列相关性指数。用于度量当前长度的序列和一个正常行为进程之间的最大相关程度。

f(sk):偏差函数。用于度量意外Native API给指定进程的正常行为带来影响的程度。也即,当sk-1的后一个Native APIsk不在一阶模型M1中时,我们通过计算前一个已经存在的Native APIIsk的加权相关性来度量这种情况对一个正常进程的影响。对f(sk)的定义如下:

>>f>>(>>s>k>>)>>=>ver>>O>^>>k>>*>ver>>B>^>>k>>>s>

一阶相对势估计

一阶相关值估计

算法描述

Step 1:

>>E>>(>>s>0>>)>>=>>e>>->>1sup>>B>0>′sup>>>>>>(>>s>0>>∈>>T>S>>)>>->->->>(>1>->1>)>>>s>

       G=B′0

Step k:

       sk-1∈M1,sk∈M1,(sk-1,sk)∈M2

> >>>E>>(>>s>>k>->1>>>,>>s>k>>)>>=>>e>>->>1>G>>>>>>>>G>=>G>+>>B>k>>+>>B>>>(>k>->1>)>>k>>>>>>>->->->>(>1>->2>)>>>s>

>>>s>>k>->1>>>∉>>M>1>>,>>s>k>>∉>>M>1>>,>>(>>s>>k>->1>>>,>>s>k>>)>>∉>>M>2>>,>k>>>b>>s>

> >>>E>>(>>s>>k>->1>>>,>>s>k>>)>>=>>e>>->>1>G>>>>>>>>ver>>B>^>>k>>=>>B>>k>->b>>>,>ver>>O>^>>k>>=>>O>>k>->b>>>>(>∃>>s>>k>->b>>>∈>>M>1>>and>>(>k>->b>→>min>)>>)>>>>>>G>= >>>>(>G>->ver>>B>^>>k>>)>>*>0.5>>(>G>>>ver>>B>^>>k>>>)>>>>>>G>*>0.5>>(>G><>ver>>B>^>>k>>)>>>>>>>>>>->->->>(>1>->3>)>>>s>

>>>s>>k>->1>>>∈>>M>1>>,>>s>k>>∉>>M>1>>,>>(>>s>>k>->1>>>,>>s>k>>)>>∉>>M>2>>,>k>>>b>>s>

> >>>E>>(>>s>>k>->1>>>,>>s>k>>)>>=>>e>>->>1>G>>>>>>>>ver>>B>^>>k>>=>>B>>k>->b>>>,>ver>>O>^>>k>>=>>O>>k>->b>>>>(>∃>>s>>k>->b>>>∈>>M>1>>and>>(>k>->b>→>min>)>>)>>>>>>G>= >>>>(>G>+>ver>>B>^>>k>>->f>>(>>s>k>>)>>)>>*>0.5>>(>G>+>ver>>B>^>>k>>>>f>>(>>s>k>>)>>)>>>>>>>(>G>+>ver>>B>^>>k>>)>>*>0.5>>(>G><>ver>>B>^>>k>>)>>>>>>>>>>->->->>(>1>->4>)>>>s>

>>>s>>k>->1>>>∈>>M>1>>,>>s>k>>∈>>M>1>>,>>(>>s>>k>->1>>>,>>s>k>>)>>∉>>M>2>>,>k>>>b>>s>

> >>>E>>(>>s>>k>->1>>>,>>s>k>>)>>=>>e>>->>1>G>>>>>>>>ver>>B>^>>k>>=>>B>>k>->b>>>,>ver>>O>^>>k>>=>>O>>k>->b>>>>(>∃>>s>>k>->b>>>∈>>M>1>>and>>(>k>->b>→>min>)>>)>>>>>>G>=>>(>G>+>f>>(>>s>k>>)>>)>>*>0.5>>>>>->->->>(>1>->5>)>>>s>

>>>s>>k>->1>>>∉>>M>1>>,>>s>k>>∈>>M>1>>,>>(>>s>>k>->1>>>,>>s>k>>)>>∉>>M>2>>,>k>>>b>>s>

> >>>E>>(>>s>k>>,>>s>k>>)>>=>>e>>->>1>G>>>>>>>>ver>>B>^>>k>>=>>B>>k>->b>>>,>ver>>O>^>>k>>=>>O>>k>->b>>>>(>∃>>s>>k>->b>>>∈>>M>1>>and>>(>k>->b>→>min>)>>)>>>>>>G>=>0.5>G>+>f>>(>>s>k>>)>>>>>>->->->>(>1>->6>)>>>s>

如上所描述,本发明提出了指数迭代检测算法来循环迭代计算每个出现的Native API和Native API对的正常指数。如(1-2)所示,在初始步时,通过查找初始Native API在一阶一致模型中的一阶势比值,并将其作为初始化值对E(s0)进行初始化。从第二阶开始直到进程结束,可以通过调节当前Native API对(sk-1,sk)的相关性指数和权重Ok来计算其对应的正常指数E(sk-1,sk)。从真实环境的实验测试中,分别还要考虑sk-1和sk是否属于M1以及(sk-1,sk)是否属于M2的五种情况,对应(1-2)到(1-6)所示。(1-2)式说明如果sk和sk-1属于M1,而且同时(sk-1,sk)属于M2,则通过循环叠加一阶和二阶势相关比值来计算相关性指数G。一旦sk-1、sk以及(sk-1,sk)和一阶和二阶一致模型M1和M2之间没有任何映射关系,通过其它四种情况对其对应的正常指数进行计算,如公式(1-3)到(1-6)所示。当 >>>s>>k>->1>>>∉>>M>1>>,>>s> >>>s>k>>∉>>M>1>>>s>且 >>>(>>s>>k>->1>>>,>>s>k>>)>>∉>>M>2>>>s>时,说明当前的sk-1和sk不属于M1,而且同时(sk-1,sk)也不属于M2,它们和多阶一致模型都不一致,因此当前被观察序列(sk-1,sk)和多阶模型的相关性变得很小,因此把sk-b对应的一阶相对势作为sk的一阶相对势估计(其中sk-b为离sk最近的前b个和M1一致的Native API),如果当前的相关性指数G大于则通过指数G减去再乘以相对下降值0.5做为当前被观察序列(sk-1,sk)对应的相关性指数;而如果当前的相关性指数G小于则说明G较小,认为被观察序列(sk-1,sk)的但前总体相关值仅有以前的一半。其中选择sk-b对应的一阶相对势Bk-b作为sk的一阶相对势估计是因为基于这样的假设:当sk和M1不一致时,认为离sk最近的前b个和M1一致的Native APIsk-b的一阶相对势和sk一阶相对势是相等的,但对系统的影响是不同的。我们认为这样的假设在现实环境下有其合理性。

在使用Native APIs信息来检测入侵的实验中,发现当有真正的入侵发生的时候,E(sk,sj)的值波动非常大,但并不是仅仅单调下降到某个最低点,而是在整个过程中出现较多的上下起伏波动。这个原因是因为异常的入侵所生成的Native APIs序列 >sup>>T>s>asup>>=>{>>s>0>>,>.>.>.>,>>s>>n>->1>>>}>>s>中的一阶APIsk和二阶API对{sk,sj}既有正常的,也有异常的,是由正常和异常调用混合构成的。对于这种由于正常NativeAPIs中混杂了许多异常API调用而造成的上下剧烈波动,本发明为了更好地测度这种情况,定义了波动指数来描述这个现象。通过波动指数本发明可以唯一地确定出是否真正有入侵发生,避免重复报警,从而产生正确的报警。本发明定义了如下的波动指数Fij

>>>F>ij>>=>>Σ>>i>=>k>>>k>+>WL>>>E>>(>>s>i>>,>>s>>i>+>1>>>)>>->>Σ>>j>=>k>->WL>>k>>E>>(>>s>j>>,>>s>>j>+>1>>>)>>>(>WL>≤>i>≤>n>->WL>->1>)>>->->->>(>1>->7>)>>>s>

其中WL为滑动窗口长度。

从波动指数Fij的定义可以看出,当i窗口的指数迭代检测率之和减去j窗口的指数迭代检测之和,就为i和j窗口之间的波动,则以下三种情况:

>>>F>ij>>= >>>>F>ij>>>>0>>>>>>F>ij>>=>0>>>>>>F>ij>><>0>>>>>->->->>(>1>->8>)>>>s>

其中当Fij>0时,i窗口的指数迭代检测率大于j窗口的指数迭代检测率,说明指数迭代检测值向上波动,系统趋向于正常;当Fij<0时,i窗口的指数迭代检测率小于j窗口的指数迭代检测率,说明指数迭代检测值向下波动,系统趋向于异常;当Fij=0时,说明i窗口和j窗口之间没有波动,系统状况不变。

滑动窗口长度的选择会最终影响报警的提取,如果滑动窗口取得太小,虽然每个窗口内的指数迭代检测率更接近在窗口中实际出现的Native APIs的指数迭代检测率的值,但由于窗口比较小,频繁的波动将造成大量的报警出现,从而影响本发明的观察;如果滑动窗口取的太大,虽然大大降低了报警的数量,使本发明的观察更为方便,但由于窗口太大,可能会使得窗口内的Native APIs的平均指数迭代检测率变得与实际的差别较大,从而会造成提取出错误的报警或漏掉重要的报警。选择合适的WL使得

>>>F>ij>>=>>Σ>>i>=>k>>>k>+>WL>>>E>>(>>s>i>>,>>s>>i>->1>>>)>>->>Σ>>j>=>k>->WL>>k>>E>>(>>s>j>>,>>s>>j>->1>>>)>>>s>达到最大,也即是:

>>WL>=>>WL>>(>i>,>j>)>>>>(>iff>>(>>Σ>>i>=>k>>>k>+>WL>>>E>>(>>s>i>>,>>s>>i>+>1>>>)>>->>Σ>>j>=>k>->WL>>k>>E>>(>>s>j>>,>>s>>j>+>1>>>)>>→>max>)>>>->->->>(>1>->9>)>>>s>

通过大量的实验和观察,本发明取WL=30做为滑动窗口长度来进行测量,既能使得报警量小,又可以使得几乎没有漏报率。

报警提取的目的是使本发明在指数迭代检测率的不断变化中和波动中,对出现了异常的事件进行发现和提取,并进行正确的报警。这可以对一个时间段内出现的指数迭代检测率的变化进行分析,并正确地映射到特定的入侵事件,这一功能使得管理员可以很方便地观察和处理相关的报警。报警提取算法的基本原理如下:

在两次最小指数迭代检测率波动指数之间如果存在至少一次最大的指数迭代检测率波动指数,则认为在这两次最小指数迭代检测率波动指数之间存在一次异常入侵或攻击事件。也即:当F(i-l)(j-l)→min和F(i+h)(j+h)→min时,如果存在至少一个Fij→max,则认为在滑动窗口对(i-l)(j-l)和(i+h)(j+h)之间存在一次异常或攻击事件αlh∈A发生。如下所示:

>>>a>lh>>∈>A>↔>{>∃>Fij>→>max>}>∩>{>>(>>F>>>(>i>->l>)>>>(>j>->l>)>>>>→>min>)>>∩>>(>>F>>>(>i>+>h>)>>>(>j>+>h>)>>>>→>min>)>>}>->->->>(>1>->10>)>>>s>

其中A是提取出来报警的全集。

如图2所示,本发明对RPC/DCOM接口溢出漏洞的入侵事件进行检测的结果。在WindowsNT4.0、2000、XP和Server 2003系统中的某个DCOM接口存在缓冲区溢出漏洞,它允许远程攻击者通过提交畸形信息来实现在目标服务器上执行任意代码,Blast蠕虫就是针对这个漏洞发起攻击的。因此,在WindowsXP(SP0)的环境下,利用这个漏洞进行了两次真实的入侵,第一次发起了成功的入侵,第二次是失败的入侵。由于这个漏洞是发生在绑定于135端口上的特定进程。因此在实验中,对绑定在135端口的Svchost.exe进程进行了跟踪。首先,对Svchost.exe进程的正常行为建立多阶一致模型,整个训练过程大约持续了7天,涉及到操作系统的众多功能,如共享服务、邮件接收和发送、组件服务等操作,训练好的Svchost.exe进程的正常情况下的多阶一致模型也用于以后对其他攻击的检测。通过指数迭代检测算法进行检测,得到了如图2所示的检测效果。从第一个Native API出现到大约1000个左右,指数迭代检测值由0逐渐逼近1,这也说明目前出现的Native API和Native API对都和进程的正常状态多阶一致模型非常一致。系统在检测任何进程的初始过程中会出现指数迭代检测值逐步上升的现象,甚至趋于平稳的状态;当进程对应的Native APIs序列和进程的多阶Native APIs一致模型非常相关时,指数迭代检测值将不断上升,并保持相对稳定。指这个过程。在大约第1530个Native API出现时,指数迭代检测值非常急剧下降,从最大值0.987943很快就降到了最小值0.000002,并伴随着较大的波动。这个时候检测出了第一次成功的入侵。当第一次入侵过程结束后,指数迭代检测值随着和多阶一致模型一致的正常Native API的不断出现而逐渐逼近最大值1,恢复到原来的平稳状态,从而可以清楚地看到第一次入侵的异常情况。紧接着第二次发起的入侵攻击也被检测出来。第二次入侵攻击没有成功,但系统对应的指数迭代检测值仍然降低很快,从最大值0.955954跌落到最小值0。报警提取算法从检测过程中成功地提取出了两次攻击。第一次攻击前的最小波动指数为0,说明出现的Native API和多阶一致模型非常一致,但攻击发起时的波动指数最大值为0.955895;第一次攻击结束后指数迭代检测值逐步回升到最大值1,这时的的波动指数最小值为0.000032,根据报警提取算法,可以唯一确定在大约第1373个Native API处到第1765个Native API发生了一次非常入侵。同理,本发明确定了在大约第1765个Native API处到第2157个Native API发生了一次非法入侵。由于那些没有成功的入侵对Svchost.exe进程产生的Native API序列的影响一样是很大的。通过对没有成功的入侵的有效检测,本发明可以对一些攻击尝试进行提前防卫,从而起到预防的作用。由于成功的攻击和不成功的攻击对系统带来的最终影响并不一样,成功的攻击对系统的影响远远大于不成功的攻击对系统的影响。本发明把不成功的攻击划分在攻击尝试的范畴内,它仅仅是对目标主机的一种攻击企图,但这种企图同样会对主机的安全状况会带来一定的影响。本发明通常把这种攻击企图作为主机安全态势的评估信息源加以进一阶的分析和利用,以确定主机在一定时间内的安全状况和应该提供的安全策略。但在本发明目前的系统中,从不成功的攻击中提取出的报警和从成功攻击中提取的报警拥有一样严重程度,这会造成管理员采取不必要的安全策略或者使得运用安全策略非常不灵活。

如图3和图4所示的检测结果所示,本发明针对RPC/DCOM长文件名堆溢出漏洞(MS03-039)进行了两次攻击和检测。由于多个Windows系统的RPCSS服务中用于处理分布式组件对象模型(DCOM)接口的组件中存在3个缺陷,其中两个能执行任意代码,另一个能导致DoS缺陷。缺陷是由于对畸形信息处理错误而产生的。攻击者通过向目标程序提交一个超长的文件名参数,将触发缓冲区溢出缺陷,从而成功利用该缺陷,攻击者能在受影响的系统上以本地系统权限执行任意代码,或导致RPCSS服务崩溃。攻击者还能在系统上采取任意行为,包括安装程序,查看、更改或删除数据,或以最高权限创建新的帐户。为了验证本发明的方法,在Windows 2000 Professional(SP0)系统上分别进行了拒绝服务攻击和入侵攻击两个实验。本发明通过跟踪绑定在端口135上的Svchost.exe进程来发现入侵。图3所示的是针对这个漏洞发起的拒绝服务攻击。可以观察发现,在检测的初始状态,指数迭代检测值从最小值逐渐上升至平稳状态,这种较小的波动指数意味着当前被跟踪进程运行在正常状态。在第570多个Native API的位置处,发起了拒绝服务攻击,随之产生的Native API序列中出现了和相对应的多阶一致模型不一致的样例,导致指数迭代检测值大幅度下降到0.569765,但随后相应的指数迭代检测值慢慢回升,随后被观察的服务进程Svchost.exe在达到指数迭代检测值0.963562后由于被拒绝服务攻击而停止了服务,在整个过程中指数迭代检测值下降的幅度最大达到0.417237,下降幅度不如前述检测的几个入侵实例,但也较明显地反映出拒绝服务攻击时产生的Native API序列和Svchost.exe进程对应的一阶和二阶相关性模型有明显的差距。图4显示了入侵攻击实验的检测结果,发起的入侵攻击将会在受害服务器主机中添加用户名为\”e\”,密码为\″asd#321\″的一个非法账户。图4显示了对整个入侵过程的检测结果,当本发明发起入侵攻击时,由于攻击产生的异常Native API或Native API对与多阶一致模型有较大的差距,从而使得在大约第580步时指数迭代检测值的最大跌幅达到0.954601,随后慢慢回升至0.937083,经过一个波动指数为0.152018的小幅波动后逐渐上升并趋近最大值1。这时本发明退出了入侵过程,Svchost.exe进程的行为重新恢复到正常。这类通过缓冲区溢出添加非法用户的攻击在现实环境中运用得非常广泛,被添加的非法用户可以作为系统后门让黑客将来利用。但本发明的系统只能发现指数迭代检测值的异常,却不能确定是什么样的异常以及服务器已经受到什么程度样的危害。因此,本发明可以结合其他系统安全审计工具对系统安全策略或帐户的变化进行监控,可以建立基于主机的多检测器信息融合机制,从而为管理员快速准确地发现和定位黑客对系统造成的危害,并采取相应的对策和防卫措施提供帮助。

如图5所示的检测结果,针对Windows系统中的RPC Locator服务漏洞(MS03-001)的攻击进行了检测。Locator服务是一种网络名称定位服务,默认装载在Windows NT 4.0/2000/XP中。但仅仅在Windows 2000 domain controllers和Windows NT 4.0 domain controllers中默认被激活,而在Windows NT 4.0workstations或member servers、Windows 2000 workstations或member servers和Windows XP中没有默认被激活。由于在Locator服务中存在一个不安全的缓冲区检测,攻击者通过向Locator服务发送一个精心构造的临时请求,将导致Locator服务失效,甚至能允许攻击者在系统上执行任意代码。在Windows2000Server(SP0)的环境下进行攻击检测实验,由于Windows 2000 Server默认情况下没有启动RPC Locator服务,因此必须手动进行启动配置,从而确保Locator服务能够在每次系统启动时自动运行。在实验中,利用这个漏洞进行攻击将会造成RPC Locator服务的中止,也即是RPC Locator服务处于拒绝服务状态。从图5中可以观察到,在对进程Svchost.exe进行跟踪的初始阶段指数迭代检测值就从最小值开始不断变大,到了一定阶段逼近最大值1,并保持相对稳定。当发起对Windows 2000 Server的RPC Locator漏洞的DoS攻击时,Svchost进程对应的Native API序列指数迭代检测值开始变小、下降,并在一定阶段开始出现急剧波动,最小指数迭代检测值一度达到0.09402,发起入侵攻击的整个过程发生在如图350到550左右的序列位置处。从第500个Native API以后,指数迭代检测值逐渐变大,但到了第715个Native API处,Svchost进程由于攻击造成的DoS而停止服务了。从对该漏洞的测试中可以看出,基于Windows Native API多阶一致模型的指数迭代检测算法可以对发起的DoS攻击的前期进行有效地检测,并可以以此对将要产生的进一阶危害进行阻断。在指数迭代检测值第一次大幅下跌的时候进行了预警,以报警的形式通知系统管理员。

如图6所示的检测结果,本发明在Windows 2000 Server(SP0)系统中进行了实验,针对IIS索引服务器的idq缓冲区溢出进行攻击,攻击成功的同时将在服务器上运行一个恶意后门程序Srv.exe,它将在受害服务器的99端口绑定一个不需要用户名和密码账户的非法Telnet守候进程,同时将造成IIS索引服务器处于拒绝服务状态。采用本发明提出的方法进行检测的结果如图6所示,当攻击发起时指数迭代检测值有两次大幅度的波动,这表明发起的入侵攻击造成了出现的Native API序列和进程Inetinfo.exe对应的多阶一致模型之间有两次较大的差别。第一次是从最大值0.994494跌到了最小值0,有相当明显的跌幅;第二次是从峰值0.801021跌到了最小值0;这两次指数迭代检测值的波动指数都非常大。由第二次较大的波动后逐渐返又趋近于最大值,但由于这种攻击造成了IIS服务重启,跟踪的Inetinfo进程对应的进程号(PID)发生了变化,因此原来跟踪的Inetinfo进程被停止了。从两次明显的大幅度波动可以看出本发明提出的指数迭代检测模型对检测IIS服务中的.idq入侵是非常准确的。

如图7所示,针对.printer漏洞的攻击进行了检测。.printer此漏洞只存在于运行IIS 5.0的Windows 2000服务器中。由于IIS 5的打印ISAPI扩展接口建立了.printer扩展名到Msw3prt.dll的映射关系(缺省情况下该映射也存在),当远程用户提交对.printer的URL请求时,IIS 5.0会调用Msw3prt.dll解释该请求,加之Msw3prt.dll缺乏足够的缓冲区边界检查,远程用户可以提交一个精心构造的针对.printer的URL请求,其“Host:”域包含大约420B的数据,此时在Msw3prt.dll中发生典型的缓冲区溢出,潜在地允许执行任意代码。在实际实验中,当针对此漏洞发起的缓冲区溢出攻击将会在服务器上添加了一个用户名为hax,密码为hax的非法用户;同时会造成Web服务停止响应用户的请求。当攻击完成后,受害的Windows 2000 Server服务器将会自动重新启动并恢复服务,进而使得系统管理员很难检查到已发生的攻击。在实验中Windows 2000 Server(SP0)服务器上进行实验。对IIS服务的进程Inetinfo.exe进行了跟踪。从图7的实验结果中,可以看到,指数迭代检测值E(sk,sj)从大约第1100个Naive API时急剧下降,一度其最小值达到了0,并且波动非常大;在大约第2300个NativeAPI处,Inetinfo进程恢复了正常,但在最后,由于缓冲区溢出发生后,Web服务器停止了用户请求,操作系统接着重新启动了IIS服务,因此,本发明跟踪的Inetinfo进程检测数据在第2806个Native API后就停止了,系统重新启动了一个新的IIS服务进程。根据本发明提出的报警提取算法,两次最小指数迭代检测值波动指数之间如果存在至少一次最大的指数迭代检测率波动指数,则认为在这两次最小指数迭代检测率波动指数之间存在一次异常入侵或攻击事件。可以发现,从发起入侵到入侵结束过程中出现了三次大的指数迭代检测率波动指数,分别为0.967106、0.947531和0.93604。而整个过程中对应的最小指数迭代检测率波动指数为0.000127,远远大于攻击发起前的最小波动指数0.000001和攻击结束后的最小波动指数0.000041。因此成功地确认了发生了一起入侵事件。

如图8所示,对于微软的IIS4.0和IIS5.0中存在的Unicode漏洞攻击进行了实验。Unicode漏洞的成因可大致归结为:从中文Windows IIS 4.0+SP6开始,还影响中文Windows 2000+IIS 5.0、中文Windows 2000+IIS5.0+SP1。台湾繁体中文也同样存在这样的漏洞。它们利用扩展Unicode字符(如利用“../”取代“/”和“\”)进行目录遍历漏洞。在Windows NT中编码为%c1%9c,在Windows 2000英文版中编码为%c0%af。首先跟踪Windows 2000 Server(SP0)中的IIS服务进程Inetinfo.exe,对它的Native API序列进行正常指数值的检测。实验中发起的攻击分两次进行,第一次是在URL地址栏输入:

http://192.168.74.220/scripts/..%c1%1c../winnt/system32/cmd.exe?/c+dir

这次攻击的目的是在指定的192.168.74.220服务器上的当前目录下执行dir命令,由此可以实现对整个服务器的目录进行遍历。而第二次攻击是发出命令dir c:\以用来浏览c盘根目录的文件。攻击命令如下:

http://192.168.74.220/scripts/..%c1%1c../winnt/system32/cmd.exe?/c+dir+c:\

从图8的检测结果上看,在第一次攻击发起的时候就出现了大幅度的波动,指数迭代检测值不再保持在趋近于最大值1的状态。其波动最大幅度由下降前的最大值0.961477到波动时的最低谷值0.002939,波动幅度达到0.958538;在进行第二次攻击时,指数迭代检测值由最大时的0.997128下降到了最小值0,波动幅度达到了0.997128。当第一次和第二次攻击完成以后,Inetinfo进程对应的Native API的指数迭代检测值都不断上升趋近于最大值1。通过报警提取算法分析,可以发现,在第一次攻击的前后,最小指数迭代检测率波动指数分别为0.000010和0.000001;而在第一次攻击中出现的最小指数迭代检测率波动指数为0.000066,出现了四次较大的波动,分别是0.937326、0.950498、0.920928和0.728487。因此,通过报警提取算法提取了第一次和第二次入侵。

如图9所示,针对ASN.1库BER解码堆破坏拒绝服务攻击(MS04-007)进行了检测。Abstract Syntax Notation 1(ASN.1)是IT行业中许多应用程序和设备所使用的一种数据标准,可以使用它来标准化和理解各种平台中的数据。Abstract Syntax Notation 1(ASN.1)是用于多个应用程序和设备的数据标准,允许数据可在各种平台传递。ASN.1基本编码规则(BER)基本概念是一个灵活的编码二进制数据的编码方案。每片数据按照描述如何解释下面值数据的类型号,然后是数据长度,最后是数据本身,通过提供超大值(从0xFFFFFFFD到0xFFFFFFFF)给长度字段,可在堆分配函数中产生整数溢出,虽然有地方对这个值长度进行确认和检查,不过在验证函数中独立的指针算法会导致漏洞发生。Microsoft ASN.1库广泛使用在Windows安全子系统,包含Kerberos、NTLMv2验证,及使用各种证书的应用程序(SSL、EMAIL数字签名、ActiveX控件签名)。Microsoft ASN.1库实现上存在整数溢出漏洞,远程攻击者可以利用这些漏洞造成堆破坏从而执行恶意指令。漏洞影响MSASN1.DLL相关的应用,其中比较常见的是LSASS.EXE和CRYPT32.DLL(任何使用CRYPT32.DLL的应用程序)。如果攻击者成功的利用了此缓冲区溢出漏洞,就可以在受影响的系统上以系统特权执行代码。然后,攻击者就能够在该系统上执行任何操作,其中包括安装程序、查看、更改或删除数据;或者创建拥有完全权限的新账户。在实验中首先训练了Lsass.exe进程的多阶Native APIs一致模型。然后在Windows 2000Server(SP0)系统中通过指数迭代检测算法对Lsass.exe进程的攻击进行了检测。跟踪Lsass.exe的进程的Native API序列,从图9可以看出Lsass.exe进程的指数迭代检测值在第530个Native API处出现了较大的波动指数0.620288。在入侵攻击前后的最小指数迭代检测率波动指数分别为0.000002和0.000130,而入侵过程中的最小指数迭代检测率波动指数为0.000158,大于入侵前后的指数迭代检测率波动指数。又由于在入侵前后的两个最小指数迭代检测率波动指数之间至少存在着一次较大的指数迭代检测率波动指数,就认为有攻击事件发生。因此通过分析可以确定发生了一次入侵事件。

                            表2采用指数迭代检测算法的实验检测结果

  被攻击漏洞  Max(Fij)  |A|  攻击类型  被检测进程  实验平台  MS03-026  0.993747  2  Buffer Overrun  Svchost.exe  WindowsXp(SP0)  MS03-039  0.417237  1  DoS  Svchost.exe  Windows2k Professional(SP0)  0.954601  1  Buffer Overrun  MS03-001  0.877936  1  Buffer Overrun  Svchost.exe  Windows2k Server(SP0)  MS01-033  0.994494  1  Buffer Overrun  Inetinfo.exe  Windows2k Server(SP0)  MS01-023  0.967106  1  Buffer Overrun  Inetinfo.exe  Windows2k Server(SP0)  MS00-078  0.997128  2  Folder Traverse  Inetinfo.exe  Windows2k Server(SP0)  MS04-007  0.620288  1  DoS  Lsass.exe  Windows2k Server(SP0)

表2中显示了对实验中涉及到的7种攻击的检测结果。本发明分别在WindowsXP(SP0)、Windows2000 Professional(SP0)、Windows2000 Server(SP0)三个不同的平台进行了测试,并涉及到对Windows系列操作系统一度带来巨大威胁的RPC/DCOM相关漏洞、IIS服务相关漏洞等多种漏洞,其中本发明实验了三种与RPC服务相关的典型攻击(MS03-026、MS03-039和MS03-001),三种与IIS服务相关的典型攻击(MS01-033、MS01-023和MS00-078)以及一种ASN.1库BER解码堆破坏拒绝服务攻击(MS04-007)。其中涉及到缓冲区溢出、拒绝服务和目录遍历(Folder Traverse)三种不同类型的攻击。通过设计的Native API截获系统跟踪了三个不同的进程:Svchost.exe、Inetinfo.exe以及Lsass.exe。表中微软的安全公告编号作为被入侵或攻击的漏洞的标识,记录了针对每种攻击检测结果中的最大波动指数Max(Fij)、报警记录集合中的报警个数|A|、攻击类型、被检测进程以及相关的实验平台。其中Max(Fij)表示在被检测进程产生的整个检测序列中的出现的最大波动程度,它表示了当前整条序列中出现的Native API和其对应的一阶和二阶模型之间的最大不一致程度,这也是用来标识异常事件的最主要标志。A是从被检测进程中提取出来的报警的全集,|A|则表示提取出来的报警个数,从中可以观察到本发明提出的报警提取算法是否能有效地将一次攻击提取出来,而不会分成几次攻击来重复报警。从表2中可以发现,在对三种RPC服务相关的攻击检测中,RPC/DCOM接口溢出漏洞(MS03-026)攻击对应的Max(Fij)最大,达到了0.993747;而RPC/DCOM长文件名堆溢出漏洞(MS03-039)的DoS攻击对应的Max(Fij)最小,仅有0.417237。对三种IIS服务相关的攻击检测的结果都非常好,几乎都很接近最大值1,其中对IIS Unicode目录遍历漏洞(MS00-078)进行的入侵攻击对应的Max(Fij)最大,这表明这种攻击造成的异常Native API和对应的多阶一致模型差距是最大的。从表2我们可以发现,实验中发起的8次攻击都通过报警提取算法有效地进行了提取,提取出的报警个数与实验中发起的攻击次数完全吻合。因此,本发明提出的基于多阶一致模型的指数迭代检测算法和报警提取算法有效地描述了被观察进程的正常行为和异常行为,同时很好地确定了异常攻击的次数,从而可以让系统管理员更加有效地了解系统的安全状况,并且采取相应的安全策略以阻止恶意的攻击。

本发明的主要目的在于通过对Windows内核级系统调用函数Native API进行获取,并建立每个进程对应的多阶一致模型(Multi-Steps Native APIsConsistency Model,MSNACM)在实时检测中通过本发明的指数迭代检测方法对各种入侵行为进行检测和报警。本发明提出的基于多阶Native APIs一致模型的指数迭代检测算法,通过分析和建立Windows环境下的指定进程的多阶NativeAPI一致模型和被检测进程产生的的Native API序列之间的相关性来发现异常入侵。实现这个模型分为两个阶段:训练和测试阶段。在训练阶段中,收集指定进程的Native APIs数据并存储在数据库中。对原始数据的分析包括一阶分析和二阶分析,这主要分析和处理数据集合中的一阶和两阶状态转移来建立一阶和二阶模型;在测试阶段,多阶Native APIs一致模型采用了指数迭代检测算法来计算针对一阶和二阶模型的一阶和二阶Native APIs的正常指数。在实际应用中,本发明还采用了报警提取的方法,这一方法可以使本发明在指数迭代检测率的不断变化波动中,对出现的异常事件进行准确地发现和提取,并进行正确的报警。通过定义的波动指数和相应的滑动窗口,本发明通过报警提取算法可以对波动的正常指数进行分析,取出相对应的异常事件,这将便于通知系统管理员或安全策略中心采取必要的安全策略阻止黑客的入侵行为。在实验中对7种攻击进行了实验,分别在WindowsXP(SP0)、Windows2000 Professional(SP0)、Windows2000 Server(SP0)三个不同的平台进行了测试,并涉及到对Windows系列操作系统一度带来巨大威胁的RPC/DCOM相关漏洞、IIS服务相关漏洞等多种漏洞,其中检测了三种与RPC服务相关的攻击(MS03-026、MS03-039和MS03-001),三种与IIS服务相关的攻击(MS01-033、MS01-023和MS00-078)以及一种ASN.1库BER解码堆破坏拒绝服务攻击(MS04-007)。实验结果表明,多阶Native APIs一致模型、指数迭代检测算法以通过分析Windows环境下的Native API序列来检测入侵攻击事件有较高的精度。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号