AIGC标识 内网对抗基石框架篇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)。好处原文点得很清楚:

  1. 减小域间信息交互压力:域内通信不压缩,域间通信会压缩,分域后大部分流量留在本地域,跨域才压缩走专线。
  2. 不同子域可指定不同的安全策略:每个子域有自己的 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 理解

一个父子域环境里的"成员"分三层:

  1. 域控制器(DC):父域 DC、子域 DC,各自管各自域的账号与验证。
  2. 成员服务器:加入域、提供业务/文件等服务,按 OU 划归管理。
  3. 客户机:办公电脑,加入父域或某个子域。

分域管理就是按"组织/地域"把对象放进不同域和 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(NetBIOS CORP),子域 sh.corp.local(NetBIOS SH)。所有 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:评估整林安全健康度,特别适合发现跨域信任带来的风险

--

七、域环境安全框架总览(与单域一致,范围扩大)

五个阶段在父子域环境下同样成立,只是范围从"单域"扩到"林":

  1. 信息收集:架构、权限分布、信任关系(本篇第六节)
  2. 权限提升:从普通域用户 → 域管理员 → 企业管理员
  3. 代理隧道:打通跨域/出网通联(后续篇章)
  4. 横向移动:借信任关系在父/子域间移动(后续篇章)
  5. 权限维持:票据/后门长期控制(后续篇章)

重点记忆:父子域中,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 能把"跨域信任路径"画得一目了然,是父子域环境侦察的首选。
posted @ 2026-09-28 15:33  xsec  阅读(14)  评论(0)    收藏  举报