Coder Social home page Coder Social logo

subzuf's Introduction

subzuf

subzuf is a smart subdomain fuzzer coupled with an immensly simple but effective DNS reponse-guided algorithm. It utilizes a provided set of input data, like a tailored wordlist or historical DNS/TLS records, to accurately synthesize more corresponding domain names and expand them even further in a loop based on information gathered during DNS scan. This somewhat different approach to subdomain enumeration in most cases allows to discover more subdomains with significantly reduced time and resources.

Demo

In short, subzuf can be summarized by the following:

  • Generates carefully selected candidates and uncover completely new subdomains during DNS enumeration scans
  • Efficient multi-threaded DNS client capable of resolving thousands of domains per second
  • Wildcard detection in two modes: filter (default, slightly slower but accurate) and reject (resource-saving)
  • Accepts wordlist or domain names or a mix of both as input
  • Requires essentially no configuration or fine-tuning
  • Works right of out the box - no external dependencies or bizzare requirements
  • Easily chainable with other tools

Installation

$ git clone https://github.com/elceef/subzuf.git
$ cd subzuf
$ pip install .
$ subzuf --help

subzuf itself is just a single file which has no external dependencies - you can move it anywhere you need.

Quick examples

Using the attached scripts, collect publicly available data related to the target domain and provide it as input:

$ ./scripts/_subfind.sh example.com | subzuf example.com

Provide a text file as input, save JSON output to a file, and display results in CSV format:

$ cat wordlist.txt | subzuf example.com | tee out.zuf | ./scripts/json2csv.sh

Usage tips

  • The most efficient enumeration happens not with enormous or random input but with a mix of targeted test cases generated from OSINT and tailored wordlist.
  • Input data is validated and everything that can't be quickly "fixed" on the fly will be silently skipped.
  • By default the number of threads is auto-selected based on available CPU cores, which is a safe and in many cases sufficient value. Although it often pays off to increase this number, keep in mind that at some point speed does not increase linearly with the number of threads.
  • Keep an eye at the error ratio in the status line. It should be reasonably low, say less than 1%. The most common errors are socket timeouts due to: congested and poor quality network links, slow DNS resolvers, rate-limiting, overloaded authoritative nameservers.
  • Cloudflare and Google public DNS resolvers are used by default and considered reliable. Feel free to supply your own list of DNS resolvers. Although resolvers undergo basic validation test, please ensure that they can handle higher loads. Poor quality DNS resolvers will cause excessive timeout errors or refused/servfail status responses.
  • Colourful CLI output is auto-selected when an interactive terminal is detected. Otherwise JSON is used by default. Output format can be always enforced with the optional command line argument.

Known limitations and common-sense risks

  • Active DNS enumeration involves many thousands of queries in a relatively short period of time. Keep in mind that such a volume of DNS messages might not go unnoticed at the target.
  • Virtual machines with NAT network adapters are generally not suitable for handling hundreds of DNS packets per second and will likely cause timeout errors.
  • Built-in DNS client has a bare-minimum implementation required for the task and does not support DoH - use a proxy solution if really necessary.

Contact

Questions? Don't hesitate to contact the author. Any feedback is appreciated.

subzuf's People

Contributors

elceef avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

subzuf's Issues

Right way to use this tool?

so,

echo "qonto.com" | subfinder -silent -r 8.8.8.8,8.8.4.4,9.9.9.9,149.112.112.112,1.1.1.1,1.0.0.1,76.76.19.19 -rate-limit 100 -t 200 -timeout 5

gives me

help.qonto.com
welcome.qonto.com
hello.qonto.com
api-doc.qonto.com
demo.qonto.com
trail.qonto.com
staging.qonto.com
production.qonto.com
qonto.com
seriesd.qonto.com
updates.qonto.com
app.qonto.com
link.qonto.com
la-rentree-finance-inscription.qonto.com
nouveautes.qonto.com
url2820.qonto.com

and now, if I feed that to subfuz, it only output me

complete | found: 12 | errors: 0 | time: 0h 00m 00s

api-doc.qonto.com     ingress.stoplight.io (35.193.206.75)
api.qonto.com         api.qonto.com.cdn.cloudflare.net (104.18.11.238)
app.qonto.com         d20bai69ubta19.cloudfront.net (18.64.119.84)
demo.qonto.com        rugged-muskmelon-mi3lwhor7j4idkxsmp8qbws3.herokudns.com (63.32.161.232)
hello.qonto.com       app2c.outrch.com (52.71.137.62)
help.qonto.com        help.qonto.com.cdn.cloudflare.net (104.18.11.238)
link.qonto.com        link.qonto.com.cdn.cloudflare.net (104.18.11.238)
nouveautes.qonto.com  nouveautes.qonto.com.cdn.cloudflare.net (104.18.11.238)
trail.qonto.com       trail.qonto.com.cdn.cloudflare.net (104.18.11.238)
updates.qonto.com     updates.qonto.com.cdn.cloudflare.net (104.18.11.238)
url2820.qonto.com     url2820.qonto.com.cdn.cloudflare.net (104.18.11.238)
welcome.qonto.com     drbr2mayj1m9z.cloudfront.net (18.64.103.99)

so, do I'm doing token list wrong?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.