内网对抗基石框架篇2:父域子域架构与 GPO 策略、分域管理、信息收集
学习自B站小迪安全
阅读前需要了解的前置知识
- 工作组 vs 域、单域架构、DC 与 DNS、域内权限组、A-G-DL-P
- 父子域的基本概念(总公司域 / 分公司域的上下级关系)
- 信任关系(Trust)的基本含义:两个域要互访必须先建立信任
- 组策略(GPO)的直觉:管理员统一下发的"规定/配置"
- DNS 层次命名:子域只能用父域名字作后缀(如
sh.corp.local)
阅读前需要准备的所需工具
- 两台 Windows Server(一台做父域 DC,一台做子域 DC)
- 一台 Windows 10/11 客户端(加入子域)
- 虚拟化软件:VMware Workstation 或 VirtualBox
- PowerShell(含 ActiveDirectory 模块)
- 组策略管理控制台:GPMC(
gpmc.msc)、本地策略gpedit.msc - 信息收集工具:BloodHound + SharpHound、PowerView、PingCastle
- 信任/域信息查询命令:
nltest、netdom(可选)
一、先建立整体认知:为什么要有"父子域"
单域把所有电脑放一个桶里,公司小没问题;公司一大就乱了:
- 总部和分公司网络带宽有限,所有账号同步全走一根线会堵;
- 分公司想有自己的安全规矩(密码策略、软件限制),总部管太死不灵活。
于是有了父子域:总部是父域(如 corp.local),分公司是子域(如 sh.corp.local)。好处原文点得很清楚:
- 减小域间信息交互压力:域内通信不压缩,域间通信会压缩,分域后大部分流量留在本地域,跨域才压缩走专线。
- 不同子域可指定不同的安全策略:每个子域有自己的 GPO,灵活管控。
记忆:父子域 = "总公司 + 分公司",靠信任关系相连;域名用
.分层,子域只能用父域名字作后缀。
二、域树、域森林与信任关系
2.1 理解
- 域树:多个域通过信任关系连成树,域名连续(如
corp.local→sh.corp.local→gz.corp.local)。层次越深,级别越低。 - 域森林(域林):多棵域树通过信任关系组成的集合;树与树之间域名可以不连续(如
corp.local和other.com两棵树组一个林)。 - 信任关系(Trust):两个域要互相访问,必须先建立信任。父子域默认自动建好双向信任;跨林需要手动建。
2.2 实操:查看信任关系
:: 列出当前域的所有信任(父子域环境下能看到父/子互信)
nltest /domain_trusts
Get-ADTrust -Filter * | Select-Object Name, Direction, TrustType
三、GPO 组策略:统一管控的"开关中心"
3.1 理解
GPO(Group Policy Object,组策略对象)是域环境"统一管理"的真正武器。管理员写好一条策略(比如"强制密码长度 12 位""禁止运行某软件""开机自动映射网络盘"),下发到站点 / 域 / OU(组织单位),下面的电脑和用户就自动照做。
分域管理的精髓之一就在这:父域可以下发全林通用的基线策略,子域再叠加自己特有的策略。子域策略优先级可覆盖父域(具体继承与"阻止继承/强制"机制略,实验时体会即可)。
3.2 实操:组策略常用操作
gpedit.msc :: 本地组策略编辑器(单机)
gpmc.msc :: 组策略管理控制台(域级,推荐)
gpupdate /force :: 强制立刻刷新策略(改完策略后到客户端执行)
gpresult /r :: 查看当前生效了哪些策略(RSOP 结果)
# 列出域内所有 GPO
Get-GPO -All | Select-Object DisplayName, GpoStatus, ModificationTime
# 查看某 GPO 的报告(XML 概览)
Get-GPOReport -Name "Default Domain Policy" -ReportType Html -Path C:\tmp\gpo.html
实验建议:在父域建一条"密码最小长度 12"的 GPO 链接到域,在子域再建一条"禁止访问控制面板"的 GPO,分别
gpupdate /force后到对应机器gpresult /r验证差异——直观感受"分域管理"。
四、成员层级与分域管理
4.1 理解
一个父子域环境里的"成员"分三层:
- 域控制器(DC):父域 DC、子域 DC,各自管各自域的账号与验证。
- 成员服务器:加入域、提供业务/文件等服务,按 OU 划归管理。
- 客户机:办公电脑,加入父域或某个子域。
分域管理就是按"组织/地域"把对象放进不同域和 OU,再给不同 GPO。这样总部统一基线、分公司各自灵活,互不打架。
4.2 实操:把用户/电脑按层级放进不同域
# 父域里建一个组织单位(OU),用于归拢总部用户
New-ADOrganizationalUnit -Name "HQ-Users" -Path "dc=corp,dc=local"
# 子域里建 OU
New-ADOrganizationalUnit -Name "Branch-Users" -Path "dc=sh,dc=corp,dc=local"
五、动手搭建父子域实验环境(笔记式)
示例:父域
corp.local(NetBIOSCORP),子域sh.corp.local(NetBIOSSH)。所有 IP 为实验占位地址,按你虚拟机网段填写(脱敏说明见文末)。
5.1 准备工作清单(父域与子域通用)
静态 IP/DNS 示例(占位,按实际改):
:: 父域 DC(示例 IP 192.168.10.10),DNS 指向自己
netsh interface ip set address "Ethernet0" static 192.168.10.10 255.255.255.0 192.168.10.1
netsh interface ip set dns "Ethernet0" static 192.168.10.10
:: 子域 DC(示例 IP 192.168.10.20),DNS 必须指向父域 DC
netsh interface ip set address "Ethernet0" static 192.168.10.20 255.255.255.0 192.168.10.1
netsh interface ip set dns "Ethernet0" static 192.168.10.10
5.2 父域:安装 AD DS 并新建林/域
Install-WindowsFeature -Name AD-Domain-Services -IncludeManagementTools
Install-ADDSForest `
-DomainName "corp.local" `
-DomainNetbiosName "CORP" `
-SafeModeAdministratorPassword (ConvertTo-SecureString "P@ssw0rd!Root" -AsPlainText -Force) `
-InstallDns:$true -Force:$true
5.3 子域:安装 AD DS 并加入父域(子域只能以父域名为后缀)
Install-WindowsFeature -Name AD-Domain-Services -IncludeManagementTools
Install-ADDSDomain `
-ParentDomainName "corp.local" `
-NewDomainName "sh" `
-NewDomainNetbiosName "SH" `
-Credential (Get-Credential "CORP\Administrator") `
-SafeModeAdministratorPassword (ConvertTo-SecureString "P@ssw0rd!Child" -AsPlainText -Force) `
-InstallDns:$true -Force:$true
关键:
NewDomainName "sh"会自动拼成sh.corp.local;子域不能脱离父域名字,这是 AD 的硬规则。执行后子域 DC 与父域自动建立双向信任。
5.4 在父/子域 DC 上添加用户,客户端加入对应域
# 父域建用户
New-ADUser -Name "boss" -SamAccountName "boss" -UserPrincipalName "boss@corp.local" `
-AccountPassword (ConvertTo-SecureString "Pass@123" -AsPlainText -Force) -Enabled $true
# 子域建用户(在子域 DC 上执行,或用 -Server 指定)
New-ADUser -Name "branchuser" -SamAccountName "branchuser" `
-UserPrincipalName "branchuser@sh.corp.local" `
-AccountPassword (ConvertTo-SecureString "Pass@123" -AsPlainText -Force) -Enabled $true `
-Server "DC-SH.sh.corp.local"
# 客户端加入子域
Add-Computer -DomainName "sh.corp.local" `
-Credential (Get-Credential "SH\Administrator") -Restart
六、信息收集:父子域环境下的"四步法"
父子域下收集信息,比单域多了"信任关系"和"跨域 DC"两样东西。四步:判断在单域还是父子域 → 定位当前域控 → 看信任/跨域 → 抓用户与组。
6.1 判断自己在单域还是父子域内
echo %USERDNSDOMAIN% :: 显示当前域的 DNS 名,如 corp.local 或 sh.corp.local
echo %USERDOMAIN% :: 显示 NetBIOS 域名
- 若当前域是
sh.corp.local这种"带两层点"的名字,基本就在子域里。 - 配合
nltest /domain_trusts看有没有父/子信任,就能确认是父子域环境。
6.2 定位当前域控 DC
echo %LOGONSERVER% :: 当前验证你的 DC
nltest /dclist:sh.corp.local :: 列出子域的 DC
nltest /dsgetdc:sh.corp.local :: 获取子域 DC 详情
nslookup -type=SRV _ldap._tcp.dc._msdcs.sh.corp.local :: DNS 定位子域 DC
6.3 获取跨域信息(信任、林内所有域、各域 DC)
:: 信任关系(能看到父域 <-> 子域)
nltest /domain_trusts
# 林里有哪些域
(Get-ADForest).Domains
# 林里有哪些信任
Get-ADTrust -Filter * | Select-Object Name, Direction, TrustType
# 分别列出父域、子域的 DC
nltest /dclist:corp.local
nltest /dclist:sh.corp.local
Get-ADDomainController -Filter * | Select-Object Name, Domain, IPv4Address
6.4 获取用户/组/网络架构
net user /domain :: 当前域用户
net group /domain :: 当前域组
net group "Domain Admins" /domain:: 当前域管理员(重点)
# 当前林的域管理员全貌(逐域看)
(Get-ADForest).Domains | ForEach-Object {
Write-Host "== $_ =="
Get-ADGroupMember "Domain Admins" -Server $_
}
6.5 工具插件(自动化)
-
BloodHound + SharpHound:
SharpHound.exe -c All采集后导入,能直接画出"跨域信任路径"和"谁最终能到 Enterprise Admins"。bloodhound.py -u branchuser -p 'Pass@123' -d sh.corp.local -ns 192.168.10.20 -c All -
PowerView:
Get-NetForestDomain(林内所有域)、Get-NetDomainTrust(信任)、Get-NetDomainController -
PingCastle:评估整林安全健康度,特别适合发现跨域信任带来的风险
--
七、域环境安全框架总览(与单域一致,范围扩大)
五个阶段在父子域环境下同样成立,只是范围从"单域"扩到"林":
- 信息收集:架构、权限分布、信任关系(本篇第六节)
- 权限提升:从普通域用户 → 域管理员 → 企业管理员
- 代理隧道:打通跨域/出网通联(后续篇章)
- 横向移动:借信任关系在父/子域间移动(后续篇章)
- 权限维持:票据/后门长期控制(后续篇章)
重点记忆:父子域中,Enterprise Admins(企业系统管理员)管整个林,是比单域
Domain Admins更高一层的"总权限"目标。
总结
- 父子域 = 父域(总公司)+ 子域(分公司),靠信任关系相连;子域域名必须以父域名为后缀(如
sh.corp.local)。 - 分域两大好处:域内流量不跨网节省带宽(域间才压缩)、各子域可定制自己的 GPO 安全策略。
- GPO 是统一管控核心:
gpmc.msc管理、gpupdate /force刷新、gpresult /r验证生效。 - 搭建关键:子域 DC 的 DNS 必须指向父域 DC,否则找不到父域、建不了信任;子域用
Install-ADDSDomain -ParentDomainName加入。 - 信息收集在单域基础上加两步:用
nltest /domain_trusts看信任、用(Get-ADForest).Domains+ 逐域Domain Admins摸清整林权限分布。 - 工具上 BloodHound 能把"跨域信任路径"画得一目了然,是父子域环境侦察的首选。

浙公网安备 33010602011771号