分布式计算环境下恶意代码行为检测技术的研究(1)

上传人:小** 文档编号:89499186 上传时间:2019-05-25 格式:DOC 页数:14 大小:92.50KB
返回 下载 相关 举报
分布式计算环境下恶意代码行为检测技术的研究(1)_第1页
第1页 / 共14页
分布式计算环境下恶意代码行为检测技术的研究(1)_第2页
第2页 / 共14页
分布式计算环境下恶意代码行为检测技术的研究(1)_第3页
第3页 / 共14页
分布式计算环境下恶意代码行为检测技术的研究(1)_第4页
第4页 / 共14页
分布式计算环境下恶意代码行为检测技术的研究(1)_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《分布式计算环境下恶意代码行为检测技术的研究(1)》由会员分享,可在线阅读,更多相关《分布式计算环境下恶意代码行为检测技术的研究(1)(14页珍藏版)》请在金锄头文库上搜索。

1、.分布式计算环境下恶意代码行为检测技术研究席丽萍1 杨 龙2河南省保密局1 河南省保密技术检查中心2.摘要 :在分布式计算环境下,为了提高恶意代码行为分析的效率,本文提出了一种基于目标代码内部敏感行为函数覆盖的并行化恶意代码行为分析技术,运用静态分析进行输入点与敏感行为函数的识别与定位,将符号执行与动态执行分析相结合设计了并行化敏感路径搜索算法及敏感行为函数逼近技术,引导遍历目标代码内部敏感行为函数,进行恶意代码行为的并行化测试与分析。实验表明,与采用随机产生测试用例进行直接测试和使用全路径覆盖进行测试相比,该方法可以更加有效地产生测试数据,提高恶意代码行为的分析速度与效率。关键词 :恶意代码

2、并行分析敏感行为函数敏感路径符号执行引言恶意代码经常采用加壳、加密、变形、多态、调试环境检测和特定条件触发等技术来隐藏自己,使得恶意代码的分析检测变得越来越困难。传统的手工分析需要耗费大量时间和人力,因此,高效的自动检测技术成为研究重点。恶意代码检测技术可分为特征码检测与异常行为检测两种方式,特征码检测技术对已知恶意代码识别率较高,但是对未知代码效果不佳,因而,目前更加关注异常行为检测技术。为了解决恶意代码隐藏伪装能力不断增强的问题,不同的研究机构和学者纷纷采用动态符号执1 2的路径状态空间爆炸问题,造成分析速度慢,效率低下 6。随着具有更强计算能力的硬件体系架构,如,分布式多处理器、众核、多

3、核和云计算等的出现,为了进一步提高符号执行的效率,增强软件分析测试的广度和深度,利用分布式平台扩展符号执行技术的并行符号执行技术也逐渐得到了关注和发展。如,Staats 等人提出了基于前置条件集合对符号执行树进行划分的并行符号执行方法 7 ;Moonzoo Kim等人提出了分布式 Concolic 算法 8,选取路径条件时采用深度优先策略并保证测试用例无重复,使用该方法在生成测试用例的速度上比一般的 Concolic技术会成倍数量级增加,因此,可将并行化符号执34和回溯引导5等多种不同行技术应用于恶意代码的检测与分析。的技术来提高分析速度和质量。即便如此,当前分析程序在提取软件行为信息时,仍然

4、存在需要分析恶意代码的危险行为主要通过函数调用来实现,因此,识别那些完成危险行为的敏感行为函数2013 年 9 月 | 增刊 |101行技术(Concolic Testing) 、污点传播分析 、延后策略 、启发式方法第二十三届全国信息保密学术会议(IS2013)论文集就能较容易地发现相应的行为操作。基于此思想,本文提出了一种基于敏感函数覆盖的并行化恶意代码行为分析方法,通过研究敏感函数识别,并行化搜索敏感函数所在的执行路径,进行敏感函数逼近测试,动态引导遍历代码内部敏感函数,提高恶意代码行为分析与发现的速度和效率。基于敏感函数逼近的恶意代码行为分析2.1 输入点与敏感函数识别程序中特定行为的

5、发生包括直接执行和基于条件的触发,前者通过直接运行程序即可得到执行行为信息,无需赘述。基于条件触发的行为只有在特定条件满足时才会执行,受到内存状态、网络数据、日期时间、文件存在性和系统状态等外部输入数据的影响,这些数据在对目标代码进行符号执行分析时表现为相应符号变量的赋值,经过一系列算术和逻辑等运算影响约束条件谓词选择不同路径分支,在程序运行时通过输入函数或交互函数进入程序,控制程序在执行过程中选择不同的执行路径,调用不同的敏感函数,表现出相应的行为。输入点就是代码内部接受输入数据或调用交互函数的位置,也是符号执行的起始点。分析目标程序时,首先对其进行反汇编生成语义等价的汇编代码,然后通过函数

6、识别确定代码的输入点与敏感函数 9。常用的函数识别包括静态库识别和动态库识别,调用的动态库函数信息可通过分析目标文件结构从其导入表中直接得到或经过特殊处理后得到 ;静态库函数则需要识别汇编代码中静态链接的库函数模块,提取函数特征,并基于预先建立的函数特征数据库,采用模式匹配方法来获得函数详细信息。识别的典型的敏感输入函数和敏感行为函数如表 1、表 2 所示。2.2 敏感路径并行化搜索对目标代码进行静态分析,能够获取控制流图(CFG)、函数调用图(CG)及敏感行为函数所在的表敏感输入函数数据源用户输入文件操作网络数据操作环境变量连接函数管道消息示例函数Getchar,Gets,ReadFile,

