2.DNS

1. 利用DNS找域控

AD-DS(Active Directory 域服务)依赖于 DNS 的 SRV 资源记录(服务定位资源记录)。这些记录可以被查询,用于查找某些服务器的位置,比如全局编录服务器(global catalog)、LDAP 服务器、Kerberos KDC 等。

1.1. 使用nslookup查找域控

nslookup 是一个可以用于查询 SRV 记录的 DNS 客户端。它通常包含在 dnsutils 软件包中

# 查找主域控(PDC)
nslookup -type=srv _ldap._tcp.pdc._msdcs.$FQDN_DOMAIN

# 查找所有域控(DC)
nslookup -type=srv _ldap._tcp.dc._msdcs.$FQDN_DOMAIN

# 查找全局编录(GC)
nslookup -type=srv gc._msdcs.$FQDN_DOMAIN


nslookup -type=srv _kerberos._tcp.$FQDN_DOMAIN  # 查找 Kerberos 服务主机
nslookup -type=srv _kpasswd._tcp.$FQDN_DOMAIN  #查找 kpasswd 服务主机
nslookup -type=srv _ldap._tcp.$FQDN_DOMAIN   #查找 LDAP 服务主机

1.2. 使用 nmap 查找域控

nmap 工具可以配合 dns-srv-enum.nse 脚本进行这些查询操作。

nmap --script dns-srv-enum --script-args dns-srv-enum.domain=$FQDN_DOMAIN
Tip

为了正常工作,工具需要知道域名以及要查询的名称服务器。这些信息通常通过 DHCP 提供并存储在 UNIX-like 系统的 /etc/resolv.conf/run/systemd/resolve/resolv.conf 文件中

如有必要,也可以通过对网络进行端口扫描来查找名称服务器,查找 DNS 端口 53/TCP53/UDP
DNS 服务通常由域控制器提供

nmap -v -sV -p 53 $SUBNET/$MASK
nmap -v -sV -sU -p 53 $SUBNET/$MASK

2. 反向查找

在 Active Directory 集成 DNS 中,反向查找区域用于将 IP 地址解析为主机名。此操作依赖于 DNS PTR 记录。这允许找到网络中主机的名称。在 Active Directory 中,反向查找区域不是强制性的,因此限制了反向查找功能。

# standard lookup
host $hostname

# reverse lookup
host $IP_address

# manual PTR resolution request
nslookup -type=ptr $IP_address

# PTR restolution on a range
dnsrecon -r $RANGE -n $DC_IP

3. 在域名中导出 DNS 记录

默认情况下,Active Directory 中的任何用户都可以枚举域名或森林 DNS 区域的 DNS 记录,类似于区域传输。

3.1. adidnsdump查找

adidnsdump -u <DOMAIN_FQDN>\\<USERNAME> ldap://<DC_IP> -r
cat records.csv

3.2. bloodAD查找

bloodyAD --host "$DC_IP" -d "$DOMAIN" -u "$USER" -p "$PASSWORD" get dnsDump

┌──(root㉿kali)-[~]
└─# bloodyAD --host "192.168.3.142" -d "0day.org" -u "jack" -p 'admin!@#45' get dnsDump

zoneName: 0day.org

SOA.PrimaryServer: owa2010sp3.0day.org
SOA.zoneAdminEmail: hostmaster@0day.org
NS: owa2010sp3.0day.org
A: 192.168.8.28; 192.168.3.142
recordName: 0day.org

recordName: _gc._tcp.0day.org
SRV: owa2010sp3.0day.org:3268

recordName: _gc._tcp.Default-First-Site-Name._sites.0day.org
SRV: owa2010sp3.0day.org:3268

recordName: _kerberos._tcp.0day.org
SRV: owa2010sp3.0day.org:88

recordName: _kerberos._tcp.Default-First-Site-Name._sites.0day.org
SRV: owa2010sp3.0day.org:88
.....
...

3.3. netexec查找

NetExec 的 Enum_dns 模块利用 WMI 从 Active Directory DNS 服务器中导出 DNS 信息。它从所有找到的域中提取 MicrosoftDNS_ResourceRecord (完整区域信息)

netexec smb -u <USERNAME> -p <PASSWORD> -d <DOMAIN> -M enum_dns <IP>

┌──(root㉿kali)-[~]
└─# nxc smb -u jack -p 'admin!@#45' -d '0day.org' -M enum_dns 192.168.3.142
SMB         192.168.3.142   445    OWA2010SP3       [*] Windows Server 2008 R2 Datacenter 7601 Service Pack 1 x64 (name:OWA2010SP3) (domain:0day.org) (signing:True) (SMBv1:True)
SMB         192.168.3.142   445    OWA2010SP3       [+] 0day.org\jack:admin!@#45 
Tip

此模块仅适用于管理员权限。

3.4. 使用dig查找

如果允许区块传输,可以使用 dig 来请求区块传输

dig axfr @<DC_IP> <DOMAIN_FQDN>

┌──(root㉿kali)-[~]
└─# dig axfr @192.168.3.142 0day.org

; <<>> DiG 9.20.4-4-Debian <<>> axfr @192.168.3.142 0day.org
; (1 server found)
;; global options: +cmd
; Transfer failed.