广告广告
  加入我的最爱 设为首页 风格修改
首页 首尾
 手机版   订阅   地图  繁体 
您是第 3794 个阅读者
 
发表文章 发表投票 回覆文章
  可列印版   加为IE收藏   收藏主题   上一主题 | 下一主题   
upside 手机 葫芦墩家族
个人头像
个人文章 个人相簿 个人日记 个人地图
特殊贡献奖 社区建设奖 优秀管理员勋章
头衔:反病毒 反诈骗 反虐犬   反病毒 反诈骗 反虐犬  
版主
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片
推文 x0
[资讯教学] 安全基础病毒加壳技术与脱壳杀毒方法
安全基础病毒加壳技术与脱壳杀毒方法

壳是什么?脱壳又是什么?这是很多经常感到迷惑和经常提出的问题,其实这个问题一点也不幼稚。当你想听说脱壳这个名词并试着去了解的时候,说明你已经在各个安全站点很有了一段日子了。下面,我们进入“壳”的世界吧。

一、金蝉脱壳的故事

我先想讲个故事吧。那就是金蝉脱壳。金蝉脱壳属于三十六计中的混战计。金蝉脱壳的本 意是︰寒蝉在蜕变时,本体脱离皮壳而走,只留下蝉蜕还挂在枝头。此计用于军事,是指透过伪装摆脱敌人,撤退或转移,以实现我方的战略目标的谋略。稳住对 方,撤退或转移,决不是惊慌失措,消极逃跑,而是保留形式,抽走内容,稳住对方,使自己脱离险境达到己方战略目标,己方常常可用巧妙分兵转移的机会出击另 一部分敌人。三国时期,诸葛亮六出祁山,北伐中原,但一直未能成功,终于在第六次北伐时,积劳成疾,在五丈原病死于军中。 维遵照诸葛亮的吩咐,在诸葛亮死后,秘不发丧,对外严密封锁消息。他带着灵柩,秘密率部撤退。司马懿派部队跟踪追击蜀军。姜维命工匠仿诸葛亮摸样,雕了一 个木人,羽扇纶巾,稳坐车中。并派杨仪率领部分人马大张旗鼓,向魏军发动进攻。魏军远望蜀军,军容整齐,旗鼓大张,又见诸葛亮稳坐车中,指挥若定,不知蜀 军又耍什么花招,不敢轻举妄动。司马懿一向知道诸葛亮“诡计多端”,又怀疑此次退兵乃是诱敌之计,于是命令部队后撤,观察蜀军动向。姜维趁司马懿退兵的大 好时机,马上指挥主力部队,迅速安全转移,撤回汉中。等司马懿得知诸葛亮已死,再进兵追击,为时已晚。相信这个故事,大家在大型连续剧《三国演义》里已经 看过了。呵呵,只是没有理解得这么深入罢了﹗而在黑客入侵技术中,金蝉脱壳则是指︰删除系统营运日志 攻击者攻破系统后,常删除系统营运日志,隐藏自己的痕迹...呵呵

二、壳,脱壳,加壳

在自然界中,我想大家对壳这东西应该都不会陌生了,由上述故事,我们也可见一斑。自 然界中植物用它来保护种子,动物用它来保护身体等等。同样,在一些计算机软体里也有一段专门负责保护软体不被非法修改或反编译的程式。它们一般都是先于程 序营运,拿到控制权,然后完成它们保护软体的任务。就像动植物的壳一般都是在身体外面一样理所当然(但后来也出现了所谓的“壳中带籽”的壳)。由于这段程 序和自然界的壳在功能上有很多相同的地方,基于命名的规则,大家就把这样的程式称为“壳”了。就像计算机病毒和自然界的病毒一样,其实都是命名上的方法罢 了。 从功能上抽象,软体的壳和自然界中的壳相差无几。无非是保护、隐蔽壳内的东西。而从技术的角度出发,壳是一段执行于原始程式前的代码。原始程式的代码在加 壳的过程中可能被压缩、加密……。当加壳后的文件执行时,壳-这段代码先于原始程式营运,他把压缩、加密后的代码还原成原始程式代码,然后再把执行权交还 给原始代码。 软体的壳分为加密壳、压缩壳、伪装壳、多层壳等类,目的都是为了隐藏程式真正的OEP(入口点,防止被破解)。关于“壳”以及相关软体的发展历史请参阅吴 先生的《一切从“壳”开始》。

