公司动态

从零搭建完整Active Directory域环境:原理、配置与内网渗透实战

📅 2026/8/4 4:01:34
从零搭建完整Active Directory域环境:原理、配置与内网渗透实战
1. 项目缘起与目标为什么需要一个“完整”的域环境很多刚开始接触内网安全的朋友可能都卡在第一步环境搭建。你看教程别人三言两语就建好了一个域自己照着做不是虚拟机网络不通就是域控服务起不来或者客户端死活加不进域。折腾几天热情都耗光了更别提后续的渗透测试学习了。这个问题的核心在于大多数教程只给了“步骤”没讲清楚“为什么”。比如为什么要用Windows Server 2008 R2而不是更新的版本为什么虚拟机网络要设置成NAT模式域用户、组策略这些概念到底在模拟一个怎样的真实内网如果不理解这些你搭建的环境就是一堆孤立的、功能不全的“玩具”无法支撑起后续的横向移动、权限维持、信息收集等核心渗透测试动作。所以我这次的目标很明确用最经典、最稳定的组件搭建一个逻辑清晰、功能完整、能复现真实企业内网核心特征的域环境。这个环境将包含一台域控制器DC使用 Windows Server 2008 R2。选它是因为系统经典、资源占用相对较低且其Active Directory活动目录服务是后续所有Windows域的基础原理与新版相通。一台成员服务器比如再装一个Windows Server 2008 R2或2012模拟内网中的文件服务器、Web服务器等。一台域用户客户端使用 Windows 7 或 Windows 10。模拟普通员工的办公电脑。一台独立服务器/工作组计算机可以是一台Windows也可以是一台Linux如Kali模拟内网中尚未加入域但可被访问的设备这是横向移动的重要跳板。通过这个环境你不仅能练手基础的域渗透命令更能理解“域”这个逻辑边界是如何形成、如何管理、以及攻击者是如何在其中“穿梭”的。下面我就把整个搭建过程中每一步背后的考量和容易踩的坑掰开揉碎了讲给你听。2. 环境规划与虚拟机准备奠定稳定的基石搭建前的规划直接决定了后续操作的顺畅度。很多人一上来就猛装系统结果发现IP网段冲突、主机名混乱、甚至虚拟机之间无法通信回头修改的成本极高。2.1 虚拟机软件与镜像选择我使用的是VMware Workstation 17 Pro功能稳定且普及度高。使用VMware的一个巨大优势是它的虚拟网络编辑器可以灵活地为我们创建出一个与宿主机隔离的纯内网环境这是后续所有通信的基础。注意如果你使用VMware Workstation Player个人免费版部分高级网络配置功能可能受限但搭建基础内网环境仍然可行。VirtualBox也是不错的选择但本文以VMware为例原理相通。操作系统镜像方面域控制器DCWindows Server 2008 R2 Standard (x64)。务必选择R2版本它对后续的一些功能如PowerShell版本支持更好。镜像可以从微软官网下载评估版有效期足够学习使用。客户端ClientWindows 7 Professional (x64)或Windows 10 Professional。Win7更轻量且是内网中非常常见的“老系统”作为靶机很有代表性。Win10则更贴近当前环境。其他服务器可以用另一个Windows Server 2008 R2或者尝试Windows Server 2012 R2以体验不同服务器版本。攻击机Kali Linux。这是渗透测试的标准工具集。我们暂时不把它加入域而是作为外部的攻击起点。2.2 网络拓扑设计与IP规划这是最关键的一步也是最容易出错的一步。我们的目标是创建一个封闭的内网所有靶机DC、成员服务器、客户端都在同一个网段内可以互相通信但不能直接访问外网防止练习时误操作影响真实网络。攻击机Kali需要能与这个内网通信。推荐方案使用VMware的“自定义”虚拟网络。创建内网网段打开VMware点击“编辑” - “虚拟网络编辑器”。点击“更改设置”需要管理员权限。选择一个未被使用的VMnet例如VMnet2。将其类型设置为“仅主机模式”。取消勾选“将主机虚拟适配器连接到此网络”。这一步非常重要它的作用是让这个虚拟网络完全独立宿主机也没有IP从而形成一个纯粹的、封闭的虚拟内网。设置子网IP。例如设置为192.168.52.0子网掩码255.255.255.0。这个网段就是你整个靶机内网的网段。不要配置DHCP。我们的域控制器将充当DHCP服务器或者我们手动配置静态IP这样更可控。配置攻击机网络攻击机Kali需要既能连接这个内网又能访问外网用于更新工具。给Kali虚拟机配置两块网卡。第一块网卡NAT模式用于访问外网。VMnet8通常就是NAT模式。第二块网卡仅主机模式连接到我们刚才创建的VMnet2。这样Kali就能与靶机内网192.168.52.0/24通信了。IP地址规划表 在安装系统前就规划好每台机器的IP和主机名避免混乱。角色主机名IP地址网关DNS虚拟机网络适配器域控制器DC01192.168.52.10无127.0.0.1 (自身)VMnet2成员服务器SRV01192.168.52.20无192.168.52.10 (指向DC)VMnet2域用户客户端WIN7-CLIENT192.168.52.30无192.168.52.10 (指向DC)VMnet2攻击机 (Kali)kali192.168.52.100192.168.52.1 (可选)随意VMnet2 (第二块网卡)提示为什么网关和DNS这样设置因为我们搭建的是纯内网不需要访问外网所以网关可以不设或指向一个不存在的地址。DNS必须指向域控制器DC01因为域的所有查找如查找域控制器、其他计算机都依赖DNS服务而这个服务就运行在DC上。2.3 虚拟机创建与基础系统安装按照上述规划在VMware中创建四台虚拟机。硬件配置DC建议2核CPU、2-3GB内存、40GB硬盘。客户端1核CPU、2GB内存、30GB硬盘即可。Kali默认配置。系统安装安装Windows Server 2008 R2时在服务器管理器初始界面选择“完整安装”。安装过程中设置好规划好的主机名如DC01和静态IP地址。其他系统同理。一个关键操作安装完所有Windows系统后第一件事是关闭防火墙初期为了测试连通性。在“控制面板” - “Windows防火墙” - “打开或关闭Windows防火墙”中选择关闭。在实际生产环境或后期深入练习时再研究如何配置防火墙规则。完成基础安装后确保所有位于VMnet2的虚拟机之间可以通过ping命令互通IP地址。例如从DC01上 ping 192.168.52.20 (SRV01) 和 192.168.52.30 (WIN7-CLIENT)都应该成功。3. 域控制器DC的深度配置不止是点下一步很多人安装AD域服务时一路下一步最后发现各种稀奇古怪的问题。下面我们慢一点把每个配置项的意义搞清楚。3.1 安装Active Directory域服务在DC01上操作打开“服务器管理器”。点击“角色” - “添加角色”。勾选“Active Directory域服务”下一步直到安装。这只是一个二进制文件的安装不会立即配置。安装完成后在服务器管理器界面会出现一个警告标志提示“运行Active Directory域服务安装向导”。点击它或者直接在开始菜单搜索“dcpromo”来启动向导。3.2 关键配置步骤与原理剖析运行dcpromo后进入高级模式安装。部署配置选择“在新林中新建域”。林是Active Directory的最高层级包含一棵或多棵域树。我们这是第一个域所以新建林。命名林根域这是域的核心标识。我们输入一个内部使用的域名例如lab.local。为什么不使用真实的.com为了避免与互联网上的真实域名冲突。.local是内部测试域的常见选择。设置林功能级别和域功能级别都选择“Windows Server 2008 R2”。功能级别决定了域内可以支持的最低服务器版本并启用对应级别的功能。选择2008 R2是为了兼容我们所有的服务器系统。其他域控制器选项DNS服务器务必勾选。Active Directory严重依赖DNS来定位服务SRV记录和计算机。让安装向导自动安装并配置DNS是最省事的方式。全局编录默认勾选保持。它是林中所有对象的部分属性副本用于加快跨域搜索。只读域控制器RODC不勾选。我们是唯一的DC。数据库、日志文件和SYSVOL的位置保持默认即可。如果为了性能可以将它们放在不同的物理磁盘上但虚拟机环境没必要。目录服务还原模式的Administrator密码设置一个强密码并牢记。这是在域控制器无法启动、需要进入安全模式修复时使用的密码。摘要检查配置无误后点击下一步。系统将开始配置完成后需要重启。重启后以域管理员身份登录。注意此时的登录名变成了LAB\Administrator如果你之前本地管理员也叫Administrator或者你需要用LAB\你的用户名的格式登录。这表示你正在使用域账户。3.3 配置DNS与反向查找区域安装后打开“服务器管理器” - “角色” - “DNS服务器”。展开DC01你会看到正向查找区域下自动生成了lab.local区域。里面应该已经有DC01本身的A记录和一堆下划线开头的SRV记录如_ldap,_kerberos这些就是域能正常工作的关键。我们需要手动为其他即将加入域的计算机创建A记录吗不需要。当客户端成功加域后它们会通过动态更新如果权限允许或域控制器自动在DNS中注册自己的A记录和PTR记录。但是强烈建议创建一个反向查找区域。这能确保IP地址到主机名的解析也正常工作一些老的或特定的网络工具可能会用到。在DNS管理器右键“反向查找区域” - “新建区域”。区域类型主要区域。勾选“在Active Directory中存储区域”。选择“IPv4反向查找区域”。网络ID输入192.168.52。后续步骤默认完成。3.4 创建组织单元OU、用户和组一个真实的企业域用户和计算机不是杂乱无章地放在“Computers”和“Users”这个默认容器里的而是用OU来分类管理并可以基于OU来应用组策略。打开“开始” - “管理工具” - “Active Directory 用户和计算机”。在域名lab.local上右键新建组织单元例如IT、Sales、Workstations、Servers。在ITOU下新建用户例如zhangsan。设置一个简单的密码如Password123!取消“用户下次登录时须更改密码”勾选“密码永不过期”实验室环境为了方便。新建全局安全组例如IT_Admins、Domain_Users。将用户zhangsan添加到IT_Admins组。尝试用新创建的域账户LAB\zhangsan在DC上登录一下确认账户有效。4. 客户端与服务器加入域细节决定成败现在让我们的WIN7-CLIENT和SRV01加入这个域。4.1 客户端WIN7入域详解前期检查确保WIN7的IP设置正确IP为192.168.52.30DNS服务器必须且只能设置为192.168.52.10DC的IP。这是加域成功的最关键一步如果DNS指错了客户端根本找不到域控制器。确保能从WIN7 ping通DC的IP和主机名ping 192.168.52.10和ping dc01.lab.local。后者能通说明DNS解析正常。修改计算机名和域右键“计算机” - “属性” - “更改设置”。点击“更改”在“计算机名”中输入规划好的WIN7-CLIENT。在“隶属于”部分选择“域”输入lab.local。点击确定会弹出凭据窗口。这里需要输入有权限将计算机加入域的账户通常是域管理员。输入LAB\Administrator及其密码。处理常见错误“找不到网络路径”99%是DNS问题。检查客户端DNS设置是否指向DC的IP。在DC上检查DNS服务是否运行防火墙是否关闭。“拒绝访问”检查输入的域管理员账号密码是否正确或者该账号是否有加域权限默认Domain Admins组有。加域成功提示重启后重启计算机。登录界面会发生变化从原来的本地用户选择变成了域登录。你可以选择“切换用户”然后使用LAB\zhangsan这个域账户登录。登录成功后在DC的“Active Directory 用户和计算机”中Computers容器里会出现WIN7-CLIENT这台计算机。你可以将其拖拽到之前创建的WorkstationsOU中以便管理。4.2 成员服务器SRV01入域步骤与客户端几乎完全相同设置静态IP192.168.52.20DNS指向192.168.52.10。修改计算机名为SRV01加入lab.local域使用域管理员凭据。重启后同样可以用域账户登录。在DC上将SRV01计算机对象从Computers容器移动到ServersOU。4.3 验证域环境完整性加域完成后进行以下验证确保环境是“活”的域内互访在WIN7客户端上尝试访问\\dc01.lab.local\c$或\\srv01\c$使用UNC路径。系统会要求输入凭据使用LAB\Administrator可以访问说明域内网络共享和身份认证正常。组策略测试在DC上打开“组策略管理”。在WorkstationsOU上右键“创建并链接GPO”。编辑这个GPO例如在“用户配置” - “管理模板” - “控制面板” - “个性化”中启用“强制显示特定的屏幕保护程序”并设置等待时间。在WIN7客户端上以域用户登录后打开命令行运行gpupdate /force强制更新组策略。稍等片刻观察屏幕保护程序设置是否被更改。这证明了组策略的生效。域用户权限在SRV01上创建一个共享文件夹设置共享权限和NTFS权限。尝试用LAB\zhangsanIT_Admins组成员和另一个普通域用户去访问验证权限继承和组的管理是否生效。5. 攻击机接入与基础连通性测试现在让我们把攻击视角引入这个封闭的内网。5.1 Kali Linux网络配置确保你的Kali虚拟机有两块网卡eth0 (NAT): 用于上网自动获取IP即可。eth1 (仅主机 - VMnet2): 用于连接靶机内网。需要手动配置静态IP。编辑/etc/network/interfaces文件为eth1添加配置auto eth1 iface eth1 inet static address 192.168.52.100 netmask 255.255.255.0 # gateway 可以不设因为我们不通过这个网卡上外网重启网络服务sudo systemctl restart networking。用ip addr show eth1检查IP是否配置成功。5.2 基础信息收集与扫描从Kali发起对靶机内网的探测这是渗透测试的第一步。存活主机发现sudo nmap -sn 192.168.52.0/24。这个命令会列出该网段所有在线的IP你应该能看到52.10, 52.20, 52.30。端口扫描针对DC52.10进行详细扫描。sudo nmap -sS -sV -O -p- 192.168.52.10。你会看到关键的开放端口53/tcpDNS服务。证实了它是域控制器。88/tcpKerberos认证服务。域环境的核心。135/tcp, 139/tcp, 445/tcp经典的Windows RPC、NetBIOS和SMB端口。389/tcpLDAP服务。用于查询目录信息。636/tcpLDAPS (LDAP over SSL)。3268/tcp, 3269/tcp全局编录查询端口。 看到这些端口一个清晰的“域控制器画像”就出来了。SMB枚举使用enum4linux或smbclient尝试匿名枚举信息。enum4linux -a 192.168.52.10。在默认配置下你可能获取到域名、工作组、以及一些共享列表如NETLOGON, SYSVOL。这证明了内网服务是可访问的。6. 模拟内网渗透核心环节从信息收集到横向移动环境搭好了我们来跑几个经典的“攻击链”场景看看这个环境是否“完整”。6.1 场景一利用弱口令/默认共享获取初始立足点假设我们通过某种方式比如钓鱼获取了一台内网普通域用户LAB\zhangsan的凭据或者通过SMB爆破得到了一个弱口令。从Kali使用获取的凭据访问共享smbclient //192.168.52.20/c$ -U LAB/zhangsan%Password123!如果成功说明我们可以访问SRV01的C盘。如果该用户是本地管理员组成员权限就很大了。使用psexec或wmiexec执行命令需要管理员权限 使用Impacket工具包中的psexec.py。python3 psexec.py LAB/zhangsan:Password123!192.168.52.20如果成功会获得一个SYSTEM权限的交互式shell。这模拟了攻击者通过一个入口点获取了内网一台服务器的控制权。6.2 场景二在域内进行凭证窃取与横向移动在获取了SRV01的控制权后攻击者会尝试窃取内存中的凭证并利用它们向域控制器移动。转储内存凭证在SRV01上模拟已控可以使用Mimikatz需上传或直接通过Metasploit的meterpreter会话。在Meterpreter会话中load kiwi-creds_all。你可能会看到当前登录用户的明文密码如果系统符合条件、NTLM哈希、以及票据Ticket。Pass-the-Hash (PTH) 攻击假设我们抓取到了域管理员LAB\Administrator的NTLM哈希。在Kali上使用Impacket的psexec.py进行哈希传递python3 psexec.py -hashes :NTLM_Hash LAB/Administrator192.168.52.10如果成功你将直接获得域控制器的最高权限而无需知道明文密码。这演示了在域环境中一旦一台高权限主机失陷整个域都可能沦陷的“雪崩效应”。Kerberos票据攻击如果抓取到的是Kerberos TGT票据通过sekurlsa::tickets /export可以使用Rubeus或Impacket的ticketConverter和gettgtpkinit.py等工具进行票据传递Pass-the-Ticket攻击。6.3 场景三利用域内信息收集扩大战果在获得一个普通域用户权限后即使不能直接提权也能收集大量信息。LDAP查询使用ldapsearch工具匿名或认证查询域信息。ldapsearch -x -H ldap://192.168.52.10 -b “dclab,dclocal” “(objectclassuser)” sAMAccountName memberOf这条命令可以枚举域内所有用户及其所属的组。BloodHound 数据收集使用 SharpHound在Windows靶机上运行或 BloodHound-python从Linux攻击机收集整个AD域的关系数据。将生成的json文件导入到Kali上的BloodHound图形界面它能清晰地展示出用户、组、计算机之间的权限关系路径直观地找出从当前用户到域管理员的最短攻击路径。7. 环境加固与高阶实验准备一个完整的练习环境也应该包含防御和检测的视角。7.1 基础安全配置启用防火墙并配置规则在DC和成员服务器上重新启用Windows防火墙。然后只开放必要的端口如DC的53, 88, 135, 139, 445, 389, 636等。在客户端上可以配置更严格的入站规则。这迫使你在进行渗透测试时需要更精确地指定端口和考虑防火墙绕过技术。安装并配置Windows更新给所有Windows虚拟机打上补丁。然后你可以专门寻找针对特定漏洞如MS17-010永恒之蓝的未打补丁环境进行对比测试。配置本地安全策略例如设置账户锁定阈值、审核账户登录事件等。在事件查看器中观察这些日志学习如何从防御方发现攻击痕迹。7.2 引入更多角色与复杂度为了让环境更贴近现实可以搭建一台Exchange服务器模拟邮件系统练习OWA、EWS等接口的漏洞利用和权限提升。搭建一台SQL Server数据库服务器并配置为域用户运行服务。练习通过数据库链接Link进行横向移动。创建多层级OU和复杂的组策略模拟真实企业的IT管理结构练习GPO的查找与利用如GPP密码泄露。部署一台Windows 10/11客户端并启用Windows Defender练习免杀技术和绕过EDR的初始攻击。搭建这个环境的过程本身就是一次深刻的学习。你不仅学会了点击哪些按钮更重要的是理解了每个配置背后的网络原理、认证机制NTLM vs Kerberos和权限模型。当你在后续的渗透测试学习中遇到“票据”、“哈希”、“LDAP查询”、“组策略”这些概念时你的脑海中会立刻浮现出这个你亲手搭建的、可视化的域环境。这才是它最大的价值——为你理解内网安全这座大厦打下最坚实的地基。