恶意代码的分析技术(精选8篇)
恶意代码的分析技术 第1篇
关键词:恶意代码,病毒,分析,检测
恶意代码 (Malicious Code) 是一种违背目标系统安全策略的程序代码, 通过各种手段造成目标机器信息泄密、资源滥用、破坏系统的完整性及可用性。随着互联网普及, 恶意代码也迅速蔓延。从2009年中国“5.19全国断网事件”到“百度被黑事件”, 2010年上半年CNCERT共接收4780次网络安全事件报告 (不包括扫描和垃圾邮件类事件) , 与2009年上半年相比增长105%。其中, 恶意代码、漏洞和网页仿冒事件报告次数居前三位, 所占比例分别为:57.57%、25.96%和15.48%。恶意代码的快速发展、广泛传播, 对计算机信息系统的保密性、可用性和完整性造成了极大的威胁。在当前恶意代码破坏加剧紧迫情况下, 探讨如何高效、准确的分析恶意代码, 最大程度消除网络安全威胁, 是当今安全领域研究的重点和热点。
1 恶意软件及相关概念
恶意软件、恶意代码、恶意内容通常被统称为恶意软件。恶意代码是指有能力破坏程序代码或数据的可用性和完整性, 或者系统的保密性的程序代码 (如木马、病毒、蠕虫和陷阱门等) 。恶意软件的类型很多, 可以从行为上将其分成病毒、蠕虫和木马三大类。
病毒:计算机病毒是指编制或者在计算机程序中插入的破坏计算机功能或者破坏数据、影响计算机使用, 并且能够自我复制的一组计算机指令或程序代码。是能进行自我复制的代码, 并需要人工交互传播的代码。病毒一般不能作为独立可执行文件存在, 它常在其它可执行文件运行时自行启动, 通过可移动存储器, 电子邮件或共享目录进行传播。如CIH引导区病毒、宏病毒和脚本病毒等。
蠕虫:是一段能进行自我复制、可独立自动运行的恶意代码, 它不需要人机交互, 通过嵌入正常程序和系统中的漏洞传播到其它网络, 造成最严重的破坏, 难以防范和检测。如网页蠕虫利用IFrame漏洞和MIME漏洞进行传播, 又如MOR-RIS蠕虫等等。
恶意移动代码:以脚本、小型应用程序和控制器的形式存在于网页上, 当用户访问某个Web站点时, 通过自动从服务器上下载移动代码进行传播。
后门:是一个允许攻击者绕过系统正常的安全控制, 不需要有效的验证, 并且可能没有日记记录便可进入系统获得系统访问权限的程序。
木马:木马全称特洛伊木马 (Trojan Horse) , 就是将有害的恶意行为伪装成有益无害的软件潜伏于计算机中, 以收集敏感信息为主要目的。木马是微软和熊猫实验室检测出来的最多的恶意软件的类型。木马的工作原理如图1所示。
Rootkit:是一个可以修改现有的操作系统的软件, 它可以使攻击者在计算机上实现一直保持访问状态, 或者隐藏自身身份。
2 恶意代码分析方法
恶意代码分析方法主要分为静态分析和动态分析两大类, 如图2所示。静态分析不受特定运行环境的限制, 在不运行病毒程序的情况下, 详细分析病毒内部结构和功能, 分析效率高, 但具有较大的局限性。
2.1 静态分析
静态分析是指对可执行恶意代码的文件利用PE结构、编译器原理等技术进行分析, 要分析过程中不需要执行恶意代码。静态分析包括分析字符串、查看脚本、二进制分析、反汇编以及可能的反向编译等。反编译技术和特征码分析比较常用。反汇编是指将C语言、C++等高级语言编写的程序可执行文件反编译还原成汇编语言或其他高级语言。利用反汇编技术将恶意病毒代码转化成高级语言后, 能较为清晰地看出恶意代码的内部结构, 了解其系统调用, 从而提高代码分析效率。常见的反编译工具有Giampiero Caprino提供的逆向工程编译器 (REC) 、JreversePro和HomeBrew Decompiler等。
特征码作为该病毒唯一标识的一小段二进制代码, 可以作为查毒程序辨认病毒的依据。特征码的描述取决于人的主观因素, 对于具有反跟踪技术和变形、解码技术的病毒, 获取特征码的变得极为复杂。特征码查病毒由于误报率高, 而杀病毒技术又导致了反病毒软件的技术迟滞, 因此在国际上很难得到广域性支持。
2.2 动态分析
动态分析则与静态分析方法相反, 是在恶意代码执行的情况下, 通过工具进行内存等分析的一种信息分析方式。动态分析法又可根据是否分析代码语义分为动态跟踪法和环境比较法。动态跟踪法是利用Debug等程序调试工具一步一步地单步执行恶意代码, 然后根据其代码特征对其进行动态跟踪分析。常用的动态分析工具是SOFTICE或TRW2000有效地进行动态跟踪分析。在分析时首先对恶意代码进行粗跟踪, 再对关键部分进行细跟踪。环境比较法是指让恶意代码在专门的实验机或虚拟机上运行, 然后通过比较恶意代码运行前后主机的各种状态信息的变化来分析恶意代码的功能。针对计算机病毒, 软件仿真扫描技术提供了一种多态变形技术, 是通过仿真CPU执行, 在虚拟机下伪执行病毒程序, 能让病毒在执行期间暴露其破坏性。图2为恶意代码在多种虚拟机下仿真执行
调试分析是指分析人员利用调试器跟踪软件的运行, 寻求破解的途径。可以将之分为内核态调试器和用户态调试器两类。常用的方法一种是利用API Hook挂钩某些系统函数。API Hook可分为用户态API Hook和核心态API Hook。SoftICE、Win Dbg、WDEB386和i386KD等等都是在硬件与操作系统之间针对系统核心或驱动进行调试的。OllyDbg等是在操作系统和用户态程序之间针对用户态程序进行调试。
3.3 恶意代码行为分析
恶意代码行为分析就是从代码的功能和行为特征上检测该代码是否具有恶意性的技术。恶意代码在操作系统中的行为表现是和正常程序的API和参数调用序列有所区别的, 可以从程序的行为特征方面来判别代码是否具有恶意性。大多数微处理器都支持用户 (User/Normal) 和内核 (Kernel/Privileged) 两种模式。内核模式主要执行操作系统组件和关键系统组件, 一般用户模式的程序只能访问私有地址空间和执行非特权等级的指令。恶意代码攻击行为归纳为入侵系统、维持或提升现有权限、隐蔽、潜伏和破坏等几种。恶意代码攻击模型如图3所示。
4 恶意代码检测方法
恶意代码检测技术最流行的主要有特征码扫描技术、虚拟机检测技术和完整性检测技术。
4.1 特征码扫描
特征码扫描是检测已知恶意代码的最主要方法。在新恶意代码出现后, 通过动态调试或静态反汇编, 从代码中提取独一无二的程序指令片断建立恶意代码的特征库文件。在扫描程序工作后根据特征文件中的特征字符串, 进行与待检测文件的扫描匹配。通过更新特征文件以更新最新的恶意代码特征字符串。 (如图3)
4.2 完整性检测
完整性检测是一种针对文件感染型恶意代码的检测技术。如果新文件未感染恶意代码, 通过CRC32和MD5等算法算出文件的HASH值, 放入安全的数据库。检测时再次计算被检测文件的HASH值, 与数据库中原有的值比较判断原文件是否被修改过, 可能含有恶意代码。完整性检测技术的优点是能够有效检测恶意代码对于文件的修改。可以在恶意代码检测软件中设置校验和法, 也可以将校验和法常驻内存。
4.3 虚拟机检测
虚拟机检测主要针对使用了代码变形技术的恶意代码进行检测, 目前已得到广泛应用。多态病毒采用等价指令替换, 指令重排序等技术实现样本执行体的多样性。虚拟机技术就是让恶意代码在虚拟的环境中执行解密工作。当恶意软件使用代码段加密 (加壳) 等变形技术时, 如果通过普通的特征码扫描, 将很难检测。通过虚拟机检测技术将从文件入口点处逐条取指令执行, 直到加密段指令执行完成, 之后即可进行特征检测。虚拟机技术最早用于反病毒虚拟机。其原理如图4所示。
4.4 手动恶意代码检测
针对恶意代码手动检测, 可以利用蜜罐等工具搜集恶意代码, 以用作手工分析。如http://vx.netlux.org/可以提供恶意代码可执行文件以及源代码的下载。手工分析的工具主要有:autorun.exe、filemon、regmon、chkrootkit、diskmon、icesword、portmon、procexp等。将手工分析的结果进行整理, 可以概括出恶意代码的高频行为。其中, 恶意代码的文件行为有写入、重命名、修改、删除等。如病毒中华吸血鬼可以写入kav32.exe, wsock32.dll、pig.vbs至windowstasks目录下。恶意代码开始运行后, 可能有关闭其他进程、创建新进程等进程的行为, 还有读取、修改注册表的行为, 自动链接到指定的网址, 还会使用加载dll的方式实现进程隐藏, 遍历进程行为、调用卸载程序、Hook行为、窗口行为等等都是恶意代码的常见表现。
参考文献
[1]何申, 张四海, 王煦法, 等.网络脚本病毒的统计分析方法[J].计算机学报, 2006, 29 (6) .
[2]安天实验室.安天实验室信息安全威胁综合报告[R].哈尔滨:安天实验室, 2011.
[3]张仁斌, 李钢, 侯整风.计算机病毒与反病毒技术[M].清华大学出版社, 2006, 6, 1 2.
[4]任飞, 章炜, 张爱华.网页木马攻防实战[M].电子工业出版社, 2009 (5) .
恶意代码的分析技术 第2篇
据悉,首先发现了本次攻击的是技术安全公司Websense公司,其研究人员第一次被恶意代码导向欺诈网站。据他们评估,这次攻击是有史以来规模最大的一次,黑客是通过入侵运行互联网背后数据库的服务器,成功注入恶意代码的。Websense将此次攻击称为“LizaMoon”。目前受到影响的以小网站居多,尚无证据表明主流企业或政府网站受到入侵。
Websense的资深经理帕特里克·罗纳德(Patrik Runald)解释说,当用户访问被攻击过的网页时,他们可以看到自己被重新导向另一个网站,如果这时用户关闭窗口,将不会受到影响。
但如果用户在键入被感染的网页地址后没有及时关闭窗口,或者点击了感染恶意代码的链接,他们被导向的网页就会显示一个警告信息——“Windows稳定性中心”,告知用户他们的计算机有问题,并敦促他们购买软件进行修复。但这是一个假冒的微软安全产品。
据Websense分析,这个网站看起来是老练的黑客用来骗钱的,但尚不清楚黑客是否已经在用户付费的时候,在他们的计算机里植入了恶意软件,或者在用户操作时把他们的信息和身份盗窃欺诈关联起来。
Websense指出,这个欺诈网站制作质量看起来很好,但很容易就能判断它伪造的,因为微软并无名为“Windows稳定性中心”的产品。
苹果公司iTunes服务上一些载有播客(视频分享)内容的第三方网站受到攻击。但是苹果好像已经制止了恶意链接的运行。Websense称,苹果尚未对此置评。
这次攻击可能需要一些时间才能得到控制和修复,因为要在研究人员将被攻击的软件识别之后,网站运营人员才能安装修复软件。
浅谈恶意代码分析技术发展趋势 第3篇
1.1 恶意代码 (Malicious code)
本文中, 恶意代码泛指任何带有不良意图的计算机指令、程序代码、脚本文件等等, 包括病毒、木马。随着互联网技术的飞速发展以及信息交换能力的增强, 网络传播已经成为恶意代码入侵的主要形式, 基于网络的恶意代码检测应当作为我们防范恶意代码的重点研究方向。
1.2 反恶意代码研究背景
背景一,恶意代码规模飞速膨胀, 根据安天实验室的统计, 2000年时, 各类病毒累计总数约2万多种, 到2006年, 增加到大约13万种, 到2012年, 这一数字已达到800万种。
背景二,归一化模型的形成与进化, 反恶意代码的核心方法论是归一化模型。所谓归一化, 是把大量的、异构的事件转换成可以形式化的同构规则, 从整个反恶意代码基础维护体制, 转化为对基本归一化模型的维护、对精确特征的维护和对未知检测模型的维护。
背景三,复杂度变化, 恶意代码的感染方式从附着在正常程序上的感染式片段变成独立文件, 不再受代码整体空间的束缚功能局限性减少, 病毒攻击演变为更复杂的大规模深度恶意攻击, 相应的整个处理体系也必须要升级, 这一需求带动了整个反恶意代码体系的发展。
2 恶意代码分析技术发展历史
2.1 1 9 88-1 99 5手工作业阶段
1986年第一个IBM PC架构的恶意代码巴基斯坦智能诞生, 早期病毒简单, 数量很少, 通过将不同病毒的查杀模块简单串接在一起即可清除, 反病毒程序不存在病毒库的概念, 更不需要后台体系处理。
随着病毒数量的增多, 早期现代反病毒引擎开始出现, 这一时期的反病毒引擎具备以下特点:第一, 基于检测方法的形式化, 把恶意代码概括成一些不同的归一化模型, 通过同一种形式规则进行检查;第二, 实现了以格式识别为核心的整个前导逻辑处理。
这一阶段的恶意代码分析技术主要完成了最基本的方法奠基问题, 制定了反病毒归一化的基础模型, 为后续的发展奠定了基础。
2.2 1995-2002客户机/服务器管理与规则自动化提取阶段
随着计算机技术的进步和局域网技术的逐渐成熟, 恶意代码的数量和质量相比之前都有了很大的发展, 分析技术也逐渐转化为对恶意代码程序中的特征码规则的提取和分析。在新的反病毒引擎中, 需要增加更多的库用于进行形式化识别工作, 还有相应的对象提取模块, 以及依托这些库工作的大量的格式模块。其中, 特征自动化的病毒库加对象检测可以算是现代反病毒引擎的组成部分。
特征自动化提取是针对所有对象完成的;特征不一定要提取到恶意行为, 只要规则能对此类恶意代码唯一标示, 且不与其他恶意代码发生错报, 更不能与已知白名单发生碰撞以产生误报, 即可认为是该恶意代码的特征。
这一阶段, 以样本管理和规则流转为核心的特征自动化提取技术逐渐发展成熟, C/S模式的分析方式则解决了恶意代码分析工作中的角色问题。
2.3 2 0 0 0-2 0 0 5人工任务流水线阶段
这一时期, 计算机操作系统日益复杂网络感染成为恶意代码的主要攻击模式这种广泛传染的模式, 导致恶意代码辨识压力的剧增, 如何快速、准确的挑选病毒成为一个重要的研究工作。为了解决这一难题, 由程序员手工区分病毒的流水线技术开始引入恶意代码分析工作。
早期顺序流水线和改进的并行流水线, 都是根据安全工作人员的技术特长, 分配相应的工作, 彼此衔接。这两种模式中任何一个环节出现停顿都会导致整个分析工作发生中断, 局部瓶颈问题难以解决。
随后产生的环形流水线较好的解决了这个问题, 在环形流水线上, 样本作为流转于整个流水线的加工实体, 所有自动化部分是自动化工序, 对样本属性标识的提取工作, 视为流水线的工作内容。由于规则自动化完成, 挑选病毒成为恶意代码分析的主要工作。
3 当前反恶意代码分析技术特点
从2005年开始, 网络应用呈现出大发展的趋势, 云计算、虚拟化技术开始广泛应用, 恶意代码和正常应用程序的数量都以几何级数增长。面对这样的挑战, 以人工主导的恶意代码分析思路再也无法适应新时代的恶意代码环境。
当前恶意代码分析需要解决的问题包括对整个恶意代码事件的描述和追溯;恶意代码本身的属性特点;如何处理该恶意代码。为解决这一难题, 反恶意代码分析领域引入了基于自动流水线工序的自动化判定技术。自动流水线工序将整个处理过程视为流水线;将样本的全部属性定义为一个“属性域”, 流水线的处理过程就是属性域的不断填充过程;为每个样本创建一个存放全部属性的XML文件并伴生样本流转。
得益于计算资源成本降低, 虚拟化技术愈加成熟, 样本自动化分析可以通过对基于整个虚拟环境中建立的driver和hook数据抓取和外部网卡提取的网络特征, 形成对恶意代码的判断, 同时虚拟执行也为脱壳技术提供支持, 该环节是目前主流安全厂商的后台分析判定的核心特性。在此基础上, 辅以少量人工分析完成全部分析工作, 修正之前的误判。
自动化判定技术的广泛应用解决了海量恶意代码的分析难题, 有力的遏制了恶意代码的危害。
4 未来技术趋势展望
2010年, 包括震网病毒、Google极光攻击在内的一系列APT攻击事件爆发, 这些攻击综合应用了社会工程学和计算机技术, 攻击质量高、深度广。由于更强的代码隐藏能力和反分析能力, 更复杂的攻击路径, 国与国之间的信息阻断, 如何发现及分析恶意代码的攻击目标和攻击动机变得更加困难。面对这样的安全环境, 大场景深度分析势必会成为未来主流的恶意代码分析技术趋势。
所谓的大场景深度分析, 包括深度代码分析, 即对代码异常的相关性进行分析;深度事件分析, 对异常事件的流程、关联角度的分析;深度综合数据分析, 由于新型网络攻击已经不再局限于信息领域, 我们有必要对不同领域、不同专业的数据进行相关分析, 尽最大可能, 对类似的深度攻击进行阻止和控制。
5 结语
通过以上分析, 我们可以看到, 随着信息技术的发展, 各种网络威胁已经遍布我们的周围, 与此同时, 恶意代码分析技术也随之不断发展, 病毒攻击与反攻击的对抗还将不断继续。
摘要:本文对恶意代码分析技术的发展历史以及当前的主流分析技术进行了简要的总结, 并阐述了如何应对目前开始出现的APT等深度攻击, 对未来的恶意代码分析技术的发展方向做出简单介绍。
关键词:恶意代码,归一化,自动化判定,APT
参考文献
[1]王凌.计算机病毒的感染原理及防范技术研究[J].中国管理信息化, 2013 (1) .
[2]李响, 陈建熊.Win32PE病毒研究[J].合肥学院学报, 2006 (12) .
恶意代码的分析技术 第4篇
一、通信网络中存在的安全隐患
如果通信网络受到恶意代码的攻击, 那么通信网络的业务层、控制层、传输层和接入层都会受到影响, 这样通信网络的安全性就无法得到保障, 因此要做好防止恶意代码入侵的基础工作, 就必须对这四个层面存在的安全隐患进行分析。
(一) 业务层的安全隐患。
网络平台是开展通信业务的主要载体, 这就要求它处于一种开放的状态, 因而保障业务环境的安全性就尤其重要。当恶意代码入侵到网络平台中, 通信业务就会存在以下几方面的安全隐患:管理数据会在没有授权的前提下被使用;业务平台的资源会被恶意占用;业务信息泄露;以“中间人”为跳板, 破坏交易, 而且追踪困难;很多由网络平台提供的增值服务, 如个人计算机、电话业务等业务使用也会受到影响。这些安全隐患都会严重影响通信业务工作的正常运行。
(二) 控制层的安全隐患。
这一层的安全隐患主要是通信协议容易受到攻击。控制的核心设备是软交换, 控制的对象比较单一, 所以一旦受到恶意代码的攻击, 整个控制层就会陷入瘫痪。
(三) 传输层的安全隐患。
顾名思义, 这一层的主要作用就是负责数据的传输, 也被称为“核心传输网”, 可以利用各种先进的方式实现数据的快速传输。现代计算机中应用比较广泛的传输技术就是IP技术和NGN技术。因为这两种技术都存在无连接、不可靠的安全隐患, 所以导致数据在传送过程中容易受到黑客、木马、病毒的攻击和破坏。
(四) 接入层的安全隐患。
网络通信在最初是以封闭的状态运行的, 所以没有将安全的因素考虑进来, 但是随着NGN技术的不断发展, 通信网络逐渐呈现出一种开放的姿态, 其安全隐患也逐渐暴露出来, 给了恶意代码可乘之机。
二、通信网络恶意代码的具体分析
所谓恶意代码, 就是在计算机用户不知情的前提下, 入侵用户的计算机系统, 并对计算机的信息进行破坏, 使其完整性、秘密性和可用性功能遭到损害的一种计算机程序。恶意代码对通信网络的破坏主要是通过病毒、网络蠕虫、木马、流氓软件、恶意网络脚本等方式来实现的。对通信网络恶意代码的分析主要从它的产生、传播、隐蔽和破坏四个方面进行。恶意代码会恶意控制终端服务器, 实现对计算机的信息盗取、获取系统权限、致使系统崩溃和破解系统密码。
(一) 盗取系统信息。
这是恶意代码针对计算机的信息和文件进行的一种有目的的盗取活动。如果恶意代码实现了对服务器的控制, 那么主机的IP地址、操作系统、主机命名都会被强制更改, 这样系统中的IP信息、服务信息、操作系统信息就会被盗取。在被盗取的系统信息中, 文件夹和文件的路径信息是最主要的。
(二) 获取系统权限。
恶意代码通过系统中的漏洞来实现对程序服务器的控制, 然后逐渐控制系统的启动、安全登录方式, 最后实现对系统内部的控制, 甚至会让系统无法正常启动。获取了系统权限之后, 恶意代码就实现了对系统真正意义上的控制。通信网络因为长时间的使用都会出现不同程度的漏洞, 如果不能及时修复, 就会成为恶意代码入侵的管道。当恶意代码获取系统权限之后, 就会在整个通信网络中传播恶意病毒, 导致整个网络瘫痪。
(三) 致使系统崩溃。
致使系统崩溃的元凶就是病毒型的恶意代码, 这种恶意代码的危害性非常大, 会让整个通信网络陷入瘫痪。如果出现无法正常启动系统、启动程序被破坏、用户无法正常登陆等情况, 就要考虑病毒型恶意代码入侵的可能性。
(四) 破解系统密码。
如果系统密码被破解, 就说明系统的保密措施存在漏洞, 也说明恶意代码具有很强的攻击性。恶意代码破解系统密码主要是通过攻击系统的保密机制完成的, 通过内存镜像的方式获取密码。
三、解决恶意代码的应急响应关键技术分析
(一) 检测技术。
虽然现代计算机技术和网络技术在不断进步, 但是恶意代码也在不断发展, 所以现代计算机环境中黑客活动频繁, 严重危害了通信网络的正常工作。要想处理恶意代码, 就要先对恶意代码有一个完整、清晰的认知, 正确判断恶意代码的类型和特点, 才能有效解决恶意代码。在现代通信网络的应急响应关键技术中, 检测技术会自动完成对恶意代码的检测, 实现对恶意代码的动态监测, 对恶意代码的隐蔽技术、破坏程度和远程控制等方面都能自动进行检测, 全方位地确定恶意代码的缺陷。
(二) 效果评估。
在完成了对恶意代码的检测之后, 还需要掌握恶意代码攻击的手段和具体特征, 对恶意代码进行效果评估, 了解恶意代码对通信网络产生的具体危害。对恶意代码进行效果评估时, 主要采用联合交叉熵和网络特征熵的方法来完成, 然后制作一份恶意代码对网络攻击效果的具体评估方案, 对各种类型的恶意代码进行详细的分析和评估。联合交叉熵的方法主要是用于评估恶意代码的攻击性, 是建立在恶意代码攻击性的特征基础之上的, 具体的计算公式为:
其中的X表示恶意代表攻击性特征的动态数据集合, S则表示实数域的性能函数, y*则表示最大化的似然值。利用这个公式就可以精确地计算出恶意代码的攻击性。网络特征熵的方法主要是采集恶意代码的特征值, 对某一种恶意代码在工作中的特征变化进行收集。
(三) 免疫技术。
免疫技术的主要功能是在通信网络中安装免疫系统, 对恶意代码的潜在行为进行实时监控。要想在通信网络中安装免疫系统, 就必须提高树突细胞的免疫能力, 这样才能增强抵挡恶意代码的能力。具体来说, 树突细胞的免疫需要通过免疫细胞的采集、过滤、判断和响应等四个环节才能完成对恶意代码的处理。
四、结语
随着现代通信网络技术的不断发展, 恶意代码也在不断发展, 而且其种类越来越多, 对通信网络产生的危害也越来越大。因为恶意代码具有较强的攻击性和入侵性, 一旦入侵通信网络, 就会对整个系统产生非常严重的影响。为了确保通信网络的安全性和稳定性, 就应该不断加强通信网络的保护体系, 具体来说, 就是采用专门处理恶意代码的应急响应关键技术, 通过检测技术、效果评估和免疫技术, 实现对通信网络的实时保护, 实现对恶意代码的有效控制。
参考文献
[1] .芦天亮.基于人工免疫系统的恶意代码检测技术研究[D].北京邮电大学, 2013
[2] .钟金鑫.恶意代码二进制程序行为分析关键技术研究[D].北京邮电大学, 2012
[3] .陈良.恶意代码检测中若干关键技术研究[D].扬州大学, 2012
[4] .黄茜.基于行为分析的代码危害性评估技术研究[D].解放军信息工程大学, 2010
[5] .王昊.大型网络恶意代码检测关键技术研究[D].天津理工大学, 2012
恶意代码的分析技术 第5篇
随着网络技术的高速发展,越来越多的网页提供基于Web的服务,浏览器和网页逐渐成为恶意代码传播和攻击的主要渠道。恶意网页指的是包含恶意内容的网页,使得病毒、木马等可借其进行蔓延传播或攻击,其代码一般采用Java Script、VBScript等脚本语言进行编写实现,通过各种手段来躲避检测。网页恶意代码利用用户浏览器插件中的漏洞,在用户毫不知情的情况下窃取用户个人信息、在用户端运行恶意软件,如广告软件,木马等,给用户带来极大的安全隐患。为了抵制恶意代码的攻击,大多数的用户倾向于依赖各种杀毒软件的保护。然而,为了逃避杀毒软件基于特征匹配的检测,恶意Java Script代码大量使用混淆技术来保护隐藏自己,使得检测变得复杂与困难。Google的研究显示,中国的恶意站点占到了总数的67%,且呈现一个快速上升的趋势。中国已成为网页恶意代码的重灾区,而相关的研究和检测技术都还不成熟,难以跟上恶意代码的发展速度,因此对于恶意代码的检测极具研究价值和应用意义。
对于恶意代码的检测通常分为静态检测方法、基于执行检测方法和基于Java Script代码检测方法。传统基于静态网页的检测方法一般对IP地址、URL信息、网页源码等进行检测,检测方法简单快速,系统资源消耗小,但难以处理各种代码混淆,准确率低。在虚拟机中开启真实浏览器访问网页,基于执行的检测方法通过监测执行过程获取动态特征,这个检测方法准确率高,但资源消耗大,在处理大规模网页检测时较为困难。网页一般使用Java Script代码来实现动态功能,通过提取Java Script代码中的字符串操作、数据编码解码、函数调用等特征,网页的动态特征就会在这些特征中有所体现,其检测准确率较高,介于检测静态检测方法和基于执行检测方法之间,但检测技术起步较晚尚不成熟。
本文提出一种基于静态分析的Java Script恶意代码检测方法,针对网页中Java Script代码进行四类特征分析与提取:(1)Java Script代码基本统计特征;(2)基于混淆技术的特征;(3)基于URL重定向技术的特征;(4)基于恶意攻击过程特征。在四类特征基础上,使用多个基于机器学习的分类算法构建分类模型来实现对Java Script恶意代码的检测。
1 相关工作
一些研究者提出模拟执行Java Script代码,监测执行过程来进行恶意行为检测。Hallaraker等[1]提出监测恶意代码的执行行为,根据网页打开时弹出式窗口的打开次数(即Java Script代码中window.open()函数的使用次数)来判断这段代码是否为恶意代码。Caffeine Monkey[2]是一个通过运行Java Script代码来监控特定事件的执行的工具。Feinstein等通过修改Spider Monkey开发出了一个Java Script的模拟环境Caffeine Monkey Engine,提出根据某些函数调用的分布来区分正常代码和恶意代码。Curtsinger等[3]提出把对Java Script的检测器整合到浏览器的Java Script解析器中,实时监测用户访问过程,提取基于Java Script抽象语法数的多个特征,他们实现的检测系统称为Zozzle,它的检测结果表明其漏报率只有1%。
以上方法需要模拟执行Java Script代码,属于基于执行的恶意代码检测方法,资源消耗大,因此也有研究者提出提取代码静态特征进行分类。Likarish等[4]提出使用机器学习方法来进行恶意代码检测,提取了共65个Java Script代码特征(其中50个为Java Script关键词和符号使用次数特征)。Cova等[5]提出了一种新的方法来恶意Java Script代码的检测和分析,结合异常检测技术和动态仿真,提取的Java Script代码特征为基于语法和质量上的特征。他们实现的检测系统称为JSAND,已应用于实际中,用于对网上的Java Script代码进行动态评估。JODW[6]是检测代码混淆度的一个工具,它通过分析Java Script代码中的字符模式来判断是否为迷惑字符串,它使用三个指标来判别:(1)N-gram,字符串中特殊字符使用次数;(2)Entropy,字符串中字符使用分布情况;(3)Word Size,字符串长度。Fraiwan等[7]提取了四类Java Script代码特征来构建分类模型,第一类为URL和IP特征;第二类为使用频繁词特征;第三类为函数特征,文中指出eval()和unescape()函数同时使用时很大可能其目的为恶意的,这类特征还包括是否使用重定向至其他页面的函数、是否DOM tree访问其他HTML documents等特征;第四类为执行特征,离线状态时比较执行前后代码的长度。
本文提出的是一种提取多类型特征的Java Script恶意代码检测方法,在提取与文献[4]中相似的基本统计类型特征外,又集成提取了其他三类特征,从而覆盖了绝大部分类型的Java S-cript恶意代码表现,具有较高的辨识度。
2 四类恶意JavaScript特征的分析与提取
在网页恶意代码攻击过程中,网站攻击者常常利用网站中存在的漏洞,向网页中添加用于跳转目的站点的代码。当用户访问一个被注入跳转代码的正常网站时,跳转代码执行后返给用户的则是包含了恶意代码的页面,在客户端执行后就会使用户在毫不知情的情况下访问一些恶意软件分发站点,而恶意软件分发站点返回客户端一些恶意脚本,使恶意脚本得以在客户端自动下载和执行。同时为了躲避检测机构的恶意代码分析和检测,攻击者会在网页中的恶意代码中使用大量混淆技术来更好地隐藏自己。通过研究分析,本文提取了Java Script代码基本统计信息,基于混淆技术、基于URL重定向技术和基于恶意攻击阶段的四类特征。
2.1 JavaScript代码基本统计特征分析
网页中恶意代码在代码长度、变量名、字符串使用上都会体现一定的特殊性。例如,正常的Java Script代码为人工编写,为便于阅读与理解,会使用有意义的单词作为变量名或函数名,而攻击者所编写的代码中或机器生成的代码中这些单词就会较少出现。根据对Java Script代码分析,本文提取了例如Java Script代码总行数、字符总数、平均每行字符数、可读单词占代码总单词的百分比、特殊字符使用次数、方法调用次数等特征。
2.2 URL重定向特征分析
重定向,指用户在访问一个URL时,使浏览器自动转向到另一个URL,从而指向目的站点。重定向可通过HTTP状态码实现、通过META刷新实现、通过嵌入iframe标签和通过嵌入script标签四种方法实现。
本文针对Java Script代码中的重定向,重点研究了嵌入script标签的欺诈技术,即通过修改页面document.location属性、Html元素和表单注入、Event事件注入、Referrer信息检测实现重定向。下面以修改页面document.location属性为例介绍重定向特征和特征提取。
使用Java Script实现重定向最直接的方法就是,通过Java S-cript代码直接修改页面的document.location属性。图1实例则为采用没有经过任何特殊处理的Java Script代码来实现重定向。图2为结合混淆技术的修改document.location属性实例,该代码通过几个字符串拼接成一个字符串“window.location.replace”,然后在eval()函数中设定页面的location属性,从而重定向到目的站点。通过字符串重组还是会出现一些关键字,如“window.location”,检测机构通过特征识别仍然能检测出这类重定向。因此攻击者开始使用各种编码解码函数,如unescape()、escape()、String.from Char Code()等函数来隐藏关键字符或字符串,增加检测的难度,如图3所示。
通过大量分析,本文提取了与document.location、window.loaction URL、document.referrer等属性更改次数等重定向的特征。使用混淆技术的恶意代码相关特征将在2.4节进行分析。
2.3 攻击过程特征分析
大部分恶意代码利用Active控件、浏览器插件等中的漏洞,将攻击代码(shellcode)注入计算机进程内存中,使用户在毫不知情的情况下执行了如软件下载、信息提取、传播病毒木马等shellcode。本文经过分析,提取了Java Script代码中实例化控件次数、代码中最长字符串字符长度、代码中exe等可执行文件出现次数,等多个基于攻击过程的特征。
2.4 混淆特征分析
为了躲避检测机构的恶意代码分析和检测,网页中的恶意代码会大量使用代码混淆技术来隐藏和保护自己。混淆是一种通过改变字符组成使程序变得更难理解的技术。Java Script语言的动态性促进了混淆技术的多样化发展。通过对大量混淆代码的分析和参考其他研究者对混淆技术的研究[2,8],本文将Java Script代码中使用的混淆技术总结如下。
(1)空格字符随机化空格字符随机化是一种最简单也最容易实现的混淆技术,Java Script代码在执行时会忽略空格字符,因此攻击者能有意地在代码中填充一些空格字符,既不改变代码语义又在很大程度上改变了代码二进制流的表现形式,轻松地躲避了许多基于内容匹配的检测技术。图4中(1)和(2)都表示同一语句,但二者的二进制流的表现形式不同。
(2)注释篡改和随机化与空格字符一样,注释在执行时也是被忽略的,因此插入注释或修改代码中已存在的注释同样可以实现代码二进制流形式的改变。
(3)字符串混淆字符串混淆是目前被普遍适用的一种重要混淆技术。实现字符串重组有字符串拆分和字符编码两种方式。在Java Script代码中,为隐藏字符串意义,字符串经常以十六进制或双字节编码标准(Unicode)来进行编码,还会结合一些特殊函数来实现字符串重组与编码,如eval()、escape()、unescape()、document.write()、String.Char Code()等函数。图5中三个字符串有不同的表现形式,其语义不变,但第二个和第三个字符串给检测机构增加了难度。
(4)其他混淆技术除了上述三种常用混淆技术,攻击者还会使用一些其他的混淆技术来进行隐藏行为。通过变量名或函数名重定义要求检测机制必须追踪所有变量和函数的定义、赋值和操作的所有过程,因此会增加分析和检测复杂度,也会增加资源消耗。在Java Script代码中使用一些条件语句和循环语句(如if…else,for,while)就会使得代码分析变得更加复杂,不利于检测。
因此本文根据使用混淆技术后的Java Script代码特殊性确定提取空格字符、注释字符占代码总字符的百分比,代码中字符串的熵,代码中字符串相关函数使用次数,eval()、document.write()、编码解码相关函数使用次数,赋值操作使用次数等基于混淆技术的特征。
3 JavaScript恶意代码的检测方法
3.1 基于多类特征的JavaScript恶意代码的检测算法
本文基于上述特征,采用基于机器学习的分类算法构建分类模型来实现对Java Script恶意代码的检测,检测框架如图6所示,分类模型1和分类模型2都分别采用了决策树算法、朴素贝叶斯算法、神经网络三类算法,其中选用了ADTree、J48两种决策树算法。算法在数据挖掘软件Weka平台上实现。
3.2 样本准备
为了验证本文分类检测方法的效果,需要收集两方面数据样本:恶意Java Script脚本样本集和正常Java Script脚本样本集。恶意数据样本是从网络病毒数据库VXHeavens[9]选取的真实恶意Java Script脚本,正常数据样本是从Alexa[10]公布的前500最受欢迎网页的提取的真实正常Java Script脚本,其中恶意Java S-cript脚本500个,正常Java Script脚本1 000个。
3.3 实验及结果分析
实验采用10倍交叉验证法对检测模型进行结果验证,即数据分为10份,每次训练都使用其中9份,剩余1份用于测试,并采用准确率(Precision)、召回率(Recall)、误检率FN(False Negative)和漏检率FP(False Positive)指标评估各检测性能,评价指标计算公式如下。
本文的JS恶意代码检测实验分为两组:第一组为仅采用基本统计信息特征的Java Script恶意代码检测,第二组为本文方法,即综合基本统计信息、基于URL重定向、基于攻击过程和基于混淆技术四类特征的Java Script恶意代码检测。每组实验都分别采用了三类分类算法。实验结果如图7所示。
从图中可知,第二组实验较第一组在检测准确性(图7(a))、召回率(图7(b))和误检率(图7(c))方面都有性能提高。除了ADTree外,漏检率也有改进。朴素贝叶斯和神经网络较决策树分类算法的检测效果略差,因此在第二组实验中的特征采用PCA(主成份分析)算法进行降维处理后再作检测实验,实验结果对比如表1所示。从表中可知,除朴素贝叶斯算法检测召回率有所下降外,降维后其他准确率和召回率有所提升。此外,本文基于编译原理中的符号处理和正则表达式技术提取和量化特征,资源消耗代价较低,因此本文所提出的方法覆盖的恶意代码特征多样,性价比好。随着恶意代码的发展,攻击者会使用越来越多且复杂的欺诈技术,提取多类型特征极为重要。
4 结语
通过分析恶意代码所使用的技术以及攻击实现过程中所体现的特殊性,分析并提取了恶意代码的几类特征,采用几种分类算法进行检测,获得了满意的效果。本文的综合多类特征检测JS恶意代码方法对恶意代码具有较高识别能力,且由于分析静态代码语义并提取特征,无需动态执行代码,资源消耗小,具有较好的实用性。
恶意Java Script代码制造者会不断更新他们的欺诈技术,我们的下一步工作将跟踪研究新出现的恶意代码技术,提取新的特征或改进检测算法,研究特征选择方法,以保证高准确率与召回率。
参考文献
[1]Hallaraker O,Vigna G.Detecting malicious javascript code in mozilla[C]//Engineering of Complex Computer Systems,2005.ICECCS2005.Proceedings.10th IEEE International Conference on.IEEE,2005:85-94.
[2]Feinstein B,Peck D.Caffeine monkey:Automated collection,detection and analysis of malicious javascript[J].Black Hat USA,2007.
[3]Curtsinger C,Livshits B,Zorn B G,et al.ZOZZLE:Fast and Precise InBrowser JavaS cript Malware Detection[C]//USENIX Security Symposium,2011:33-48.
[4]Likarish P,Jung E,Jo I.Obfuscated malicious javascript detection using classification techniques[C]//Malicious and Unwanted Software(MALWARE),2009 4th International Conference on.IEEE,2009:47-54.
[5]Cova M,Kruegel C,Vigna G.Detection and analysis of drive-by-download attacks and malicious JavaS cript code[C]//Proceedings of the19th international conference on World wide web.ACM,2010:281-290.
[6]Choi Y H,Kim T G,Choi S J,et al.Automatic detection for javascript obfuscation attacks in web pages through string pattern analysis[M]//Future Generation Information Technology.Springer Berlin Heidelberg,2009:160-172.
[7]Fraiwan M,Al-Salman R,Khasawneh N,et al.Analysis and Identification of Malicious JavaS cript Code[J].Information Security Journal:A Global Perspective,2012,21(1):1-11.
[8]Xu W,Zhang F,Zhu S.The power of obfuscation techniques in malicious JavaS cript code:A measurement study[C]//Malicious and Unwanted Software(MALWARE),2012 7th International Conference on.IEEE,2012:9-16.
[9]VX Heavens[OL].http://www.entlux.org.
恶意代码的分析技术 第6篇
在政府、企业或学校等局域网环境中, 网管们在网关入口部署网络防火墙, 在用户终端上安装反病毒软件和IDS等检测软件, 这在一定程度上扼制了已知病毒的发挥, 但并不能完全消除恶意代码的危害, 特别是未知的恶意代码。所以, 在网络中部署恶意代码智能分析系统, 不仅可以检测出已知的恶意代码, 还可以在不影响用户正常使用程序文件的情况下, 实时分析程序代码, 及时发现恶意代码并采取相应的保护措施。
1 当前恶意代码检测技术的现状及发展趋势
恶意代码是一段计算机指令, 由攻击者通过系统安全漏洞或其他方法植入到被攻击者的计算机中, 使得被攻击者的计算机按照攻击者的意愿执行任务, 任何能对计算机系统信息安全造成威胁的计算机指令集序列和数据都可以归属于恶意代码。常见的恶意代码有:漏洞攻击程序、计算机病毒、蠕虫、恶意移动脚本、后门、木马、RootKit、间谍软件以及更深层次的BIOS木马、恶意CPU微代码等, 当然还包括以上类型恶意代码的综合应用组合恶意代码。
目前, 在反恶意代码工具中, 商用的反病毒软件主要采用特征码匹配和行为检测技术。特征码匹配, 即检测时对文件进行扫描, 用数据库里的特征码去匹配, 若匹配成功, 则报告发现病毒;行为检测技术, 即将程序的动态行为与行为特征库进行匹配, 若发现已知的恶意行为, 就提示用户采取相应措施。
随着恶意代码检测技术的不断发展, 反恶意代码研究必将向智能化、实时化、高效化、准确化方向发展。智能化, 即在识别恶意代码过程中, 人工智能分析技术将逐渐占据主导地位, 工作量极大的人工分析技术将发挥辅助作用。实时化, 即在对未知可疑代码的识别过程中, 快速、及时地检测出程序代码是否具有恶意行为, 在及时通知用户终端的同时, 对恶意行为进行自动控制, 最大限度地减少恶意行为对用户的危害程度。高效化, 即通过对特征码和匹配算法进行优化处理, 对庞大的恶意代码特征库进行“瘦身”, 以及平衡用户与恶意代码分析的资源消耗, 提高恶意代码检测的效率。准确化, 即采用多种识别技术综合运用或单一技术设置多重指标的方法对未知可疑行为进行全面分析, 降低误报率, 准确判别出程序代码是否具有恶意行为, 提高恶意代码检测的准确性。
2 基于分布式结构的恶意代码智能分析系统的设计与实现
2.1 设计方案
2.1.1 恶意代码智能分析系统整体结构
以前的恶意代码分析系统大多部署在用户终端上, 进行恶意代码分析时占用过多的CPU和内存资源, 严重影响用户的正常操作。如图1所示, 本文提出的恶意代码智能分析系统采用分布式结构, 由用户终端和各服务器组成, 用户终端负责对程序进行恶意代码特征码匹配, 自动捕获程序的可疑行为并根据相应规则进行行为控制;各服务器分别负责待测程序的自动化静态分析、自动化动态分析、自动化特征码提取, 以及恶意代码特征码存储。可见, 系统通过采用分布式的设计结构, 将用户终端“解放”出来, 恶意代码的自动分析工作由各服务器分担, 既提高了用户终端的使用效率, 又降低了用户终端面临的风险, 更重要的是大幅提高了恶意代码的自动化分析效率, 真正实现恶意代码自动分析的高效化。所以, 从整体结构的设计上, 恶意代码智能分析系统从根本上提高了恶意代码的检测效率。
2.1.2 建立恶意代码智能分析环境
搭建恶意代码智能分析环境是实现自动化分析恶意代码的基础。
(1) 网络和硬件环境
包括若干用户终端、服务器、网络通信和联接设备。
(2) 操作系统
由于恶意代码存在于多个操作系统, 所以在恶意代码分析环境中需要安装Windows和Linux等多个版本的系统。
(3) 系统备份和恢复工具
虽然恶意代码智能分析系统使用行为控制技术控制代码的恶意行为, 但仍然不可完全避免恶意代码对系统的破坏, 所以有必要对配置好的分析环境进行备份, 使之能够快速恢复。除了使用各种常规的备份技术外, 还可以采用如VMware等虚拟机软件建立虚拟分析环境。
(4) 现有的恶意代码分析工具
现有的恶意代码分析工具对我们研究新的恶意代码自动化分析方法仍然有参考作用, 是不可缺少的研发工具, 包括:各种反病毒软件;反汇编工具如IDA pro;调试器如SoftICE、OllyDbg、GDB、KDB;漏洞扫描软件如Nessus;端口扫描软件如Nmap;网络监控工具如Fport、TCPView、losf;文件活动监控工具如Filemon;网络通信监控工具Sniffer、Ethereal等;进程监控工具如Process Explorer;注册表监控工具如Regmon等。
(5) 开发环境
需要配置软件开发环境, 如Windows下的Visual Studio, Linux下的GCC等。
2.1.3 恶意代码智能分析系统工作流程
根据恶意代码智能化分析系统的工作流程 (如图2所示) , 将系统划分为特征码匹配分析、行为自动捕获与控制、自动化静态分析、自动化动态分析、自动化特征码提取和特征码数据库维护与更新等六个模块。各模块所研究和采用的技术将在“技术路线”节中详细阐述。
2.1.4 获取已知的恶意代码特征码数据库, 并进行相应的处理和优化
可以从各大信息安全公司或信息安全技术研究机构的网站上获得最新的已经公开的恶意代码的特征描述, 通过整理可获得已公开的最新恶意代码特征码数据库:
ISS X-Force (http://www.iss.net/threats/ThreatList.php) , 包含了最新的恶意代码特征描述的巨大数据库;
Bullguard (http://bullguard.com/forum/) , 对一些最新的采用较高技术的病毒和恶意代码进行了详尽的讨论分析;
Symantec (http://www.symantec.com/search/search.html) , 可以搜索到数千种恶意代码的信息;
McAfee (http://www.mcafee.com/us/threat_center/default.asp) , 提供了最新的恶意代码、漏洞的特征描述, 并进行了详细分析。
2.2 技术指标
本系统的设计和实现要达到以下指标:
(1) 支持对已知恶意代码的自动识别和处理功能;
(2) 支持对恶意代码行为的自动捕获和自动控制功能, 并在用户终端生成行为控制报告;
(3) 支持对未知恶意代码的特征的自动化静态分析、自动化动态分析, 实时监控恶意代码的动态行为;
(4) 支持对未知恶意代码特征码的自动提取功能, 特征码支持本地和网络监测;
(5) 采用分布式的设计结构和谨慎使用严重资源消耗的分析技术, 平衡用户正常行为与恶意代码检测之间的资源消耗;
(6) 支持用户参与功能, 将误报率控制在0.1%以下。
2.3 技术路线
本系统以当前广泛应用的恶意代码分析技术为基础, 重点研究国内外的最新研究成果, 在此之上进行突破, 提出新的研究方法并创新恶意代码的自动化分析技术, 有效运用到恶意代码智能分析系统上。各模块的技术路线如下:
2.3.1 特征码匹配分析模块
程序被传输到用户终端后, 随即进入特征码匹配分析模块, 来判断程序是否含有已知的恶意代码。模块采用成熟的恶意代码特征码匹配技术, 对从待测程序中提取的数据进行匹配分析, 数据包括一个文件的文本字符串、程序执行的指定行为、程序执行的完整序列行为等。
2.3.2 行为自动捕获与控制模块
从用户使用的角度出发, 进入用户终端且通过特征码匹配分析的程序应该根据用户的需求可以随时被运行使用, 但为防止未知恶意行为对用户终端造成危害, 自动捕获与控制模块要对其行为进行监控, 对涉及到用户终端安全的行为进行自动捕获与控制。目前, 狡猾的恶意代码作者大多使用rootkit技术来隐藏恶意代码对文件、进程、系统调用、网络通信、注册表以及内存等重要系统和用户资源的恶意操作。因此, 本系统深入研究目前先进的anti-rootkit技术, 并结合行为检测技术, 来实现对程序行为的自动捕获和控制。anti-rootkit技术, 包括隐藏进程检测、内核驱动检测、系统服务描述符表 (SSDT) 检测、代码HOOK检测、注册表隐藏检测、隐藏文件检测等技术, 自动捕获和控制破坏用户终端的未知恶意行为, 保护用户终端的系统和数据安全[1]。行为检测技术, 也称为人工智能陷阱, 是利用恶意代码的特有行为特征检测病毒的方法。通过对恶意代码长期的观察研究, 发现病毒的一些行为是病毒的共同行为, 而且比较特殊。在正常程序中, 这些行为比较罕见, 如截获系统中断、修改内存总量和内存控制块、对可执行文件做写操作、对引导扇区写操作或执行格式化磁盘等可疑动作、恶意程序与宿主程序切换、搜索API函数地址等。在实时跟踪程序的动态行为的过程中, 若发现这些行为就通知用户采取相应的保护措施。
可以看出, 行为自动捕获与控制模块可以做到主动检测和拦截程序的未知可疑行为, 实际上引入了目前较先进的主动防御技术。
2.3.3 自动化静态分析模块
经过特征码匹配分析且未被判定为含有恶意代码的程序, 可以被用户终端随时运行使用, 同时也要由用户终端送到自动化静态分析服务器分析程序的静态特征。
目前, 启发式扫描技术具有人工智能功能, 通过特定方式实现的动态调试器或反编译器, 确定指令序列蕴藏的真正动机[2]。启发式扫描技术是恶意代码静态分析的热点技术, 能够达到80%以上的恶意代码检出率, 而其误报率则能控制在0.1%之下。自动化静态分析模块对启发式扫描技术进行改进, 首先为可疑的程序代码指令序列设置旗标库, 用大写字母和一些特殊符号组成, 根据代码具备的特点对旗标授以不同的加权值, 如R---重定位功能---0.11、#---发现译码指令---0.21等;然后按照可疑指令的危险程度对旗标进行排序;最后判别所有加权值之和是否大于或等于事先设定好的阈值。工作流程如图3所示。
设计规则如下:
一系列可疑指令所对应的旗标序列用F表示:
F={f1, f2, , fi, } i∈[0, ∞)
重新排序后的旗标序列用F′表示, 如:
F′={f1′, f2′, , fi′, } i∈[0, ∞)
加权值序列用A表示:
A={a1, a2, , ai, } i∈[0, ∞) ai∈ (0, 1]
若a1≥1, 则判断可疑指令序列为恶意代码;阈值表示为l, 可疑指令的加权值之和用s表示,
比如, 对程序Test.exe进行启发式扫描分析后, 发现其可疑指令序列为F={K, V, , D, #}, 重新排序后旗标序列为F′={?, V, D, #, K}, 加权值序列为A={0.73, 0.52, 0.46, 0.21, 0.07}, 最大加权值为0.73, 小于1, 则计算可疑指令的加权之和
分析结果数据将成为自动化提取特征码和特征码匹配分析的依据。
2.3.4 自动化动态分析模块
未被特征码匹配分析模块判定为恶意代码的程序在被送到自动化静态分析模块的同时, 也被送到自动化动态分析服务器。自动化动态分析, 即允许程序在自动化动态分析服务器上运行, 跟踪程序代码的执行流程, 对程序代码的输入输出、调用、数据处理流程等行为进行实时追踪, 监控程序对系统资源和用户数据的操作, 自动捕获程序代码的可疑行为, 并进行实时的自动化分析。
目前, 在自动化动态分析技术中, 研究的热点是仿真技术、虚拟化技术和监控系统事件技术[3]。仿真技术, 将程序的字节代码分解成命令, 每条命令在仿真的虚拟计算机环境中运行, 对其动态行为进行实时跟踪, 使用虚拟环境可以观测到程序的动态行为而不对真实的系统或用户产生威胁。虚拟化技术, 比如沙盒技术, 是仿真技术的逻辑扩展, 允许程序在真实的计算机环境中运行, 但要受到提前制定好的规则的限制。这两种技术的缺点就是需要占用大量的系统资源, 但恶意代码智能分析系统采取分布式结构, 由专门的服务器对程序进行自动化动态分析, 彻底解决了恶意代码检测的资源消耗大和效率低问题。监控系统事件, 也是当前的热点技术, 它通过截获系统调用来收集数据, 自动监控程序对系统的行为并对一系列数据进行分析, 来判断程序是否进行可疑行为。在深入研究以上热点技术并进行相应改进的基础上, 自动化动态分析模块将改进的仿真技术与监控系统事件技术结合使用, 实时跟踪程序的动态行为, 自动捕获程序的行为并进行分析, 流程如图4所示。
与自动化分析静态采取的算法相同, 自动化动态分析模块也要对捕获的可疑行为授予加权值, 计算加权值之和, 并判断是否大于等于阈值, 若大于等于则将判定可疑行为是恶意行为, 将其移交自动化特征码提取服务器进行处理。
2.3.5 自动化特征码提取模块
自动化静态分析模块和自动化动态分析模块通过系统分析, 若判定测试程序中包含恶意代码, 便将各自的分析结果送到自动化特征码提取模块, 这些分析结果的形式包括程序文件的文本字符串、具体的程序代码指令及完整的指令序列等, 与此相对应的是恶意代码的静态指令序列、恶意代码的指定行为和完整行为序列。本模块自动分析这些结果, 提取恶意代码的特征码, 并及时添加到恶意代码特征码数据库中。
2.3.6 特征码维护与更新模块
特征码维护与更新模块负责恶意代码数据库的初始建立、维护、更新以及特征码的优化等工作。首先, 在获取各大安全公司或安全研究机构已公开的恶意代码特征码的基础上, 对目前最新的恶意代码特征码进行初始分析, 建立恶意代码特征码数据库;然后, 针对各种日新月异的特征码变形技术, 模块通过研究特征码变形前后的相关性, 利用归一化思想处理已知特征码的变形, 使特征码数据库既“长个”又“瘦身”[4];另外, 模块还将对特征库的匹配算法进行深入研究, 改进当前广泛应用的WM算法, 设计出一个高效的匹配算法, 提高特征码匹配的效率[5]。本模块的工作就是将自动化特征码提取模块送来的新特征码进行相应处理后添加到数据库中, 并及时更新用户终端的特征码数据库。
假设新特征码c1, c2, 是已知特征码c的变形, 将c1, c2, 进行归一化处理的流程如图5所示。
归一化处理后, 得到c1, c2, 的归一化特征码c′, 将c′添加到特征码数据库即可。
3 结束语
虽然网络恶意代码智能分析系统在恶意代码检测的智能性、实时性、高效性和准确性方面都作出了有益的尝试和改进, 但恶意代码变化多端, 数量激增, 令人防不胜防。面对神秘多变的病毒、木马、蠕虫等恶意程序, 即使在不考虑检测速度和资源消耗的情况下, 任何先进的恶意代码分析技术和反病毒软件都不能达到100%的检出率和零误报率。因此, 设计恶意代码检测系统时, 要根据具体应用环境的特定需求, 采用针对性较强的设计模式和恶意代码分析技术, 来实现对网络和主机用户的“贴身”保护。
参考文献
[1]Matt Conover.恶意代码剖析与Rootkit检测[J/OL].2005.http://www.xfocus.net/projects/Xcon/2005/Xcon2005_Shok.pdf.
[2]David Harley, Andrew Lee.启发式分析—检测未知病毒[J/OL].2007.http://www.nod32tw.com/softdown/manual/NOD32_white_papers.pdf.
[3]Alisa Shevchenko.Malicious Code Detection Technologies[J/OL].2008.http://usa.kaspersky.com/threats/docs/MaliciousCodeDetec-tionTechnologies_Feb08.pdf.
[4]金然, 魏强, 王清贤.针对等价指令替换变形的归一化研究[J].计算机应用, 2008 (3) .
恶意代码的分析技术 第7篇
随着计算机的普及和Internet的发展, 各种类型的恶意代码, 如木马、蠕虫、病毒、僵尸程序等出现和传播的速度与周期也越来越快, 根据国家互联网应急中心的7月底安全周报显示[1], 国内感染恶意代码的主机数量达到了64.9万, 被篡改的网站达到了5875, 恶意代码的防范形式非常的严峻。
传统的恶意代码检测技术主要有基于特征码的检测方法与启发式的检测方法, 基于特征码的检测方法过于依赖特征库, 无法检测出未知恶意代码;启发的检测方法又过于依赖专家的经验, 检测效率低且容易误报, 因此亟需一种新的恶意代码检测技术, 解决传统检测技术的缺陷, 基于数据挖掘的检测技术属于其中之一, 该技术相对传统的检测技术而言, 具有快速、智能化的特点, 无须依赖专家经验并且对未知恶意代码具有很好的检测能力。本文在研究当前基于数据挖掘的恶意代码检测技术基础之上, 提出了一种基于变长指令序列与粗糙集属性约简的恶意代码检测技术。
1 相关工作
首次将数据挖掘技术应用到恶意代码检测中的学者当属Schultz[2], 他利用从PE文件中获得的字符串序列、字节序列、导入表中API调用函数作为特征, 利用PIPPER、朴素贝叶斯、多重朴素贝叶斯算法进行分类学习, 在实验数据集上取得了很高的检测精度, 远高于当时的商业防病毒软件。沿着Schultz的开拓性工作, 基于数据挖掘的恶意代码检测技术成为恶意代码检测领域研究的热点, 研究的重点主要集中在两个方面: (1) 特征的表示与选择; (2) 分类算法的选择。其中常用的恶意代码特征包括:文件结构特征、字节特征、指令特征等, 分类算法主要采用贝叶斯、决策树、支持向量机等算法。本文主要关注于恶意代码的指令特征, 由于恶意代码与正常文件其行为模式的不同, 则其汇编指令也会存在区别, Bilar[3]通过研究证实了这一点, 他发现恶意代码与正常文件之间的某些指令的统计特征存在很大的区别, 因此指令特征可以作为区分恶意代码与正常文件的特征之一。基于此思想, 国外的Santos[4]利用指令序列作为特征进行检测, 由于采用了n-gram滑动窗口技术, 最终获得的特征维数非常高, 于是他利用互信息进行降维, 最后利用K邻近、决策树、支持向量机算法进行分类检测, 实验取得的很高的检测精度。国内的张健飞[5]等也是利用指令特征进行检测, 与Santos不同的是, 他采用的是变长的指令序列作为特征, 并且采用了一种分家族的逐层精华的特征选择方法, 他最后通过实验指出, 该方法具有很好的检测迷惑代码的能力。
2 检测技术的创新点与具体步骤
通过以上的研究, 本文发现, Santos的检测方式, 由于获取的是所有指令所构成的指令序列, 因此特征的规模非常大, 不便于后续的学习, 同时采用了定长的方式, 又可能出现分割特征的问题, 而张健飞的检测方式, 虽然考虑到了指令特征的规模与特征分割的问题, 采用了变长指令序列并使用层次化的特征选择方式, 但其特征选择方式过于复杂, 因此本文提出了一种基于变长指令序列与粗糙集属性约简的恶意代码检测技术, 其主要的创新点如下:
(1) 采用变长的常用指令序列作为特征。变长的方式可以避免分割特征的问题, 同时只考虑常用的汇编指令即所构成的指令序列, 可以有效的降低最终获得的特征规模。
(2) 采用粗糙集理论进行特征约简。由于粗糙集理论具有在不改变分类能力的前提下有效删除冗余特征的优势, 因此将获得特征再利用粗糙集理论进行特征约简, 排除冗余特征的干扰, 从而大大加快后续学习算法的分类时间。
本文提出的检测技术的步骤主要分为两个阶段。第一个阶段:训练阶段;第二个阶段, 检测阶段。训练阶段主要完成特征的获取与约简并且完成分类器的训练。检测阶段, 主要利用已获得的分类器对测试样本进行分类并评估最终的分类结果。
3 实验设置及结果分析
3.1 实验设置
本文的正常文件从干净的XP系统的系统目录获得, 共计308个样本, 恶意代码文件来自网络收集的86个PE型的恶意代码, 然后将获得的样本分为2等份, 一份做训练集, 一份做测试集。实验平台为一台安装XP系统的机器, CPU为AMD Athlon 64 X2, 内存为3G。实验工具包括反汇编工具IDA Pro, 数据挖掘平台Weka。指令序列主要关注常用的13个指令即mov、push、call、pop、cmp、jz、lea、test、jmp、add、jnz、retn、xor所构成的序列, 其长度基于Moskovitch[6]的研究本文限定为2~3, 粗糙集属性约简算法采用启发式的约简算法, 具体算法可参考文献[7], 由于本文获得样本规模不大, 分类算法采用在小样本上表现很好的支持向量机算法。
3.2 结果分析
基于本文的特征提取与处理方法, 在训练集上获得的初始特征维数只有1150维, 约简后的特征维数仅8维, 其原因在于, 由于只考虑了常用的指令所构成的指令序列, 而忽略了其它的指令, 降低了特征的规模, 因此获得的初始特征维数并不是很高, 然后再次利用粗糙集理论进行特征约简后, 删除了其中大量的冗余特征, 特征降维幅度非常明显, 仅仅剩余8维, 维数非常低, 这样会大大降低后续学习算法的分类时间。
所有的训练集的样本经过特征处理之后, 然后利用支持向量机算法训练分类器, 最后在测试集上进行分类测试, 其分类精度与漏报率如表1所示,
从表1可以看出, 本文采用的变长指令序列的方式相对定长的方式而言其分类精度更高而且漏报率更低, 因此在实际应用中更具有应用价值。
4 结论
本文在研究现有的基于数据挖掘的恶意代码检测技术基础之上, 提出了一种基于变长指令序列与粗糙集属性约简的恶意代码检测技术, 该技术只考虑常用的指令特征构成的序列并利用粗糙集理论进行属性约简, 因此最终获得的序列特征的规模维数非常低, 仅仅只有8维, 同时本文采用了变长的指令序列模式, 降低了分割特征的风险, 相对定长的指令序列特征而言, 其分类精度更高, 漏报率也相对更低。
摘要:针对定长的指令序列特征维数过高且存在分割特征的问题, 本文提出了一种基于变长指令序列与粗糙集属性约简的恶意代码检测技术, 采用变长的指令序列可以有效解决特征分割的问题, 同时为了有效降低特征规模, 只考虑常用的13个指令所构成的指令序列, 然后利用粗糙集理论进行冗余特征约简, 实验最终获得特征维数非常低并且相对定长的指令序列而言, 其分类精度更高, 漏报率更低。
关键词:变长指令序列,粗糙集属性约简,数据挖掘,恶意代码检测
参考文献
[1]国家互联网应急响应中心.国家互联网应急中心的7月底安全周报[EB/OL].[2012-7-22].http://www.cert.org.cn/publish/main/upload/File/20130731CNCERT30.pdf.
[2]Schultz M G, Eskin E, Zadoc E.Data Mining Methods for Detection of New Malicious Executables[C]//Proceedings of the IEEE Symposium On Security And Privacy.Oakland:IEEE, 2001, 38-49.
[3]Bilar D.Opcodes as predictor for malware[J].International Journal of Electronic Security and Digital Forensics, 2007, 1 (2) :156-168.
[4]Santos I, Brezo F, Nieves J, et al.Idea:Opcode-sequence-based malware detection[M]//Engineering Secure Software and Systems.Springer Berlin Heidelberg, 2010:35-43.
[5]张健飞, 陈黎飞, 郭躬德.检测迷惑恶意代码的层次化特征选择方法[J].计算机应用, 2012, 32 (10) :2761-2767.
[6]Moskovitch R, Feher C, Tzachar N, et al.Unknown Malcode Detection Using Opcode Representation[M].Intelligence and Security Informatics.Springer Berlin Heidelberg, 2008:204-215.
网页恶意代码专题 第8篇
一、何谓恶意代码
大家都知道, 网页实际上是由若干句超文本语句构成的, 这些语句一般是不会构成安全“威胁”的, 但利用软件或系统操作平台等的安全漏洞, 通过执行嵌入在网页HTML超文本标记语言内的Java Applet应用程序, Java Script脚本语言程序或ActiveX软件部件网络交互技术支持可自动执行的代码程序, 可以强行修改用户操作系统的注册表设置及系统实用配置程序, 或非法控制系统资源, 或恶意删除硬盘文件、格式化硬盘等为行为目标的非法恶意程序, 统称之为恶意代码。一些居心不良的人便使用它们来“兴风作浪”了, 给用户的系统带来了一般性的、轻度性的、严重恶性的等不同程度的破坏, 令你苦不堪言, 甚至损失惨重无法弥补。
二、如何预防网页恶意代码
1.建议使用超级兔子、Windows优化大师等工具来对系统进行备份, 这些软件能将Classes.dat、System.dat、User.dat、Win.ini等文件全部备份下来, 使通过修改这些文件来达到其目的的网页恶意代码无所适从。
2.大部分网页恶意代码攻击的目标都是IE浏览器。如果我们用MyIE2, Maxthon等浏览器代替IE浏览器, 以此为破坏目标的恶意网站就无的放矢了。例如:MyIE2在启动时能够绕开主页直接打开空白页, 而且还能保护主页不被修改。 (注:MyIE2等浏览器使用的都是IE浏览器的内核, 所以请不要删除IE浏览器)
3.及时打系统补丁, 尤其是及时把IE升级到最新版本, 可以在很大程序上避免IE漏洞带来的安全隐患。打系统补丁的方法是:开始帮助和支持Windows Update...升级程序会自动检测你需要打哪些补丁。
4.下载微软最新的Microsoft Windows Script, 可以很大程度上预防网页恶意代码修改。
5.安装杀毒软件并打开网页监控、邮件监控、漏洞攻击监控、文件监控、注册表监控、内存监控、引导区监控等。
6.相当多的网页恶意代码是含有有害代码的ActiveX网页文件, 因此在IE设置中将ActiveX插件和控件、Java脚本等禁止就在很大程度上避免中招。具体方法是:在IE窗口中点击“工具Internet选项”, 在弹出的对话框中选择“安全”标签, 再点击[自定义级别]按钮, 就会弹出“安全设置”对话框, 把其中所有ActiveX插件和控件以及Java相关全部选择“禁用”即可。不过, 这样做在以后的网页浏览过程中可能会造成一些正常使用ActiveX的网站无法浏览, 利弊得失, 自己把握。
三、常见恶意代码的解决方法
正所谓明枪易躲, 暗箭难防。如果不小心中招了, 可以参考以下一些常见问题的解决办法:
1.注册表编辑器被禁用
用记事本建立一个以REG为后缀名的文件, 文件名可自定义, 内容如下:
Windows Registry Editor Version 5.00 (空一行) [HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionPoliciesSystem]“DisableRegistryTools”=dword:00000000 双击打开该reg文件, 当询问您“确实要把*.reg内的信息添加到注册表吗?”, 选择“是”, 即可将信息成功输入注册表中。
2.IE首页被锁
点击“开始运行”, 输入“regedit”命令打开注册表
[HKEY_CURRENT_USERSoftwarePoliciesMicrosoftInternet ExplorerControl Panel], 一般此键是不存在的, 所以后面一截要自己建立, 主键建立完后在Control Panel键下新建一个DWORD值数据, 键名为HOMEPAGE (不分大小写) , 键值为0.此时再打开IE属性时可以发现它改首页设置的部分已经可用了。
3.IE的默认首页灰色按扭不可用
[HKEY_USERS。DEFAULTSoftwarePoliciesMicrosoftInternet ExplorerControl Panel] 将“homepage”下的DWORD键值由原来的“1”修改为“0”即可, 或干脆将“Control Panel”删除就可以了。
4.IE的标题栏被修改
[HKEY_LOCAL_MACHINE&HKEY_CURRENT_USERSoftwareMicrosoftInternetExplorerMain]
在注册表中找到以上两处主键, 将其下的“Window Title”主键值更改为“Microsoft Internet Explorer”即可。
5.IE默认连接首页被修改
被更改的注册表项目为:[HKEY_CURRENT_USERSoftwareMicrosoftInternetExplorerMainStartPage]将键值修改为自己喜欢的网址即可。
6.删除地址栏中无用的地址
在[HKEY_CURRENT_USERSoftwareMicrosoftInternet ExplorerTypeURLs]中删除无用的键值即可。
7.删除右键菜单中的网页广告
将注册表展开到[HKEY_CURRENT_USERSoftwareMicrosoftInternet ExplorerMenuExt], 在IE中显示的附加右键菜单都在这里设置, 常见的“网络蚂蚁”和“网际快车”点击右键下载的信息也存放在这里, 只需找到显示广告的主键条目删除即可。
8.“运行”选项被禁用
在注册表中展开至[HKEY_USERS。DEFAULTSoftwareMicrosoftWindowsCurrentVersionPoliciesExplorer]在右侧栏中将“NoRun”的键值由“1”修改为“0”即可, 或者将“NoRun”删除也可。
9.鼠标右键功能失效
[HKEY_CURRENT_USERSoftwarePoliciesMicrosoftInternet ExplorerRestrictions], 将其DWORD值“NoBrowserContextMenu”的值改为0。
10.Internet选项卡功能失效[HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionPoliciesExplorer]在右边的窗口中找到一个二进制值“NoFolderOptions”, 并将值设为“00 00 00 00”即可。11、桌面上的图标全部消失[HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionPoliciesExplorer], 找到“NoDesktop”值项, 右键单击它, 选择“修改” (或者干脆删除也可以) , 把它的值改为0, 然后重新启动电脑即可。
四、总结
* 提高自身对恶意代码的警惕性:我们应该了解恶意代码的繁殖方式和感染征兆。提高自身对恶意代码的警惕性。知道如何预防, 从而减少病毒感染的可能性。
* 阅读反病毒报告:通过阅读反病毒报告可以掌握最新病毒的第一手资料。
* 对重要的核心主机设置基于主机的入侵检测系统, 并安装文件完整性检测工具:基于主机的入侵检测系统和文件完整性检测工具能够探测到恶意代码的迹象, 例如设置的变化和执行文件的变化。
* 使用反病毒软件, 并定期升级最新的病毒特征码:对所有可能传递恶意代码的主机和设备安装反病毒软件。设置反病毒软件探测, 清除或是隔离被恶意代码感染的文件。所有的反病毒软件应该保证定期升级最新的病毒特征码, 使它能够探测到最新的病毒。
* 设置软件阻塞可疑文件:对于有可能携带恶意代码的可疑文件应该进行阻塞, 例如那些扩展名可能与病毒有关的文件, 以及带有复合扩展名的文件。
* 避免开放网络共享:许多蠕虫是通过不安全的网络共享传播的。一个被感染的文件可以通过不安全的网络共享, 迅速地感染成百上千的电脑。
* 尽可能快地封锁恶意代码:由于恶意代码的隐蔽性以及可跨系统的迅速传播的能力, 要及时防止它的扩散以免造成更大的破坏, 就必须尽早地对它进行封锁。对于一个系统, 就是尽快断开它与网络的连接。对于组织或是单位, 则需要在邮件服务器上对恶意代码进行阻塞, 或是暂停服务, 来防止恶意代码的传播。
参考文献
[1]马良有.网页恶意代码特点与防范[J].赣南师范学院学报, 2003, (06) .
[2]王德强.恶意代码设计和分析技术的研究与实现[D].清华大学, 2005.