数据恢复

首页 数据恢复 数据修复 硬盘维修 数据 硬盘 恢复软件 硬盘数据恢复 恢复 文件 中心
 

McAfee杀毒软件暴高危漏洞分析

  [mcafee的“缓冲区溢出保护”]

  如果处在堆栈里的shellcode调用了getprocaddress等函数,mcafee会中止当前进程并报警。

  [分析原理]

  mcafee对所有进程截获了loadlibrarya、loadlibraryw、getprocaddress等api函数,方法类似api截获:将这些函数的开始几个字节改为call detectapiret,即调用entapi.dll中的某个检测函数(detectapiret),该函数检查调用getprocaddress等函数的父函数是否处于堆或栈内,如果是,报警并退出当前进程;否则回到getprocaddress等函数。

  [绕过方法]

  detectapiret只是简单的将[esp+0x04]的值当做父函数的返回地址,所以只要将其该为一个合法的返回地址就可以了,再伪造一个函数调用环境。

  比如我们要在shellcode里调用getprocaddress,在call detectapiret时正常的堆栈是这样

  ------------

  0x0013aaaa //返回地址

  参数1

  参数2

  ------------

  需要构造这样一个环境

  ------------

  0x7c9231db //ntdll.dll中的地址,内容是0xc3(ret)

  参数1

  参数2

  0x0013aaaa //真实的返回地址

  ------------

  所以,shellcode调用getprocaddress的时候,先push 0x0013aaaa,再push两个参数,最后push 0x7c9231db,然后jmp getprocaddress。

  这里0x0013aaaa显然需要通过计算相对偏移地址来得出。

  ---

  类似以前的blackice溢出,溢出成功的话能以system32权限执行


相关连接:

相关评论:

 

商务服务

中控系统

中控系统论坛

数据修复

中控

硬盘数据恢复

特别推荐

 

推荐广告

 

Copyright ©2003 - 2005 目录大全