Sudomy : Subdomain Enumeration Tool Created Using A Bash Script

Sudomy is a subdomain enumeration tool, created using a bash script, to analyze domains and collect subdomains in fast and comprehensive way.

Features

For recent time, the tool has these 9 features:
  • Test the list of collected subdomains and probe for working http or https servers. This feature uses a third-party tool, httprobe.
  • Subdomain availability test based on Ping Sweep and/or by getting HTTP status code.
  • The ability to detect virtualhost (several subdomains which resolve to single IP Address). It will resolve the collected subdomains to IP addresses, then classify them if several subdomains resolve to single IP address. This feature will be very useful for the next penetration testing/bug bounty process. For instance, in port scanning, single IP address won’t be scanned repeatedly
  • Performed port scanning from collected subdomains/virtualhosts IP Addresses
  • Testing Subdomain TakeOver attack
  • Taking Screenshots of subdomains
  • Report output in HTML or CSV format

Also Read – 4CAN : Open Source Security Tool to Find Security Vulnerabilities in Modern Cars

How Sudomy Works

Sudomy is using cURL library in order to get the HTTP Response Body from third-party sites to then execute the regular expression to get subdomains. This process fully leverages multi processors, more subdomains will be collected with less time consumption.

Comparison

The following are the results of passive enumeration DNS testing of Sublist3r, Subfinder, and Sudomy. The domain that is used in this comparison is bugcrowd.com.

Installation

Sudomy is currently extended with the following tools. Instructions on how to install & use the application are linked below.

ToolsLicenseInfo
GobusterApache License 2.0not mandatory
httprobeTom Hudson –mandatory
nmapGNU General Public License v2.0not mandatory

Dependencies

$ pip install -r requirements.txt

Sudomy requires jq to run and pars. For more information, Download and install jq here

# Linux
apt-get install jq nmap phantomjs

# Mac
brew cask install phantomjs
brew install jq nmap

If you have a Go environment ready to go, it’s as easy as:

export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
go get -u github.com/tomnomnom/httprobe
go get -u github.com/OJ/gobuster

Download Sudomy From Github

# Clone this repository
git clone –recursive https://github.com/screetsec/Sudomy.git

# Go into the repository
sudomy –help

Running in a Docker Container

#Pull an image from DockerHub
docker pull screetsec/sudomy:v1.1.0

#Run an image, you can run the image on custom directory but you must copy/download config sudomy.api on current directory
docker run -v “${PWD}/output:/usr/lib/sudomy/output” -v “${PWD}/sudomy.api:/usr/lib/sudomy/sudomy.api” -it –rm screetsec/sudomy:v1.1.0 [argument]

Post Installation

API Key is needed before querying on third-party sites, such as Shodan, Censys, SecurityTrails, Virustotal, and BinaryEdge.

  • The API key setting can be done in sudomy.api file.

# Shodan
# URL : http://developer.shodan.io
# Example :
# – SHODAN_API=”VGhpc1M0bXBsZWwKVGhmcGxlbAo”

SHODAN_API=””

# Censys
# URL : https://censys.io/register

CENSYS_API=””
CENSYS_SECRET=””

# Virustotal
# URL : https://www.virustotal.com/gui/

VIRUSTOTAL=””

# Binaryedge
# URL : https://app.binaryedge.io/login

BINARYEDGE=””

# SecurityTrails
# URL : https://securitytrails.com/

SECURITY_TRAILS=””

Usage

Sud⍥my – Fast Subdmain Enumeration and Analyzer
http://github.com/screetsec/sudomy
Usage: sud⍥my.sh [-h [–help]] [-s[–source]][-d[–domain=]]
Example: sud⍥my.sh -d example.com
sud⍥my.sh -s Shodan,VirusTotal -d example.com
sud⍥my.sh -pS -rS -sC -nT -sS -d example.com

Optional Arguments:
-a, –all Running all Enumeration, no nmap & gobuster
-b, –bruteforce Bruteforce Subdomain Using Gobuster (Wordlist: ALL Top SecList DNS)
-d, –domain domain of the website to scan
-h, –help show this help message
-o, –html Make report output into HTML
-s, –source Use source for Enumerate Subdomain
-tO, –takeover Subdomain TakeOver Vulnerabilty Scanner
-pS, –ping-sweep Check live host using methode Ping Sweep
-rS, –resolver Convert domain lists to resolved IP lists without duplicates
-sC, –status-code Get status codes, response from domain list
-nT, –nmap-top Port scanning with top-ports using nmap from domain list
-sS, –screenshot Screenshots a list of website
-nP, –no-passive Do not perform passive subdomain enumeration
–no-probe Do not perform httprobe

To use all 16 Sources and Probe for working http or https servers:

$ sudomy -d hackerone.com

To use one of more source:

$ sudomy -s shodan,dnsdumpster,webarchive -d hackerone.com

To use one or more plugins:

$ sudomy -pS -sC -sS -d hackerone.com

To use all plugins: testing host status, http/https status code, subdomain takeover and screenshots

$ sudomy –all -d hackerone.com

To create report in HTML Format

$ sudomy –all -d hackerone.com –html

HTML Report Sample:


R K

Recent Posts

Bash Scripting Best Practices Every Beginner Should Know

Introduction Bash scripting is a powerful way to automate Linux tasks, but writing a script…

23 hours ago

How To Create A Self-Signed SSL Certificate Using Bash And OpenSSL

Introduction A self-signed SSL certificate is a certificate that is created and signed by the…

24 hours ago

How To Debug Bash Scripts Using bash -x And set Commands

Introduction Debugging is an important part of Bash scripting. When a script does not work…

1 day ago

How To Use Cron Jobs With Bash Scripts For Automation

Introduction Cron jobs are used in Linux to run commands or Bash scripts automatically at…

1 day ago

How To Use Pipes In Bash Scripts For Command Chaining

Introduction Pipes are an important feature in Linux and Bash scripting. A pipe allows you…

1 day ago

How To Use grep, awk, And sed In Bash Scripts

Introduction The grep, awk, and sed commands are powerful text-processing tools in Linux. They are…

1 day ago