基于Win32平台下病毒行为的自动化分析系统的制作方法

文档序号:6459300阅读:241来源:国知局
专利名称:基于Win32平台下病毒行为的自动化分析系统的制作方法
技术领域
本发明涉及计算机病毒防治技术领域,特别涉及一种基于病毒行为的自动 化分析系统。
背景技术
随着计算机软硬件水平的不断发展,近年来,计算机病毒技术也是突飞猛 进,黑客和间谍技术也在不断更新改进。计算机病毒对人类造成的影响也越来 越大。当前,计算机病毒正呈现出传播方式、传播途径以及破坏方式更加多样 化的趋势。
据国家计算机病毒应急处理中心综合观察分析认为:"目前计算机病毒的网 络化趋势更加明显,病毒的入侵主要来自蠕虫病毒,同时集病毒、黑客、木马
等功能于一身综合型病毒不断涌现"。计算机病毒表现出以下特点传播方式和 途径多样化;病毒的欺骗性日益增强;病毒的传播速度极快;病毒的制作成本 降低;病毒变种增多;病毒难以控制和根治;病毒传播更具有不确定性和跳跃 性;病毒版本自动在线升级和自我保护能力;病毒编制采用了集成方式等。
综合上述分析,今后计算机病毒的发展趋势是群发邮件病毒将大量出现; 针对系统漏洞的具有远程控制功能的病毒将越发突出;病毒和垃圾邮件编写者 将不断加强合作;病毒编写者更加年轻化、更有组织性。计算机病毒具有极强 的繁殖感染能力,而因计算机病毒所造成的危害正在加剧,病毒危害主要包括 系统崩溃、网络瘫疾、系统设置被修改、电脑使用受限、数据丢失等。
目前,比较常见的病毒检测技术有以下几种
(-)特征码技术;
特征码技术是一种基于对已知病毒分析、査解的反病毒技术。它作为反病 毒技术中最基本的技术被沿用至今,也是到目前为止各类反病毒软件仍普遍采 用的技术。特征码是一串二进制位信息,它能唯一标识某一非法程序,研究人 员通过对非法程序样本的分析,提取出"特征码"写入反病毒软件的特征码库。 该技术对用户指定的某个或某几个文件进行扫描,以确定是否包含非法程 序的特征码。在具体实现时,它最初是采用对待测文件全部扫描的方式,在病 毒等非法程序出现的早期,非法程序的种类不过数百种,采用这种扫描方式还
是比较快捷的。但在目前病毒、木马、蠕虫及其变种的总数超过60000的情况下, 这种方式显然是效率低下的。为此,出现了一些用来提高特征码扫描效率的技 术。例如,"所罗门"公司用非法程序内部的某段机器代码和该代码距离程序入口 的偏移量来唯一确定一种非法程序,检测时,只需要确定非法程序的程序入口 并从指定的偏移处开始查找指定的机器码即可。
特征代码法的优点是:检测准确快速、可识别病毒的名称、误报警率低。被 公认为检测已知病毒的最简单、开销较小的方法。其缺点是不能检测新病毒、 捕获已知病毒的特征代码,费用开销大、在网络上效率低,因长时间检索会使 整个网络性能降低。
(二)虚拟机技术;
虚拟机技术是一种启发式探测未知病毒的反病毒技术。虚拟机技术的主要 作用是能够运行一定规则的描述语言。由于病毒的最终判定准则是其复制传染 性,而这个标准是不易被使用和实现的,如果病毒已经传染了才判定它是病毒, 定会给病毒的清除带来麻烦。
虚拟机实质是在反病毒系统中设置的一种程序机制,它能在内存中模拟一 个操作系统环境,待查文件在虚拟机上执行,其效果如同物理机。虚拟机实际 是用软件的方法模拟地执行所有的或者设计者关心的CPU指令,营造一个虚拟 的、可观察的、可控制的目标程序运行环境。它相当于一个软件CPU盒,使得 被调试程序的运行局限在一个透明的箱子里。
采用虚拟机技术的杀毒软件在杀毒时,首先使用的还是特征码查毒法,当 发现目标具有加密病毒的特征时,其才会启动虚拟机模块让病毒的加密代码自 行解码,解码之后,就可以采用传统的特征码査毒法进行查杀了。可见,对于 已知加密病毒,提取其特征值也是非常重要的。
目前虚拟机的处理对象主要是文件型病毒。对于引导型病毒、word、 excel 宏病毒、木马程序在理论上都是可以通过虚拟机来处理的,但目前的实现水平
仍相距甚远。就像病毒编码变形使得传统特征值方法失效一样,针对虚拟机的 新病毒可以轻易使得虚拟机失效。虽然虚拟机也会在实践中不断得到发展。但 是,PC的计算能力有限,反病毒软件的制造成本也有限,而病毒的发展可以说 是无限的。
目前,虚拟机的实际应用情况是
(1) 在处理加壳或变形的木马和蠕虫方面,虚拟机被作为一个比较理想的选择。
(2) 在目前各类安全软件中引入的虚拟机一般都不是完整的仿真环境,而是 相对比较简单、易于实现的版本,即便如此,相对采用其他检测技术的安全软 件,采用虚拟机技术的安全软件还是占用了更多的系统资源。
(3) 虚拟机技术仍与传统技术相结合,其本质上的检测判断方法依然是特征 码检查,对于那些经过修改而不是简单的加壳后的恶意软件效果比较有限。
曰启发式扫描技术;
启发式扫描技术是一种基于人工智能领域启发式分析手段的检测技术,启 发式扫描能够发现一些应用了已有机制或行为方式的未知病毒。启发式扫描一 般包括静态扫描方式和动态扫描方式两种。启发式扫描是通过分析指令出现的 顺序,或特定组合情况等常见病毒的标准特征来决定是否为病毒。因为病毒要 达到隐蔽和破坏的目的,通常的行为都会有一定的特征,例如非常规读写文件、 程序自删除、非常规切入ringO等等。所以可以根据扫描特定的行为或多种行为 的组合来判断一个程序是否是病毒。这种启发式扫描比起静态的特征码扫描要 先进,可以达到一定的未知病毒检测处理能力,相对于特征码识别技术,启发 式扫描技术主要有以下优势-
(1) 逃避启发式扫描比特征码扫描更困难;
(2) 对未知病毒代码的检测能力优于特征码扫描技术;
卿静态启发式扫描技术
静态启发式扫描技术和基于特征码的静态扫描类似,也是静态扫描待测程 序的代码,但不同的是前者查找非法程序的特征码,而后者则査找非法程序的
行为。而这些行为是通过某些相应的代码序列来确定的。
静态启发式扫描的工作流程一般是这样的扫描某个待测文件当中的可执 行代码,查找与非法程序行为相对应的代码序列,扫描结束后,关联所有査找 到的序列,并与非法程序的典型行为模式相对照,最终做出判断。
静态扫描的优点是这种技术在扫描代码时通过查找某些代码序列,确定 程序是否具有某种类别的病毒的行为,因此,它也具有了检测未知病毒的能力。 它的扫描速度比较快,未知病毒的检出率也比较高。另外它能在代码未运行的 情况下,就确定代码的行为并检测非法程序。
不过它的缺点是目前病毒、木马等非法程序的编写者为了让这些程序尽 可能地传播和运行,大都对其作了加密、变形、加壳等处理,那么至少在其未 运行的情况下,通常很难在它的代码当中找到对应于非法程序行为的代码序列。
(5)主动防御-,
主动防御技术已被杀毒软件、软件防火墙、fflPS等安全软件广泛采用,现 有的后门木马、Rootkit等恶意软件面临严峻考验。无论传统的恶意软件功能有 多强大隐蔽性有多高,初次安装以及工作时都会被主动防御功能拦截并提示用 户,使其无法正常安装和工作。
如图l所示,主动防御的主要内容包括
(1) 进程行为监控(代码注入、安装全局钩子、创建新进程、终止进程等);
(2) 注册表监控;
(3) 进程核心态(驱动安装、访问物理内存);
(4) 文件监控;
(5) 各模块交融后的逻辑判断关系;
通常来说主动防御功能指以上这些,后来有些安全软件厂商将传统的监控 融合主动防御功能,形成更大层面的防御体系。传统木马后门等恶意软件,比 如,灰鸽子、PcShare,黑洞、PoisonIvy,网络神偷、黑客守卫者、Byshel10.67、 冰河等面临严峻的考验,因为即使功能再实用,隐蔽性再好,安装时被主动防 御报警也是功亏一篑,安装成功后外连时无法穿越基于主机的防火墙。
主动防御的原理主要采用了hook思想,截获系统相关API调用,对相应的可
疑行为进行报警,提示用户做出选择。具体来说,主动防御常用SSDTHook、Inline Hook、 Hook Driver Dispatch、 Filter Driver等内核技术,对恶意程序所需要的各 类函数进行挂接,实行函数行为挂接,监控其行为。另外,有些安全软件内置 小型专家系统(简单的可以理解为白名单和黑名单),实现智能判断,使操作更 加智能化,较少的需要用户干预。SSDT hook工作原理如图2所示。
几乎所有的安全软件在安装API钩子时都会选择hook SSDT表,例如KIS6, ZoneAlarm Pro。我们如果能够进入内核模式,就可以使用一个驱动程序,读取 系统文件ntoskrnl.exe/ntkrnlpa.exe/ntkrpamp.exe,从中提出我们所希望的SSDT表 的原始函数地址,替换被安全软件hook的地址,用此方法可以通用性很好的解 决绝大多数的API钩子实现的进程行为监控。不过此方法有一个前提,就是事先 必须绕过监控进入内核空间。
常被挂钩的系统服务包括NtAllocateVirtualMemoiy 、 NtCreateProcess 、 NtCreateProcessEx 、 NtCreateThread 、 NtDebugActiveProcess 、 NtLoadDriver 、 NtMapViewOfSection 、 NtSetSystemlnformation 、 NtShutdownSystem 、 NtTerminateProcess 、 NtWriteVirtualMemory 、 1SftSetSystemlnfomation 、 NtCreateKey 、 NtReplaceKey 、 NtQueryValueKey 、 NtCreateFile 、 win32k!NtUserSetWindowsHookEx等,如图3所示。
除了上述技术方案以外,目前还有有一种行为分析技术。所谓行为分析就 是采用一系列的规则定义非法程序,相应地采用另一套规则定义合法程序,如 果某个程序违背了合法程序的某项规则或者符合非法程序的某项规则,便可判 定其非法。
与传统的基于特征码的静态扫描技术不同的是,行为分析技术监控并限制 应用程序运行过程中的动态行为,和静态启发式扫描技术相对,它也被称为动 态启发式扫描。某些行为是木马、后门和蠕虫等非法程序的共同行为,但在合 法程序中却比较罕见,也就是说,它们成了非法程序的行为特征,可作为判别 应用程序是否非法的依据或者规则。
早期采用行为分析技术的反恶意软件, 一般通过对单个(类)具体行为的 识别,来判断应用程序是否会造成潜在的风险,也被称为行为识别。从广义上
来说,主机防火墙采用的就是行为识别技术。由于监控的是网络操作行为(如 主机防火墙可监控主机上对外网络连接及服务端口 ),因此在防治木马方面取得 了不错的效果。但是,行为分析技术同样存在着不足-
(1) 需要尽可能全面的监控。如果有害行为没有被列入监控范围,可能会遗 漏掉恶意软件。例如,如果像主机防火墙那样仅对网络行为进行识别,对于那 些通过动态链接库注射方式把自己隐藏到合法网络通信程序中的间谍软件,则 无法检测。
(2) 考虑到软件的实用性,行为分析软件一般不会采用过于复杂的分析算法, 一般多采用简单加权算法来进行分析。它通常为那些值得怀疑的行为设一个权 值,如果一个程序的总权值超过了临界值,就将其判断为恶意软件。如果设计 时将临界值设的太低,用户会被频繁的误报弄得不知所措,而如果临界值设得 太高,则会遗漏掉恶意软件。因此,行为分析技术在进行全面监控的基础上, 需要结合优化过的决策树或其它人工智能的算法对行为进行分析,在不增加计 算复杂度的情况下尽可能地提高发现准确度。
(3) 无法应对那些能造成直接破坏的恶意代码。对于格式化硬盘等直接破坏 行为,等到检测再到经过分析,就来不及阻止了,考虑到恶意软件中极少出现 类似情况,行为分析技术对恶意软件还是比较适用的,但不一定适合用于反病 毒场合。因此, 一个完整的反恶意软件,不能仅仅依赖行为分析技术去发现未 知恶意代码,仍然需要传统特征码匹配技术的配合。
由于行为分析技术具有可检测未知非法程序的特点,所以成为目前反病毒 领域研究的热点。根据部分安全软件厂商对新增木马行为分析组件的介绍和说
明,并通过对具体产品的实际使用和观察,不难发现现有的添加了行为分析 这一功能模块的软件一般只检测某些单独的行为项(如修改注册表自启动项、
文件关联、IE浏览器的起始页等)。它们所表现出来的工作流程也较为相似,都
是通过用户判断来学习对某一软件的识别,简单自反馈(自学)模型,非常类 似于防火墙等早期行为识别软件。
如图4示,"自反馈"模型首次检测到行为即将发生时,会立即通知用户,通
知中包含较详细的文字描述。该模块根据用户的反馈进行下一步操作或者阻 止该行为,或者允许该行为,或者终止与该行为相关联的进程。另外,用户还
可进行如下的设置
(1) 一直允许该进程的该行为;
(2) —直禁止该进程的该行为;
一旦进行了上述任何一项设置,模块再次检测到相同进程的相同行为时, 通常不再询问用户,而根据设置自行处理,否则,处理方式仍与首次检测到该 行为时相同。这种行为分析实现,只是对单个敏感行为进行了监控,缺少对多 个行为的连贯综合分析,也缺少对行为的上下文环境分析,严重依赖用户的判 断,容易导致较高的误报率。

