恶意代码的分析技术
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
恶意代码的分析技术
摘要:本文讨论了基于代码特征的分析方法、基于代码语义的分析方法、外部观察法和跟踪调试法等四种恶意代码分析方法关键词:恶意代码静态分析技术动态分析技术
1 静态分析方法
静态分析法就是在不运行恶意代码的情况下,利用分析工具对恶意代码的静态特征和功能模块进行分析的方法,利用静态分析方法,可以找到恶意代码的特征字符串、特征代码段等,还可以得到恶意代码的功能模块和各个功能模块的流程图。
静态分析的好处是可以避免恶意代码执行过程对分析系统的破坏。
恶意代码从本质上是由计算机指令构成的,根据分析过程是否考虑构成恶意代码的计算机指令的语义,可以把静态分析方法分成基于代码特征的分析方法和基于代码语义的分析方法两种类型。
1.1 基于代码特征的分析方法
基于代码特征的分析方法在分析过程中,不考虑恶意代码的指令意义,而是分析指令的统计特性、代码的结构特性等。
特征量分析方法常用于对执行程序类型的恶意代码进行分析。
在Windows系统环境下,可执行程序通常是PE文件,PE文件相当于一个索引文件结构,一个PE文件由节(section)构成,其中有一些节专门用于存储程序中用
到的静态数据。
如果用c语言编写的程序中存在一条语句CreateMuetex(NULL,NULL,“MYTESTMUTEX”)。
那么在生成的PE 文件中会存在一个静态数据“MYTESTMUTEX”通过分析PE结构可以从静态数据节中提取静态数据。
在某个特定的恶意代码中,这些静态数据会在程序的特定位置出现,并且不会随着程序拷贝副本而变化。
虽然这些静态数据在其他PE文件中也有可能存在,但是在相同位置出现的可能性是非常小的,所以,完全可以使用这些静态数据和其出现的位置作为描述恶意代码的特征。
对于有网络功能的恶意代码,其执行程序中通常会封装一些需要访问的网络地址。
比如,用C语言编写的恶意代码中使用下面的语句URLDownloadToFile(0,”/a.exe”,”c:\\a.exe”,0,0)从网站下载可执行程序到C盘根目录,这个动作很有可能是进行恶意代码升级,这种情况下,在恶意代码的静态数据部分可以看到下载地址和下载的文件名,通过这些具有明显网络地址特征的静态数据可以判定部分恶意代码的部分网络功能。
当然有些恶意代码在设计过程中,考虑到信息暴露的问题而将静态数据进行拆分,甚至不使用静态数据,这种情况就只能通过语义分析或者动态跟踪分析得到具体信息了。
1.2 基于代码语义的分析方法
基于代码语义恶意代码分析方法要求考虑构成恶意代码的指令的含义,通过理解指令语义建立恶意代码的流程图和功能框图,进一步分析恶意代码的功能结构。
基于代码语义的分析过程,首先使用反汇
编工具对恶意代码执行体进行反汇编,然后通过理解恶意代码的反汇编程序了解恶意代码的功能。
从理论上讲,通过这种方法可以得到恶意代码所有功能特征。
但是,目前基于语义的恶意代码分析方法主要还是依靠人工来完成,人工分析的过程需要花费分析人员的大量时间,对分析人员本身的要求也很高。
本文的五章就是在粗粒度的语义识别的基础上,实现恶意代码语义分析的自动化。
2 动态分析方法
动态分析法是通过监视恶意代码运行过程从而了解恶意代码功能。
根据分析过程中是否需要考虑恶意代码的语义特征,将动态分析方法分为外部观察法和跟踪调试法两种。
2.1 外部观察法
外部观察法是利用系统监视工具观察恶意代码运行过程中系统环境的变化,通过分析这些变化判断恶意代码功能的分析方法。
恶意代码作为一段程序在运行过程中通常会对系统造成一定的影响,有些恶意代码为了保证自己的自启动功能和进程隐藏的功能,通常会修改系统注册表和系统文件,或者会修改系统配置。
反过来,通过观察恶意代码运行过程中系统文件、系统配置和系统注册表的变化就可以分析恶意代码的自启动实现方法和进程隐藏方法。
另外,恶意代码通常会有一些比较特别的网络行为,比如通过网络进行传播、繁殖和拒绝服
务攻击等破坏活动,或者通过网络进行诈骗等犯罪活动,或者通过网络将搜集到的机密信息传递给恶意代码的控制者,或者在本地开启一些端口、服务等后门等待恶意代码控制者对受害主机的控制访问。
通过观察恶意代码运行过程中的网络活动情况可以了解恶意代码的网络功能。
虽然通过观测恶意代码执行过程对系统的影响可以得到的信息有限,但是这种分析方法相对简单,效果明显,已经成为分析恶意代码的常用手段之一。
2.2 跟踪调试法
跟踪调试法是通过跟踪恶意代码执行过程使用的系统函数和指令特征分析恶意代码功能的技术。
在实际分析过程中,跟踪调试可以有两种方法,一种方法是单步跟踪恶意代码执行过程,监视恶意代码的每一个执行步骤,在分析过程中也可以在适当的时候执行恶意代码的一个片断,这种分析方法可以全面监视恶意代码的执行过程,但是分析过程相当耗时。
另外一种方法是利用系统hook技术监视恶意代码执行过程中的系统调用和API使用状态来分析恶意代码的功能,这种方法经常用于恶意代码检测。
参考文献
[1] 吴建刚,鲁士文.针对恶意代码的行为阻断方法研究[J].微电子学与计算机,2004(2).
[2] 刘平伟,卿斯汉.恶意代码机理与防范技术研究:博士学位论文[C].北京:中国科学院硕士研究生院,2004,11.
[3] 夏春和,李肖坚,赵沁平.基于入侵诱骗的网络动态防御研究[J].计算机学报,2004(12).
[4] 陈春霞,黄皓.攻击模型的分析与研究[J].算机应用研究,2005(7).
[5] 唐晓东,何连跃,罗军.一种恶意代码防护方法及其实现[J].计算机工程,2005(12).。