(一)壳的概念

作者编好软体后,编译成exe可执行文件。 1.有一些版权讯息需要保护起来,不想让别人随便改动,如作者的姓名,即为了保护软体不被破解,通常都是采用加壳来进行保护。 2.需要把程式搞的小一点,从而方便使用。于是,需要用到一些软体,它们能将exe可执行文件压缩, 3.在黑客界给木马等软体加壳脱壳以躲避杀毒软体。实现上述功能,这些软体称为加壳软体。

(二)加壳软体最常见的加壳软体

ASPACK ,UPX,PEcompact 不常用的加壳软体WWPACK32;PE-PACK ;PETITE NEOLITE

(三)侦测壳和软体所用编写语言的软体

因为脱壳之前要查他的壳的类型。

1.侦测壳的软体fileinfo.exe 简称fi.exe(侦测壳的能力极强)。

2.侦测壳和软体所用编写语言的软体language.exe(两个功能合为一体,很棒),推荐language2000中文版(专门检测加壳类型)。

3.软体常用编写语言Delphi,VisualBasic(VB)---最难破,VisualC(VC)。

(四)脱壳软体

软体加壳是作者写完软体后,为了保护自己的代码或维护软体产权等利益所常用到的手 段。目前有很多加壳工具,当然有盾,自然就有矛,只要我们收集全常用脱壳工具,那就不怕他加壳了。软体脱壳有手动脱和自动脱壳之分,下面我们先介绍自动脱 壳,因为手动脱壳需要运用组合语言,要跟踪断点等,不适合初学人,但我们在后边将稍作介绍。
加壳一般属于软体加密,现下越来越多的软体经过压缩处理,给汉化带来许多不便,软 件汉化爱好者也不得不学习掌握这种技能。现下脱壳一般分手动和自动两种,手动就是用TRW2000、TR、SOFTICE等调试工具对付,对脱壳者有一定 水准要求,涉及到很多组合语言和软体调试方面的知识。而自动就是用专门的脱壳工具来脱,最常用某种压缩软体都有他人写的反压缩工具对应,有些压缩工具自身 能解压,如UPX;有些不提供这功能,如︰ASPACK,就需要UNASPACK对付,好处是简单,缺点是版本更新了就没用了。另外脱壳就是用专门的脱壳 工具来对付,最流行的是PROCDUMP v1.62 ,可对付目前各种压缩软体的压缩档。在这里介绍的是一些通用的方法和工具,希望对大家有帮助。我们知道文件的加密模式,就可以使用不同的工具、不同的方法 进行脱壳。下面是我们常常会碰到的加壳模式及简单的脱壳措施,供大家参考︰ 脱壳的基本原则就是单步跟踪,只能往前,不能往后。脱壳的一般流程是︰查壳->寻找OEP->Dump->修复 找OEP的一般思路如下︰ 先看壳是加密壳还是压缩壳,压缩壳相对来说容易些,一般是没有异常,找到对应的popad后就能到入口,跳到入口的模式一般为。 我们知道文件被一些压缩加壳软体加密,下一步我们就要分析加密软体的名称、版本。因为不同软体甚至不同版本加的壳,脱壳处理的方法都不相同。
常用脱壳工具︰1、文件分析工具(侦测壳的类型)︰Fi,GetTyp, peid,pe-scan, 2、OEP入口查找工具︰SoftICE,TRW,ollydbg,loader,peid 3、dump工具︰IceDump,TRW,PEditor,ProcDump32,LordPE 4、PE文件编辑工具PEditor,ProcDump32,LordPE 5、重建Import Table工具︰ImportREC,ReVirgin 6、ASProtect脱壳专用工具︰Caspr(ASPr V1.1-V1.2有效),Rad(只对ASPr V1.1有效),loader,peid(1)Aspack︰ 用的最多,但只要用UNASPACK或PEDUMP32脱壳就行了 (2)ASProtect+aspack︰次之,国外的软体多用它加壳,脱壳时需要用到SOFTICE+ICEDUMP,需要一定的专业知识,但最新版现 在暂时没有办法。 (3)Upx︰ 可以用UPX本身来脱壳,但要注意版本是否一致,用-D 参数 (4)Armadill︰ 可以用SOFTICE+ICEDUMP脱壳,比较烦 (5)Dbpe︰ 国内比较好的加密软体,新版本暂时不能脱,但可以破解 (6)NeoLite︰ 可以用自己来脱壳 (7)Pcguard︰ 可以用SOFTICE+ICEDUMP+FROGICE来脱壳 (8)Pecompat︰ 用SOFTICE配合PEDUMP32来脱壳,但不要专业知识 (9)Petite︰ 有一部分的老版本可以用PEDUMP32直接脱壳,新版本脱壳时需要用到SOFTICE+ICEDUMP,需要一定的专业知识 (10)WWpack32︰ 和PECOMPACT一样其实有一部分的老版本可以用PEDUMP32直接脱壳,不过有时候资源无法修改,也就无法汉化,所以最好还是用SOFTICE配 合 PEDUMP32脱壳  我们通常都会使用Procdump32这个通用脱壳软体,它是一个强大的脱壳软体,他可以解开绝大部分的加密外壳,还有脚本功能 可以使用脚本轻松解开特定外壳的加密文件。另外很多时候我们要用到exe可执行文件编辑软体ultraedit。我们可以下载它的汉化注册版本,它的注册 机可从网上搜到。ultraedit打开一个中文软体,若加壳,许多汉字不能被认出 ultraedit打开一个中文软体,若未加壳或已经脱壳,许多汉字能被认出 ultraedit可用来检验壳是否脱掉,以后它的用处还很多,请熟练掌握例如,可用它的替换功能替换作者的姓名为你的姓名注意位元组必须相等,两个汉字替 两个,三个替三个,不足处在ultraedit编辑器左边用00补。

