特种木马防御与检测技术研究
上QQ阅读APP看书,第一时间看更新

1.4 主流木马检测技术

目前,木马检测技术主要分为两大类:静态检测技术和动态检测技术。

传统的静态检测技术主要是基于木马程序和文件的静态特征,而动态检测技术则关注的是木马运行时的行为特征,这也是现在木马检测技术发展的趋势和研究热点。一款优秀的木马查杀软件应该具备静态检测和动态检测两方面的功能。静态检测主要用来检测已知木马,动态检测则用于发现未知木马。静态检测有3种典型的技术:特征码匹配技术、基于文件静态特征的检测技术和文件完整性检测技术。动态检测技术包括行为分析技术、虚拟机检测技术、入侵检测技术和云安全技术。

1.4.1 特征码检测技术

特征码技术是反病毒反木马领域最早使用的技术,也是目前公认的最成熟、最有效的恶意代码检测技术。即便现在动态检测技术发展得如此迅速,也没有撼动特征码检测技术的地位。特征码技术准确性高、误报率低、检测速度快的优点是其他检测技术无法比拟的,因此一直被杀毒软件广泛使用并且沿用至今。特征码检测技术主要包括基于特征码的静态扫描、广谱特征码扫描和内存特征码比对技术3类[10~15]

特征码是由反病毒公司从木马或病毒等恶意程序中提取的并且只有木马或病毒才会有的一段二进制字符串,这些二进制串就是恶意程序的标识,由它可以判断某一程序是哪一种病毒或木马,当然这种方法只对特征库中已有的病毒或木马有效。现在有一些提取病毒特征码的辅助工具,如MyCCL、multiCCL等。特征码技术的操作流程是:捕获木马—分析程序—提取特征码—加入特征库—升级杀毒软件[16~20]。当新型病毒或木马出现时,反病毒软件都要进行上述工作。这里最关键的是病毒分析专家分析木马程序、定位并提取木马特征代码的工作,缩短这个关键步骤,就可以把病毒库的更新过程缩短,从而更有效地检测新出现的病毒或木马。有了特征码,接下来就是扫描文件过程中的匹配工作。将可疑文件、IP数据分组、电子邮件附件和可执行文件与特征库中的特征码进行匹配来确定检测对象是否为病毒或木马[21]。特征码一般为一段二进制串,有时候为了提高检测速度会加入文件位置信息,或者用含有通配符的二进制表达式来匹配一些病毒或木马的简单变形。此外要注意,如果待检测文件为压缩文件,首先要反复解压缩;还需要检查可执行文件是否已加壳,对加壳文件需要先反复脱壳才能用于匹配。可见影响特征码检测速度的一个重要因素是匹配算法的优劣,因此很多反病毒公司一直致力于匹配算法的优化。

虽然特征码技术操作起来比较简单,可靠性也高,但是它的缺点还是比较明显的。面对病毒或木马的加壳或变种以及新出现的恶意程序,静态的特征码检测技术就无能为力了。此外,在当今互联网发展日新月异的时代,木马可以很快地产生变种,每天又有很多新型的木马出现,于是特征库中特征码的条数不断增多,导致特征码匹配时工作量加大,匹配速度也有所下降[22~27]

1.4.2 基于文件静态特征的检测技术

木马程序的本质是可执行文件。通常Windows操作系统中的EXE和32位的DLL文件都采用的是PE(Portable Executable)格式。由于PE文件具有规范的结构,因此可以利用数据挖掘等信息处理技术分析木马文件与正常的可执行文件的静态特征,研究两者的区别,找出木马文件不同于正常文件的特征,用于木马的检测。目前,基于此思想的木马检测方法主要有以下两种。

一种是PE文件API分析法,此方法通过静态分析目标文件的PE文件结构,得到该可执行文件运行时可能会调用的API序列,然后将此序列与木马生命周期中经常调用的API函数集合进行比对,同时对二者的相似程度进行量化计算,并用一个值表示,称为静态危险指数,最后根据计算出的该指数是否超过报警阈值来决定目标文件是否为木马[28]。可见此方法只是从PE文件中分析得到文件运行时调用的API序列,相对比较简单。

