📚 网络安全 Kali 学习系列
模块 0 基础阶段 ✅ 已完成
01-18 Linux → 网络 → 密码学 → 编程 → Docker
模块 1 信息收集 ✅ 已完成 | 模块 2 Web渗透 ✅ 已完成
19-31 扫描 → 漏洞 → sqlmap → XSS → WAF绕过
模块 3 代码审计 ✅ 已完成
32-37 审计入门 → Node.js → PHP → Java → Python → CVE复现
模块 4 漏洞利用与后渗透 ✅ 已完成
38-43 Metasploit → Payload → 提权 → 维持 → 免杀
模块 5 内网渗透与域攻防(进行中)
44-48 逆向与恶意软件分析 ✓
49 Windows 权限体系与域环境(当前篇)
50 域信息收集 | 51 Kerberos 攻击
52 凭证窃取与横向移动 | 53 内网代理与 C2
Windows 权限体系与域环境搭建
网络安全 Kali 学习系列 · 第 49 篇 · 模块 5 内网渗透与域攻防

读完本篇你将能:理解 Windows 访问控制模型(SID、ACL、ACE、令牌),掌握内置用户组的权限差异,理解 Active Directory 域的基本架构(域控制器、OU、组策略、信任关系),能在 VMware 中搭建一个完整的域环境(1 台 DC + 2 台成员机),并配置组策略和用户账户,为后续域渗透学习打下实验基础。

从本篇开始进入内网渗透模块。企业内网的核心是 Windows 域(Domain),它用 Active Directory(AD)统一管理所有计算机、用户、策略。要学好域渗透,必须先理解域的工作原理。本篇先从单机 Windows 权限体系讲起,再扩展到域环境,最后手把手教你搭一个域实验环境。

目录

第一章 Windows 权限体系:SID 与 ACL
第二章 内置用户组与特权
第三章 Active Directory 域架构
第四章 域控制器与组策略
第五章 域环境搭建实战
第六章 分级练习

第一章 Windows 权限体系:SID 与 ACL

Windows 的权限体系围绕两个核心概念构建:SID(安全标识符)标识"谁",ACL(访问控制列表)规定"谁能做什么"。每次访问资源时,系统会比对访问者的令牌和资源的 ACL,决定是否允许访问。

1.1 SID 安全标识符

SID 是 Windows 中每个安全主体(用户、组、计算机)的唯一身份标识,格式为 S-R-I-S-S...。用户名可以改,但 SID 一旦生成就不会变。系统内部全部用 SID 做权限判断,用户名只是给人看的。

CMD · 查看 SID get_sid.cmd
1
2
3
4
5
6
7
8
9
10
11
:: 查看当前用户的 SID
whoami /user
 
:: 查看所有用户的 SID
wmic useraccount get name,sid
 
:: PowerShell 方式
Get-LocalUser | Select-Object Name,SID
 
:: 查看当前令牌中的 SID 列表
whoami /groups
知名 SID 对应账户 说明
S-1-5-18 SYSTEM / Local System 本地系统最高权限,服务默认账户
S-1-5-19 Local Service 本地服务账户,权限受限
S-1-5-20 Network Service 网络服务账户,可访问网络资源
S-1-5-32-544 Administrators 组 本地管理员组
S-1-5-32-545 Users 组 普通用户组
S-1-5-32-555 Remote Desktop Users 允许远程桌面登录的组

1.2 ACL 与 ACE

每个文件、注册表键、服务都有一个 ACL(访问控制列表),里面包含多条 ACE(访问控制项)。每条 ACE 定义了"哪个 SID 被允许/拒绝哪种权限"。访问检查时,系统从上往下遍历 ACE,找到匹配项就立即生效(拒绝优先于允许)。

💡 权限判断流程
1. 用户登录 → 生成访问令牌(包含用户 SID + 所有组 SID)
2. 访问资源 → 系统拿令牌和资源 ACL 比对
3. 遍历 ACE 列表 → 遇到"拒绝"立即拒绝 → 遇到"允许"记录下来
4. 所有需要的权限都被允许 → 访问成功
5. 任何一个所需权限被明确拒绝 → 访问失败

第二章 内置用户组与特权

Windows 有很多内置组,每个组有不同的权限和特权。理解这些组的能力,对提权和内网渗透至关重要——很多时候不需要拿到管理员密码,只要利用某个组的特殊权限就能横向移动或提权。

2.1 关键内置组

组名 权限描述 渗透利用点
Administrators 完全管理权限,可执行任何操作 提权目标
Backup Operators 可绕过文件 ACL 读取/备份任意文件 读取 SAM/NTDS.dit
Event Log Readers 可读取所有事件日志 信息收集、找敏感日志
Remote Desktop Users 允许通过 RDP 登录 横向移动入口
Server Operators 可管理服务、创建共享 服务提权
Account Operators 可创建/修改域用户和组 创建后门账户

2.2 特权(Privilege)

除了 ACL 的文件/注册表权限,Windows 还有"特权"(Privilege)的概念——某些系统级操作(如加载驱动、修改系统时间、调试其他进程)需要特定的特权。常见的危险特权包括:

