-
游客您好,欢迎来到黑客世界论坛!您可以在这里进行注册。
赤队小组-代号1949(原CHT攻防小组)在这个瞬息万变的网络时代,我们保持初心,创造最好的社区来共同交流网络技术。您可以在论坛获取黑客攻防技巧与知识,您也可以加入我们的Telegram交流群 共同实时探讨交流。论坛禁止各种广告,请注册用户查看我们的使用与隐私策略,谢谢您的配合。小组成员可以获取论坛隐藏内容!
TheHackerWorld官方
- 0
赤队小组-代号1949(原CHT攻防小组)在这个瞬息万变的网络时代,我们保持初心,创造最好的社区来共同交流网络技术。您可以在论坛获取黑客攻防技巧与知识,您也可以加入我们的Telegram交流群 共同实时探讨交流。论坛禁止各种广告,请注册用户查看我们的使用与隐私策略,谢谢您的配合。小组成员可以获取论坛隐藏内容!
TheHackerWorld官方
问题
HACK1949
Windows常见提权总结
假如我们已经获得了一个Windows系统的普通用户权限,由于低权限用户的很多操作将受到限制。所以,我们会想法设法地将低权限用户提权到高权限用户。例如,从 Webshell(apache)、数据库权限——>系统普通用户权限——>Administrator权限——>System权限。反正,我们的最终目的就是拿到该主机的最高权限。
Windows提权方式
0x01 Windows内核溢出漏洞提权
实战中最常用的本地溢出提权有 CVE-2018-8120、MS16-032、MS15-051 和 MS14-058 。
在MSF中,最常用的提权模块是CVE-2018-8120;
在CobaltStrike中,最常用的提权模块的是 MS14-058。这四个提权,都有对应的exe程序。exe程序均支持32和64位的机器。
手工查找补丁情况
可以看到只安装了3个补丁
利用Metasploit发现缺失补丁
利用post/windows/gather/enum_patches 模块 可以根据漏洞编号快速找出系统中缺少的补丁
设置获取的session即可运行
MSF下还提供了 post/multi/recon/local_exploit_suggester 模块,该模块用于快速识别系统中可能被利用的漏洞
Windows Exploit Suggester
该工具可以将系统中已经安装的补丁程序与微软的漏洞数据库进行比较,并可以识别可能导致权限提升的漏洞,而其只需要目标系统的信息。
漏洞复现
选择利用模块攻击
可以看到找到了一个漏洞利用Exploit模块,我们使用该模块
设置 session 为我们刚刚获得权限的 session ID,run运行。
可以看到,我们获得了 System 权限。
0x02 Windows系统配置错误提权
Windows在系统启动时,会伴随着一些高权服务启动(windows服务是以system权限运行的)倘若某些服务存在一些漏洞,那么就能够借此服务进行权限劫持,例如DLL劫持
1.系统服务权限配置错误
利用方式
2.注册表键AlwaysInstallElevated
利用方式
可以看到成功提权
只要禁用注册表键AlwaysInstallElevated 就可以阻止攻击者通过MSI文件进行提权
3、可信任服务路径漏洞
寻找存在漏洞的服务
上述表示没有可利用的漏洞
将文件路径用引号引起来 就不会出现问题
4、自动安装配置文件
网络管理员在内网中给多台机器配置同一个环境时,通常不会逐个配置,而是使用脚本批量部署。在这个过程中,会使用安装配置文件。这些文件中包含所有的安装配置信息,其中一些还可能包含管理员账号和密码。
Metasploit集成了漏洞利用模块
post/windows/gather/enum_unattend
5、计划任务
可以使用如下命令查看计算机计划任务
AccessChk用于在windows中进行一些高级查询、管理和故障排除工作。由于它是微软官方提供的工具,所以杀毒软件不会有告警。如果黑客对以高权限运行的任务,所在的目录具有写权限,那么就可以使用恶意程序覆盖原有的程序。这样,在计划任务下次执行的时候,就会以高权限运行恶意程序。
通过AccessChk查看指定目录的权限配置情况:
常用命令
PowerUp.ps1脚本的使用
PowerUp.ps1脚本是 Privsec 目录下的一个脚本,功能非常强大。拥有很多用来寻找目标主机Windows服务配置错误来进行提权的模块。当我们无法通过 windows 内核漏洞进行提权的话,这个时候我们就可以利用该脚本来寻找目标主机上Windows服务配置错误来进行提权,或者利用常见的系统服务,通过其继承的系统权限来完成提权。
Invoke-Allchecks模块
运行该脚本,该脚本会自动检查PowerUp.ps1下所有的模块,并在存在漏洞利用的模块下的AbuseFunction中直接给出利用方法
0x03 Windows组策略首选项提权(SYSVOL/GPP)
SYSVOL
SYSVOL是活动目录里面的一个用于存储域公共文件服务器副本的共享文件夹,在域中的所有域控制器之间进行复制。SYSVOL文件夹是在安装活动目录时自动创建的,主要用来存放登录脚本、组策略数据及其他域控制器需要的域信息等。
SYSVOL在所有经过身份验证的域用户或者域信任用户具有读权限的活动目录的域范围内共享。整个SYSVOL目录在所有的域控制器中是自动同步和共享的,所有的域策略均存放在 C:WindowsSYSVOLDOMAINPolicies 目录中。
在一般的域环境中,所有机器都是脚本化批量部署的,数据量通常很大。为了方便地对所有的机器进行操作,网络管理员往往会使用域策略进行统一的配置和管理。大多数组织在创建域环境后,会要求加入域的计算机使用域用户密码进行登录验证。为了保证本地管理员密码的安全性,这些组织的网络管理员往往会修改本地管理员密码。
尽管如此,安全问题依旧存在。通过组策略统一修改的密码,虽然强度有所提高,但所有机器的本地管理员密码是相同的。攻击者获得了一台机器的本地管理员密码,就相当于获得了整个域中所有机器的本地管理员密码。
常见的组策略首选项(Group Policy Preferences,GPP)列举如下
组策略首选项提权分析
1:创建组策略,批量修改域中机器的本地管理员密码
在域控上执行:开始——>运行——>输入 gpmc.msc ——>选择kevin.com——>右键组策略对象——>新建,我这里新建一个test组策略
右键刚刚新建的组策略,编辑
会弹出一个组策略管理编辑器,然后 计算机配置——>首选项——>控制面板设置——>本地用户和组
右键本地用户和组——>新建——>本地用户
我们将域中每个计算机的本地密码设置成 qwer123456.
然后将Domain Computers添加到组策略应用的组中
强制更新组策略
2:获取组策略的凭据
管理员在域中新建一个组策略后,操作系统会自动在SYSVO共享目录中生成一个XML文件,该文件中保存了该组策略更新后的密码。该密码使用AES-256加密算法,安全性还是比较高的。但是,2012年微软在官方网站上公布了该密码的私钥,导致保存在XML文件中的密码的安全性大大降低。任何域用户和域信任的用户均可对该共享目录进行访问,这就意味着,任何用户都可以访问保存在XML文件中的密码并将其解密,从而控制域中所有使用该账号、密码的本地管理员计算机。在SYSVOL中搜索,可以找到Groups.xml文件。找到其中的cpassword字段,该字段是用AES-256算法加密的,
qwer123456.加密后的密文7ud2rxJhwxT5iaNrNltLxQcQ1hNN2cmCgxha3Faj4YA
使用PowerShell获取cpassword
PowerSploit中的Get-GPPPassword.ps1脚本可以获取组策略中的密码。注意,我们只需要在域内任何一台以域用户权限登录的机器上均可查询到。
使用MSF获取cpassword
MSF中 post/windows/gather/credentials/gpp 模块可以获取组策略中的密码。注意,我们只需要获取域内任何一台以域用户权限登录的机器的权限即可。
针对组策略首选项提权的防御措施
在用于管理组策略的计算机上安装 KB2962486补丁,防止新的凭据被放置在组策略首选项中。微软在2014年修复了组策略首选项提权漏洞,使用的方法就是不再将密码保存在组策略首选项中。
此外,针对Everyone访问权限进行设置,具体如下:
0x04 绕过UAC提权
UAC(User Account Control,用户账号控制)是微软为了提高系统安全性在Windows Vista中引入的技术。
UAC要求用户在执行可能影响计算机运行的操作或在进行可能影响其他用户的设置之前,拥有相应的权限或者管理员密码。UAC在操作启动前对用户身份进行验证,以避免恶意软件和间谍软件在未经许可的情况下在计算机上进行安装操作或者对计算机设置进行更改。
在Windows Vista及以后的版本中,微软设置了安全控制策略,分为高、中、低三个等级。高等级的进程有管理员权限;中等级的进程有普通用户权限;低等级的进程,权限是有限的,以保证系统在受到安全威胁时造成的损害最小。
在权限不够的情况下,访问系统磁盘的根目录、Windows目录,以及读写系统登录数据库等操作,都需要经常UAC(User Account Control,用户账号控制)的认证。
需要UAC的授权才能进行的操作列表如下:
UAC有如下四种设置要求:
MSF下实战利用
Bypassuac提权的MSF模块
MSF中Bypassuac模块的使用前提有两个
这里获取的kevin用户在管理员组中,且 UAC设置为默认
使用use exploit/windows/local/bypassuac_injection模块,连续攻击两次都失败。提示32位的目标攻击64位的系统,但是我这里是使用的64为的target,也还是失败
使用exploit/windows/local/bypassuac_eventvwr则提权成功
Runas模块
使用 exploit/windows/local/ask 模块,需要使用 EXE::Custom 选项创建一个可执行文件(需要免杀),目标机器会运行一个发起提升权限请求的程序,提示用户是否要继续运行,如果用户选择继续运行程序,就会返回一个高权限的shell。
使用该模块的前提:
Nishang中的Invoke-PsUACme.ps1
Invoke-PsUACme模块使用来自UACME项目的DLL绕过UAC。
可以看到成功添加hack用户 没有提示拒绝访问(普通用户权限会提示拒绝访问)
针对绕过UAC提权的防御措施
在企业网络环境中,防止绕过UAC的最好方法是不让内网机器的使用者拥有本地管理员权限,从而降低系统遭受攻击的可能性。
使用本地管理员权限登录的用户,要将UAC设置为“始终通知”或者删除该用户的本地管理员权限(这样设置后,会像在Windows Vista中一样,总是弹出警告)。
0x05 令牌窃取
令牌(token)是系统的临时秘钥,相当于账号和密码,用来决定是否允许这次请求和判断这次请求是属于哪一个用户的。它允许你在不提供密码或其他凭证的前提下,访问网络和系统资源,这些令牌将持续存在于系统中,除非系统重新启动。令牌最大的特点就是随机性,不可预测,黑客或软件无法猜测出令牌。
假冒令牌可以假冒一个网络中的另一个用户进行各类操作。所以当一个攻击者需要域管理员的操作权限时候,需要通过假冒域管理员的令牌进行攻击。
令牌分类
Windows的AccessToken有两种类型:
Windows Access Token产生过程
AccessToken的窃取与利用
1:程序 incognito.exe
程序地址:https://labs.mwrinfosecurity.com/assets/BlogFiles/incognito2.zip
AccessToken的列举(需要administrator权限)
模拟其他用户的令牌
2.Invoke-TokenManipulation.ps1脚本
这个脚本是PowerSploit下Exfiltration文件夹内的一个脚本
使用命令如下:
3:MSF下的incognito模块
需要administrator权限
Windows Access Token令牌假冒防御
禁止Domain Admins登录对外且未做安全加固的服务器,因为一旦服务器被入侵,域管理员的令牌可能会被攻击者假冒,从控制DC。
如果想清除假冒,重启服务器即可。
链接帖子
意见的链接
分享到其他网站
这个问题有0个答案
推荐的帖子