域渗透基础一

admin 2021年8月13日10:58:03评论143 views字数 3393阅读11分18秒阅读模式

域渗透基础知识


   


1.域信息


   

域信息存放着域中的基础信息,基本上除了密码,都可以通过域信息查询到。查询域信息只需要一个域账号,这个账号可以是用户的,也可以是域机器的,因为在域中,机器也是一个用户,机器用户的账户名是以$结尾。dsquery 微软自带的查看域信息的工具,本地使用可以在 winserver2003 上拖一个,新版的 dsquery 需要多个文件配合,比较麻烦。

查询域密码策略

dsquery * -attr * -limit 1 


域渗透基础一


AdFind.exe  -h 192.168.2.10 -maxe 1


域渗透基础一


其中的maxPwdAge为密码最长使用时间,minPwdAge为密码最短使用时间,默认环境下最短密码时间为一天,最长使用时间是 90 天,也就是说域用户每个季度都要修改一次自己的密码,如果最短密码时间为一天,则修改了一次域密码之后,必须要过了一天才能再次修改,这样避免了域用户改为原来的密码,也因此很多域用户的密码跟季节月份年份有关,频繁修改下,一定会出现相对弱的密码。其中的minPwdLength为最小密码长度,也就是说密码不能比这个值短。

查询域用户

dsquery * -filter "(&(objectCategory=person)(objectClass=user))" -attr sAMAccountName displayName mail userAccountControl pwdLastSet title department homeDirectory physicalDeliveryOfficeName company distinguishedName -limit 0 -uco


域渗透基础一

查询域电脑

dsquery * -filter "(objectCategory=computer)" -attr cn operatingSystem description distinguishedName -limit 0 -uco


域渗透基础一

查询域组

dsquery * -filter "(objectCategory=group)" -attr cn description member distinguishedName objectSid -l -limit 0 -uco


域渗透基础一

查询 subnets

dsquery * "CN=Subnets,CN=Sites,CN=Configuration,DC=xxx,DC=com" -limit 0 -uco -filter "(objectCategory=subnet)" -attr name description siteObject location

查询站点

dsquery * "CN=Sites,CN=Configuration,DC=test,DC=com" -limit 0 -uco -filter "(objectCategory=site)" -attr cn description

    查询信任域

dsquery * -limit 0 -uco -filter "(objectClass=trustedDomain)" -attr cn distinguishedName


2.域共享


   

域共享和域信息一样,都是只要有一个域账号就可以访问。域共享分为 sysvol 和 netlogon。

域渗透基础一

坑点

windows 10 bug:由于无法通过 UNC 路径访问 sysvol 共享,可以添加一条组策略,计算机 ->管理模板 ->网络 ->网络提供程序->硬化的 UNC 路径,启用该策略并单击"显示"按钮。在"数值名称"中输入您的服务器名称(\myservername),然后在"数值"字段中输入下列文本

RequireMutualAuthentication = 0, RequireIntegrity = 0, RequirePrivacy = 0


3.GPP


   

gpp 全称 group policy preference 是域中的策略,是由管理员下发的,对域内机器或者用户生效。gpp 可以用来更改用户或者电脑的密码,因此如果管理员使用过 gpp 来更改密码,那么这个记录就会保存在域共享中。因此可以通过在域共享中查找关键字,来找到这个密码,这个密码是使用固定密钥加密的,因此可以直接使用 kali 自带的工具解密。

findstr /s /i cpassword \shuidi.comsysvol*.xml
gpp-decrypt xxxxxx


4.ntlm 认证协议


   

在域内如果使用的是 ip 地址,那大概率用的就是 ntlm 协议,协议具体内容可以在参考链接中查看,图解如下:

域渗透基础一

参考链接:https://daiker.gitbook.io/windows-protocol/ntlm-pian


5.kerberos 认证协议


   

在域内,如果使用的是机器名来做认证,那大概率使用的是 kerberos 认证,详细内容可以在参考链接中查看,图解如下:

域渗透基础一

参考链接:https://daiker.gitbook.io/windows-protocol/kerberos


6.DPAPI


   

Data Protection Application Programming Interface,缩写DPAPI

主要作用就是使用户的数据只能由用户自己解开,里面用到了一个 masterkey 的概念,用来解密和加密,Master Key并不会存在在磁盘上,是通过用户的密码 HASH 加密生成,并且目前大部分的 masterkey 要想解密是需要用户明文密码的,所以如果只拿到了用户的 ntlm 哈希,也能有效的保护用户的数据安全。

master key

masterkey文件存放在C:UsersxxxAppDataRoamingMicrosoftProtectS-1-5-21-3796282545-1493157515-1387798836-xxx,其中的用户名和 sid 是对应的。

在域中,这个 master key 可以由两种解密方式,第一种就是域用户生成 masterkey 时,当下的密码明文。

dpapi::masterkey /in:xxx /sid:S-1-5-21-3796282545-1493157515-1387798836-500 /password:admin /unprotected


域渗透基础一

第二种是使用域的 domainkey 进行解密,可以使用以下命令直接发送 rpc 请求,让域控帮忙解密。

dpapi::masterkey /in:xxx /rpc


域渗透基础一

如果当前机器,用户登陆过,并且没有重启,可以使用如下命令,直接从内存中加载解密的 masterkey.

sekurlsa::dpapi


域渗透基础一

有了 master key,就可以解密各种应用以及微软自身加密的很多数据,包括 outlook 账号密码,凭据账号密码,很多第三方软件的保存的账号密码。

backupkeys

上面的方法中,使用/rpc 可以让域控帮忙解密 masterkey,其实还有别的办法获得这个 key,获得这个 key 之后,就可以本地直接解密,不需要发流量了。

lsadump::backupkeys /system:dc.shuidi.com /export
dpapi::masterkey /in:xxx /pvk:xxxx


域渗透基础一

还有一种获取 backupkeys 的办法,但是需要结合密码拖取中的 ntds 离线分析来做。当我们已经下载了域控中的 ntds.dit 和 samsystem 等文件,可以使用DSInternals来提取,可以直接提取 pvk 文件,和 backupkeys 效果一致。

$key = Get-BootKey -SystemHiveFilePath '.ADBackupregistrySYSTEM'
Get-ADDBBackupKey -DatabasePath '.ADBackupActive Directoryntds.dit' -BootKey $key | Format-List
Get-ADDBBackupKey -DatabasePath '.ADBackupActive Directoryntds.dit' -BootKey $key | Save-DPAPIBlob -DirectoryPath '.Output'


域渗透基础一


本文始发于微信公众号(水滴安全实验室):域渗透基础一

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年8月13日10:58:03
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   域渗透基础一https://cn-sec.com/archives/457531.html

发表评论

匿名网友 填写信息