7、Fread,fgets,WSARecv,recvfrom,Recv,GetEnvironmentStrings,ConnectEx,Connect,TransactNamePile,GetMessage,表恶意代码敏感行为函数102操作对象注册表文件 / 目录内存进程网络其他| 增刊 | 2013 年 9 月行 为打开、创建、删除创建、更改、删除内存读写、API 地址获取打开、创建、隐藏连接网络、远程通信系统操作、加 / 解密示例函数RegsetValueExA,RegCreateKeyEXA,RegDeleteKeyA,CreateFileA,SetFileAttributesA,Remov

8、eDirectoryA,WriteProcessMemory,GetProcAddress,FreeLibrary,OpenProcess,CreateRemoteThread,CreateThread,Socket,Recv,Send,Listen,Closesocket,ExitWindows,GetSystemTime,CryptGenKey,关键代码区域等程序静态信息。为找到同时经过输入点与关键代码区域的路径,可以使用后向搜索和回溯搜索两种搜索策略。后向搜索是从输入点出发,向后搜索所有可到达关键代码区域敏感行为函数的路径 ;回溯搜索则是以敏感行为函数为出发点,向前回溯搜索可到达输入点输

9、入函数的路径。由于后向搜索要分析的路径随着分析深度以指数级增长,而回溯搜索要分析的路径数主要随着目标函数的被调用次数成倍数增长。一般而言,后向搜索的计算复杂度要远大于回溯搜索,因此,这里采用回溯搜索策略。回溯搜索的过程就是基于静态分析得到的基本块、函数调用图(CG)和控制流图(CFG)等信息,从敏感函数所在基本块开始,不断回溯向前搜索前驱基本块,经过输入点一直到达起始点,最终得到所有敏感路径的过程。所谓基本块 B 的前驱基本块P,是指基本块 P 在基本块 B 之前执行,也即基本块 B 的块头地址包含在基本块 P 的某个分支地址中,一个基本块可能没有,也可能有一个或者多个前驱基本块。图 1 描述

10、了在测试节点利用动态符号执行技术进行敏感路径搜索的算法。该算法在中央控制单 元 的 管 理 控 制 下, 在 各 个 测 试 节 点 并 发 执 行,用 于 发 现 同 时 经 过 敏 感 点 与 输 入 点 的 敏 感 路 径,生成用于进一步动态测试需要的路径条件,为下一步进行约束求解,产生测试数据进行敏感行为发现奠定基础。在集中管控节点,为了避免并发冲突,减少重复搜索次数,按照分析过程中从程序入口开始搜索的先后次序为敏感函数排序,并按照该次序为各测试节点分配任务,同时为各个敏感函数添加是否已处理标记。(1)-(2)在各个测试端同时并发执行,在集中管控节点搜索并取得需要在本地测试节点进行处/

11、 功能:从敏感行为函数回溯搜索敏感路径的敏感函数逼近算法/ 输入:符号化程序 Psym/ 输出:敏感路径 PathsParApproachx(Psym) (1) Paths=Null;(2) sens_act_func=searchsenafunc(); / 并行处理(3) if (sens_act_func !=NULL)(4) for (each func_tmp before sens_act_func)(5) (6) if (func_tmp.tag !=1) / 该函数不是敏感函数或是敏感函数但尚未处理过(7) (8) checkfunc(source_func)(9) if (ch

12、eckfunc !=NULL) (10) newPath=path(source_func);(11) Paths=Paths+newPath;(12) (13) (14) else(15) (16) newPath=path(func_tmp);(17) newPath=newPath.attach(func_tmp.Paths);(18) Paths=Paths+newPath;(19) (20) Order_Weight(Paths);/ 遍历敏感行为函数之前的所有函数是否包含输入函数/ 该函数是敏感函数,且其敏感路径已经得到/ 对路径排序(21) (22) return paths;(

13、23) 图敏感路径搜索算法2013 年 9 月 | 增刊 |103第二十三届全国信息保密学术会议(IS2013)论文集理的敏感函数,由子算法 searchsensfunc 实现,用于启动本次测试任务。(3)-(21)是测试节点以分配给本节点的任务敏感函数为出发点回溯搜索包含该敏感函数的敏感路径的过程。其中,(4)表示将遍历该任务敏感函数的所有前驱节点 ;判断语句(6)中的 func_tmp.tag 值为 1 表示以该敏感函数为起点回溯的敏感路径已经发现 (8)中的子算法 checkfunc(source_func) 判断当前任务敏感函数的所有前驱节点中是否包含输入函数,若有,则通过(10)-(11)生成相应的敏感路径 (14)-(19)表示某个前驱节点为敏感函数,且其所在的敏感路径在此之前已经搜索得到,通过(16)从中央处理单元获取已有的这些敏感路径片段,生成从任务敏感函数出发途经该前驱节点的完整敏感路径,同时,集中控制端记录存在多个敏感函数的路径信息,提升其优先级,在分配路径测试任务时

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 管理学资料

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号