发明内容
本发明针对上述现有技术所存在的不足,而提供一种能够对病毒行为进行 自动分析且速度快、准确率高的自动化分析系统。
为了达到所述目的,本发明所提供的基于Win32平台下病毒行为的自动化分 析系统,该系统主要由数据模块、控制模块以及运行模块组成,所述控制模块 工作于物理机环境中,所述运行模块工作于由虚拟机形成的虚拟环境中;所述 数据模块中样本数据模块通过自动入库模块连接行为数据模块;所述运行模块 中捕获引擎模块与HOOKDELL模块进行数据交换;所述控制模块连接样本数据 模块以及行为数据模块,并且控制运行模块中的捕获引擎模块。
所述样本数据模块包括有病毒样本数据模块以及合法程序样本数据模块。
所述行为数据模块包括有用来将捕获的病毒样本行为数据记入数据模块中 并进行统计,并转化成易于建模的二维表的病毒样本行为数据模块和用来将捕 获的合法程序样本行为数据记入数据模块中并进行统计,并转化成易于建模的 二维表的合法程序样本行为模块。
所述捕获引擎模块包括捕获引擎和插件。
所述捕获引擎在捕获样本动态行为通过以下步骤实现
(1) 对指定样本进程进行分析,检查被分析样本进程加载了哪些系统DLL;
(2) 再根据工作目录下的HOOKDLL的导出函数表,来确定需要在被分析 样本进程中哪些函数调用处设置调试断点;
(3) 当样本进程执行到调试断点处会产生中断事件,通过调试子系统获得
断点发生时被分析样本进程的执行环境(指令寄存器、堆栈寄存器等多个寄存
器的值),并将中断时的堆栈参数送至HOOKDLL中相应的处理函数进行具体分 析。
所述HOOKDLL负责接收捕获引擎捕获的函数及其实际参数,并对实际参数 进行具体分析,将分析的结果进行格式化输出到数据库或文件中。
所述格式化输出的分析内容有两种,Trace型即记录函数调用的记录而不关 注其参数,Analysis型即把函数和参数进行结合判断后再记录其行为特征。
所述自动入库模块是用于将大量样本的相关信息准确入库,通过访问这些 数据库记录,可以使得整个联机系统中的每台捕获引擎都能够准确获取每个样 本的路径信息并能访问样本库所在的物理机。
所述自动入库模块由文件检测和数据库操作两个子模块组成。
所述文件检测子模块通过以下步骤实现功能首先对用户输入的信息进行 校验,判断输入数据是否正确,然后根据输入的参数信息,判断是否进行数字 签名和文件格式检测,以及相关的DLL检测。
所述数据库操作子模块能够对数据库执行读数据操作、写数据操作、自定 义的其他操作。
所述控制模块的处理流程
(1) 连接数据库,从对象程序表中取得未分析的数据;
(2) 启动虚拟机,并登陆虚拟机中的操作系统;
(3) 传送样本文件至虚拟机中的操作系统,存放在虚拟机C盘根目录下;
(4) 启动捕获引擎并对样本的行为实施跟踪,并将行为记录下如XML文件
中;
(5) 跟踪完毕后,关闭虚拟机,并将回传的XML文件解析,其行为记录存 入数据库的跟踪事件数据表。
控制模块对数据模块具有如下互斥操作流程 (1)当虚拟机启动,首先控制模块会向数据模块请求一个未被分析样本的 路径信息,对数据库中对象程序表和跟踪数据表中加X锁,查询对象程序表中的 istraced和Prog—id两个字段的值,若istraced为false且Prog—id的值未在跟踪数据表 中出现,则判断该样本未被分析过,并向主程序提交路径信息;(2) 若主程序成功下载病毒样本,在跟踪数据表插入一条新记录,并进行 初始化操作,系统自动填入trace一id和prog一id两个字段的值,字段"程序跟踪状态" 设置为"正在处理";同时释放对象程序表和跟踪状态表的X锁;
(3) 解析虚拟机传回来的含有病毒行为的XML文件,并记录至数据库中的 跟踪事件数据表。
根据上述技术方案得到的本发明,具有以下优点具有可检测未知非法程 序,对于工具黑客对抗性较好,病毒难以通过简单改造甚至程序自动化改造逃 避检测;对抗一族恶意代码而不是一个;本发明的监控范围非常的广、实用性 强、可以应对能造成直接破坏的恶意代码,同时还能够实现自动对样本进行快 速、准确的分析使得我们的电脑能够得到全面的保护。
以下结合附图和具体实施方式
来进一步说明本发明。
图l为主动防御的层次结构示意图。
图2为SSDT HOOK工作原理示意图。
图3为常被挂钩的系统服务示意图
图4为简单自反馈模型的示意图。
图5为系统模块的结构示意图。
图6为捕获引擎设计原理图。
图7为本系统框架。
图8为本系统网络拓扑图。
图9为行为数据表E-R图
图IO为本系统组件关系图。


