当前位置:   article > 正文

将安全信息应用到以下对象时发生错误 拒绝访问_Windows访问令牌窃取攻防技术研究...

将安全信息应用到对象时发生错误

(本文转自安全客)

在本文中,我们介绍了访问令牌窃取的相关概念,以及如何在winlogon.exe上利用该技术从管理员上下文中模拟SYSTEM访问令牌。MITRE ATT&CK将该技术归为Access Token Manipulation(访问令牌操控)类别。

如果本地管理员账户因为某些组策略(Group Policy)设置无法获取某些权限,此时模仿SYSTEM访问令牌是非常有用的一种技术。比如,本地管理员组可能不具备SeDebugPrivilege权限,这样就能加大攻击者转储凭据或者与其他进程内存交互的难度。然而,管理人员无法从SYSTEM账户中撤销相关权限,因为这是操作系统正常运行的基础。因此,在加固环境中,SYSTEM访问令牌对攻击者而言具有非常高的价值。

了解操控访问令牌的概念后,我将介绍如何使用系统访问控制列表(SACL)来审计进程对象,以便检测恶意操控访问令牌的攻击行为。这种检测技术有一个缺点:防御方必须清楚哪些进程是攻击者的目标。

最后,本文探索了还有哪些SYSTEM进程可以替代winlogon.exe,用来实施访问令牌模拟攻击,我也介绍了寻找这些进程的方法以及相关知识点。

0x01 窃取访问令牌

备注:如果大家对访问令牌控制技术比较了解,想深入了解如何寻找其他可用的SYSTEM进程,那么可以直接跳过这一节。

我们可以使用如下Windows API来窃取并滥用访问令牌:OpenProcess()、OpenProcessToken()、ImpersonateLoggedOnUser()、DuplicateTokenEx()以及CreateProcessWithTokenW()。

db25c141a67284202ae48c0b6dfb35bb.png

图. 使用Windows API窃取访问令牌

OpenProcess()以进程标识符(PID)为参数,返回一个进程句柄,打开句柄时必须使用PROCESS_QUERY_INFORMATION、PROCESS_QUERY_LIMITED_INFORMATION或者PROCESS_ALL_ACCESS访问权限,这样OpenProcessToken()才能使用返回的进程句柄。

1220b81151775ffd4650cfb20440903b.png

图. OpenProcess文档

OpenProcessToken()以进程句柄及访问权限标志作为参数,用来打开访问令牌所关联进程的句柄。我们必须使用TOKEN_QUERY以及TOKEN_DUPLICATE访问权限打开令牌句柄,才能与ImpersonateLoggedOnUser()配合使用。我们也可以只使用TOKEN_DUPLICATE访问权限打开令牌句柄,与DuplicateTokenEx()配合使用。

3d3e4c5a7650e8d03f80f9efdc02dfae.png

图. OpenProcessToken文档

利用OpenProcessToken()获取令牌句柄后,我们可以使用ImpersonatedLoggedOnUser(),使当前进程可以模拟已登录的另一个用户。该进程会继续模拟已登录的该用户,直到线程退出或者我们显示调用RevertToSelf()。

8785ca0befe09d01535b4f26f14c070b.png

图. ImpersonateLoggedOnUser文档

如果想以另一个用户身份运行进程,我们必须在OpenProcessToken()返回的令牌句柄上使用DuplicateTokenEx(),创建新的访问令牌。我们必须使用TOKEN_ADJUST_DEFAULT、TOKEN_ADJUST_SESSIONID、TOKEN_QUERY、TOKEN_DUPLICATE以及TOKEN_ASSIGN_PRIMARY访问权限来调用DuplicateTokenEx(),才能与CreateProcessWithTokenW()配合使用。DuplicateTokenEx()创建的访问令牌可以传入CreateProcessWithTokenW(),通过复制的令牌运行目标进程。

0a9dd2dc125d09d809df59c11ffe0f6f.png
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/爱喝兽奶帝天荒/article/detail/744706
推荐阅读
相关标签
  

闽ICP备14008679号