主页 PC知识 网管技术 黑客帝国 安全技术 开放系统 程序设计 搜索 技术论坛

 

相关联接
 
RHU本级分类

病毒防治
漏洞公告
基础入门
Windows 系统安全
Linux 系统安全
防火墙
IDS/IPS
数据库及Web安全

 
RHU阅读排行
·浅析进程“伪隐藏”技术与实现两则
·如何配置Win XP SP2的防火墙功能
·微软推“蜜猴”技术 新安全系统护航网络
·Windows Server 2003系统安全技巧集
·仁者见仁:Windows Vista安全性能细评说
·怎样让您的DHCP服务器更安全
·蓝色警报Windows 2000/XP也有陷阱
·安全设置Windows组策略 有效阻止黑客
·用Win 2003 SP1向导功能打造安全服务器
·微软安全问题 源自OS和IE中集成RSS

 
 
RHU最新文章
·微软11月安全更新程序 ISO 映像
·青云原创WIN服务器本地安全组策略
·微软2007年10月安全更新程序ISO镜像下载
·windows 2003系统目前最完善最完美的安全权限方案
·详解有关Windows系统下的权限设置
·关于Windows Internet服务器安全配置
·合理维护网络服务器安全的七个小技巧
·全方位堵住Windows 2003的安全隐患
·系统安全防范之Windows日志与入侵检测
·用WinXP的Regsvr32命令控制系统控件

 
 
RHU相关搜索









 
 
RHU广而告之

 
 
>您的位置:首页 -> 安全技术-> Windows 系统安全
VISTA用户内存安全保护漫谈之safeseh

作者:RHU-TAC编辑员 来自:RHU网络采集 时间:2006-12-7 双击滚屏 收藏本页 字体:


点击 查看RHU2004全年文章


0.前言

最近开始折腾VISTA,上个月在SST的BIOS沙龙SP2上讲过一点自己研究的心得加上收集到的一点资料混合起来的东西。会后几个朋友要资料,说实话,第一是vista在内存安全保护方面的改进是比较大的,涉及面比较广,而VISTA的研究也是才刚刚开始,关于vista的研究资料也是非常的少,每个改进都需要自己慢慢的去分析对比和研究.第二就是vista的安全越来越需要安全环境特别是编译器方面的配合,vista本身的库代码几乎全部是用.net编译器编译的,我使用的.net 2003也缺乏一些vista下支持的安全特性(估计MS有新的针对vista的开发环境),而且以前对.net的研究几乎没有,现在才开始找些.net的书来补习。第三就是目前我的工作也比较繁杂,研究vista的安全保护机制只是因为某一项工作的需要,并非是这项工作的主题,而我这个人又比较懒散,觉得只是分析机制,缺乏新创意的东西懒得动笔写。

但是现在觉得好久没有写点东西出来了,又答应过一些朋友要发布的,想想还是慢慢凑一些东西出来吧,只是关于VISTA的研究是长期的工作,靠一人之力只能有一点研究就写一点吧。所以学当年小四的学习笔记形式写写,因为当然其中错误与偏漏之处难免,只能姑称之漫谈。

1.什么是safeseh

以前堆栈溢出在的WINDOWS系统中一直都是安全问题的核心,其中覆盖seh的技术早为人熟知。safeseh是一项保护和检测和防止堆栈中的seh被覆盖而导致利用的技术

2.safeseh是vista的新技术吗?

safeseh并不是vista的新技术,safeseh是xp sp2就已经引入的技术。但是由于safeseh需要.net的编译器编译的image才支持,而xp sp2系统自身所带的库和执行程序都是非.net的编译器编译的,所以使得safeseh在xp sp2上只能成为聋子的耳朵,xp sp2下,堆栈溢出只要覆盖seh的地址就能轻松饶过所有的保护机制。因此在xp sp2时代,关于safeseh的研究从来不被重视,甚至对他的机理研究都存在很多错误,认为safeseh只是屏蔽了数据段的地址,只要是库函数空间地址就是被许可的,一些safeseh的操作被误解读成函数地址保护的操作。

3.为什么vista下safeseh才开始发威

vista自身带的系统库。程序99%以上是用.net的编译器编译的,.net的编译器默认编译时候就会在IMAGE里产生对safeseh的支持。因此vista下的应用加载的系统库几乎全是带有safeseh支持的IMAGE,堆栈溢出发生时覆盖这些支持safeseh模块的SEH都能被检查出来,使得覆盖堆栈中的SEH地址的技术不再可用。

4.safeseh的实现过程

safeseh本身的原理很简单,就是在编译器生成二进制IMAGE的时候,把所有合法的SEH函数的地址解析出来,在IMAGE里生成一张合法的SEH函数表,用于异常处理时候进行严格的匹配检查。基本过程如下(XP SP2和VISTA一样):

加载过程:

加载IMAGE时,定位和读出合法SEH函数表的地址(如果该IMAGE是不支持safeseh的,则这个SEH函数表的地址为0),使用shareuser内存中的一个随机数加密。

将加密的SEH函数表的加密地址,IMAGE的开始地址,IMAGE的长度,合法SEH函数的个数 作为一条记录放入ntdll的加载模块数据内存中。

异常处理过程:

* 根据堆栈中SEH的地址,确认是否属于一个IMAGE的地址空间。

> 如果属于

读取ntdll的加载模块数据内存对应的“SEH函数表的加密地址,IMAGE的开始地址,IMAGE的长度,合法SEH函数的个数"记录。

读出shareuser内存中的一个随机数,解密SEH函数表的加密地址,读出真实的SEH函数表地址。

* 如果该地址不为0,代表该IMAGE支持safeseh

根据合法SEH函数的个数,依次计算合法合法SEH函数的地址并和当前SEH地址进行比较,如果符合执行SEH函数,如果全不符合则不执行当前SEH指定的地址,跳出不执行。

* 如果该地址为0,代表该IMAGE不支持safeseh,只要该内存属于该IMAGE .code范围内的代码都可以执行。

> 如果不属于

检测该地址的内存特征。一般属于内核空间的未加载用户数据地址可以执行(但是其实等效于无法执行的,这块不可能加载用户数据,可能是MS为了迷惑一些研究者吧,看见代码能跳转到如0xcccccccc地址上,以为能饶过safeseh)。

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出来。

OVER

[1] 页 RedHyphone.Union 投稿邮箱
[特别声明]:
本站文章大多搜索转载自网络中,如果侵犯了您的权利,请告之我们。本站将立即删除。
本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
查看评论】【向上滚屏】【关闭窗口】【 打印
-相关文章
  • 微软 DebugView Dbgv.sys内核模块本地权限升漏洞
  • 安全基础知识 最强0到33600端口详解
  • 病毒注入winlogon 使Windows文件保护失效
  • 微软11月安全更新程序 ISO 映像
  • 注册表编辑器+权限控制,彻底废掉Autorun
  • -文章评论 (关闭)
    ·还没有相关的评论!

    网上大名:
    红旋风网络技术联盟 RHUTech.Union
     
    Copyright © 2000-2007 RedHyphone.Union All Rights Reserved. 红旋风联盟版权所有.皖ICP备05011033号
    中国红旋风网络技术联盟 | www.RedHyphone.net
    Mailto:Redhyphone@gamil.com