图11为文件检测流程图。
图12为控制程序处理流程图。
图13为捕获引擎的处理流程图。
图14为HOOKDLL示意图。
图15为HOOKDLL处理流程图。
图16为HOOKDLL列表。
具体实施例方式
为了使本发明实现的技术手段、创作特征、达成目的与功效易于明白了解, 下面结合具体图示,进一步阐述本发明。
常见病毒行为的分析的为现有技术,这里将不加以赘述。
病毒动态行为自动化分析系统的主要功能是为了自动化获取并分析样本程 序的动态行为数据。该系统由以下几个模块组成(如图5所示)
样本库样本库包括两类样本,分别为黑样本库(病毒样本)、白样本库(合 法程序)。
入库筛选模块负责将指定网络上能够直接访问的某文件或某文件夹里的 文件的信息保存到指定数据库,同时将检验样本是否符合自动化行为分析系统 的运行条件,只有符合条件的样本才能存在于相应的样本库中。
捕获引擎模块包括捕获引擎和插件,用来捕获病毒和合法程序的行为, 并将行为数据入库。
黑样本行为库用来将捕获的黑样本行为数据记入数据库中并进行统计, 并转化成易于建模的二维表。
白样本行为库用来将捕获的白样本行为数据记入数据库中并进行统计, 并转化成易于建模的二维表。
捕获引擎对程序性质已确定的黑白样本库中的程序通过自动入库模块倒入 到系统后进行行为捕获;再将捕获的数据交由黑/白样本行为库,并形成格式化 的数据。
为实现本系统的自动捕获功能使用以下两种关键技术 一、动态行为捕获技术
在自动化分析系统中,需要在API函数的入口处设置断点中断。中断是一种 使CPU中止正在执行的程序而转去处理特殊事件的操作,而程序中安排的中断 指令INT产生的中断被称为软件中断,在Intd体系上用于中断调试的指令有二
INT1:单步中断
使用单步中断可以一条一条指令地跟踪程序的流程,观察CPU每执行一条 指令后,各个寄存器及有关存储单元的变化,从而指出和确定产生错误的原因。
INT3:断点中断
断点中断也是供DEBUG调试程序使用的,它的中断类型号为3。通常调试 程序时,把程序按功能分为几段,然后每段设置一个断点。当CPU执行到断点 时便产生中断,这时可以检查各寄存器及有关存储单元的内容。
断点可以设置在程序的任何地方,设置断点实际上是把一条断点指令INT3 插入样本程序进程中,CPU每执行到断点处的INT3指令便产生一个中断。
使用中断指令来实时劫持OS执行,需要注意两点
定义我们的断点处理程序和与断点时间关联。即设置探测点,就是在我们 指定的OS调用函数的内存位置上设置断点。 被调试程序须在用户空间中执行。
当样本进程遇到断点(OxCC),该进程会发生异常J^BP(INT3), Win32调试子 系统会截获中断。调试器通过此端口完成对调试子系统的挂接,进而接收和处 理调试事件。
调试器实际上是一个很宽泛的概念,凡是能够以某种形式监控其他程序执 行过程的程序,都可以泛称为调试器。在Windows平台上,根据调试器的实现原 理大概可以将之分为三类内核态调试器、用户态调试器和伪代码调试器。用 户态调试器直接使用Win32API提供的调试接口,遵循Win32的事件驱动的设计 思想,其调试接口的服务器端的实现思路是调试服务的服务器端接口实际上 是存在于被调试进程的调试端口(DebugPort),此核心对象实现上跟Win32的完 成端口类似,都是通过一个核心队列实现的LPC端口。启动调试服务器实际上就 是挂接Win32的调试子系统到被调试进程,并在被调试进程内构造调试端口。调 试器通过调试端口与Win32的调试子系统通讯;调试子系统响应系统操作所引发 的调试事件,并通过调试端口将调试事件分发给用户态调试器。
本发明设计的捕获引擎正是采用这样的调试器技术。如图6所示,我们需要 捕获某个样本调用C叩yFileExA函数的情况,则在这个函数的入口处设置断点中 断。一旦样本程序执行到此断点处(即样本调用CopyFileExA函数),会告知Win32 调试子系统,调试子系统会检索是否有用户调试器在等待中断,如果发生的中 断属于某个调试器需要监视的内容范围,则交由这个调试器处理。捕获引擎在 启动时,创建新的进程空间用以执行样本,并告知调试子系统,该进程内发生
的断点中断事件由捕获引擎来处理。 二、虚拟机控制技术
本发明采用虚拟机技术实现对病毒行为的跟踪调试,以防止病毒的扩散和
破坏。VMWare是一个"虚拟PC"软件,可以在一台机器上同时运行两个或更多 Windows、 DOS、 LINUX等系统。与"多启动"系统相比,VMWare采用了完全不 同的概念。"多启动"系统在一个时刻只能运行一个系统,在系统切换时需要重新 启动机器。而VMWare是真正"同时"在主系统的平台上运行多个操作系统,就象 标准Windows应用程序那样切换。而且每个操作系统你都可以进行虚拟的分区、 配置而不影响真实硬盘的数据,甚至可以通过网卡将几台虚拟机连接为一个局 域网,极其方便。
VIX API是一种通过脚本或编程方式来操作虚拟机的应用函数接口 ,由于在 应用层就可以使用,且接口函数类似于C,所以非常适用于编程。由于VIXAPI 是基于对象操作的,所以在使用它对虚拟机操作就需要用到如下对象
VM--虚拟机,只能对它进行开启或关闭的操作;
host-宿主计算机,既可以是本地计算机,也可以是远程计算机;
job—相当于一个会话,包含有异步操作信息;
snapshot-虚拟机快照;
自动化分析系统主要对虚拟机进行以下几种控制操作
(1) 虚拟机的开启
首先,定义一个虚拟机控制句柄,然后尝试去连接虚拟机。 其次,将定义的主机句柄的控制权交与虚拟机控制句柄。 最后,开启虛拟机中的操作系统。
(2) 传送文件至虚拟机中的操作系统
首先,同样需要定义虚拟机控制句柄,并将其交与主机句柄。 其次,登陆虚拟机中的操作系统。 最后,所需文件从物理机传至虚拟机中。
(3) 控制虚拟机中可执行文件执行。
采用的方法前三步与传送文件至操作系统的前三步相同,
通过以上操作实现对虚拟机的开启、关闭、重启和加载程序等一系列操作,
从而实现对病毒行为的跟踪调试。
本病毒动态行为自动化分析系统是由以下三层构成,如图7:
数据层。该层有两个组成部分,样本库和病毒行为库。样本库是用来放置
样本的文件服务器,而病毒行为库是用来存放自动化行为分析系统的捕获的行
为数据的数据库。
控制层。该层是一个物理联机系统,每个集权单元都有一个封闭的虚拟运 行环境用来运行病毒样本。集权单元的核心是控制程序,它的作用是-
(1) 从样本库中提取病毒样本;
(2) 向虚拟机发送控制指令,如开启虚拟机、加载样本程序、运行行为捕 获引擎;
(3) 接受虚拟机发送的有病毒行为的XML文件,并解析这个文件,将相关 的病毒行为通过普通socket连接记录至病毒行为库中;
运行层。运行层可以看作是一个"沙框"(sandbox)。"沙框"可以看作为一 个安全的软件系统,用来将一些未知的或不可信任的程序放置在一个孤立的且 同外界隔离的环境中运行,因为这些程序是不能冒险放在个人系统或网络环境 下运行的。而虚拟机系统为实现这个"沙框"创造了技术条件,因为虚拟机是同操 作系统物理隔离,并且运行在我们常用的桌面系统,易用且易于控制。如设计 得当,将病毒样本放置虚拟机运行不会对物理操作系统造成任何危害。在运行 层中除了 VMware虚拟机外还有行为捕获引擎和扩展插件。
本系统的运行环境 一、物理机运行环境
硬件环境配置4台高性能PC (Intel E6320, 4G内存)作为行为捕获引擎, 每台捕获引擎都采用支持Intd VT技术的硬件,使得VMWare在此平台上的运行 效率将优于其它平台。l台数据库服务器(DELL POWEREDGE 860)。 l台百
兆交换机。
软件环境配置Windows XP Professional SP2,数据库为MySql 5.0, VMWare Workstation6.0.2。系统网络配置如图8。
二、 虚拟机运行环境
本系统采用VMware Workstation 6.0以上的版本,使用的开发包为VMWare VIX SDK 1.1。
本系统采用的是拥有几种不同的操作系统的虚拟主机,每一个操作系统代 表恶意软件可能攻击的目标。这样便于在本地环境中观察恶意程序。为了对付 恶意软件,采取一些预防措施不让生产系统网络受到感染。具体方法如下
跟上VMware安全补丁的步伐,经常浏览其网站,下载其最新的补丁。
将某物理主机用于基于VMware的试验环境,不用于其它用途。
不将物理试验系统连接到生产性网络。
用基于主机的入侵检测软件监视物理主机,如一个文件集成检査器。 用克隆软件定期重镜象物理主机,如NortonGhots。
搭载病毒样本的虚拟机系统与之对应的物理机进行逻辑隔离,本文实验采 用的具体方法是将这两种不同的系统分置在不同的网段,以防止如Viking等病 毒,这些病毒具有很强的嗅探能力,能够突破同局域网下所以机器的漏洞,并 将其注入。
三、 数据库设计-
系统的数据库是基于MySql5.0开发设计,数据结构及表应用数据库脚本生 成。这些数据表之间的E-R图如图9。
表tbLprog用来存放样本的一些基本信息,比如存放文件路径,这里要注意 的是文件路径为共享路径,这个路径应当被分析引擎顺利访问。
表tbljrace用来记录被分析样本的状态,因为在分析的过程中,被分析的样 本会出现超时、崩溃等情况。
、、
表tbl一traceevent用来记录被分析样本的API调用及使用的参数,这里的数据 将是建模中的关键性数据。
整个自动化分析系统是由如下几个组件协同工作完成
(1) 入库程序。入库程序是将样本库中的样本路径等信息存入数据库中, 使得控制程序能够获取到样本的路径信息。
(2) Control (控制程序)。运行在物理机上,用于控制虚拟机的运行,并
负责提取病毒样本和超时管理。
(3) VMTracer (捕获引擎)。VMTracer是捕获系统中的核心,负责检査被 分析样本进程加载了哪些系统DLL,然后根据HOOKDLL的导出函数表,来确定 需要在被分析样本进程中哪些API调用处设置调试断点。当样本进程执行到调试 断点处会产生中断事件,通过调试子系统获得断点发生时被分析样本进程的执 行环境(指令寄存器、堆栈寄存器等多个寄存器的值),并将中断时的堆桟参数 送至HOOKDLL中相应的处理函数进行具体分析。
(4) HOOKDLL。负责接收捕获引擎捕获的API函数及其实际参数,并对 实际参数进行具体分析,将分析的结果进行格式化输出到数据库或文件中。
从图10得出在系统的三层框架下,入库程序作为组件位于数据层中的样本 库文件服务器中。它作为一个前端工具,用于将样本信息存入数据库中,在自 动化系统所有组件中只有入库程序是人机交互的。而控制程序是无人值守的, 是无须人机交互的。控制程序是所有组件的核心,它负责从样本库中提取样本、 运行虚拟机、并向行为库传送病毒行为数据。捕获引擎及其插件(HookDll)是 协同工作在虚拟环境下捕获病毒的行为,并写入XML文件回传至控制机。
下面对上述各组件的具体运行进行详细介绍-
一、自动入库自动入库组件是用于将大量样本的相关信息准确入库。通 过访问这些数据库记录,可以使得整个联机系统中的每台捕获引擎都能够准确 获取每个样本的路径信息并能访问样本库所在的物理机。同时,由于本捕获引 擎联机系统是在一个同互联网隔绝的封闭网段下运行,所以存放病毒样本的物 理机无须采用防火墙,以免自动入库程序在传送样本中受到堵塞。
自动入库组件由文件检测和数据库操作两个子模块组成。
文件检测子模块的功能
(1) 检测样本文件的数字签名是否有效;
(2) 检测样本文件是否是一个PE32格式的文件;
(3) 如果样本是可执行文件,检测样本是否缺少运行必须的DLL文件; 文件检测子模块的输入项
(1) 输入样本文件名;
(2) 输入检测标记,比如仅检测文件的数字签名是否有效;
文件检测子模块的输出项
输出检测结果,比如文件是一个PE32格式的可执行文件,并且文件的数字
签名有效。
文件检测子模块的接口
提供函数BOOL CheckPeFile(CHAR *pszFile, DWORD dwCheck)给其他
模块调用。
文件检测子模块的处理流程(如图ll):文件检测子模块首先对用户输入的 信息进行校验,判断输入数据是否正确,然后根据输入的参数信息,判断是否
进行数字签名和文件格式检测,以及相关的DLL检测。
数据库操作子模块的功能
(1) 对Mysql数据库执行读数据操作;
(2) 对Mysql数据库执行写数据操作;
(3) 对Mysql数据库执行自定义的其他操作,比如更新数据。 数据库操作子模块的输入项-
(1) 连接数据库所需的配置信息,包含数据库名,登陆用户名,登录密码;
(2) 需要写到数据库的数据; 数据库操作子模块的输出项
(1) 连接数据库出错的出错信息;
(2) 读写数据库完成的提示信息;
自动入库实现过程中使用的主要类库有CDataBase和CListFile。 CDataBase 负责控制程序全部的数据库操作,包括查询、修改、增加和删除记录的工作。 CListFile负责显示指定目录下面的指定文件名.(包含子目录)。
二、控制程序控制程序功能是病毒动态行为自动化分析系统的核心组件, 用于控制虚拟机的运行,并负责提取病毒样本。控制程序运行在物理机的 Windows系统中。
控制程序输入项-
(1) 存放数据的数据库相关信息,包括数据库主机名,数据库名,登录数 据库需要的账号密码;
(2) 存放样本数据的计算机相关信息,包括存放样本的网络地址,样本数
据文件;
(3) VMWare虚拟机相关信息,包括VMWARE虚拟机镜像文件位置,虚拟 机内部系统的账号和密码;
(4) 每个样本的分析时间,超时分析自动结束,比如120秒; 输入项均为控制程序命令行参数,参数格式为Control.exe host root pwd db
vmx user pwd StopTime。其中host参数为数据库主机名;root参数为数据库登
陆帐号;pwd参数为数据库登陆密码;db参数为数据库名称;vmx参数为虚拟
机文件;user参数为登陆虚拟机内部系统的帐号;pwd参数为登陆虚拟机内部系 统的密码;StopTime参数为指定超时时间,单位秒;例如Control.exe 127.0.0.1 root 123 mydb c:xp.vmx user 1234 120。
控制程序输出项
(1) 从虚拟机内部取得的样本文件特征数据放到指定数据库的tb1—event表
中;
(2) 从虚拟机内部取得的样本文件特征数据文件,样本所在文件夹下,文 件名和样本文件同名,扩展名为.XML;
(3) 生成控制程序运行中产生的出错信息文件,并保存到cA—log.bg;
控制程序处理流程,如图12:
(1) 连接数据库,从对象程序表中取得未分析的数据;
(2) 启动虚拟机,并登陆虚拟机中的操作系统;
(3) 传送样本文件至虚拟机中的操作系统,存放在虚拟机C盘根目录下;
(4) 启动捕获引擎并对样本的行为实施跟踪,并将行为记录下如XML文件
中;
(5) 跟踪完毕后,关闭虚拟机。并将回传的XML文件解析,其行为记录存 入数据库的跟踪事件数据表;
控制程序对数据库的互斥操作流程
自动化分析系统是一个联机系统,该系统由多个主机组成,每个主机都拥 有一个控制程序,且控制程序运行在物理机内。在取得未分析数据的过程中, 为了实现合理调度,避免一个样本被多个主机重复分析而造成的数据冗余,在 设计控制程序过程中需要实现如下的互斥操作流程
(1) 一旦启动虚拟机,首先控制程序会向数据库请求一个未被分析样本的
路径信息,对数据库中对象程序表和跟踪数据表中加x锁,査询对象程序表中的
istmced和Prog—id两个字段的值,如果istraced为false且Prog—id的值未在跟踪数据 表中出现,则判断该样本未被分析过,并向主程序提交路径信息;
(2) —旦主程序成功下载病毒样本,在跟踪数据表插入一条新记录,并进 行初始化操作,系统自动填入tmce一id和progjd两个字段的值,字段"程序跟踪状 态"设置为"正在处理";同时释放对象程序表和跟踪状态表的X锁;
(3) 解析虚拟机传回来的含有病毒行为的XML文件,并记录至数据库中的 跟踪事件数据表。
控制程序实现过程中使用的主要类库和方法
控制程序中主要有两个类CDataBase和CVixVM。 CDataBase类负责控制程序 全部的数据库操作,包括查询、修改、增加和删除记录的工作。CWxVM类在控 制程序中负责虚拟机操作的子模块,包括开启、加载样本程序、启动捕获引擎、 出错处理和关闭虚拟机。CVixVM用以编程实现对VMware虚拟机的控制。因为 自动化分析系统中样本是运行在封闭的虚拟环境中的,所以,我们使用VMware 的开发包为VMWareVIXSDKl.l,通过编程,实现外部对虚拟机内部运行进行 控制。
三、捕获引擎捕获引擎(APITracer)是本系统中的核心,在确定对指定 样本进程进行分析之后,检査被分析样本进程加载了哪些系统DLL,然后根据 工作目录下的HOOKDLL的导出函数表,来确定需要在被分析样本进程中哪些 API调用处设置调试断点。当样本进程执行到调试断点处会产生中断事件,通过 调试子系统获得断点发生时被分析样本进程的执行环境(指令寄存器、堆栈寄 存器等多个寄存器的值),并将中断时的堆栈参数送至HOOKDLL中相应的处理 函数进行具体分析。
捕获引擎的功能
(1) 根据工作目录下的HOOKDLL对指定API调用入口处设置调试断点;
(2) 通过操作系统调试子系统中获取需要捕获的API调用事件及其参数;
(3) 向HOOKDLL中相应的处理函数传递断点发生处的堆栈信息; 捕获引擎的输入项
(1) 样本进程;
(2) 捕获引擎的所在目录;
(3) 目录下所有HOOKDLL名及HOOKDLL导出函数表;
捕获引擎的输出项
捕获引擎在捕获到调试中断之后,会调用HOOKDLL中相应的函数进行处 理,这些函数采用相同的参数表,这个参数表就是行为捕获引擎的输出,定义 为TracerFunc函数指针。
以对SendMessageW函数的捕获处理为例,当发生调试断点事件之后,捕获 引擎调用HOOKDLL中的MySendMessageW函数进行处理。
其中TmceMode若为CALLJTRACE一MODE,表明是在捕获的API调用前 进行处理。TraceMode若为RETURN一TRACE一MODE,表明是在捕获的API调用 后进行处理;plnfo为CTracelnfo *类型的句柄,用于结构化打印数据,相当于 stdout; pdwRet
用来通知捕获引擎修改被捕获函数的返回值;pAdvCtrl是系统保留,为了将 来扩充功能保留。Apilnfo为API—TRACE—INFO结构体的指针变量,存储了断点 发生时,被分析样本进程的执行环境,包括API名,堆栈指针等。
捕获引擎的处理流程,如图13:
捕获引擎的主要部分是一个循环,处理来自内核的调试事件,循环体内先 等待一个调试事件,然后处理之,最后将控制权交还给调试服务器,就好像一 个窗口消息循环一样。
捕获引擎关注EXCEPTION—DEBUG—EVENT调试事件的发生,每次 Win32API—旦被调用,就触发一次EXCEPTION一DEBUG—EVENT事件。每调用 一次Win32API, APITracer査找这些动态链接库是否存在有同名函数, 一旦发现 即转入HOOLDLL动态链接库。
其实现的方法是在调试器开始的时候,启动要调试程序的新进程或者挂 接(attach)到一个已运行进程上,此时启动调试接口的服务器端;使用 WaitForDebugEvent函数等待调试服务器端的调试事件的发生;根据事件进行相 应的处理;最后使用ContinueDebugEvent函数请求调试服务器继续执行被调试进 程,以等待并处理下一个调试事件。
四、HOOKDLL组件HOOKDLL组件主要是接收捕获引擎捕获的API函数 及其实际参数,并对实际参数进行具体分析,将分析的结果进行格式化输出到 数据库或文件中。格式化输出的分析内容有两种,Tmce型即记录API调用的记录 而不关注其参数,Analysis型即把API和参数进行结合判断后再记录其行为特征。
HOOKDLL的功能
(1) 解析捕获引擎传递的函数参数内容;
(2) 检查参数内容与对应的API可能产生的恶意行为做规则匹配;
(3) 输出Trace类型记录;
(4) 输出Analysis类型记录; HOOKDLL的输入项
以对WSAConnect函数的捕获处理为例,病毒调用此API函数,必定引用了 系统DLL,即Ws2—32.dll,与之对应的HOOKDLL是H一Ws2—32.dll,则对 WS ACo皿ect函数参数的具体分析转入H一Ws2一32.d11中的My WSAConnect函数进 行处理,MyWSAConnect首先判断TraceMode的类型,然后从API—TRACE—INFO 中的堆栈指针获得参数内容在内存的地址,进而读取这些内容并将其解析。Tmce 类型的记录就是API调用事件和参数内容的输出,Analysis类型的记录是分析函 数参数的内容是否同与该函数相关的恶意代码行为规则所匹配,如果匹配则该 行为作为Analysis类型的记录被输出。
HOOKDLL的输出项
HOOKDLL的输出项是使用类CTracelnfo派生的对象进行控制和输出。 HOOKDLL的处理流程
一旦调试事件EXCEPTION一DEBUG一EVENT发生,捕获引擎即阻塞被跟踪 程序的执行,示意图见图14。
如上图14, APITracer在跟踪至某一系统API函数TestFunc(),此时中断 TestFunc(),记录当前函数地址0xl7fa,并指针转至能够处理该函数的扩展插件, 这个插件我们命名为HOOKDLL。然后,HOOKDLL记录下此API调用,此外还 有调用的时间戳及其相关参数,比如关联的文件名、访问的磁盘分区或修改注 册表的键值。完毕后,将指针重定向至0xl7fa处,释放中断。
HOOKDLL的内部处理流程如图15所示
TraceMode为C ALLJTRACE—MOED表明当前API函数的参数内容可以在调 用前得到,而TraceMode为RETURN一TRACE一MOED则表明当前API函数的参数 必须在函数调用后得到,同时还需要指明是否修改函数返回值。
HOOKDLL实现过程中使用的主要类库和变量是CTracelnfo类和 API—TRACE—INFO结构。CTracelnfo类在CommUtils.h头文件中声明,该类主要 用于分析处理和记录调试的相关信息。API—TRACE—INFO结构在CommUtils.h 中声明。这个结构包含了被拦截dll函数所在的进程句柄(hProcess),调用本函 数的模块名(Caller),调用本函数的D11名(DllName),以及本函数的函数名 (ApiName),函数参数堆栈指针(dwStackAddr)等。dwRet用来设置被拦截函 数的返回值,而pAdvCtrl是为了将来扩充功能保留。本系统中设计和实现了八个 HOOKDLL,如图16。
以上显示和描述了本发明的基本原理和主要特征和本发明的优点。本行业 的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中 描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明 还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本 发明要求保护范围由所附的权利要求书及其等效物界定。
权利要求
1.基于Win32平台下病毒行为的自动化分析系统,该系统主要由数据模块、控制模块以及运行模块组成,所述控制模块工作于物理机环境中,所述运行模块工作于由虚拟机形成的虚拟环境中;其特征在于,所述数据模块中样本数据模块通过自动入库模块连接行为数据模块;所述运行模块中捕获引擎模块与HOOKDELL模块进行数据交换;所述控制模块连接样本数据模块以及行为数据模块,并且控制运行模块中的捕获引擎模块。
2、 根据权利要求l所述的基于Win32平台下病毒行为的自动化分析系统,其特征在于,所述样本数据模块包括有病毒样本数据模块以及合法程序样本数据 模块。
3、 根据权利要求l所述的基于Win32平台下病毒行为的自动化分析系统,其 特征在于,所述行为数据模块包括有用来将捕获的病毒样本行为数据记入数据 模块中并进行统计,并转化成易于建模的二维表的病毒样本行为数据模块和用 来将捕获的合法程序样本行为数据记入数据模块中并进行统计,并转化成易于 建模的二维表的合法程序样本行为模块。
4、 根据权利要求l所述的基于Win32平台下病毒行为的自动化分析系统,其 特征在于,所述捕获引擎模块包括捕获引擎和插件。
5、 根据权利要求4所述的基于Win32平台下病毒行为的自动化分析系统,其 特征在于,所述捕获引擎在捕获样本动态行为通过以下步骤实现-(1) 对指定样本进程进行分析,检査被分析样本进程加载了哪些系统DLL;(2) 再根据工作目录下的HOOKDLL的导出函数表,来确定需要在被分析 样本进程中哪些函数调用处设置调试断点;(3) 当样本进程执行到调试断点处会产生中断事件,通过调试子系统获得 断点发生时被分析样本进程的执行环境(指令寄存器、堆栈寄存器等多个寄存 器的值),并将中断时的堆栈参数送至HOOKDLL中相应的处理函数进行具体分 析。
6、 根据权利要求l所述的基于Win32平台下病毒行为的自动化分析系统,其 特征在于,所述HOOKDLL模块负责接收捕获引擎捕获的函数及其实际参数,并 对实际参数进行具体分析,将分析的结果进行格式化输出到数据库或文件中。
7、 根据权利要求6所述的基于Win32平台下病毒行为的自动化分析系统,其 特征在于,所述格式化输出的分析内容有两种,Trace型即记录函数调用的记录 而不关注其参数,Analysis型即把函数和参数进行结合判断后再记录其行为特征。
8、 根据权利要求l所述的基于Win32平台下病毒行为的自动化分析系统,其 特征在于,所述自动入库模块是用于将大量样本的相关信息准确入库,通过访 问这些数据库记录,可以使得整个联机系统中的每台捕获引擎都能够准确获取 每个样本的路径信息并能访问样本库所在的物理机。
9、 根据权利要求8所述的基于Win32平台下病毒行为的自动化分析系统,其 特征在于,所述自动入库模块由文件检测和数据库操作两个子模块组成。
10、 根据权利要求9所述的基于Win32平台下病毒行为的自动化分析系统, 其特征在于,所述文件检测子模块通过以下步骤实现功能首先对用户输入的 信息进行校验,判断输入数据是否正确,然后根据输入的参数信息,判断是否 进行数字签名和文件格式检测,以及相关的DLL检测。
11、 根据权利要求9所述的基于Win32平台下病毒行为的自动化分析系统, 其特征在于,所述数据库操作子模块能够对数据库执行读数据操作、写数据操 作、自定义的其他操作。
12、 根据权利要求l所述的基于Win32平台下病毒行为的自动化分析系统, 其特征在于,所述控制模块的处理流程(1) 连接数据库,从对象程序表中取得未分析的数据;(2) 启动虚拟机,并登陆虚拟机中的操作系统;(3) 传送样本文件至虚拟机中的操作系统,存放在虚拟机C盘根目录下;(4) 启动捕获引擎并对样本的行为实施跟踪,并将行为记录下如XML文件中;(5) 跟踪完毕后,关闭虚拟机,并将回传的XML文件解析,其行为记录存 入数据库的跟踪事件数据表。
13、 根据权利要求l或12所述的基于Win32平台下病毒行为的自动化分析系 统,其特征在于,控制模块对数据模块具有如下互斥操作流程(1)当虚拟机启动,首先控制模块会向数据模块请求一个未被分析样本的 路径信息,对数据库中对象程序表和跟踪数据表中加x锁,査询对象程序表中的istmced和Prog—id两个字段的值,若istraced为false且Prog—id的值未在跟踪数据表 中出现,则判断该样本未被分析过,并向主程序提交路径信息;(2) 若主程序成功下载病毒样本,在跟踪数据表插入一条新记录,并进行 初始化操作,系统自动填入trace一id和prog—id两个字段的值,字段"程序跟踪状态" 设置为"正在处理";同时释放对象程序表和跟踪状态表的X锁;(3) 解析虚拟机传回来的含有病毒行为的XML文件,并记录至数据库中的 跟踪事件数据表。
全文摘要
本发明公开了基于Win32平台下病毒行为的自动化分析系统,该系统主要由数据模块、控制模块以及运行模块组成,所述控制模块工作于物理机环境中,所述运行模块工作于由虚拟机形成的虚拟环境中;所述数据模块中样本数据模块通过自动入库模块连接行为数据模块;所述运行模块中捕获引擎模块与HOOKDELL模块进行数据交换;所述控制模块连接样本数据模块以及行为数据模块,并且控制运行模块中的捕获引擎模块。本发明的监控范围非常的广、实用性强、可以应对能造成直接破坏的恶意代码,同时还能够实现自动对样本进行快速、准确的分析使得我们的电脑能够得到全面的保护。
文档编号G06F9/44GK101373502SQ20081003727
公开日2009年2月25日 申请日期2008年5月12日 优先权日2008年5月12日
发明者勇 张, 沈寒辉, 巍 王, 王国丰, 胡永涛, 峰 高 申请人:公安部第三研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1