Syborg : Recursive DNS Subdomain Enumerator With Dead-End Avoidance System

Syborg is a recursive DNS subdomain enumerator with dead-end avoidance system (beta).

It is a Recursive DNS Domain Enumerator which is neither active nor completely passive. This tool simply constructs a domain name and queries it with a specified DNS Server.

When you run subdomain enumeration with some of the tools, most of them passively query public records like virustotalcrtsh or censys.

This enumeration technique is really fast and helps to find out a lot of domains in much less time.

However, there are some domains that may not be mentioned in these public records.

In order to find those domains, Syborg interacts with the nameservers and recursively brute-forces subdomain from the DNS until it’s queue is empty.

Also Read – Nray : Distributed Port Scanner

Ordinarily if there are no records to return for a DNS name you might expect an NXDOMAIN error:

host four.tomnomnom.uk
Host four.tomnomnom.uk not found: 3(NXDOMAIN)

You may have noticed that sometimes you get an empty response instead though:

host three.tomnomnom.uk

The difference in the latter case is often that another name – one that has your queried name as a suffix – exists and has records to return

host one.two.three.tomnomnom.uk
one.two.three.tomnomnom.uk has address 46.101.59.42

This difference in response can be used to help avoid dead-ends in recursive DNS brute-forcing by not recursing in the former situation:

echo -e “www\none\ntwo\nthree” | ettu tomnomnom.uk
one.two.three.tomnomnom.uk

Syborg incorporates all of these functionalities with simple concurrency and recursion.

Requirements:

  • Python 3.x (Recommended)
  • Python 2.x (Not tested)

Installation:

Clone the repo using the git clone command as follows:

git clone https://github.com/MilindPurswani/Syborg.git

Resolve the Dependencies:

pip3 install -r requirements.txt

Usage:

python3 syborg.py yahoo.com

At times, it is also possible that Syborg will hit High CPU Usage and that can cost you a lot if you are trying to use this tool on your VPS. Therefore to limit that use another utility called Cpulimit

cpulimit -l 50 -p $(pgrep python3)

This tool can be downloaded as follows:

sudo apt install cpulimit

Credits:
@nahamsec , @tomnomnom , @GP89 , Patrik Hudak

R K

Recent Posts

xargs Command in Linux: Build and Execute Commands from Input

The xargs command in Linux reads items from standard input and passes them as arguments to another…

1 day ago

locate Command in Linux: Find Files Fast with a Database Search

The locate command in Linux searches for files and directories by name. It queries a pre-built database…

1 day ago

Listing Linux Services with systemctl: A Complete Guide

Most modern Linux distributions use systemd as the default service manager. Knowing how to list…

1 day ago

How to Truncate Files in Linux: Empty Files Without Deleting

Truncating a file in Linux means removing its contents while leaving the file itself in…

1 day ago

ss Command in Linux: Display Socket Statistics and Connections

The ss command in Linux lists open sockets and active network connections. It replaced the deprecated netstat command and…

2 days ago

ftp Command in Linux: Connect to Servers and Transfer Files

The ftp command in Linux connects to a remote FTP server and transfers files. FTP transmits everything…

2 days ago