DNSRECON(1)

πŸ’– DNSRECON(1) πŸ’–

okay bestie, sit down, hydrate, because we're about to talk about dnsrecon from the General Commands Manual (section 1, obviously, it's giving main character CLI energy) and it's gonna be a whole journey πŸ¦‹


✨ NAME ✨

dnsrecon β€” the DNS Enumeration and Scanning Tool. yes that's literally its whole name. iconic. no notes. πŸ’…


🌸 SYNOPSIS 🌸

dnsrecon [-h] [-d DOMAIN] [-iL INPUT_LIST] [-n NS_SERVER] [-r RANGE] [-D
DICTIONARY] [-f] [-a] [-s] [-b] [-y] [-k] [-w] [--shodan] [--shodan-
active] [--shodan-key SHODAN_KEY] [-z] [--threads THREADS] [--lifetime
LIFETIME] [--loglevel LEVEL] [--tcp] [--db DB] [-x XML] [-c CSV] [-j
JSON] [--iw] [--disable_check_nxdomain] [--disable_check_recursion]
[--disable_recurs] [--disable_check_bindversion] [-v] [-V] [-t TYPE]

look at all those flags. she's got range. πŸŽ€


πŸ’œ DESCRIPTION πŸ’œ

so like, dnsrecon is a simple python script that enables you to gather DNS-oriented information on a given target. that's it. that's the vibe. lowkey does a LOT though. πŸ”₯


πŸ‘‘ OPTIONS πŸ‘‘

  • -h, --help β€” shows you the help message and then exits. the classic "wait what do i do" move 😭
  • -d DOMAIN, --domain DOMAIN β€” your target domain. the one you're being nosy about. πŸ’–
  • -iL INPUT_LIST, --input-list INPUT_LIST β€” a file containing a list of domains to perform DNS enumeration on, one per line. bulk mode, we love her. ✨
  • -n NS_SERVER, --name_server NS_SERVER β€” the domain server to use. if none is given, the SOA of the target will be used. and you can specify multiple servers using a comma separated list, because why choose one 🫢
  • -r RANGE, --range RANGE β€” IP range for reverse lookup brute force, in formats (first-last) or in (range/bitmask).
  • -D DICTIONARY, --dictionary DICTIONARY β€” dictionary file of subdomain and hostnames to use for brute force. bring your own wordlist bestie πŸ“š
  • -f β€” filters out of brute force domain lookup the records that resolve to the wildcard defined IP address when saving records. keeping things tidy, we stan a clean output. 🧚
  • -a β€” perform AXFR with standard enumeration. zone transfer time?? πŸ‘€
  • -b β€” perform Bing enumeration with standard enumeration.
  • -s β€” perform a reverse lookup of IPv4 ranges in the SPF record with standard enumeration.
  • -y β€” perform Yandex enumeration with standard enumeration.
  • -k β€” perform crt.sh enumeration with standard enumeration.
  • -w β€” perform deep whois record analysis and reverse lookup of IP ranges found through Whois when doing a standard enumeration. she's thorough. πŸ’…
  • --shodan β€” use Shodan to query netblocks discovered via SPF (-s) and/or Whois (-w) during standard enumeration.
  • --shodan-active β€” actively validate Shodan-discovered names by resolving them and confirming they still match the queried netblock. no ghost data allowed πŸ™ˆ
  • --shodan-key SHODAN_KEY β€” your Shodan API key. if you omit it, the SHODAN_API_KEY environment variable is used instead. ✨
  • -z β€” performs a DNSSEC zone walk with standard enumeration.
  • --threads THREADS β€” number of threads to use in reverse lookups, forward lookups, brute force and SRV record enumeration. go fast, but like, responsibly πŸƒβ™€οΈ
  • --lifetime LIFETIME β€” time to wait for a server to respond to a query. default is 3.0. ⏳
  • --loglevel LEVEL β€” set the log level. possible values are DEBUG, INFO, WARNING, ERROR, CRITICAL. default is INFO.
  • --tcp β€” use the TCP protocol to make queries instead of, y'know, the other one. 🌈
  • --db DB β€” SQLite 3 file to save found records.
  • -x XML, --xml XML β€” XML file to save found records.
  • -c CSV, --csv CSV β€” comma separated value file.
  • -j JSON, --json JSON β€” save output to a JSON file. for the json girlies πŸ’–
  • --iw β€” continue brute forcing a domain even if wildcard records are discovered. stubborn? no, dedicated. 😀
  • --disable_check_nxdomain β€” disables the check for NXDOMAIN hijacking on name servers.
  • --disable_check_recursion β€” disables the check for recursion on name servers.
  • --disable_recurs β€” disable the recursion desired flag in queries.
  • --disable_check_bindversion β€” disables the check for BIND version on name servers.
  • -v β€” enable verbose. tell me EVERYTHING πŸ—£οΈ
  • -V β€” show version.
  • -t TYPE, --type TYPE β€” the type of enumeration to perform. there are several possible types, and this is where it gets fun:
    • std: SOA, NS, A, AAAA, MX and SRV.
    • rvl: reverse lookup of a given CIDR or IP range.
    • brt: brute force domains and hosts using a given dictionary.
    • srv: SRV records.
    • axfr: test all NS servers for a zone transfer.
    • bing: perform Bing search for subdomains and hosts.
    • yand: perform Yandex search for subdomains and hosts.
    • crt: perform crt.sh search for subdomains and hosts.
    • caa: CAA records.
    • snoop: perform cache snooping against all NS servers for a given domain, testing all with file containing the domains, file given with -D option.
    • tld: remove the TLD of given domain and test against all TLDs registered in IANA.
    • zonewalk: perform a DNSSEC zone walk using NSEC records.

🌟 EXAMPLES 🌟

this one attempts a zone transfer (AXFR) on the zonetransfer.me domain. go little rockstar 🎸

dnsrecon -t axfr -d zonetransfer.me

and that's the whole page bestie, no cap. this gorgeous specimen of documentation lives in the General Commands Manual as DNSRECON(1) β€” section 1, where all the cool user commands hang out πŸ«ΆπŸ’– go enumerate something responsibly, mwah βœ¨πŸŽ€πŸ¦‹

πŸ“¦ where this page comes from