Windows访问令牌窃取攻击分析和检测防御
字数 1672 2025-08-06 12:21:05
Windows访问令牌窃取攻击分析与防御指南
一、访问令牌基础概念
1.1 什么是访问令牌
访问令牌(Access Token)是Windows安全系统的核心组件,是进程或线程安全上下文的表示,包含:
- 用户身份信息(SID)
- 用户所属组信息
- 用户权限(Privileges)
- 会话ID
- 其他安全属性
1.2 令牌类型
- 主令牌(Primary Token):与进程关联,代表进程的安全上下文
- 模拟令牌(Impersonation Token):线程使用,临时采用其他用户的安全上下文
1.3 令牌安全级别
- SecurityAnonymous:无法模拟
- SecurityIdentification:可获取身份信息但无法模拟
- SecurityImpersonation:可在本地系统模拟
- SecurityDelegation:可在网络范围内模拟
二、令牌窃取攻击原理
2.1 攻击流程
- 枚举系统进程,查找高权限令牌
- 打开目标进程获取句柄
- 获取目标进程的令牌
- 复制令牌
- 创建新进程并应用窃取的令牌
2.2 关键API函数
OpenProcess():打开目标进程OpenProcessToken():打开进程令牌DuplicateTokenEx():复制令牌CreateProcessWithTokenW():使用窃取的令牌创建新进程ImpersonateLoggedOnUser():模拟用户
三、攻击技术实现
3.1 手动令牌窃取步骤
-
获取系统进程列表:
tasklist /v -
检查进程令牌权限:
whoami /priv -
使用Mimikatz进行令牌窃取:
privilege::debug token::elevate token::list token::revert
3.2 常见攻击工具
- Mimikatz:最著名的凭证和令牌窃取工具
- Cobalt Strike:beacon的
steal_token命令 - Metasploit:
incognito模块 - Rubeus:主要用于Kerberos攻击但也可用于令牌操作
3.3 攻击变种
- 父进程PID欺骗:通过伪造父进程ID获取更高权限
- 令牌模拟:利用
SeImpersonatePrivilege特权 - 令牌克隆:创建令牌的完全副本
- 静默令牌窃取:不创建新进程,直接修改当前线程令牌
四、检测与防御
4.1 检测方法
-
日志监控:
- 4688事件:新进程创建
- 4672事件:特殊权限分配
- 4624事件:账户登录
-
异常行为检测:
- 低权限进程突然访问高权限资源
- 进程令牌权限异常变化
- 同一进程生成不同用户权限的子进程
-
工具检测:
Get-WmiObject -Query "Select * From Win32_Process" | Select-Object Name, ProcessId, CommandLine
4.2 防御措施
-
权限最小化:
- 遵循最小权限原则
- 限制本地管理员账户使用
- 禁用不必要的服务账户特权
-
账户管理:
- 限制域管理员账户登录普通主机
- 使用LAPS管理本地管理员密码
- 及时注销会话和清除令牌
-
系统加固:
# 禁用调试权限 secedit /configure /cfg %windir%\inf\defltbase.inf /db defltbase.sdb /verbose -
组策略配置:
- 启用"审核进程创建"
- 配置"账户:限制本地账户使用空白密码"
-
应用控制:
- 使用AppLocker或WDAC限制应用程序执行
- 阻止已知攻击工具执行
五、应急响应
5.1 可疑活动检查
-
检查异常进程:
Get-Process | Where-Object {$_.SessionId -eq 0 -and $_.ProcessName -ne "System"} -
检查网络连接:
netstat -ano | findstr ESTABLISHED -
检查计划任务:
schtasks /query /fo LIST /v
5.2 响应措施
- 隔离受影响系统
- 重置受影响账户凭证
- 收集取证数据(内存转储、进程列表等)
- 分析攻击路径和时间线
- 实施补救措施并监控
六、高级防护技术
6.1 令牌保护机制
-
受保护用户组(Protected Users):
- 限制使用NTLM和弱加密
- 强制使用Kerberos AES加密
-
Credential Guard:
- 使用虚拟化安全隔离凭证
- 防止内存中凭证窃取
-
Remote Credential Guard:
- 保护远程连接凭证
- 防止传递哈希攻击
6.2 检测规则示例
# Sigma规则示例
title: Suspicious Token Manipulation
description: Detects suspicious token manipulation activities
status: experimental
logsource:
product: windows
service: security
detection:
selection:
EventID: 4688
NewProcessName: '*\cmd.exe'
ParentProcessName: '*\powershell.exe'
condition: selection
level: high
七、总结
令牌窃取攻击是Windows环境中常见的横向移动和权限提升技术,防御需要多层次的安全措施:
- 预防性控制(最小权限、账户管理)
- 检测性控制(日志监控、异常检测)
- 响应性控制(应急响应计划)
- 深度防御(Credential Guard等高级技术)
通过全面了解攻击原理和技术实现,安全团队可以更有效地防御和检测此类攻击。