另一种方法则比较复杂,它关注PE文件中更多的静态特征信息。先来研究PE文件的格式,PE文件是由Microsoft公司设计的可执行的二进制文件格式,了解这种结构后就可以对可执行文件进行加密、加壳和修改等操作,很多黑客都熟练运用这些技术。PE文件的组织形式是线性数据流,其结构从上到下依次为:MS-DOS头部、实模式残余程序、PE文件标志、PE文件头、PE文件可选头部,接下来是各个段的头部,然后是与段头部对应的各个段的实体[29,30]。文件结构的结尾包含一些混合信息,包括行号、重分配、符号表等信息和字串表数据。图1.3显示了PE文件的映像结构。一个典型的Windows NT应用程序有9个预定义段,它们是:.text(代码区段)、.bss(未初始化区段)、.rdata(只读数据区段输入输出表)、.data(全局变量数据区段)、.rsrc(资源区段)、.edata(只读数据区段输出表)、.idata(只读数据区段输入表)、.pdata(异常信息区段)、.debug(调试区段)。比如分析输入表可以得到PE文件调用Windows DLL函数的列表,分析输出表可以得到PE文件输出DLL函数的列表,分析.rsrc区段能得到可执行程序或木马运行时释放出的一些资源文件信息(如DLL、EXE、图标、图形界面CSS等)。从PE文件中可以提取多种文件的静态特征,包括PE头、Section Table结构数组中各个区段的信息、输入表信息、输出表信息等。这些都可以作为木马检测的依据。PE文件在磁盘上的数据结构与其在内存中的结构是相同的,这是PE文件相比于其他文件格式的一大优点。PE文件在载入内存镜像时,是分段载入的,并且是将文件较高的偏移地址部分映射到较高地址的内存空间中。PE文件载入内存后,其某个区段的偏移量可能与其在磁盘上的偏移地址不同。因此在分析和提取PE文件静态特征信息的过程中会存在大量的物理地址与虚拟地址转换的计算[31]

图1.3 PE文件映像结构

基于文件静态特征的检测技术的工作过程如下。1)对提取出来的PE文件静态特征信息进行分类,每一种静态特征,在事先收集建立的木马样本库中,运用数据挖掘等技术看此特征在每个木马中是否存在,然后计算此特征是木马特征的概率。综合所有静态特征的概率,给每种静态特征设定一个权值,这个权值标识了每种特征作为木马特征的可能性大小;2)综合分析所有的权值,根据每种静态特征对判断为木马的贡献度选出重要的静态特征,并计算它们的权值之和,结果作为判定木马的阈值;3)分析待检测文件是否包含这些重要特征,并对提取出的重要特征权值进行计算,如果最后结果达到阈值,就认为这个PE文件是木马或者其中包含木马程序[32]

可以看出,基于文件静态特征的检测技术是基于概率的,计算量比较大,并且其性能与木马样本库的完备性有关,因此其误报率还是比较大的。这就是此技术没有被广泛使用的原因,但这种检测思想还是很有研究价值的。

1.4.3 文件完整性检测技术

由于木马感染计算机后通常会修改某些系统文件,因此可以通过检查系统文件的完整性判断木马是否存在。文件完整性检测技术又称校验和检测技术,其基本原理是:在系统正常的情况下对所有的系统文件做校验,得到每个系统文件的校验和,并保存到数据库中。在后续检测时,首先计算当前状态下系统文件的校验和,然后与数据库中保存的完整的校验和做比较,如果出现某个系统文件的两个校验和不一致,则认为此文件的完整性被破坏,即此文件被修改过,则当前计算机有可能感染了木马[33]。这样再进行进一步的扫描工作,就可以很快锁定木马,从而提高了检测木马的效率。文件完整性检测过程如图1.4所示。

这里的校验通常采用的是数字签名方法。当木马感染文件时,很容易破坏文件的数字签名信息,因此被数字签名的文件的完整性很容易验证。文件的数字签名可以使用散列函数计算得到,结果是一个较短的由字母和数字组成的字符串。好的散列函数在输入域中很少出现散列冲突,因此不同的文件通过散列函数计算得到的结果通常是不同的,当散列函数应用于校验和的时候,可以用相对较短的散列值来验证任意长度的数据是否被更改过。目前被广泛采用的散列算法有MD5、SHA类等,安全性都比较高[34]。最为著名的文件系统完整性检测工具是Tripwire,它是工作在Unix环境下的。此软件的工作机制是对每个指定要监控的文件进行读取,生成相应的数字签名并保存。如果检查到文件当前的数字签名与保存的值不相同,那么这个文件一定被改动过[35]。但是使用加密算法生成文件的数字签名对系统资源的耗费比较大,因此应根据文件的重要程度来决定是否要监控。此外,首先,要保证数据库中保存的数据签名是在系统完整的情况下生成的,即是可靠有效的;其次,要保证这个数据库的安全,一般采用的方法是将数据库文件复制到移动存储介质中保存;另外,当系统中某些文件被用户正常修改时,数据库中的数字签名要进行相应的更新。上面这些需要注意的问题无疑也体现了文件完整性检测技术的弊端。

