在本地虚拟化环境里复现一台Windows Server 2003域控制器是理解Windows域认证机制、老式协议危害和横向移动手法的最直接路径。这篇文章不讲空话直接记录我动手搭建靶机的完整过程从基础系统安装到Active Directory初始化从账户权限设计到主动暴露经典漏洞窗口再把攻击机和靶机放进同一个隔离网络里做联调。无论你是刚开始接触域渗透概念的新手还是想把AD攻击路径在靶机里真正打一遍的从业者这份手册都可以当作可复现的步骤参考。1. 项目定位与方案设计1.1 为什么选Windows Server 2003当域控靶机很多朋友不理解现在主流的域环境早就是Windows Server 2016、2019甚至更新的版本了为什么偏偏要选一个十几年前的老系统来当靶机我的理由很直接它足够脆弱也足够经典。域渗透中很多基础攻击思路都是针对早期Windows信任模型设计的比如空会话枚举、SMBv1漏洞、LSASS凭据明文存储、弱Kerberos加密类型这些在Server 2003上几乎都是默认状态。当你把这些弱点逐一点出来再打一遍会对为什么后来微软不断加固默认配置有非常直观的体感。另外从实验资源看Server 2003对硬件要求极低512MB内存、一块10GB虚拟硬盘就能跑得动整个环境对普通电脑的兼容性很好。一台物理机同时开几个虚拟机也不会太吃力。更关键的是它没有复杂的安装流程只需要一块NTFS系统分区和一次dcpromo命令就能把“单机系统”变成“域控制器”整个链路非常适合教学演示和攻击路径复现。注意老系统意味着漏洞利用代码非常成熟EternalBlue、MS08-067这些工具随手就能找到所以必须在完全隔离的虚拟网络中运行绝不能暴露到物理局域网或互联网。1.2 整体网络拓扑与角色划分我搭建的环境参考了一个常见的模拟企业内网一台域控负责集中认证一台已加域的终端主机模拟员工电脑一台Kali Linux攻击机模拟内网视角的攻击者。网络放在同一个仅主机或NAT隔离网段保证所有机器互通但不会扩散到外部。具体的角色划分如下虚拟机操作系统主机名角色IP地址DC靶机Windows Server 2003 R2 StandardDC01域控制器192.168.10.10成员主机Windows XP ProfessionalXP-PC已加域终端192.168.10.20攻击机Kali Linuxkali渗透测试发起端192.168.10.100域名我采用了corp.local这是本地实验环境里最常用的虚构域后缀避免和真实公网域名冲突。部署时先把DC建好再把XP加入域最后才启动攻击机做验证。这个顺序我踩过不少坑如果先加域再搭DC会导致一堆组策略和DNS解析问题后面会单独说。2. 环境准备与基础部署2.1 虚拟化平台选择与镜像准备虚拟化平台我用的是VMware Workstation Pro当然VirtualBox也一样能跑。两者的差别主要体现在网络模式上VMware的仅主机模式默认不提供 NAT 网关VirtualBox的内部网络全手动反正只要保证三台机器在同一个网段用哪个都行。个人更推荐VMware因为对老系统的兼容性更好鼠标指针、显示分辨率、快速快照操作都更顺手。镜像方面我手头是Windows Server 2003 R2 Standard Edition的两张ISO其中第二张盘里包含R2组件和语言包。实际安装系统只用第一张盘就够了装完后是否升级R2其实影响不大但有些时候DNS和域功能级别相关组件会多几步建议装R2完整版减少后面不必要的麻烦。虚拟机创建时的关键参数我写在这里方便参考硬盘SCSI或IDE均可容量10GB分区时直接整块C盘内存768MB不建议低于512MB处理器单核单路就够网络VMnet8 NAT模式或VMnet1仅主机模式虚拟化引擎不要勾选“基于硬件的虚拟化”老系统不需要2.2 虚拟机基础安装与配置优化安装过程其实不快Server 2003的硬件检测偶尔会拖慢进度中途还会复制文件、重启几次。最需要注意的是硬盘分区格式一定选择NTFS。虽然FAT32也能跑域控但实际上不推荐因为后续SYSVOL和FRS复制对文件安全属性有依赖NTFS才符合模板要求。系统装完后第一件事是把桌面设置调成最佳性能把不必要的动画全部关掉。接着禁用系统防火墙——靶机本身就是要暴露端口的Windows自带的ICF过滤规则反而会干扰后续验证。还有一个容易忽略的步骤是关闭自动更新因为一个刻意保留历史漏洞的靶机不应该再联网打补丁。实操心得安装时创建的本地管理员密码不用太复杂建议设置成Admin123这类方便记忆的弱口令因为后面攻击验证需要在未加入域的局面下完成本地登录。加入域之后本地管理员密码实际上就开始退居次要位置了。2.3 网络配置与快照机制安装完成后进入网络属性把本地连接的IP地址设为固定的192.168.10.10子网掩码255.255.255.0。Server 2003的网络设置入口在“网上邻居 → 查看网络连接 → 本地连接”跟后来版本的“网络和共享中心”完全不同第一次操作的人容易找不到。固定IP看上去简单但要记住一个关键点如果你的实验网段是NAT模式网关地址通常是192.168.10.2或192.168.10.1这个要看VMware的虚拟网络编辑器。DNS暂时填空或者随便填一个无关地址都行因为我们接下来要在DC上安装DNS服务届时再改成指向自己。在做任何域操作之前先保存快照。我个人的习惯是分三层打Clean-Install刚装完系统没做任何改动作为最基础的恢复点Pre-Promotion已配置静态IP但尚未提升为域控Post-AD-Configured域控制器全部配置完成且验证正常这一套快照策略让我在反复尝试配置过程中省了很多时间。如果某个步骤写坏直接恢复到Pre-Promotion状态重新跑而不是从零重装系统。3. 域控制器核心配置3.1 配置静态IP与DNS依赖很多人在dcpromo过程中遇到“域控制器无法找到已注册的DNS记录”之类的报错根源就在DNS配置上。Windows Server 2003的域控制器必须能够解析自身和域内的其他主机名而域内名称解析的核心就是DNS服务。所以提升域控之前你要确保首选DNS服务器指向当前这台机器的静态IP地址或者直接指向127.0.0.1。在实际配置时我做过两种尝试。一种是在dcpromo过程中顺便安装DNS服务器让它自动在提升阶段初始化区域另一种是先手动安装DNS服务再通过“配置您的服务器向导”创建正向查找区域。两种方式都能成功但前者更省事因为dcpromo会自动创建_msdcs.corp.local这样的关键区域手动创建就很容易漏掉一个SRV记录导致后续域成员机定位不到域控。关键参数首选DNS填192.168.10.10备用DNS可以填127.0.0.1。千万别把首选DNS填成外部公共DNS否则域内主机无法解析出域控制器的LDAP服务。3.2 dcpromo 域控制器提升步骤详解双击运行dcpromo后会进入Active Directory安装向导。这里的选择路径对整个实验环境至关重要我的操作顺序如下部署配置选择“在新林中创建新域”。这是因为我们是从零搭建没有父域和现有林环境。NetBIOS域名默认是CORP保持默认就行。这个NetBIOS名在SMB协议和旧版横向移动工具中非常常见攻击场景里经常会碰到。数据库与日志位置默认放在C:\WINDOWS\NTDSSYSVOL放在C:\WINDOWS\SYSVOL。不折腾路径保持默认。DNS注册诊断向导会提示配置DNS服务选择“在这台计算机上安装并配置DNS服务器”然后让它自己跑。权限兼容性选择“与Windows 2000或Windows Server 2003操作系统兼容的权限”这会让匿名访问SYSVOL和NETLOGON这类共享时保留更多传统行为。还原模式密码目录服务还原模式密码必须设置它用于后期通过还原模式修复AD数据库实际攻击环境中很少用到但在靶机记录里不要设置为太复杂的随机值方便恢复时使用。提升过程中会重启一次重启后登录界面和系统行为会变最直接的一个差异是登录时需要选择域。登录选项里会多出CORP域名输入域用户名和密码才能进入桌面。3.3 域账户体系设计与策略调整域环境搭好后我做的第一件事是打开“Active Directory用户和计算机”创建实验用的账户。合理的账户设计能让渗透练习更接近真实场景也让横向移动练习有地方可打。我创建的账户主要有账户名密码组成员身份用途说明AdministratorPssw0rd!Domain Admins域管理员模拟弱口令的运维账号user01User123Domain Users普通域用户supportSupport#2025Domain Admins误设到高权限组的低权限用户backupBackup123Backup Operators备用备份账户默认弱口令密码策略也需要调整。在“域安全策略”里我把密码长度最小值改成0把密码复杂度要求设为禁用。很多人都以为域控必须强制8位以上复杂密码这只是微软默认值而靶机的意义正在于反其道而行之让它符合“内部员工图省事、弱密码遍地走”的真实内网场景。排错教训域安全策略设置后组策略刷新需要几分钟甚至更久。如果要立刻生效可以强制执行一次gpupdate命令否则刚改完策略就测试登录可能还是旧策略约束。4. 靶机脆弱性设计与攻击面暴露4.1 保留旧协议模拟真实遗留环境域控靶机的“价值”完全体现在攻击面上。Server 2003默认开启NetBIOS over TCP/IP、SMBv1、NTLMv1等旧协议这些在现代系统中大多被禁止或弱化但在这里都是活跃状态。我特意把它们全部保留不去关闭目的就是让学生在真实操作中亲手验证这些协议曾经造成的后果。通过网络连接属性可以看到TCP/IP协议的高级设置中“WINS”选项卡默认勾选了“启用NetBIOS over TCP/IP”“Microsoft网络的文件和打印机共享”也默认开启。这就意味着445端口和139端口都会持续监听。域环境里还会开放53端口用于DNS解析88端口用于Kerberos389端口用于LDAP目录查询这些都是域控的基本服务攻击机扫描时都会看得清清楚楚。4.2 经典漏洞场景预置很多经典利用手法在这台靶机上可以直接打成功这也是整个环境最有学习价值的点。我梳理一下常见的攻击路径空会话枚举在没有凭据的情况下尝试与域控建立SMB空会话然后枚举用户名、共享列表、组信息。这个技术在Server 2003上很吃香因为默认restrictanonymous策略没有强制开启。MS08-067针对Server服务远程代码执行漏洞。我当时用Metasploit的ms08_067_netapi模块试了一次一次就拿到SYSTEM权限画面非常直观。MS17-010永恒之蓝漏洞Server 2003同样受影响。靶机开着SMBv1攻击机可以直接用exploit/windows/smb/ms17_010_eternalblue模块尝试拿Shell。Pass the Hash利用域管理员账户的NTLM哈希直接登录其他机器不需要明文密码。只要抓到了Administrator的哈希域内横推几乎畅通无阻。LSASS凭据转储用Mimikatz在域控上执行sekurlsa::logonpasswords经常能直接读到LSASS进程里缓存的明文密码或可逆加密密码这是老系统最著名的“送礼”行为。配置这些攻击面时不需要额外做太多事情只要不装补丁、不改默认策略它们就都天然存在。这也是老系统当靶机的先天优势。4.3 权限与共享配置的坑SYSVOL和NETLOGON两个共享目录在域环境里承担组策略脚本和登录脚本分发任务。默认情况下任何域用户都能读取SYSVOL共享中的文件这本来是正常的但问题在于很多管理员喜欢把密码脚本、配置文件直接存在组策略里结果全员都能看得见。我在靶机上主动创建了一个名为IT-Tools的共享目录指向C:\IT_Share里面放了一个backup_password.txt文件。目录的共享权限故意设置为“Everyone完全控制”这样攻击机在抓起共享列表时不需要任何凭据就可以读取文件。NTFS权限用默认继承不做单独限制。这个设计完全模仿了实际中“为了方便共享直接Everyone可写”的坏习惯。实际测试中用net view \\192.168.10.10就能看到这个共享再用type \\192.168.10.10\IT-Tools\backup_password.txt就能直接读出来。很多新手会惊讶为什么域控上会有这么明显的“后门”其实不是后门是错误配置的共享权限。5. 渗透环境配套搭建5.1 攻击机选型与连接验证攻击机我用的是Kali Linux日常做渗透测试几乎都依赖它的工具集合。装好后同样把IP设为192.168.10.100确保和域控、XP成员主机在同一个网段。如果使用NAT模式三台机都可以通过外部网关访问外网但这与实验无关我通常在测试时直接断开物理网络只保留虚拟机的内部互通。先验证基础的物理连通性用Kali执行ping 192.168.10.10能通就进入下一步。这里有一个值得注意的地方如果ping不通先检查虚拟机网络模式是否一致尤其是VMware的VMnet8和VMnet1混用了就可能出现两台机器在不同网段的情况。5.2 从攻击视角验证靶机可达性接下来最激动人心的时刻就是初步扫描。我用Nmap对域控做一次端口扫描nmap -sS -sV -O 192.168.10.10扫描结果里会出现一连串开放的端口最核心的几个包括端口服务说明53DNS域控提供域名解析88Kerberos域身份认证票据服务135RPC远程过程调用139NetBIOS-SSN旧版文件共享会话389LDAP目录服务访问445SMB文件共享和打印机共享3389RDP远程桌面服务看到445和139都开放就知道SMB类的攻击手法都有戏。如果Nmap的OS识别结果显示“Microsoft Windows Server 2003”就进一步确认了靶机版本。5.3 加域成员机的配置没有成员主机的域环境少了很多横向移动的乐趣。我准备了一台Windows XP虚拟机把它加域的过程和真实办公环境几乎一致。关键是保证XP的DNS指向DC也就是192.168.10.10这样它才能通过DNS解析找到域控进而完成Kerberos认证。在XP上执行加域操作右键“我的电脑 → 属性 → 计算机名 → 更改”选择“隶属于域”输入corp.local输入域管理员账号和密码例如CORP\Administrator重启后选择“使用计算机”中的“用户和密码”输入之前创建的域用户user01当XP成功加域后攻击机就可以把目标从单一的域控扩展到域内终端主机。比如尝试以user01身份使用PsExec连接XP验证域凭据的横向移动能力。事实上渗透练习中很多攻击都从“受害者主机上的普通域用户”出发最终目标是域控中途必然要经过成员主机这样的完整链路才更有学习价值。6. 常见问题与排查技巧实录6.1 dcpromo过程中最常碰到的报错搭建过程中我在dcpromo这个环节反复遇到各种报错很多问题在网上零散分布但实际测试时才会发现组合起来有多恶心。列举几个高频问题和我的解决思路报错“无法联系DNS服务器”检查首选DNS是否指向自身。这不是安装系统时填的IP而是网卡属性里的DNS。把TCP/IP属性里的首选DNS改为本机IP后重新运行。报错“Active Directory安装程序无法将服务器升级为域控制器”多半是SYSVOL复制失败或者NTDS文件路径不对。删除C:\WINDOWS\NTDS下的残留文件重启后重新执行dcpromo。域成员机找不到域控用nltest /dsgetdc:corp.local诊断。问题通常出在DNS区域没有_msdcs记录或者记录指向了过时的IP。6.2 内存、快照与恢复策略Server 2003虽然轻量但在一台机器上同时跑三台虚拟机其中一台还是Win XP内存分配就是个现实问题。我建议给DC分配768MBXP分配512MBKali分配2GB以上。如果宿主机的内存只有8GB这个配置能勉强跑起来再多开一台就会明显卡顿。快照的重要性我前面提过但这里再强调一次实时恢复策略。在尝试EternalBlue之类的漏洞利用时攻击机打挂靶机SMB服务是家常便饭。一旦靶机蓝屏或服务崩溃直接恢复“Post-AD-Configured”快照十几秒就能回到可用状态。这个恢复速度和从ISO重新安装相比简直是天壤之别。6.3 验证攻防效果前先确认的细节很多人搭完靶机后兴致勃勃开打结果攻击模块一直报错最后发现是环境配置的问题不是工具问题。我总结了一套自检清单防火墙状态从攻击机Nmap扫描看不到任何端口先看靶机Windows防火墙是不是偷偷开启了时间同步Kerberos对时间非常敏感如果DC和XP之间的时间差超过5分钟域登录就会报错。用w32tm /monitor强制同步一次共享权限从攻击机无法读取共享文件先检查共享权限和NTFS权限的叠加效果只要有一个是Deny就肯定失败凭据隔离从XP发起PsExec连接DC时必须明确使用域用户名或/前缀本地账户通常是无法完成跨机器认证的Wireshark抓包在验证阶段会非常有用。如果你想直观看到NetBIOS名称解析广播或者Kerberos AS-REQ/AS-REP交互过程直接抓取DC网卡流量一边看包一边执行攻击命令能让你从“结果驱动”升级到“过程驱动”理解得远比看文字深刻。7. 后续扩展与个人经验总结打完基础攻击路径后这台环境还能继续扩展。比如增加一台Windows Server 2008域成员作为历史系统的“中间版本”或者把XP换成Windows Server 2012来观察不同功能级别下攻击行为的变化。也可以引入DNS Admin组策略、VBS入侵插件这类特定技巧让实验从“简单漏洞利用”升级到“复杂权限维持”。我个人在实际操作中最大的体会是靶机的价值不在于“能不能打下来”而在于“你能不能解释清楚为什么能打下来”。Windows Server 2003域控最迷人也最危险的地方正是它把现代系统默认隐藏掉的信任关系暴露在明处。空会话为什么能枚举用户因为默认匿名策略从不拒绝。SYSVOL为什么能读密码脚本因为共享向Everyone打开。Mimikatz为什么能直接抓明文因为LSASS从来没有引入过额外的加密保护。只有亲手复现过这些慢吞吞的、看起来一点都不“黑客”的操作你才能真正明白域渗透里大量的套路都属于“利用被遗忘的信任”而不是“突破高深的技术壁垒”。最后还是那句老话所有实验都在隔离虚拟机内完成打完一盘就恢复快照不要让靶机有机会接触真实网络。安全攻防本来就是先学会在可控环境下拆解攻击再去谈防御顺序不能反。