Windows操作系统----安全机制----对象

对象结构

对象是对操作系统中需要保护和集中管理的资源的一种抽象,对象拥有统一的固定头部,保存着抽象出来的信息。此外还有可选头部和对象体。

nt!_OBJECT_HEADER
   +0x000 PointerCount     : Int8B
   +0x008 HandleCount      : Int8B
   +0x008 NextToFree       : Ptr64 Void
   +0x010 Lock             : _EX_PUSH_LOCK
   +0x018 TypeIndex        : UChar
   +0x019 TraceFlags       : UChar
   +0x019 DbgRefTrace      : Pos 0, 1 Bit
   +0x019 DbgTracePermanent : Pos 1, 1 Bit
   +0x01a InfoMask         : UChar
   +0x01b Flags            : UChar
   +0x01b NewObject        : Pos 0, 1 Bit
   +0x01b KernelObject     : Pos 1, 1 Bit
   +0x01b KernelOnlyAccess : Pos 2, 1 Bit
   +0x01b ExclusiveObject  : Pos 3, 1 Bit
   +0x01b PermanentObject  : Pos 4, 1 Bit
   +0x01b DefaultSecurityQuota : Pos 5, 1 Bit
   +0x01b SingleHandleEntry : Pos 6, 1 Bit
   +0x01b DeletedInline    : Pos 7, 1 Bit
   +0x01c Spare            : Uint4B
   +0x020 ObjectCreateInfo : Ptr64 _OBJECT_CREATE_INFORMATION
   +0x020 QuotaBlockCharged : Ptr64 Void
   +0x028 SecurityDescriptor : Ptr64 Void
   +0x030 Body             : _QUAD

 

对象的头部包含着指向安全描述符的指针。

安全描述符

安全描述符保存着作为访问权限检查客体的对象的主要信息。它包含着4个关键成员,根据这4个成员可以嵌入在结构体的尾部,也可以引用自外部缓存位置。根据这个差异可以分为两种不同的结构形式:

kd> dt _SECURITY_DESCRIPTOR
ntdll!_SECURITY_DESCRIPTOR
   +0x000 Revision         : UChar
   +0x001 Sbz1             : UChar
   +0x002 Control          : Uint2B
   +0x008 Owner            : Ptr64 Void
   +0x010 Group            : Ptr64 Void
   +0x018 Sacl             : Ptr64 _ACL
   +0x020 Dacl             : Ptr64 _ACL
kd> dt _SECURITY_DESCRIPTOR_RELATIVE
nt!_SECURITY_DESCRIPTOR_RELATIVE
   +0x000 Revision         : UChar
   +0x001 Sbz1             : UChar
   +0x002 Control          : Uint2B
   +0x004 Owner            : Uint4B
   +0x008 Group            : Uint4B
   +0x00c Sacl             : Uint4B
   +0x010 Dacl             : Uint4B

Owner和Group代表了该安全描述符的属主Sid,Sacl是系统访问控制表(System Access Control List)的简称,里面可以包含当前对象的审计(Audit)、完整性级别(Integrity Level)以及可信赖级别(Trust Level)等信息,与前面提到的Dacl共用同一结构体。

对象目录

只有部分对象拥有名称信息,它们被称为命名对象。命名对象的主要作用是方便对象在不同的进程中共享,它们被按类别编纂成对象目录,因此可以通过在对象目录中的路径信息找到该对象。对象目录的实现如下图所示:

 

对象类型

对象类型是对象中非常重要的信息,Windows将对象的类型信息从同一类对象中抽象出来,保存成一个单独的类型对象。系统中全部的类型对象被集中放置在一个表中,对象通过维护一个指向该表的索引(TypeIndex)来表明当前对象的类型。这个索引值直接保存在对象的头部,而对象体与对象头部直接相邻,如果对象体被损坏,有可能导致头部的索引值被改变,使所谓的类型混淆(Type Confusion)利用成为可能。为了缓解这一问题,Windows 10对该索引值做了特殊保护,如下图所示:

