Integrity levels (IL) 完整性标签

来源:互联网 发布:数据归档 编辑:程序博客网 时间:2024/06/02 18:56

 

一、原理介绍

Vista 引进一个新的概念 Integrity levels (IL) 完整性标签

 ­

 Integritylevels (IL) 完整性标签 定义的级别如下:

Name

SID

RID

Low Mandatory Level

S-1-16-4096

0x1000

Medium Mandatory Level

S-1-16-8192

0x2000

High Mandatory Level

S-1-16-12288

0x3000

System Mandatory Level

S-1-16-16384

0x4000

 

完整性标签是为了保证不同标签的进程(TOKEN) 和对象(SACL)之间的访问安全 。

 

例如:

 

如果当前进程的TOKEN Low Mandatory Level 它就不能修改具有
Medium Mandatory Level 
的对象 。即使我们对象 的DACL赋予完全读写的权限。

 

当然, 对于不同级别的标签完整性, 我们缺省有如下的策略, 这些策略可以通过

域 的组策略来修改

 

Integrity levelpolicies

No-Write-Up

A Lower IL process cannot modify a higher IL object

No-Read-Up

A lower IL process cannot read from a higher IL object

No-Execute-Up

A lower IL process cannot execute a higher IL object

 

 

 

完整性标签是以何种形式存在? 完整性标签通过 SACL ACE形式存在于每个对象中。

 

当每个进程打开对象, 我们会进行SACL和 DACL检查,这个检查通过 核心态函数

SeAccessCheck . 只有前进程TOKEN的 完整性标签 高于或者等于 对象的完整性标, 我们才会进一步进行 DACL 检查。如果完整性标签验证通不过。 即使DACL给予再高权限都无济于事。

 

二、操作实现

如何判断一个进程的Integrity levels (IL) 完整性标签

步骤1:打开进程的Token

步骤2:获取TokenIntegrity levels

 

以下是返回值

  SECURITY_MANDATORY_UNTRUSTED_RID = $00000000;
  SECURITY_MANDATORY_LOW_RID = $00001000;
  SECURITY_MANDATORY_MEDIUM_RID = $00002000;
  SECURITY_MANDATORY_HIGH_RID = $00003000;
  SECURITY_MANDATORY_SYSTEM_RID = $00004000;

 

原创粉丝点击