Windows内网本地提权的十个方向
https://www.cnblogs.com/iAmSoScArEd/p/17139141.html 我超怕的
前言:仅记录思路方向,具体技术细节可遇到后对照深入研究。如果有补充,非常欢迎大家评论、留言。
1、利用Windows系统漏洞
匹配可提权漏洞编号,系统是否缺失该补丁。
1、人工查用systeminfo命令 或 wmic qfe get HotFixID 命令获取已经打了的补丁编号。
2、利用Metasploit的enum_patches模块
3、利用Windows Exploit Suggester工具
4、利用PowerShell的Sherlock脚本
5、利用Cobalt Strike3.6及之后版本的elevate命令
2、利用系统服务权限配置漏洞
1、利用PowerShell的PowerUp脚本
2、利用Metasploit的service_permissions模块
3、利用注册表键AlwaysInstallElevated 设置项(漏洞来源Windows Installer特权安装功能)
3、利用可信任服务路径漏洞
Trusted Service Paths漏洞,跟windows文件路径解析特性有关。如某系统服务位置C:\Program Files\SysService 解析时会尝试读取C:\Program*,也就是空格前所有符合该格式的项并执行
1、利用Metasploit的trusted_service_path模块
2、人工查用wmic service get name,displayname,pathname,startmode |findstr /i "Auto" |findstr /i /v "C:\Windows\\" |findstr /i /v """ 命令查找没有用双引号表示路径且路径存在空格的服务,之后查找这些存在漏洞且可读可写的服务路径,使用恶意程序重命名覆盖后重启服务。
4、利用自动安装配置文件信息泄漏
脚本批量给机器部署环境时遗留的配置文件中,可能存在本地管理员账号密码信息。
如: C:\sysprep.inf C:\Windows\System32\Sysprep\unattend.xml等
1、人工收集这些目录,批量判断是否存在
2、利用Metasploit的enum_unattend模块
5、利用高权限计划任务
检查是否存在高权限账户执行的计划任务。
1、可通过 schtasks /query /fo LIST /v 查询当前计算机的计划任务
2、发现存在高权限执行的计划任务后记录下任务的路径,后续查找有权限缺陷,可以低权限写入的路径,然后覆盖该计划任务的执行程序。 可以使用AccessChk微软官方提供的检查工具检查这些路径是否存在缺陷。
6、Empire自带模块
Empire内置了PowerUp部分模块,可通过输入命令 usemodule privesc/powerup
后不回车,按Tab键补全查询powerup下的模块进行使用。
如进行所有检查 :
usemodule privesc/powerup/allchecks
execute
进行内置漏洞检查,其包括(以下检查基本都可以通过usemodule privesc/powerup/模块名
单独用):
- 没有用引号来表示路径的服务路径
- ACL配置错误的服务
- 服务可执行文件的权限配置错误
- Unattend.xml 文件扫描
- 注册表键 AlwaysInstallElevated检查
- AutoLogon凭证扫描
- 加密的web.config字符串和应用程序的密码扫描
- %PATH%.DLL劫持机会检查
7、利用组策略首选项漏洞
SYSVOL文件夹中可能保存了本地管理员密码,虽然AES加密了,但是微软公开了密钥。
默认路径:%SystemRoot%\SYSVOL\SYSVOL<domain_name>\Policies
1、可以手动翻找这个文件夹下的`{31B2F340-016D-11D2-945F-00C04FB984F9}\MACHINE\Preferences\Groups\Groups.xml`文件
2、利用PowerShell,PowerSploit开源项目的Get-GPPPassword.ps1脚本
3、利用Metasploit的post/windows/gather/credentials/gpp模块
4、利用Empire 执行`usemodule privesc/gpp`
防御:
1、安装KB2962486补丁(也可以反向用来判断是否存在漏洞)
2、设置SYSVOL路径的Everyone访问权限
3、删除SYSVOL下包含密码的XML文件
4、密码存放时注意不存放在所有域用户都可以访问的文件中
5、可以使用LAPS管理域内机器本地管理员密码
8、绕过UAC提权
UAC(User Account Control) 用户账户控制,权限控制机制,配置Windows更新、增删改账户、安装卸载应用、文件操作等等都需要经过UAC控制。
1、利用meterpreter(Metasploit中的一个杀手锏,通常作为溢出漏洞后的payload使用,payload在触发漏洞后能够返回一个控制通道)的exploit/windows/local/bypassuac模块(利用成功需要一些条件:当前会话的用户必须在管理员组中,UAC等级为默认选项“仅在程序时图更改我的计算机时通知我”时)
2、利用meterpreter的exploit/windows/local/ask模块(RunAs模块)(需要在后续的弹窗询问中确认才可以提权,因此需要当前回话的用户需要在管理组中或知道管理员账号密码)
3、利用Nishang中的Invoke-PsUACme模块
4、利用Empire的bypassuac模块 命令: usemodule privesc/bypassuac
5、Windows 7且未打补丁情况下,可利用Empire 的bypassuac_wscript模块 命令:usemodule privesc/bypassuac_wscript
防御:
1、不给用户本地管理员权限,以普通用户权限操作计算机。
2、以本地管理员权限登录的,设置UAC为最严格模式“始终通知”。
9、令牌窃取提权
令牌为系统的临时密钥,类似于登录一个Web后的session,来代表当前登录的用户身份,认证机制为Kerberos协议。
1、通过Rotten Potato程序提权,首先使用meterpreter的use incognito命令后输入list_tokens -u 获取可用令牌列表,github下载Rotten Potato程序上传到目标机器,执行execute -HC -f rottenpotato.exe。使用impersonate_token "NT AUTHORITY\\SYSTEM"命令仿冒系统权限。
2、网络中存在域管理进程,可通过meterpreter的migrate迁移到该进程,之后执行命令添加域管理员(添加域账号:net user username password /ad /domain 添加到域管理员组:net group "domain admins" username /ad /domain)
3、meterpreter通过incognito模拟域管理员,会话中执行 添加域账号: add_user username password -h 域控ip 。添加到域管理员组:add_group_user "Domain Admins" username -h 域控ip
4、利用Empire内置的的mimikatz查看系统密码,查到可用的令牌后,通过pth 列出可用的CredID 来进行令牌窃取。或使用ps查找运行中的域用户进程ID进行窃取。
防御:
1、及时更新微软安全补丁
10、无身份凭证获取权限
适用条件:当内网主备DNS服务器均不可用的情况。
当主备DNS服务器均不可用时,内网会使用LLMNR和NetBIOS进行主机名和IP解析等操作,利用Responder(内置大量协议和应用服务器)进行收集内网计算机凭证。