特权名称 功能 利用方式
SeDebugPrivilege 调试任意进程 从 SYSTEM 进程中窃取令牌
SeImpersonatePrivilege 模拟客户端令牌 JuicyPotato / RoguePotato 提权
SeBackupPrivilege 绕过 ACL 读取文件 读取 SAM 注册表、NTDS.dit
SeRestorePrivilege 绕过 ACL 写入文件 写入 DLL 劫持、覆盖系统文件
SeLoadDriverPrivilege 加载/卸载驱动 加载恶意驱动提权
CMD · 查看当前特权 check_privs.cmd
1
2
3
4
5
:: 查看当前令牌的所有特权
whoami /priv
 
:: PowerShell 版本(更易读)
whoami /priv | Select-String "Enabled"

第三章 Active Directory 域架构

Active Directory(活动目录,简称 AD)是微软的目录服务,是 Windows 域的核心。域(Domain)是一个管理边界,域内所有的用户、计算机、组策略都由域控制器(Domain Controller,DC)统一管理。企业内网 90% 以上都是域环境,内网渗透的核心就是域渗透。

3.1 AD 核心组件

组件 作用 渗透相关性
域控制器 (DC) 运行 AD DS 服务,存储目录数据 最高价值目标,拿下 DC = 拿下整个域
NTDS.dit AD 数据库文件,存储所有域用户哈希 域内 Hash 传递、票据攻击的核心
OU (组织单元) AD 的逻辑分组,用于委派管理 查找高价值目标、ACL 攻击面
组策略 (GPO) 批量配置计算机和用户设置 GPO 下发后门、SYSVOL 密码泄露
DNS 域内名称解析,定位 DC 和服务 信息收集、定位 DC
Kerberos 域认证协议 Kerberoasting、AS-REP Roasting、黄金票据

3.2 域信任关系

大型企业通常有多个域(或林),域之间通过"信任关系"互相访问。信任的方向决定了谁能访问谁的资源。常见的信任类型有:

信任类型 方向 传递性
父子域信任 双向 可传递
林根信任 双向 可传递
外部信任 单向或双向 不可传递
林信任 单向或双向 可传递

第四章 域控制器与组策略

4.1 FSMO 角色

一个域可以有多台 DC(负载均衡+冗余),但某些操作只能由特定的 DC 执行,这些 DC 被称为 FSMO(灵活单主机操作)角色。共有 5 个 FSMO 角色,其中 2 个林级别、3 个域级别。

角色 级别 职责
Schema Master 林 修改 AD 架构
Domain Naming Master 林 添加/删除域
RID Master 域 分配 SID 的 RID 部分
PDC Emulator 域 密码更新、时间同步、组策略
Infrastructure Master 域 跨域引用更新

4.2 组策略(GPO)

组策略是域管理的利器——管理员可以通过 GPO 批量配置所有域内计算机和用户的设置:从桌面壁纸到密码策略,从软件部署到脚本执行。GPO 的配置存储在 DC 的 SYSVOL 共享中,所有域用户都有权读取。

💡 渗透提示
SYSVOL 是域渗透的信息金矿。它存储在 \\\SYSVOL\,所有域用户可读。历史上很多管理员会把密码写在 GPO 的登录脚本里(如映射网络驱动器的脚本),导致整个域的密码泄露。组策略首选项(GPP)的密码虽然加密,但加密密钥是公开的(MS14-025),可以直接解密。

第五章 域环境搭建实战

理论说完了,动手搭一个实验环境。我们要搭一个最简单的单域环境:1 台 Windows Server 作为 DC,2 台 Windows 10 作为成员机。后续的域渗透实验都在这个环境里做。

5.1 环境规划

主机名 角色 操作系统 IP
DC01 域控制器 Windows Server 2019/2022 10.0.0.10
WS01 成员服务器/工作站 Windows 10/11 10.0.0.20
WS02 成员服务器/工作站 Windows 10/11 10.0.0.21
Kali 攻击机 Kali Linux 10.0.0.100

域名:corp.local(测试环境推荐使用 .local 后缀,避免和真实域名冲突)

5.2 安装 DC 的步骤

PowerShell · 安装 AD DS 并提升为 DC install_dc.ps1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 1. 设置静态 IP(DC 必须静态 IP)
New-NetIPAddress -IPAddress 10.0.0.10 `
-PrefixLength 24 -InterfaceIndex (Get-NetAdapter).ifIndex
Set-DnsClientServerAddress -InterfaceIndex (Get-NetAdapter).ifIndex `
-ServerAddresses ("127.0.0.1","8.8.8.8")
 
# 2. 设置主机名
Rename-Computer -NewName "DC01" -Restart
 
# 3. 安装 AD DS 角色
Install-WindowsFeature AD-Domain-Services -IncludeManagementTools
 
# 4. 提升为域控制器(创建新林/新域)
Install-ADDSForest -DomainName "corp.local" `
-DomainNetBiosName "CORP" -ForestMode WinThreshold `
-DomainMode WinThreshold -Force

