Windows 权限提升实战:令牌窃取、UAC 绕过、服务劫持

Windows 权限提升实战:令牌窃取、UAC 绕过、服务劫持
文章目录写在前面一、先建立正确的权限模型1.1 账户、特权、完整性三层不要混1.2 快速勘察命令授权环境1.3 提权分类地图二、令牌窃取与令牌模拟2.1 令牌是什么2.2 为什么“模拟”会变成提权2.3 关键条件测试前先核对2.4 从侦察到验证的安全做法1确认特权2确认身份类型3在实验环境理解“管道假冒”2.5 令牌盗窃的另一条线从高权进程“借”令牌2.6 检测点蓝队2.7 加固项三、UAC 绕过实战原理、边界、防御3.1 再次明确UAC 不是安全边界3.2 过滤令牌与自动提升3.3 实战评估步骤授权3.4 常见绕过类别概念级1DLL 劫持 / 旁加载配合高权或自动提升宿主2COM 提升接口滥用3环境变量与 Shell 协议类4“用户同意”社会工程3.5 检测点3.6 加固项比追 bypass 名单更重要四、服务劫持最稳、最常见的配置型提权4.1 为什么服务值得盯4.2 服务提权的主要子类1服务二进制可写Weak Service Binary Permissions2未加引号的服务路径Unquoted Service Path3服务配置可写Writable Service Control4DLL 劫持 / 服务旁加载5与计划任务、驱动、服务恢复命令联动4.3 授权测试中的枚举方法不提供利用载荷查看服务与路径检查未加引号路径思路检查 ACL思路4.4 一个典型攻击链叙述4.5 检测点4.6 加固项可直接进基线五、三条线如何在实战中串联5.1 常见杀伤链组合5.2 红队授权报告应怎么写才专业六、实验环境设计建议七、综合加固清单可打印7.1 账户与 UAC7.2 令牌与高权进程7.3 服务与任务7.4 执行控制与 EDR7.5 运营八、应急怀疑已被提权时做什么九、结语写在前面Windows 提权不是“找到一个 CVE 然后一键 SYSTEM”这么浪漫。真实渗透与红队评估里更常见的路径是先拿到一个普通用户或**本地管理员未提升**会话再在系统配置失误、服务权限过宽、令牌滥用、UAC 机制边界上完成提权最后才是内核漏洞或 0day。本文聚焦三条在实战中出现频率极高、也最值得防守方吃透的路径令牌窃取 / 令牌模拟Token ImpersonationUAC 绕过UAC Bypass服务劫持服务权限、可执行路径、DLL、计划任务相关一、先建立正确的权限模型1.1 账户、特权、完整性三层不要混很多人把“我是 Administrators 组成员”直接等同于“我是 SYSTEM”。在现代 Windows 上这不成立。至少分清三层层次含义典型表现身份Account你是谁DOMAIN\alice/ 本地用户特权Privileges令牌里打开了哪些特权SeDebugPrivilege、SeImpersonatePrivilege完整性IntegrityMIC 完整性级别Medium / High / System因此会出现这些“看起来矛盾”的现象你是本地管理员但当前进程只有Medium IL写不了C:\Windows这是 UAC 过滤令牌。你是普通用户但服务给了你SeImpersonatePrivilege仍可能走向 SYSTEM。你拿到了 High IL 管理员也还不等于 SYSTEM——还差服务会话、SYSTEM 令牌或等价特权。提权分析的第一件事不是搜 EXP而是问我现在的令牌里到底有什么缺什么目标要什么1.2 快速勘察命令授权环境whoami whoami /groups whoami /priv whoami /all net user %username% net localgroup administratorsPowerShell信息收集[System.Security.Principal.WindowsIdentity]::GetCurrent()|Select-Name,IsSystem,ImpersonationLevelGet-LocalGroupMember-GroupAdministrators重点看是否含Mandatory Label\High Mandatory Level是否有SeImpersonatePrivilege/SeAssignPrimaryTokenPrivilege/SeDebugPrivilege是否在Administrators但处于过滤管理员令牌状态1.3 提权分类地图┌─ 配置型服务路径/权限、计划任务、注册表 Run、弱 ACL 未提升访问 ─────────┼─ 机制型UAC 边界、令牌模拟、管道假冒 └─ 漏洞型驱动/内核/服务逻辑漏洞本文不展开利用细节令牌窃取偏机制型UAC 绕过偏机制边界服务劫持偏配置型。防守时三者要分开治测试时三者常串联。二、令牌窃取与令牌模拟2.1 令牌是什么访问令牌Access Token是 Windows 安全引用监视器判断“能否访问对象、能否执行特权操作”的核心结构。它大致包含用户 SID、组 SID特权列表及其启用状态默认 DACL、完整性级别受限标记、会话 ID、模拟级别等进程启动时通常携带主令牌Primary Token线程可以临时切换为模拟令牌Impersonation Token以便服务“以客户端身份”访问资源——这是合法设计也是滥用点。2.2 为什么“模拟”会变成提权经典滥用链攻击者控制一个拥有SeImpersonatePrivilege的进程许多服务账户默认具备。诱使或等待一个更高权限客户端连接到攻击者可控的命名管道 / RPC / ALPC 等接口。服务端调用模拟 API使当前线程获得客户端令牌。若客户端是 SYSTEM 或高权账户攻击者便可以该令牌创建进程或访问受保护资源。这就是社区常说的Potato 家族各种Potato问题域的本质不是“魔法提权”而是“有模拟特权的服务账户 能骗到 SYSTEM 来连我”。2.3 关键条件测试前先核对令牌模拟提权通常需要当前上下文具备SeImpersonatePrivilege或SeAssignPrimaryTokenPrivilege或能注入/控制已有该特权的进程或能写服务/计划任务使恶意代码以服务账户运行。另外还要满足有可用的“触发高权回连”原语打印假冒、RPC、特定系统行为等随补丁变化目标系统版本与缓解措施未完全堵死该路径。没有模拟特权、又不是管理员就先别在 Potato 上死磕——去查服务 ACL、无人值守安装、凭据落地、内核漏洞面。2.4 从侦察到验证的安全做法1确认特权whoami /priv若看到SeImpersonatePrivilege为 Enabled/Disabled可启用记录下来。Disabled 不等于没有很多情况下可AdjustTokenPrivileges启用。2确认身份类型服务账户、IIS 应用池、SQL Agent、CI 跑库账户是高发人群。WebShell 落到应用池身份时应第一时间查 priv而不是先找内核 EXP。3在实验环境理解“管道假冒”原理课可以用微软文档与公开安全研究说明命名管道安全描述符过宽服务模拟客户端未正确校验客户端身份就抬权。授权测试中使用商业/开源评估工具前应明确规则允许先在同版本靶机验证记录 Event Log 与 EDR 告警供蓝队调规则。本文不附带利用实现。2.5 令牌盗窃的另一条线从高权进程“借”令牌当攻击者已经是本地管理员高完整性目标是 SYSTEM 或域管会话时常见思路是启用SeDebugPrivilege打开目标高权进程复制其令牌以该令牌创建新进程。这更接近“权限跃迁 / 凭证与会话滥用”而不是从零打到管理员。防守上要关注调试特权谁有、敏感进程保护PPL、Credential Guard、管理员席位是否过多。2.6 检测点蓝队重点信号信号为何可疑非服务主机进程突然创建命名管道并等待连接假冒准备SeImpersonatePrivilege账户拉起异常子进程模拟后落地打印后台 / RPC / 异常 SYSTEM 进程链Potato 类链路普通用户进程打开 lsass / winlogon 等令牌或凭据操作短时间内特权启用Privilege Use 审计提权准备日志与控制开启特权使用审计至少敏感特权成功。开启进程创建审计或 Sysmon记录父进程、命令行、完整性。对 Web 目录、服务账户可写路径做 FIM。2.7 加固项最小化服务账户特权能去掉 Impersonate 就去掉不能去掉则隔离。Web / CI / 代理账户禁止本地交互登录可写路径与命令解释器严格限制。及时打补丁打印后台、RPC、Win32k 等相关修复会改变利用条件。开启LSA Protection / Credential Guard兼容性评估后。用 WDAC/AppLocker 限制谁能创建可疑二进制。对Potato 历史手法做 ASR 与行为规则覆盖父进程链、管道SYSTEM 子进程。三、UAC 绕过实战原理、边界、防御3.1 再次明确UAC 不是安全边界微软长期观点是UAC 主要用于减少意外的系统级更改缓解部分恶意软件轻易获得高权不是对抗已获本地管理员资格攻击者的坚固安全边界。但在企业里UAC 仍然极有价值多数用户不应是管理员即便是管理员日常也跑在过滤令牌下很多木马、盗号器、劣质安装器会撞在 UAC 提示上。“UAC 绕过”讨论的是已是管理员组成员但当前进程是 Medium IL如何在无提示或弱提示下获得 High IL。若当前用户根本不是管理员谈 UAC 绕过没有意义——那是真提权不是 bypass。3.2 过滤令牌与自动提升管理员登录后系统创建完整管理员令牌高完整性过滤令牌中完整性去掉大部分管理特权日常资源管理器等使用过滤令牌。某些微软签名、声明了自动提升auto-elevate的二进制可在特定条件下直接抬到高完整性——这是兼容性设计也是绕过研究的主矿场。攻击者研究的典型方向包括滥用auto-elevate程序的配置/插件加载逻辑利用受信任目录 未加引号路径 / DLL 搜索顺序利用环境变量、注册表、COM 提升接口等让高权进程加载攻击者可控代码在未启用安全桌面时进行 UI 欺骗较老/较弱环境。随着 Windows 10/11 不断修复具体技巧名单在快速腐烂。防守应抓类别而不是背某一个 EXP 名字。3.3 实战评估步骤授权步骤 1确认是否值得做 UAC bypasswhoami /groups | findstr /i Administrators Mandatory不在 Administrators → 去做真提权。已是 High IL → UAC 已过转向持久化/凭据/横向。在 Administrators 且 Medium → 才进入 bypass 评估。步骤 2看 UAC 策略强度检查是否管理员批准模式开启提示在安全桌面“仅提升签名且验证的可执行文件”等策略策略越强可滥用面越小但不会变成零。步骤 3看应用兼容与企业软件大量第三方“带提权的更新器”、错误配置的安装服务比时髦 bypass 更好用。授权测试应包含软件清单、自动更新组件、企业运维脚本是否常驻高权。步骤 4在靶机验证检测能力即使不演示具体利用也应验证蓝队能否看到中完整性进程启动自动提升系统组件紧接着高完整性进程加载用户目录 DLL异常父进程关系如办公进程 → 系统管理工具 → cmd3.4 常见绕过类别概念级1DLL 劫持 / 旁加载配合高权或自动提升宿主高权进程到不安全目录搜索 DLL或对已知 DLL 名进行旁加载。条件通常包括可写搜索路径、缺 DLL、已知加载名。2COM 提升接口滥用部分 COM 对象以自动提升运行若接口存在不安全方法执行回调、写文件、启进程且未充分校验就会成为桥梁。3环境变量与 Shell 协议类通过污染特定环境变量或协议处理程序影响提升后进程的行为。随着修复很多已失效但同类设计错误仍可能出现在第三方软件。4“用户同意”社会工程严格说不算技术 bypass但实战成功率最高伪造更新、伪造驱动安装、仿冒安全桌面。安全意识与 Soft Approbation 策略同样是基线。3.5 检测点检测思路说明父进程链异常Medium 进程拉起 auto-elevate 系统程序后立刻出高权 shell模块加载路径高权进程从用户可写目录加载 DLL命令行fodhelper、eventvwr、computerdefaults等经典宿主 异常注册表/参数名单需随版本更新注册表敏感键瞬时写入提升相关键值被非安装程序写入UAC 设置被改策略/注册表关闭提示或关闭管理员批准模式Sysmon 建议关注Event 1 进程创建完整性、哈希、父进程Event 7 镜像加载Signedfalse 且路径可疑Event 13 注册表值更改3.6 加固项比追 bypass 名单更重要大多数人不要进本地管理员组——从根上取消 bypass 前提。UAC启用管理员批准模式、安全桌面提示禁止“从不通知”。用WDAC限制可执行与可加载 DLL。开启ASR例如阻止 Office 创建子进程、阻止混淆脚本等。对自动提升相关注册表项做监控。运维安装走 SCCM/Intune 系统上下文而不是给每人管理员 关 UAC。及时更新 Windows很多公开 bypass 会随月度补丁失效。一句话给管理层防 UAC 绕过的最高优先级不是买“反 bypass 产品”而是收回本地管理员权限。四、服务劫持最稳、最常见的配置型提权4.1 为什么服务值得盯Windows 服务默认以SYSTEM或高权服务账户运行。只要攻击者能改服务映像路径或替换服务 EXE/DLL或在服务启动时让其加载恶意库或利用服务修复/恢复命令执行任意程序就可能直接拿到 SYSTEM。这类问题在老旧工业软件、自制服务、错误安装包里极其常见且不依赖 0day。4.2 服务提权的主要子类1服务二进制可写Weak Service Binary Permissions服务指向的 EXE其 NTFS ACL 对普通用户可写/可改。攻击者替换文件后等待服务重启或触发重启即可 SYSTEM 执行。侦察思路枚举服务及其binPath检查路径 ACL 与文件 ACL关注非System32的第三方路径2未加引号的服务路径Unquoted Service Path例如C:\Program Files\Something\service.exe若注册时没有正确加引号系统可能按规则尝试C:\Program.exe C:\Program Files\Something\service.exe ...若攻击者对靠前的候选路径可写即可植入同名 EXE。这是经典配置失误自动化审计工具几乎必扫。3服务配置可写Writable Service Control通过服务控制管理器权限过宽普通用户能ChangeConfig直接改binPath为任意命令再启动服务。这比改文件还直接。4DLL 劫持 / 服务旁加载服务进程启动时加载同一目录或搜索路径中的 DLL目录可写则中招。尤其“从 ProgramData、用户目录、临时目录拉库”的服务风险极高。5与计划任务、驱动、服务恢复命令联动计划任务以 SYSTEM 运行且脚本可写服务失败时“运行程序”指向可写脚本第三方更新服务自动提权执行用户目录内容这些常和服务问题一起在报告里出现。4.3 授权测试中的枚举方法不提供利用载荷查看服务与路径sc query state all wmic service get Name,StartName,PathName,StartModePowerShellGet-CimInstanceWin32_Service|Select-ObjectName,State,StartMode,StartName,PathName|Format-List检查未加引号路径思路找出PathName中包含空格且整体未用引号包裹且存在可写中间路径检查 ACL思路对服务对象、文件、目录使用icacls C:\Path\service.exe sc sdshow ServiceName关注Authenticated Users、Everyone、Users是否具有FILE_WRITE_DATA、WRITE_DAC、SERVICE_CHANGE_CONFIG等危险权限。发现可写后正确的专业动作是截图/导出 ACL 与服务配置在靶机用无害验证证明可写例如写入测试文件而不是马评估是否需要重启、是否会造成业务中断写入报告与加固建议。4.4 一个典型攻击链叙述普通用户 → 发现第三方服务路径未加引号 → 在可写目录放置同名程序 → 触发服务重启或等待 → SYSTEM 权限执行 → 创建管理员/关闭防护/抓取凭据或应用池用户有 SeImpersonate → 令牌模拟到 SYSTEM → 改服务配置做持久化实战中“服务劫持”经常是提权后的持久化手段也可能是提权本身。4.5 检测点对象监控什么服务控制管理器服务创建、二进制路径更改、启动类型更改文件系统服务目录新增 EXE/DLL系统目录异常写入进程服务进程从异常路径启动签名不匹配计划任务SYSTEM 任务动作被改防护Tamper Protection 关闭、Defender 排除被加到服务目录Windows 事件示例方向系统日志中服务安装/更改相关事件安全审计中对象访问若配置了 SACLDefender/MDE可疑服务修改告警4.6 加固项可直接进基线服务 EXE 目录仅 Administrators/SYSTEM 可写。所有服务路径加引号安装程序打包时检查。收紧服务 SDDL禁止 UsersCHANGE_CONFIG。第三方软件装到受控目录不要散落在可写共享。用基线扫描定期查Unquoted Path、Weak ACL、可写服务。服务账户遵循最小特权能用 gMSA 用 gMSA。关键变更管控服务配置更改进入 SIEM 高优先级告警。五、三条线如何在实战中串联5.1 常见杀伤链组合组合 A从服务到令牌弱服务 → SYSTEM → 复制令牌 / 做持久化 / 关防护。组合 B从管理员到 SYSTEM已在 AdministratorsMedium→ UAC 绕过到 High → SeDebug 打开 SYSTEM 进程令牌。组合 C从 Web 应用池到 SYSTEMWebShell → 应用池有 Impersonate → 令牌假冒 → SYSTEM → 写服务持久化。组合 D纯配置礼包可写服务 可写计划任务 关不严的 UAC 过宽排除项。蓝队演练时不要只练“单个 CVE”要练组合链的日志相关性。5.2 红队授权报告应怎么写才专业避免只写“使用某某工具成功 SYSTEM”。更好的结构初始权限与令牌信息whoami /priv /groups根因哪条 ACL、哪项策略、哪个服务利用条件版本、是否需重启、是否需交互证据配置导出、事件 ID、时间线业务影响可否触达域管、备份、敏感数据修复验证修完后复测同一路径失败这样开发与运维才修得动。六、实验环境设计建议若要在内训中安全地练这三类能力建议搭建域控 1 台工作站 1 台成员服务器快照充足。故意配置三条靶标一个未加引号路径的自定义服务仅实验机一个可写目录的演示服务一个带 SeImpersonate 的低权服务账户场景。安装 Sysmon 转发日志学员先做检测规则再做攻击演示。UAC 场景单独用“本地管理员日常用户”靶机与“标准用户”靶机分开避免概念混乱。严格禁止在生产、个人办公机、客户未授权系统上练习。七、综合加固清单可打印7.1 账户与 UAC普通用户无本地管理员LAPS 管理本地管理员密码UAC 管理员批准模式开启安全桌面提示开启禁止“从不通知”7.2 令牌与高权进程审计特权使用与进程创建Web/CI 账户权限最小化LSA Protection / Credential Guard 评估启用限制调试特权与驱动加载7.3 服务与任务定期扫描 Unquoted Service Path定期扫描服务二进制 ACL服务配置更改进 SIEMSYSTEM 计划任务脚本不可被用户写7.4 执行控制与 EDRWDAC/AppLocker 渐进强制ASR 从 Audit 到 BlockDefender Tamper Protection 开启排除项审批制7.5 运营月度提权路径复测配置型补丁合规红蓝后回写检测规则八、应急怀疑已被提权时做什么隔离主机断网但尽量保内存与日志。采集whoami历史无关直接拉事件日志、Sysmon、MFT、服务列表、计划任务、启动项。检查新增服务 / binPath 变更可疑 DLL 到系统进程本地管理员组成员变更Defender 关闭或排除异常重置本地管理员与相关服务账户密钥LAPS 轮换。若有域横向迹象按域应急流程查黄金票据、异常登录、GPO 篡改。重装或黄金镜像恢复高信任主机跳板、PAW、域控周边。提权成功后的环境默认按不可信处理不要只“杀毒清理”了事。九、结语Windows 权限提升里最能长期骗人的不是某一个公开 bypass 名字而是这三类结构性问题令牌机制被合法业务功能带着走——有模拟特权的账户一旦能骗到 SYSTEM 回连就会发生质变UAC 被当成安全边界——不收回本地管理员绕过研究就永远有客户服务以 SYSTEM 跑又配了用户可写——这是最朴素、也最稳定的提权与持久化土壤。对攻击者授权测试而言秩序应是查令牌特权 → 查服务/任务 ACL 与路径 → 再谈 UAC 边界 → 最后才是漏洞利用。对防守者而言秩序应是收回本地管理员 → 收紧服务与任务的 ACL → 审计特权与进程链 → 再叠加 ASR/WDAC/凭据防护。把本文的检测点与加固清单落到组策略和 SIEM 规则后你会发现很多“炫技型提权”在规范环境里根本走不通而真正让你失眠的依旧是那一个对Everyone可写的第三方服务路径。

最新新闻

日新闻

周新闻

月新闻