经过上一个房间之后,我们已经得到了多组的 AD
凭据且可以使用他们进行身份验证
由此我们可以枚举需要身份验证才能访问的 AD
设置和结构的详细信息
这通常会导致横向移动或提权。即大多数情况下,枚举后利用,利用后再枚举
在这里会涉及到 AD
的一些枚举办法:
Microsoft
管理控制台的AD
管理单元。- 命令提示符的网络命令
PowerShell
的AD-RSAT cmdlet
Bloodhound
Credential Injection
凭据注入对于拿到
AD
但无法登陆的情况,在Windows
上可以使用Runas
来将凭据注入至内存中:1
runas.exe /netonly /user:<domain>\<username> cmd.exe
/netonly
:因为暂时没有加入域,所以希望加载网络身份验证的凭据,但不针对域控制器进行身份验证。所以任何网络连接都将使用此处指定的账户进行/user
:这里需要提供域和用户名的详细信息,而且需要使用完全限定域名FQDN
而非域的NetBIOS
名称cmd.exe
注入凭据后要执行的程序,使用cmd
是最保险的,因为其可以带着凭据启动任何内容输入命令后需要提供密码,值得注意的是在
/netonly
参数影响下,域控制器不会直接验证凭据,即他会接受任何密码,所以仍需确认是否正确加载凭据最可靠的方法是列出
SYSVOL
,对于任何AD
凭据,无论权限有多低都能读取SYSVOL
目录的内容SYSVOL
是所有域控制器上都存在的一个共享文件夹,存储组策略对象GPO
的信息。是AD
的重要组件,因为其将这些GPO
传递到域中所有计算机,而加入域的计算机可以读取并应用适当的GPO
,从而进行域范围的配置更改而在列出
SYSVOl
前,需要配置DNS
,在Powershell
窗口执行:1
2
3$dnsip = "<DC IP>"
$index = Get-NetAdapter -Name 'Ethernet' | Select-Object -ExpandProperty 'ifIndex'
Set-DnsClientServerAddress -InterfaceIndex $index -ServerAddresses $dnsip可以通过
nslookup za.tryhackme.com
来验证DNS
是否正常工作ip
与hostnames
1
2dir \\za.tryhackme.com\SYSVOL
dir \\<DC IP>\SYSVOL这两条命令的区别?
当提供主机名时,网络身份验证将首先尝试执行
Kerberos
身份验证。由于该身份验证使用嵌在凭据中的主机名,所以如果提供IP
,则可以强制身份验证类型为NTLM
在某些情况下,组织会监控
Overpass
和Pass-the-Hash
攻击,此时强制进行NTLM
身份验证可以避免被检测到
Enumeration through Microsoft Management Console
MMC枚举