常见的壳脱法︰

(一)aspack壳 脱壳可用unaspack或caspr 1.unaspack ,使用方法类似lanuage,傻瓜式软体,营运后选取待脱壳的软体即可. 缺点︰只能脱aspack早些时候版本的壳,不能脱高版本的壳 2.caspr第一种︰待脱壳的软体(如aa.exe)和caspr.exe位于同一目录下,执行windows起始菜单的营运,键入 caspr aa.exe脱壳后的文件为aa.ex_,删掉原来的aa.exe,将aa.ex_改名为aa.exe即可。使用方法类似fi 优点︰可以脱aspack任何版本的壳,脱壳能力极强缺点︰Dos界面。第二种︰将aa.exe的图标拖到caspr.exe的图标上***若已侦测出是 aspack壳,用unaspack脱壳出错,说明是aspack高版本的壳,用caspr脱即可。

(二)upx壳 脱壳可用upx待脱壳的软体(如aa.exe)和upx.exe位于同一目录下,执行windows起始菜单的营运,键入upx -d aa.exe。

(三)PEcompact壳 脱壳用unpecompact 使用方法类似lanuage傻瓜式软体,营运后选取待脱壳的软体即可。

(四)procdump 万能脱壳但不精,一般不要用 使用方法︰营运后,先指定壳的名称,再选定欲脱壳软体,确定即可脱壳后的文件大于原文件由于脱壳软体很成熟,手动脱壳一般用不到。

三、压缩与脱壳