图1.4 文件完整性检测过程

1.4.4 虚拟机检测技术

虚拟机检测技术的原理和VMWare有些类似,都是一种模仿操作系统环境的虚拟环境。虚拟机技术用于木马检测的方法是诱使木马把虚拟机当作真正的主机环境,开始安装、运行以及破坏操作,这样木马就把运行的流程以及行为特征都暴露在分析人员的眼前,这样病毒分析人员就可以根据这些信息判断是否为木马并制定反木马的策略[36,37]。而且虽然木马执行了,但并未对实际系统造成危害,表现出很高的安全性和可用性。虚拟机技术一般用来检测经过加壳、加密和变形的木马病毒程序。

沙盘和沙箱是虚拟机技术很好的应用实例。让外来程序运行于沙盘内,监控其运行方式,是否释放文件,是否进行恶意攻击。如果外来程序是新型木马,就可以第一时间掌握其特征代码以及生命周期内的所有动态行为特征,为制定检测和清除方案提供数据支撑。而沙箱则更像一个安全容器,沙箱内的环境可以人为进行配置,包括文件类型、应用程序和运行的进程、系统服务等。将一个未知程序放入沙箱运行,那么此程序对文件和注册表的所有操作都会被虚拟化重定向,即所有的操作都是虚拟的,真实的文件和注册表并未改变,从而保证了木马无法对系统中的数据进行修改而破坏系统完整性。每个木马样本都单独运行在沙箱中,沙箱会记录下木马的行为,包括对文件、注册表、进程线程和网络等各方面的操作。对行为进行分析之后,将系统还原到初始状态,以进行后续其他样本的分析。CWSandbox在线系统[38~40]和可执行程序行为自动分析工具cuckoo[41]都是利用虚拟机技术对病毒木马进行行为捕获分析的沙箱系统。

尽管虚拟机技术应用范围很广,技术实现上也没有难度,但由于运行虚拟机时会占用大量的系统资源,影响系统的运行效率,所以一般只能虚拟执行程序中的部分代码,这样可能不利于对其分析。目前,虚拟机技术一般只是用于检测文件型病毒,对木马程序的检测还停留在理论阶段,有待进一步研究[42]。随着恶意代码的不断更新,又出现了专门针对虚拟机的病毒,能够穿透虚拟机,使虚拟机技术一度面临着挑战。

1.4.5 行为分析技术

行为分析(Behavior Analysis)技术是一种基于程序行为的动态分析技术,主要用于未知木马的检测,在一定程度上解决了信息安全领域防御落后于攻击的难题,是主动防御技术的一种实现方法。2002年McAfee公司发表了一份白皮书,其中从理论上对行为分析检测技术进行了阐述,并指出行为分析技术很快将成为传统的特征码杀毒技术的有力的辅助检测技术[43~45]。行为分析技术目前是反病毒领域研究的热点,有很多反病毒厂商也在自己的产品中引入了行为分析技术,并取得了初步成效。比如瑞星杀毒软件、东方微点主动防御软件、江民杀毒软件、AVG等都在研究行为分析引擎,但是技术还不够成熟,行为分析技术的研究仍然处于初级阶段,还有很长的路要走[46]

行为分析是根据可疑程序运行过程中所体现的一系列行为来判断此程序是否为木马。这些行为包括对文件、注册表的操作以及网络通信的动作等。因此首先要动态监控并获取运行程序的行为,然后分析行为之间的逻辑关系,并运用一定的算法计算出此程序的可疑度,从而决定是否把该程序判定为木马[47]。现在的木马隐藏技术越来越往内核发展,木马很容易绕过应用层的钩子拦截,所以要拦截木马的行为最好使用内核层钩子以及过滤驱动技术,如开发文件系统过滤驱动和网络驱动来拦截木马对文件的操作和网络通信行为。对行为进行分析的算法是一种分类算法,它的作用是把可疑程序归为木马还是正常程序。此前由于行为分析技术不成熟,一旦发现程序有可疑行为就提示用户存在潜在危险,要求用户选择是“放过”还是“拦截”,这样的用户体验很不好,给用户带来了困扰。特别是对于没有专业知识的用户,还容易误选导致正常程序无法运行或者放行了木马等恶意程序。可见行为分析算法是木马检测的关键。此外,研究大量不同种类的木马并利用数据挖掘技术提取木马程序在行为表现上区别于合法程序的一些共性特征,建立木马的行为特征库,在检测中就可以将程序运行过程中的行为与行为特征库中的行为进行匹配,作为判断的一项依据。

