说到 Windows Server 2003 域控制器靶机我一直觉得它是网络安全学习路上最值得搭的一套环境。别嫌它老正是因为它老才把大量默认开放、明文协议、漏洞版本统统留在那里像一座现成的攻防博物馆。搭建这套域控靶机能让你亲手体验域账户认证、共享权限、组策略覆盖、以及内网渗透从单点突破到域控接管的完整链路适合安全初学者、在校学生、IT运维人员拿来练手也适合准备红队方向的人复盘内网攻击思路。这个项目解决的核心问题很实在市面上讲解“域渗透”的资料多但真正能让你动手复现的环境少。很多教程直接让你在一个现成的靶场里点来点去却不知道账号为什么能横向、DC为什么会被提权。自己从零搭一套 2003 域控意味着你得亲手装 AD、配 DNS、建 OU、设共享把域环境的“骨架”长在自己脑子里。这篇文章就是完整的手册从虚拟机规划开始到域控搭建、靶机账号设计、漏洞场景保留再到渗透侧环境配置和常见问题排查一次讲透。1. 项目概述与需求拆解1.1 为什么选择 2003 域控做靶机很多人第一反应是都什么年代了还装 Windows Server 2003其实选它做靶机恰恰是故意的。域控是内网的核心节点所有域用户认证、DNS 解析、SMB 共享、组策略下发都集中在这里。2003 时代的 Active Directory 功能相对简单默认配置里满是“不安全的便利”——NTLM 认证没有强制约束、SMBv1 广泛开放、Guest 账户可能启用、匿名空会话可枚举用户这些放在今天的安全基线里都是严重问题但放在靶场里就是极好的教学素材。另一个原因很现实资源开销极低。一台 512MB 内存的虚拟机就能跑得很顺普通笔记本上完全带得动。你完全可以在一个实验环境里同时跑 DC、成员机、攻击机三台虚拟机CPU 和内存压力都不大。相比起现在动辄要求 8GB 内存的现代系统2003 的轻量特性让“在家搭靶场”这件事真正可行。还有一个容易被忽略的好处是版本兼容。很多老牌攻击工具和利用思路就是在那个年代诞生的对着 2003 域控运行反而比在 2019/2022 上更“顺手”。比如利用 SMB 相关的历史漏洞、NetBIOS 信息收集、NTLM 哈希转发实验在这个系统上复现的成功率高适合理解原理。我的建议是别嫌它旧把它当成内网攻防的“发源地”去搭。1.2 靶场建设的基本边界在这里必须把话讲清楚靶场只能用于本地虚拟化实验任何搭建和测试必须在完全隔离的虚拟网络中完成。我见过有人图省事把 2003 域控直接装在物理机上或者把虚拟网卡桥接到办公室交换机这些都是大忌。一旦 2003 被真实内网扫描到它那堆默认开放的端口和过时协议等于给真实环境敞开大门。我自己的标准做法是虚拟机网络全部用“仅主机模式”或自定义的隔离 VMnet彻底断开外网和物理局域网。攻击机和靶机坐在同一个隔离网络里模拟内网环境但外面的人完全看不到它。这样做既保证实验能顺利进行又不会把风险传导到真实基础设施上。实验做完记得关机或挂起不要一直开着。设定这个底线之后环境里的“漏洞”和“弱口令”才敢放开手脚。因为你面对的不是真实的业务系统而是一个精心构造的、可以在任何时间打回原形的沙盘。这种“想怎么折腾就怎么折腾随时快照回滚”的自由才是一套好靶场最核心的价值。1.3 角色划分与目标定义这套环境里我规划了三类角色域控制器DC、域成员机PC、攻击机Kali。DC 就是 Windows Server 2003承担 DNS 和 Active Directory 域服务成员机我选了一台 Windows 10 虚拟机用来模拟员工终端体验“加域”的过程和后续横向移动路径攻击机用 Kali Linux既负责主动扫描也承载各种手工利用工具。学习目标也在一开始就定清楚从无任何域内凭据开始通过信息收集找到弱点逐步获得一台普通域主机控制权再尝试提权、抓取本地密码哈希、枚举域内共享和用户最后通过 DCSync 或 SID History 等方式尝试接管域控。整个过程等于把一条典型的域内攻击链完整走一遍。为了配合这条链路域内的账号、组、共享目录、组策略都是精心设计的既有普通用户、本地管理员也有容易被误用的服务账号和残留凭据。这样当你做实验时每一步都有“线索”可追不会觉得目标虚无缥缈。与其说这是一篇搭建教程不如说是在设计一套攻防小剧场。2. 环境规划与前置准备2.1 网络拓扑与 IP 规划搭建之前网络拓扑必须先在纸上画清楚。我采用的是经典的“三机一网”结构三台虚拟机都接在同一个隔离网段模拟一个小型办公内网。规划不好后面所有步骤都会踩坑。角色操作系统计算机名IP 地址DNS 指向域控制器Windows Server 2003 SP2DC01192.168.10.10本机 192.168.10.10域成员机Windows 10 LTSCPC01192.168.10.20192.168.10.10攻击机Kali LinuxKALI01192.168.10.100192.168.10.10网段选 192.168.10.0/24干净好记。注意几个细节DC 的 IP 必须是静态的而且 DNS 一定要指向自己的 IP成员机的 DNS 也指向 DC否则加域时找不到域控制器。攻击机在 DDNS 上其实无所谓指向 DC 只是为了后续用域名解析内网主机名更方便。这里提醒一句虚拟机的网卡类型建议用 Intel E1000兼容性最好。如果用默认的 AMD PCNet安装老系统时偶尔会遇到网卡驱动识别问题浪费时间。网络拓扑越简单越好重点是所有机器之间能互通又能和外部世界隔离。2.2 虚拟机资源规划2003 是个对资源极其友好的系统只要别给太少导致卡死都能好好干活。我的分配方案如下DC01内存 1024MBCPU 单核磁盘 20GBPC01内存 2048MBCPU 双核磁盘 60GBKALI01内存 2048MBCPU 双核磁盘 40GB2003 的系统盘 20GB 已经非常富余因为 AD 数据库、日志、SYSVOL 集中存放通常占不了太多。内存 512MB 也能跑但开 AD 用户和计算机管理单元时会稍慢1GB 是最舒服的平衡点。磁盘控制器建议选 LSI Logic安装系统时需要按 F6 加载驱动的情况会比较少。安装顺序也有讲究先把成员机和 DC 都装好系统再统一配置网络。如果先配置 PC 再装 DC中间测试加域会因为找不到 DNS 而报错容易让人误判问题。我的习惯是把 DC 作为最后一个装完系统的机器因为它是整张网的“核心节点”需要在其他机器就绪后再让它登场。2.3 操作系统镜像与补丁策略Windows Server 2003 我使用的是 SP2 版本建议不要打现代系统的累积补丁到最新。为什么靶场需要“历史漏洞”存在打满补丁等于把博物馆的展品都涂上保护剂反而不利于观察和实验。保留原始 SP2 状态才是最佳靶机状态。安装时还需要留意序列号环节建议使用 MSDN 评估版或自有授权不要使用破坏性工具激活。这是最基本的合法合规问题宁可让系统处于评估状态也不要给自己留麻烦。安装分区统一用 NTFS不要选 FAT32否则后续权限模拟会因为文件系统不支持 ACL 而失效。语言版本方面我用的英文版因为很多渗透工具对中文系统日志解析偶尔有乱码问题。如果你是入门者中文版也行只是后续对照工具输出时多一道转换。系统安装完成后先不要急着配域先把管理员密码设置得简单点如 admin123后面逐步把它当成靶场“弱口令”的一部分。2.4 快照与恢复策略搭靶场最有价值的习惯就是“勤打快照”。2003 配置域控时步骤不少任何一步错了都可能让你卡在“域不存在”或“DNS 注册失败”的泥潭里。我的快照节奏是系统装完、密码设置好、网络配置完成拍快照“基础系统”DCPromo 之前拍快照“准备提升域控”域控提升完成、DNS 正常、管理工具可打开拍快照“域控就绪”创建好用户、组、共享后拍快照“靶场全量配置完成”每个快照配一个清晰的名字后续做实验时假设把环境搞烂了直接从“靶场全量配置完成”回滚一分钟内恢复活力。这个习惯从我搭第二遍时才养成当时第一个环境被我玩坏后重装系统浪费了两个晚上心疼得不行。从零开始搭的朋友请把这个快照习惯刻进肌肉记忆。3. 域控搭建全流程3.1 基础配置静态 IP、计算机名、DNS系统安装完成后第一件事不是运行 DCPromo而是把网络基础摆正。打开网络连接属性给本地连接设置静态 IP 192.168.10.10子网掩码 255.255.255.0网关留空即可隔离网络不需要网关DNS 服务器填 192.168.10.10。这里容易犯的错是 DNS 留空或者填了外网 DNS后面域控提升时就报“无法联系 DNS 服务器”。改完 IP 之后把计算机名从默认的随机字符串改成 DC01。改完计算机名系统会要求重启不要跳过。重启之后验证一下网络是否通ping 192.168.10.10自己 ping 自己只是基础更关键的是确认网卡能正常收发。如果这一步没问题就可以准备 AD 安装了。这里我特意强调一个细节Windows 2003 在修改计算机名后DNS 后缀要和域名的 NetBIOS 规划一致。比如你准备建域corp.local那在系统属性里可以把主 DNS 后缀直接写成corp.local后面加域和注册 SRV 记录会更顺畅。不用太担心原理记住“先定域名再改后缀最后提升”这个顺序即可。3.2 运行 DCPromo 提升域控提升域控的命令是dcpromo在“运行”框里输入回车即可。2003 的 DCPromo 向导比现代版本简单得多因为它直接引导你完成新林创建。选择“新域的域控制器”然后选“在新林中的域”接着输入根域名比如corp.local。注意 2003 不认单一标签域名如corp必须带后缀。向导会让你指定数据库、日志文件与 SYSVOL 的位置全部默认即可。NetBIOS 域名它会自动填成CORP保持默认。接着设置“还原模式密码”这是目录服务恢复模式的密码以后修复 AD 数据库时要用一定记住它比如Admin123。到这里向导就可以开始安装了期间需要插入系统安装光盘或指定镜像里的i386目录提前准备好路径。整个安装过程大约半分钟到几分钟期间会自动配置 DNS 服务、创建 NTDS 数据库、复制 SYSVOL 共享。完成后系统会自动重启。重启后登陆界面会多一个“Active Directory Domain Controller”的角色提示这时候域控只是“建成了”还没到“好用”的状态还要验证 DNS 和关键服务是否能正常启动。3.3 配置 DNS 与域功能级别2003 域控上的 DNS 是 AD 的命脉域内所有机器都要靠它找域控。打开 DNS 管理器你会看到自动生成的_msdcs.corp.local区域和一堆 SRV 记录。验证方式很简单用nslookup查询corp.local看是否能返回 DC01 的 IP再查询_ldap._tcp.corp.local看能否列出 LDAP 服务记录。只要这两条能通域控的注册就已经完成。域功能级别是很多人忽略的点。在“Active Directory 域和信任关系”里把域功能级别从“Windows 2000 混合模式”提升到“Windows Server 2003”。这一步的意义是启用更完整的 AD 功能比如域控制器重命名、更精细的组策略支持。虽然对我们靶场来说更多是“仪式感”但做这一步能少很多奇怪的小毛病。如果 DNS 区域没有自动出现或者 SRV 记录缺失最常用的修复手段是打开命令提示符执行netdiag /fix或者重启 Net Logon 服务。2003 的 DNS 故障大多和 IP 配置、防火墙有关系检查这两项往往比深挖 DNS 原理更高效。3.4 创建域用户、组和 OU域建好了接下来就是给靶场设计“演员表”。打开“Active Directory 用户和计算机”在corp.local下建一个 OU 叫Employees再建一个带嵌套结构的 OU 叫AdminGroups。OU 的层次会让后续组策略实验更真实比如针对性给某个 OU 下发不同策略。用户方面我建了这几个经典账号用户名密码所属组设计意图aliceAlice123Domain Users普通域用户日常办公场景bobBob123Domain Users, Remote Desktop Users可远程登录的普通用户admin01Admin123Domain Admins域管账号弱口令测试目标svc_backupSvc123Backup Operators残留服务账号容易泄露guestGuest123Guests启用 Guest测试空会话和匿名访问不要把所有这些账号一次全放进 Domain Admins那样试验就没有层次了。让普通用户待在 Domain Users只给一个 admin01 有域管权限这样你在做横向移动实验时才能感受到“普通用户提权到域管”的层次推进。组策略上也做一些基础配置比如默认域策略里开启“审核登录事件”和“审核对象访问”这样后面攻击时留下的日志才看得到。这部分其实是为最终的复盘做准备靶场不能只看“攻击成功”的结果也要能从日志里反推出攻击链路这才是真正学到东西的地方。3.5 配置共享目录与基础服务域控上最好设置一个共享目录模拟内部文件服务器。在 D 盘建一个ShareData文件夹右键属性设置共享共享权限给 Everyone 完全控制NTFS 权限单独设置成按用户划分。这样实验时既能体验 SMB 枚举共享列表又能练习研究共享权限和 NTFS 权限的叠加效果。FTP 服务我建议用 IIS 自带的 FTP 搭一个端口保持 21目录指向另一个独立文件夹允许匿名访问并允许写入。很多内网渗透的场景里 FTP 都是“被攻破的第一落点”而 2003 自带的 IIS 6.0 正好包含大量历史悠久的问题把它搬进来等于免费送了一个学习道具。防火墙方面SP2 默认会启用 Windows 防火墙靶场环境下建议直接关闭或放行所有端口不然你可能在测试共享时反复被“访问拒绝”卡住。在本地连接属性里取消勾选“Internet 连接防火墙”或在服务里停掉 Windows Firewall/Internet Connection Sharing 服务即可。这个操作看似“不安全”但在隔离的靶场环境中省掉的是大量排查时间。4. 渗透测试环境侧配置4.1 攻击机准备与连通性验证攻击机我选择 Kali Linux安装过程简单自带大量工具。装完后先做一个最小网络验证ip addr看看 IP 是否落在 192.168.10.100再ping 192.168.10.10确认能通 DC。把 DNS 指向 DC 之后尝试nslookup corp.local如果解析正常说明攻击机已经能发现整个域的入口。如果是从 Windows 侧做攻击实验也可以用一台 Windows 机器装工具集但传统上 Kali 更顺手。建议攻击机里装好 Nmap、SMBmap、Enum4linux、Impacket 套件这些基础工具后面做信息收集时随时调用。很多人卡在“装了 Kali 但不知道用什么工具”其实问题不是工具少而是没有把扫描、枚举、利用、提取这一串流程串起来。连通性验证完成后再跑一次简单的端口扫描确认靶机状态nmap -sT -p 1-1024 192.168.10.10正常会看到 135、139、445、53、88、389 这些域控特征端口。看到这些端口开着就说明靶机服务就绪攻击链路可以开跑。4.2 保留关键漏洞场景这一节是最有“靶场味道”的部分。2003 SP2 作为靶机故意不清除的漏洞场景有这些SMBv1 协议完全开放匿名空会话可枚举用户名、共享列表和机器信任信息MS08-067 漏洞存在的补丁缺失可利用远程代码执行漏洞获取 SYSTEM 权限弱口令账号admin01可直接爆破且域管密码策略未设复杂度LDAP 匿名绑定未限制可用工具枚举整个域内的所有对象Simple 共享模式在部分磁盘上启用文件类 ACL 易被绕过这些场景不是靠“装个漏洞”实现的而是系统性不修复的结果。这正是 2003“天然靶机”的好处你不需要去下载专门的弱化脚本原生状态就是漏洞满身。需要小心的是像 MS08-067 这类漏洞利用代码在老系统上稳定复现但现代防御系统基本免疫做实验时务必限定在隔离靶场内完成绝不能指向任何真实 IP。设置完毕之后建议在一个干净快照里把这些漏洞状态固定下来并在实验手册里记录补丁级别和开放端口清单。这样做有两个价值一是让实验结果可复现二是培养自己写实验文档的习惯。真正的攻防能力很大程度上来自于对每个环境状态的精确掌控。4.3 规划一条完整攻击路径攻击机的“剧本”我建议这样设计从零信息开始一步步走到域控枚举Nmap 端口扫描 SMB 空会话枚举拿到用户列表定向锁定用户名 alice 和 svc_backup尝试弱密码或爆破立足获得一台域主机控制权比如成员机 PC01提权用本地漏洞或错误配置提升到本机管理员内网漫游枚举域内共享、会话、管理员组名单域控接管提取域管哈希或利用 DCSync最终登录域控每一步都要想清楚“为什么会成功”。空会话为什么能枚举用户因为 2003 的 RestrictAnonymous 默认值没有限制。弱密码为什么能爆破因为账号没有锁定阈值。DCSync 为什么有效因为域管权限能从复制目录变更里拿到密码哈希。靶场是个放大器它能放大你理解的程度前提是你别只点一下“一键 exploit”却完全不知道背后发生了什么。4.4 审计监控与日志保留靶机不只是“用来打的”还是用来“读日志”的。在域控上开启必要的审核策略登录事件、账户管理、对象访问、目录服务访问都在组策略里设为成功和失败都审核。这样当你走完一条攻击链再到事件查看器里反查日志就能看到攻击者操作过程中留下的足迹。这一步的价值经常被初学者低估。很多人认为靶场就是“完成 exploit 就算完”忽略了提升洞察力的关键环节。真实工作中你不可能只看攻击面还要能追踪攻击行为。2003 的日志虽然不像现代系统那么丰富但安全事件 ID如 528/540 登录成功、531 账户锁定等足够让你还原每一步练熟了之后再看现代系统的日志会更有感觉。日志会占用硬盘空间实验前把日志大小上限调大并设置按日期覆盖避免跑了几天之后日志被冲掉。我在实际搭建中就吃过一次这样的亏整个攻击链打完了想回看日志却发现日志文件早就被多次实验写满覆盖了复盘直接断档。5. 实操过程与关键命令记录5.1 搭建后的信息收集实战这套环境最直观的实操就是域内信息收集。攻击机上先用 Nmap 看一眼域控nmap -sT -sU -p 53,88,135,137,139,445,389,3389 192.168.10.10这组命令会暴露域控最典型的端口集合。看到 UDP 53、TCP 88、389 开着基本可以判断就是域控。接着用 SMB 空会话枚举用户2003 时代的老朋友 Enum4linux 依然好用enum4linux -U 192.168.10.10这条命令如果输出客户账户列表说明空会话没被限制。拿到用户列表后你会看到 alice、bob、admin01、svc_backup 这些名字后面就能针对性做密码猜测。不要一股脑对所有人爆破先拿域管账号试试弱密码往往最快见效。5.2 验证域控服务与信任关系如果你想确认域控 AD 服务是否健康可以从攻击机上用 LDAP 查询验证ldapsearch -x -H ldap://192.168.10.10 -b dccorp,dclocal (objectClassuser) sAMAccountName能返回用户列表就说明 LDAP 服务正常。再用nmblookup -A 192.168.10.10看 NetBIOS 名称表正常会看到00代表工作站服务、1C代表域控制器标识。这一组命令非常直观能让你迅速确认自己面对的是不是一台真正的域控。如果你在搭建过程中做了成员机加域操作也可以顺手验证一下域信任关系。在成员机 PC01 上执行nltest /domain_trusts /all_trusts这条命令在 Windows 上能列出当前域信任列表。虽然 2003 单域环境下输出很简单但当你在真实项目中管理多域环境时这个命令会成为排查信任关系的首选工具。5.3 关键利用与权限验证参考靶场里最容易复现的利用就是 MS08-067利用代码非常多实验时务必保持隔离网络。成功执行后你会直接得到 SYSTEM 权限的 shell。拿到权限第一件事不是沾沾自喜而是验证自己的“权限边界”——当前账号是什么、能访问哪些目录、能不能读域管哈希。这些信息直接决定了后续横向路径。提权完成后记得保存一份被攻击前后的系统进程列表和网络连接状态。一份干净的系统在攻击前后差异巨大对比这些差异能帮你理解漏洞利用到底做了什么动作而不是只看到一张“把 shell 弹回来”的截图。实际上任何一款利用工具的成功都只是开始后面的“发生了什么变化”才是进阶学习的关键。5.4 域控接管实验路径参考从普通域用户到域控接管我在这个靶场上跑通的经典路径是alice 弱口令 - 得到普通域用户 横向枚举共享 - 找到 svc_backup 残留会话 凭据提取 - 取得 Backup Operators 哈希 DC 同步 - 再提权到域管其中 DCSync 需要用域管权限从域控上复制密码哈希。靶场里这一步是完美的“收尾动作”因为它把整条攻击链的目标画上句号。实现方式现在都有成熟工具但关键是理解前提要有足够权限的账号要能访问域控的复制接口这两个条件在 2003 环境下都容易满足。实验跑通后尝试在事件查看器里找对应的日志记录验证一切有迹可循。6. 常见问题与排查技巧实录搭建过程中最容易翻车的几个点我整理成一张速查表。这张表不是凭空写的都是我在实际搭建这套环境时反复踩过的坑。现象可能原因解决思路DCPromo 提示无法联系 DNS本机 DNS 未指向自己改为静态 192.168.10.10重启后再试加域时找不到域控制器成员机 DNS 指向错误把成员机 DNS 改为 DC 的 IPSYSVOL 和 NETLOGON 共享不出现Net Logon 服务未启动重启 Net Logon 服务或执行netdiag /fix域控制器提升后无法登录还原模式密码遗忘用目录服务还原模式进系统重设密码远程桌面登录被拒2003 默认未开启远程桌面在系统属性里勾选“允许远程协助”及相关选项共享访问反复要求密码Guest 账户未启用或空会话受限启用 Guest或检查 RestrictAnonymous 注册表值Nmap 扫不到任何端口虚拟机网络模式错误或防火墙拦截检查 VMnet 隔离网络或关闭靶机防火墙攻击机无法解析域控主机名DNS 配置未指向 DC修改 Kali 的 resolv.conf 指向 192.168.10.10除了表里的问题还有几个“偏门”但很实用的排查技巧。如果你发现 DCPromo 过程中卡在“正在复制 SYSVOL”先别急着重新装系统多半是 DNS 区域里缺少 SYSVOL 的 SRV 记录。打开 DNS 管理器找到_msdcs.corp.local下的_tcp节点检查有没有_kpasswd和_ldap记录缺失的话可以手动补一条也可以直接重启域控让它重新加载注册。很多朋友会遇到“实验过程中攻击机连不上域控但域控能连攻击机”的怪象。这通常不是防火墙问题而是域控上的网络连接在休眠或电源管理策略下把自己“睡”了。把 2003 的电源计划设为“一直开着”并禁用网卡的节能选项问题立刻消失。这类细节文档里不写但实际搭建时非常磨人。另一个值得强调的经验是在 2003 上安装任何现代工具都存在兼容性问题。比如新版 Nmap 的某些功能依赖较新系统级的库在攻击机上的 Kali 里使用毫无问题但如果你非要在 2003 本机跑现代扫描器会遇到一堆兼容报错。所以正确姿势是把工具装到攻击机上靶机只做“被观测、被攻击”的对象不要混合使用。最后再分享一个我百试不爽的习惯每完成一个拓扑步骤立刻在攻击机上跑一次基础连通性测试并把结果截图或保存到实验记录里。做记录的时间永远都不会白费因为它让你的每一次失败都能被精准回溯。我自己搭这套环境的三遍过程中第二遍几乎全是在排查 DNS 问题当时如果有记录本至少能省两个小时。这套环境全部跑通之后你再回过头去看各种域渗透教程会发现自己看懂了那些命令背后的来龙去脉。以前觉得“神秘”的认证协议、哈希传递、组策略继承都变成了可视化的操作对象。这就是自己动手搭靶机和直接看现成靶场的根本区别你没有跳过任何一环。