Mit dieser Methode lässt sich von jeder Domain theoretisch jede Subdomain finden. Dies kann nützlich sein, wenn man z.B. von einer Seite eine Subdomain vergessen hat und keinen Link mehr findet.
Dieses Tutorial wurde für Debian (bzw Ubuntu) geschrieben, an manchen Stellen kann es also bei auf RHEL basierenden Systemen zu Abweichungen kommen.
Bei dieser Methode wird eine indirekte „Erkennung“ durchgeführt, indem der DNS Server dazu aufgefordert wird, Subdomains aufzulösen. Außerdem kann nur theoretisch jede Subdomain gefunden werden, da vor der eigentlichen Erkennung eine Wordlist generiert wird (bzw eine Dictionary genutzt wird, siehe unten) und nur Subdomains gefunden werden können, die sich aus einem Wort in der Wordlist, einem Punkt und der Domain zusammensetzen.
Los geht’s:
1. Installation benötigter Pakete
Debian / Ubuntu:
apt-get update
apt-get upgrade
apt-get install wget build-essential
CentOS / RHEL:
yum update
yum install gcc gcc-c++ kernel-devel make wget
Dann:
cd /usr/src
wget http://dl.bitforce.io:11520/crunch-3.6.tgz
wget http://dl1.bitforce.io:11520/dnsmap-0.30.tar.gz
tar xfvz crunch-3.6.tgz
tar xfvz dnsmap-0.30.tar.gz
cd crunch-3.6
make
make install
cd ..
cd dnsmap-0.30
make
make install
cd
mkdir sd_bruteforce
cd sd_bruteforce
2. Generierung einer Wordlist
crunch 1 5 abcdefghijklmnopqrstuvwxyz > sub.lst
Sollte eine Meldung wie
Error: setlocale() failed
erscheinen, folgenden Spoiler ausführen und erneut versuchen.
locale-gen en_US en_US.UTF-8 de_DE de_DE.UTF-8
Dieser Befehl lässt crunch eine Datei (sub.lst) schreiben, in der alle Kombinationen, die mit den Buchstaben von a bis z von 1 bis 5 Zeichen Länge möglich sind.
Ist man wieder im Terminal Prompt, kann per
head sub.lst
überprüft werden, ob die 1. 10 Zeilen der Datei gültig aussehen. Der Output sollte folgender sein:
a
b
c
d
e
f
g
h
i
j
3. Nutzung von DNSMap
Jetzt, wo man eine Wordlist hat (wobei der crunch Befehl natürlich nur ein Beispiel ist, siehe „man crunch“ für alle Funk- & Optionen), kanns auch schon los gehen mit der „Entdeckung“!
dnsmap [Domain] -w ~/sd_bruteforce/sub.lst
Bei der Domain sollte KEIN www. davor stehen, sonst wird dnsmap versuchen, z.B. folgende Domains aufzulösen:
a.www.domain.com
b.www.domain.com
c.www.domain.com
Es macht auch keinen Unterschied, ob eine Subdomain nur über SSL erreichbar ist, wenn überhaupt per HTTP/S, da eben nur versucht wird, die zusammengesetzte Domain aufzulösen.
Wurden Subdomains gefunden, werden diese z.B. wie folgt dargestellt:
4. DNSMap im Hintergrund laufen lassen
Hat man eine große Wordlist, empfiehlt es sich, DNSMap im Hintergrund arbeiten zu lassen. Nicht nur, weil man sonst den Server nicht mehr nutzen kann (außer man öffnet eine neue SSH Verbindung), sondern auch, wenn die Verbindung z.B. abreißen sollte.
Debian / Ubuntu:
apt-get install screen
CentOS / RHEL:
yum install screen
Nutzung:
screen
[Strg + A, C]
Dies erstellt ein neues „Fenster“. In diesem kann man nun DNSM seine Aufgabe geben. Läuft der Vorgang, kann das Fenster per
[Strg + D]
in den Hintergrund geschoben werden und wird dort weiterlaufen – auch, wenn man die SSH Verbindung schließt. Um das Fenster wieder in den Vordergrund zu holen:
screen -r
Um das Fenster zu schließen, in einem Fenster:
exit
ausführen, bis
[screen is terminating]
erscheint. Dann sind alle Fenster geschlossen.
Dictionarys
Wer lieber ein Dictionary nutzt, kann eines per
wget http://dl.bitforce.io:11520/sub_dict.lst
herunterladen (dieses enthält 31298 Wörter).
Wer nur die häufigsten Subdomains ausprobieren möchtet, führt folgendes aus
wget http://dl.bitforce.io:11520/sub_dict_small.lst
und erhält eine kleinere Dictionary, welche 1896 Wörter enthält. Der DNSMap Befehl ändert sich daher dann natürlich zu
dnsmap [Domain] -w ~/sd_bruteforce/sub_dict.lst
bzw
dnsmap [Domain] -w ~/sd_bruteforce/sub_dict_small.lst
Diese Wordlists sind dem Tool „SubBrute“ entnommen.
Der Vollständigkeit halber hier noch die crunch Wordlist (wer crunch nicht extra kompilieren möchte)
wget http://dl.bitforce.io:11520/sub.lst.7z
Entpacken:
apt-get -y install p7zip-full && 7z e sub.lst.7z && rm sub.lst.7z
Referenzen
crunch: http://sourceforge.net/projects/crunch-wordlist/
dnsmap: https://code.google.com/p/dnsmap/
subbrute: https://github.com/TheRook/subbrute