比起静态特征码需要病毒分析专家提取,行为特征比较容易借助工具分析得到,并且相对于特征码的千变万化,木马行为的变化比较少,因此行为特征库比较小,且数据量增长较慢,这样便于维护且有利于行为特征的匹配工作[48~50]。行为分析技术可以在不知道木马程序的特征码的情况下,对可疑程序的行为动作进行分析来检测出木马,从而及时阻止新型木马对系统造成破坏以及避免给用户带来损失。但是由于没有一个标准来确定具有某些行为特征就是木马,而且木马有些行为也是正常程序的动作,因而行为分析检测技术的误报率还是比较高的,目前,通过优化行为分析算法来降低误报率是该研究领域的总体趋势。除此之外,行为分析技术要捕获可疑程序的每一个行为并对敏感行为进行分析,占用了一定的计算机资源并耗费了时间,影响了检测速度。

1.4.6 入侵检测技术

入侵检测是用于检测损害或企图损害系统的机密性、完整性或可用性等行为的一类安全技术。此类技术通过在受保护网络或系统中部署检测设备来监视受保护网络或系统的状态与活动,根据所采集的数据,采用相应的检测方法发现非授权或恶意的系统及网络行为,并为防范入侵行为提供技术支持方法。

入侵检测系统(IDS, Intrusion Detection System)是一种应用入侵检测技术的网络安全设备。IDS的主要功能有监视并分析用户和系统的行为,检查系统中的安全漏洞,评估系统资源和数据文件的完整性,检测出现的入侵行为,统计并分析异常行为,管理维护系统日志。入侵检测系统的工作过程如下:1)充分并可靠地采集网络和系统中的数据,提取能够描述网络和系统行为的特征;2)根据上一步骤得到的数据和特征准确高效地判断出网络和系统行为的性质;3)对判断为入侵性质的行为提供响应手段。因而通常IDS至少包括数据源、分析检测和响应3个模块,其系统结构如图1.5所示。数据源模块为分析检测模块提供其需要的网络和系统的相关数据和状态,分析检测模块执行完入侵检测后,将结果提交给响应模块。然后响应模块就采取相应的措施来阻止进一步的入侵或恢复被入侵破坏的系统。在IDS的工作过程中,入侵模式库的作用十分重要,其中存储了入侵行为的特征模式,为分析检测模块提供了检测依据。

图1.5 入侵检测系统结构

按照入侵检测系统数据源的不同,同入侵防御系统类似,IDS可以分为基于主机的入侵检测系统(HIDS, Host-based Intrusion Detection System)和基于网络的入侵检测系统(NIDS, Network-based Intrusion Detection System)两类。

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

基于主机的IDS检测的目标是主机系统和系统的本地用户,它一般运行在被检测的主机上,根据主机的审计数据和系统日志发现可疑迹象。如果攻击者已经攻破网络防护设施,并进入被攻击主机的操作系统中,HIDS对于监测重要服务器的安全状态并做出及时的响应具有很大的价值,还可以实现安全恢复机制。然而由于HIDS依赖于审计数据和系统日志,因此其缺点也比较明显:首先,审计数据和系统日志经常被修改或清除;其次,攻击者有可能使用某些特权操作或更底层的操作来逃避审计;最后,HIDS很难识别审计范围之外的系统攻击和网络攻击。

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

基于网络的IDS主要根据网络流量、单台或多台主机的审计数据和日志检测入侵行为。一个或多个探测器负责采集网络的数据流,采集到的数据被初步处理后送给分析检测模块。这里的探测器通常指的是工作在混杂模式下的网卡。分析检测模块一般使用模式匹配、统计分析等技术来识别攻击行为。一旦检测到了攻击行为,响应模块就做出适当的响应,比如报警、通知管理员、切断相关用户的网络连接、记录相关信息等。

入侵检测技术的核心是分析检测模块所采取的分析检测方法,即IDS根据已有的知识判断网络和系统是否遭受入侵及遭受何种入侵的方法。目前常用的分析检测方法主要有误用检测和异常检测两大类。

