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

本文深入探讨了Windows访问令牌窃取技术,特别是在winlogon.exe上模拟SYSTEM访问令牌的方法。通过API如OpenProcess、OpenProcessToken等,攻击者可以在管理员上下文中获取SYSTEM权限。此外,文章还介绍了利用SACL和Windows安全日志进行攻击检测,以及寻找其他可替代winlogon.exe的SYSTEM进程进行令牌操纵。
摘要由CSDN通过智能技术生成

(本文转自安全客)

在本文中,我们介绍了访问令牌窃取的相关概念,以及如何在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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值