2026-08-13

Attack Surface Management

Enumerate DNS Records

Query A, AAAA, CNAME, MX, NS, TXT, CAA, and PTR for a host, IP, or CIDR list. Keep resolving names, addresses, and associated hostnames as line lists.

Agent

What Enumerate DNS Records does

After hostname enumeration, you still need the resource records for the names you collected. Querying A, AAAA, CNAME, MX, NS, TXT, CAA, and PTR for a list of hosts, IPs, or CIDR ranges resolves the names, extracts the addresses, and pulls extra hostnames the records themselves name through PTR, NS, and CNAME chains. It is the resource-record step after subdomain enumeration, not a discovery engine and not a substitute for the network or web tails.

You already have hostnames, IPs, or CIDR ranges. Query DNS resource records for those names: A, AAAA, CNAME, MX, NS, TXT, CAA, and PTR. Keep names that answer, extract the addresses, and pull extra hostnames the records themselves name. This is the resource-record step after hostname enumeration. It is not on the network tail or the web tail, and it does not discover unpublished names. A wildcard A that returns NOERROR is not a live asset. SERVFAIL and REFUSED are signals, not findings.

Where it fits in the pipeline

Illustrative excerpt. Each node is a Trickest module.

Pipeline guidance

  • Upstream: any of the five hostname enumerators, or a static host / IP / CIDR list. The wordlist feeder does not feed this; it feeds brute-force enumerators.
  • Downstream: Probe for Web Servers and Scan for Open Ports consume resolving hostnames and IP addresses. This step feeds both tails. It sits on neither.
  • Parallel: none with this face. Enumerators run before this. The tails run after.

Do not wire this as a substitute for either tail.

When to use this

Nest this after hostname enumeration, once you have names, IPs, or ranges to query. If you still need unpublished labels, run an enumerator first. This step queries records for what you already hold.

Inputs and outputs

Required
  • hosts (FILE). Hostnames, IP addresses, or IP ranges, one per line. There are no optional inputs.

Outputs
  • dns-records: JSONL of resource records. Each row is a host, a response code (NOERROR, REFUSED, SERVFAIL), a type (a, aaaa, cname, mx, ns, txt, caa, ptr), a value, and a TTL.

  • resolving-hostnames and ip-addresses: line lists the next step nests on.

  • ip-address-details: JSONL that ties each address back to the record that named it (data_source is dns record).

  • subdomains / subdomain-details: names the records themselves mention (PTR, NS, CNAME). A byproduct, not a second enumerator.

  • potential-hostnames / potential-hostname-details: related names outside the strict scope you queried. Hints until you resolve them again.

  • Wildcard lists and their details files: subdomain-wildcards, subdomain-wildcard-details, potential-hostname-wildcards, potential-hostname-wildcard-details. Published outputs. Not CT-log coverage.

Data

The tables this module produces. Sample rows are illustrative.

dns-records5 columns · 3 sample rows

Resource records (A, AAAA, CNAME, MX, NS, TXT, CAA, PTR) for the hosts you queried.

hosttext
response_codetext
typetext
valuetext
ttlint
1www.example.comNOERRORa203.0.113.103600
2www.example.comNOERRORaaaa2001:db8::13600
3www.example.comNOERRORmx10 mail.example.com1800
ip-addresses5 columns · 3 sample rows

IP addresses extracted from DNS records, tied back to the record that named them.

ip_addresstext
data_sourcetext
typetext
contexttext
linked_assettext
1203.0.113.10dns recordaA record for www.example.comwww.example.com
2203.0.113.20dns recordaA record for api.example.comapi.example.com
32001:db8::1dns recordaaaaAAAA record for www.example.comwww.example.com
mail-servers7 columns · 3 sample rows

Mail servers named in MX records, with the hostnames they associate to.

mail_servertext
associationsjson
associations_countint
initial_assettext
discovery_methodtext
evidencetext
evidence_typetext
1mail.example.comArray[2]2example.comdns recordMX 10 mail.example.commx record
2mx1.example.netArray[1]1example.netdns recordMX 20 mx1.example.netmx record
3altmail.example.comArray[1]1example.comdns recordMX 30 altmail.example.commx record
nameservers6 columns · 3 sample rows

Nameservers named in NS records for the queried hosts.

nameservertext
domain_nametext
initial_assettext
discovery_methodtext
evidencetext
evidence_typetext
1ns1.example.comexample.comexample.comdns recordNS ns1.example.comns record
2ns2.example.comexample.comexample.comdns recordNS ns2.example.comns record
3ns1.example.netexample.netexample.netdns recordNS ns1.example.netns record

How it differs from similar modules

Enumerate DNS Records

Artifact class it owns

Resource records (A, AAAA, CNAME, MX, NS, TXT, CAA, PTR) for names you hold

Upstream it needs

Hostnames, IPs, or CIDRs you already have

Hostname enumerators (OSINT, crawl, permutations, root DNS, recursive DNS)

Artifact class it owns

Names you did not already have

Upstream it needs

Domains or known hosts

Artifact class it owns

Open TCP ports

Upstream it needs

Hosts

questions

Enumerate DNS Records questions

No. That page owns the binary, its flags, and brute-force mode. This page owns the nestable resource-record job after hostname enumeration: you feed names you have, you keep records, resolving names, and addresses.

Nest Enumerate DNS Records in a workflow

Drop this module into a Trickest workflow and connect it to your upstream and downstream nodes. The face contract above is the wiring.

Get a personalized demo

See Trickest in Action

A 30-minute walkthrough. We map the platform to your stack and answer pricing and deployment questions for your environment.