程序或用户的攻击行为存在特定的模式,这类攻击行为被称为系统的误用行为,于是就产生了误用检测(Misuse Detection)。该方法的流程是:首先建立各类入侵的行为模式,对它们进行标识或编码,建立误用模式库;在运行中,误用检测方法把来自数据源的数据与误用模式库中的行为模式进行匹配,检查是否存在已知的误用模式。可见误用检测方法只能检测已知的攻击,而当新型攻击手段出现时,则需要人为分析得到新的攻击模式并添加到误用模式库后,IDS才能检测新出现的攻击。因此IDS的构造也需要考虑这方面的可扩展性。

异常检测(Anomaly Detection)基于以下事实:不管是程序还是系统用户的行为,各自在表现上都会存在一些特性。比如某服务程序每隔一定时间就访问某个目录;办公室人员频繁使用文字编辑软件。这些具有一致性的特征与正常行为的基本模式相对应,而异常行为不具有这些特征。异常检测则通过检测用户的行为和系统资源的使用情况是否存在异常来判断是否存在攻击。此方法的关键在于建立“正常使用描述”(NUP, Normal Usage Profile)并把当前系统或用户行为与NUP进行比较,判断其与正常模式的偏离程度。这里的描述(Profile)通常由一组系统或用户行为特性的度量组成,比如CPU使用率、内存使用率、登录的时间和次数、网络活动、文件的检验和等,一般为每个度量设置一个阈值或一个变化范围,当超出则认为是异常行为。异常检测的优点是具有抽象系统正常行为从而检测系统异常行为的能力。这种能力不受系统之前是否知道这种入侵的限制,因此异常检测能够检测未知的入侵行为。但系统或用户的行为模式可能增加或变化,所以需要不断更新、调整NUP。异常检测的缺陷也比较明显,如果入侵者掌握了检测规律,就可以小心地避免造成系统指标的突变,而使用逐渐改变系统指标的方法逃避检测。而且检测时间较长,检测效率也不高。最关键的是,这仍然是一种“事后”的检测方法,当检测到入侵行为时,破坏已经造成。

1.4.7 云安全技术

继云计算、云存储之后,我国企业提出了“云安全(Cloud Security)”概念,在国际云计算领域独树一帜。云安全技术是P2P技术、网格技术、云计算技术等分布式计算技术混合发展、自然演化的结果。“云安全”计划是网络时代信息安全的最新体现,它融合了并行处理、网格计算、未知病毒行为判断等新兴技术和概念。

根据互联网发展的趋势可以预测不久的将来杀毒软件可能无法有效地处理日益增多的恶意程序。来自互联网的主要威胁正在由电脑病毒转向恶意程序及木马,在这样的情况下,仅仅采用传统的特征库判别法显然已经过时。云安全技术应用后,识别和查杀病毒不再仅仅依靠本地硬盘中的病毒库,而是依靠庞大的网络服务,实时进行采集、分析以及处理。整个互联网就是一个巨大的“杀毒软件”,参与者越多,每个参与者就越安全,整个互联网就会更安全。很多杀毒软件厂商如趋势、瑞星、卡巴斯基、McAfee、赛门铁克、江民科技、PANDA、金山、360安全卫士等都推出了云安全解决方案。其中以趋势科技和瑞星最具影响力。由趋势科技提出的“SecureCloud”,以Web信誉服务(WRS)、邮件信誉服务(ERS)和文件信誉服务(FRS)为基础架构的云客户端安全架构,把病毒特征码文件保存到互联网云数据库中,令其在端点处保持最低数量用于验证。主要用于企业级产品中,强调的是对复合式攻击的拦截和轻客户端策略,最终目的是让威胁在到达用户计算机或公司网络之前就对其予以拦截。趋势的云安全可以概括为基于互联网数据库的轻客户端程序,也就是构架一个庞大的黑白名单服务器群,用于客户端的查询。而瑞星提出的云安全概念是建立在广大的互联网用户上的,即通过网状的大量客户端对网络中软件行为异常的监测,获取互联网中病毒、木马等恶意程序的最新信息,推送到服务器端进行自动分析和处理,然后把病毒和木马的解决方案通过升级杀毒软件或卡分发到每一个客户端。瑞星的云安全特点是能够感知用户计算机上已经存在的未知木马,但却无法在未知木马入侵计算机前对其进行拦截。

对于木马的检测与防御而言,云安全技术缩短了木马样本的发现时间和响应时间,同时架构了一个基于整个互联网的安全体系,对于未知木马的主动防御开辟了新的思路。