0%

THM学习日寄13-域学习Enumerating Active Directory

经过上一个房间之后,我们已经得到了多组的 AD 凭据且可以使用他们进行身份验证

由此我们可以枚举需要身份验证才能访问的 AD 设置和结构的详细信息

这通常会导致横向移动或提权。即大多数情况下,枚举后利用,利用后再枚举

在这里会涉及到 AD 的一些枚举办法:

  • Microsoft 管理控制台的 AD 管理单元。
  • 命令提示符的网络命令
  • PowerShellAD-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 是否正常工作

    • iphostnames

      1
      2
      dir \\za.tryhackme.com\SYSVOL
      dir \\<DC IP>\SYSVOL

      这两条命令的区别?

      当提供主机名时,网络身份验证将首先尝试执行 Kerberos 身份验证。由于该身份验证使用嵌在凭据中的主机名,所以如果提供 IP ,则可以强制身份验证类型为 NTLM

      在某些情况下,组织会监控 OverpassPass-the-Hash 攻击,此时强制进行 NTLM 身份验证可以避免被检测到

  • Enumeration through Microsoft Management Console MMC枚举