Skip to content

An advanced subdomain discovery service with fast, powerful and easy to use API and DNS history.

License

Notifications You must be signed in to change notification settings

elmasy-com/columbus

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Columbus

Columbus Project is an API first subdomain discovery service, blazingly fast subdomain enumeration service with advanced features.

Subdomain Lookup Columbus returned 763 subdomains of tesla.com in less than a second.

Usage

By default Columbus returns only the subdomains in a JSON string array:

curl 'https://columbus.elmasy.com/api/lookup/github.com'

But we think of the bash lovers, so if you don't want to mess with JSON and a newline separated list is your wish, then include the Accept: text/plain header.

DOMAIN="github.com"

curl -s -H "Accept: text/plain" "https://columbus.elmasy.com/api/lookup/$DOMAIN" | \
while read SUB
do
        if [[ "$SUB" == "" ]]
        then
                HOST="$DOMAIN"
        else
                HOST="${SUB}.${DOMAIN}"
        fi
        echo "$HOST"
done

For more, check the website and the API documentation.

Data source

See more statistics on the website.

Server

Usage

Usage of columbus-server:
  -check
    	Check for updates.
  -config string
    	Path to the config file.
  -version
    	Print version informations.

Build

git clone https://github.com/elmasy-com/columbus
make server-build

Install

Create a new user:

adduser --system --no-create-home --disabled-login columbus-server

Create a new group:

addgroup --system columbus

Add the new user to the new group:

usermod -aG columbus columbus-server

Copy the binary to /usr/bin/columbus-server.

Make it executable:

chmod +x /usr/bin/columbus-server

Create a directory:

mkdir /etc/columbus

Set the permission to 0600.

chmod -R 0640 /etc/columbus

Set the owner of the config file:

chown -R columbus-server:columbus /etc/columbus

Copy the config file to /etc/columbus/server.conf and configure.

Install the service file (eg.: /etc/systemd/system/columbus-server.service).

cp columbus-server.service /etc/systemd/system/

Reload systemd:

systemctl daemon-reload

Start columbus:

systemctl start columbus-server

If you want to columbus start automatically:

systemctl enable columbus-server

Scanner

This program is used to parse the certificates from a CT log and insert into the Columbus database.

Build

make scanner-build

Install

The columbus-scanner.sha is signed with this key.

Download the key:

gpg --recv-key 10BC80B36072944B5678AF395D00FD9E9F2A3725
  1. Place the binary somewhere
  2. Update and place the config file somewhere
  3. Update and install columbus-scanner.service somewhere

DNS

A DNS server to collect domains to Columbus Server.

The goal of dns is to make it easy/possible for users to easily contribute to the Columbus Project.

By setting the DNS servers to dns while enumerationg subdomains, hunting bugs, etc you can contribute to the Columbus Project.

Design

                               _________________
  |---> dig exmaple.com A ---->| COLUMBUS-DNS  | -----> Insert -----> Columbus DB
  |                            -----------------
  ^                                   |
  |                                   V
Alice <------- 93.184.216.34 <---------

  • Only domains with valid answer will be sent to the server (NOERROR)

IMPORTANT!

THIS SERVER IS NOT MEANT TO USED AS A DAILY DNS RESOLVER!

Install

The checksum file is signed with key 10BC80B36072944B5678AF395D00FD9E9F2A3725.

gpg --receive-key 10BC80B36072944B5678AF395D00FD9E9F2A3725

Install

Create a new user:

adduser --system --no-create-home --disabled-login columbus-dns

Create a new group (if not exists):

addgroup --system columbus

Add the new user to the new group:

usermod -aG columbus columbus-dns

Copy the binary to /usr/bin/columbus-dns.

Make it executable:

chmod +x /usr/bin/columbus-dns

Create a directory (if not exists):

mkdir /etc/columbus

Set the permission to 0600.

chmod -R 0640 /etc/columbus

Set the owner of the config file:

chown -R columbus-dns:columbus /etc/columbus

Copy the config file to /etc/columbus/dns.conf and configure.

Install the service file (eg.: /etc/systemd/system/columbus-dns.service).

cp columbus-dns.service /etc/systemd/system/

Reload systemd:

systemctl daemon-reload

Start Columbus DNS:

systemctl start columbus-dns

If you want to Columbus DNS start automatically:

systemctl enable columbus-dns

Frontend

HTML + tailwindcss + DaisyUI. The style is inspired by Introduction theme.

VHS

Create gifs with VHS.

Author

System administrator service and Cybersecurity for small and medium-sized businesses in and around Győr.