在本地虚拟化环境里复现一台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过滤规则反而会干扰后续验证。还有一个容易忽略的步骤是关闭自动更新,因为一个刻意保留历史漏洞的靶机,不应该再联网打补丁。实操心得:安装时创建的本地管理员密码不用太复杂,建议设置成Admin@123这类方便记忆的弱口令,因为后面攻击验证需要在未加入域的局面下完成本地登录。加入域之后,本地管理员密码实际上就开始退居次要位置了。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\NTDS,SYSVOL放在C:\WINDOWS\SYSVOL。不折腾路径,保持默认。DNS注册诊断:向导会提示配置DNS服务,选择“在这台计算机上安装并配置DNS服务器”,然后让它自己跑。权限兼容性:选择“与Windows 2000或Windows Server 2003操作系统兼容的权限”,这会让匿名访问SYSVOL和NETLOGON这类共享时保留更多传统行为。还原模式密码:目录服务还原模式密码必须设置,它用于后期通过还原模式修复AD数据库,实际攻击环境中很少用到,但在靶机记录里不要设置为太复杂的随机值,方便恢复时使用。提升过程中会重启一次,重启后登录界面和系统行为会变,最直接的一个差异是登录时需要选择域。登录选项里会多出CORP域名,输入域用户名和密码才能进入桌面。3.3 域账户体系设计与策略调整域环境搭好后,我做的第一件事是打开“Active Directory用户和计算机”,创建实验用的账户。合理的账户设计能让渗透练习更接近真实场景,也让横向移动练习有地方可打。我创建的账户主要有:账户名密码组成员身份用途说明AdministratorP@ssw0rd!Domain Admins域管理员,模拟弱口令的运维账号user01User@123Domain Users普通域用户supportSupport#2025Domain Admins误设到高权限组的低权限用户backupBackup@123Backup 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端口用于Kerberos,389端口用于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分配768MB,XP分配512MB,Kali分配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从来没有引入过额外的加密保护。只有亲手复现过这些慢吞吞的、看起来一点都不“黑客”的操作,你才能真正明白域渗透里大量的套路都属于“利用被遗忘的信任”而不是“突破高深的技术壁垒”。最后还是那句老话:所有实验都在隔离虚拟机内完成,打完一盘就恢复快照,不要让靶机有机会接触真实网络。安全攻防本来就是先学会在可控环境下拆解攻击,再去谈防御,顺序不能反。
在本地虚拟化环境里复现一台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过滤规则反而会干扰后续验证。还有一个容易忽略的步骤是关闭自动更新,因为一个刻意保留历史漏洞的靶机,不应该再联网打补丁。实操心得:安装时创建的本地管理员密码不用太复杂,建议设置成Admin@123这类方便记忆的弱口令,因为后面攻击验证需要在未加入域的局面下完成本地登录。加入域之后,本地管理员密码实际上就开始退居次要位置了。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\NTDS,SYSVOL放在C:\WINDOWS\SYSVOL。不折腾路径,保持默认。DNS注册诊断:向导会提示配置DNS服务,选择“在这台计算机上安装并配置DNS服务器”,然后让它自己跑。权限兼容性:选择“与Windows 2000或Windows Server 2003操作系统兼容的权限”,这会让匿名访问SYSVOL和NETLOGON这类共享时保留更多传统行为。还原模式密码:目录服务还原模式密码必须设置,它用于后期通过还原模式修复AD数据库,实际攻击环境中很少用到,但在靶机记录里不要设置为太复杂的随机值,方便恢复时使用。提升过程中会重启一次,重启后登录界面和系统行为会变,最直接的一个差异是登录时需要选择域。登录选项里会多出CORP域名,输入域用户名和密码才能进入桌面。3.3 域账户体系设计与策略调整域环境搭好后,我做的第一件事是打开“Active Directory用户和计算机”,创建实验用的账户。合理的账户设计能让渗透练习更接近真实场景,也让横向移动练习有地方可打。我创建的账户主要有:账户名密码组成员身份用途说明AdministratorP@ssw0rd!Domain Admins域管理员,模拟弱口令的运维账号user01User@123Domain Users普通域用户supportSupport#2025Domain Admins误设到高权限组的低权限用户backupBackup@123Backup 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端口用于Kerberos,389端口用于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分配768MB,XP分配512MB,Kali分配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从来没有引入过额外的加密保护。只有亲手复现过这些慢吞吞的、看起来一点都不“黑客”的操作,你才能真正明白域渗透里大量的套路都属于“利用被遗忘的信任”而不是“突破高深的技术壁垒”。最后还是那句老话:所有实验都在隔离虚拟机内完成,打完一盘就恢复快照,不要让靶机有机会接触真实网络。安全攻防本来就是先学会在可控环境下拆解攻击,再去谈防御,顺序不能反。