Windows访问控制

2021-03-11 14:36

阅读:643

标签:cti   定义   oca   安全上下文   author   策略   uri   exp   user   

今天看到一种持久化技术叫做RID Hijacking,之前用mimikatz的时候也看到SID、RID等词,当时不懂它们是什么,现在做一些整理

一、安全标识符SID与访问令牌Access Tokens

https://docs.microsoft.com/en-us/windows/security/identity-protection/access-control/security-identifiers

windows会用唯一的SID标识账户、账户组,此后该账户或账户组所做的操作(比如访问某个文件夹),windows都要去验证其身份,确认它是否有权限操作。本地帐户或组的 SID 由计算机上的本地安全机构(LSA)生成,并与其他帐户信息一起存储在注册表安全区域中。 域帐户或组的 SID 由域安全机构生成,并以用户或组对象的属性的形式存储在 Active Directory 域服务中。

1. SID

技术图片

procexp查看SID:

技术图片

 

注册表查看本地service account SID:

技术图片

 

 

注册表查看本地user account RID:

技术图片

 

 

 Powershell获取部分SID:

# 获取本地账户SID
PS C:\Users\win10> Get-LocalUser | Format-Table Name, SID

Name               SID
----               ---
Administrator      S-1-5-21-2464835639-589224845-1263889796-500
DefaultAccount     S-1-5-21-2464835639-589224845-1263889796-503
DELL               S-1-5-21-2464835639-589224845-1263889796-1000
Guest              S-1-5-21-2464835639-589224845-1263889796-501
WDAGUtilityAccount S-1-5-21-2464835639-589224845-1263889796-504

# 获取本地账户安全组SID
PS C:\Users\win10> Get-LocalGroup | Format-Table Name, SID

# 获取域账户SID
PS C:\Users\Administrator> Get-ADUser -Filter * | Format-Table Name, SID

Name           SID
----           ---
Administrator  S-1-5-21-411020405-2313891870-2612819012-500
Guest          S-1-5-21-411020405-2313891870-2612819012-501
DefaultAccount S-1-5-21-411020405-2313891870-2612819012-503
krbtgt         S-1-5-21-411020405-2313891870-2612819012-502
win10          S-1-5-21-411020405-2313891870-2612819012-1107
win7           S-1-5-21-411020405-2313891870-2612819012-1109

# 获取域账户安全组
PS C:\Users\Administrator> Get-ADGroup  -Filter * | Format-Table Name, SID

 

 

可以注意到,

一般RID 500是Administrator, 501是Guest, 503是DefalutAccount

此外,Windows会预定义一些account和group,如NT AUTHORITY\Local Service S-1-5-19,在这里可以查看常见SID:

https://support.microsoft.com/en-au/help/243330/well-known-security-identifiers-in-windows-operating-systems

https://docs.microsoft.com/en-us/windows/security/identity-protection/access-control/security-identifiers#well-known-sids

 

2. Access Tokens

https://docs.microsoft.com/zh-cn/windows/win32/secauthz/access-tokens?redirectedfrom=MSDN

访问令牌用来描述进程或线程的安全上下文,它包含一组SID和privilege,如进程所属用户SID,用户所属group SID,安全策略分配给用户和用户安全组的用户权限列表(privilege)等。

技术图片

 

有两种访问令牌,主令牌和模拟令牌。 通常将主访问令牌分配给进程,以表示该进程的默认安全信息。 另一方面,模拟令牌通常用于客户端和服务器方案。 模拟令牌使线程能够在与拥有该线程的进程的安全上下文不同的安全上下文中运行。

Procexp在进程属性-security这里显示的,就是部分主令牌信息。

技术图片

 

 

二、安全描述符 Security descriptors

https://docs.microsoft.com/zh-cn/windows/security/identity-protection/access-control/security-principals#%E5%AE%89%E5%85%A8%E6%8F%8F%E8%BF%B0%E7%AC%A6%E5%92%8C%E8%AE%BF%E9%97%AE%E6%8E%A7%E5%88%B6%E5%88%97%E8%A1%A8security-descriptors-and-access-control-lists

上面第一部分介绍的是访问者,安全描述符描述的是被访问资源,官方叫法是安全对象

安全描述符包括安全对象所有者,哪些用户可以访问该对象、以何种方式访问以及审核哪些类型的访问权限。 安全描述符包含对象的访问控制列表(ACL),其中包括应用于该对象的所有安全权限。 对象的安全描述符可以包含两种类型的 Acl:

  • 一个随机访问控制列表(DACL),用于标识允许或拒绝访问的用户和组

  • 系统访问控制列表(SACL),用于控制如何审核访问,也就是用来跟踪记录对安全对象的访问,比如记录某特定用户访问;结合监控工具,可以当该用户进行某些可疑操作时,报告给指定用户。

 

文件夹属性-安全这里,展示的就是其安全描述符。

技术图片 技术图片

 

 

三、Access Control

上面介绍了windows如何描述访问者与被访问资源,那么当某进程想对某个文件夹进行写操作时,windows会将进程中Access Token中的信息与安全对象Security Descriptor的DACL比较,决定允许还是拒绝该操作。

技术图片

 

Windows访问控制

标签:cti   定义   oca   安全上下文   author   策略   uri   exp   user   

原文地址:https://www.cnblogs.com/ring-lcy/p/12636203.html


评论


亲,登录后才可以留言!