![ATT&CK视角下的红蓝对抗实战指南](https://wfqqreader-1252317822.image.myqcloud.com/cover/797/48593797/b_48593797.jpg)
1.2.4 UAC用户登录过程
在整个Windows操作系统资源中会有一个ACL,这个ACL决定了各个不同权限的用户/进程能够访问不同的资源。当一个线程尝试访问某个对象时,当前的系统会先检查该线程所持有的访问令牌以及被访问对象的安全描述符中的DACL规则。如果安全描述符中不存在DACL规则,则当前系统会允许线程直接访问。图1-14所示为整个线程访问对象的流程。
正常来说,在我们使用账号登录操作系统之后会产生令牌,令牌会记载我们所拥有的权限。如果我们以管理员角色权限进行登录,会生成两份访问令牌,标准用户访问令牌和完全管理员访问令牌,如图1-15所示。
![](https://epubservercos.yuewen.com/B7FCFF/28235394807452206/epubprivate/OEBPS/Images/37_01.jpg?sign=1738858853-WxDnm3hRdIQ1oUmq3bN89G4nbaOOZOxt-0-07c77244ad5476637262ddb5c6c675d7)
图1-14 线程访问对象的流程
![](https://epubservercos.yuewen.com/B7FCFF/28235394807452206/epubprivate/OEBPS/Images/37_02.jpg?sign=1738858853-ye8Rmw8z8ixzrB81ZlfvZINF4XzousnZ-0-9e8e2a5630ef32e3a3f8dedeeafc337c)
图1-15 管理员角色权限登录后生成的令牌
当我们登录的是Administrator用户的时候(已开启UAC),想在管理控制台中执行“添加或删除用户”操作,UAC会弹出“安全桌面”。可根据实际情况选择是或否,如图1-16所示。出现这种情况的原因是在访问之前,系统会先检查进程所持有的访问令牌以及被访问对象的安全描述符中的DACL规则,确保携带的令牌及规则正确无误。因为我们携带的访问令牌是权限最低状态下的受保护的管理员访问令牌,所以当进程请求触发了UAC操作的时候,UAC就会弹出通知,询问我们是否允许。单击“是”按钮,其实就向进程发送了我们的管理员访问令牌,使得管理员的状态由“受保护状态”变更为“提升状态”。通过提升状态下的管理员访问令牌即可对计算机执行更改操作。
假设登录的用户是标准用户,Windows会给用户分配一个标准用户访问令牌,如图1-17所示。
要访问某个携带标准用户访问令牌的进程,在进程触发UAC操作的时候会弹出通知,让我们输入管理员密码,如图1-18所示。此时我们并不具备管理员访问令牌,通过输入管理员密码可获取管理员的访问令牌操作。输入管理员密码的过程本质上就是通过管理员凭据为标准用户提权。
![](https://epubservercos.yuewen.com/B7FCFF/28235394807452206/epubprivate/OEBPS/Images/38_01.jpg?sign=1738858853-AZ108eyt3LyO5PDSHON9hati96p31wqz-0-85bb085811da1f5e47f938d6253a8262)
图1-16 UAC弹窗通知
![](https://epubservercos.yuewen.com/B7FCFF/28235394807452206/epubprivate/OEBPS/Images/38_02.jpg?sign=1738858853-1p3TX6rc8iRxmojVVM9UPiLSH7UFhjsP-0-d48f3d5f2215b980d6ddc0709916aec7)
图1-17 普通用户登录令牌生成
![](https://epubservercos.yuewen.com/B7FCFF/28235394807452206/epubprivate/OEBPS/Images/38_03.jpg?sign=1738858853-Kkv0lfPbLczMMa1fTEz2qP67cQNuGGAu-0-0520c93506d2af6c84bbc8fcac5e7725)
图1-18 通过管理员凭据为标准用户提权