77 lines
2.3 KiB
Markdown
77 lines
2.3 KiB
Markdown
### 如何快速定位域控
|
|
|
|
**1. 使用内置环境变量**
|
|
|
|
这是最快、最简单的方法,特别是在你已经获得域内任意一台 Windows 主机的权限时
|
|
|
|
当一台 Windows 主机加入域后,它会自动设置一个名为 `%LOGONSERVER%` 的环境变量,该变量存储了当前用于登录认证的域控名称。
|
|
|
|
- **命令:**
|
|
|
|
```powershell
|
|
echo %LOGONSERVER%
|
|
```
|
|
|
|
或者在 PowerShell 中:
|
|
|
|
```powershell
|
|
$env:LOGONSERVER
|
|
```
|
|
|
|
- **优点:** 无需任何额外工具,几乎即时返回结果
|
|
|
|
**2. 通过 DNS 服务查询**
|
|
|
|
在域环境中,域控会在 DNS 服务器上注册特定的服务记录(SRV Records),这些记录指向其 IP 地址和端口。这是最可靠的定位方法之一
|
|
|
|
- **命令:**
|
|
|
|
```powershell
|
|
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` 是一个用于测试和管理网络登录服务的命令行工具,可以用来发现域控
|
|
|
|
- **命令:**
|
|
|
|
```powershell
|
|
nltest /dclist:yourdomain.com
|
|
```
|
|
|
|
这个命令会列出域内的所有域控
|
|
|
|
- **优点:** 无需管理员权限,可以在任何域成员主机上运行,非常方便
|
|
|
|
**4. 使用端口扫描**
|
|
|
|
域控提供多种核心服务,这些服务都在特定的端口上运行。通过扫描这些端口,可以有效地识别出域控
|
|
|
|
- **关键端口:**
|
|
|
|
- **Kerberos:** 88/TCP
|
|
- **LDAP:** 389/TCP
|
|
- **LDAP over SSL:** 636/TCP
|
|
- **Global Catalog:** 3268/TCP
|
|
- **SMB:** 445/TCP
|
|
|
|
- **Nmap 扫描:**
|
|
|
|
```bash
|
|
nmap -p 88,135,139,389,445,636 --open <internal_network_range>
|
|
```
|
|
|
|
这个命令会扫描指定网段中开放了这些域控服务端口的主机。 你还可以使用 Nmap 的脚本来更精确地识别:
|
|
|
|
```bash
|
|
nmap -p 88 --script krb5-enum-users <ip_address>
|
|
```
|
|
|
|
如果一个主机在 88 端口上运行了 Kerberos 服务,它很可能就是域控 |