(计算机应用技术专业论文)基于虚拟机的通用自动化脱壳系统.pdf_第1页
(计算机应用技术专业论文)基于虚拟机的通用自动化脱壳系统.pdf_第2页
(计算机应用技术专业论文)基于虚拟机的通用自动化脱壳系统.pdf_第3页
(计算机应用技术专业论文)基于虚拟机的通用自动化脱壳系统.pdf_第4页
(计算机应用技术专业论文)基于虚拟机的通用自动化脱壳系统.pdf_第5页
已阅读5页,还剩76页未读 继续免费阅读

(计算机应用技术专业论文)基于虚拟机的通用自动化脱壳系统.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

j 一、j 1 、 咚 独创性声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工 作及取得的研究成果。据我所知,除了文中特别加以标注和致谢的地 方外,论文中不包含其他人已经发表或撰写过的研究成果,也不包含 为获得电子科技大学或其它教育机构的学位或证书而使用过的材料。 与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明 确的说明并表示谢意。 签名:么墓遗日期:训口年f 月胡 论文使用授权 本学位论文作者完全了解电子科技大学有关保留、使用学位论文 的规定,有权保留并向国家有关部门或机构送交论文的复印件和磁 盘,允许论文被查阅和借阅。本人授权电子科技大学可以将学位论文 的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或 扫描等复制手段保存、汇编学位论文。 ( 保密的学位论文在解密后应遵守此规定) 签名:企三蕴导师签名:盔盏丝 e tg q :) , o o 年,月日 i 一 l 一 冉j n , 一 摘要 摘要 随着信息技术的深入发展,软件作为智力和知识的结晶,其核心技术的保护 显得日益重要。另一方面,层出不穷的恶意代码为延长其生命周期,也不断在寻 求可以制造变种以避免被基于特征码扫描的杀毒软件所查杀的方法。 软件壳是一种保护第三方软件不被逆向分析而且不影响其运行功能的程序。 它完全基于目标程序的二进制码,与被保护的程序的逻辑相分离。因其稳定性强, 且具有压缩功能等特性,软件壳在恶意代码免杀领域应用范围非常广。一种恶意 代码通过加壳往往可以制造出几十甚至上百个变种,安全厂商发布的报告显示现 行恶意代码的加壳率高达9 5 以上。 面对由于加壳而产生的海量变种,除被动地增加病毒库特征码以外,国内外 对脱壳方法也展开了研究。现有的脱壳方法往往只能针对某类壳,通用性差,难 以收集,而且通常需要大量的人工分析才能得出正确的结果,自动化程度低。一 个自动化的通用的脱壳机一方面可以减轻安全分析人员的劳动强度,另一方面也 可以部署到用户端系统,以提高恶意代码的查杀率。 本文设计了一个基于缓冲代码虚拟机的自动化通用脱壳系统。该课题首先对 软件加壳技术做全面的研究和透彻的分析,从中抽象出软件壳的共性,据此提出 解决相应问题的原则方法。其次,根据分析恶意代码需要安全执行环境、脱壳提 出的可控以及仿真程度高以对抗反调试等特殊需求,引入了一种轻量级的指令级 缓冲代码虚拟机。第三,根据所提炼出的脱壳所面临的阻碍,提出相应的解决方 案,并讨论了其技术细节。实验表明,该方案独立于目标程序逻辑,对未知脱壳 效果良好,不需要人工干预。 本文的主要贡献和创新点在于如下工作:将软件壳的行为抽象成:通过代 码混淆变换对抗静态分析;通过p e 结构变换对抗动态分析以及反调试三大类, 为脱壳方案的设计提供依据;( d 提出了通用自动化的脱壳方法。该方法基于虚拟 机技术控制目标执行,通过编译器入口特征查找规则,跨段跳检测查找规则,堆 栈平衡规则及虚拟机扫描等方法来寻找目标在内存中自行解密的状态。相比其他 的方法,该方案更具通用性,对未知壳脱壳效果良好;特别地,首次提出了经 定位、读取和重建i a t 三个步骤自动重构被更改的p e 结构的方法。该方法解决 摘要 了经脱壳后的目标程序不能正常运行,难以被动态调试的问题。 关键字:代码混淆,输入表修复,恶意代码,脱壳,虚拟机 气 一 一 a b s t r a c t a b s t r a c t w i t ht h ef u r t h e rd e v e l o p m e n to fi n f o r m a t i o nt e c h n o l o g y , t h ei n t e l l e c t u a lp r o p e r t y p r o t e c t i o no fs o f t w a r e ,a st h ed i s t i l l a t e o fk n o w l e d g ea n dw i s d o m ,b e c o m e s i n c r e a s i n g l yi m p o r t a n t o nt h eo t h e rs i d e ,m a l w a r e , e m e r g ei ne n d l e s s l y , w h ow a n t st o e x t e n dt h el i f e c y c l eo f h i m s e l f , i ss e e k i n gf o rt h ew a yt op r o d u c tv a r i a t i o nt oa v o i dt h e d e t e c t i o no f s i g n a t u r e - b a s e da n t i v i r u ss o f t w a r e p a c k e ri sap r o g r a mw h oc a nk e e pt h et a r g e ts o f t w a r ea w a yf r o mr e v e r s e a n a l y s i s a i m i n ga t t e n t i o no nt h eb i n a r yc o d e , i ti ss e p a r a t e dw i t ht h el o g i co ft a r g e tw i t ha h i 曲 s t a b i l i t y s oi t sp o p u l a ri na n t i - a n t i v i m sf i e l d o n em a l w a r eu s u a l l y m a c h i n i n g h u n d r e d sv a r i a t i o n b yp a c k i n g h i m s e l f i a c c o r d i n g t ot h e r e p o r t o f s e c u r i t y m a n u f a c t u r e r , t h er a t i oo fm a l w a r ew i t hap a c k e ri su pt o9 5 i nt h i sc a s e ,b e s i d e si n c r e a s i n gt h ev i r u sl i b r a r yp a s s i v e l y , r e s e a r c ho n u n p a c k i n g s t a r t sa tt h es a m et i m e n o w a d a y s ,t h em e t h o dt ou n p a c kc o u l d o n l ya c c e s st h es p e c i f i c o n e u n f o r t u n a t e l y , t og e taa c c u r a t er e s u l t ,i tn e e dm u c hm o r em a n u a li n t e r v e n t i o n a a u t o m a t i c ,g e n e r a lu n p a c k e rc a l l e a s et h ei n t e n s i o no fa n a l y z e ra n da l s oc a nb e i n s t a l l e do nu s e ra g e n tt oh e l pa vs o f t w a r e aa u t o m a t i ca n dg e n e r i cu n p a c k e rb a s e do nv i r t u a lm a c h i n e ( v a g u n p a c k e r ) i s p r e s e n t e di nt h i st h e s i s w eh a v es t u d i e dt h ef o l l o w i n gq u e s t i o n s :f i r s t l y , w ed oa c o m p r e h e n s i v er e s e a r c ht o a b s t r a c t t h ec o m m o nc h a r a c t e r i s t i c o fp a c k e r t h e n , a c c o r d i n gt ot h ea b o v ek n o w l e d g e ,w ep r e s e n tan o v e lw a yt os o l v et h e s eo b s t a c l e s , a n ds h o wi t sd e t a i l s t h e r e i n t o ,w ed e s i g nal i g h tv i r t u a lm a c h i n et om e e tt h es a f e t y a n dc o n t r o lr e q u i r e m e n t s e m p i r i c a lt e s t i n gi n d i c a t e st h a tv a g u n p a c k e rc a nd e a lw i t h b o t hk n o w na n du n k n o w np a c k e ri n d e p e n d e n to fp a c k i n ga l g o r i t h m sa n di t i sf a s t e r t h a ne x i s t i n gu n p a c k e r s v a g u n p a c k e rc a n i m p r o v et h ep e r f o r m a n c ea n de f f e c t i v e n e s s o f u n p a c k i n gs i g n i f i c a n t l y t h i st h e s i sm a k e st h e f o l l o w i n gc o n t r i b u t i o n s :1 s u m m a r i z et h ep r i m a r y b e h a v i o r so fp a c k e ri n t ot h ec o d e o b f u s c a t i o n ,p ef o r m a t sm o d i f i c a t i o na n d a n t i - t e c h n i q u e 2 an e wa u t o m a t i c ,g e n e r i cw a yt od e c r y p tc o d ei nm e m o r yo nt h e b a s i so fs t a c kb a l a n c er o l e ,i n t e r s e c t i o nj u m pr o l ea n dt h ec h a r a c t e r i s t i c so fe n t r a n c e 3 a b s t r a c t f u r t h a t l t l o r e ,f o rt h ef i r s tt i m e , a f t e rl o c a t i n gi m p o r ta d d r e s st a b l e ( i a t ) b ym o n i t o r i n g a l lo ft h ec a l li n s t r u c t i o n s ,af o r e n s i c st r a c i n gt e c h n i q u et or e s t o r et h ei t e m si ni a t , w h i c h & r eu n m a t c h e dw i 廿le x p o r tt a b l ei t e m so fd l l ,i sp r e s e n t e dt oo b t a i na r u n n a b l eb i n a r y k e y w o r d s :c o d eo b f u s c a t i o n , i a tr e p a i r , m a l w a r e ,u n p a c k i n g ,v i r t u a lm a c h i n e l v l 0 第一章 1 1 1 2 1 3 1 4 1 4 4特色创新9 1 5本文的组织结构1 0 第二章加壳技术研究 2 1加壳技术的发展历史及相关定义1 2 2 2加壳技术的行为分析1 3 2 2 1与壳相关的p e 结构及其他相关概念介绍1 4 2 2 2代码混淆17 2 2 3p e 结构变换2 0 2 2 4反调试技术21 2 3加壳技术展望2 2 2 4本章小结2 2 第三章自动化通用脱壳系统概述2 4 3 1需要解决的问题2 4 3 2系统总体框架2 5 第四章外壳检测技术研究2 7 4 1特征码检测技术2 7 4 2其它检测标准2 8 4 3快速的直接逆向脱壳模块2 9 4 4本章小结3 0 第五章指令级缓冲代码虚拟机研究3 1 5 1指令级虚拟机的定义3 1 v 目录 5 1 1虚拟机技术概述3 1 5 1 2脱壳对虚拟机的特殊需求3 2 5 1 3轻量级的指令级缓冲代码虚拟机3 3 5 2指令级缓冲代码虚拟机的架构3 4 5 3虚拟执行流程3 5 5 4容错处理和异常接管3 6 5 5通过命名空间虚拟化实现系统资源隔离3 8 5 6本章小结3 9 第六章代码标准化技术研究 6 1根据编译器入口点查找o e p 4 1 6 2根据跨段跳转查找o e p 4 3 6 3根据堆栈平衡查找o e p 4 5 6 4 监控改写执行指令流进行代码标准化4 6 6 5本章小结4 8 第七章输入表修复技术研究5 0 7 1i a t 的填充5 0 7 2i a t 修复研究5 2 7 1 1修复i a t 的起始点及修复成功的判断标准5 3 7 1 2定位候选i a t 地址项5 3 7 1 3修复i a t 中的无效项5 5 7 3p e 文件重构技术一5 6 7 4本章小结5 7 第八章实验结果分析与总结 5 8 8 1常规数据测试5 8 8 2 恶意数据测试5 9 8 3脱壳的时间消耗6 0 第九章总结和展望。6 2 9 1工作总结6 2 9 2未来展望6 3 一 一 第一章绪论 1 1 课题背景 第一章绪论 计算机病毒、恶意代码对计算机系统产生了巨大的威胁【l 】,计算机技术飞速发 展的同时并未使系统的安全性得到增强。根据国家国家计算机病毒应急处理中心 发布的2 0 0 9 年全国信息网络安全状况暨计算机病毒疫情调查报告及最近发表的各 大安全厂商2 0 0 9 年度病毒疫情及互联网安全报告描述【2 】,病毒的“变种海量化 、 “制造工业化 、“入侵流程化 等特点越发明显。分析2 0 0 7 2 0 0 9 年的安全报告, 每年危害最大,流传最广的病毒家族种类虽然不多,但在感染总量中的百分比非 常高,最主要的原因便是这些病毒家族拥有大量的变种子代。 据瑞星公司截获的病毒统计,i n t c r n e t 上流传的各类恶意程序中,有9 0 以上 的均采用了加壳的方式来抵抗传统特征码扫描的检测,其中导致恶劣影响的“威 金 、“灰鸽子 ,“熊猫烧香”等病毒,几乎都是通过多态变形加壳产生的【3 】。, 安全专家认为,目前全球计算机安全行业面临的最大难题就是“病毒变种 日益 泛滥,现在,“加壳”成了病毒制造者最有力的武器,他们通过这种方式制造海量 的变种病毒。 软件壳是一种可以对第三方软件进行加密或是结构变换而不影响其运行功能 以达到躲避杀毒软件查杀或被恶意逆向分析的软件程序【4 】。加壳操作基于被保护 程的二进制代码,与被保护的程序的逻辑相分离。因而稳定性高,适用度广。壳 除了可以用于软件保护,在恶意代码反检测领域中也有广泛的应用。 目前,特征扫描技术是检测恶意代码中最常用的技术,主要源于模式匹配的 思想【5 】。但是,基于特征的扫描技术主要存在两个方面的问题:它是一种特征 码匹配算法,对于加密、变形或加壳的恶意代码不能很好地处理;它需要用户 不断升级更新检测引擎和病毒特征数据库,不能预警恶意代码入侵,只能做事后 处理,而且存在病毒库不断膨胀的潜在风险。 恶意代码通过加壳隐藏并保护了被加壳程序的原始二迸制代码,从而造成被 保护程序的特征码提取十分困难。显然传统的基于特征码的查杀方式已经不能检 测这种经过多态变形处理的病毒。y a n f a n g 在文献 6 】中以及m i h a ic h r i s t o d o r e s c 等人在文献 7 q h 对基于特征码的病毒检测系统做了加壳送检的测试,结果是令人 电子科技大学硕士学位论文 沮丧的。要保护自己不受加壳变种病毒的侵害,现在更迫切的需要研究加壳技术 的逻辑和实现的机理,这样才能脱掉目标检测程序的壳,实现对加壳恶意代码的 监测和控制,即“脱壳 。 目前的脱壳技术以静态脱壳和动态脱壳为主,并以虚拟机脱壳技术未来发展 的方向。虚拟机给病毒构造一个仿真的环境,欺骗病毒自己脱掉“马甲 。并且, 虚拟执行环境和用户空间相互隔离,病毒在虚拟机的运行不会对用户产生任何不 利影响【8 】。例如如时间驱动的加壳变种病毒,只要虚拟机提供模拟的触发时间点, 则可以对其进行有效检测,而不论它有多复杂的壳【9 】。 由此可见,虚拟机脱壳技术作为一种全新的架构,它通过通用脱壳的方法, 不需要人工干预,可以有效减轻目前安全人工的分析工作量,并且有效保护目标 用户系统安全不受侵犯。 由于编写虚拟机系统需要解决虚拟c p u 、虚拟周边硬件设备、虚拟驱动程序 等多个方面的困难,国内,仅瑞星公司公开宣称拥有虚拟机实现技术。 总体来说,传统的病毒检测方法往往采用的是基于特征码的方式,难以对抗 越发高级的恶意代码多态变形加壳。而传统的基于特征码的病毒检测体系,由于 其检测方法准确率低、效率差等原因,实用性较差,而更新更是依赖于软件开发 厂商的病毒库无限更新机制,难以及时对抗广泛流传和迅速更新的病毒变种,因 此迫切需要研究加壳技术及相应的脱壳方法。 1 2 研究意义 1 2 1 理论意义 在恶意代码检测领域,由于加壳导致的病毒、木马变种等恶意程序的泛滥, 已经成为一个比较严重的问题。为解决变种检测和脱壳的难题,业界和学界对加 壳技术进行了广泛的研究,包括代码混淆技术,入口点混淆技术等。随着p c 应 用的愈加广泛深入,安全威胁也会越来越大,切实做好恶意代码检测研究的基础 性工作提高计算机系统安全性已经成为国家乃至每个个人都很关心的课题。虽然 目前安全界对加壳做了大量研究,但是都不成体系,未对加壳行为作出明确定义 和分类,也未能提出安全通用的脱壳方法。现象的脱壳算法都以大量的人工分析 为基础,难以应对日益工业化运作的病毒制造程序。 虚拟机技术最早已出现p a s c a l p c o d e 【l o 】,现在已经发展至面向对象的虚拟机, 2 第一章绪论 如w m w a r e 1 1 】等。但是在许多专用领域,如脱壳,加密等,传统的小型虚拟机不 能满足安全可靠,执行效率高的要求,而大型的面向对象的虚拟机又存在消耗资 源过多,功能过全但是不专的问题。研究符合通用自动化脱壳系统安全、可控及 仿真程度高等需求的专用虚拟机,对于发展虚拟机理论,丰富安全调试环境有积 极意义。 代码混淆技术【1 2 】从初期的简单异或加密发展到了现代的代码重排序、加入垃 圾指令及等效变换等诸多种类,并具备了在内存中将其还原的功能,以保证被混 淆目标功能不受影响,且不管在硬盘保存阶段或是内存执行阶段都不会以明文方 式出现。目前代码标准化即代码混淆的逆过程主要通过分析加密方法寻找解密算 法,或是通过数学演算得到,实施难度大且效率低下。研究新的代码标准化途径 有利于解决这些问题。 文件重构是脱壳及逆向分析所经常面临的难题。一般的脱壳工具或是人工分 析,由于目标代码的复杂性,或是其作者有意设置的调试障碍,使得脱壳之后的 代码产生缺失,而缺失部分常常正是其精心保护的主要功能区,造成分析人员浪 费大量的时间却得不到应用的结果。其具体的实施技术以i a t 加密及a p i 重定向 为主。研究文件重构方法可以有效保护目标代码的完整性,在脱壳领域和逆向分 析领域意义重大。 1 2 2 应用意义 r a d i c a t i 公司公布的调查报告【1 3 】显示,2 0 0 4 2 0 0 8 的四年间,仅对于欧洲各国 来说,由于病毒所造成的损失就高达8 5 0 亿欧元。根据2 0 0 9 年c n n i c 公布的数 据【1 4 1 ,我国已成为网民人数最多的国家,安全形势十分严峻。特别是大量恶性病 毒变种对我国个人应用和经济社会运行都带来了负面的影响。 根据中国游戏产业年会披露,2 0 0 9 年,我国网络游戏产值达到2 5 6 亿,带动 相关产业5 5 0 亿【l5 1 。而游戏除了本身的策略设计,美工等,持续运营的关键在于 高度的安全性和持续发展必须的公平性。而盗号木马和游戏外挂严重冲击着游戏 产业的健康发展。市场上充斥着大量的木马和外挂变种,令相关公司防不胜防。 这些变种,相当部分就是通过加壳生成的,他们不仅难以被杀毒软件检测,甚至 难以被安全人员手工分析。面对海量的变种,相关分析人员迫切需要新的方法能 够自动化、批量地对目标进行脱壳,而且不影响其目标恶意代码本身功能,以降 低漏查。 3 电子科技大学硕士学位论文 脱壳系统可作为商业杀毒软件的前置插件,在病毒扫描之前进行脱壳作业, 还原变种恶意代码的特征码,以提高查杀率。该项研究可以有效减缓病毒库的高 速膨胀,增加安全工具的用户友好度。 自动化通用脱壳系统不仅能有效辅助恶意二进制程序的细粒度分析,还能够 加强在网络终端用户特征码扫描检测方法的检测能力,减小恶意代码特征库,适 应大量变种的不断涌现。由于我国网民日益增多且结构复杂,近段时间恶意代码 与恶意攻击横行,造成了重大的经济损失。该方法通过孵化成产品为网络安全应 急部门的有力工具和广大终端网络用户安全防护的防御系统。 1 3 国内外现状 由于大量加壳程序的使用,使得恶意代码的生存周期明显延长,而相应的杀 毒软件的漏报率也逐渐攀升。国内外很多学者和安全机构也展开了该领域的防治 研究工作。早期,脱壳都是靠安全分析员人工对其进行分析,逆向其算法,写出 对应的脱壳机【1 6 1 。具体操作包括:首先,通过入口点代码等特征识别目标软件所 加的壳;接着人工分析其代码加密方法和输入表变换方法,获取到解密方法;第 三,解密后,去掉对抗及校验代码,完成脱壳;最后,将壳特征和脱壳方法入库, 待下次匹配成功,直接调用该方法进行脱壳【1 7 】。在对现有技术的研究和实践过程 中,上述脱壳方法只能针对特定的目标进行脱壳。一旦出现壳变种、新壳,即使 是加密代码中一个简单加密的子变换,也会使该方法彻底失效,因此,上述现有 技术中的脱壳方法不具有普遍适用性。而且,人工分析其代码加密方法和输入表 变换方法,使得该方法自动化程度不高,效率低。现有技术中还有其它脱壳方法, 主要是针对脱壳过程中如何解密代码,通过解密可以正确还原二进制代码,去除 对抗、校验代码,便于目前常规的特征码匹配杀毒和静态的逆向分析。但是仅恢 复二进制代码,不对输入表进行修复使脱壳的程序无法再运行。 有关脱壳的技术研究国内外尚处于初级阶段,效果并不显著。涉及代码还原 的技术,主要还是基于如何逆向有关加壳算法的研究,或相应的内存检测研究, 如p l o y u n p a c k e r 墙】和o m i n u n p a c k e r t l 9 】。而如何重建p e 文件的研究尚处于起步阶 段,流行的辅助工具如p e l o a d e r t 2 0 】和r e p a i r p e t 2 l 】都需要大量人工干预而无法实 现自动化。 同时,世界各大反恶意代码厂商也纷纷投入大量的资金进行相关工作的研究, 目前比较流行的方法有硬编码脱壳、虚拟机脱壳和启发式扫描三类【2 矾。硬编码脱 4 壳就是搜集大量加壳程序的特征码,当扫描发现二进制程序是经过加壳处理过的, 就匹配相应的特征码,进而用固定的方法将其脱壳,得到原始的二进制程序。该 方法具有较高的准确率,但同样也面临着漏报等问题。虚拟机脱壳是当前最前沿 的技术,它支持对绝大部分加壳程序的通用脱壳方式,只要加壳程序的基本原理 时一致的。但由于涉及至l j x 8 6c p u 指令集的模拟,p e 装载等问题,所以目前仅有极 少数的安全公司掌握了该技术。启发式扫描方式属于行为检测方式,它能够大致 判定程序是否经过加壳处理,但往往不能准确得判定原始二进制程序的类型,并 且也无法将原始二进制程序解压出来。 总体来说,传统的病毒检测方法往往采用的是基于特征码的方式【2 3 1 ,同时也 难以对抗越发高级的恶意代码多态变形加壳技术瞄l ,因此迫切需要具有高效、可 靠的恶意代码分析平台。而传统的基于特征码的病毒检测体系,由于其检测方法 准确率低、效率差等原因,实用性较差,而更新更是依赖于软件开发厂商的病毒 库无限更新机制,难以及时对抗广泛流传和迅速更新的病毒变种。同时加壳愈演 愈烈,虽然各安全厂商和研究结构也在脱壳方法开展了大量的工作,但是由于加 壳方法非常精巧,而且灵活性高,所以效果并不理想。因而迫切需要寻找到一个 切实可行的脱壳方法。 1 4 本文研究工作及特色创新 1 4 1 研究目标 本文的预期目标在于提供一种基于虚拟机的通用自动化脱壳系统,该方法独 立于目标程序逻辑,通用性强,并且不需要人工干预,自动化程度高。深入研究 现行软件壳的共性特征,对其进行分类总结,以期对软件壳有更深入的认识,并 据此提出相应的脱壳办法。提出一种通用脱壳机的体系结构,并分别讨论其中关 键技术:外壳探测;虚拟机构造;代码标准化及p e 文件重构的细节。该脱壳系 统运行在虚拟机隔离的空间中,不会对用户系统资源造成损害。通用自动化脱壳 机不仅能有效辅助恶意二进制程序的细粒度分析,还能通过选配插件的方式应用 于主机杀毒软件终端用户,辅助杀毒软件提高查杀率,减小恶意代码特征库,以 适应大量变种的不断涌现。 5 电子科技大学硕士学位论文 1 4 2 研究内容 本文致力于研究自动化通用脱壳技术中的若干挑战性问题,核心研究内容主 要包括4 个方面:壳相关技术分类和总结,安全可控的指令级缓冲代码虚拟机, 代码标准化,p e 文件重构。 ( 1 ) 壳相关技术分类和总结 通过分析大量的加壳程序样本,对加壳具体行为进行研究,通过汇总比较, 将其分类,并提取总结壳的共同的抽象行为,为下一步研究通用自动化的脱壳方 法提供依据。 研究加壳工具、目标程序代码以及现有的如p e i d 等壳类别判定工具,实现 一个高效的,比较完善的外壳探测部件,寻找高速,准确的算法进行模式匹配, 以及新颖的循环检测工具来实现对于流行加壳程序以及未知加壳程序的检测分 流,并通过测试验证其有效性,保证后续脱壳流程的实施。不仅如此,为了便于 后续顺利地选择脱壳方式,有必要在这个部分对加壳二进制代码进行分类,以利 于分流脱壳,提高效率。 ( 2 ) 安全可控的指令级缓冲代码虚拟机 通过对加壳行为的分析,需找脱壳方法。该方法需要一个安全、可控的虚拟 机。所谓安全是指,在对目标程序进行脱壳时,如果目标程序包含恶意行为,其 行为不会危害到系统,为实现这个目标,就需要将脱壳作业的系统空间和普通用 户的执行空间相隔离,及系统资源虚拟化技术。可控是指,在脱壳或执行目标程 序的过程中,本系统可以控制目标的执行,查看并可修改寄存器、堆栈、内存值 以获取脱壳所需要的信息和时机。根据安全和可控的要求,本系统不需要一个大 型的对各种硬件都进行虚拟化的虚拟机,只需要一个指令级的缓冲代码虚拟机, 即通过对目标代码的缓冲执行,达到指令级虚拟的效果。区别于w m w a r e 那种硬 件虚拟机,和完整的自含的代码虚拟机,本文的思路是设计出缓冲代码虚拟机 ( b c e ) 。相较于硬件虚拟机,它不必考虑众多的硬件电路响应的虚拟,及采用复 杂的人工智能的算法而是虚拟c p u ,仅构造自己的常用指令集,通过在内存中缓 存指令译码的方式来实现虚拟执行的效果,从而达到拥有控制权并且又不像完全 自含的虚拟机一样执行缓慢。 ( 3 ) 代码标准化 目前,大量的对加壳和脱壳的研究都集中在代码标准化部分。传统的方法以 6 第一章绪论 获取或者逆向分析破解加密算法为主,该类方法实施难度大或是需要大量的人力 及时间,效率低下。较新的方法以语义分析为主,通过语义抽象,对目标代码进 行数学还原,该方法精确度较低。在拥有虚拟机的基础上,研究通用的代码还原 方法,使之可以应对大量的加壳程序,以及能够除去未知加密类型的外壳。通过 研究加壳程序在内存中自我还原的过程,本文提出了一种新的思路,通过入口点 特征查找、跨段跳查找、堆栈平衡查找及虚拟机扫描查找等策略寻找发现目标在 内存中解密的时机,将其读出,从而实现代码标准化。 ( 4 ) p e 文件重构 当前的一些脱壳方法或是脱壳机对部分特定的壳有一定效果。但是大部分时 候,即使对恶意程序脱壳成功,还原了目标代码的特征码,使杀毒软件能正确地 将其识别,但是该目标却无法运行,致使在没有特征码,对其进行首次检测的情 况下,无法正确提取其完整的特征,并且在分析人员要对其进行动态调试时,也 会产生错误。造成这种情况的原因是因为壳书写者在编写壳的过程中,有意对目 标的结构进行变换,如加密i a t 表等,致使脱壳后,仍然无法运行。本文针对这 种情况,研究了i a t 加密技术,a p i 重定向技术,提出了一种定位i a t ,读取i a t 并重建i a t 最后在内存中重构整个p e 文件的方法。通过此流程脱壳的程序,可 以正常运行,可供分析人员动态调试,有利于提取准确的恶意软件的特征码,达 到提高查杀率的目的。 1 4 3 拟解决的关键问题 ( 1 ) 研究未知壳的识别 根据对大量加壳程序的分析,同一种壳,往往入口点具有相同的代码片,称 之为此壳的特征码,可用于外壳探测,此类已经对入口代码片段提取特征的壳, 称作已知壳。而某类壳的升级版本或新的壳种类,在首次被检测到时,特征库中 不存在该类壳的入口特征代码片段,此类壳称为未知壳。 对于未知壳类型来说,本系统没有先验知识即入口特征的代码片段。需要寻 找到一个切实可行的办法对其进行检测。壳识别作为脱壳系统的出入口,有着以 下的要求:1 检测准确率高。2 检测速度快。3 能识别壳升级后的新版本或未 知壳。 ( 2 ) 研究缓冲代码虚拟机接管异常以提高仿真度的方法 根据脱壳系统对虚拟机安全、可控的要求。本文构造的虚拟机通过构造自己 7 电子科技大学硕士学位论文 的虚拟文件系统,网络系统,注册表,内核对象,系统服务,a p i 的导入和调用等,实现 一个安全仿真环境,供虚拟执行。核心部分需要下列仿真:a p i 仿真:功能的a p i 及堆栈平衡的a p i 。调用仿真:提供函数地址,函数名,模块名。s e h 仿真:具 备对抗加壳程序反跟踪能力的功能。句柄仿真:具备对抗加壳程序反调试能力的 功能。 为实现指令级的运行控制,缓冲代码虚拟机需要实现反汇编器以负责机器码 的识别;需要实现对环境仿真包括普通寄存器,段寄存器,标志位寄存器,调试 寄存器等;需要实现寻址系统:对内存寻址方式进行解析,并负责计算出虚拟地 址;并且需要实现指令解释系统以完成相应指令的动作行为。 正如上文所列出的一样,虚拟机需要编写大量的仿真资源,并且要考虑效率 的问题。但是由于不可能做到完全自含,所以系统还需要大量的出错处理流程, 同时,需要对多线程环境,内存换入换出等相关内容进行实现。所以对代码编写 的完整性、可靠性提出了非常高的要求。 ( 3 ) 研究独立于目标逻辑,能识别目标在内存中解密自身后的状态的算法 虚拟机脱壳需要支持对绝大部分加壳程序的通用脱壳。 首先,难点在于其广泛的适用性。加壳程序分别使用了不同的加密或结构改 变方法,类似一把钥匙能开一把锁,现有的大部分脱壳机都是通过识别出特定类 别的壳,再针对性地调用其脱壳算法。本文需要寻找到一把“万能钥匙”。 其次,难点在于自动化。在脱壳或者编写脱壳机代码的过程中,需要经验非 常丰富的安全分析人员用大量的时间进行逆向和相关算法的破解工作,即需要大 量的人工干预过程。区别于其他的第三方调试器、脱壳辅助工具或者脱壳机,本 文需要寻找智能程度高,能自动化识别和工作的脱壳方法。 ( 4 ) 研究自动化的定位i a t 、修复i a t 的算法 要使得从内存中映像出来的脱壳后的临时文件保存到磁盘之后可以正常执 行,数据修复功能必不可少。因为众多的加壳代码都对i a t ,p e 头等重要的数据 结构进行了等效变换,或者隐藏。同时壳通常还添加了自校验代码,防止对加壳 目标进行再改写,所以脱壳之后,还原本身的数据结构和去除计算校验都是数据 修复的重要工作。 为保证系统能正确识别并支持加壳后的程序运行,壳为了保证自身的健壮性, 通常将数据结构变化的重点放在i a t 加密上。所以修复数据结构的关键在于修复 i a t 。但是壳在处理目标二进制文件时,对i a t 加密方式多种多样,调用序列错 综复杂,追踪困难。所以需要一个完全可控的执行环境以供分析,本文重点研究 8 一 一 第一章绪论 了基于虚拟机的i a t 修复方法。 1 4 4 特色创新 本文的围绕壳是如何工作,怎样进行脱壳这个问题展开。概括而言,创新之 处包括3 个方面: ( 1 ) 全面分析并对壳的行为进行了分类总结。 对加壳技术而言,有大量研究集中在寻找新的速度更快,可靠性更高,压缩 或加密强度更大的算法,介绍p e 结构中新的突破口或是反调试技术上。壳种类 多样,其中不乏方法巧妙者。但是大量的文章只是简单罗列或是介绍一种更底层, 更复杂的方法,未见对其的总结归类,致使壳至今未有一个准确的定义。加壳技 术过多且杂,造成安全人员对加壳算法不了解,不熟悉,也是难以寻找到通用自 动化脱壳方法的重要原因。 本文全面分析了i n t e m e t 上流行的加壳技术,将其行为分别归入通过代码混 淆变换对抗静态分析,通过p e 结构变换对抗动态分析和反调试三大类。以此分 别提出相应的解决方法,以实现脱壳。 ( 2 ) 首次提出通用自动化的脱壳方法。 根据本文所总结的壳的三类行为,首次提出了一种基于虚拟机的通用的自动 化的脱壳方法。该方法通过虚拟机控制目标执行,拥有较高智能的判定算法,寻 找目标在内存中自行解密的状态,以标准化经过混淆变换后的代码。 首先,该方法采用了一种安全、可控可真实模拟目标运行环境并且快速、高 效的缓冲代码虚拟机。该虚拟机拥有自己的指令系统,并且做到了s e h 和句柄仿 真,可以有效对抗加壳程序的反跟踪,反调试。同时该虚拟执行系统具有很高的 性能,允许选择性隔离代码执行。恶意程序的所有行为都被局限在安全虚拟执行 环境中,同时无须商业虚拟机的庞大开销。提供强大的系统仿真性能,监控运行 中的目标二进制代码系统行为。不仅支持对常规二进制程序的有效分析,同时在 结合隐蔽调试引擎技术后,将能有力的支持对各种反追踪分析的恶意程序进行深 入而可靠的执行监控与分析。而且因为是在虚拟的环境中,也不会有安全问题, 这也更体现了虚拟机的优势所在。 同时,通过编译器入口特征查找规则,跨段跳检测查找规则,堆栈平衡规则 及虚拟机扫描方法相结合来对混淆代码进行标准化。相比其他的脱壳方法,通用 的基于虚拟机的自动化脱壳支持各类加壳程序,包括压缩壳和加密壳,具更强的 9 电子科技大学硕士学位论文 能力,适应范围更广,通用自动化脱壳引擎不仅能有效辅助恶意二进制程序的细 粒度分析,还能够加强在网络终端用户特征码扫描检测方法的检测能力,减小恶 意代码特征库,适应大量变种的不断涌现。 ( 3 ) 首次提出了自动化的修复i a t ,重构p e 的方法。 介绍了p e 文件输入函数的填充过程,对i a t 加密和a p i 重定位进行了研究, 提出了通过虚拟机跟踪执行来定位、读取和重建i a t 进而重构p e 结构,以还原 被更改的p e 结构的方法。 该方法自动化程度高,不需要人工干预,由于虚拟机的支持,精确度也较高, 能够正确识别并修复i a t ,进而重构p e 文件。经脱壳重构的目标程序可以正常运 行,也可以被动态调试,实现了完全脱壳。 1 5 本文的组织结构 全文共分为六章,对基于物理的真实感流体动画模拟进行了详细的分析和研 究。具体的章节内容组织如下: 第一章:全文的绪论。主要介绍了课题背景,基于虚拟机的自动化通用脱壳 方法的学术意义和应用前景,国内外相关工作的研究现状,以及本文的研究目标、 内容和组织结构。 第二章:加壳技术分析。首先对壳技术的起源、发展进行了介绍,其次通过 分析现今流行的大量的加壳技术,对其行为进行了总结( 即代码混淆变换,p e 结 构变换和反调试三大类) ,以便分别提出相应的解决办法。最后对壳技术的发展趋 势进行了展望。 第三章:自动化通用脱壳系统概述。本章首先介绍了该系统需要解决的问题 即目标,然后对脱壳的时序进行了说明,并给出了系统架构图,便于后文具体展 开。 第四章:外壳检测算法设计。包含了通过特征码检测壳类型和其他的检测方 法,可供检测未知壳。同时实现了一个简单的快速直接逆向脱壳方法应对低复杂 度的壳以提高效率。 第五章:指令级缓冲代码虚拟机的设计与实现。描述了指令级缓冲代码虚拟 机的定义,设计了一种安全、可控的轻量级的虚拟机,并给出了框架结构图和关 键问题的解决方案。 第六章:代码标准化算法设计。对代码混淆及入口点混淆技术进行了介绍, 1 0 第一章绪论 并提出了根据入口点特征查找、跨段跳转查找、堆栈平衡查找、虚拟机扫描查找 等o e p 查找方式以标准化经混淆后的代码。 第七章:输入表修复技术研究与实现。研究了壳对i a t 的处理流程和系统对 i a t 的装载流程,根据i a t 加密技术和a p i 重定向技术,提出了定位、提取并修 复i a t 以重构p e 文件的新方法,使得经过代码标准化处理后的目标程序能够正 常运行并被动态分析。 第八章:实验结果分析与总结。用大量样本对该脱壳系统进行性能和功能测 试,并与其他脱壳机相比较,分析结果。 第九章:总结和展望。对全文做出系统全面的总结,并对今后需要进行深入 研究的方向进行了展望。 电子科技大学硕士学位论文 第二章加壳技术分析 2 1加壳技术的发展历史及相关定义 自然界中,植物用“壳 来保护种子,动物用它来保护身体。同样,在一些 计算机软件里也有一段附着在目标程序之上,专门负责保护软件不被非法修改或 反编译的程序。它们一般都是先于程序运行,拿到控制权,然后完成它们保护软 件的任务。由于这种程序和自然界的壳在功能上有很多相同的地方,就像计算机 病毒和自然界的病毒一样,基于命名的规则,大家就把这样的程序称为“壳”了。 加壳被广泛运用于软件保护和恶意代码反检测领域。 鬻湖 、 爹爹溪。罐! 薯溺 、 1 、 瓯之解鹰翻黔荔。努,毫魏瀚 、 、 眵原始程谚携 醚,彰:蓐l :翻 黔渗彤:雾鹨 劳蓐始锝蹶驾 ?一r 嗍 涮 lg 螽自编i ;磊磊。魏。撼麓 原始程序压缩壳 麓嚣“j 磁霉鬻 影鳓霹湖 黔赢始噼霭 麟磋鳝移谚缓熟灞 瞻蟹嚣伽觏凑 隧7 谬,:气:毫霭 除。廖羚伐黔霭 矧 麟糊 誊,:_7 :一。镌 蓬磊磊范1 赫焉毅墓磊搿蓊 保护壳强壳 图2 1 概念壳示例 上图展示了概念上的壳,三个程序分别是三个加壳后的程序,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论