### 如何快速定位域控

1. 使用内置环境变量

这是最快、最简单的方法，特别是在你已经获得域内任意一台 Windows 主机的权限时

当一台 Windows 主机加入域后，它会自动设置一个名为 `%LOGONSERVER%` 的环境变量，该变量存储了当前用于登录认证的域控名称。

- 命令：

      echo %LOGONSERVER%

  或者在 PowerShell 中：

      $env:LOGONSERVER

- 优点： 无需任何额外工具，几乎即时返回结果

2. 通过 DNS 服务查询

在域环境中，域控会在 DNS 服务器上注册特定的服务记录（SRV Records），这些记录指向其 IP 地址和端口。这是最可靠的定位方法之一

- 命令：

      nslookup -type=SRV _ldap._tcp.dc._msdcs.yourdomain.com

  将 `yourdomain.com` 替换为目标域的名称。例如，如果域是 `contoso.local`，命令就是 `nslookup -type=SRV _ldap._tcp.dc._msdcs.contoso.local`

- 输出： DNS 服务器会返回包含域控主机名和 IP 地址的列表

- 优点： 几乎所有 Windows 域都依赖 DNS 服务，这种方法非常通用且准确

3. 利用 Windows 内置工具

`nltest` 是一个用于测试和管理网络登录服务的命令行工具，可以用来发现域控

- 命令：

      nltest /dclist:yourdomain.com

  这个命令会列出域内的所有域控

- 优点： 无需管理员权限，可以在任何域成员主机上运行，非常方便

4. 使用端口扫描

域控提供多种核心服务，这些服务都在特定的端口上运行。通过扫描这些端口，可以有效地识别出域控

- 关键端口：

  - Kerberos: 88/TCP
  - LDAP: 389/TCP
  - LDAP over SSL: 636/TCP
  - Global Catalog: 3268/TCP
  - SMB: 445/TCP

- Nmap 扫描：

      nmap -p 88,135,139,389,445,636 --open <internal_network_range>

  这个命令会扫描指定网段中开放了这些域控服务端口的主机。 你还可以使用 Nmap 的脚本来更精确地识别：

      nmap -p 88 --script krb5-enum-users <ip_address>

  如果一个主机在 88 端口上运行了 Kerberos 服务，它很可能就是域控