UAC实现原理

2022-09-02  本文已影响0人  calm2012

UAC实现原理:

相关概念:
ntoskrnl.exe: ntoskrnl.exe 是 Windows 操作系统的一个重要内核程序文件,里面存储了大量的二进制内核代码,用于调度系统。
Windows执行体: Windows执行体是ntoskrnl.exe中的上层(内核是其下层)。
对象管理器(Object Manager): 创建、管理和删除Windows执行体对象和抽象数据类型,他们(抽象数据类型)代表了操作系统资源,比如进程、线程和各种同步对象。

环境子系统: 环境子系统是操作系统中名词。环境子系统向应用程序提供环境和应用程序编程接口(Appplication Programming Interface, API)。Windows 2000/XP支持三种环境子系统:Win32、POSIX和OS/2,其中最重要的环境子系统是Win32子系统,其他子系统都要通过Win32子系统接收用户的输入和显示输出。环境子系统的作用是将基本的执行体系统服务的某些子集提供给应用程序。 用户应用程序调用系统服务时必须通过一个或多个子系统动态链接库作为中介才可以完成。
执行体对象: 每个Windows环境子系统总是把操作系统的不同面貌呈现给它的应用程序。执行体对象和对象服务是环境子系统用于构建其自有版本的对象和其他资源的基础。
安全描述符(Security descriptors): 是安全信息的数据结构(SECURITY_DESCRIPTOR),用于可安全(securable)的Windows对象,这些对象可以被唯一名称辨识。安全描述符可用于任何命名对象,包括文件、文件夹、共享、注册表键、进程、线程、命名管道、服务、工作对象以及其他资源。

typedef struct _SECURITY_DESCRIPTOR {  
  UCHAR  Revision;  
  UCHAR  Sbz1;  
  SECURITY_DESCRIPTOR_CONTROL  Control; //其自身的一些控制位  
  PSID  Owner; //Owner安全标识符(Security identifiers) 相当于UUID,标识用户、用户群、计算机帐户  
  PSID  Group; //Group安全标识符(Security identifiers) 相当于UUID  
  PACL  Sacl; //(System Access Control List),其指出了在该对象上的一组存取方式(如,读、写、运行等)的存取控制权限细节的列表。  
  PACL  Dacl; //(Discretionary Access Control List),其指出了允许和拒绝某用户或用户组的存取控制列表。 如果一个对象没有DACL,那么就是说这个对象是任何人都可以拥有完全的访问权限。   
} SECURITY_DESCRIPTOR, *PISECURITY_DESCRIPTOR;  
  
typedef struct _ACL {  
    BYTE  AclRevision;  
    BYTE  Sbz1;  
    WORD   AclSize;  
    WORD   AceCount;  
    WORD   Sbz2;  
} ACL, *PACL;  

安全标识符 (Security Identifier,SID): 是Windows操作系统使用的独一无二的,不变的标识符用于标识用户、用户群、或其他安全主体。
可移植操作系统接口(POSIX): 是IEEE为要在各种UNIX操作系统上运行软件,而定义API的一系列互相关联的标准的总称。
访问控制项( access control entries,ACE):
安全描述符: 包含自主决定的访问控制表(DACL),里面包含有访问控制项(ACE),因此可以允许或拒绝特定用户或用户组的访问。它们还包含一个系统访问控制列表(SACL)以控制对象访问请求的日志(logging)。[2][3]ACE可以显式应用于对象,或者从父对象继承。ACE的顺序在ACL中很重要,拒绝访问的ACE应该比允许访问的ACE更早出现。安全描述符还包含对象所有者。
访问控制列表(access control list,ACL): 访问控制列表(ACL,access-control list)是由一个头和零个或多个访问控制项(ACE, access-control entry)结构组成的。共有两种类型的ACL: DACL和SACL。在DACL中,每一个ACE包含一个SID和一个访问掩码。


上一篇下一篇

猜你喜欢

热点阅读