Windows内网提权姿势汇总

Windows内网提权姿势汇总

LMTEAM 129 2023-03-22

前言: 仅记录思路方向,具体技术细节可遇到后对照深入研究。如果有补充,非常欢迎大家评论、留言。

PART 01利用Windows系统漏洞

匹配可提权漏洞编号,系统是否缺失该补丁。

人工查用systeminfo命令 或 wmic qfe get HotFixID 命令获取已经打了的补丁编号。
利用Metasploit的enum_patches模块
利用Windows Exploit Suggester工具
利用PowerShell的Sherlock脚本
利用Cobalt Strike3.6及之后版本的elevate命令

PART 02利用系统服务权限配置漏洞

利用PowerShell的PowerUp脚本
利用Metasploit的service_permissions模块
利用注册表键AlwaysInstallElevated 设置项(漏洞来源Windows Installer特权安装功能)

PART 03利用可信任服务路径漏洞

联想截图_20230322212350

利用Metasploit的trusted_service_path模块
人工查用wmic service get name,displayname,pathname,startmode |findstr /i "Auto" |findstr /i /v "C:\Windows\\" |findstr /i /v """ 命令查找没有用双引号表示路径且路径存在空格的服务,之后查找这些存在漏洞且可读可写的服务路径,使用恶意程序重命名覆盖后重启服务。

PART 04利用自动安装配置文件信息泄露

脚本批量给机器部署环境时遗留的配置文件中,可能存在本地管理员账号密码信息。

如:C:\sysprep.inf C:\Windows\System32\Sysprep\unattend.xml等

人工收集这些目录,批量判断是否存在
利用Metasploit的enum_unattend模块

PART 05利用高权限计划任务

检查是否存在高权限账户执行的计划任务。

可通过 schtasks /query /fo LIST /v 查询当前计算机的计划任务
发现存在高权限执行的计划任务后记录下任务的路径,后续查找有权限缺陷,可以低权限写入的路径,然后覆盖该计划任务的执行程序。 可以使用AccessChk微软官方提供的检查工具检查这些路径是否存在缺陷。

PART 06Empire自带模块

Empire内置了PowerUp部分模块,可通过输入命令 usemodule privesc/powerup后不回车,按Tab键补全查询powerup下的模块进行使用。

如进行所有检查 :

usemodule privesc/powerup/allchecks
execute

进行内置漏洞检查,其包括(以下检查基本都可以通过usemodule privesc/powerup/模块名单独用):

没有用引号来表示路径的服务路径
ACL配置错误的服务
服务可执行文件的权限配置错误
Unattend.xml 文件扫描
注册表键 AlwaysInstallElevated检查
AutoLogon凭证扫描
加密的web.config字符串和应用程序的密码扫描
%PATH%.DLL劫持机会检查

PART 07利用组策略首选项漏洞

SYSVOL文件夹中可能保存了本地管理员密码,虽然AES加密了,但是微软公开了密钥。

默认路径:%SystemRoot%\SYSVOL\SYSVOL<domain_name>\Policies

可以手动翻找这个文件夹下的`{31B2F340-016D-11D2-945F-00C04FB984F9}\MACHINE\Preferences\Groups\Groups.xml`文件
利用PowerShell,PowerSploit开源项目的Get-GPPPassword.ps1脚本
利用Metasploit的post/windows/gather/credentials/gpp模块
利用Empire 执行`usemodule privesc/gpp`

防御:

1、安装KB2962486补丁(也可以反向用来判断是否存在漏洞)

2、设置SYSVOL路径的Everyone访问权限

3、删除SYSVOL下包含密码的XML文件

4、密码存放时注意不存放在所有域用户都可以访问的文件中

5、可以使用LAPS管理域内机器本地管理员密码

PART 08绕过UAC提权

UAC(User Account Control) 用户账户控制,权限控制机制,配置Windows更新、增删改账户、安装卸载应用、文件操作等等都需要经过UAC控制。

利用meterpreter(Metasploit中的一个杀手锏,通常作为溢出漏洞后的payload使用,payload在触发漏洞后能够返回一个控制通道)的exploit/windows/local/bypassuac模块(利用成功需要一些条件:当前会话的用户必须在管理员组中,UAC等级为默认选项“仅在程序时图更改我的计算机时通知我”时)
利用meterpreter的exploit/windows/local/ask模块(RunAs模块)(需要在后续的弹窗询问中确认才可以提权,因此需要当前回话的用户需要在管理组中或知道管理员账号密码)
利用Nishang中的Invoke-PsUACme模块
利用Empire的bypassuac模块 命令:usemodule privesc/bypassuac
Windows 7且未打补丁情况下,可利用Empire 的bypassuac_wscript模块 命令:usemodule privesc/bypassuac_wscript

防御:

1、不给用户本地管理员权限,以普通用户权限操作计算机。

2、以本地管理员权限登录的,设置UAC为最严格模式“始终通知”。

PART 09令牌窃取提权

令牌为系统的临时密钥,类似于登录一个Web后的session,来代表当前登录的用户身份,认证机制为Kerberos协议。

通过Rotten Potato程序提权,首先使用meterpreter的use incognito命令后输入list_tokens -u 获取可用令牌列表,github下载Rotten Potato程序上传到目标机器,执行execute -HC -f rottenpotato.exe。使用impersonate_token "NT AUTHORITY\\SYSTEM"命令仿冒系统权限。
网络中存在域管理进程,可通过meterpreter的migrate迁移到该进程,之后执行命令添加域管理员(添加域账号:net user username password /ad /domain 添加到域管理员组:net group "domain admins" username /ad /domain)
meterpreter通过incognito模拟域管理员,会话中执行 添加域账号:add_user username password -h 域控ip  。添加到域管理员组:add_group_user "Domain Admins" username -h 域控ip
利用Empire内置的的mimikatz查看系统密码,查到可用的令牌后,通过pth 列出可用的CredID 来进行令牌窃取。或使用ps查找运行中的域用户进程ID进行窃取。

防御:

1、及时更新微软安全补丁

PART 10无身份凭证获取权限

适用条件:当内网主备DNS服务器均不可用的情况。

当主备DNS服务器均不可用时,内网会使用LLMNR和NetBIOS进行主机名和IP解析等操作,利用Responder(内置大量协议和应用服务器)进行收集内网计算机凭证。

免责声明: 由于传播、利用本博客提供的文章、工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,作者不为此承担任何责任,一旦造成后果请自行承担!