这种保护方式简单而强大,新的索引值由3部分经过异或操作得到:类型对象在类型对象表中的真实索引值,对象头部地址的第二个字节(即第8到第15位),保存在ObHeaderCookie全局变量中的因每次系统启动而异的Cookie字节。其中,ObHeaderCookie的引入,使同一类型的对象在不同机器上,甚至是同一机器上两次启动之间的索引值不同,然而这样并不足以缓解类型混淆利用,我们还可以利用信息泄露(Info Leak)来绕过(Bypass)该保护,因此还引入了对象头部地址,使得在同一时刻、同一系统中的两个相同类型对象的不同实例间的索引值也不相同,从而有效地缓解类型混淆利用。 

欢迎关注我的微博:大雄_RE。专注软件逆向,分享最新的好文章、好工具,追踪行业大佬的研究成果。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
DIY-Page网站构建系统(软着登字2006SR00158)创始于2005年2月,经过长时间的不断开发和持续创新,现已成为业内独树一帜的网站构建系统。她曾囊括国内多项青少年科技创新大奖,被多家知名媒体报道,并为国内主流程序下载站所收录,拥有一批不断成长的忠实用户。 DIY-Page站群系统 8.3 Build 885 主要更新: 采集中心 新增 [新建定向采集] 免规则采集任意网址上的文章 可选择采入自带CMS或DZ/DZX/DZX2/PW/WP/织梦/帝国 采集源 增加 词语级纯原创生成的功能(中文词库data/cnmaker,英文data/enmaker)支持随机生成附件图片(图片库data/makerpic) 采集中心 新建关键词 可选择采入自带CMS或DZ/DZX/DZX2/PW/WP/织梦/帝国 论坛读取模块增加对DZ X2的支持 修正论坛读取模块 内容页 DZX2下读取图片附件的问题 重写域名验证机制,有效解决官网故障对用户网站可能造成的影响 设置中心 采集选项 增加后台采集跳转间隔功能,有效解决空间限制频繁采集 设置中心 采集选项 增加前台自动采集时间间隔功能,有效解决大流量网站自动采集CPU占用 设置中心 采集选项 增加自动采集密码功能,凭密码可以突破采集时段等任何自动采集限制,方便新站刷采集 设置中心 采集选项 增加生成顶踩数、生成评论功能(评论库data/comment.txt),使采集出的文章看起来更真实 设置中心 采集选项 增加插入随机字串的最大次数设置,可以实现随机字串每篇文章只插入1次了 站群管理 子站的几个主要操作 将图片改为文字链接,更易操作 解决CMS列表对象,显示的分类详细简介可能带用HTML代码的问题(比如b标签) 去掉默认标题附加字_diypage.com,默认标题附加字为空了 解决无法编辑子站基本设置的问题(提示子站代号重复) 新建或编辑 普通规则 增加 可选 下一步并测试采集 修正部分用户出现的一直提示“文章与数据库中的重复”的问题 防止英文Yahoo智能文摘采集源采回错误提示页面 细节改进、BUG修补比较多,没有完全列出 环境要求: * 主流的WWW服务器,如Apache、Nginx、IIS等 * PHP 4.3.0 及以上 * MySQL 3.23 及以上 安装说明: * 下载DiY-Page安装包,将upload目录下的内容上传至网站服务器。请勿上传upload目录本身,只上传其中的内容。 * 如非Windows服务器,请设置如下目录/文件的属性为777  * config.php  * up目录本身  * temp目录本身  * data目录本身、目录中的所有文件  * tpl目录本身、其中的子目录、子目录下所有.htm文件 * 在浏览器中访问 http://(您安装程序的网址)/install,运行安装程序,按提示操作即可 * 安装完毕后,建议您删除服务器上的install目录 * 安装完毕后,您可以将后台入口admin.php改名,确保安全

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值