防范恶意代码提权的关键在于切断提权路径、压缩特权、限制高危工具执行;需收紧服务账户权限、封禁msconfig等配置入口、强化UAC与最小权限,并通过gpresult验证策略落地及提供安全替代方案。

防范恶意代码通过权限绕过执行,关键不在“堵死所有入口”,而在于切断其提权路径、压缩可用特权、限制高危操作的执行上下文。核心思路是:让攻击者即使拿到低权限Shell,也难以获取SeImpersonatePrivilege等关键特权,更无法调用msconfig、gpedit.msc、control.exe等系统配置工具完成横向或提权动作。
收紧服务账户与进程特权
很多提权链(如JuicyPotato)依赖IIS应用池、SQL Server代理等服务账户默认携带SeImpersonatePrivilege。这不是漏洞,而是配置风险:
- 运行
whoami /priv | findstr /i "Impersonate AssignPrimaryToken"检查当前上下文是否拥有高危特权; - 对非必要服务,改用
LocalService或自定义受限域账户运行,避免使用NetworkService或LocalSystem; - 在组策略中启用“用户权限分配”→“拒绝将令牌作为其他用户登录”,限制非管理员模拟能力。
封禁高危系统配置入口
控制面板、设置应用、MMC管理单元等是恶意代码常用的提权跳板。仅隐藏图标远远不够,需逐层拦截:
- 组策略 → 用户配置 → 管理模板 → 控制面板 → 启用“禁止访问控制面板”,并配合“禁止访问指定的控制面板项”,填入
sysdm.cpl、inetcpl.cpl、compmgmt.msc等关键项; - AppLocker中创建“可执行文件”拒绝规则,目标路径包括:
%WINDIR%\System32\msconfig.exe、%WINDIR%\System32\gpedit.msc、%WINDIR%\System32\compmgmt.msc; - 禁用PowerShell调用这些工具的能力:在AppLocker中为
powershell.exe添加脚本规则,阻止含Start-Process.*msconfig、&.*control\.exe等模式的命令。
强化UAC与最小权限落地
UAC不是摆设,但默认设置下普通用户仍可能绕过。必须结合策略强制生效:
- 组策略 → 计算机配置 → Windows设置 → 安全设置 → 本地策略 → 安全选项 → 设置“用户帐户控制:用于内置管理员账户的管理员批准模式”为“已启用”;
- 同步启用“用户帐户控制:检测应用程序安装并提示提升”和“以管理员批准模式运行所有管理员”,确保即使管理员账户也受UAC约束;
- 对标准域用户OU单独链接GPO,禁用“用户配置 → 管理模板 → 系统 → Ctrl+Alt+Del选项”中的“删除任务管理器”,防止通过任务管理器启动新进程绕过限制。
验证与替代支持闭环
策略部署后不验证=没部署。同时,完全封禁会催生用户自行提权求助,反而扩大风险面:
- 用
gpresult /h report.html确认策略已应用到目标用户,重点检查“安全设置”和“AppLocker”部分; - 以标准用户身份登录,尝试执行
control.exe、msconfig、Start-Process gpedit.msc,确认全部被拦截且无日志报错; - 提供IT支持门户,内嵌经签名、白名单放行的PowerShell脚本(如一键重置网络、刷新组策略),既满足运维需求,又杜绝任意代码执行。