现下脱壳一般分手动和自动两种,手动就是用TRW2000、TR、SOFTICE等 调试工具对付,对脱壳者有一定水准要求。而自动就稍好些,用专门的脱壳工具来脱,最常用某种压缩软体都有他人写的反压缩工具对应,有些压缩工具自身能解 压,如UPX;有些不提供这功能,如︰ASPACK,就需要UNASPACK对付。很多文件使用了一些压缩加壳软体加密过,这就需要对文件进行解压脱壳处 理后,才能汉化。这种压缩与我们平时接触的压缩工具如winzip,winrar等压缩不同,winzip和winrar等压缩后的文件不能直接执行,而 这种 EXE 压缩软体,EXE文件压缩后,仍可以营运。这种压缩工具把文件压缩后,会在文件开头一部分,加了一段解压代码。执行时该文件时,该代码先执行解压还原文 件,不过这些都是在内存中完成的,由于微机速度快,我们基本感觉不出有什么不同。这样的程式很多,如 The bat,Acdsee,Winxfile等等。

要脱壳就应先了解常用压缩工具有哪些,这样知己知彼,如今越来越多的软体商喜欢用 压缩模式发行自己的产品,如The bat﹗用UPX压缩,ACDSEE3.0用ASPACK压缩等。它有以下原素︰一是︰微机性能越来越好,执行过程中解压使人感觉不出来,用户能接受(给 软体加壳,类似WINZIP 的效果,只不过这个加壳压缩之后的文件,可以独立营运,解压过程完全隐蔽,都在内存中完成。解压原理,是加壳工具在文件头里加了一段指令,告诉CPU,怎 么才能解压自己。现下的CPU都很快,所以这个解压过程你看不出什么异常。因为软体一下子就打开了,只有你机器配置非常差,才会感觉到不加壳和加壳后的软 件营运速度的差别。)。 二是︰压缩后软体体积缩小,便于网路传输。三是︰增加破解的难度。首先,加壳软体不同于一般的winzip,winrar等压缩 软体.它是压缩exe可执行文件的,压缩后的文件可以直接营运.而winzip,winrar等压缩软体可压缩任何文件,但压缩后不能直接营运。很多站点 不允许上传可执行文件,而只能上传压缩的文件,一方面处于速度考虑,也是为了安全性考虑。用加壳软体压缩的文件就是体积缩小,别的性质没改变。还是EXE 文件,仍可执行,只是营运过程和以前不一样了。压缩工具把文件压缩后,在文件开头一部分,加了一段解压代码。执行时该文件时,该代码先执行解压还原文件, 不过这些都是在内存中完成的,由于微机速度快,我们基本感觉不出有什么不同。

四、加壳与木马

木马危害无穷,但是随着人们对各种木马知识的了解,杀毒和专杀工具的特殊照顾,使得 很多木马无藏身之地,但很多高手到处卖马,号称不会被查杀。它们究竟是如何躲在我们的系统中的呢? 其实无非对木马进行“加/脱壳”。对于黑客来说,加/脱壳技术被淋漓尽致地应用到了伪装木马客户端上,目的是为了防止被杀毒软体反跟踪查杀和被跟踪调试, 同时也防止算法程式被别人静态分析。最基本的隐藏︰不可见窗体+隐藏文件。木马程式
采用“进程隐藏”技术︰ 第一代进程隐藏技术︰Windows 98的后门 。第二代进程隐藏技术︰进程插入,以及 其后的Hook技术之外就是跟杀毒软体对着干︰反杀毒软体外壳技术了。木马再狡猾,可是一旦被杀毒软体定义了特征码,在营运前就被拦截了。要躲过杀毒软体 的追杀,很多木马就被加了壳,相当于给木马穿了件衣服,这样杀毒软体就认不出来了,但有部分杀毒软体会尝试对常用壳进行脱壳,然后再查杀(小样,别以为穿 上件马夹我就不认识你了)。除了被动的隐藏外,最近还发现了能够主动和杀毒软体对着干的壳,木马在加了这种壳之后,一旦营运,则外壳先得到程式控制权,由 其透过各种手段对系统中安装的杀毒软体进行破坏,最后在确认安全(杀毒软体的保护已被瓦解)后由壳释放包裹在自己“体内”的木马体并执行之。对付这种木马 的方法是使用具有脱壳能力的杀毒软体对系统进行保护。壳能够将文件(比如EXE)包住,然后在文件被营运时,首先由壳获得控制权,然后释放并营运包裹着的 文件体。很多壳能对自己包住的文件体进行加密,这样就可以防止杀毒软体的查杀。比如原先杀毒软体定义的该木马的特征是“12345”,如果发现某文件中含 有这个特征,就认为该文件是木马,而带有加密功能的壳则会对文件体进行加密(如︰原先的特征是“12345”,加密后变成了“54321”,这样杀毒软体 当然不能靠文件特征进行检查了)。脱壳指的就是将文件外边的壳去除,恢复文件没有加壳前的状态。

