管理实验室虚拟机
大多数虚拟化平台都能够创建虚拟“交换机”,这样网络通信就可以被限制和隔离。这中方式可以确保一个实验室环境不能与另一个实验室环境进行通信。
实验室操作系统构建有两种不同的方法。一种是执行Windows安装(客户端或服务器OS),然后使用generalize选项运行Sysprep。这会把Windows设置为类似于安装程序运行后的状态,以确保在下次启动时清除并生成计算机特定信息。运行Sysprep后,关闭计算机并保存VM文件。现在就可以将其用作任何新的操作系统安装的“起点”(相同的操作系统版本)。许可证由Sysprep重置(SkipReam不会重置许可数据)。
一旦你安装了虚拟机你就可以按照你喜欢的方式进行配置,重要的是备份数据。不过这样做取决于虚拟平台,但通常我一般会导出VM数据以便后面导入。在对实验室环境(我的基线)进行重大更改之后,以及在使用“黑客工具”进行任何攻击之前,我通常都会备份一次虚拟机。
不要在一段时间内关闭一些域控制器。把它们全部关掉或让它们全部打开。如果你需要测试一个场景,包括关闭所有DC(除了一个或两个),请确保它们是同时都打开的,然后再将其全部关闭。墨菲定律:在实验室中排除Active Directory问题有时候似乎比生产环境中更复杂。
VM规格
大多数实验室虚拟机只需要一个虚拟CPU(vCPU),我通常是将每个虚拟硬盘(Hyper-V上的VHD / VHDX)设置为250GB,动态扩展(没有任何实际的性能问题)。
实验室VM磁盘大小(安装和配置后):
Windows 7:50 - 60GB Windows 10:15 - 25GB Windows Server 2008 R2:7 - 10GB Windows Server 2012 R2:7 - 10GB Windows Server 2016:12 - 15GB
显然,虚拟机磁盘空间并不接近虚拟硬盘所设置的250GB,但这只是VHD的最大尺寸。这在VHD中需要时提供额外的空间。
RAM配置需要更多的调整。动态内存(Hyper-V&VMWare)可以简化这一点的操作,因为你可以将启动RAM设置为2GB(我的实验室里的大多数虚拟机设置的启动RAM为 2GB)。启动后,VM OS的安全性就会降低。虽然我发现Windows 8 / 8.1和Windows 10做的更好了一点,支持3GB的启动RAM。任何没有虚拟化扩展的操作系统(VMWare Tools或Hyper-V Integration Services)通常不支持这些功能,因此在系统通电(通常是非Windows VM)时,RAM将保持不变。显然,提供给VM的内存越多,操作系统运行越快(一般来说),所以不要使内存的虚拟机不够用。
提升域控制器
在使用Windows Server 2008 R2和更早版本的Windows Server操作系统时,DCPromo是用于将成员服务器升级到域控制器。从Windows Server 2012开始,PowerShell cmdlet Install-ADDSForest可以创建一个新林,并且Install-ADDSDomainController用于向现有域添加新的DC。Install-ADDSDomain可以在现有林中创建一个新的域。
安装适当地模块:
Add-WindowsFeature AD-Domain-Services Add-windowsfeature
创建林中的第一个DC,先创建一个新林:
Import-Module ADDSDeployment $SafeModeAdministratorPasswordText = ‘&P@ssw0rd2013&’ $SafeModeAdministratorPassword = ConvertTo-SecureString -AsPlainText $SafeModeAdministratorPasswordText -Force Install-ADDSForest -CreateDNSDelegation:$False -DatabasePath “c:WindowsNTDS” -DomainMode ‘Win2012’ -DomainName “LAB.ADSecurity.org” -DomainNetbiosName “ADSECURITYLAB” -ForestMode ‘Win2012’ -InstallDNS:$true -LogPath “C:WindowsNTDS” -NoRebootOnCompletion:$false -Sysvolpath “C:WindowsSYSVOL” -Force:$true -SafeModeAdministratorPassword $SafeModeAdministratorPassword
将另一个DC添加到现有域:
Import-Module ADDSDeployment $SafeModeAdministratorPasswordText = ‘&P@ssw0rd2013&’ $SafeModeAdministratorPassword = ConvertTo-SecureString -AsPlainText $SafeModeAdministratorPasswordText -Force Install-ADDSDomainController -NoGlobalCatalog:$false -CreateDNSDelegation:$false -Credential (Get-Credential) -CriticalReplication:$false -DatabasePath “C:WindowsNTDS” -DomainName “LAB.ADSecurity.org” -InstallDNS:$true -LogPath “C:WindowsNTDSLogs” -SiteName “Default-First-Site-Name” -SYSVOLPath “C:WindowsSYSVOL” -Force:$true -SafeModeAdministratorPassword $SafeModeAdministratorPassword
通过创建域中的第一个DC来将新域添加到现有的林:
Import-Module ADDSDeployment Install-ADDSDomain -Credential (Get-Credential) -NewDomainName “CHILD” -ParentDomainName “LAB.ADSecurity.org” -InstallDNS -CreateDNSDelegation -DomainMode Win2003 -DatabasePath “C:WindowsNTDS” -SYSVOLPath “C:WindowsSYSVOL” -LogPath “C:WindowsNTDSLogs”
注意:这些AD DCPromo PowerShell命令是为了指导演示,不能逐字使用。
使用Get-Help 获取cmdlet的帮助信息来设置适当的参数。
我的“ADSecurity.org”实验室环境
我的实验室环境中同时运行了几种不同的配置。我有三个Hyper-V主机,每个都配置了Core i7,32GB和256GB SSD。其中两个运行Windows Server 2012 R2,第三个运行Windows Server 2016 TP4。
在两个2012 R2 Hyper-V主机上,我运行了多个实验室AD环境来测试各种测试场景(包括上面所描述的变体)。通常,一个Hyper-V主机包含具有长期VM测试(包括Microsoft ATA)的“稳定”实验室,另一个具有更多的短期实验室环境,用于测试漏洞快速利用场景并验证安全性想法/场景。
运行Windows 2016 TP4的Hyper-V主机托管了具有Windows 2016成员服务器的Windows Server 2016林以及Windows 10客户端的VM。
实验室自动化
我使用定制的PowerShell脚本为我做大部分的工作。我将在我的GitHub存储库中发布这些脚本,以便在不久的将来可以使用 ; 但是,它们应该被认为是示例脚本,仅用作自动化环境的起点。
常见的Active Directory故障排除命令
DCDiag / c / v / e / fix /f:c:DCDIAG.Log
对具有详细日志记录的林中的所有DC运行全面测试
/c:执行一套全面的测试。 /v:提供详细的日志记录,显示有关被测试和结果的附加信息。 /fix:修复任何未注册的DC SPN /a:测试站点中的所有DC。 /e:测试企业中的所有DC。谨慎使用。 /ReplSource:<SourceDomainController>:在此DC和另一个之间测试连接。
http://technet.microsoft.com/en-us/library/cc731968%28v=ws.10%29.aspx
DCDiag复制相关测试:
CutOffServers Intersite MachineAccount NCSecDesc Netlogon ObjectsReplicated VerifyEnterpriseReferences VerifyRreplicas
NLTest / sc_query:DNSDomainName 检查安全通道 NLTest / sc_verify:DNSDomainName 验证安全通道 NLTest / dsgetsite检查电脑网站(也检查安全通道) Kllist -li 0x3e7 列出机器帐户的Kerberos门票 RPCDump 显示复制rpc端口 Portqry对端口135运行,查看映射的RPC端口。
Repadmin / SyncAll / A / e / P 强制所有分区的完整林从运行该命令的DC复制同步“推送”更改。
http://technet.microsoft.com/en-us/library/cc770963%28v=ws.10%29.aspx
Repadmin /选项* 检查是否有DC配置错误发生(选项)
http://technet.microsoft.com/en-us/library/cc736571%28v=ws.10%29.aspx#BKMK_38
Repadmin / replsummary 林复制健康状况检查
Repadmin / kcc * 强制KCC在所有DC上运行
Repadmin / kcc / site:SITENAME 强制KCC在指定站点的所有DC上运行
repadmin / removelingering对象ServerName ServerGUID DirectoryPartition / consult_mode
http://technet.microsoft.com/en-us/library/cc785298(v=ws.10).aspx
Repadmin / bind 检查RPC连接
注意:如果LinkValueReplication = NO,那么它是Windows 2000 Forest功能模式。
Repadmin / queue <DCNAME> 请参阅复制队列 或Perf计数器:NTDS_DRA等待复制同步
Repadmin / showreps
Repadmin / showrepl / v 有关复制伙伴的信息 – 显示不会复制DC
Repadmin / showutdvec关于NC最新向量的信息
Repadmin / showconn 显示有关连接对象的信息
Repadmin / showsig 显示InvocationID和关闭的InvID
Repadmin / siteoptions SERVERNAME / site:SITENAME + Win2k3_Bridges_Required
当禁用BASL时,此站点选项会配置Intersite Mesaging对DFS有用的内部站点成本矩阵。
Repadmin / showobjmeta <ObjectDN>
请参阅AD对象历史记录
Legacy 显示在Win2k3 林功能级别之前的组 Present 显示在 Win2k3 林功能级别之后创建/修改的组(组成员已删除/添加) Recycle Bin deleted objects 显示为“现在”,但带有DEL:GUID的组 Ipconfig / all Ping ##.##.##.## Nslookup ######。###
DNSCMD
DNSLint(KB 321045)
Active Directory常用端口:
Windows Server 2008(及更新版本)DCs使用IANA RPC端口范围:49152 – 65535