科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网网络频道Vista用户内存安全保护之safeseh

Vista用户内存安全保护之safeseh

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

是vista在内存安全保护方面的改进是比较大的,涉及面比较广,而VISTA的研究也是才刚刚开始,每个改进都需要自己慢慢的去分析对比和研究

作者:51CTO.COM 2007年10月18日

关键字:

  • 评论
  • 分享微博
  • 分享邮件

在本页阅读全文(共3页)

  5.vista下的safeseh的安全性

  safeseh是非常强悍的,如果一个进程加载的所有模块都是支持safeseh的image,覆盖seh获得利用就根本不可能。至少VISTA下99%的系统库是支持safeseh的image。而xp sp2 99%的系统库是不支持safeseh的image,因此safeseh虽然是xp sp2就开始使用的技术,但应该算是在vista下才开始发挥作用的技术。

  当然如果进程存在一个不支持safeseh的IMAGE就等于整个safeseh的机制失效,不过由于vista下支持进程空间随机技术,可以深层抵御这种情况下的seh覆盖利用。

  当然一个思路是:是否可以通过覆盖shareuser内存中的随机数字和ntdll的SEH函数表的加密地址使得计算出来的SEH函数表的地址为0饶过safeseh的保护。不过这很困难:因为要达到这个目的除非存在下面的情况:

  情况A. 知道shareuser内存中加密随机数,并能修改SEH加密地址,则需要知道ntdll加载的地址(随每次启动不同),且能通过漏洞获取shareuser内存中加密随机数,通过计算获得为0的加密地址再写入到SEH加密地址中

  情况B. 知道SEH加密地址的数值,并能修改shareuser内存中加密随机数,则需要知道ntdll加载的地址(随每次启动不同),且能通过漏洞获取SEH加密地址的数字,通过计算获得为0的加密KEY,再写入到shareuser内存中

  情况C. 需要知道ntdll加载的地址,并能够改写修改SEH加密地址和shareuser内存中加密随机数。

  以上3种情况都需要特定的复合条件,很难具备。

  6.可能的问题

  依然存在着一些可能的问题。

  第一就是支持safeseh需要.net的编译器支持,且程序所有加载的IMAGE都需要支持safeseh,否则容易导致失效,但依然有大量的第三方程序和库不是使用.net编译的。

  第二就是我使用的.net 2003只对c++的windows应用的默认编译中就支持safeseh安全特性,在.net的应用编译中,对于运行时生成的托管代码,即使打开安全选项也不会支持一些安全特性,不知道.net 2005或者MS是否有最新的支持vista的.net出来。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章