虽然很多杀毒软体的文件监控都会使程式首次营运时速度很慢。这是因为︰杀毒软体对 压缩加壳的exe文件监控扫描时,都要先“脱壳”。一般压缩加壳程式,可加密压缩可执行文件的代码、数据、输入表、重定位表、资源段。通常压缩后的文件大 小只有原来的50%-70%,但不影响程式的正常使用和所有功能,目的是保护文件不被跟踪分析,反汇编,脱壳等。所以有时候使用某软体给木马脱壳会失败, 但可换个软体试下。脱壳后重新加壳或者使用不同加壳的软体给木马加多层壳,均有可能欺骗杀毒软体,但在经过复杂的多重加壳后,检测出的结果就不一定准确 了,此时就需要“adv.scan”高级扫描, pe-scan会分析出被各种加壳工具加壳的可能性。

五、加壳与病毒

病毒要想生存,除了增加自身的变形能力以外,还可与程式加壳压缩联系起来。我们先来 看看病毒变形的目的,因为现下的反病毒软体,基于特征码检测,增加变形能力,使得特征码检测方法更加困难。那么,如果再和程式加壳技术结合起来,那么将使 的单单透过添加特征码方法解毒彻底失效,解毒时,必须同时更新扫描引擎,而现下并没有通用的解壳方法。因此加壳压缩和变形结合起来,将使得反病毒厂商手忙 脚乱,也使得反病毒软体用户痛苦不堪,频繁的更新,除了特征码,还有扫描引擎。给平常的病毒加个壳,比如用upx,现下通常反病毒软体,对于常用的加密加 壳压缩程式,都有相应的解壳程式。效果并不好,所以如果病毒本是既是一好的变形加密加壳压缩程式,那么,目的是强迫更新扫描引擎,当然也是可以被动态解压 检测出来的,只是增加了解毒的很多工作量。实际上加壳技术不仅仅用于软体保护,也可用于好的病毒。好的病毒不一定要非常快的传播速度,难于检测,难于查杀 更重要一些,就像现下杀毒界的虚拟机技术,也不过是个雏形,有很多的功能并不能完全虚拟化,同时若加壳代码本身可变形,同时有多种加壳算法可供随机选择, 那么就很难找出其中的规律以及关系。总之,好的杀毒软体至少应该具有的技术功能之一就是要具备压缩还原技术︰对Pklite、Diet、Exepack、 Com2exe、Lzexe、Cpav等几百种压缩加壳软体自动还原,彻底解除隐藏较深的病毒,避免病毒死灰复燃。



爸爸 你一路好走
献花 x0 回到顶端 [楼 主] From:台湾和信超媒体宽带网 | Posted:2006-12-21 19:35 |

首页  发表文章 发表投票 回覆文章
Powered by PHPWind v1.3.6
Copyright © 2003-04 PHPWind
Processed in 0.056706 second(s),query:15 Gzip disabled
本站由 瀛睿律师事务所 担任常年法律顾问 | 免责声明 | 本网站已依台湾网站内容分级规定处理 | 连络我们 | 访客留言