5.3 创建域用户和组

PowerShell · 创建域用户 create_users.ps1
1
2
3
4
5
6
7
8
9
10
11
12
# 创建 OU(组织单元)
New-ADOrganizationalUnit -Name "Users" -Path "DC=corp,DC=local"
New-ADOrganizationalUnit -Name "Servers" -Path "DC=corp,DC=local"
 
# 创建域用户(密码需要符合复杂度要求)
$pass = ConvertTo-SecureString "P@ssw0rd123!" -AsPlainText -Force
New-ADUser -Name "Alice" -SamAccountName "alice" `
-Path "OU=Users,DC=corp,DC=local" `
-AccountPassword $pass -Enabled $true -ChangePasswordAtLogon $false
 
# 添加到域管理员组(测试用)
Add-ADGroupMember "Domain Admins" -Members "alice"

5.4 将客户机加入域

PowerShell · 加入域 join_domain.ps1
1
2
3
4
5
6
7
8
9
# 1. DNS 指向 DC
Set-DnsClientServerAddress -InterfaceIndex (Get-NetAdapter).ifIndex `
-ServerAddresses "10.0.0.10"
 
# 2. 加入域
Add-Computer -DomainName "corp.local" -Credential "CORP\alice" -Restart
 
# 重启后用域账户登录即可
# 登录格式:CORP\alice 或 alice@corp.local
💡 环境搭建建议
1. 所有虚拟机都用同一块"仅主机模式"网卡,确保网络互通且与物理机隔离
2. DC 装好后立刻拍快照,后续实验搞坏了随时回滚
3. 建议创建多个不同权限的用户(管理员、普通用户、服务账户),方便各种实验
4. 客户机加入域后也拍快照,每做完一类实验就回滚一次
5. Windows 评估版可以用 slmgr -rearm 延长试用期

第六章 分级练习

🟢 基础验证

任务:在 Windows 本机上(或虚拟机中)完成以下练习:(1) 用 whoami /user 查看当前用户的 SID;(2) 用 whoami /priv 查看当前用户的特权列表,找出已启用的特权;(3) 用 icacls 命令查看 C:\Windows 目录的 ACL,理解每条 ACE 的含义;(4) 创建一个普通用户,登录后对比和管理员的特权差异;(5) 在 Kali 上用 rpcclient 或 crackmapexec 连接 Windows,验证账户权限。

🟡 组合应用

任务:搭建完整的域实验环境:(1) 安装 1 台 Windows Server 作为 DC,域名设为 hacklab.local;(2) 安装 2 台 Windows 10 并加入域;(3) 创建 5 个域用户(alice、bob、charlie 为普通用户,dave 为域管理员,svc_sql 为服务账户);(4) 创建 3 个安全组(IT组、HR组、Finance组),将用户分别加入不同组;(5) 创建一个 GPO,设置所有域用户的密码策略(最短 8 位、复杂度要求);(6) 用 Kali 的 nmap 扫描整个网段,验证 DC 和客户机都在线。记录搭建过程和遇到的问题。

🔴 开放挑战

任务:搭建一个更复杂的域环境(父子域或林信任),为后续高级域渗透做准备:(1) 先搭一个根域(如 root.local)和一台 DC;(2) 再搭一个子域(如 apac.root.local)和一台 DC;(3) 验证父子域信任关系是否自动建立;(4) 在子域中创建用户,验证能否访问根域资源;(5) 用 BloodHound 导入两个域的数据,查看信任关系的攻击路径;(6) 尝试从子域的普通用户出发,找到攻击根域的路径(不需要实际利用,只做路径分析)。

进阶方向:研究 AD CS(Active Directory 证书服务)的搭建和攻击。AD CS 是近年来域渗透的热门方向,很多企业环境中都部署了证书服务,但配置不当会导致严重的权限提升漏洞(如 ESC1-ESC8)。搭一个 AD CS 环境可以为后续学习证书攻击打基础。

知识回顾

SID 安全标识符 ACL / ACE 访问令牌 内置用户组 SeDebugPrivilege SeImpersonatePrivilege Active Directory 域控制器 DC NTDS.dit 组策略 GPO SYSVOL FSMO 角色 Kerberos 域信任关系

下一篇预告

域环境搭好了,接下来就是域渗透的第一步——域信息收集。拿到一个域内的普通用户权限后,你需要搞清楚:这个域有多大?有多少用户、多少机器、多少组?哪些人是管理员?哪些机器是高价值目标?下一篇将介绍两款最强大的域信息收集工具:PowerView(PowerShell 脚本,手动收集)和 BloodHound(图形化攻击路径分析,自动找出提权路径)。BloodHound 是域渗透的"导航地图",能把复杂的域关系可视化,让你一眼看出从当前位置到域管理员的最短攻击路径。

关注本公众号,持续获取网络安全 Kali 学习系列更新。如果觉得有帮助,欢迎点赞、在看、分享给同样在学习网络安全的朋友。