loading
loading
Attack Surface Management
Brute-force sub-subdomains of known hostnames. Rank likely prefixes, generate FUZZ at each DNS level, and resolve. Built-in or custom level wordlists. Caps per level.
Sub-subdomain enumeration walks the label tree of a known hostname. Given a deep name like test.foo.bar.baz.example.com, recursive DNS brute force tries FUZZ at each shorter suffix to find new labels at other depths, which is a different move from same-level permutations or first-level wordlists against the apex. The module ranks which hostnames are most likely to have valid names at other levels, then generates and resolves candidates with built-in or custom per-level wordlists.
You feed known hostnames. The module ranks which of those names are likely to have valid labels at other depths, then brute-forces new labels there (FUZZ.foo.bar.example.com, FUZZ.bar.example.com). This is sub-subdomains of names you already have, not first-level vs the apex. You nest this subgraph on a hostname list; you do not run it from a shell.
Known hostnames from passive hostname OSINT and root-domain DNS brute force. Crawl can feed names back in after probe.
Found hostnames into probe for web servers. Generate custom DNS wordlists emits level-2-wordlist, level-3-wordlist, and level-4-wordlist this consumes.
DNS permutations on the same seed, altering same-level labels rather than adding new labels at other depths.
Nest this after a first hostname set exists, and after those names have depth to walk into. Flat first-level names give recursion little to do. Enumerate Hostnames via OSINT Sources and Enumerate Hostnames via Root Domain DNS Brute Force produce the seed. Enumerate Hostnames via DNS Permutations Brute Force runs on the same seed, same-level. Probe for Web Servers next. Enumerate Hostnames via Crawling last, only on live URLs.
The tables this module produces. Sample rows are illustrative.
Resolved sub-subdomains found by brute-forcing new labels at other DNS depths of known hostnames.
hostnametext | domain_nametext | initial_assettext | initial_asset_typetext | discovery_methodtext | evidencetext | evidence_typetext | evidence_reproductiontext | |
|---|---|---|---|---|---|---|---|---|
| 1 | vpn.foo.bar.example.com | example.com | test.foo.bar.example.com | hostname | dns brute force | A 203.0.113.41 resolved 2026-08-13 at level 3 | dns answer | dig vpn.foo.bar.example.com +short |
| 2 | mail.bar.example.com | example.com | test.foo.bar.example.com | hostname | dns brute force | A 203.0.113.42 resolved 2026-08-13 at level 2 | dns answer | dig mail.bar.example.com +short |
| 3 | ci.foo.bar.baz.example.com | example.com | test.foo.bar.baz.example.com | hostname | dns brute force | A 203.0.113.43 resolved 2026-08-13 at level 4 | dns answer | dig ci.foo.bar.baz.example.com +short |
Artifact class it owns
Names third parties already know
Upstream it needs
domains
Artifact class it owns
Names in HTML, JS, headers of live sites
Upstream it needs
live URLs after probe
Artifact class it owns
Altered spellings of known hostnames
Upstream it needs
known hostnames
Artifact class it owns
First-level names against the apex
Upstream it needs
domains + wordlist
Enumerate Hostnames via Recursive DNS Brute Force
Artifact class it owns
Sub-subdomains of names you already have
Upstream it needs
known hostnames + level-2/3/4 wordlists
questions
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
A 30-minute walkthrough. We map the platform to your stack and answer pricing and deployment questions for your environment.