二、对加壳进行简单改壳让诺顿2008成为近视
很多病毒编写者都采用“加壳”技术将病毒程序隐藏起来。杀毒软件若要成为火眼金睛,需要有较强的脱壳能力。
我们这次适用体验,仅采用了一些简单的加壳技术进行测试,如UPX,ASPACK,NSPACK这样的压缩壳。
重新生成一个鸽子的服务端,随便找了个UPX的压缩工具,这个版本是相当的多,无论什么样子,大同小异,我用下面的这个版本压缩了下,如图7

图7
结果,加壳后的鸽子服务端被杀了,如图8。

图8
不过这点并不能说明一款杀毒软件拥有多么高深的脱壳技术,因为像UPX加工后的“壳”,如果还杀不了,那就太说不过去了。
目前很多木马、病毒编写者为了免杀,不仅采用加壳技术,同时还对其进行变形。下面就来看看诺顿对简单的壳变形查杀的粒度怎么样,壳变形的方法很多,有现成的工具直接变形,我直接用OD手工简单的改一下看看,OD载入,我们会看到这个很熟悉的一端开头反汇编代码:
004C6310 > 60 pushad
004C6311 BE 00F04700 mov esi, 0047F000
004C6316 8DBE 0020F8FF lea edi, dword ptr [esi+FFF82000]
004C631C C787 C4200A00>mov dword ptr [edi+A20C4], 67124118
004C6326 57 push edi
004C6327 83CD FF or ebp, FFFFFFFF
004C632A EB 0E jmp short 004C633A
004C632C 90 nop
004C632D 90 nop
004C632E 90 nop
004C632F 90 nop
004C6330 8A06 mov al, byte ptr [esi]
004C6332 46 inc esi
004C6333 8807 mov byte ptr [edi], al
一般改的时候,看看下面四个NOP
004C632C 90 nop
004C632D 90 nop
004C632E 90 nop
004C632F 90 nop
通常是把JMP,改成几个条件跳转,之后复合在一起就是绝对跳转了,可以达到骗过杀软的目的,我尝试改了一下,没有成功,看来这样的改法太习以为常了,之后我又把代码下移,被杀,移动不甚运行出错,不过向下移动的时候把第一行pushad抛开,虽然运行出错了,但是不被杀了,突然间直接把PUSHAD的机器码60用90替换就OK了应该,替换后如下
004C6310 > 90 nop
004C6311 BE 00F04700 mov esi, 0047F000
004C6316 8DBE 0020F8FF lea edi, dword ptr [esi+FFF82000]
004C631C C787 C4200A00>mov dword ptr [edi+A20C4], 67124118
004C6326 57 push edi
004C6327 83CD FF or ebp, FFFFFFFF
004C632A EB 0E jmp short 004C633A
红色的就是修改的,直接保存。扫描一下。保存为11111111111.exe,扫描结果如图9

图9
我又晕了,直接改掉一个指令,诺顿就不杀了。运行,成功上线。看来对于壳变形诺顿的查杀也不是很强。当然这里没有改其它的,UPX的这么简单改就过去了,其他的可想而知。