adidns
Active Directory Integrated DNS (ADIDNS) enumeration and manipulation. ADIDNS stores DNS records directly as objects in Active Directory. By default, any authenticated domain user can add new records, making this a common vector for name poisoning attacks.Usage
Subcommands
adidns enum
Enumerate all ADIDNS records from Active Directory.
DomainDnsZones and/or ForestDnsZones application partitions in AD and displays all records. Results are stored in the dns_records table.
adidns add
Add a new DNS record to ADIDNS.
| Flag | Short | Type | Description |
|---|---|---|---|
--record | -r | string | Target record name (FQDN or relative name) [required] |
--type | -t | string | Record type: A, AAAA, CNAME, SRV (default: A) |
--data | -D | string | Record data (IP address, target hostname, etc.) [required] |
--zone | — | string | DNS zone (defaults to domain) |
--forest | — | bool | Use ForestDnsZones instead of DomainDnsZones |
--legacy | — | bool | Use the System partition (legacy DNS storage) |
--allow-multiple | — | bool | Allow multiple records with the same name |
--ttl | — | int | TTL in seconds (default: 180) |
--dns-server | — | string | DNS server IP for SOA serial lookup |
--tcp | — | bool | Use DNS over TCP for SOA lookup |
--rpc | — | bool | Use RPC instead of LDAP (not yet implemented) |
--priority | — | uint16 | SRV record priority |
--weight | — | uint16 | SRV record weight |
--port | — | uint16 | SRV record port |
adidns modify
Modify an existing ADIDNS record.
adidns add except --allow-multiple is not available.
adidns remove
Remove (tombstone) an ADIDNS record.
| Flag | Short | Type | Description |
|---|---|---|---|
--record | -r | string | Record name to remove [required] |
--zone | — | string | DNS zone |
--forest | — | bool | Use ForestDnsZones |
--legacy | — | bool | Use System partition |
--dns-server | — | string | DNS server for SOA lookup |
--tcp | — | bool | DNS over TCP |
adidns resurrect
Resurrect a tombstoned ADIDNS record.
adidns remove.
adidns query
Query a specific ADIDNS record.
| Flag | Short | Type | Description |
|---|---|---|---|
--record | -r | string | Record name to query [required] |
--type | -t | string | Record type filter |
--zone | — | string | DNS zone |
--forest | — | bool | Use ForestDnsZones |
--legacy | — | bool | Use System partition |
--dns-server | — | string | DNS server for SOA lookup |
--tcp | — | bool | DNS over TCP |
Common ADIDNS Attack Workflows
WPAD Poisoning
WPAD (Web Proxy Auto-Discovery) abuse via ADIDNS:Wildcard Record Poisoning
DNS Record Storage
Enumerated records are stored in thedns_records table in SQLite.
